Пример #1
0
class LbmSkillEntry(Struct):
    STRUCT_SIZE = 10
    unk1: ft.ubyte()
    unk2: ft.ubyte()
    item_id: ft.ushort()
    item_qty: ft.ushort()
    unk3: ft.pad(4)
Пример #2
0
class LbmSkillEntry(Struct):
    STRUCT_SIZE = 10
    rarity: ft.ubyte()
    augment_type: ft.ubyte()
    item_id: ft.ushort()
    item_qty: ft.ushort()
    unk3: ft.pad(4)
Пример #3
0
class MibObjective(ft.Struct):
    STRUCT_SIZE = 8
    objectiveId: ft.ubyte()
    event: ft.ubyte()
    unk1: ft.ushort()
    objectiveId1: ft.ushort()
    objectiveAmount: ft.ushort()
Пример #4
0
class MibHeader(ft.Struct):
    STRUCT_SIZE = (17 * 4) + (6 * 2) + 3
    mibSignature: ft.ushort()
    padding: ft.uint()
    mibId: ft.uint()
    starRating: ft.ubyte()
    unk1: ft.uint(
    )  # Looks to be HR vs LR, in terms of damage modifiers (zorah quests are 6star and LR damage)
    unk2: ft.uint()
    rankRewards: ft.uint()  # LR or HR?
    mapId: ft.uint()
    unk4: ft.uint()
    playerSpawn: ft.uint()
    binaryMapToggle: ft.uint()
    dayNightControl: ft.uint()
    weatherControl: ft.uint()
    unk5: ft.uint()
    zennyReward: ft.uint()
    faintPenalty: ft.uint()
    unk6: ft.uint()
    questTimer: ft.uint()
    unk7: ft.ubyte()
    monsterIconId: ext.blist(ft.ushort(), 5)
    hrRestriction: ft.ubyte()  # difficulty modifier
    unk8: ft.uint()
Пример #5
0
class LbmBaseEntry(Struct):
    STRUCT_SIZE = 14
    rarity: ft.ubyte()
    equip_type: ft.ubyte()
    crafting_cost: ft.uint()
    item1_id: ft.ushort()
    item1_qty: ft.ushort()
    item2_id: ft.ushort()
    item2_qty: ft.ushort()
Пример #6
0
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)
Пример #7
0
class MibObjectiveSection(ft.Struct):
    STRUCT_SIZE = (13 * 4) + 4
    unk1: ft.uint()
    unk2: ft.uint()
    highlightedUnknown2: ft.uint()
    questType: ft.ubyte()
    questTypeIcon: ft.ubyte()
    atFlag: ft.ubyte()  # 02 enables AT global modifier
    unk3: ft.ubyte()
    rem_ids: ext.blist(ft.uint(), count=3)
    suppId1: ft.uint()
    unk4: ft.uint()  # suppid 2?
    unk5: ft.uint()  # suppid 3?
    unk6: ft.uint()
    hrPoints: ft.uint()
    unk7: ft.uint()
    unk8: ft.uint()
Пример #8
0
class EqCrtEntry(Struct):
    STRUCT_SIZE = 33
    equip_type: ft.ubyte()
    equip_id: ft.ushort()
    key_item: ft.ushort()
    unk1: ft.int()
    unk2: ft.uint()
    rank: ft.uint()
    item1_id: ft.ushort()
    item1_qty: ft.ubyte()
    item2_id: ft.ushort()
    item2_qty: ft.ubyte()
    item3_id: ft.ushort()
    item3_qty: ft.ubyte()
    item4_id: ft.ushort()
    item4_qty: ft.ubyte()
    unk3: ft.pad(4)
Пример #9
0
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
Пример #10
0
class SklDatEntry(Struct):
    STRUCT_SIZE = 11
    skill_id: ft.ushort()
    level: ft.ubyte()
    param1: ft.ushort()
    param2: ft.ushort()
    param3: ft.ushort()
    param4: ft.ushort()
Пример #11
0
class BbtblEntry(Struct):
    STRUCT_SIZE = 6
    close_range: ft.ubyte()
    power: ft.ubyte()
    paralysis: ft.ubyte()
    poison: ft.ubyte()
    sleep: ft.ubyte()
    blast: ft.ubyte()
Пример #12
0
class SklDatEntry(Struct):
    STRUCT_SIZE = 27
    skill_id: ft.ushort()
    level: ft.ubyte()
    param01: ft.ushort()
    param02: ft.ushort()
    param03: ft.ushort()
    param04: ft.ushort()
    param05: ft.ushort()
    param06: ft.ushort()
    param07: ft.ushort()
    param08: ft.ushort()
    param09: ft.ushort()
    param10: ft.ushort()
    param11: ft.ushort()
    param12: ft.ushort()
Пример #13
0
class ItmEntry(Struct):
    STRUCT_SIZE = 32
    id: ft.uint()
    sub_type: ft.ubyte()
    type: ft.uint()
    rarity: ft.ubyte()
    carry_limit: ft.ubyte()
    unk_limit: ft.ubyte()
    order: ft.ushort()
    flags: ft.uint()
    icon_id: ft.uint()
    icon_color: ft.ubyte()
    carry_item: ft.ubyte()
    sell_price: ft.uint()
    buy_price: ft.uint()
Пример #14
0
class EqCusEntry(Struct):
    STRUCT_SIZE = 41
    equip_type: ft.ubyte()
    equip_id: ft.ushort()
    key_item_id: ft.ushort()
    unk1: ft.int()
    unk2: ft.uint()
    unk3: ft.uint()
    item1_id: ft.ushort()
    item1_qty: ft.ubyte()
    item2_id: ft.ushort()
    item2_qty: ft.ubyte()
    item3_id: ft.ushort()
    item3_qty: ft.ubyte()
    item4_id: ft.ushort()
    item4_qty: ft.ubyte()
    descendant1_idx: ft.ushort()
    descendant2_idx: ft.ushort()
    descendant3_idx: ft.ushort()
    descendant4_idx: ft.ushort()
    unk4: ft.ubyte()
    group: ft.ubyte()
    unk5: ft.ushort()
Пример #15
0
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()
Пример #16
0
class WpDatEntry(Struct):
    STRUCT_SIZE = 65
    id: ft.uint()
    unk1: ft.ushort()
    base_model_id: ft.ushort()
    part1_id: ft.ushort()
    part2_id: ft.ushort()
    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()
Пример #17
0
class WepWslEntry(Struct):
    STRUCT_SIZE = 7
    id: ft.uint()
    note1: ft.ubyte()
    note2: ft.ubyte()
    note3: ft.ubyte()
Пример #18
0
class MibObjectiveHeader(ft.Struct):
    STRUCT_SIZE = 1
    subobjectivesRequired: ft.ubyte()
Пример #19
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()
Пример #20
0
class SklPtDatEntry(Struct):
    STRUCT_SIZE = 2
    is_set_bonus: ft.ubyte()
    unk1: ft.ubyte()
Пример #21
0
class WpDatGEntry(Struct):
    STRUCT_SIZE = 68
    id: ft.uint()
    unk1: ft.ushort()
    base_model_id: ft.short()
    part1_id: ft.short()
    part2_id: ft.short()
    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()
Пример #22
0
class WepSaxeEntry(Struct):
    STRUCT_SIZE = 7
    id: ft.uint()
    unk1: ft.ubyte()
    unk2: ft.ubyte()
    unk3: ft.ubyte()