package substructs import "eq2emu/internal/common" // BaseMerchantItemDescription Version 1 type BaseMerchantItemDescriptionV1 struct { CreatorFlag uint8 `eq2:"int8"` Creator common.EQ2String8 `eq2:"string8"` Adornment common.EQ2String16 `eq2:"string16"` Unknown3 uint32 `eq2:"int32"` FirstDesc common.EQ2String16 `eq2:"string16"` UniqueID uint32 `eq2:"int32"` ItemID int32 `eq2:"sint32"` Icon uint16 `eq2:"int16"` Tier uint8 `eq2:"int8"` Flags uint32 `eq2:"int32"` Unknown81M []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 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"` } // BaseMerchantItemDescription Version 860 type BaseMerchantItemDescriptionV860 struct { CreatorFlag uint8 `eq2:"int8"` Creator common.EQ2String8 `eq2:"string8"` Adornment common.EQ2String16 `eq2:"string16"` Unknown3 []uint32 `eq2:"int32,len=2"` AdornmentDesc common.EQ2String16 `eq2:"string16"` UnknownDesc common.EQ2String16 `eq2:"string16"` FirstDesc common.EQ2String16 `eq2:"string16"` UniqueID uint32 `eq2:"int32"` ItemID int32 `eq2:"sint32"` Icon uint16 `eq2:"int16"` Tier uint8 `eq2:"int8"` Flags uint32 `eq2:"int32"` Unknown8860M []uint8 `eq2:"int8,len=17"` StatCount uint8 `eq2:"int8"` StatArray []BaseItemStatMerchant860 `eq2:"array,arraysize=StatCount"` StatStringCount uint8 `eq2:"int8"` StatStringArray []BaseItemStatString `eq2:"array,arraysize=StatStringCount"` 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"` } // BaseMerchantItemDescription Version 1096 type BaseMerchantItemDescriptionV1096 struct { CreatorFlag uint8 `eq2:"int8"` Creator common.EQ2String8 `eq2:"string8"` UniqueID uint32 `eq2:"int32"` ItemID int32 `eq2:"sint32"` ItemCRC int32 `eq2:"sint32"` Icon uint16 `eq2:"int16"` Tier uint8 `eq2:"int8"` Flags uint16 `eq2:"int16"` Flags2 uint16 `eq2:"int16"` Unknown81096M []uint8 `eq2:"int8,len=17"` StatCount uint8 `eq2:"int8"` StatArray []BaseItemStatMerchant1096 `eq2:"array,arraysize=StatCount"` StatUnknown uint8 `eq2:"int8"` StatStringCount uint8 `eq2:"int8"` StatStringArray []BaseItemStatStringMerchant1096 `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"` } // BaseMerchantItemDescription Version 63119 type BaseMerchantItemDescriptionV63119 struct { CreatorFlag uint8 `eq2:"int8"` Creator common.EQ2String8 `eq2:"string8"` UniqueID uint32 `eq2:"int32"` ItemID int32 `eq2:"sint32"` ItemCRC int32 `eq2:"sint32"` Icon uint16 `eq2:"int16"` Tier uint8 `eq2:"int8"` Flags uint16 `eq2:"int16"` Flags2 uint16 `eq2:"int16"` Unknown8 []uint8 `eq2:"int8,len=21"` StatCount uint8 `eq2:"int8"` StatArray []BaseItemStatMerchant63119 `eq2:"array,arraysize=StatCount"` StatUnknown uint8 `eq2:"int8"` StatStringCount uint8 `eq2:"int8"` StatStringArray []BaseItemStatStringMerchant63119 `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"` } // Merchant-specific stat structs type BaseItemStatMerchant860 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 BaseItemStatMerchant1096 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 BaseItemStatMerchant63119 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"` StatName common.EQ2String8 `eq2:"string8"` StatLevel any `eq2:"int16,type2=int8,type2criteria=stat_name!>2"` Value2 float32 `eq2:"float"` } type BaseItemStatStringMerchant1096 struct { StatString common.EQ2String8 `eq2:"string8"` StatDescription common.EQ2String16 `eq2:"string16"` StatStringUnknown uint8 `eq2:"int8"` } type BaseItemStatStringMerchant63119 struct { StatString common.EQ2String8 `eq2:"string8"` StatStringUnknown uint8 `eq2:"int8"` StatDescription common.EQ2String16 `eq2:"string16"` }