Skip to content

Commit 3ca46a3

Browse files
committed
2 parents babbec1 + e71077e commit 3ca46a3

File tree

5 files changed

+49
-7
lines changed

5 files changed

+49
-7
lines changed

TibiaAPI/Constants/Enums.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ public enum PreyActionType
3737
{
3838
ListReroll = 0,
3939
BonusReroll = 1,
40-
MonsterSelection = 2
40+
MonsterSelection = 2,
41+
Option = 5
4142
}
4243

4344
public enum ReportType
@@ -119,7 +120,8 @@ public enum GraphicalEffectsType
119120
Delay = 2,
120121
Effect = 3,
121122
MissileXY = 4,
122-
MissileYX = 5
123+
MissileYX = 5,
124+
Unknown = 0x83
123125
}
124126

125127
public enum PreyDataState

TibiaAPI/Network/ClientPackets/PreyAction.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ public class PreyAction : ClientPacket
77
public PreyActionType ActionType { get; set; }
88

99
public byte MonsterIndex { get; set; }
10+
public byte Option { get; set; }
1011
public byte PreyId { get; set; }
1112

1213
public PreyAction(Client client)
@@ -23,6 +24,10 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
2324
{
2425
MonsterIndex = message.ReadByte();
2526
}
27+
else if (ActionType == PreyActionType.Option)
28+
{
29+
Option = message.ReadByte(); // 0 = None, 1 = Automatic Bonus Reroll, 2 = Lock Prey
30+
}
2631
}
2732

2833
public override void AppendToNetworkMessage(NetworkMessage message)
@@ -34,6 +39,10 @@ public override void AppendToNetworkMessage(NetworkMessage message)
3439
{
3540
message.Write(MonsterIndex);
3641
}
42+
else if (ActionType == PreyActionType.Option)
43+
{
44+
message.Write(Option);
45+
}
3746
}
3847
}
3948
}

TibiaAPI/Network/ServerPackets/GraphicalEffects.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,15 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
6666
var distanceAxisX = message.ReadSByte();
6767
Effects.Add((type, 0, 0, missileId, distanceAxisX, distanceAxisY));
6868
}
69+
else if (type == GraphicalEffectsType.Unknown)
70+
{
71+
// This is "unknown" because a) it seems to have existed for a single
72+
// client update but no longer exist as of client update 12.51.10194
73+
// (or I can't reproduce it) and b) it seems to indicate a new
74+
// GraphicalEffects packet without the position at the beginning
75+
// (it jumps straight to the effect type). Either way, treating it
76+
// as a type without any data fixes any existing parser errors.
77+
}
6978
else
7079
{
7180
throw new System.Exception($"[ServerPackets.GraphicalEffects] Unknown type: {type}");
@@ -111,6 +120,9 @@ public override void AppendToNetworkMessage(NetworkMessage message)
111120
message.Write(DistanceY);
112121
message.Write(DistanceX);
113122
}
123+
else if (Type == GraphicalEffectsType.Unknown)
124+
{
125+
}
114126
}
115127
message.Write((byte)GraphicalEffectsType.None);
116128
}

TibiaAPI/Network/ServerPackets/PreyData.cs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ public class PreyData : ServerPacket
1818

1919
public string Name { get; set; }
2020

21+
public uint TimeLeftUntilFreeListReroll { get; set; }
22+
2123
public ushort BonusPercentage { get; set; }
2224
public ushort TimeLeft { get; set; }
23-
public ushort TimeLeftUntilFreeListReroll { get; set; }
2425

2526
public byte BonusRarity { get; set; }
2627
public byte BonusType { get; set; }
@@ -37,7 +38,6 @@ public PreyData(Client client)
3738
public override void ParseFromNetworkMessage(NetworkMessage message)
3839
{
3940
Index = message.ReadByte();
40-
4141
State = (PreyDataState)message.ReadByte();
4242
switch (State)
4343
{
@@ -111,8 +111,14 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
111111
throw new Exception($"[PreyData.ParseFromNetworkMessage] Unknown state: {State}");
112112
}
113113
}
114-
115-
TimeLeftUntilFreeListReroll = message.ReadUInt16();
114+
if (Client.VersionNumber >= 125110194)
115+
{
116+
TimeLeftUntilFreeListReroll = message.ReadUInt32();
117+
}
118+
else
119+
{
120+
TimeLeftUntilFreeListReroll = message.ReadUInt16();
121+
}
116122
if (Client.VersionNumber > 11606457)
117123
{
118124
Option = message.ReadByte(); // 0 = none, 1 = automatic reroll, 2 = locked
@@ -224,7 +230,14 @@ public override void AppendToNetworkMessage(NetworkMessage message)
224230
throw new Exception($"[PreyData.AppendToNetworkMessage] Unknown state: {State}");
225231
}
226232
}
227-
message.Write(TimeLeftUntilFreeListReroll);
233+
if (Client.VersionNumber >= 125110194)
234+
{
235+
message.Write(TimeLeftUntilFreeListReroll);
236+
}
237+
else
238+
{
239+
message.Write((ushort)TimeLeftUntilFreeListReroll);
240+
}
228241
if (Client.VersionNumber > 11606457)
229242
{
230243
message.Write(Option);

TibiaAPI/Network/ServerPackets/PreyHuntingTaskData.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public class PreyHuntingTaskData : ServerPacket
1212
public List<(ushort RaceId, bool IsUnlocked)> ListSelection { get; } =
1313
new List<(ushort RaceId, bool IsUnlocked)>();
1414

15+
public uint TimeLeftUntilFreeReroll { get; set; }
16+
1517
public ushort CurrentKills { get; set; }
1618
public ushort RaceId { get; set; }
1719
public ushort RequiredKills { get; set; }
@@ -86,6 +88,10 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
8688
throw new Exception($"[PreyHuntingTaskData.ParseFromNetworkMessage] Unknown state: {State}");
8789
}
8890
}
91+
if (Client.VersionNumber >= 125110194)
92+
{
93+
TimeLeftUntilFreeReroll = message.ReadUInt32();
94+
}
8995
}
9096

9197
public override void AppendToNetworkMessage(NetworkMessage message)

0 commit comments

Comments
 (0)