package substructs import "eq2emu/internal/common" // BaseItemDescription Version 1 type BaseItemDescriptionV1 struct { CreatorFlag uint8 `eq2:"int8"` Creator common.EQ2String16 `eq2:"string16"` UniqueID uint32 `eq2:"int32"` Icon uint16 `eq2:"int16"` FlagNames common.EQ2String8 `eq2:"string8"` Unknown81 []uint8 `eq2:"int8,len=17"` StatCount uint8 `eq2:"int8"` StatArray []BaseItemStat `eq2:"array,arraysize=StatCount"` StatStringCount uint8 `eq2:"int8"` StatStringArray []BaseItemStatString `eq2:"array,arraysize=StatStringCount"` Condition uint8 `eq2:"int8"` Weight uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` SkillReq1 uint32 `eq2:"int32"` SkillMin uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` SkillRecommended uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` SlotCount uint8 `eq2:"int8"` SlotArray []uint8 `eq2:"array,arraysize=SlotCount"` } // BaseItemDescription Version 373 type BaseItemDescriptionV373 struct { CreatorFlag uint8 `eq2:"int8"` Creator common.EQ2String16 `eq2:"string16"` UniqueID uint32 `eq2:"int32"` Icon uint16 `eq2:"int16"` Tier uint8 `eq2:"int8"` FlagNames common.EQ2String8 `eq2:"string8"` Unknown81 []uint8 `eq2:"int8,len=17"` StatCount uint8 `eq2:"int8"` StatArray []BaseItemStat `eq2:"array,arraysize=StatCount"` StatStringCount uint8 `eq2:"int8"` StatStringArray []BaseItemStatString `eq2:"array,arraysize=StatStringCount"` Condition uint8 `eq2:"int8"` Weight uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` SkillReq1 uint32 `eq2:"int32"` SkillReq2 uint32 `eq2:"int32"` SkillMin uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` SkillRecommended uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` SlotCount uint8 `eq2:"int8"` SlotArray []uint8 `eq2:"array,arraysize=SlotCount"` } // BaseItemDescription Version 546 type BaseItemDescriptionV546 struct { Creator common.EQ2String8 `eq2:"string8"` UniqueID uint32 `eq2:"int32"` BrokerItemID uint64 `eq2:"int64"` Icon uint16 `eq2:"int16"` Tier uint8 `eq2:"int8"` Flags uint32 `eq2:"int32"` Unknown81 []uint8 `eq2:"int8,len=15"` StatCount uint8 `eq2:"int8"` StatArray []BaseItemStatV546 `eq2:"array,arraysize=StatCount"` StatStringCount uint8 `eq2:"int8"` StatStringArray []BaseItemStatStringV546 `eq2:"array,arraysize=StatStringCount"` Condition uint8 `eq2:"int8"` Weight uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` SkillReq1 uint32 `eq2:"int32"` SkillReq2 uint32 `eq2:"int32"` SkillMin uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` ClassCount uint8 `eq2:"int8"` ClassArray []BaseItemClass `eq2:"array,arraysize=ClassCount"` SlotCount uint8 `eq2:"int8"` SlotArray []uint8 `eq2:"array,arraysize=SlotCount"` FooterType uint32 `eq2:"int32"` } // BaseItemDescription Version 1096 type BaseItemDescriptionV1096 struct { CreatorFlag uint8 `eq2:"int8"` Creator common.EQ2String8 `eq2:"string8"` UniqueID uint32 `eq2:"int32"` BrokerItemID uint64 `eq2:"int64"` ItemID int32 `eq2:"sint32"` ItemCRC int32 `eq2:"sint32"` Icon uint16 `eq2:"int16"` Tier uint8 `eq2:"int8"` Flags uint16 `eq2:"int16"` Flags2 uint16 `eq2:"int16"` Unknown81096 []uint8 `eq2:"int8,len=17"` StatCount uint8 `eq2:"int8"` StatArray []BaseItemStatV1096 `eq2:"array,arraysize=StatCount"` StatUnknown uint8 `eq2:"int8"` StatStringCount uint8 `eq2:"int8"` StatStringArray []BaseItemStatStringV1096 `eq2:"array,arraysize=StatStringCount"` Unknown19 uint16 `eq2:"int16"` Unknown20 uint16 `eq2:"int16"` Condition uint8 `eq2:"int8"` Weight uint32 `eq2:"int32"` SkillReq1 uint32 `eq2:"int32"` SkillReq2 uint32 `eq2:"int32"` SkillMin uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` ClassCount uint8 `eq2:"int8"` ClassArray []BaseItemClass `eq2:"array,arraysize=ClassCount"` SlotCount uint8 `eq2:"int8"` SlotArray []uint8 `eq2:"array,arraysize=SlotCount"` FooterType uint32 `eq2:"int32"` } // BaseItemDescription Version 1188 type BaseItemDescriptionV1188 struct { CreatorFlag uint8 `eq2:"int8"` Creator common.EQ2String8 `eq2:"string8"` UniqueID uint32 `eq2:"int32"` BrokerItemID uint64 `eq2:"int64"` ItemID int32 `eq2:"sint32"` ItemCRC int32 `eq2:"sint32"` Icon uint16 `eq2:"int16"` Tier uint8 `eq2:"int8"` Flags uint16 `eq2:"int16"` Flags2 uint16 `eq2:"int16"` Unknown81188 []uint8 `eq2:"int8,len=17"` StatCount uint8 `eq2:"int8"` StatArray []BaseItemStatV1188 `eq2:"array,arraysize=StatCount"` StatUnknown uint8 `eq2:"int8"` StatStringCount uint8 `eq2:"int8"` StatStringArray []BaseItemStatStringV1188 `eq2:"array,arraysize=StatStringCount"` Unknown19 uint16 `eq2:"int16"` Unknown20 uint16 `eq2:"int16"` Condition uint8 `eq2:"int8"` Weight uint32 `eq2:"int32"` SkillReq1 uint32 `eq2:"int32"` SkillReq2 uint32 `eq2:"int32"` SkillMin uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` ClassCount uint8 `eq2:"int8"` ClassArray []BaseItemClass `eq2:"array,arraysize=ClassCount"` SlotCount uint8 `eq2:"int8"` SlotArray []uint8 `eq2:"array,arraysize=SlotCount"` FooterType uint32 `eq2:"int32"` } // BaseItemDescription Version 1208 type BaseItemDescriptionV1208 struct { CreatorFlag uint8 `eq2:"int8"` Creator common.EQ2String8 `eq2:"string8"` UniqueID uint32 `eq2:"int32"` BrokerItemID uint64 `eq2:"int64"` ItemID int32 `eq2:"sint32"` ItemCRC int32 `eq2:"sint32"` Icon uint16 `eq2:"int16"` Tier uint8 `eq2:"int8"` Flags uint16 `eq2:"int16"` Flags2 uint16 `eq2:"int16"` Unknown81208 []uint8 `eq2:"int8,len=17"` StatCount uint8 `eq2:"int8"` StatArray []BaseItemStatV1208 `eq2:"array,arraysize=StatCount"` StatUnknown uint8 `eq2:"int8"` StatStringCount uint8 `eq2:"int8"` StatStringArray []BaseItemStatStringV1208 `eq2:"array,arraysize=StatStringCount"` Unknown19 uint16 `eq2:"int16"` Unknown20 uint16 `eq2:"int16"` Condition uint8 `eq2:"int8"` Weight uint32 `eq2:"int32"` SkillReq1 uint32 `eq2:"int32"` SkillReq2 uint32 `eq2:"int32"` SkillMin uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` ClassCount uint8 `eq2:"int8"` ClassArray []BaseItemClass `eq2:"array,arraysize=ClassCount"` SlotCount uint8 `eq2:"int8"` SlotArray []uint8 `eq2:"array,arraysize=SlotCount"` FooterType uint32 `eq2:"int32"` } // BaseItemDescription Version 63119 type BaseItemDescriptionV63119 struct { CreatorFlag uint8 `eq2:"int8"` Creator common.EQ2String8 `eq2:"string8"` UniqueID uint32 `eq2:"int32"` BrokerItemID uint64 `eq2:"int64"` ItemID int32 `eq2:"sint32"` ItemCRC int32 `eq2:"sint32"` Icon uint16 `eq2:"int16"` Tier uint8 `eq2:"int8"` Flags uint16 `eq2:"int16"` Flags2 uint16 `eq2:"int16"` Unknown863119 []uint8 `eq2:"int8,len=17"` StatUnknown uint8 `eq2:"int8"` StatStringCount uint8 `eq2:"int8"` StatStringArray []BaseItemStatStringV63119 `eq2:"array,arraysize=StatStringCount"` Unknown19 uint16 `eq2:"int16"` StatCount uint8 `eq2:"int8"` StatArray []BaseItemStatV63119 `eq2:"array,arraysize=StatCount"` Unknown20 uint8 `eq2:"int8"` ModCount uint8 `eq2:"int8"` ModArray []BaseItemMod `eq2:"array,arraysize=ModCount"` Unknown21 []uint8 `eq2:"int8,len=4"` Condition uint8 `eq2:"int8"` Weight uint32 `eq2:"int32"` SkillReq1 uint32 `eq2:"int32"` SkillReq2 uint32 `eq2:"int32"` SkillMin uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` ClassCount uint8 `eq2:"int8"` ClassArray []BaseItemClass `eq2:"array,arraysize=ClassCount"` SlotCount uint8 `eq2:"int8"` SlotArray []uint8 `eq2:"array,arraysize=SlotCount"` FooterType uint32 `eq2:"int32"` } // Common nested structs for BaseItemDescription type BaseItemStat struct { StatType uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` StatSubtype int16 `eq2:"sint16,oversized=127,oversizedbyte=127"` Value int16 `eq2:"sint16,oversized=127,oversizedbyte=127"` StatName common.EQ2String8 `eq2:"string8"` } type BaseItemStatV546 struct { StatType uint8 `eq2:"int8"` StatSubtype int16 `eq2:"sint16,oversized=127,oversizedbyte=127"` Value int16 `eq2:"sint16,oversized=127,oversizedbyte=127"` StatName common.EQ2String8 `eq2:"string8"` } type BaseItemStatV1096 struct { StatType uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` StatSubtype int16 `eq2:"sint16,oversized=127,oversizedbyte=127"` Value any `eq2:"float,type2=sint16,type2criteria=stat_type!=6,oversized=127,oversizedbyte=127"` StatName common.EQ2String8 `eq2:"string8"` } type BaseItemStatV1188 struct { StatType uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` StatSubtype int16 `eq2:"sint16,oversized=127,oversizedbyte=127,ifnotequals=stat_type_%i"` Value any `eq2:"float,type2=sint16,type2criteria=stat_type!=6,oversized=127,oversizedbyte=127"` StatUnknown uint8 `eq2:"int8,ifequals=stat_type_%i"` StatName common.EQ2String8 `eq2:"string8"` StatLevel uint8 `eq2:"int8"` } type BaseItemStatV1208 struct { StatType uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` StatSubtype int16 `eq2:"sint16,oversized=127,oversizedbyte=127,ifnotequals=stat_type_%i"` Value any `eq2:"float,type2=sint16,type2criteria=stat_type!=6,oversized=127,oversizedbyte=127"` StatUnknown uint8 `eq2:"int8,ifequals=stat_type_%i"` StatName common.EQ2String8 `eq2:"string8"` StatLevel any `eq2:"int16,type2=int8,type2criteria=stat_name!>2"` } type BaseItemStatV63119 struct { StatType uint16 `eq2:"int16,oversized=127,oversizedbyte=127"` StatSubtype int16 `eq2:"sint16,oversized=127,oversizedbyte=127,ifnotequals=stat_type_%i"` Value any `eq2:"float,type2=sint32,type2criteria=stat_type!=6,oversized=127,oversizedbyte=127"` StatName common.EQ2String8 `eq2:"string8"` StatLevel any `eq2:"int16,type2=int8,type2criteria=stat_name!>2"` Value2 any `eq2:"float,type2=sint32,type2criteria=stat_type!=6,oversized=127,oversizedbyte=127"` } type BaseItemStatString struct { StatString common.EQ2String8 `eq2:"string8"` AdornmentFlag uint8 `eq2:"int8"` AdornmentArray []AdornmentUnknown `eq2:"array,arraysize=AdornmentFlag"` StatDescription common.EQ2String16 `eq2:"string16"` } type BaseItemStatStringV546 struct { StatString common.EQ2String8 `eq2:"string8"` } type BaseItemStatStringV1096 struct { StatString common.EQ2String8 `eq2:"string8"` StatDescription common.EQ2String16 `eq2:"string16"` StatStringUnknown uint8 `eq2:"int8"` } type BaseItemStatStringV1188 struct { StatString common.EQ2String8 `eq2:"string8"` StatStringUnknown uint8 `eq2:"int8"` StatDescription common.EQ2String16 `eq2:"string16"` } type BaseItemStatStringV1208 struct { StatString common.EQ2String8 `eq2:"string8"` StatStringUnknown uint8 `eq2:"int8"` StatDescription common.EQ2String16 `eq2:"string16"` } type BaseItemStatStringV63119 struct { StatString common.EQ2String8 `eq2:"string8"` StatStringUnknown uint8 `eq2:"int8"` StatDescription common.EQ2String16 `eq2:"string16"` } type AdornmentUnknown struct { AdornmentUnknown uint8 `eq2:"int8"` } type BaseItemClass struct { AdventureClass uint8 `eq2:"int8"` TradeskillClass uint8 `eq2:"int8"` Level uint16 `eq2:"int16"` } type BaseItemMod struct { ModString common.EQ2String8 `eq2:"string8"` ModNeed uint8 `eq2:"int8"` ModHave uint8 `eq2:"int8,ifvariableset=header_info_mod_need_0"` ModUnknown []uint8 `eq2:"int8,len=2"` }