305 lines
15 KiB
Go
305 lines
15 KiB
Go
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"`
|
|
}
|