class AmDatEntry(Struct): STRUCT_SIZE = 60 id: ft.uint() order: ft.ushort() variant: ft.ubyte() set_id: ft.ushort() type: ft.ubyte() equip_slot: ft.ubyte() defense: ft.ushort() mdl_main_id: ft.ushort() mdl_secondary_id: ft.ushort() icon_color: ft.ubyte() pad8: ft.ubyte() icon_effect: ft.ubyte() rarity: ft.ubyte() cost: ft.uint() fire_res: ft.byte() water_res: ft.byte() ice_res: ft.byte() thunder_res: ft.byte() dragon_res: ft.byte() num_gem_slots: ft.ubyte() gem_slot1_lvl: ft.ubyte() gem_slot2_lvl: ft.ubyte() gem_slot3_lvl: ft.ubyte() set_skill1: ft.short() set_skill1_lvl: ft.ubyte() set_skill2: ft.short() set_skill2_lvl: ft.ubyte() skill1: ft.short() skill1_lvl: ft.ubyte() skill2: ft.short() skill2_lvl: ft.ubyte() skill3: ft.short() skill3_lvl: ft.ubyte() gender: ft.ubyte() pad11: ft.ubyte() pad12: ft.ubyte() pad13: ft.ubyte() set_group: ft.ushort() gmd_name_index: ft.ushort() gmd_desc_index: ft.ushort() is_permanent: ft.ubyte()
class WpDatGEntry(Struct): STRUCT_SIZE = 69 id: ft.uint() unk1: ft.ushort() base_model_id: ft.short() part1_id: ft.short() part2_id: ft.short() unk7: ft.ubyte() color: ft.ubyte() tree_id: ft.ubyte() is_fixed_upgrade: ft.ubyte() muzzle_type: ft.ubyte() barrel_type: ft.ubyte() magazine_type: ft.ubyte() scope_type: ft.ubyte() crafting_cost: ft.uint() rarity: ft.ubyte() raw_damage: ft.ushort() defense: ft.ushort() affinity: ft.byte() element_id: ft.ubyte() element_damage: ft.ushort() hidden_element_id: ft.ubyte() hidden_element_damage: ft.ushort() elderseal: ft.ubyte() shell_table_id: ft.ushort() deviation: ft.ubyte() num_gem_slots: ft.ubyte() gem_slot1_lvl: ft.ubyte() gem_slot2_lvl: ft.ubyte() gem_slot3_lvl: ft.ubyte() unk2: ft.uint() unk3: ft.uint() unk4: ft.uint() unk5: ft.ubyte() special_ammo_type: ft.ubyte() tree_position: ft.ubyte() order: ft.ushort() gmd_name_index: ft.ushort() gmd_description_index: ft.ushort() skill_id: ft.ushort() unk6: ft.ushort()
class RemFile(ft.Struct): STRUCT_SIZE = 110 signature: ft.uint() signatureExt: ft.short() id: ft.uint() drop_mechanic: ft.uint() item_ids: ext.blist(ft.uint(), count=16) item_qtys: ext.blist(ft.ubyte(), count=16) item_chances: ext.blist(ft.ubyte(), count=16) def iter_items(self): for i in range(16): item_id = self.item_ids[i] item_qty = self.item_qtys[i] item_chance = self.item_chances[i] if item_id and item_qty and item_chance: yield (item_id, item_qty, item_chance)
class ArmUpEntry(Struct): STRUCT_SIZE = 22 unk1: ft.short() unk2: ft.short() unk3: ft.short() unk4: ft.short() unk5: ft.short() unk6: ft.short() unk7: ft.short() unk8: ft.short() unk9: ft.short() unk10: ft.short() unk11: ft.short()