Example #1
0
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()
Example #2
0
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)
Example #4
0
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()