@@ -42,10 +42,10 @@ public class CyclopediaCharacterInfo : ServerPacket
4242 public List < ( uint Timestamp , string Description , byte Status ) > RecentPvpKills { get ; } =
4343 new List < ( uint Timestamp , string Description , byte Status ) > ( ) ;
4444
45- public List < ( ushort Id , string Name , bool IsPremium , uint Unknown ) > Mounts { get ; } =
46- new List < ( ushort Id , string Name , bool IsPremium , uint Unknown ) > ( ) ;
47- public List < ( ushort Id , string Name , byte Addons , bool IsPremium , uint Unknown ) > Outfits { get ; } =
48- new List < ( ushort Id , string Name , byte Addons , bool IsPremium , uint Unknown ) > ( ) ;
45+ public List < ( ushort Id , string Name , byte Category , uint Unknown ) > Mounts { get ; } =
46+ new List < ( ushort Id , string Name , byte Category , uint Unknown ) > ( ) ;
47+ public List < ( ushort Id , string Name , byte Addons , byte Category , uint Unknown ) > Outfits { get ; } =
48+ new List < ( ushort Id , string Name , byte Addons , byte Category , uint Unknown ) > ( ) ;
4949
5050 public List < ( byte Type , ushort Level , ushort Base , ushort Loyalty , ushort Progress ) > Skills { get ; } =
5151 new List < ( byte Type , ushort Level , ushort Base , ushort Loyalty , ushort Progress ) > ( ) ;
@@ -61,18 +61,17 @@ public class CyclopediaCharacterInfo : ServerPacket
6161
6262 public string LoyaltyTitle { get ; set ; }
6363 public string PlayerName { get ; set ; }
64+ public String Title { get ; set ; }
6465 public string Vocation { get ; set ; }
6566
6667 public ulong Experience { get ; set ; }
67- public ulong Unknown4 { get ; set ; }
6868
6969 public uint CapacityBonus { get ; set ; }
7070 public uint CapacityCurrent { get ; set ; }
7171 public uint CapacityMax { get ; set ; }
7272 public uint RemainingDailyRewardXpBoostTime { get ; set ; }
7373 public uint RemainingStoreXpBoostTime { get ; set ; }
74- public uint Stamina { get ; set ; }
75- public uint Unknown3 { get ; set ; }
74+ public uint TournamentFactor { get ; set ; }
7675
7776 public ushort AchievementPoints { get ; set ; }
7877 public ushort Armor { get ; set ; }
@@ -109,7 +108,9 @@ public class CyclopediaCharacterInfo : ServerPacket
109108 public ushort SecretAchievementsMax { get ; set ; }
110109 public ushort SpeedBase { get ; set ; }
111110 public ushort SpeedCurrent { get ; set ; }
112- public ushort StoreXpBoost { get ; set ; }
111+ public ushort Stamina { get ; set ; }
112+ public ushort StoreXpBoostAddend { get ; set ; }
113+ public ushort StoreXpBoostTime { get ; set ; }
113114 public ushort Unknown { get ; set ; }
114115
115116 public byte AttackType { get ; set ; }
@@ -120,6 +121,7 @@ public class CyclopediaCharacterInfo : ServerPacket
120121 public byte ConvertedDamageType { get ; set ; }
121122 public byte CurrentCharacterTitle { get ; set ; }
122123 public byte DetailColor { get ; set ; }
124+ public byte Error { get ; set ; }
123125 public byte HeadColor { get ; set ; }
124126 public byte InstantRewardAccess { get ; set ; }
125127 public byte LegsColor { get ; set ; }
@@ -130,15 +132,12 @@ public class CyclopediaCharacterInfo : ServerPacket
130132 public byte Soul { get ; set ; }
131133 public byte TorsoColor { get ; set ; }
132134 public byte Type { get ; set ; }
133- public byte Unknown2 { get ; set ; }
134- public byte Unknown5 { get ; set ; }
135- public byte Unknown6 { get ; set ; }
136- public byte Unknown7 { get ; set ; }
137- public byte Unknown8 { get ; set ; }
138- public byte Unknown9 { get ; set ; }
139- public byte Unknown10 { get ; set ; }
140-
141- public bool IsUpToDate { get ; set ; }
135+
136+ public bool HideStamina { get ; set ; }
137+ public bool IsOnline { get ; set ; }
138+ public bool IsPremium { get ; set ; }
139+ public bool ShowAccountInformation { get ; set ; }
140+ public bool ShowPersonalTabs { get ; set ; }
142141 public bool ShowStoreXpBoostButton { get ; set ; }
143142
144143 public CyclopediaCharacterInfo ( Client client )
@@ -152,24 +151,28 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
152151 Type = message . ReadByte ( ) ;
153152 if ( Client . VersionNumber >= 12158493 )
154153 {
155- IsUpToDate = message . ReadBool ( ) ;
156- if ( IsUpToDate )
154+ Error = message . ReadByte ( ) ;
155+ if ( Error != 0 )
157156 {
157+ // 1: No data available at the moment.
158+ // 2: You are not allowed to see this character's data.
159+ // 3: You are not allowed to inspect this character.
158160 return ;
159161 }
160162 }
161- if ( Type == 0 )
163+ if ( Type == 0 ) // Basic Information
162164 {
163165 PlayerName = message . ReadString ( ) ;
164166 Vocation = message . ReadString ( ) ;
165167 LevelDisplay = message . ReadUInt16 ( ) ;
166168 Outfit = message . ReadCreatureOutfit ( ) ;
167- Unknown2 = message . ReadByte ( ) ;
169+ // This may also indicate Tournament characters
170+ HideStamina = message . ReadBool ( ) ;
168171 if ( Client . VersionNumber >= 12200000 )
169172 {
170- Unknown5 = message . ReadByte ( ) ;
171- Unknown6 = message . ReadByte ( ) ;
172- Unknown7 = message . ReadByte ( ) ;
173+ // Shows the Story Summary and Character Titles tabs
174+ ShowPersonalTabs = message . ReadBool ( ) ;
175+ Title = message . ReadString ( ) ;
173176 }
174177 }
175178 else if ( Type == 1 ) // Character Stats
@@ -178,18 +181,19 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
178181 Level = message . ReadUInt16 ( ) ;
179182 LevelPercent = message . ReadByte ( ) ;
180183 BaseXpGain = message . ReadUInt16 ( ) ;
184+ TournamentFactor = message . ReadUInt32 ( ) ;
181185 GrindingAddend = message . ReadUInt16 ( ) ;
182- StoreXpBoost = message . ReadUInt16 ( ) ;
186+ StoreXpBoostAddend = message . ReadUInt16 ( ) ;
183187 HuntingBoostFactor = message . ReadUInt16 ( ) ;
184- Food = message . ReadUInt16 ( ) ;
185- Unknown3 = message . ReadUInt32 ( ) ;
188+ StoreXpBoostTime = message . ReadUInt16 ( ) ;
186189 ShowStoreXpBoostButton = message . ReadBool ( ) ;
187190 HealthCurrent = message . ReadUInt16 ( ) ;
188191 HealthMax = message . ReadUInt16 ( ) ;
189192 ManaCurrent = message . ReadUInt16 ( ) ;
190193 ManaMax = message . ReadUInt16 ( ) ;
191194 Soul = message . ReadByte ( ) ;
192- Stamina = message . ReadUInt32 ( ) ;
195+ Stamina = message . ReadUInt16 ( ) ;
196+ Food = message . ReadUInt16 ( ) ;
193197 OfflineTrainingTime = message . ReadUInt16 ( ) ;
194198 SpeedCurrent = message . ReadUInt16 ( ) ;
195199 SpeedBase = message . ReadUInt16 ( ) ;
@@ -316,9 +320,10 @@ void ParseItems(List<(ushort, uint)> items)
316320 var id = message . ReadUInt16 ( ) ;
317321 var name = message . ReadString ( ) ;
318322 var addons = message . ReadByte ( ) ;
319- var isPremium = message . ReadBool ( ) ;
323+ // 0 = Standard, 1 = Quest, 2 = Store
324+ var category = message . ReadByte ( ) ;
320325 var unknown = message . ReadUInt32 ( ) ;
321- Outfits . Add ( ( id , name , addons , isPremium , unknown ) ) ;
326+ Outfits . Add ( ( id , name , addons , category , unknown ) ) ;
322327 }
323328 HeadColor = message . ReadByte ( ) ;
324329 TorsoColor = message . ReadByte ( ) ;
@@ -330,9 +335,10 @@ void ParseItems(List<(ushort, uint)> items)
330335 {
331336 var id = message . ReadUInt16 ( ) ;
332337 var name = message . ReadString ( ) ;
333- var isPremium = message . ReadBool ( ) ;
338+ // 0 = Standard, 1 = Quest, 2 = Store
339+ var category = message . ReadByte ( ) ;
334340 var unknown = message . ReadUInt32 ( ) ;
335- Mounts . Add ( ( id , name , isPremium , unknown ) ) ;
341+ Mounts . Add ( ( id , name , category , unknown ) ) ;
336342 }
337343 }
338344 else if ( Type == 8 ) // Store Summary
@@ -406,11 +412,11 @@ void ParseItems(List<(ushort, uint)> items)
406412 }
407413 else if ( Type == 10 ) // Badges
408414 {
409- Unknown8 = message . ReadByte ( ) ;
410- if ( Unknown8 != 0 )
415+ ShowAccountInformation = message . ReadBool ( ) ;
416+ if ( ShowAccountInformation )
411417 {
412- Unknown9 = message . ReadByte ( ) ;
413- Unknown10 = message . ReadByte ( ) ;
418+ IsOnline = message . ReadBool ( ) ;
419+ IsPremium = message . ReadBool ( ) ;
414420 LoyaltyTitle = message . ReadString ( ) ;
415421 Badges . Capacity = message . ReadByte ( ) ;
416422 for ( var i = 0 ; i < Badges . Capacity ; ++ i )
@@ -443,8 +449,8 @@ public override void AppendToNetworkMessage(NetworkMessage message)
443449 message . Write ( Type ) ;
444450 if ( Client . VersionNumber >= 12158493 )
445451 {
446- message . Write ( IsUpToDate ) ;
447- if ( IsUpToDate )
452+ message . Write ( Error ) ;
453+ if ( Error != 0 )
448454 {
449455 return ;
450456 }
@@ -463,12 +469,11 @@ public override void AppendToNetworkMessage(NetworkMessage message)
463469 message . Write ( ( ushort ) 0 ) ;
464470 message . Write ( ( ushort ) Outfit . Id ) ;
465471 }
466- message . Write ( Unknown2 ) ;
472+ message . Write ( HideStamina ) ;
467473 if ( Client . VersionNumber > 12200000 )
468474 {
469- message . Write ( Unknown5 ) ;
470- message . Write ( Unknown6 ) ;
471- message . Write ( Unknown7 ) ;
475+ message . Write ( ShowPersonalTabs ) ;
476+ message . Write ( Title ) ;
472477 }
473478 }
474479 else if ( Type == 1 )
@@ -477,18 +482,19 @@ public override void AppendToNetworkMessage(NetworkMessage message)
477482 message . Write ( Level ) ;
478483 message . Write ( LevelPercent ) ;
479484 message . Write ( BaseXpGain ) ;
485+ message . Write ( TournamentFactor ) ;
480486 message . Write ( GrindingAddend ) ;
481- message . Write ( StoreXpBoost ) ;
487+ message . Write ( StoreXpBoostAddend ) ;
482488 message . Write ( HuntingBoostFactor ) ;
483- message . Write ( Food ) ;
484- message . Write ( Unknown3 ) ;
489+ message . Write ( StoreXpBoostTime ) ;
485490 message . Write ( ShowStoreXpBoostButton ) ;
486491 message . Write ( HealthCurrent ) ;
487492 message . Write ( HealthMax ) ;
488493 message . Write ( ManaCurrent ) ;
489494 message . Write ( ManaMax ) ;
490495 message . Write ( Soul ) ;
491496 message . Write ( Stamina ) ;
497+ message . Write ( Food ) ;
492498 message . Write ( OfflineTrainingTime ) ;
493499 message . Write ( SpeedCurrent ) ;
494500 message . Write ( SpeedBase ) ;
@@ -731,11 +737,11 @@ void AppendItems(List<(ushort id, uint amount)> items)
731737 }
732738 else if ( Type == 10 ) // Badges
733739 {
734- message . Write ( Unknown8 ) ;
735- if ( Unknown8 != 0 )
740+ message . Write ( ShowAccountInformation ) ;
741+ if ( ShowAccountInformation )
736742 {
737- message . Write ( Unknown9 ) ;
738- message . Write ( Unknown10 ) ;
743+ message . Write ( IsOnline ) ;
744+ message . Write ( IsPremium ) ;
739745 message . Write ( LoyaltyTitle ) ;
740746 var count = Math . Min ( Badges . Count , byte . MaxValue ) ;
741747 message . Write ( ( byte ) count ) ;
0 commit comments