Skip to content

Commit 0053869

Browse files
committed
Fix a bunch of wrong ResetBitReader placements and some older structures
1 parent 52e47c4 commit 0053869

14 files changed

Lines changed: 218 additions & 163 deletions

File tree

‎WowPacketParser/Misc/WowGuid.cs‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ public bool IsEmpty()
124124

125125
public class WowGuid128 : WowGuid
126126
{
127+
public static readonly WowGuid Empty = new WowGuid128(0, 0);
128+
127129
public WowGuid128(ulong low, ulong high)
128130
{
129131
Low = low;

‎WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs‎

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,33 @@ public static void ReadCraftingData(Packet packet, params object[] indexes)
2424
packet.ReadInt32("SkillFromReagents", indexes);
2525
packet.ReadInt32("Skill", indexes);
2626
packet.ReadInt32("CritBonusSkill", indexes);
27-
packet.ReadSingle("field_1C", indexes);
28-
packet.ReadUInt64("field_20", indexes);
27+
packet.ReadSingle("ModSkillGain", indexes);
28+
packet.ReadUInt64("OrderID", indexes);
2929
var resourcesReturnedCount = packet.ReadUInt32();
3030
packet.ReadUInt32("OperationID", indexes);
3131
packet.ReadPackedGuid128("ItemGUID", indexes);
3232
packet.ReadInt32("Quantity", indexes);
3333
packet.ReadInt32("EnchantID", indexes);
34+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666))
35+
{
36+
packet.ReadInt32("ConcentrationCurrencyID", indexes);
37+
packet.ReadInt32("ConcentrationSpent", indexes);
38+
packet.ReadInt32("IngenuityRefund", indexes);
39+
}
3440

3541
for (var i = 0u; i < resourcesReturnedCount; i++)
3642
ReadSpellReducedReagent(packet, indexes, "ResourcesReturned", i);
3743

38-
packet.ReadBit("IsCrit", indexes);
39-
packet.ReadBit("field_29", indexes);
40-
packet.ReadBit("field_2A", indexes);
41-
packet.ReadBit("BonusCraft", indexes);
4244
packet.ResetBitReader();
45+
packet.ReadBit("IsCrit", indexes);
46+
packet.ReadBit("IsRecraft", indexes);
47+
packet.ReadBit("IsInitialRecraft", indexes);
48+
packet.ReadBit("IsFirstCraft", indexes);
49+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666))
50+
{
51+
packet.ReadBit("HasIngenuityProc", indexes);
52+
packet.ReadBit("ApplyConcentration", indexes);
53+
}
4354

4455
Substructures.ItemHandler.ReadItemInstance(packet, "OldItem");
4556
Substructures.ItemHandler.ReadItemInstance(packet, "NewItem");
@@ -49,18 +60,18 @@ public static void ReadCraftingOrderClientContext(Packet packet, params object[]
4960
{
5061
packet.ReadByte("OrderType", indexes);
5162
packet.ReadUInt32("Offset", indexes);
63+
64+
packet.ResetBitReader();
5265
packet.ReadBit("ForCrafter", indexes);
5366
packet.ReadBit("IsMyOrders", indexes);
5467
packet.ReadBit("field_3", indexes);
5568
packet.ReadBit("field_4", indexes);
56-
57-
packet.ResetBitReader();
5869
}
5970

6071
public static void ReadCraftingOrderBucketInfo(Packet packet, params object[] indexes)
6172
{
62-
packet.ReadBits("SkillLineAbilityID", 20, indexes);
6373
packet.ResetBitReader();
74+
packet.ReadBits("SkillLineAbilityID", 20, indexes);
6475

6576
packet.ReadInt32("NumAvailable", indexes);
6677
packet.ReadUInt64("TipAmountMax", indexes);
@@ -76,8 +87,8 @@ public static void ReadCraftingOrderItem(Packet packet, params object[] indexes)
7687
packet.ReadUInt32("Quantity", indexes);
7788
packet.ReadInt32("ReagentQuality", indexes);
7889

79-
var hasDataSlotIndex = packet.ReadBit();
8090
packet.ResetBitReader();
91+
var hasDataSlotIndex = packet.ReadBit();
8192

8293
if (hasDataSlotIndex)
8394
packet.ReadByte("DataSlotIndex", indexes);
@@ -102,11 +113,12 @@ public static void ReadCraftingOrderData(Packet packet, params object[] indexes)
102113
packet.ReadPackedGuid128("PersonalCrafterGUID", indexes);
103114

104115
var reagentsCount = packet.ReadUInt32();
116+
117+
packet.ResetBitReader();
105118
var customerNotesLength = packet.ReadBits(10);
106119
var hasOutputItem = packet.ReadBit();
107120
var hasOutputItemData = packet.ReadBit();
108121

109-
packet.ResetBitReader();
110122

111123
for (var i = 0u; i < reagentsCount; ++i)
112124
ReadCraftingOrderItem(packet, indexes, "Reagents", i);
@@ -124,11 +136,11 @@ public static void ReadCraftingOrder(Packet packet, params object[] indexes)
124136
{
125137
ReadCraftingOrderData(packet, indexes, "Data");
126138

139+
packet.ResetBitReader();
127140
var hasRecraftItemInfo = packet.ReadBit();
128141
var enchantmentsCount = packet.ReadBits(4);
129142
var gemCount = packet.ReadBits(2);
130143

131-
packet.ResetBitReader();
132144

133145
if (hasRecraftItemInfo)
134146
Substructures.ItemHandler.ReadItemInstance(packet, indexes, "OutputItemInfo");
@@ -153,9 +165,10 @@ public static void HandleCraftingOrderListOrdersResponse(Packet packet)
153165
var orderCount = packet.ReadUInt32();
154166
packet.ReadUInt32("DesiredDelay");
155167
packet.ReadUInt32("NumOrders");
168+
169+
packet.ResetBitReader();
156170
packet.ReadBit("HasMoreResults");
157171
packet.ReadBit("IsSorted");
158-
packet.ResetBitReader();
159172

160173
ReadCraftingOrderClientContext(packet, "ClientContext");
161174

‎WowPacketParserModule.V10_0_0_46181/Parsers/PerksProgramHandler.cs‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ public static class PerksProgramHandler
1010
public static void HandlePerksProgramActivityUpdate(Packet packet)
1111
{
1212
var activityCount = packet.ReadUInt32("ActivityCount");
13+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_1_0_49318))
14+
packet.ReadTime64("RemainingTime");
15+
16+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_1_7_51187))
17+
packet.ReadTime64("StartingTime");
18+
19+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038))
20+
packet.ReadInt32("UiThemeID");
21+
1322
for (var i = 0; i < activityCount; i++)
1423
packet.ReadInt32("ActivityID", i);
1524
}

‎WowPacketParserModule.V10_0_0_46181/Parsers/TraitHandler.cs‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,13 @@ public static void ReadTraitEntry(Packet packet, params object[] indexes)
1818

1919
public static void ReadTraitSubTreeCache(Packet packet, params object[] indexes)
2020
{
21-
packet.ResetBitReader();
22-
2321
packet.ReadInt32("TraitSubTreeID", indexes);
2422
var entries = packet.ReadUInt32();
2523

2624
for (var i = 0u; i < entries; ++i)
2725
ReadTraitEntry(packet, indexes, "TraitEntry", i);
2826

27+
packet.ResetBitReader();
2928
packet.ReadBit("Active", indexes);
3029
}
3130

@@ -35,7 +34,7 @@ public static void ReadTraitConfig(Packet packet, params object[] indexes)
3534
var type = packet.ReadInt32("Type", indexes);
3635
var entries = packet.ReadUInt32();
3736

38-
uint subtrees = 0;
37+
var subtrees = 0u;
3938
if (ClientVersion.AddedInVersion(ClientBranch.Retail, ClientVersionBuild.V11_0_0_55666)
4039
|| ClientVersion.AddedInVersion(ClientVersionBuild.V4_4_1_57294))
4140
subtrees = packet.ReadUInt32();

‎WowPacketParserModule.V11_0_0_55666/Parsers/QueryHandler.cs‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ public static void ReadTreasurePickItem(Packet packet, params object[] indexes)
1717
{
1818
Substructures.ItemHandler.ReadItemInstance(packet, indexes);
1919
packet.ReadUInt32("Quantity", indexes);
20-
var hasContextFlags = packet.ReadBit("HasContextFlags", indexes);
20+
2121
packet.ResetBitReader();
22+
var hasContextFlags = packet.ReadBit("HasContextFlags", indexes);
2223

2324
if (hasContextFlags)
2425
packet.ReadInt32("ContextFlags", indexes);
@@ -28,8 +29,9 @@ public static void ReadTreasurePickCurrency(Packet packet, params object[] index
2829
{
2930
packet.ReadUInt32("CurrencyID", indexes);
3031
packet.ReadUInt32("Quantity", indexes);
31-
var hasContextFlags = packet.ReadBit("HasContextFlags", indexes);
32+
3233
packet.ResetBitReader();
34+
var hasContextFlags = packet.ReadBit("HasContextFlags", indexes);
3335

3436
if (hasContextFlags)
3537
packet.ReadInt32("ContextFlags", indexes);

‎WowPacketParserModule.V11_0_0_55666/Parsers/QuestHandler.cs‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using WowPacketParser.DBC;
2-
using WowPacketParser.Enums;
1+
using WowPacketParser.Enums;
32
using WowPacketParser.Misc;
43
using WowPacketParser.Parsing;
54
using WowPacketParser.Proto;

‎WowPacketParserModule.V6_0_2_19033/Parsers/GuildHandler.cs‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,12 +216,14 @@ public static void HandleGuildEventPresenceChange(Packet packet)
216216
[Parser(Opcode.SMSG_GUILD_KNOWN_RECIPES)]
217217
public static void HandleGuildRecipes(Packet packet)
218218
{
219+
var byteCount = ClientVersion.AddedInVersion(ClientVersionBuild.V11_2_0_62213) ? 600 : 300;
220+
219221
var count = packet.ReadInt32("Criteria count");
220222

221223
for (var i = 0; i < count; ++i)
222224
{
223-
packet.ReadInt32("Skill Id", i);
224-
packet.ReadBytes("Skill Bits", 300, i);
225+
packet.ReadInt32("SkillLineID", i);
226+
packet.ReadBytes("SkillLineBitArray", byteCount, i);
225227
}
226228
}
227229

@@ -829,11 +831,13 @@ public static void HandleQueryPetitionResponse(Packet packet)
829831
[Parser(Opcode.SMSG_GUILD_MEMBER_RECIPES)]
830832
public static void HandleGuildMemberRecipes(Packet packet)
831833
{
834+
var byteCount = ClientVersion.AddedInVersion(ClientVersionBuild.V11_2_0_62213) ? 600 : 300;
835+
832836
packet.ReadPackedGuid128("Member");
833837
packet.ReadInt32("SkillLineID");
834838
packet.ReadInt32("SkillRank");
835839
packet.ReadInt32("SkillStep");
836-
for (int i = 0; i < 0x12C; i++)
840+
for (var i = 0; i < byteCount; i++)
837841
packet.ReadByte("SkillLineBitArray", i);
838842
}
839843

‎WowPacketParserModule.V7_0_3_22248/Parsers/AccountDataHandler.cs‎

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,16 @@ public static void HandleSaveEnabledAddons(Packet packet)
4242
}
4343
}
4444

45+
public static void ReadCacheInfoEntry(Packet packet, params object[] indexes)
46+
{
47+
packet.ResetBitReader();
48+
49+
var variableNameLen = packet.ReadBits(6);
50+
var valueLen = packet.ReadBits(6);
51+
52+
packet.AddLine($"VariableName: \"{ packet.ReadWoWString((int)variableNameLen) }\" Value: \"{ packet.ReadWoWString((int)valueLen) }\"", indexes);
53+
}
54+
4555
[Parser(Opcode.SMSG_CACHE_INFO)]
4656
public static void HandleCacheInfo(Packet packet)
4757
{
@@ -52,14 +62,7 @@ public static void HandleCacheInfo(Packet packet)
5262
var signatureLen = packet.ReadBits(6);
5363

5464
for (var i = 0; i < cacheInfoCount; ++i)
55-
{
56-
packet.ResetBitReader();
57-
58-
var variableNameLen = packet.ReadBits(6);
59-
var valueLen = packet.ReadBits(6);
60-
61-
packet.WriteLine($"[{ i.ToString() }] VariableName: \"{ packet.ReadWoWString((int)variableNameLen) }\" Value: \"{ packet.ReadWoWString((int)valueLen) }\"");
62-
}
65+
ReadCacheInfoEntry(packet, "Entries", i);
6366

6467
packet.ReadWoWString("Signature", signatureLen);
6568
}

‎WowPacketParserModule.V7_0_3_22248/Parsers/GarrisonHandler.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ public static void HandleGarrisonOpenMissionNpc(Packet packet)
317317
public static void HandleGetLandingPageShipmentsResponse(Packet packet)
318318
{
319319
if(ClientVersion.AddedInVersion(ClientVersionBuild.V7_2_0_23706))
320-
packet.ReadUInt32("UnkUInt32");
320+
packet.ReadUInt32("CurrentArtifactKnowledgeExcludingShipments");
321321

322322
uint shipmentsCount = packet.ReadUInt32("ShipmentsCount");
323323
for (uint i = 0; i < shipmentsCount; i++)

‎WowPacketParserModule.V7_0_3_22248/Parsers/ScenarioHandler.cs‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@ public static void HandleScenarioState(Packet packet)
2525
{
2626
packet.ReadInt32("ScenarioID");
2727
packet.ReadInt32("CurrentStep");
28-
packet.ReadInt32<DifficultyId>("DifficultyID");
28+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V12_0_0_65390))
29+
packet.ReadInt16<DifficultyId>("DifficultyID");
30+
else
31+
packet.ReadInt32<DifficultyId>("DifficultyID");
2932
packet.ReadInt32("WaveCurrent");
3033
packet.ReadInt32("WaveMax");
3134
packet.ReadInt32("TimerDuration");

0 commit comments

Comments
 (0)