eq2go/internal/packets/substructs/BaseItemDescription.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"`
}