Skip to content

Commit 632222a

Browse files
committed
Support 12.0.7 parsing
1 parent 8c26c02 commit 632222a

137 files changed

Lines changed: 14910 additions & 36 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

WowPacketParser/DBC/Structures/Midnight/FactionEntry.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ public sealed class FactionEntry
77
{
88
[Index(true)]
99
public uint ID;
10-
[Cardinality(4)]
11-
public long[] ReputationRaceMask = new long[4];
1210
public string Name;
1311
public string Description;
1412
public short ReputationIndex;
@@ -31,5 +29,13 @@ public sealed class FactionEntry
3129
public float[] ParentFactionMod = new float[2];
3230
[Cardinality(2)]
3331
public byte[] ParentFactionCap = new byte[2];
32+
[Cardinality(2)]
33+
public int[] ReputationRaceMask1 = new int[2];
34+
[Cardinality(2)]
35+
public int[] ReputationRaceMask2 = new int[2];
36+
[Cardinality(2)]
37+
public int[] ReputationRaceMask3 = new int[2];
38+
[Cardinality(2)]
39+
public int[] ReputationRaceMask4 = new int[2];
3440
}
3541
}

WowPacketParser/DBC/Structures/Midnight/ItemSparseEntry.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ public sealed class ItemSparseEntry
77
{
88
[Index(true)]
99
public uint ID;
10-
public long AllowableRace;
1110
public string Description;
1211
public string Display3;
1312
public string Display2;
@@ -32,6 +31,8 @@ public sealed class ItemSparseEntry
3231
public int MaxCount;
3332
public int MinReputation;
3433
public uint RequiredAbility;
34+
[Cardinality(2)]
35+
public int[] AllowableRace = new int[2];
3536
public uint SellPrice;
3637
public uint BuyPrice;
3738
public uint VendorStackCount;

WowPacketParser/Enums/Opcode.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ public enum Opcode
162162
CMSG_BLACK_MARKET_BID_ON_ITEM,
163163
CMSG_BLACK_MARKET_OPEN,
164164
CMSG_BLACK_MARKET_REQUEST_ITEMS,
165+
CMSG_BLEEP_PONG,
165166
CMSG_BONUS_ROLL,
166167
CMSG_BOOTME,
167168
CMSG_BOT_DETECTED,
@@ -479,8 +480,10 @@ public enum Opcode
479480
CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT,
480481
CMSG_EQUIPMENT_SET_DELETE,
481482
CMSG_EQUIPMENT_SET_USE,
483+
CMSG_EXPIRE_BLEEP_TOKENS,
482484
CMSG_EXPIRE_RAID_INSTANCE,
483485
CMSG_FAR_SIGHT,
486+
CMSG_FETCH_BLEEP_PROXIES,
484487
CMSG_FLAG_QUEST,
485488
CMSG_FLAG_QUEST_FINISH,
486489
CMSG_FLOOD_GRACE_CHEAT,
@@ -1181,6 +1184,7 @@ public enum Opcode
11811184
CMSG_RECRUIT_A_FRIEND,
11821185
CMSG_REFER_A_FRIEND,
11831186
CMSG_REFORGE_ITEM,
1187+
CMSG_REFRESH_BLEEP_TOKENS,
11841188
CMSG_REFRESH_ENTITLEMENTS_ON_ORDER_COMPLETE,
11851189
CMSG_REGISTER_FAST_LOGIN,
11861190
CMSG_REMOVE_GLYPH,
@@ -1936,6 +1940,7 @@ public enum Opcode
19361940
SMSG_BLACK_MARKET_OUTBID,
19371941
SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT,
19381942
SMSG_BLACK_MARKET_WON,
1943+
SMSG_BLEEP_PING,
19391944
SMSG_BONUS_ROLL_EMPTY,
19401945
SMSG_BOSS_KILL,
19411946
SMSG_BREAK_TARGET,
@@ -2255,6 +2260,7 @@ public enum Opcode
22552260
SMSG_FEATURE_SYSTEM_STATUS2,
22562261
SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN,
22572262
SMSG_FEIGN_DEATH_RESISTED,
2263+
SMSG_FETCH_BLEEP_PROXIES_RESPONSE,
22582264
SMSG_FINAL_CHUNK,
22592265
SMSG_FISH_ESCAPED,
22602266
SMSG_FISH_NOT_HOOKED,
@@ -2538,6 +2544,7 @@ public enum Opcode
25382544
SMSG_HOUSE_EXTERIOR_SET_HOUSE_POSITION_RESPONSE,
25392545
SMSG_HOUSING_DECOR_ADD_TO_HOUSE_CHEST_RESPONSE,
25402546
SMSG_HOUSING_DECOR_DELETE_FROM_STORAGE_RESPONSE,
2547+
SMSG_HOUSING_DECOR_DRAW_SERVER_LIGHTING_DEBUG_SPHERES_RESPONSE,
25412548
SMSG_HOUSING_DECOR_LOCK_RESPONSE,
25422549
SMSG_HOUSING_DECOR_MOVE_RESPONSE,
25432550
SMSG_HOUSING_DECOR_PLACE_RESPONSE,
@@ -3243,6 +3250,7 @@ public enum Opcode
32433250
SMSG_REFER_A_FRIEND_FAILURE,
32443251
SMSG_REFETCH_TACT_KEYS,
32453252
SMSG_REFORGE_RESULT,
3253+
SMSG_REFRESH_BLEEP_TOKENS_RESPONSE,
32463254
SMSG_REFRESH_COMPONENT,
32473255
SMSG_REFRESH_SPELL_HISTORY,
32483256
SMSG_REGIONWIDE_CHARACTER_MAIL_DATA,

WowPacketParser/Enums/Version/V12_0_7_67808/Opcodes.cs

Lines changed: 2405 additions & 0 deletions
Large diffs are not rendered by default.

WowPacketParserModule.Substructures/ItemHandler.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,11 @@ public static ItemInstance ReadItemInstance1100(Packet packet, params object[] i
121121
packet.ResetBitReader();
122122

123123
{
124-
var modificationCount = packet.ReadBits(6);
124+
var modificationBits = 6;
125+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V12_0_7_68182))
126+
modificationBits = 7;
127+
128+
var modificationCount = packet.ReadBits(modificationBits);
125129
packet.ResetBitReader();
126130
for (var j = 0u; j < modificationCount; ++j)
127131
{
Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
using WowPacketParser.Enums;
22
using WowPacketParser.Misc;
33
using WowPacketParser.Parsing;
4-
using WowPacketParser.Proto;
5-
using WowPacketParser.Store;
6-
using WowPacketParser.Store.Objects;
74

85
namespace WowPacketParserModule.V10_0_0_46181.Parsers
96
{
@@ -28,20 +25,11 @@ public static void HandleClientChatMessageWhisper(Packet packet)
2825
packet.ReadInt32E<Language>("Language");
2926
packet.ReadPackedGuid128("TargetGUID");
3027
packet.ReadUInt32("TargetVirtualRealmAddress");
31-
var targetLen = packet.ReadBits(6);
28+
var targetLen = packet.ReadBits(9);
3229
var textLen = packet.ReadBits(11);
3330

34-
if (targetLen > 1)
35-
{
36-
packet.ReadWoWString("Target", targetLen - 1);
37-
packet.ReadByte(); // null terminator
38-
}
39-
40-
if (textLen > 1)
41-
{
42-
packet.ReadWoWString("Text", textLen - 1);
43-
packet.ReadByte(); // null terminator
44-
}
31+
packet.ReadDynamicString("Target", targetLen);
32+
packet.ReadDynamicString("Text", textLen);
4533
}
4634

4735
[Parser(Opcode.CMSG_CHAT_ADDON_MESSAGE_TARGETED, ClientVersionBuild.V10_2_7_54577)]
@@ -53,20 +41,11 @@ public static void HandleChatAddonMessageTargeted(Packet packet)
5341
packet.ReadPackedGuid128("PlayerGUID");
5442
packet.ReadUInt32("PlayerVirtualRealmAddress");
5543

56-
var playerNameLen = packet.ReadBits(6);
57-
var channelNameLen = packet.ReadBits(6);
58-
59-
if (playerNameLen > 1)
60-
{
61-
packet.ReadWoWString("PlayerName", playerNameLen - 1);
62-
packet.ReadByte(); // null terminator
63-
}
44+
var playerNameLen = packet.ReadBits(9);
45+
var channelNameLen = packet.ReadBits(8);
6446

65-
if (channelNameLen > 1)
66-
{
67-
packet.ReadWoWString("ChannelName", channelNameLen - 1);
68-
packet.ReadByte(); // null terminator
69-
}
47+
packet.ReadDynamicString("PlayerName", playerNameLen);
48+
packet.ReadDynamicString("ChannelName", channelNameLen);
7049
}
7150
}
7251
}

WowPacketParserModule.V10_0_0_46181/Parsers/SpellHandler.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ public static void HandleLearnedSpells(Packet packet)
3030
{
3131
var spellCount = packet.ReadUInt32();
3232
packet.ReadUInt32("SpecializationID");
33+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V12_0_7_68182))
34+
packet.ReadInt32("MinActionBarSlot");
35+
3336
packet.ReadBit("SuppressMessaging");
3437
if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_2_0_62213))
3538
packet.ReadBit("TraitGrantedByAura");

WowPacketParserModule.V11_0_0_55666/Parsers/CharacterHandler.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,9 @@ public static void ReadCharacterRestrictionAndMailData(Packet packet, params obj
133133
var mailSenderLengths = new uint[packet.ReadUInt32()];
134134
var mailSenderTypes = packet.ReadUInt32();
135135

136+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V12_0_7_68182))
137+
packet.ReadUInt32("NoRpeReason", idx);
138+
136139
for (var j = 0; j < mailSenderTypes; ++j)
137140
packet.ReadUInt32("MailSenderType", idx, j);
138141

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using WowPacketParser.Enums;
2+
using WowPacketParser.Misc;
3+
using WowPacketParser.Parsing;
4+
5+
namespace WowPacketParserModule.V12_0_0_65390.Parsers
6+
{
7+
public static class ItemHandler
8+
{
9+
[Parser(Opcode.CMSG_USE_ITEM, ClientVersionBuild.V12_0_7_68182)]
10+
public static void HandleUseItem(Packet packet)
11+
{
12+
var useItem = packet.Holder.ClientUseItem = new();
13+
useItem.PackSlot = packet.ReadByte("PackSlot");
14+
useItem.ItemSlot = packet.ReadByte("Slot");
15+
useItem.CastItem = packet.ReadPackedGuid128("CastItem");
16+
17+
useItem.SpellId = SpellHandler.ReadSpellCastRequest(packet, "Cast");
18+
}
19+
20+
[Parser(Opcode.CMSG_USE_TOY, ClientVersionBuild.V12_0_7_68182)]
21+
public static void HandleUseToy(Packet packet)
22+
{
23+
SpellHandler.ReadSpellCastRequest(packet, "Cast");
24+
}
25+
}
26+
}

WowPacketParserModule.V12_0_0_65390/Parsers/MiscellaneoutHandler.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,11 @@ public static void HandleFeatureSystemStatus(Packet packet)
106106

107107
packet.ReadBit("GuildTradeSkillsEnabled");
108108
var unknown1027StrLen = packet.ReadBits(10);
109-
packet.ReadBit("BNSendWhisperUseV2Services");
110-
packet.ReadBit("BNSendGameDataUseV2Services");
109+
if (ClientVersion.RemovedInVersion(ClientVersionBuild.V12_0_7_68182))
110+
{
111+
packet.ReadBit("BNSendWhisperUseV2Services");
112+
packet.ReadBit("BNSendGameDataUseV2Services");
113+
}
111114
packet.ReadBit("IsAccountCurrencyTransferEnabled");
112115
packet.ReadBit("NetEaseChatTelemetryEnabled");
113116
packet.ReadBit("LobbyMatchmakerQueueFromMainlineEnabled");
@@ -183,6 +186,9 @@ public static void HandleFeatureSystemStatusGlueScreen(Packet packet)
183186

184187
packet.ReadBit("BrowserCrashReporterEnabled");
185188
packet.ReadBit("IsEmployeeAccount");
189+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V12_0_7_68182))
190+
packet.ReadBit("UseBleep");
191+
186192
var europaTicket = packet.ReadBit("IsEuropaTicketSystemStatusEnabled");
187193
packet.ReadBit("NameReservationOnly");
188194
var launchEta = packet.ReadBit();
@@ -195,8 +201,11 @@ public static void HandleFeatureSystemStatusGlueScreen(Packet packet)
195201

196202
var realmHiddenAlertLen = packet.ReadBits(11);
197203

198-
packet.ReadBit("BNSendWhisperUseV2Services");
199-
packet.ReadBit("BNSendGameDataUseV2Services");
204+
if (ClientVersion.RemovedInVersion(ClientVersionBuild.V12_0_7_68182))
205+
{
206+
packet.ReadBit("BNSendWhisperUseV2Services");
207+
packet.ReadBit("BNSendGameDataUseV2Services");
208+
}
200209
packet.ReadBit("CharacterSelectListModeRealmless");
201210

202211
packet.ReadBit("WowTokenLimitedMode");

0 commit comments

Comments
 (0)