package ls_structs import "eq2emu/internal/common" // StartingItem represents equipment/item data for character creation type StartingItem struct { ModelID uint32 `eq2:"int32"` SlotID uint8 `eq2:"int8"` UseColor uint8 `eq2:"int8"` UseHighlightColor uint8 `eq2:"int8"` ModelColor common.EQ2Color `eq2:"color"` ModelHighlightColor common.EQ2Color `eq2:"color"` } // StartingItemV1 for older client versions (int16 model_id) type StartingItemV1 struct { ModelID uint16 `eq2:"int16"` SlotID uint8 `eq2:"int8"` UseColor uint8 `eq2:"int8"` UseHighlightColor uint8 `eq2:"int8"` ModelColor common.EQ2Color `eq2:"color"` ModelHighlightColor common.EQ2Color `eq2:"color"` } // ClassItem represents class-specific starting equipment type ClassItem struct { ClassID uint8 `eq2:"int8"` NumItems uint8 `eq2:"int8"` StartingItems []StartingItem `eq2:"array,arraysize=NumItems"` } // ClassItemV1 for older client versions type ClassItemV1 struct { ClassID uint8 `eq2:"int8"` NumItems uint8 `eq2:"int8"` StartingItems []StartingItemV1 `eq2:"array,arraysize=NumItems"` } // UnknownArray2Item represents items in the second unknown array type UnknownArray2Item struct { Array2Unknown uint32 `eq2:"int32"` } // LS_LoginReplyMsgV1 - Client version 1 type LS_LoginReplyMsgV1 struct { LoginResponse uint8 `eq2:"int8"` WorldName common.EQ2String16 `eq2:"string16"` ParentalControlFlag uint8 `eq2:"int8"` ParentalControlTimer []uint32 `eq2:"int32,len=2"` ParentalControlNext uint32 `eq2:"int32"` AccountID uint32 `eq2:"int32"` } // LS_LoginReplyMsgV284 - Client version 284 type LS_LoginReplyMsgV284 struct { LoginResponse uint8 `eq2:"int8"` Unknown common.EQ2String16 `eq2:"string16"` ParentalControlFlag uint8 `eq2:"int8"` ParentalControlTimer uint32 `eq2:"int32"` Unknown2 []uint8 `eq2:"int8,len=8"` CacheSettingAccountID uint32 `eq2:"int32"` Unknown3 common.EQ2String16 `eq2:"string16"` ResetAppearance uint8 `eq2:"int8"` DoNotForceSoga uint8 `eq2:"int8"` Unknown5 uint16 `eq2:"int16"` Unknown6 uint8 `eq2:"int8"` Unknown7 uint32 `eq2:"int32"` Unknown8 []uint8 `eq2:"int8,len=2"` Unknown10 uint8 `eq2:"int8"` NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown10"` ClassItems []ClassItemV1 `eq2:"array,arraysize=NumClassItems,ifvariableset=Unknown10"` UnknownArray2Size uint8 `eq2:"int8"` UnknownArray2 []UnknownArray2Item `eq2:"array,arraysize=UnknownArray2Size"` } // LS_LoginReplyMsgV843 - Client version 843 type LS_LoginReplyMsgV843 struct { LoginResponse uint8 `eq2:"int8"` Unknown common.EQ2String16 `eq2:"string16"` ParentalControlFlag uint8 `eq2:"int8"` ParentalControlTimer uint32 `eq2:"int32"` Unknown2 []uint8 `eq2:"int8,len=8"` AccountID uint32 `eq2:"int32"` Unknown3 common.EQ2String16 `eq2:"string16"` ResetAppearance uint8 `eq2:"int8"` DoNotForceSoga uint8 `eq2:"int8"` Unknown4 uint8 `eq2:"int8"` Unknown5 uint16 `eq2:"int16"` Unknown6 uint8 `eq2:"int8"` Unknown7 uint32 `eq2:"int32"` RaceUnknown uint8 `eq2:"int8"` Unknown8 []uint8 `eq2:"int8,len=3"` Unknown9 uint8 `eq2:"int8"` Unknown10 uint8 `eq2:"int8"` NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown10"` ClassItems []ClassItemV1 `eq2:"array,arraysize=NumClassItems,ifvariableset=Unknown10"` UnknownArray2Size uint8 `eq2:"int8"` UnknownArray2 []UnknownArray2Item `eq2:"array,arraysize=UnknownArray2Size"` } // LS_LoginReplyMsgV1096 - Client version 1096 type LS_LoginReplyMsgV1096 struct { LoginResponse uint8 `eq2:"int8"` Unknown common.EQ2String16 `eq2:"string16"` ParentalControlFlag uint8 `eq2:"int8"` ParentalControlTimer uint32 `eq2:"int32"` Unknown2 []uint8 `eq2:"int8,len=8"` AccountID uint32 `eq2:"int32"` Unknown3 common.EQ2String16 `eq2:"string16"` ResetAppearance uint8 `eq2:"int8"` DoNotForceSoga uint8 `eq2:"int8"` Unknown4 uint8 `eq2:"int8"` Unknown5 uint16 `eq2:"int16"` Unknown6 []uint8 `eq2:"int8,len=5"` Unknown7 uint32 `eq2:"int32"` RaceUnknown uint8 `eq2:"int8"` Unknown8 []uint8 `eq2:"int8,len=3"` Unknown9 uint8 `eq2:"int8"` Unknown10 uint8 `eq2:"int8"` NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown10"` ClassItems []ClassItemV1 `eq2:"array,arraysize=NumClassItems,ifvariableset=Unknown10"` UnknownArray2Size uint8 `eq2:"int8"` UnknownArray2 []UnknownArray2Item `eq2:"array,arraysize=UnknownArray2Size"` Unknown11 uint32 `eq2:"int32"` SubLevel uint32 `eq2:"int32"` RaceFlag uint32 `eq2:"int32"` ClassFlag uint32 `eq2:"int32"` Password common.EQ2String16 `eq2:"string16"` Username common.EQ2String16 `eq2:"string16"` } // LS_LoginReplyMsgV1142 - Client version 1142 type LS_LoginReplyMsgV1142 struct { LoginResponse uint8 `eq2:"int8"` Unknown common.EQ2String16 `eq2:"string16"` ParentalControlFlag uint8 `eq2:"int8"` ParentalControlTimer uint32 `eq2:"int32"` Unknown2 []uint8 `eq2:"int8,len=8"` AccountID uint32 `eq2:"int32"` Unknown3 common.EQ2String16 `eq2:"string16"` ResetAppearance uint8 `eq2:"int8"` DoNotForceSoga uint8 `eq2:"int8"` Unknown4 uint8 `eq2:"int8"` Unknown5 uint16 `eq2:"int16"` Unknown6 []uint8 `eq2:"int8,len=5"` Unknown7 uint32 `eq2:"int32"` Unknown7a uint32 `eq2:"int32"` RaceUnknown uint8 `eq2:"int8"` Unknown8 []uint8 `eq2:"int8,len=3"` Unknown9 uint8 `eq2:"int8"` Unknown10 uint8 `eq2:"int8"` NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown10"` ClassItems []ClassItemV1 `eq2:"array,arraysize=NumClassItems,ifvariableset=Unknown10"` UnknownArray2Size uint8 `eq2:"int8"` UnknownArray2 []UnknownArray2Item `eq2:"array,arraysize=UnknownArray2Size"` Unknown11 uint32 `eq2:"int32"` SubLevel uint32 `eq2:"int32"` RaceFlag uint32 `eq2:"int32"` ClassFlag uint32 `eq2:"int32"` Password common.EQ2String16 `eq2:"string16"` Username common.EQ2String16 `eq2:"string16"` } // LS_LoginReplyMsgV1188 - Client version 1188 type LS_LoginReplyMsgV1188 struct { LoginResponse uint8 `eq2:"int8"` Unknown common.EQ2String16 `eq2:"string16"` ParentalControlFlag uint8 `eq2:"int8"` ParentalControlTimer uint32 `eq2:"int32"` Unknown2 []uint8 `eq2:"int8,len=8"` AccountID uint32 `eq2:"int32"` Unknown3 common.EQ2String16 `eq2:"string16"` ResetAppearance uint8 `eq2:"int8"` DoNotForceSoga uint8 `eq2:"int8"` Unknown4 uint8 `eq2:"int8"` Unknown5 uint16 `eq2:"int16"` Unknown6 []uint8 `eq2:"int8,len=5"` Unknown7 uint32 `eq2:"int32"` Unknown7a uint32 `eq2:"int32"` RaceUnknown uint8 `eq2:"int8"` Unknown8 []uint8 `eq2:"int8,len=3"` Unknown9 uint8 `eq2:"int8"` Unknown10 uint8 `eq2:"int8"` NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown10"` ClassItems []ClassItemV1 `eq2:"array,arraysize=NumClassItems,ifvariableset=Unknown10"` UnknownArray2Size uint8 `eq2:"int8"` UnknownArray2 []UnknownArray2Item `eq2:"array,arraysize=UnknownArray2Size"` Unknown11 uint32 `eq2:"int32"` SubLevel uint32 `eq2:"int32"` RaceFlag uint32 `eq2:"int32"` ClassFlag uint32 `eq2:"int32"` Password common.EQ2String16 `eq2:"string16"` Username common.EQ2String16 `eq2:"string16"` Unknown12 common.EQ2String16 `eq2:"string16"` } // LS_LoginReplyMsgV57080 - Client version 57080 type LS_LoginReplyMsgV57080 struct { LoginResponse uint8 `eq2:"int8"` Unknown common.EQ2String16 `eq2:"string16"` ParentalControlFlag uint8 `eq2:"int8"` ParentalControlTimer uint32 `eq2:"int32"` Unknown2 []uint8 `eq2:"int8,len=8"` AccountID uint32 `eq2:"int32"` Unknown3 common.EQ2String16 `eq2:"string16"` ResetAppearance uint8 `eq2:"int8"` DoNotForceSoga uint8 `eq2:"int8"` Unknown4 uint8 `eq2:"int8"` Unknown5 uint16 `eq2:"int16"` Unknown6 []uint8 `eq2:"int8,len=5"` Unknown7 uint32 `eq2:"int32"` Unknown7a uint32 `eq2:"int32"` RaceUnknown uint8 `eq2:"int8"` Unknown8 []uint8 `eq2:"int8,len=3"` Unknown9 uint8 `eq2:"int8"` Unknown10 uint8 `eq2:"int8"` NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown10"` ClassItems []ClassItem `eq2:"array,arraysize=NumClassItems,ifvariableset=Unknown10"` UnknownArray2Size uint8 `eq2:"int8"` UnknownArray2 []UnknownArray2Item `eq2:"array,arraysize=UnknownArray2Size"` Unknown11 uint32 `eq2:"int32"` SubLevel uint32 `eq2:"int32"` RaceFlag uint32 `eq2:"int32"` ClassFlag uint32 `eq2:"int32"` Password common.EQ2String16 `eq2:"string16"` Username common.EQ2String16 `eq2:"string16"` Service common.EQ2String16 `eq2:"string16"` Web1 common.EQ2String16 `eq2:"string16"` Web2 common.EQ2String16 `eq2:"string16"` Web3 common.EQ2String16 `eq2:"string16"` Web4 common.EQ2String16 `eq2:"string16"` Web5 common.EQ2String16 `eq2:"string16"` Web6 common.EQ2String16 `eq2:"string16"` Web7 common.EQ2String16 `eq2:"string16"` Web8 common.EQ2String16 `eq2:"string16"` Web9 common.EQ2String16 `eq2:"string16"` Unknown12 uint8 `eq2:"int8"` Lvl90NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown10"` Lvl90ClassItems []ClassItem `eq2:"array,arraysize=Lvl90NumClassItems,ifvariableset=Unknown10"` Unknown13 []uint8 `eq2:"int8,len=5"` } // LS_LoginReplyMsgV60100 - Client version 60100 type LS_LoginReplyMsgV60100 struct { LoginResponse uint8 `eq2:"int8"` Unknown common.EQ2String16 `eq2:"string16"` ParentalControlFlag uint8 `eq2:"int8"` ParentalControlTimer uint32 `eq2:"int32"` Unknown2 []uint8 `eq2:"int8,len=8"` AccountID uint32 `eq2:"int32"` Unknown3 common.EQ2String16 `eq2:"string16"` ResetAppearance uint8 `eq2:"int8"` DoNotForceSoga uint8 `eq2:"int8"` Unknown5 uint64 `eq2:"int64"` Unknown7 uint32 `eq2:"int32"` Unknown7a uint16 `eq2:"int16"` RaceUnknown uint8 `eq2:"int8"` Unknown8 []uint8 `eq2:"int8,len=3"` Unknown9 []uint8 `eq2:"int8,len=3"` Unknown10 uint8 `eq2:"int8"` NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown10"` ClassItems []ClassItem `eq2:"array,arraysize=NumClassItems,ifvariableset=Unknown10"` UnknownArray2Size uint8 `eq2:"int8"` UnknownArray2 []UnknownArray2Item `eq2:"array,arraysize=UnknownArray2Size"` Unknown11 uint32 `eq2:"int32"` SubLevel uint32 `eq2:"int32"` RaceFlag uint32 `eq2:"int32"` ClassFlag uint32 `eq2:"int32"` Password common.EQ2String16 `eq2:"string16"` Username common.EQ2String16 `eq2:"string16"` Service common.EQ2String16 `eq2:"string16"` Unknown12 uint8 `eq2:"int8"` Lvl90NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown12"` Lvl90ClassItems []ClassItem `eq2:"array,arraysize=Lvl90NumClassItems,ifvariableset=Unknown12"` Unknown13 uint8 `eq2:"int8"` TimeLockedNumClassItems uint8 `eq2:"int8,ifvariableset=Unknown13"` TimeLockedClassItems []ClassItem `eq2:"array,arraysize=TimeLockedNumClassItems,ifvariableset=Unknown13"` Unknown14 []uint8 `eq2:"int8,len=13"` } // LS_LoginReplyMsgV63181 - Client version 63181 type LS_LoginReplyMsgV63181 struct { LoginResponse uint8 `eq2:"int8"` Unknown common.EQ2String16 `eq2:"string16"` ParentalControlFlag uint8 `eq2:"int8"` ParentalControlTimer uint32 `eq2:"int32"` Unknown2 []uint8 `eq2:"int8,len=8"` AccountID uint32 `eq2:"int32"` Unknown3 common.EQ2String16 `eq2:"string16"` ResetAppearance uint8 `eq2:"int8"` DoNotForceSoga uint8 `eq2:"int8"` Unknown4 uint8 `eq2:"int8"` Unknown5 uint16 `eq2:"int16"` Unknown6 []uint8 `eq2:"int8,len=5"` Unknown6a []uint8 `eq2:"int8,len=8"` Unknown7 uint32 `eq2:"int32"` Unknown7a uint16 `eq2:"int16"` RaceUnknown uint8 `eq2:"int8"` Unknown8 []uint8 `eq2:"int8,len=3"` Unknown9 []uint8 `eq2:"int8,len=3"` Unknown10 uint8 `eq2:"int8"` NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown10"` ClassItems []ClassItem `eq2:"array,arraysize=NumClassItems,ifvariableset=Unknown10"` UnknownArray2Size uint8 `eq2:"int8"` UnknownArray2 []UnknownArray2Item `eq2:"array,arraysize=UnknownArray2Size"` Unknown11 uint32 `eq2:"int32"` SubLevel uint32 `eq2:"int32"` RaceFlag uint32 `eq2:"int32"` ClassFlag uint32 `eq2:"int32"` Password common.EQ2String16 `eq2:"string16"` Username common.EQ2String16 `eq2:"string16"` Service common.EQ2String16 `eq2:"string16"` Unknown12 uint8 `eq2:"int8"` Lvl90NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown12"` Lvl90ClassItems []ClassItem `eq2:"array,arraysize=Lvl90NumClassItems,ifvariableset=Unknown12"` Unknown13 uint8 `eq2:"int8"` TimeLockedNumClassItems uint8 `eq2:"int8,ifvariableset=Unknown13"` TimeLockedClassItems []ClassItem `eq2:"array,arraysize=TimeLockedNumClassItems,ifvariableset=Unknown13"` Unknown14 []uint8 `eq2:"int8,len=9"` } // LS_LoginReplyMsgV65534 - Client version 65534 (latest) type LS_LoginReplyMsgV65534 struct { LoginResponse uint8 `eq2:"int8"` WorldName common.EQ2String16 `eq2:"string16"` ParentalControlFlag uint8 `eq2:"int8"` ParentalControlTimer uint64 `eq2:"int64"` Unknown2 uint32 `eq2:"int32"` AccountID uint32 `eq2:"int32"` Unknown3 common.EQ2String16 `eq2:"string16"` ResetAppearance uint8 `eq2:"int8"` DoNotForceSoga uint8 `eq2:"int8"` Unknown4 common.EQ2String32 `eq2:"string32"` Unknown7 common.EQ2String32 `eq2:"string32"` RaceUnknown uint32 `eq2:"int32"` Unknown8 uint8 `eq2:"int8"` Unknown10 uint8 `eq2:"int8"` NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown10"` ClassItems []ClassItem `eq2:"array,arraysize=NumClassItems,ifvariableset=Unknown10"` UnknownArray2Size uint8 `eq2:"int8"` UnknownArray2 []UnknownArray2Item `eq2:"array,arraysize=UnknownArray2Size,ifvariableset=UnknownArray2Size"` Unknown11 uint32 `eq2:"int32"` SubLevel uint32 `eq2:"int32"` RaceFlag uint32 `eq2:"int32"` ClassFlag uint32 `eq2:"int32"` Password common.EQ2String16 `eq2:"string16"` Username common.EQ2String16 `eq2:"string16"` Service common.EQ2String16 `eq2:"string16"` Unknown12 uint8 `eq2:"int8"` Lvl90NumClassItems uint8 `eq2:"int8,ifvariableset=Unknown12"` Lvl90ClassItems []ClassItem `eq2:"array,arraysize=Lvl90NumClassItems,ifvariableset=Unknown12"` Unknown13 uint8 `eq2:"int8"` TimeLockedNumClassItems uint8 `eq2:"int8,ifvariableset=Unknown13"` TimeLockedClassItems []ClassItem `eq2:"array,arraysize=TimeLockedNumClassItems,ifvariableset=Unknown13"` Unknown14 []uint8 `eq2:"int8,len=13"` }