diff --git a/internal/packets/ls_structs/BadLanguageFilter.go b/internal/packets/ls_structs/BadLanguageFilter.go new file mode 100644 index 0000000..6023306 --- /dev/null +++ b/internal/packets/ls_structs/BadLanguageFilter.go @@ -0,0 +1,12 @@ +package ls_structs + +import "eq2emu/internal/common" + +type BadLanguageFilterWord struct { + Word common.EQ2String16 `eq2:"string16"` +} + +type BadLanguageFilter struct { + NumWords uint16 `eq2:"int16,oversized=255"` + WordsArray []BadLanguageFilterWord `eq2:"array,arraysize=NumWords"` +} diff --git a/internal/packets/ls_structs/CharSelectProfile.go b/internal/packets/ls_structs/CharSelectProfile.go new file mode 100644 index 0000000..9fdbf69 --- /dev/null +++ b/internal/packets/ls_structs/CharSelectProfile.go @@ -0,0 +1,411 @@ +package ls_structs + +import "eq2emu/internal/common" + +// CharSelectProfile for client version 1 +type CharSelectProfileV1 struct { + CharID uint32 `eq2:"int32"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint32 `eq2:"int32"` + Zone common.EQ2String16 `eq2:"string16"` + Unknown1 uint32 `eq2:"int32"` + Unknown2 uint32 `eq2:"int32"` + CreatedDate uint32 `eq2:"int32"` + LastPlayed uint32 `eq2:"int32"` + Unknown3 uint32 `eq2:"int32"` + Unknown4 uint32 `eq2:"int32"` + Zonename2 common.EQ2String16 `eq2:"string16"` + Zonedesc common.EQ2String16 `eq2:"string16"` + Version uint8 `eq2:"int8"` + RaceType uint16 `eq2:"int16"` + SkinColor []int8 `eq2:"sint8,len=3"` + EyeColor []int8 `eq2:"sint8,len=3"` + Equip []common.EQ2EquipmentItem `eq2:"equipment,len=21"` + HairType uint16 `eq2:"int16"` + HairTypeColor []int8 `eq2:"sint8,len=3"` + HairTypeHighlightColor []int8 `eq2:"sint8,len=3"` + HairFaceType uint16 `eq2:"int16"` + HairFaceColor []int8 `eq2:"sint8,len=3"` + HairFaceHighlightColor []int8 `eq2:"sint8,len=3"` + ChestType uint16 `eq2:"int16"` + ShirtColor []int8 `eq2:"sint8,len=3"` + UnknownChestColor []int8 `eq2:"sint8,len=3"` + LegsType uint16 `eq2:"int16"` + PantsColor []int8 `eq2:"sint8,len=3"` + UnknownLegsColor []int8 `eq2:"sint8,len=3"` + Unknown9 []int8 `eq2:"sint8,len=3"` + EyeType []int8 `eq2:"sint8,len=3"` + EarType []int8 `eq2:"sint8,len=3"` + EyeBrowType []int8 `eq2:"sint8,len=3"` + CheekType []int8 `eq2:"sint8,len=3"` + LipType []int8 `eq2:"sint8,len=3"` + ChinType []int8 `eq2:"sint8,len=3"` + NoseType []int8 `eq2:"sint8,len=3"` + BodySize int8 `eq2:"sint8"` + BumpScale int8 `eq2:"sint8"` + Mount uint16 `eq2:"int16"` + MountColor1 []int8 `eq2:"sint8,len=3"` + MountColor2 []int8 `eq2:"sint8,len=3"` + HairColor1 []int8 `eq2:"sint8,len=3"` + HairColor2 []int8 `eq2:"sint8,len=3"` + HairColor3 []int8 `eq2:"sint8,len=3"` + Flags uint8 `eq2:"int8"` +} + +// CharSelectProfile for client version 373 (same as V1) +type CharSelectProfileV373 struct { + CharID uint32 `eq2:"int32"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint32 `eq2:"int32"` + Zone common.EQ2String16 `eq2:"string16"` + Unknown1 uint32 `eq2:"int32"` + Unknown2 uint32 `eq2:"int32"` + CreatedDate uint32 `eq2:"int32"` + LastPlayed uint32 `eq2:"int32"` + Unknown3 uint32 `eq2:"int32"` + Unknown4 uint32 `eq2:"int32"` + Zonename2 common.EQ2String16 `eq2:"string16"` + Zonedesc common.EQ2String16 `eq2:"string16"` + Version uint8 `eq2:"int8"` + RaceType uint16 `eq2:"int16"` + SkinColor []int8 `eq2:"sint8,len=3"` + EyeColor []int8 `eq2:"sint8,len=3"` + Equip []common.EQ2EquipmentItem `eq2:"equipment,len=21"` + HairType uint16 `eq2:"int16"` + HairTypeColor []int8 `eq2:"sint8,len=3"` + HairTypeHighlightColor []int8 `eq2:"sint8,len=3"` + HairFaceType uint16 `eq2:"int16"` + HairFaceColor []int8 `eq2:"sint8,len=3"` + HairFaceHighlightColor []int8 `eq2:"sint8,len=3"` + ChestType uint16 `eq2:"int16"` + ShirtColor []int8 `eq2:"sint8,len=3"` + UnknownChestColor []int8 `eq2:"sint8,len=3"` + LegsType uint16 `eq2:"int16"` + PantsColor []int8 `eq2:"sint8,len=3"` + UnknownLegsColor []int8 `eq2:"sint8,len=3"` + Unknown9 []int8 `eq2:"sint8,len=3"` + EyeType []int8 `eq2:"sint8,len=3"` + EarType []int8 `eq2:"sint8,len=3"` + EyeBrowType []int8 `eq2:"sint8,len=3"` + CheekType []int8 `eq2:"sint8,len=3"` + LipType []int8 `eq2:"sint8,len=3"` + ChinType []int8 `eq2:"sint8,len=3"` + NoseType []int8 `eq2:"sint8,len=3"` + BodySize int8 `eq2:"sint8"` + BumpScale int8 `eq2:"sint8"` + Mount uint16 `eq2:"int16"` + MountColor1 []int8 `eq2:"sint8,len=3"` + MountColor2 []int8 `eq2:"sint8,len=3"` + HairColor1 []int8 `eq2:"sint8,len=3"` + HairColor2 []int8 `eq2:"sint8,len=3"` + HairColor3 []int8 `eq2:"sint8,len=3"` + Flags uint8 `eq2:"int8"` +} + +// CharSelectProfile for client version 546 +type CharSelectProfileV546 struct { + CharID uint32 `eq2:"int32"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Level uint32 `eq2:"int32"` + Zone common.EQ2String16 `eq2:"string16"` + Unknown1 uint32 `eq2:"int32"` + Unknown2 uint32 `eq2:"int32"` + CreatedDate uint32 `eq2:"int32"` + LastPlayed uint32 `eq2:"int32"` + Unknown3 uint32 `eq2:"int32"` + Unknown4 uint32 `eq2:"int32"` + Zonename2 common.EQ2String16 `eq2:"string16"` + Zonedesc common.EQ2String16 `eq2:"string16"` + Unknown5 uint32 `eq2:"int32"` + Version uint8 `eq2:"int8"` + RaceType uint16 `eq2:"int16"` + SkinColor []int8 `eq2:"sint8,len=3"` + EyeColor []int8 `eq2:"sint8,len=3"` + Equip []common.EQ2EquipmentItem `eq2:"equipment,len=23"` + HairType uint16 `eq2:"int16"` + HairTypeColor []int8 `eq2:"sint8,len=3"` + HairTypeHighlightColor []int8 `eq2:"sint8,len=3"` + HairFaceType uint16 `eq2:"int16"` + HairFaceColor []int8 `eq2:"sint8,len=3"` + HairFaceHighlightColor []int8 `eq2:"sint8,len=3"` + ChestType uint16 `eq2:"int16"` + ShirtColor []int8 `eq2:"sint8,len=3"` + UnknownChestColor []int8 `eq2:"sint8,len=3"` + LegsType uint16 `eq2:"int16"` + PantsColor []int8 `eq2:"sint8,len=3"` + UnknownLegsColor []int8 `eq2:"sint8,len=3"` + Unknown9 []int8 `eq2:"sint8,len=3"` + EyeType []int8 `eq2:"sint8,len=3"` + EarType []int8 `eq2:"sint8,len=3"` + EyeBrowType []int8 `eq2:"sint8,len=3"` + CheekType []int8 `eq2:"sint8,len=3"` + LipType []int8 `eq2:"sint8,len=3"` + ChinType []int8 `eq2:"sint8,len=3"` + NoseType []int8 `eq2:"sint8,len=3"` + BodySize int8 `eq2:"sint8"` + BumpScale int8 `eq2:"sint8"` + Mount uint16 `eq2:"int16"` + MountColor1 []int8 `eq2:"sint8,len=3"` + MountColor2 []int8 `eq2:"sint8,len=3"` + HairColor1 []int8 `eq2:"sint8,len=3"` + HairColor2 []int8 `eq2:"sint8,len=3"` + HairColor3 []int8 `eq2:"sint8,len=3"` + Unknown11 []uint8 `eq2:"int8,len=10"` + SogaRaceType uint16 `eq2:"int16"` + SogaSkinColorx common.EQ2Color `eq2:"color"` + SogaEyeColor common.EQ2Color `eq2:"color"` + Unknown12 []uint8 `eq2:"int8,len=3"` + SogaEyeType []int8 `eq2:"sint8,len=3"` + SogaEarType []int8 `eq2:"sint8,len=3"` + SogaEyeBrowType []int8 `eq2:"sint8,len=3"` + SogaCheekType []int8 `eq2:"sint8,len=3"` + SogaLipType []int8 `eq2:"sint8,len=3"` + SogaChinType []int8 `eq2:"sint8,len=3"` + SogaNoseType []int8 `eq2:"sint8,len=3"` + SogaHairColor1 common.EQ2Color `eq2:"color"` + SogaChestType uint16 `eq2:"int16"` + SogaHairColor2 common.EQ2Color `eq2:"color"` + SogaHairColor3 common.EQ2Color `eq2:"color"` + SogaHairType uint16 `eq2:"int16"` + SogaHairTypeColor common.EQ2Color `eq2:"color"` + SogaHairTypeHighlightColor common.EQ2Color `eq2:"color"` + SogaHairFaceType uint16 `eq2:"int16"` + SogaHairFaceColor common.EQ2Color `eq2:"color"` + SogaHairFaceHighlightColor common.EQ2Color `eq2:"color"` +} + +// CharSelectProfile for client version 562 +type CharSelectProfileV562 struct { + Version uint32 `eq2:"int32"` + CharID uint32 `eq2:"int32"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Unknown uint8 `eq2:"int8"` + Race uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Level uint32 `eq2:"int32"` + Zone common.EQ2String16 `eq2:"string16"` + Unknown1 uint32 `eq2:"int32"` + Unknown2 uint32 `eq2:"int32"` + CreatedDate uint32 `eq2:"int32"` + LastPlayed uint32 `eq2:"int32"` + Unknown3 uint32 `eq2:"int32"` + Unknown4 uint32 `eq2:"int32"` + Zonename2 common.EQ2String16 `eq2:"string16"` + Zonedesc common.EQ2String16 `eq2:"string16"` + Unknown5 uint32 `eq2:"int32"` + ServerName common.EQ2String16 `eq2:"string16"` + AccountID uint32 `eq2:"int32"` + Unknown6 []uint8 `eq2:"int8,len=2"` + Unknown7 uint32 `eq2:"int32"` + Unknown8 uint8 `eq2:"int8"` + RaceType uint16 `eq2:"int16"` + SkinColor common.EQ2Color `eq2:"color"` + EyeColor common.EQ2Color `eq2:"color"` + Equip []common.EQ2EquipmentItem `eq2:"equipment,len=25"` + HairType uint16 `eq2:"int16"` + HairTypeColor common.EQ2Color `eq2:"color"` + HairTypeHighlightColor common.EQ2Color `eq2:"color"` + HairFaceType uint16 `eq2:"int16"` + HairFaceColor common.EQ2Color `eq2:"color"` + HairFaceHighlightColor common.EQ2Color `eq2:"color"` + ChestType uint16 `eq2:"int16"` + ShirtColor common.EQ2Color `eq2:"color"` + UnknownChestColor common.EQ2Color `eq2:"color"` + LegsType uint16 `eq2:"int16"` + PantsColor common.EQ2Color `eq2:"color"` + UnknownLegsColor common.EQ2Color `eq2:"color"` + Unknown9 common.EQ2Color `eq2:"color"` + EyeType []int8 `eq2:"sint8,len=3"` + EarType []int8 `eq2:"sint8,len=3"` + EyeBrowType []int8 `eq2:"sint8,len=3"` + CheekType []int8 `eq2:"sint8,len=3"` + LipType []int8 `eq2:"sint8,len=3"` + ChinType []int8 `eq2:"sint8,len=3"` + NoseType []int8 `eq2:"sint8,len=3"` + BodySize int8 `eq2:"sint8"` + Unknown10 []uint8 `eq2:"int8,len=9"` + HairColor1 common.EQ2Color `eq2:"color"` + HairColor2 common.EQ2Color `eq2:"color"` + Unknown11 []uint8 `eq2:"int8,len=13"` + Unknown15 []uint8 `eq2:"int8,len=7"` +} + +// CharSelectProfile for client version 887 +type CharSelectProfileV887 struct { + Version uint32 `eq2:"int32"` + CharID uint32 `eq2:"int32"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Unknown uint8 `eq2:"int8"` + Race uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Level uint32 `eq2:"int32"` + Zone common.EQ2String16 `eq2:"string16"` + Unknown1 uint32 `eq2:"int32"` + Unknown2 uint32 `eq2:"int32"` + CreatedDate uint32 `eq2:"int32"` + LastPlayed uint32 `eq2:"int32"` + Unknown3 uint32 `eq2:"int32"` + Unknown4 uint32 `eq2:"int32"` + Zonename2 common.EQ2String16 `eq2:"string16"` + Zonedesc common.EQ2String16 `eq2:"string16"` + Unknown5 uint32 `eq2:"int32"` + ServerName common.EQ2String16 `eq2:"string16"` + AccountID uint32 `eq2:"int32"` + Unknown6 []uint8 `eq2:"int8,len=2"` + Unknown7 uint32 `eq2:"int32"` + TradeskillClass uint8 `eq2:"int8"` + TradeskillLevel uint32 `eq2:"int32"` + Unknown8 uint8 `eq2:"int8"` + RaceType uint16 `eq2:"int16"` + SkinColor common.EQ2Color `eq2:"color"` + EyeColor common.EQ2Color `eq2:"color"` + Equip []common.EQ2EquipmentItem `eq2:"equipment,len=25"` + HairType uint16 `eq2:"int16"` + HairTypeColor common.EQ2Color `eq2:"color"` + HairTypeHighlightColor common.EQ2Color `eq2:"color"` + HairFaceType uint16 `eq2:"int16"` + HairFaceColor common.EQ2Color `eq2:"color"` + HairFaceHighlightColor common.EQ2Color `eq2:"color"` + WingType uint16 `eq2:"int16"` + WingColor1 common.EQ2Color `eq2:"color"` + WingColor2 common.EQ2Color `eq2:"color"` + ChestType uint16 `eq2:"int16"` + ShirtColor common.EQ2Color `eq2:"color"` + UnknownChestColor common.EQ2Color `eq2:"color"` + LegsType uint16 `eq2:"int16"` + PantsColor common.EQ2Color `eq2:"color"` + UnknownLegsColor common.EQ2Color `eq2:"color"` + Unknown9 common.EQ2Color `eq2:"color"` + EyeType []int8 `eq2:"sint8,len=3"` + EarType []int8 `eq2:"sint8,len=3"` + EyeBrowType []int8 `eq2:"sint8,len=3"` + CheekType []int8 `eq2:"sint8,len=3"` + LipType []int8 `eq2:"sint8,len=3"` + ChinType []int8 `eq2:"sint8,len=3"` + NoseType []int8 `eq2:"sint8,len=3"` + BodySize int8 `eq2:"sint8"` + Unknown10 []uint8 `eq2:"int8,len=9"` + HairColor1 common.EQ2Color `eq2:"color"` + HairColor2 common.EQ2Color `eq2:"color"` + Unknown11 []uint8 `eq2:"int8,len=13"` + SogaRaceType uint16 `eq2:"int16"` + SogaSkinColor common.EQ2Color `eq2:"color"` + SogaEyeColor common.EQ2Color `eq2:"color"` + Unknown12 []uint8 `eq2:"int8,len=3"` + SogaEyeType []int8 `eq2:"sint8,len=3"` + SogaEarType []int8 `eq2:"sint8,len=3"` + SogaEyeBrowType []int8 `eq2:"sint8,len=3"` + SogaCheekType []int8 `eq2:"sint8,len=3"` + SogaLipType []int8 `eq2:"sint8,len=3"` + SogaChinType []int8 `eq2:"sint8,len=3"` + SogaNoseType []int8 `eq2:"sint8,len=3"` + Unknown13 uint16 `eq2:"int16"` + SogaHairColor1 common.EQ2Color `eq2:"color"` + SogaHairColor2 common.EQ2Color `eq2:"color"` + Unknown14 common.EQ2Color `eq2:"color"` + SogaHairType uint16 `eq2:"int16"` + SogaHairTypeColor common.EQ2Color `eq2:"color"` + SogaHairTypeHighlightColor common.EQ2Color `eq2:"color"` + SogaHairFaceType uint16 `eq2:"int16"` + SogaHairFaceColor common.EQ2Color `eq2:"color"` + SogaHairFaceHighlightColor common.EQ2Color `eq2:"color"` + Unknown15 []uint8 `eq2:"int8,len=7"` +} + +// CharSelectProfile for client version 60085 (same as 887) +type CharSelectProfileV60085 struct { + Version uint32 `eq2:"int32"` + CharID uint32 `eq2:"int32"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Unknown uint8 `eq2:"int8"` + Race uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Level uint32 `eq2:"int32"` + Zone common.EQ2String16 `eq2:"string16"` + Unknown1 uint32 `eq2:"int32"` + Unknown2 uint32 `eq2:"int32"` + CreatedDate uint32 `eq2:"int32"` + LastPlayed uint32 `eq2:"int32"` + Unknown3 uint32 `eq2:"int32"` + Unknown4 uint32 `eq2:"int32"` + Zonename2 common.EQ2String16 `eq2:"string16"` + Zonedesc common.EQ2String16 `eq2:"string16"` + Unknown5 uint32 `eq2:"int32"` + ServerName common.EQ2String16 `eq2:"string16"` + AccountID uint32 `eq2:"int32"` + Unknown6 []uint8 `eq2:"int8,len=2"` + Unknown7 uint32 `eq2:"int32"` + TradeskillClass uint8 `eq2:"int8"` + TradeskillLevel uint32 `eq2:"int32"` + Unknown8 uint8 `eq2:"int8"` + RaceType uint16 `eq2:"int16"` + SkinColor common.EQ2Color `eq2:"color"` + EyeColor common.EQ2Color `eq2:"color"` + Equip []common.EQ2EquipmentItem `eq2:"equipment,len=25"` + HairType uint16 `eq2:"int16"` + HairTypeColor common.EQ2Color `eq2:"color"` + HairTypeHighlightColor common.EQ2Color `eq2:"color"` + HairFaceType uint16 `eq2:"int16"` + HairFaceColor common.EQ2Color `eq2:"color"` + HairFaceHighlightColor common.EQ2Color `eq2:"color"` + WingType uint16 `eq2:"int16"` + WingColor1 common.EQ2Color `eq2:"color"` + WingColor2 common.EQ2Color `eq2:"color"` + ChestType uint16 `eq2:"int16"` + ShirtColor common.EQ2Color `eq2:"color"` + UnknownChestColor common.EQ2Color `eq2:"color"` + LegsType uint16 `eq2:"int16"` + PantsColor common.EQ2Color `eq2:"color"` + UnknownLegsColor common.EQ2Color `eq2:"color"` + Unknown9 common.EQ2Color `eq2:"color"` + EyeType []int8 `eq2:"sint8,len=3"` + EarType []int8 `eq2:"sint8,len=3"` + EyeBrowType []int8 `eq2:"sint8,len=3"` + CheekType []int8 `eq2:"sint8,len=3"` + LipType []int8 `eq2:"sint8,len=3"` + ChinType []int8 `eq2:"sint8,len=3"` + NoseType []int8 `eq2:"sint8,len=3"` + BodySize int8 `eq2:"sint8"` + Unknown10 []uint8 `eq2:"int8,len=9"` + HairColor1 common.EQ2Color `eq2:"color"` + HairColor2 common.EQ2Color `eq2:"color"` + Unknown11 []uint8 `eq2:"int8,len=13"` + SogaRaceType uint16 `eq2:"int16"` + SogaSkinColor common.EQ2Color `eq2:"color"` + SogaEyeColor common.EQ2Color `eq2:"color"` + Unknown12 []uint8 `eq2:"int8,len=3"` + SogaEyeType []int8 `eq2:"sint8,len=3"` + SogaEarType []int8 `eq2:"sint8,len=3"` + SogaEyeBrowType []int8 `eq2:"sint8,len=3"` + SogaCheekType []int8 `eq2:"sint8,len=3"` + SogaLipType []int8 `eq2:"sint8,len=3"` + SogaChinType []int8 `eq2:"sint8,len=3"` + SogaNoseType []int8 `eq2:"sint8,len=3"` + Unknown13 uint16 `eq2:"int16"` + SogaHairColor1 common.EQ2Color `eq2:"color"` + SogaHairColor2 common.EQ2Color `eq2:"color"` + Unknown14 common.EQ2Color `eq2:"color"` + SogaHairType uint16 `eq2:"int16"` + SogaHairTypeColor common.EQ2Color `eq2:"color"` + SogaHairTypeHighlightColor common.EQ2Color `eq2:"color"` + SogaHairFaceType uint16 `eq2:"int16"` + SogaHairFaceColor common.EQ2Color `eq2:"color"` + SogaHairFaceHighlightColor common.EQ2Color `eq2:"color"` + Unknown15 []uint8 `eq2:"int8,len=7"` +} diff --git a/internal/packets/ls_structs/CreateCharacter.go b/internal/packets/ls_structs/CreateCharacter.go new file mode 100644 index 0000000..61891af --- /dev/null +++ b/internal/packets/ls_structs/CreateCharacter.go @@ -0,0 +1,767 @@ +package ls_structs + +import "eq2emu/internal/common" + +// CreateCharacter for client version 1 +type CreateCharacterV1 struct { + AccountID uint32 `eq2:"int32"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Deity uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint8 `eq2:"int8"` + StartingZone uint8 `eq2:"int8"` + Unknown1 []uint8 `eq2:"int8,len=2"` + RaceFile common.EQ2String16 `eq2:"string16"` + SkinColor []float32 `eq2:"float,len=3"` + EyeColor []float32 `eq2:"float,len=3"` + HairColor1 []float32 `eq2:"float,len=3"` + HairColor2 []float32 `eq2:"float,len=3"` + HairHighlight []float32 `eq2:"float,len=3"` + Unknown2 []uint8 `eq2:"int8,len=26"` + HairFile common.EQ2String16 `eq2:"string16"` + HairTypeColor []float32 `eq2:"float,len=3"` + HairTypeHighlightColor []float32 `eq2:"float,len=3"` + FaceFile common.EQ2String16 `eq2:"string16"` + HairFaceColor []float32 `eq2:"float,len=3"` + HairFaceHighlightColor []float32 `eq2:"float,len=3"` + ChestFile common.EQ2String16 `eq2:"string16"` + ShirtColor []float32 `eq2:"float,len=3"` + UnknownChestColor []float32 `eq2:"float,len=3"` + LegsFile common.EQ2String16 `eq2:"string16"` + PantsColor []float32 `eq2:"float,len=3"` + UnknownLegsColor []float32 `eq2:"float,len=3"` + Unknown9 []float32 `eq2:"float,len=3"` + Eyes2 []float32 `eq2:"float,len=3"` + Ears []float32 `eq2:"float,len=3"` + EyeBrows []float32 `eq2:"float,len=3"` + Cheeks []float32 `eq2:"float,len=3"` + Lips []float32 `eq2:"float,len=3"` + Chin []float32 `eq2:"float,len=3"` + Nose []float32 `eq2:"float,len=3"` + BodySize float32 `eq2:"float"` + BodyAge float32 `eq2:"float"` +} + +// CreateCharacter for client version 373 +type CreateCharacterV373 struct { + Unknown0 uint32 `eq2:"int32"` + AccountID uint32 `eq2:"int32"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Deity uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint8 `eq2:"int8"` + StartingZone uint8 `eq2:"int8"` + Unknown1 []uint8 `eq2:"int8,len=2"` + RaceFile common.EQ2String16 `eq2:"string16"` + SkinColor []float32 `eq2:"float,len=3"` + EyeColor []float32 `eq2:"float,len=3"` + HairColor1 []float32 `eq2:"float,len=3"` + HairColor2 []float32 `eq2:"float,len=3"` + HairHighlight []float32 `eq2:"float,len=3"` + Unknown2 []uint8 `eq2:"int8,len=26"` + HairFile common.EQ2String16 `eq2:"string16"` + HairTypeColor []float32 `eq2:"float,len=3"` + HairTypeHighlightColor []float32 `eq2:"float,len=3"` + FaceFile common.EQ2String16 `eq2:"string16"` + HairFaceColor []float32 `eq2:"float,len=3"` + HairFaceHighlightColor []float32 `eq2:"float,len=3"` + ChestFile common.EQ2String16 `eq2:"string16"` + ShirtColor []float32 `eq2:"float,len=3"` + UnknownChestColor []float32 `eq2:"float,len=3"` + LegsFile common.EQ2String16 `eq2:"string16"` + PantsColor []float32 `eq2:"float,len=3"` + UnknownLegsColor []float32 `eq2:"float,len=3"` + Unknown9 []float32 `eq2:"float,len=3"` + Eyes2 []float32 `eq2:"float,len=3"` + Ears []float32 `eq2:"float,len=3"` + EyeBrows []float32 `eq2:"float,len=3"` + Cheeks []float32 `eq2:"float,len=3"` + Lips []float32 `eq2:"float,len=3"` + Chin []float32 `eq2:"float,len=3"` + Nose []float32 `eq2:"float,len=3"` + BodySize float32 `eq2:"float"` + BodyAge float32 `eq2:"float"` +} + +// CreateCharacter for client version 546 +type CreateCharacterV546 struct { + Unknown0 uint8 `eq2:"int8"` + Unknown1 uint32 `eq2:"int32"` + AccountID uint32 `eq2:"int32"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Deity uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint8 `eq2:"int8"` + StartingZone uint8 `eq2:"int8"` + CcUnknown0 uint8 `eq2:"int8"` + Version uint8 `eq2:"int8"` + RaceFile common.EQ2String16 `eq2:"string16"` + SkinColor []float32 `eq2:"float,len=3"` + EyeColor []float32 `eq2:"float,len=3"` + HairColor1 []float32 `eq2:"float,len=3"` + HairColor2 []float32 `eq2:"float,len=3"` + HairHighlight []float32 `eq2:"float,len=3"` + Unknown2 []uint8 `eq2:"int8,len=26"` + HairFile common.EQ2String16 `eq2:"string16"` + HairTypeColor []float32 `eq2:"float,len=3"` + HairTypeHighlightColor []float32 `eq2:"float,len=3"` + FaceFile common.EQ2String16 `eq2:"string16"` + HairFaceColor []float32 `eq2:"float,len=3"` + HairFaceHighlightColor []float32 `eq2:"float,len=3"` + ChestFile common.EQ2String16 `eq2:"string16"` + ShirtColor []float32 `eq2:"float,len=3"` + UnknownChestColor []float32 `eq2:"float,len=3"` + LegsFile common.EQ2String16 `eq2:"string16"` + PantsColor []float32 `eq2:"float,len=3"` + UnknownLegsColor []float32 `eq2:"float,len=3"` + Unknown9 []float32 `eq2:"float,len=3"` + Eyes2 []float32 `eq2:"float,len=3"` + Ears []float32 `eq2:"float,len=3"` + EyeBrows []float32 `eq2:"float,len=3"` + Cheeks []float32 `eq2:"float,len=3"` + Lips []float32 `eq2:"float,len=3"` + Chin []float32 `eq2:"float,len=3"` + Nose []float32 `eq2:"float,len=3"` + BodySize float32 `eq2:"float"` + BodyAge float32 `eq2:"float"` +} + +// CreateCharacter for client version 561 +type CreateCharacterV561 struct { + Unknown0 uint8 `eq2:"int8"` + Unknown1 uint32 `eq2:"int32"` + AccountID uint32 `eq2:"int32"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Deity uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint8 `eq2:"int8"` + StartingZone uint8 `eq2:"int8"` + Version uint8 `eq2:"int8"` + RaceFile common.EQ2String16 `eq2:"string16"` + SkinColor []float32 `eq2:"float,len=3"` + EyeColor []float32 `eq2:"float,len=3"` + HairColor1 []float32 `eq2:"float,len=3"` + HairColor2 []float32 `eq2:"float,len=3"` + HairHighlight []float32 `eq2:"float,len=3"` + Unknown2 []uint8 `eq2:"int8,len=26"` + HairFile common.EQ2String16 `eq2:"string16"` + HairTypeColor []float32 `eq2:"float,len=3"` + HairTypeHighlightColor []float32 `eq2:"float,len=3"` + FaceFile common.EQ2String16 `eq2:"string16"` + HairFaceColor []float32 `eq2:"float,len=3"` + HairFaceHighlightColor []float32 `eq2:"float,len=3"` + ChestFile common.EQ2String16 `eq2:"string16"` + ShirtColor []float32 `eq2:"float,len=3"` + UnknownChestColor []float32 `eq2:"float,len=3"` + LegsFile common.EQ2String16 `eq2:"string16"` + PantsColor []float32 `eq2:"float,len=3"` + UnknownLegsColor []float32 `eq2:"float,len=3"` + Unknown9 []float32 `eq2:"float,len=3"` + Eyes2 []float32 `eq2:"float,len=3"` + Ears []float32 `eq2:"float,len=3"` + EyeBrows []float32 `eq2:"float,len=3"` + Cheeks []float32 `eq2:"float,len=3"` + Lips []float32 `eq2:"float,len=3"` + Chin []float32 `eq2:"float,len=3"` + Nose []float32 `eq2:"float,len=3"` + BodySize float32 `eq2:"float"` + BodyAge float32 `eq2:"float"` +} + +// CreateCharacter for client version 562 +type CreateCharacterV562 struct { + Unknown0 uint8 `eq2:"int8"` + Unknown1 uint32 `eq2:"int32"` + AccountID uint32 `eq2:"int32"` + Unknown3 uint8 `eq2:"int8"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Deity uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint8 `eq2:"int8"` + StartingZone uint8 `eq2:"int8"` + Version uint8 `eq2:"int8"` + RaceFile common.EQ2String16 `eq2:"string16"` + SkinColor common.EQ2Color `eq2:"color"` + SkinColor2 common.EQ2Color `eq2:"color"` + EyeColor common.EQ2Color `eq2:"color"` + HairColor1 common.EQ2Color `eq2:"color"` + HairColor2 common.EQ2Color `eq2:"color"` + Unknown8 []uint8 `eq2:"int8,len=26"` + HairFile common.EQ2String16 `eq2:"string16"` + HairTypeColor common.EQ2Color `eq2:"color"` + HairTypeHighlightColor common.EQ2Color `eq2:"color"` + FaceFile common.EQ2String16 `eq2:"string16"` + HairFaceColor common.EQ2Color `eq2:"color"` + HairFaceHighlightColor common.EQ2Color `eq2:"color"` + WingFile common.EQ2String16 `eq2:"string16"` + WingColor1 common.EQ2Color `eq2:"color"` + WingColor2 common.EQ2Color `eq2:"color"` + ChestFile common.EQ2String16 `eq2:"string16"` + ShirtColor common.EQ2Color `eq2:"color"` + UnknownChestColor common.EQ2Color `eq2:"color"` + LegsFile common.EQ2String16 `eq2:"string16"` + PantsColor common.EQ2Color `eq2:"color"` + UnknownLegsColor common.EQ2Color `eq2:"color"` + Unknown9 common.EQ2Color `eq2:"color"` + Eyes2 []float32 `eq2:"float,len=3"` + Ears []float32 `eq2:"float,len=3"` + EyeBrows []float32 `eq2:"float,len=3"` + Cheeks []float32 `eq2:"float,len=3"` + Lips []float32 `eq2:"float,len=3"` + Chin []float32 `eq2:"float,len=3"` + Nose []float32 `eq2:"float,len=3"` + BodySize float32 `eq2:"float"` + BodyAge float32 `eq2:"float"` + SogaVersion uint8 `eq2:"int8"` + SogaRaceFile common.EQ2String16 `eq2:"string16"` + SogaSkinColor common.EQ2Color `eq2:"color"` + SogaEyeColor common.EQ2Color `eq2:"color"` + SogaHairColor1 common.EQ2Color `eq2:"color"` + SogaHairColor2 common.EQ2Color `eq2:"color"` + SogaHairHighlight common.EQ2Color `eq2:"color"` + SogaUnknown11 []uint8 `eq2:"int8,len=26"` + SogaHairFile common.EQ2String16 `eq2:"string16"` + SogaHairTypeColor common.EQ2Color `eq2:"color"` + SogaHairTypeHighlightColor common.EQ2Color `eq2:"color"` + SogaFaceFile common.EQ2String16 `eq2:"string16"` + SogaHairFaceColor common.EQ2Color `eq2:"color"` + SogaHairFaceHighlightColor common.EQ2Color `eq2:"color"` + SogaWingFile common.EQ2String16 `eq2:"string16"` + SogaWingColor1 common.EQ2Color `eq2:"color"` + SogaWingColor2 common.EQ2Color `eq2:"color"` + SogaChestFile common.EQ2String16 `eq2:"string16"` + SogaShirtColor common.EQ2Color `eq2:"color"` + SogaUnknownChestColor common.EQ2Color `eq2:"color"` + SogaLegsFile common.EQ2String16 `eq2:"string16"` + SogaPantsColor common.EQ2Color `eq2:"color"` + SogaUnknownLegsColor common.EQ2Color `eq2:"color"` + SogaUnknown12 common.EQ2Color `eq2:"color"` + SogaEyes2 []float32 `eq2:"float,len=3"` + SogaEars []float32 `eq2:"float,len=3"` + SogaEyeBrows []float32 `eq2:"float,len=3"` + SogaCheeks []float32 `eq2:"float,len=3"` + SogaLips []float32 `eq2:"float,len=3"` + SogaChin []float32 `eq2:"float,len=3"` + SogaNose []float32 `eq2:"float,len=3"` + SogaBodySize float32 `eq2:"float"` + SogaBodyAge float32 `eq2:"float"` +} + +// CreateCharacter for client version 869 +type CreateCharacterV869 struct { + Unknown0 uint8 `eq2:"int8"` + Unknown1 uint32 `eq2:"int32"` + AccountID uint32 `eq2:"int32"` + Unknown3 uint8 `eq2:"int8"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Deity uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint8 `eq2:"int8"` + StartingZone uint8 `eq2:"int8"` + Version uint8 `eq2:"int8"` + RaceFile common.EQ2String16 `eq2:"string16"` + SkinColor common.EQ2Color `eq2:"color"` + SkinColor2 common.EQ2Color `eq2:"color"` + EyeColor common.EQ2Color `eq2:"color"` + HairColor1 common.EQ2Color `eq2:"color"` + HairColor2 common.EQ2Color `eq2:"color"` + HairHighlight common.EQ2Color `eq2:"color"` + Unknown8 []uint8 `eq2:"int8,len=26"` + HairFile common.EQ2String16 `eq2:"string16"` + HairTypeColor common.EQ2Color `eq2:"color"` + HairTypeHighlightColor common.EQ2Color `eq2:"color"` + FaceFile common.EQ2String16 `eq2:"string16"` + HairFaceColor common.EQ2Color `eq2:"color"` + HairFaceHighlightColor common.EQ2Color `eq2:"color"` + WingFile common.EQ2String16 `eq2:"string16"` + WingColor1 common.EQ2Color `eq2:"color"` + WingColor2 common.EQ2Color `eq2:"color"` + ChestFile common.EQ2String16 `eq2:"string16"` + ShirtColor common.EQ2Color `eq2:"color"` + UnknownChestColor common.EQ2Color `eq2:"color"` + LegsFile common.EQ2String16 `eq2:"string16"` + PantsColor common.EQ2Color `eq2:"color"` + UnknownLegsColor common.EQ2Color `eq2:"color"` + Unknown9 common.EQ2Color `eq2:"color"` + Eyes2 []float32 `eq2:"float,len=3"` + Ears []float32 `eq2:"float,len=3"` + EyeBrows []float32 `eq2:"float,len=3"` + Cheeks []float32 `eq2:"float,len=3"` + Lips []float32 `eq2:"float,len=3"` + Chin []float32 `eq2:"float,len=3"` + Nose []float32 `eq2:"float,len=3"` + BodySize float32 `eq2:"float"` + BodyAge float32 `eq2:"float"` + SogaVersion uint8 `eq2:"int8"` + SogaRaceFile common.EQ2String16 `eq2:"string16"` + SogaSkinColor common.EQ2Color `eq2:"color"` + SogaEyeColor common.EQ2Color `eq2:"color"` + SogaHairColor1 common.EQ2Color `eq2:"color"` + SogaHairColor2 common.EQ2Color `eq2:"color"` + SogaHairHighlight common.EQ2Color `eq2:"color"` + SogaUnknownColor1 common.EQ2Color `eq2:"color"` + SogaUnknown11 []uint8 `eq2:"int8,len=26"` + SogaHairFile common.EQ2String16 `eq2:"string16"` + SogaHairTypeColor common.EQ2Color `eq2:"color"` + SogaHairTypeHighlightColor common.EQ2Color `eq2:"color"` + SogaFaceFile common.EQ2String16 `eq2:"string16"` + SogaHairFaceColor common.EQ2Color `eq2:"color"` + SogaHairFaceHighlightColor common.EQ2Color `eq2:"color"` + SogaWingFile common.EQ2String16 `eq2:"string16"` + SogaWingColor1 common.EQ2Color `eq2:"color"` + SogaWingColor2 common.EQ2Color `eq2:"color"` + SogaChestFile common.EQ2String16 `eq2:"string16"` + SogaShirtColor common.EQ2Color `eq2:"color"` + SogaUnknownChestColor common.EQ2Color `eq2:"color"` + SogaLegsFile common.EQ2String16 `eq2:"string16"` + SogaPantsColor common.EQ2Color `eq2:"color"` + SogaUnknownLegsColor common.EQ2Color `eq2:"color"` + SogaUnknown12 common.EQ2Color `eq2:"color"` + SogaEyes2 []float32 `eq2:"float,len=3"` + SogaEars []float32 `eq2:"float,len=3"` + SogaEyeBrows []float32 `eq2:"float,len=3"` + SogaCheeks []float32 `eq2:"float,len=3"` + SogaLips []float32 `eq2:"float,len=3"` + SogaChin []float32 `eq2:"float,len=3"` + SogaNose []float32 `eq2:"float,len=3"` + SogaBodySize float32 `eq2:"float"` + SogaBodyAge float32 `eq2:"float"` +} + +// CreateCharacter for client version 1096 (same as 869 but without SogaUnknownColor1) +type CreateCharacterV1096 struct { + Unknown0 uint8 `eq2:"int8"` + Unknown1 uint32 `eq2:"int32"` + AccountID uint32 `eq2:"int32"` + Unknown3 uint8 `eq2:"int8"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Deity uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint8 `eq2:"int8"` + StartingZone uint8 `eq2:"int8"` + Version uint8 `eq2:"int8"` + RaceFile common.EQ2String16 `eq2:"string16"` + SkinColor common.EQ2Color `eq2:"color"` + SkinColor2 common.EQ2Color `eq2:"color"` + EyeColor common.EQ2Color `eq2:"color"` + HairColor1 common.EQ2Color `eq2:"color"` + HairColor2 common.EQ2Color `eq2:"color"` + HairHighlight common.EQ2Color `eq2:"color"` + Unknown8 []uint8 `eq2:"int8,len=26"` + HairFile common.EQ2String16 `eq2:"string16"` + HairTypeColor common.EQ2Color `eq2:"color"` + HairTypeHighlightColor common.EQ2Color `eq2:"color"` + FaceFile common.EQ2String16 `eq2:"string16"` + HairFaceColor common.EQ2Color `eq2:"color"` + HairFaceHighlightColor common.EQ2Color `eq2:"color"` + WingFile common.EQ2String16 `eq2:"string16"` + WingColor1 common.EQ2Color `eq2:"color"` + WingColor2 common.EQ2Color `eq2:"color"` + ChestFile common.EQ2String16 `eq2:"string16"` + ShirtColor common.EQ2Color `eq2:"color"` + UnknownChestColor common.EQ2Color `eq2:"color"` + LegsFile common.EQ2String16 `eq2:"string16"` + PantsColor common.EQ2Color `eq2:"color"` + UnknownLegsColor common.EQ2Color `eq2:"color"` + Unknown9 common.EQ2Color `eq2:"color"` + Eyes2 []float32 `eq2:"float,len=3"` + Ears []float32 `eq2:"float,len=3"` + EyeBrows []float32 `eq2:"float,len=3"` + Cheeks []float32 `eq2:"float,len=3"` + Lips []float32 `eq2:"float,len=3"` + Chin []float32 `eq2:"float,len=3"` + Nose []float32 `eq2:"float,len=3"` + BodySize float32 `eq2:"float"` + BodyAge float32 `eq2:"float"` + SogaVersion uint8 `eq2:"int8"` + SogaRaceFile common.EQ2String16 `eq2:"string16"` + SogaSkinColor common.EQ2Color `eq2:"color"` + SogaEyeColor common.EQ2Color `eq2:"color"` + SogaHairColor1 common.EQ2Color `eq2:"color"` + SogaHairColor2 common.EQ2Color `eq2:"color"` + SogaHairHighlight common.EQ2Color `eq2:"color"` + SogaUnknownColor common.EQ2Color `eq2:"color"` + SogaUnknown11 []uint8 `eq2:"int8,len=26"` + SogaHairFile common.EQ2String16 `eq2:"string16"` + SogaHairTypeColor common.EQ2Color `eq2:"color"` + SogaHairTypeHighlightColor common.EQ2Color `eq2:"color"` + SogaFaceFile common.EQ2String16 `eq2:"string16"` + SogaHairFaceColor common.EQ2Color `eq2:"color"` + SogaHairFaceHighlightColor common.EQ2Color `eq2:"color"` + SogaWingFile common.EQ2String16 `eq2:"string16"` + SogaWingColor1 common.EQ2Color `eq2:"color"` + SogaWingColor2 common.EQ2Color `eq2:"color"` + SogaChestFile common.EQ2String16 `eq2:"string16"` + SogaShirtColor common.EQ2Color `eq2:"color"` + SogaUnknownChestColor common.EQ2Color `eq2:"color"` + SogaLegsFile common.EQ2String16 `eq2:"string16"` + SogaPantsColor common.EQ2Color `eq2:"color"` + SogaUnknownLegsColor common.EQ2Color `eq2:"color"` + SogaUnknown12 common.EQ2Color `eq2:"color"` + SogaEyes2 []float32 `eq2:"float,len=3"` + SogaEars []float32 `eq2:"float,len=3"` + SogaEyeBrows []float32 `eq2:"float,len=3"` + SogaCheeks []float32 `eq2:"float,len=3"` + SogaLips []float32 `eq2:"float,len=3"` + SogaChin []float32 `eq2:"float,len=3"` + SogaNose []float32 `eq2:"float,len=3"` + SogaBodySize float32 `eq2:"float"` + SogaBodyAge float32 `eq2:"float"` +} + +// CreateCharacter for client version 57080 +type CreateCharacterV57080 struct { + Unknown0 uint8 `eq2:"int8"` + Unknown1 uint32 `eq2:"int32"` + AccountID uint32 `eq2:"int32"` + Unknown3 uint8 `eq2:"int8"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Deity uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint8 `eq2:"int8"` + StartingZone uint8 `eq2:"int8"` + Version uint8 `eq2:"int8"` + Unknown10 uint16 `eq2:"int16"` + RaceFile common.EQ2String16 `eq2:"string16"` + SkinColor common.EQ2Color `eq2:"color"` + EyeColor common.EQ2Color `eq2:"color"` + UnknownSkinColor2 common.EQ2Color `eq2:"color"` + HairColor1 common.EQ2Color `eq2:"color"` + HairColor2 common.EQ2Color `eq2:"color"` + HairHighlight common.EQ2Color `eq2:"color"` + Unknown8 []uint8 `eq2:"int8,len=26"` + HairFile common.EQ2String16 `eq2:"string16"` + HairTypeColor common.EQ2Color `eq2:"color"` + HairTypeHighlightColor common.EQ2Color `eq2:"color"` + FaceFile common.EQ2String16 `eq2:"string16"` + HairFaceColor common.EQ2Color `eq2:"color"` + HairFaceHighlightColor common.EQ2Color `eq2:"color"` + WingFile common.EQ2String16 `eq2:"string16"` + WingColor1 common.EQ2Color `eq2:"color"` + WingColor2 common.EQ2Color `eq2:"color"` + ChestFile common.EQ2String16 `eq2:"string16"` + ShirtColor common.EQ2Color `eq2:"color"` + UnknownChestColor common.EQ2Color `eq2:"color"` + LegsFile common.EQ2String16 `eq2:"string16"` + PantsColor common.EQ2Color `eq2:"color"` + UnknownLegsColor common.EQ2Color `eq2:"color"` + Unknown9 common.EQ2Color `eq2:"color"` + Eyes2 []float32 `eq2:"float,len=3"` + Ears []float32 `eq2:"float,len=3"` + EyeBrows []float32 `eq2:"float,len=3"` + Cheeks []float32 `eq2:"float,len=3"` + Lips []float32 `eq2:"float,len=3"` + Chin []float32 `eq2:"float,len=3"` + Nose []float32 `eq2:"float,len=3"` + BodySize float32 `eq2:"float"` + BodyAge float32 `eq2:"float"` + SogaVersion uint8 `eq2:"int8"` + SogaRaceFile common.EQ2String16 `eq2:"string16"` + SogaSkinColor common.EQ2Color `eq2:"color"` + SogaEyeColor common.EQ2Color `eq2:"color"` + SogaHairColor1 common.EQ2Color `eq2:"color"` + SogaHairColor2 common.EQ2Color `eq2:"color"` + SogaHairHighlight common.EQ2Color `eq2:"color"` + SogaUnknownColor common.EQ2Color `eq2:"color"` + SogaUnknown11 []uint8 `eq2:"int8,len=26"` + SogaHairFile common.EQ2String16 `eq2:"string16"` + SogaHairTypeColor common.EQ2Color `eq2:"color"` + SogaHairTypeHighlightColor common.EQ2Color `eq2:"color"` + SogaFaceFile common.EQ2String16 `eq2:"string16"` + SogaHairFaceColor common.EQ2Color `eq2:"color"` + SogaHairFaceHighlightColor common.EQ2Color `eq2:"color"` + SogaWingFile common.EQ2String16 `eq2:"string16"` + SogaWingColor1 common.EQ2Color `eq2:"color"` + SogaWingColor2 common.EQ2Color `eq2:"color"` + SogaChestFile common.EQ2String16 `eq2:"string16"` + SogaShirtColor common.EQ2Color `eq2:"color"` + SogaUnknownChestColor common.EQ2Color `eq2:"color"` + SogaLegsFile common.EQ2String16 `eq2:"string16"` + SogaPantsColor common.EQ2Color `eq2:"color"` + SogaUnknownLegsColor common.EQ2Color `eq2:"color"` + SogaUnknown12 common.EQ2Color `eq2:"color"` + SogaEyes2 []float32 `eq2:"float,len=3"` + SogaEars []float32 `eq2:"float,len=3"` + SogaEyeBrows []float32 `eq2:"float,len=3"` + SogaCheeks []float32 `eq2:"float,len=3"` + SogaLips []float32 `eq2:"float,len=3"` + SogaChin []float32 `eq2:"float,len=3"` + SogaNose []float32 `eq2:"float,len=3"` + SogaBodySize float32 `eq2:"float"` + SogaBodyAge float32 `eq2:"float"` +} + +// CreateCharacter for client version 60085 (same as 57080) +type CreateCharacterV60085 struct { + Unknown0 uint8 `eq2:"int8"` + Unknown1 uint32 `eq2:"int32"` + AccountID uint32 `eq2:"int32"` + Unknown3 uint8 `eq2:"int8"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Deity uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint8 `eq2:"int8"` + StartingZone uint8 `eq2:"int8"` + Version uint8 `eq2:"int8"` + Unknown10 uint16 `eq2:"int16"` + RaceFile common.EQ2String16 `eq2:"string16"` + SkinColor common.EQ2Color `eq2:"color"` + EyeColor common.EQ2Color `eq2:"color"` + UnknownSkinColor2 common.EQ2Color `eq2:"color"` + HairColor1 common.EQ2Color `eq2:"color"` + HairColor2 common.EQ2Color `eq2:"color"` + HairHighlight common.EQ2Color `eq2:"color"` + Unknown8 []uint8 `eq2:"int8,len=26"` + HairFile common.EQ2String16 `eq2:"string16"` + HairTypeColor common.EQ2Color `eq2:"color"` + HairTypeHighlightColor common.EQ2Color `eq2:"color"` + FaceFile common.EQ2String16 `eq2:"string16"` + HairFaceColor common.EQ2Color `eq2:"color"` + HairFaceHighlightColor common.EQ2Color `eq2:"color"` + WingFile common.EQ2String16 `eq2:"string16"` + WingColor1 common.EQ2Color `eq2:"color"` + WingColor2 common.EQ2Color `eq2:"color"` + ChestFile common.EQ2String16 `eq2:"string16"` + ShirtColor common.EQ2Color `eq2:"color"` + UnknownChestColor common.EQ2Color `eq2:"color"` + LegsFile common.EQ2String16 `eq2:"string16"` + PantsColor common.EQ2Color `eq2:"color"` + UnknownLegsColor common.EQ2Color `eq2:"color"` + Unknown9 common.EQ2Color `eq2:"color"` + Eyes2 []float32 `eq2:"float,len=3"` + Ears []float32 `eq2:"float,len=3"` + EyeBrows []float32 `eq2:"float,len=3"` + Cheeks []float32 `eq2:"float,len=3"` + Lips []float32 `eq2:"float,len=3"` + Chin []float32 `eq2:"float,len=3"` + Nose []float32 `eq2:"float,len=3"` + BodySize float32 `eq2:"float"` + BodyAge float32 `eq2:"float"` + SogaVersion uint8 `eq2:"int8"` + SogaRaceFile common.EQ2String16 `eq2:"string16"` + SogaSkinColor common.EQ2Color `eq2:"color"` + SogaEyeColor common.EQ2Color `eq2:"color"` + SogaHairColor1 common.EQ2Color `eq2:"color"` + SogaHairColor2 common.EQ2Color `eq2:"color"` + SogaHairHighlight common.EQ2Color `eq2:"color"` + SogaUnknownColor common.EQ2Color `eq2:"color"` + SogaUnknown11 []uint8 `eq2:"int8,len=26"` + SogaHairFile common.EQ2String16 `eq2:"string16"` + SogaHairTypeColor common.EQ2Color `eq2:"color"` + SogaHairTypeHighlightColor common.EQ2Color `eq2:"color"` + SogaFaceFile common.EQ2String16 `eq2:"string16"` + SogaHairFaceColor common.EQ2Color `eq2:"color"` + SogaHairFaceHighlightColor common.EQ2Color `eq2:"color"` + SogaWingFile common.EQ2String16 `eq2:"string16"` + SogaWingColor1 common.EQ2Color `eq2:"color"` + SogaWingColor2 common.EQ2Color `eq2:"color"` + SogaChestFile common.EQ2String16 `eq2:"string16"` + SogaShirtColor common.EQ2Color `eq2:"color"` + SogaUnknownChestColor common.EQ2Color `eq2:"color"` + SogaLegsFile common.EQ2String16 `eq2:"string16"` + SogaPantsColor common.EQ2Color `eq2:"color"` + SogaUnknownLegsColor common.EQ2Color `eq2:"color"` + SogaUnknown12 common.EQ2Color `eq2:"color"` + SogaEyes2 []float32 `eq2:"float,len=3"` + SogaEars []float32 `eq2:"float,len=3"` + SogaEyeBrows []float32 `eq2:"float,len=3"` + SogaCheeks []float32 `eq2:"float,len=3"` + SogaLips []float32 `eq2:"float,len=3"` + SogaChin []float32 `eq2:"float,len=3"` + SogaNose []float32 `eq2:"float,len=3"` + SogaBodySize float32 `eq2:"float"` + SogaBodyAge float32 `eq2:"float"` +} + +// CreateCharacter for client version 64659 +type CreateCharacterV64659 struct { + Unknown0 uint8 `eq2:"int8"` + Unknown1 uint32 `eq2:"int32"` + AccountID uint32 `eq2:"int32"` + Unknown3 uint8 `eq2:"int8"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Deity uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint8 `eq2:"int8"` + StartingZone uint32 `eq2:"int32"` + Version uint8 `eq2:"int8"` + RaceFile common.EQ2String16 `eq2:"string16"` + SkinColor common.EQ2Color `eq2:"color"` + SkinColor2 common.EQ2Color `eq2:"color"` + EyeColor common.EQ2Color `eq2:"color"` + HairColor1 common.EQ2Color `eq2:"color"` + HairColor2 common.EQ2Color `eq2:"color"` + Unknown8 []uint8 `eq2:"int8,len=38"` + HairFile common.EQ2String16 `eq2:"string16"` + HairTypeColor common.EQ2Color `eq2:"color"` + HairTypeHighlightColor common.EQ2Color `eq2:"color"` + FaceFile common.EQ2String16 `eq2:"string16"` + HairFaceColor common.EQ2Color `eq2:"color"` + HairFaceHighlightColor common.EQ2Color `eq2:"color"` + WingFile common.EQ2String16 `eq2:"string16"` + WingColor1 common.EQ2Color `eq2:"color"` + WingColor2 common.EQ2Color `eq2:"color"` + ChestFile common.EQ2String16 `eq2:"string16"` + ShirtColor common.EQ2Color `eq2:"color"` + UnknownChestColor common.EQ2Color `eq2:"color"` + LegsFile common.EQ2String16 `eq2:"string16"` + PantsColor common.EQ2Color `eq2:"color"` + UnknownLegsColor common.EQ2Color `eq2:"color"` + Unknown9 common.EQ2Color `eq2:"color"` + Eyes2 []float32 `eq2:"float,len=3"` + Ears []float32 `eq2:"float,len=3"` + EyeBrows []float32 `eq2:"float,len=3"` + Cheeks []float32 `eq2:"float,len=3"` + Lips []float32 `eq2:"float,len=3"` + Chin []float32 `eq2:"float,len=3"` + Nose []float32 `eq2:"float,len=3"` + BodySize float32 `eq2:"float"` + BodyAge float32 `eq2:"float"` + SogaVersion uint8 `eq2:"int8"` + SogaRaceFile common.EQ2String16 `eq2:"string16"` + SogaSkinColor common.EQ2Color `eq2:"color"` + SogaEyeColor common.EQ2Color `eq2:"color"` + SogaHairColor1 common.EQ2Color `eq2:"color"` + SogaHairColor2 common.EQ2Color `eq2:"color"` + SogaHairHighlight common.EQ2Color `eq2:"color"` + SogaUnknown11 []uint8 `eq2:"int8,len=38"` + SogaHairFile common.EQ2String16 `eq2:"string16"` + SogaHairTypeColor common.EQ2Color `eq2:"color"` + SogaHairTypeHighlightColor common.EQ2Color `eq2:"color"` + SogaFaceFile common.EQ2String16 `eq2:"string16"` + SogaHairFaceColor common.EQ2Color `eq2:"color"` + SogaHairFaceHighlightColor common.EQ2Color `eq2:"color"` + SogaWingFile common.EQ2String16 `eq2:"string16"` + SogaWingColor1 common.EQ2Color `eq2:"color"` + SogaWingColor2 common.EQ2Color `eq2:"color"` + SogaChestFile common.EQ2String16 `eq2:"string16"` + SogaShirtColor common.EQ2Color `eq2:"color"` + SogaUnknownChestColor common.EQ2Color `eq2:"color"` + SogaLegsFile common.EQ2String16 `eq2:"string16"` + SogaPantsColor common.EQ2Color `eq2:"color"` + SogaUnknownLegsColor common.EQ2Color `eq2:"color"` + SogaUnknown12 common.EQ2Color `eq2:"color"` + SogaEyes2 []float32 `eq2:"float,len=3"` + SogaEars []float32 `eq2:"float,len=3"` + SogaEyeBrows []float32 `eq2:"float,len=3"` + SogaCheeks []float32 `eq2:"float,len=3"` + SogaLips []float32 `eq2:"float,len=3"` + SogaChin []float32 `eq2:"float,len=3"` + SogaNose []float32 `eq2:"float,len=3"` + SogaBodySize float32 `eq2:"float"` + SogaBodyAge float32 `eq2:"float"` + Unknown13 []uint8 `eq2:"int8,len=2"` +} + +// CreateCharacter for client version 65534 (same as 64659) +type CreateCharacterV65534 struct { + Unknown0 uint8 `eq2:"int8"` + Unknown1 uint32 `eq2:"int32"` + AccountID uint32 `eq2:"int32"` + Unknown3 uint8 `eq2:"int8"` + ServerID uint32 `eq2:"int32"` + Name common.EQ2String16 `eq2:"string16"` + Race uint8 `eq2:"int8"` + Gender uint8 `eq2:"int8"` + Deity uint8 `eq2:"int8"` + Class uint8 `eq2:"int8"` + Level uint8 `eq2:"int8"` + StartingZone uint32 `eq2:"int32"` + Version uint8 `eq2:"int8"` + RaceFile common.EQ2String16 `eq2:"string16"` + SkinColor common.EQ2Color `eq2:"color"` + SkinColor2 common.EQ2Color `eq2:"color"` + EyeColor common.EQ2Color `eq2:"color"` + HairColor1 common.EQ2Color `eq2:"color"` + HairColor2 common.EQ2Color `eq2:"color"` + Unknown8 []uint8 `eq2:"int8,len=38"` + HairFile common.EQ2String16 `eq2:"string16"` + HairTypeColor common.EQ2Color `eq2:"color"` + HairTypeHighlightColor common.EQ2Color `eq2:"color"` + FaceFile common.EQ2String16 `eq2:"string16"` + HairFaceColor common.EQ2Color `eq2:"color"` + HairFaceHighlightColor common.EQ2Color `eq2:"color"` + WingFile common.EQ2String16 `eq2:"string16"` + WingColor1 common.EQ2Color `eq2:"color"` + WingColor2 common.EQ2Color `eq2:"color"` + ChestFile common.EQ2String16 `eq2:"string16"` + ShirtColor common.EQ2Color `eq2:"color"` + UnknownChestColor common.EQ2Color `eq2:"color"` + LegsFile common.EQ2String16 `eq2:"string16"` + PantsColor common.EQ2Color `eq2:"color"` + UnknownLegsColor common.EQ2Color `eq2:"color"` + Unknown9 common.EQ2Color `eq2:"color"` + Eyes2 []float32 `eq2:"float,len=3"` + Ears []float32 `eq2:"float,len=3"` + EyeBrows []float32 `eq2:"float,len=3"` + Cheeks []float32 `eq2:"float,len=3"` + Lips []float32 `eq2:"float,len=3"` + Chin []float32 `eq2:"float,len=3"` + Nose []float32 `eq2:"float,len=3"` + BodySize float32 `eq2:"float"` + BodyAge float32 `eq2:"float"` + SogaVersion uint8 `eq2:"int8"` + SogaRaceFile common.EQ2String16 `eq2:"string16"` + SogaSkinColor common.EQ2Color `eq2:"color"` + SogaEyeColor common.EQ2Color `eq2:"color"` + SogaHairColor1 common.EQ2Color `eq2:"color"` + SogaHairColor2 common.EQ2Color `eq2:"color"` + SogaHairHighlight common.EQ2Color `eq2:"color"` + SogaUnknown11 []uint8 `eq2:"int8,len=38"` + SogaHairFile common.EQ2String16 `eq2:"string16"` + SogaHairTypeColor common.EQ2Color `eq2:"color"` + SogaHairTypeHighlightColor common.EQ2Color `eq2:"color"` + SogaFaceFile common.EQ2String16 `eq2:"string16"` + SogaHairFaceColor common.EQ2Color `eq2:"color"` + SogaHairFaceHighlightColor common.EQ2Color `eq2:"color"` + SogaWingFile common.EQ2String16 `eq2:"string16"` + SogaWingColor1 common.EQ2Color `eq2:"color"` + SogaWingColor2 common.EQ2Color `eq2:"color"` + SogaChestFile common.EQ2String16 `eq2:"string16"` + SogaShirtColor common.EQ2Color `eq2:"color"` + SogaUnknownChestColor common.EQ2Color `eq2:"color"` + SogaLegsFile common.EQ2String16 `eq2:"string16"` + SogaPantsColor common.EQ2Color `eq2:"color"` + SogaUnknownLegsColor common.EQ2Color `eq2:"color"` + SogaUnknown12 common.EQ2Color `eq2:"color"` + SogaEyes2 []float32 `eq2:"float,len=3"` + SogaEars []float32 `eq2:"float,len=3"` + SogaEyeBrows []float32 `eq2:"float,len=3"` + SogaCheeks []float32 `eq2:"float,len=3"` + SogaLips []float32 `eq2:"float,len=3"` + SogaChin []float32 `eq2:"float,len=3"` + SogaNose []float32 `eq2:"float,len=3"` + SogaBodySize float32 `eq2:"float"` + SogaBodyAge float32 `eq2:"float"` + Unknown13 []uint8 `eq2:"int8,len=2"` +} diff --git a/internal/packets/ls_structs/common.go b/internal/packets/ls_structs/common.go index 7f9f715..e0a6bd1 100644 --- a/internal/packets/ls_structs/common.go +++ b/internal/packets/ls_structs/common.go @@ -85,4 +85,28 @@ func RegisterLoginServerStructs(registry *parser.VersionRegistry) { registry.RegisterStruct("LoginByNumRequest", "1", reflect.TypeOf(LoginByNumRequestV1{})) registry.RegisterStruct("LoginByNumRequest", "562", reflect.TypeOf(LoginByNumRequestV562{})) registry.RegisterStruct("LoginByNumRequest", "1208", reflect.TypeOf(LoginByNumRequestV1208{})) + + // BadLanguageFilter + registry.RegisterStruct("BadLanguageFilter", "1", reflect.TypeOf(BadLanguageFilter{})) + + // CharSelectProfile + registry.RegisterStruct("CharSelectProfile", "1", reflect.TypeOf(CharSelectProfileV1{})) + registry.RegisterStruct("CharSelectProfile", "373", reflect.TypeOf(CharSelectProfileV373{})) + registry.RegisterStruct("CharSelectProfile", "546", reflect.TypeOf(CharSelectProfileV546{})) + registry.RegisterStruct("CharSelectProfile", "562", reflect.TypeOf(CharSelectProfileV562{})) + registry.RegisterStruct("CharSelectProfile", "887", reflect.TypeOf(CharSelectProfileV887{})) + registry.RegisterStruct("CharSelectProfile", "60085", reflect.TypeOf(CharSelectProfileV60085{})) + + // CreateCharacter + registry.RegisterStruct("CreateCharacter", "1", reflect.TypeOf(CreateCharacterV1{})) + registry.RegisterStruct("CreateCharacter", "373", reflect.TypeOf(CreateCharacterV373{})) + registry.RegisterStruct("CreateCharacter", "546", reflect.TypeOf(CreateCharacterV546{})) + registry.RegisterStruct("CreateCharacter", "561", reflect.TypeOf(CreateCharacterV561{})) + registry.RegisterStruct("CreateCharacter", "562", reflect.TypeOf(CreateCharacterV562{})) + registry.RegisterStruct("CreateCharacter", "869", reflect.TypeOf(CreateCharacterV869{})) + registry.RegisterStruct("CreateCharacter", "1096", reflect.TypeOf(CreateCharacterV1096{})) + registry.RegisterStruct("CreateCharacter", "57080", reflect.TypeOf(CreateCharacterV57080{})) + registry.RegisterStruct("CreateCharacter", "60085", reflect.TypeOf(CreateCharacterV60085{})) + registry.RegisterStruct("CreateCharacter", "64659", reflect.TypeOf(CreateCharacterV64659{})) + registry.RegisterStruct("CreateCharacter", "65534", reflect.TypeOf(CreateCharacterV65534{})) }