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 OAmDatEntry(Struct): STRUCT_SIZE = 42 id: ft.uint() set_id: ft.ushort() equip_slot: ft.ubyte() unk1: ft.ubyte() defense: ft.uint() rarity: ft.ubyte() list_order: ft.ushort() model_id: ft.uint() crafting_cost: ft.uint() variant: ft.ubyte() unk2: ft.ubyte() unk3: ft.ubyte() unk4: ft.ubyte() fire_res: ft.byte() water_res: ft.byte() ice_res: ft.byte() thunder_res: ft.byte() dragon_res: ft.byte() unk5: ft.uint() set_group: ft.ushort() gmd_name_index: ft.ushort() gmd_desc_index: ft.ushort()
class RodInseEntry(Struct): STRUCT_SIZE = 28 id: ft.uint() attack_type: ft.ubyte() # 0 = Server, 1 = Blunt unk1: ft.ubyte() # unknown, could be GMD. Currently the same as id. unk2: ft.ubyte() base_model_id: ft.ushort() tree_id: ft.byte() cost: ft.uint() rarity: ft.ubyte() power: ft.ushort() speed: ft.ushort() heal: ft.ushort() unk3: ft.ushort() dust_type: ft.ushort() # 0 = blast, 1 = heal, 2 = paralysis, 3 = poison tree_position: ft.ubyte() unk4: ft.ushort() # can't be GMD, as dragonsoul is OOB
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 WpDatEntry(Struct): STRUCT_SIZE = 66 id: ft.uint() unk1: ft.ubyte() unk6: ft.ubyte() base_model_id: ft.ushort() part1_id: ft.ushort() part2_id: ft.ushort() unk7: ft.ubyte() color: ft.ubyte() tree_id: ft.ubyte() is_fixed_upgrade: ft.ubyte() crafting_cost: ft.uint() rarity: ft.ubyte() kire_id: ft.ubyte() handicraft: 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() num_gem_slots: ft.ubyte() gem_slot1_lvl: ft.ubyte() gem_slot2_lvl: ft.ubyte() gem_slot3_lvl: ft.ubyte() wep1_id: ft.ushort() wep2_id: ft.ushort() unk2: ft.uint() unk3: ft.uint() unk4: ft.uint() tree_position: ft.ubyte() order: ft.ushort() gmd_name_index: ft.ushort() gmd_description_index: ft.ushort() skill_id: ft.ushort() unk5: ft.ushort()