Unfortunately nobody seems to have seen (or cared, more likely
) my previous post about shimming the API the game uses for garrisons/etc.
Again, I realize that this table is a lot more convenient, but I'm still curious if @seikur0 or @sunbeam have even peeked at this stuff. You folks are basically the only people I've found to be working on stuff related to this game, so I apologize if I'm butting in to a topic where I shouldn't - let me know.
Spent the last hour writing (crappy) decoder for the ag-binary schema - mostly understood - but there's a few holes that I haven't gotten around to figuring out. My goal over the weekend is to do some more logging and gather more data for future work.
For example, here's the server response when "buying" a silver chest (as JSON rather than the actual format):
Code: Select all
{
"stage":"completed",
"product_name":"War Chest Silver - Open",
"order_id":?,
"state":"finalized",
"inventory_log_id":"blanked, id",
"xbox_live_transaction_id":?,
"steam_transaction_id":?,
"created_at":15089XXXXX,
"updated_at":15089XXXXX,
"reason":?,
"product_slug":"cns-prd-war-silver",
"response_error":?,
"payment_option":{
"base_price":{
"items":{
"0":{
"inventory_item_slug":"war-silver",
"quantity":1,
}
}
},
"sales":[],
"price_slug":"hyd-cns-prd-war-silver",
"final_price":{
"items":{
"0":{
"inventory_item_slug":"war-silver",
"quantity":1,
}
}
},
"backend_name":"hydra-inventory"
},
"account_id":"blanked",
"id":"blanked",
"steam_item_id":?,
"steam_currency":?,
"server_data":{
"contents":{
"1":{
"type":"undefined",
"friend":?,
"tribe":"undefined",
"level":0xFF,
"advance_class":"undefined",
"rarity":"common",
"content_type":"uruk",
"trait":"None",
"builder_record":"None",
"unique_id":"blanked, UUID",
"element":"undefined",
"level_relative":?,
},
"0":{
"level":0xFE,
"trait":"None",
"rarity":"epic",
"element":"undefined",
"type":"undefined",
"friend":?,
"tribe":"undefined",
"advance_class":"undefined",
"builder_record":"None",
"unique_id":"blanked, UUID",
"content_type":"uruk",
"level_relative":?
},
"2":{
"item":"con-depl",
"amount":1,
"content_type":"item"
}
}
}
}
At this point, I don't particularly understand the "level" / "level_relative" / "friend" fields within the response. "level" is followed by 2 bytes: 0x10FE/0x10FF. 0x10 is the id of the type, but "level" being one of FF[-1, 255] doesn't make any goddamn sense to me. According to my notes, at the time the levels that were actually generated were 58 (0xFF) and 56 (0xFE).
"level_relative" and "friend" are both followed by a single by (0x02) - also no idea.
Reverse engineering is not my strong suit, so I was wondering if either of you a) had any inkling about the three fields above or b) know where in the code I might see this used? I've been trying to jump around in IDA to find where this data might be interpreted, but I'm lost.