diff --git a/internal/packets/ls_structs/LoginReplyMsg.go b/internal/packets/ls_structs/LoginReplyMsg.go new file mode 100644 index 0000000..43771dc --- /dev/null +++ b/internal/packets/ls_structs/LoginReplyMsg.go @@ -0,0 +1,356 @@ +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"` +}