implement more substructs

This commit is contained in:
Sky Johnson 2025-07-26 15:08:38 -05:00
parent 15dab24125
commit fcb6a82135
13 changed files with 1904 additions and 0 deletions

View File

@ -0,0 +1,67 @@
package substructs
import "eq2emu/internal/common"
// AASpellInfo client version 1193
type AASpellInfo struct {
ID uint32 `eq2:"int32"`
Icon uint16 `eq2:"int16"`
Icon2 uint16 `eq2:"int16"`
IconType uint16 `eq2:"int16"`
Version uint16 `eq2:"int16"`
SubVersion uint16 `eq2:"int16"`
Type uint8 `eq2:"int8"`
ClassSkill uint32 `eq2:"int32"`
MasterySkill uint32 `eq2:"int32"`
MinClassSkillReq uint16 `eq2:"int16,oversized=127,oversizedbyte=127"`
SpellTextColor uint32 `eq2:"int32"`
Unknown605MJ3 uint8 `eq2:"int8"`
Tier uint8 `eq2:"int8"`
HealthReq uint16 `eq2:"int16,oversized=127,oversizedbyte=127"`
HealthUpkeep uint16 `eq2:"int16,oversized=127,oversizedbyte=127"`
PowerReq uint16 `eq2:"int16,oversized=127,oversizedbyte=127"`
PowerUpkeep uint16 `eq2:"int16,oversized=127,oversizedbyte=127"`
ReqConcentration uint16 `eq2:"int16"`
Unknown uint16 `eq2:"int16"`
CastTime uint16 `eq2:"int16,oversized=127,oversizedbyte=127"`
Recovery uint16 `eq2:"int16,oversized=127,oversizedbyte=127"`
Recast float32 `eq2:"float"`
Radius float32 `eq2:"float"`
MaxAoeTargets uint16 `eq2:"int16"`
FriendlySpell uint8 `eq2:"int8"`
NumReagents uint8 `eq2:"int8"`
ReagentArray []AASpellReagent `eq2:"array,arraysize=NumReagents"`
NumEffects uint8 `eq2:"int8"`
EffectArray []AASpellEffect `eq2:"array,arraysize=NumEffects"`
DisplaySpellTier uint8 `eq2:"int8"`
Unknown1 uint8 `eq2:"int8"`
MinimumRange float32 `eq2:"float"`
Range float32 `eq2:"float"`
Duration1 uint32 `eq2:"int32"`
Duration2 uint32 `eq2:"int32"`
Unknown9 uint8 `eq2:"int8"`
DurationFlag uint8 `eq2:"int8"`
Target uint8 `eq2:"int8"`
CanEffectRaid uint8 `eq2:"int8"`
AffectOnlyGroupMembers uint8 `eq2:"int8"`
GroupSpell uint8 `eq2:"int8"`
Resistibility float32 `eq2:"float"`
Unknown11 []uint8 `eq2:"int8,len=7"`
HitBonus float32 `eq2:"float"`
Unknown12 uint8 `eq2:"int8"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
Unknown605MJ6 uint8 `eq2:"int8"`
}
type AASpellReagent struct {
Reagent common.EQ2String8 `eq2:"string8"`
Consumed uint8 `eq2:"int8"`
QtyRequired uint32 `eq2:"int32"`
}
type AASpellEffect struct {
SubBulletFlag uint8 `eq2:"int8"`
Effect common.EQ2String16 `eq2:"string16"`
Percentage uint8 `eq2:"int8"`
}

View File

@ -0,0 +1,304 @@
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"`
}

View File

@ -0,0 +1,26 @@
package substructs
import "eq2emu/internal/common"
// BaseItemDescriptionGeneric Version 373
type BaseItemDescriptionGeneric 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"`
}

View File

@ -0,0 +1,21 @@
package substructs
import "eq2emu/internal/common"
// BaseItemDescriptionInspect Version 373
type BaseItemDescriptionInspect 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"`
Unknown []uint8 `eq2:"int8,len=9"`
}

View File

@ -0,0 +1,161 @@
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"`
}

View File

@ -0,0 +1,193 @@
package substructs
// GroupMember Version 1
type GroupMemberV1 struct {
ZoneStatus uint8 `eq2:"int8"`
Name []byte `eq2:"char,len=16"`
SpawnID uint32 `eq2:"int32"`
PetID uint32 `eq2:"int32"`
LevelCurrent uint16 `eq2:"int16"`
RaceID uint8 `eq2:"int8"`
ClassID uint8 `eq2:"int8"`
HPMax int32 `eq2:"sint32"`
HPCurrent int32 `eq2:"sint32"`
PowerMax int32 `eq2:"sint32"`
PowerCurrent int32 `eq2:"sint32"`
TraumaCount uint8 `eq2:"int8"`
ArcaneCount uint8 `eq2:"int8"`
NoxiousCount uint8 `eq2:"int8"`
ElementalCount uint8 `eq2:"int8"`
}
// GroupMember Version 373
type GroupMemberV373 struct {
ZoneStatus uint8 `eq2:"int8"`
Name []byte `eq2:"char,len=16"`
SpawnID uint32 `eq2:"int32"`
PetID uint32 `eq2:"int32"`
LevelCurrent uint16 `eq2:"int16"`
LevelMax uint16 `eq2:"int16"`
RaceID uint8 `eq2:"int8"`
ClassID uint8 `eq2:"int8"`
HPCurrent int32 `eq2:"sint32"`
HPMax int32 `eq2:"sint32"`
PowerCurrent int32 `eq2:"sint32"`
PowerMax int32 `eq2:"sint32"`
TraumaCount uint8 `eq2:"int8"`
ArcaneCount uint8 `eq2:"int8"`
NoxiousCount uint8 `eq2:"int8"`
ElementalCount uint8 `eq2:"int8"`
}
// GroupMember Version 546
type GroupMemberV546 struct {
ZoneStatus uint8 `eq2:"int8"`
Name []byte `eq2:"char,len=41"`
SpawnID uint32 `eq2:"int32"`
PetID uint32 `eq2:"int32"`
LevelCurrent uint16 `eq2:"int16"`
LevelMax uint16 `eq2:"int16"`
RaceID uint8 `eq2:"int8"`
ClassID uint8 `eq2:"int8"`
HPCurrent int32 `eq2:"sint32"`
HPMax int32 `eq2:"sint32"`
PowerCurrent int32 `eq2:"sint32"`
PowerMax int32 `eq2:"sint32"`
TraumaCount uint8 `eq2:"int8"`
ArcaneCount uint8 `eq2:"int8"`
NoxiousCount uint8 `eq2:"int8"`
ElementalCount uint8 `eq2:"int8"`
Zone []byte `eq2:"char,len=60"`
Instance uint8 `eq2:"int8"`
}
// GroupMember Version 562
type GroupMemberV562 struct {
SpawnID uint32 `eq2:"int32"`
PetID uint32 `eq2:"int32"`
HPCurrent int32 `eq2:"sint32"`
HPMax int32 `eq2:"sint32"`
PowerCurrent int32 `eq2:"sint32"`
PowerMax int32 `eq2:"sint32"`
LevelCurrent uint16 `eq2:"int16"`
LevelMax uint16 `eq2:"int16"`
Name []byte `eq2:"char,len=41"`
Zone []byte `eq2:"char,len=60"`
Instance uint8 `eq2:"int8"`
ZoneStatus uint8 `eq2:"int8"`
Unknown4 uint16 `eq2:"int16"`
RaceID uint8 `eq2:"int8"`
ClassID uint8 `eq2:"int8"`
TraumaCount uint8 `eq2:"int8"`
ArcaneCount uint8 `eq2:"int8"`
NoxiousCount uint8 `eq2:"int8"`
ElementalCount uint8 `eq2:"int8"`
CurseCount uint8 `eq2:"int8"`
Unknown5 []uint8 `eq2:"int8,len=2"`
}
// GroupMember Version 1188
type GroupMemberV1188 struct {
SpawnID uint32 `eq2:"int32"`
PetID uint32 `eq2:"int32"`
HPCurrent int32 `eq2:"sint32"`
HPMax int32 `eq2:"sint32"`
PowerCurrent int32 `eq2:"sint32"`
PowerMax int32 `eq2:"sint32"`
LevelCurrent uint16 `eq2:"int16"`
LevelMax uint16 `eq2:"int16"`
Name []byte `eq2:"char,len=41"`
Zone []byte `eq2:"char,len=60"`
Instance uint8 `eq2:"int8"`
ZoneStatus uint8 `eq2:"int8"`
Unknown4 uint16 `eq2:"int16"`
RaceID uint8 `eq2:"int8"`
ClassID uint8 `eq2:"int8"`
TraumaCount uint8 `eq2:"int8"`
ArcaneCount uint8 `eq2:"int8"`
NoxiousCount uint8 `eq2:"int8"`
ElementalCount uint8 `eq2:"int8"`
CurseCount uint8 `eq2:"int8"`
Unknown5 []uint8 `eq2:"int8,len=2"`
CoEUnknown []uint8 `eq2:"int8,len=9"`
}
// GroupMember Version 57048
type GroupMemberV57048 struct {
SpawnID uint32 `eq2:"int32"`
PetID uint32 `eq2:"int32"`
HPCurrent int64 `eq2:"sint64"`
HPMax int64 `eq2:"sint64"`
PowerCurrent int32 `eq2:"sint32"`
PowerMax int32 `eq2:"sint32"`
LevelCurrent uint16 `eq2:"int16"`
LevelMax uint16 `eq2:"int16"`
Name []byte `eq2:"char,len=41"`
Zone []byte `eq2:"char,len=60"`
Instance uint8 `eq2:"int8"`
ZoneStatus uint8 `eq2:"int8"`
Unknown4 uint16 `eq2:"int16"`
RaceID uint8 `eq2:"int8"`
ClassID uint8 `eq2:"int8"`
TraumaCount uint8 `eq2:"int8"`
ArcaneCount uint8 `eq2:"int8"`
NoxiousCount uint8 `eq2:"int8"`
ElementalCount uint8 `eq2:"int8"`
CurseCount uint8 `eq2:"int8"`
Unknown5 []uint8 `eq2:"int8,len=2"`
CoEUnknown []uint8 `eq2:"int8,len=9"`
}
// GroupMember Version 61532
type GroupMemberV61532 struct {
SpawnID uint32 `eq2:"int32"`
PetID uint32 `eq2:"int32"`
HPCurrent int64 `eq2:"sint64"`
HPCurrent2 int64 `eq2:"sint64"`
HPMax int32 `eq2:"sint32"`
HPMax2 int32 `eq2:"sint32"`
PowerCurrent int32 `eq2:"sint32"`
PowerMax int32 `eq2:"sint32"`
LevelCurrent uint16 `eq2:"int16"`
LevelMax uint16 `eq2:"int16"`
Name []byte `eq2:"char,len=41"`
Zone []byte `eq2:"char,len=60"`
Instance uint8 `eq2:"int8"`
ZoneStatus uint8 `eq2:"int8"`
Unknown4 uint16 `eq2:"int16"`
RaceID uint8 `eq2:"int8"`
ClassID uint8 `eq2:"int8"`
TraumaCount uint8 `eq2:"int8"`
ArcaneCount uint8 `eq2:"int8"`
NoxiousCount uint8 `eq2:"int8"`
ElementalCount uint8 `eq2:"int8"`
CurseCount uint8 `eq2:"int8"`
Unknown5 []uint8 `eq2:"int8,len=2"`
CoEUnknown []uint8 `eq2:"int8,len=9"`
}
// GroupMember Version 63167
type GroupMemberV63167 struct {
SpawnID uint32 `eq2:"int32"`
PetID uint32 `eq2:"int32"`
HPCurrent int64 `eq2:"sint64"`
HPMax int64 `eq2:"sint64"`
PowerCurrent int32 `eq2:"sint32"`
PowerMax int32 `eq2:"sint32"`
LevelCurrent uint16 `eq2:"int16"`
LevelMax uint16 `eq2:"int16"`
Name []byte `eq2:"char,len=41"`
Zone []byte `eq2:"char,len=60"`
Instance uint8 `eq2:"int8"`
ZoneStatus uint8 `eq2:"int8"`
Unknown4 uint16 `eq2:"int16"`
RaceID uint8 `eq2:"int8"`
ClassID uint8 `eq2:"int8"`
TraumaCount uint8 `eq2:"int8"`
ArcaneCount uint8 `eq2:"int8"`
NoxiousCount uint8 `eq2:"int8"`
ElementalCount uint8 `eq2:"int8"`
CurseCount uint8 `eq2:"int8"`
Unknown5 []uint8 `eq2:"int8,len=2"`
CoEUnknown []uint8 `eq2:"int8,len=9"`
}

View File

@ -0,0 +1,20 @@
package substructs
// InfoTemplate Version 63119
type InfoTemplate struct {
NumTabs uint16 `eq2:"int16"`
TabTemplateArray []TabTemplate `eq2:"array,arraysize=NumTabs"`
}
type TabTemplate struct {
TabNumber uint16 `eq2:"int16"`
TabUnknown1 uint32 `eq2:"int32"`
TemplateSize uint16 `eq2:"int16"`
TemplateArray []TemplateData `eq2:"array,arraysize=TemplateSize"`
}
type TemplateData struct {
TemplatePos uint16 `eq2:"int16"`
TemplateUnknown3 uint16 `eq2:"int16"`
TemplateID uint32 `eq2:"int32"`
}

View File

@ -0,0 +1,207 @@
package substructs
// Item Version 1
type ItemV1 struct {
UniqueID uint32 `eq2:"int32"`
BagID uint32 `eq2:"int32"`
InvSlotID uint32 `eq2:"int32"`
MenuType uint32 `eq2:"int32"`
SlotID uint8 `eq2:"int8"`
Index uint16 `eq2:"int16"`
Icon uint16 `eq2:"int16"`
Count uint8 `eq2:"int8"`
Unknown uint8 `eq2:"int8"`
Level uint8 `eq2:"int8"`
Tier uint8 `eq2:"int8"`
NumSlots uint8 `eq2:"int8"`
ItemID int32 `eq2:"sint32"`
Name []byte `eq2:"char,len=81"`
}
// Item Version 373
type ItemV373 struct {
UniqueID uint32 `eq2:"int32"`
BagID uint32 `eq2:"int32"`
InvSlotID uint32 `eq2:"int32"`
MenuType uint32 `eq2:"int32"`
SlotID uint8 `eq2:"int8"`
Index uint16 `eq2:"int16"`
Icon uint16 `eq2:"int16"`
Count uint8 `eq2:"int8"`
Level uint8 `eq2:"int8"`
Tier uint8 `eq2:"int8"`
NumSlots uint8 `eq2:"int8"`
ItemID int32 `eq2:"sint32"`
Name []byte `eq2:"char,len=64"`
Unknown6 []uint8 `eq2:"int8,len=17"`
}
// Item Version 562
type ItemV562 struct {
UniqueID uint32 `eq2:"int32"`
BagID uint32 `eq2:"int32"`
InvSlotID uint32 `eq2:"int32"`
MenuType uint32 `eq2:"int32"`
Index uint16 `eq2:"int16"`
Icon uint16 `eq2:"int16"`
SlotID uint8 `eq2:"int8"`
Count uint8 `eq2:"int8"`
Unknown4 uint8 `eq2:"int8"`
Tier uint8 `eq2:"int8"`
NumSlots uint8 `eq2:"int8"`
ItemID int32 `eq2:"sint32"`
Name []byte `eq2:"char,len=64"`
Unknown6 []uint8 `eq2:"int8,len=17"`
}
// Item Version 893
type ItemV893 struct {
UniqueID uint32 `eq2:"int32"`
BagID uint32 `eq2:"int32"`
InvSlotID uint32 `eq2:"int32"`
MenuType uint32 `eq2:"int32"`
Unknown3b uint32 `eq2:"int32"`
Index uint16 `eq2:"int16"`
Icon uint16 `eq2:"int16"`
SlotID uint8 `eq2:"int8"`
Count uint8 `eq2:"int8"`
Unknown4 uint8 `eq2:"int8"`
Tier uint8 `eq2:"int8"`
NumSlots uint8 `eq2:"int8"`
ItemID int32 `eq2:"sint32"`
Name []byte `eq2:"char,len=64"`
Unknown6 []uint8 `eq2:"int8,len=17"`
}
// Item Version 1193
type ItemV1193 struct {
UniqueID uint32 `eq2:"int32"`
BagID uint32 `eq2:"int32"`
InvSlotID uint32 `eq2:"int32"`
MenuType uint32 `eq2:"int32"`
Unknown3b uint32 `eq2:"int32"`
Index uint16 `eq2:"int16"`
Icon uint16 `eq2:"int16"`
SlotID uint8 `eq2:"int8"`
Count uint8 `eq2:"int8"`
Unknown4 uint8 `eq2:"int8"`
Tier uint8 `eq2:"int8"`
NumSlots uint8 `eq2:"int8"`
ItemID int32 `eq2:"sint32"`
Name []byte `eq2:"char,len=64"`
Unknown6 []uint8 `eq2:"int8,len=18"`
}
// Item Version 1205
type ItemV1205 struct {
UniqueID uint32 `eq2:"int32"`
BagID uint32 `eq2:"int32"`
InvSlotID uint32 `eq2:"int32"`
MenuType uint32 `eq2:"int32"`
Unknown3b uint32 `eq2:"int32"`
Index uint16 `eq2:"int16"`
Icon uint16 `eq2:"int16"`
SlotID uint8 `eq2:"int8"`
Count uint8 `eq2:"int8"`
Unknown4 uint8 `eq2:"int8"`
Tier uint8 `eq2:"int8"`
NumSlots uint8 `eq2:"int8"`
Unknown5 []uint8 `eq2:"int8,len=2"`
ItemID int32 `eq2:"sint32"`
Name []byte `eq2:"char,len=64"`
Unknown6 []uint8 `eq2:"int8,len=17"`
}
// Item Version 57048
type ItemV57048 struct {
UniqueID uint32 `eq2:"int32"`
BagID uint32 `eq2:"int32"`
InvSlotID uint32 `eq2:"int32"`
MenuType uint32 `eq2:"int32"`
Unknown3b uint32 `eq2:"int32"`
Index uint16 `eq2:"int16"`
Icon uint16 `eq2:"int16"`
SlotID uint8 `eq2:"int8"`
Count uint16 `eq2:"int16"`
Unknown4b uint8 `eq2:"int8"`
Unknown4c uint8 `eq2:"int8"`
ItemLevel uint8 `eq2:"int8"`
Tier uint8 `eq2:"int8"`
NumSlots uint8 `eq2:"int8"`
Unknown5 []uint8 `eq2:"int8,len=2"`
ItemID int32 `eq2:"sint32"`
Name []byte `eq2:"char,len=64"`
Unknown6 []uint8 `eq2:"int8,len=17"`
}
// Item Version 57107
type ItemV57107 struct {
UniqueID uint32 `eq2:"int32"`
BagID uint32 `eq2:"int32"`
InvSlotID uint32 `eq2:"int32"`
MenuType uint32 `eq2:"int32"`
Unknown3b uint32 `eq2:"int32"`
Index uint16 `eq2:"int16"`
Icon uint16 `eq2:"int16"`
SlotID uint8 `eq2:"int8"`
Count uint16 `eq2:"int16"`
Unknown4b uint8 `eq2:"int8"`
Unknown4c uint8 `eq2:"int8"`
ItemLevel uint8 `eq2:"int8"`
Tier uint8 `eq2:"int8"`
NumSlots uint8 `eq2:"int8"`
Unknown5 []uint8 `eq2:"int8,len=2"`
ItemID int32 `eq2:"sint32"`
BrokerID uint64 `eq2:"int64"`
Name []byte `eq2:"char,len=64"`
Unknown6 []uint8 `eq2:"int8,len=17"`
}
// Item Version 63119
type ItemV63119 struct {
UniqueID uint32 `eq2:"int32"`
BagID uint32 `eq2:"int32"`
InvSlotID uint32 `eq2:"int32"`
MenuType uint32 `eq2:"int32"`
Unknown3 uint32 `eq2:"int32"`
Index uint16 `eq2:"int16"`
Icon uint16 `eq2:"int16"`
SlotID uint8 `eq2:"int8"`
Count uint16 `eq2:"int16"`
Unknown4b uint8 `eq2:"int8"`
Unknown4c uint8 `eq2:"int8"`
ItemLevel uint8 `eq2:"int8"`
Tier uint8 `eq2:"int8"`
NumSlots uint8 `eq2:"int8"`
EmptySlots uint8 `eq2:"int8"`
Unknown52 uint8 `eq2:"int8"`
Unknown53 uint8 `eq2:"int8"`
ItemID int32 `eq2:"sint32"`
BrokerID uint64 `eq2:"int64"`
Name []byte `eq2:"char,len=64"`
Unknown6 []uint8 `eq2:"int8,len=17"`
}
// Item Version 63214 (latest)
type ItemV63214 struct {
UniqueID uint32 `eq2:"int32"`
BagID uint32 `eq2:"int32"`
InvSlotID uint32 `eq2:"int32"`
MenuType uint32 `eq2:"int32"`
Unknown3 uint32 `eq2:"int32"`
Index uint16 `eq2:"int16"`
Icon uint16 `eq2:"int16"`
SlotID uint8 `eq2:"int8"`
Count uint16 `eq2:"int16"`
Unknown4b uint8 `eq2:"int8"`
Unknown4c uint8 `eq2:"int8"`
ItemLevel uint8 `eq2:"int8"`
Tier uint8 `eq2:"int8"`
NumSlots uint8 `eq2:"int8"`
EmptySlots uint8 `eq2:"int8"`
Unknown52 uint8 `eq2:"int8"`
ItemID int32 `eq2:"sint32"`
BrokerID uint64 `eq2:"int64"`
Name []byte `eq2:"char,len=64"`
Unknown6 []uint8 `eq2:"int8,len=17"`
}

View File

@ -0,0 +1,59 @@
package substructs
// ItemDescription Version 1
type ItemDescriptionV1 struct {
InfoHeader WSExamineInfoHeader `eq2:"substruct"`
Info BaseItemDescriptionV1 `eq2:"substruct"`
ItemType uint8 `eq2:"int8"`
}
// ItemDescription Version 373
type ItemDescriptionV373 struct {
InfoHeader WSExamineInfoHeader `eq2:"substruct"`
Info BaseItemDescriptionV373 `eq2:"substruct"`
ItemType uint8 `eq2:"int8"`
}
// ItemDescription Version 546
type ItemDescriptionV546 struct {
InfoHeader WSExamineInfoHeader `eq2:"substruct"`
Info BaseItemDescriptionV546 `eq2:"substruct"`
ItemType uint8 `eq2:"int8"`
}
// ItemDescription Version 1096
type ItemDescriptionV1096 struct {
InfoHeader WSExamineInfoHeader `eq2:"substruct"`
Info BaseItemDescriptionV1096 `eq2:"substruct"`
ItemType uint8 `eq2:"int8"`
}
// ItemDescription Version 1188
type ItemDescriptionV1188 struct {
InfoHeader WSExamineInfoHeader `eq2:"substruct"`
Info BaseItemDescriptionV1188 `eq2:"substruct"`
ItemType uint8 `eq2:"int8"`
}
// ItemDescription Version 1208
type ItemDescriptionV1208 struct {
InfoHeader WSExamineInfoHeader `eq2:"substruct"`
Info BaseItemDescriptionV1208 `eq2:"substruct"`
ItemType uint8 `eq2:"int8"`
}
// ItemDescription Version 63119
type ItemDescriptionV63119 struct {
InfoHeader WSExamineInfoHeader `eq2:"substruct"`
Info BaseItemDescriptionV63119 `eq2:"substruct"`
ItemType uint8 `eq2:"int8"`
}
// WSExamineInfoHeader - referenced by ItemDescription structs
// This struct definition needs to be provided based on the actual WS_ExamineInfoHeader definition
type WSExamineInfoHeader struct {
// Fields need to be defined based on actual WS_ExamineInfoHeader structure
// Placeholder - replace with actual fields
Unknown1 uint32 `eq2:"int32"`
Unknown2 uint16 `eq2:"int16"`
}

View File

@ -0,0 +1,8 @@
package substructs
// ItemDescriptionGeneric Version 373
type ItemDescriptionGeneric struct {
InfoHeader WSExamineInfoHeader `eq2:"substruct"`
Info BaseItemDescriptionGeneric `eq2:"substruct"`
ItemType uint8 `eq2:"int8"`
}

View File

@ -0,0 +1,8 @@
package substructs
// ItemDescriptionInspect Version 373
type ItemDescriptionInspect struct {
InfoHeader WSExamineInfoHeader `eq2:"substruct"`
Info BaseItemDescriptionInspect `eq2:"substruct"`
ItemType uint8 `eq2:"int8"`
}

View File

@ -0,0 +1,818 @@
package substructs
import "eq2emu/internal/common"
// Supporting structs for nested arrays
type EffectItem struct {
SubBulletFlag uint8 `eq2:"int8"`
Effect common.EQ2String16 `eq2:"string16"`
}
type EffectItemV546 struct {
SubBulletFlag uint8 `eq2:"int8"`
Effect common.EQ2String16 `eq2:"string16"`
Percentage uint8 `eq2:"int8"`
}
type SetStatItem struct {
SetStatType uint8 `eq2:"int8"`
SetStatSubtype uint8 `eq2:"int8"`
SetValue int16 `eq2:"sint16,oversized=127,oversizedbyte=127"`
SetStatName common.EQ2String8 `eq2:"string8"`
}
type SetStatItemV1188 struct {
SetStatType uint16 `eq2:"int16,oversized=127,oversizedbyte=127"`
SetStatSubtype uint16 `eq2:"int16,oversized=127,oversizedbyte=127,ifnotequals=set_stat_type_%i"`
SetValue any `eq2:"float,type2=sint16,type2criteria=set_stat_type!=6,oversized=127,oversizedbyte=127"`
SetStatName common.EQ2String8 `eq2:"string8"`
SetStatUnknown uint8 `eq2:"int8"`
}
type SetStatItemV63119 struct {
SetStatType uint16 `eq2:"int16,oversized=127,oversizedbyte=127"`
SetStatSubtype uint16 `eq2:"int16,oversized=127,oversizedbyte=127,ifnotequals=set_stat_type_%i"`
SetValue any `eq2:"float,type2=sint32,type2criteria=set_stat_type!=6"`
SetStatName common.EQ2String8 `eq2:"string8"`
SetStatUnknown uint32 `eq2:"int32"`
SetStatUnknownMJ uint16 `eq2:"int16"`
}
type SetEffectItem struct {
SetSubBulletFlag uint8 `eq2:"int8"`
SetEffect common.EQ2String16 `eq2:"string16"`
SetPercentage uint8 `eq2:"int8"`
}
type SetBonusItem struct {
SetNumNeeded uint8 `eq2:"int8"`
SetStatCount uint8 `eq2:"int8"`
SetStatArray []SetStatItem `eq2:"array,arraysize=SetStatCount"`
NumSetEffects uint8 `eq2:"int8"`
SetEffectArray []SetEffectItem `eq2:"array,arraysize=NumSetEffects"`
}
type SetBonusItemV1188 struct {
SetBonusItemsNeeded uint8 `eq2:"int8"`
SetBonusStatsCount uint8 `eq2:"int8"`
SetBonusStatsArray []SetStatItemV1188 `eq2:"array,arraysize=SetBonusStatsCount"`
SetBonusEffectsCount uint8 `eq2:"int8"`
SetBonusEffectsArray []SetBonusEffectItem `eq2:"array,arraysize=SetBonusEffectsCount"`
}
type SetBonusItemV63119 struct {
SetBonusItemsNeeded uint8 `eq2:"int8"`
SetBonusStatsCount uint8 `eq2:"int8"`
SetBonusStatsArray []SetStatItemV63119 `eq2:"array,arraysize=SetBonusStatsCount"`
SetBonusEffectsCount uint8 `eq2:"int8"`
SetBonusEffectsArray []SetBonusEffectItem `eq2:"array,arraysize=SetBonusEffectsCount"`
}
type SetBonusEffectItem struct {
SetBonusEffectSubBulletFlag uint8 `eq2:"int8"`
SetBonusEffectText common.EQ2String16 `eq2:"string16"`
SetBonusEffectPercentage uint8 `eq2:"int8"`
}
type SetItemsItem struct {
SetItemsUnknown1 uint8 `eq2:"int8"`
SetItemsUnknown2 uint8 `eq2:"int8"`
SetItemName common.EQ2String16 `eq2:"string16"`
}
type AdornItem struct {
AdornSlot uint8 `eq2:"int8"`
AdornUnknown uint32 `eq2:"int32"`
AdornName common.EQ2String16 `eq2:"string16"`
AdornTimeLeft float32 `eq2:"float"`
}
type AdornItemV1188 struct {
AdornUnknown1 uint8 `eq2:"int8"`
AdornSlot uint8 `eq2:"int8"`
AdornUnknown2 []uint8 `eq2:"int8,len=2"`
AdornItemID uint32 `eq2:"int32"`
AdornName common.EQ2String16 `eq2:"string16"`
AdornTimeLeft float32 `eq2:"float"`
AdornUnknown3 uint32 `eq2:"int32"`
}
type AdornItemV63119 struct {
AdornSlot uint8 `eq2:"int8"`
AdornUnknown1 uint8 `eq2:"int8"`
AdornUnknown2 []uint8 `eq2:"int8,len=2"`
AdornItemID uint32 `eq2:"int32"`
AdornName common.EQ2String16 `eq2:"string16"`
AdornTimeLeft float32 `eq2:"float"`
AdornUnknown3 uint32 `eq2:"int32"`
}
type AdornStatItem struct {
AdornStatType uint16 `eq2:"int16,oversized=127,oversizedbyte=127"`
AdornStatSubtype int16 `eq2:"sint16,oversized=127,oversizedbyte=127,ifnotequals=adorn_stat_type_%i_%i"`
AdornValue any `eq2:"float,type2=sint16,type2criteria=stat_type!=6,oversized=127,oversizedbyte=127"`
AdornStatName common.EQ2String8 `eq2:"string8"`
AdornStatLevel uint8 `eq2:"int8"`
}
type AdornStatItemV63119 struct {
AdornStatType uint16 `eq2:"int16,oversized=127,oversizedbyte=127"`
AdornStatSubtype int16 `eq2:"sint16,oversized=127,oversizedbyte=127,ifnotequals=adorn_stat_type_%i_%i"`
AdornValue any `eq2:"float,type2=sint32,type2criteria=adorn_stat_type!=6,oversized=127,oversizedbyte=127"`
AdornStatName common.EQ2String8 `eq2:"string8"`
AdornStatLevel uint8 `eq2:"int8"`
AdornStatUnknown1 []uint8 `eq2:"int8,len=5"`
}
type AdornLevelItem struct {
NumAdornStats uint32 `eq2:"int32"`
AdornStatsArray []AdornStatItem `eq2:"array,arraysize=NumAdornStats"`
}
type AdornLevelItemV63119 struct {
NumAdornStats uint32 `eq2:"int32"`
AdornStatsArray []AdornStatItemV63119 `eq2:"array,arraysize=NumAdornStats"`
}
type TierlineItem struct {
Addon common.EQ2String16 `eq2:"string16"`
TierlineUnknown []uint8 `eq2:"int8,len=5"`
}
// Version structs
type SubstructItemFooterV1 struct {
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
}
type SubstructItemFooterV373 struct {
NumEffects uint8 `eq2:"int8,ifflagnotset=loot"`
EffectArray []EffectItem `eq2:"array,arraysize=NumEffects,ifflagnotset=loot"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
}
type SubstructItemFooterV546 struct {
NumEffects uint8 `eq2:"int8,ifflagnotset=loot"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects,ifflagnotset=loot"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
}
type SubstructItemFooterV562 struct {
// NOTE: Parser needs enhancement for comma-separated conditions
// Original: IfVariableNotSet="header_info_header_unknown_0_0,header_unknown_0"
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
StackSize uint8 `eq2:"int8"`
SetName common.EQ2String8 `eq2:"string8"`
NumSets uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetArray []SetBonusItem `eq2:"array,arraysize=NumSets"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo uint32 `eq2:"int32,ifvariableset=footer_set_name_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info2_0"`
DisplayCharges uint8 `eq2:"int8"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
}
type SubstructItemFooterV860 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
StackSize uint8 `eq2:"int8"`
SetName common.EQ2String8 `eq2:"string8"`
NumSets uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetArray []SetBonusItem `eq2:"array,arraysize=NumSets"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo uint32 `eq2:"int32,ifvariableset=footer_set_name_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info2_0"`
FooterUnknown5 uint8 `eq2:"int8"`
DisplayCharges uint8 `eq2:"int8"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
}
type SubstructItemFooterV893 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint8 `eq2:"int8"`
FooterUnknown3 uint8 `eq2:"int8"`
SetName common.EQ2String8 `eq2:"string8"`
NumSets uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetArray []SetBonusItem `eq2:"array,arraysize=NumSets"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo uint32 `eq2:"int32,ifvariableset=footer_set_name_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info2_0"`
FooterUnknown5 uint8 `eq2:"int8"`
DisplayCharges uint8 `eq2:"int8"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
}
type SubstructItemFooterV927 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint8 `eq2:"int8"`
FooterUnknown3 uint8 `eq2:"int8"`
SetName common.EQ2String8 `eq2:"string8"`
NumSets uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetArray []SetBonusItem `eq2:"array,arraysize=NumSets"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
FooterUnknown4 uint8 `eq2:"int8"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo uint32 `eq2:"int32,ifvariableset=footer_set_name_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info2_0"`
FooterUnknown5 uint8 `eq2:"int8"`
DisplayCharges uint8 `eq2:"int8"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
}
type SubstructItemFooterV1027 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint8 `eq2:"int8"`
FooterUnknown3 []uint8 `eq2:"int8,len=2"`
SetName common.EQ2String8 `eq2:"string8"`
NumSets uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetArray []SetBonusItem `eq2:"array,arraysize=NumSets"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
FooterUnknown4 []uint8 `eq2:"int8,len=4"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo uint32 `eq2:"int32,ifvariableset=footer_set_name_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info2_0"`
FooterUnknown5 []uint8 `eq2:"int8,len=2"`
DisplayCharges uint8 `eq2:"int8"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
}
type SubstructItemFooterV1096 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint8 `eq2:"int8"`
AdornFlag uint8 `eq2:"int8"`
FooterUnknown3 uint8 `eq2:"int8"`
FooterUnknown3A uint8 `eq2:"int8"`
FooterUnknown3B uint8 `eq2:"int8"`
FooterUnknown3C uint8 `eq2:"int8"`
SetName common.EQ2String8 `eq2:"string8"`
NumSets uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetArray []SetBonusItem `eq2:"array,arraysize=NumSets"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
TransmutedFlag uint8 `eq2:"int8"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
OffersQuest common.EQ2String8 `eq2:"string8"`
PartOfQuest common.EQ2String8 `eq2:"string8"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
StatusItem uint8 `eq2:"int8"`
FooterUnknown7 uint8 `eq2:"int8"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlagXXX uint8 `eq2:"int8"`
AdornCount uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
AdornArray []AdornItem `eq2:"array,arraysize=AdornCount"`
LockedFlag uint8 `eq2:"int8"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
}
type SubstructItemFooterV1188 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint16 `eq2:"int16"`
AdornSlots []uint8 `eq2:"int8,len=6"`
SetName common.EQ2String8 `eq2:"string8"`
SetBonusListCount uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetBonusListArray []SetBonusItemV1188 `eq2:"array,arraysize=SetBonusListCount"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
TotalSetItemsEquipped uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
TotalSetItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
AdornFlag uint8 `eq2:"int8"`
AdornStatsActive uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornStatsTotal uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornName common.EQ2String16 `eq2:"string16,ifvariableset=footer_adorn_flag_0"`
NumAdornLevels uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornStatsUnknown1 uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornLevelArray []AdornLevelItem `eq2:"array,arraysize=NumAdornLevels"`
FooterUnknown4 uint8 `eq2:"int8"`
FooterUnknown4A uint8 `eq2:"int8,ifvariableset=footer_footer_unknown4_0"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 []uint8 `eq2:"int8,len=2,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo2 []uint8 `eq2:"int8,len=3,ifvariableset=footer_set_name_0"`
StatusItem []uint8 `eq2:"int8,len=2"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
AdornCount uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
AdornArray []AdornItemV1188 `eq2:"array,arraysize=AdornCount"`
LockedFlag uint8 `eq2:"int8"`
AccountRestricted uint8 `eq2:"int8"`
FooterUnknown6 uint8 `eq2:"int8"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
FooterUnknown7 uint8 `eq2:"int8"`
}
type SubstructItemFooterV57048 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RequiredClasses2 uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint16 `eq2:"int16"`
AdornSlots []uint8 `eq2:"int8,len=6"`
SetName common.EQ2String8 `eq2:"string8"`
SetBonusListCount uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetBonusListArray []SetBonusItemV1188 `eq2:"array,arraysize=SetBonusListCount"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
TotalSetItemsEquipped uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
TotalSetItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
AdornFlag uint8 `eq2:"int8"`
AdornStatsActive uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornStatsTotal uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornName common.EQ2String16 `eq2:"string16,ifvariableset=footer_adorn_flag_0"`
NumAdornLevels uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornStatsUnknown1 uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornLevelArray []AdornLevelItem `eq2:"array,arraysize=NumAdornLevels"`
FooterUnknown4 uint8 `eq2:"int8"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 []uint8 `eq2:"int8,len=2,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3A uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info3_0"`
UnknownSetInfo4 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
StatusItem []uint8 `eq2:"int8,len=2"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
AdornCount uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
AdornArray []AdornItemV1188 `eq2:"array,arraysize=AdornCount"`
LockedFlag uint8 `eq2:"int8"`
AccountRestricted uint8 `eq2:"int8"`
FooterUnknown6 []uint8 `eq2:"int8,len=13"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
FooterUnknown7 uint8 `eq2:"int8"`
}
type SubstructItemFooterV58571 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RequiredClasses2 uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint16 `eq2:"int16"`
AdornSlots []uint8 `eq2:"int8,len=11"`
SetName common.EQ2String8 `eq2:"string8"`
SetBonusListCount uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetBonusListArray []SetBonusItemV1188 `eq2:"array,arraysize=SetBonusListCount"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
TotalSetItemsEquipped uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
TotalSetItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
AdornFlag uint8 `eq2:"int8"`
AdornStatsActive uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornStatsTotal uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornName common.EQ2String16 `eq2:"string16,ifvariableset=footer_adorn_flag_0"`
NumAdornLevels uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornStatsUnknown1 uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornLevelArray []AdornLevelItem `eq2:"array,arraysize=NumAdornLevels"`
FooterUnknown4 uint8 `eq2:"int8"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 []uint8 `eq2:"int8,len=2,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3A uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info3_0"`
UnknownSetInfo4 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
StatusItem []uint8 `eq2:"int8,len=2"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
AdornCount uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
AdornArray []AdornItemV1188 `eq2:"array,arraysize=AdornCount"`
LockedFlag uint8 `eq2:"int8"`
AccountRestricted uint8 `eq2:"int8"`
FooterUnknown6 []uint8 `eq2:"int8,len=15"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
FooterUnknownVer58571 uint8 `eq2:"int8"`
}
type SubstructItemFooterV58617 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RequiredClasses2 uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint16 `eq2:"int16"`
AdornSlots []uint8 `eq2:"int8,len=11"`
SetName common.EQ2String8 `eq2:"string8"`
SetBonusListCount uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetBonusListArray []SetBonusItemV1188 `eq2:"array,arraysize=SetBonusListCount"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
TotalSetItemsEquipped uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
TotalSetItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
AdornFlag uint8 `eq2:"int8"`
AdornStatsActive uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornStatsTotal uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornName common.EQ2String16 `eq2:"string16,ifvariableset=footer_adorn_flag_0"`
NumAdornLevels uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornStatsUnknown1 uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornLevelArray []AdornLevelItem `eq2:"array,arraysize=NumAdornLevels"`
FooterUnknown4 uint8 `eq2:"int8"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 []uint8 `eq2:"int8,len=2,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8"` // Note: XML comment indicates removing ifvariablenotset condition
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3A uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info3_0"`
UnknownSetInfo4 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
StatusItem []uint8 `eq2:"int8,len=2"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
Unknown58617_1_MJ uint8 `eq2:"int8"`
AdornCount uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
AdornArray []AdornItemV1188 `eq2:"array,arraysize=AdornCount"`
LockedFlag uint8 `eq2:"int8"`
AccountRestricted uint8 `eq2:"int8"`
FooterUnknown6 []uint8 `eq2:"int8,len=17"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
FooterUnknownVer58617 uint8 `eq2:"int8"`
}
type SubstructItemFooterV60024 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RequiredClasses2 uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint16 `eq2:"int16"`
AdornSlots []uint8 `eq2:"int8,len=11"`
SetName common.EQ2String8 `eq2:"string8"`
SetBonusListCount uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetBonusListArray []SetBonusItemV1188 `eq2:"array,arraysize=SetBonusListCount"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
TotalSetItemsEquipped uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
TotalSetItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
AdornFlag uint8 `eq2:"int8"`
AdornStatsActive uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornStatsTotal uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornName common.EQ2String16 `eq2:"string16,ifvariableset=footer_adorn_flag_0"`
NumAdornLevels uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornStatsUnknown1 uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornLevelArray []AdornLevelItem `eq2:"array,arraysize=NumAdornLevels"`
FooterUnknown4 uint8 `eq2:"int8"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 []uint8 `eq2:"int8,len=2,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3A uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info3_0"`
UnknownSetInfo4 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
StatusItem uint8 `eq2:"int8"`
Unknown60024A uint8 `eq2:"int8"`
Unknown60024B []uint8 `eq2:"int8,len=4,ifvariableset=footer_unknown60024a_0"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
AdornCount uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
AdornArray []AdornItemV1188 `eq2:"array,arraysize=AdornCount"`
LockedFlag uint8 `eq2:"int8"`
AccountRestricted uint8 `eq2:"int8"`
FooterUnknown6 []uint8 `eq2:"int8,len=18"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
FooterUnknown7 uint8 `eq2:"int8"`
}
type SubstructItemFooterV60055 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
RequiredClasses uint64 `eq2:"int64"`
RequiredClasses2 uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint16 `eq2:"int16"`
AdornSlots []uint8 `eq2:"int8,len=11"`
SetName common.EQ2String8 `eq2:"string8"`
SetBonusListCount uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetBonusListArray []SetBonusItemV1188 `eq2:"array,arraysize=SetBonusListCount"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
TotalSetItemsEquipped uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
TotalSetItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
AdornFlag uint8 `eq2:"int8"`
AdornStatsActive uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornStatsTotal uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornName common.EQ2String16 `eq2:"string16,ifvariableset=footer_adorn_flag_0"`
NumAdornLevels uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornStatsUnknown1 uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornLevelArray []AdornLevelItem `eq2:"array,arraysize=NumAdornLevels"`
FooterUnknown4 uint8 `eq2:"int8"`
Unknown60055ZA uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
Unknown60055Z uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 []uint8 `eq2:"int8,len=2,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3A uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info3_0"`
UnknownSetInfo4 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownEmem1 uint8 `eq2:"int8"`
UnknownEmem2 uint8 `eq2:"int8"`
UnknownEmem3 uint8 `eq2:"int8"`
UnknownEmem4 uint8 `eq2:"int8"`
StatusItem uint32 `eq2:"int32"`
CraftingFlag uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
AdornCount uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
AdornArray []AdornItemV1188 `eq2:"array,arraysize=AdornCount"`
LockedFlag uint8 `eq2:"int8"`
AccountRestricted uint8 `eq2:"int8"`
FooterUnknown6A uint8 `eq2:"int8"`
FooterUnknown6B uint8 `eq2:"int8"`
FooterUnknown6C uint8 `eq2:"int8"`
FooterUnknown6D uint8 `eq2:"int8"`
FooterUnknown6E uint8 `eq2:"int8"`
FooterUnknown6F uint8 `eq2:"int8"`
FooterUnknown6G uint8 `eq2:"int8"`
FooterUnknown6H uint8 `eq2:"int8"`
FooterUnknown6I uint8 `eq2:"int8"`
FooterUnknown6J uint8 `eq2:"int8"`
FooterUnknown6K uint8 `eq2:"int8"`
FooterUnknown6L uint8 `eq2:"int8"`
FooterUnknown6M uint8 `eq2:"int8"`
FooterUnknown6N uint8 `eq2:"int8"`
FooterUnknown6O uint8 `eq2:"int8"`
FooterUnknown6 []uint8 `eq2:"int8,len=2"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
FooterUnknown7 uint8 `eq2:"int8"`
}
type SubstructItemFooterV60174 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
FooterUnknown2 uint8 `eq2:"int8"`
RequiredClasses uint64 `eq2:"int64"`
RequiredClasses2 uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint16 `eq2:"int16"`
AdornSlots []uint8 `eq2:"int8,len=11"`
SetName common.EQ2String8 `eq2:"string8"`
SetBonusListCount uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetBonusListArray []SetBonusItemV1188 `eq2:"array,arraysize=SetBonusListCount"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
TotalSetItemsEquipped uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
TotalSetItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
AdornFlag uint8 `eq2:"int8"`
AdornStatsActive uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornStatsTotal uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornName common.EQ2String16 `eq2:"string16,ifvariableset=footer_adorn_flag_0"`
NumAdornLevels uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornStatsUnknown1 uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornLevelArray []AdornLevelItem `eq2:"array,arraysize=NumAdornLevels"`
FooterUnknown4 uint8 `eq2:"int8"`
Unknown60055ZA uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
Collectable uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
Unknown60055Z uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
OffersQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
PartOfQuest common.EQ2String8 `eq2:"string8,ifvariablenotset=footer_set_name_0"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 []uint8 `eq2:"int8,len=2,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3A uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info3_0"`
UnknownSetInfo4 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
StatusItem uint32 `eq2:"int32"`
Unknown60024A uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
AdornCount uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
AdornArray []AdornItemV1188 `eq2:"array,arraysize=AdornCount"`
LockedFlag uint8 `eq2:"int8"`
AccountRestricted uint8 `eq2:"int8"`
FooterUnknown6A uint8 `eq2:"int8"`
CraftingFlag uint8 `eq2:"int8"`
FooterUnknown6B []uint8 `eq2:"int8,len=21"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
FooterUnknown7 uint8 `eq2:"int8"`
}
type SubstructItemFooterV63119 struct {
NumEffects uint8 `eq2:"int8,ifvariablenotset=header_info_header_unknown_0_0"`
EffectArray []EffectItemV546 `eq2:"array,arraysize=NumEffects"`
Tierline uint8 `eq2:"int8"`
TierlineArray []TierlineItem `eq2:"array,arraysize=Tierline"`
RequiredClasses uint64 `eq2:"int64"`
RequiredClasses2 uint64 `eq2:"int64"`
RecommendedLevel uint8 `eq2:"int8"`
RequiredLevel uint8 `eq2:"int8"`
StackSize uint16 `eq2:"int16"`
AdornSlots []uint8 `eq2:"int8,len=11"`
FooterUnknown3MJ1 uint8 `eq2:"int8"`
SetName common.EQ2String8 `eq2:"string8"`
SetBonusListCount uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetBonusListArray []SetBonusItemV63119 `eq2:"array,arraysize=SetBonusListCount"`
NumItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
SetItemsArray []SetItemsItem `eq2:"array,arraysize=NumItemsInSet"`
TotalSetItemsEquipped uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
TotalSetItemsInSet uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
AdornFlag uint8 `eq2:"int8"`
AdornUnknown64A uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornUnknown64B uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornStatsActive uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornStatsTotal uint8 `eq2:"int8,ifvariableset=footer_adorn_flag_0"`
AdornName common.EQ2String16 `eq2:"string16,ifvariableset=footer_adorn_flag_0"`
NumAdornLevels uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornStatsUnknown1 uint32 `eq2:"int32,ifvariableset=footer_adorn_flag_0"`
AdornLevelArray []AdornLevelItemV63119 `eq2:"array,arraysize=NumAdornLevels"`
FooterUnknown4 uint8 `eq2:"int8"`
Unknown60055ZA uint8 `eq2:"int8,ifvariableset=foot_set_name_0"`
Collectable uint8 `eq2:"int8"`
CollectionNeeded uint8 `eq2:"int8,ifvariableset=footer_collectable_0"`
Unknown60055Z uint8 `eq2:"int8"`
OffersQuest common.EQ2String8 `eq2:"string8"`
PartOfQuest common.EQ2String8 `eq2:"string8"`
OffersQuestColor uint8 `eq2:"int8,ifvariableset=footer_offers_quest_0"`
PartOfQuestColor uint8 `eq2:"int8,ifvariableset=footer_part_of_quest_0"`
UnknownSetData1 []uint8 `eq2:"int8,len=2,ifvariableset=footer_set_name_0"`
Charges uint8 `eq2:"int8"`
TotalCharges uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
ChargesLeft uint16 `eq2:"int16,ifvariableset=footer_charges_0"`
UnknownSetInfo2 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownSetInfo3A uint32 `eq2:"int32,ifvariableset=footer_unknown_set_info3_0"`
UnknownSetInfo4 uint8 `eq2:"int8,ifvariableset=footer_set_name_0"`
UnknownEmem1 []uint8 `eq2:"int8,len=4"`
StatusItem uint32 `eq2:"int32"`
Unknown60024B uint8 `eq2:"int8"`
TransmutedFlag uint8 `eq2:"int8"`
UnknownMJ38A uint8 `eq2:"int8"`
UnknownMJ38B uint8 `eq2:"int8"`
CraftingFlag uint8 `eq2:"int8"`
UnknownMJ38D uint8 `eq2:"int8"`
AdornCount uint8 `eq2:"int8"`
AdornArray []AdornItemV63119 `eq2:"array,arraysize=AdornCount"`
LockedFlag uint8 `eq2:"int8"`
UnknownMJ38C uint8 `eq2:"int8"`
AccountRestricted uint8 `eq2:"int8"`
FooterUnknown6B []uint8 `eq2:"int8,len=7"`
FooterUnknown6C uint32 `eq2:"int32,ifvariablenotset=footer_set_name_0"`
FooterUnknown6D uint8 `eq2:"int8,ifvariablenotset=footer_set_name_0"`
Name common.EQ2String8 `eq2:"string8"`
Description common.EQ2String16 `eq2:"string16"`
FooterUnknown7 uint8 `eq2:"int8"`
}

View File

@ -0,0 +1,12 @@
package substructs
// ItemInfo Version 63119
type ItemInfo struct {
NumItems uint16 `eq2:"int16"`
ItemsArray []ItemIndex `eq2:"array,arraysize=NumItems"`
}
type ItemIndex struct {
ItemIndex uint16 `eq2:"int16"`
TabUnknown2 uint32 `eq2:"int32"`
}