ShopGameDataInfo.byml

From ZeldaMods (Breath of the Wild)
Jump to navigation Jump to search

ShopGameDataInfo.byml (found in Bootup/Gamedata) is a Yaz0-compressed BYML file which contains data pertaining to actors purchasable from NPC Shops. It is used by GameDataMgr to keep track of items that have been purchased from a shop ("sold out" items) and restock them periodically.

Contents

ShopAreaInfo Hashes

ShopAreaInfo Hashes is an array of CRC32 hashes of all shop actor-name flags. The hashed flags are named in the format Npc_Name_Actor_Name.

This array must be sorted, as GameDataMgr performs a binary search on the list[1].

Similar to tag values, each number is stored as an unsigned int if it is greater than 0x80000000 and as a signed int otherwise.

ShopAreaInfo Values

This section contains a list of all items sold by NPCs.

This list must be in the same order as the #ShopAreaInfo Hashes array.

Name Description Example
Areas A list of map area coordinates where the item is sold when the Dealer and Item are the same. This is used to prevent the item from being restocked while the player is in the same map area. Each coordinate identifies a map area on the revival map grid. [0, 6]
Dealer The name of the actor which sells the item. Npc_MamonoShop
Item The name of the actor which is sold. Armor_160_Upper

Example entries:

 - Areas:
   - [1, 7]
   Dealer: NPC_oasis065
   Item: Armor_008_Upper
   
 - Areas:
   - [0, 6]
   - [1, 2]
   - [6, 5]
   - [7, 7]
   - [8, 0]
   - [8, 3]
   - [8, 5]
   - [9, 2]
   Dealer: Npc_MamonoShop
   Item: Armor_160_Upper

SoldOutInfo Hashes

SoldOutInfo Hashes is an array of CRC32 hashes of all shop actor-name flags that change state when sold out. The flags are used in stores where the item is physically shown to the player (e.g A Mannequin displaying Armor). The hashed flags are named in the format Npc_Name_Actor_Name.

This array must also be sorted, as GameDataMgr performs a binary search on the list[2].

Similar to tag values, each number is stored as an unsigned int if it is greater than 0x80000000 and as a signed int otherwise.

SoldOutInfo Values

This is a list of lists of hashes of boolean GameData flags that should be reset[3]. This list must be in the same order as the #SoldOutInfo Hashes array, but each list of hashes need not be sorted.