Skip to content

Commit e518b3a

Browse files
author
code2win
authored
Mop Classic parsing 5.5.3 (#982)
* Add SMSG_UPDATE_OBJECT 5.5.3 * Update Mop Classic parser 5.5.3 - fixed chat & cache opcodes - fixed SMSG_GOSSIP_MESSAGE - add support for SMSG_AVAILABLE_HOTFIXES, CMSG_HOTFIX_REQUEST, CMSG_DB_QUERY_BULK
1 parent 64a0ce8 commit e518b3a

Some content is hidden

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

72 files changed

+7337
-54
lines changed

WowPacketParser/Enums/ClientVersionBuild.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,8 @@ public enum ClientVersionBuild
10631063
V5_5_3_65746 = 65746, // live
10641064
V5_5_3_65890 = 65890, // live
10651065
V5_5_3_65988 = 65988, // live
1066+
V5_5_3_66128 = 66128, // live
1067+
V5_5_3_66290 = 66290, // live
10661068
// Battle.net - should probably not mix this but oh well
10671069
BattleNetV37165 = 37165,
10681070

WowPacketParser/Enums/Version/Opcodes.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1238,6 +1238,8 @@ public static ClientVersionBuild GetOpcodeDefiningBuild(ClientVersionBuild build
12381238
case ClientVersionBuild.V5_5_3_65746:
12391239
case ClientVersionBuild.V5_5_3_65890:
12401240
case ClientVersionBuild.V5_5_3_65988:
1241+
case ClientVersionBuild.V5_5_3_66128:
1242+
case ClientVersionBuild.V5_5_3_66290:
12411243
return ClientVersionBuild.V5_5_3_64802;
12421244
default:
12431245
return ClientVersionBuild.V3_3_5a_12340;

WowPacketParser/Enums/Version/UpdateFields.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,6 +1472,17 @@ private static string GetUpdateFieldDictionaryBuildName(ClientVersionBuild build
14721472
{
14731473
return "V5_5_2_64068";
14741474
}
1475+
case ClientVersionBuild.V5_5_3_64802:
1476+
case ClientVersionBuild.V5_5_3_64857:
1477+
case ClientVersionBuild.V5_5_3_65703:
1478+
case ClientVersionBuild.V5_5_3_65746:
1479+
case ClientVersionBuild.V5_5_3_65890:
1480+
case ClientVersionBuild.V5_5_3_65988:
1481+
case ClientVersionBuild.V5_5_3_66128:
1482+
case ClientVersionBuild.V5_5_3_66290:
1483+
{
1484+
return "V5_5_3_64802";
1485+
}
14751486
default:
14761487
{
14771488
return "V3_3_5a_12340";

WowPacketParser/Enums/Version/V5_5_3_64802/Opcodes.cs

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,57 +1362,57 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
13621362
{ Opcode.SMSG_ACCOUNT_CONVERSION_STATE_UPDATE, 0x3A0345 }, // NYI
13631363
{ Opcode.SMSG_ACCOUNT_ITEM_COLLECTION_DATA, 0x3A0346 },
13641364

1365-
{ Opcode.SMSG_CHAT_IGNORED_ACCOUNT_MUTED, 0x3E0000 },
1366-
{ Opcode.SMSG_CHAT, 0x3E0001 },
1367-
{ Opcode.SMSG_WHO, 0x3E0002 },
1368-
{ Opcode.SMSG_MOTD, 0x3E0003 },
1369-
{ Opcode.SMSG_CHAT_PLAYER_AMBIGUOUS, 0x3E0004 },
1370-
{ Opcode.SMSG_EXPECTED_SPAM_RECORDS, 0x3E0005 }, // NYI
1371-
{ Opcode.SMSG_CHAT_NOT_IN_PARTY, 0x3E0006 },
1372-
{ Opcode.SMSG_CHAT_RESTRICTED, 0x3E0007 },
1373-
{ Opcode.SMSG_CAUTIONARY_CHAT_MESSAGE, 0x3E0008 }, // NYI
1374-
{ Opcode.SMSG_CAUTIONARY_CHANNEL_MESSAGE, 0x3E0009 }, // NYI
1375-
{ Opcode.SMSG_RAID_INSTANCE_MESSAGE, 0x3E000A },
1376-
{ Opcode.SMSG_ZONE_UNDER_ATTACK, 0x3E000B },
1377-
{ Opcode.SMSG_DEFENSE_MESSAGE, 0x3E000C },
1378-
{ Opcode.SMSG_CHAT_PLAYER_NOTFOUND, 0x3E000D },
1379-
{ Opcode.SMSG_CHAT_AUTO_RESPONDED, 0x3E000E }, // NYI
1380-
{ Opcode.SMSG_USERLIST_ADD, 0x3E000F },
1381-
{ Opcode.SMSG_USERLIST_REMOVE, 0x3E0010 },
1382-
{ Opcode.SMSG_USERLIST_UPDATE, 0x3E0011 },
1383-
{ Opcode.SMSG_BROADCAST_ACHIEVEMENT, 0x3E0012 },
1384-
{ Opcode.SMSG_BROADCAST_LEVELUP, 0x3E0013 }, // NYI
1385-
{ Opcode.SMSG_CHAT_DOWN, 0x3E0014 }, // NYI
1386-
{ Opcode.SMSG_CHAT_IS_DOWN, 0x3E0015 }, // NYI
1387-
{ Opcode.SMSG_CHAT_RECONNECT, 0x3E0016 }, // NYI
1388-
{ Opcode.SMSG_CHANNEL_NOTIFY, 0x3E0017 },
1389-
{ Opcode.SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH, 0x3E0018 }, // NYI
1390-
{ Opcode.SMSG_CHANNEL_NOTIFY_JOINED, 0x3E0019 },
1391-
{ Opcode.SMSG_CHANNEL_NOTIFY_LEFT, 0x3E001A },
1392-
{ Opcode.SMSG_CHANNEL_LIST, 0x3E001B },
1393-
{ Opcode.SMSG_CHAT_SERVER_MESSAGE, 0x3E001C },
1394-
{ Opcode.SMSG_CHAT_REGIONAL_SERVICE_STATUS, 0x3E001D }, // NYI
1395-
{ Opcode.SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE, 0x3E0022 },
1396-
{ Opcode.SMSG_CHAT_NOT_IN_GUILD, 0x3E0023 }, // NYI
1365+
{ Opcode.SMSG_CHAT_IGNORED_ACCOUNT_MUTED, 0x3F0000 },
1366+
{ Opcode.SMSG_CHAT, 0x3F0001 },
1367+
{ Opcode.SMSG_WHO, 0x3F0002 },
1368+
{ Opcode.SMSG_MOTD, 0x3F0003 },
1369+
{ Opcode.SMSG_CHAT_PLAYER_AMBIGUOUS, 0x3F0004 },
1370+
{ Opcode.SMSG_EXPECTED_SPAM_RECORDS, 0x3F0005 }, // NYI
1371+
{ Opcode.SMSG_CHAT_NOT_IN_PARTY, 0x3F0006 },
1372+
{ Opcode.SMSG_CHAT_RESTRICTED, 0x3F0007 },
1373+
{ Opcode.SMSG_CAUTIONARY_CHAT_MESSAGE, 0x3F0008 }, // NYI
1374+
{ Opcode.SMSG_CAUTIONARY_CHANNEL_MESSAGE, 0x3F0009 }, // NYI
1375+
{ Opcode.SMSG_RAID_INSTANCE_MESSAGE, 0x3F000A },
1376+
{ Opcode.SMSG_ZONE_UNDER_ATTACK, 0x3F000B },
1377+
{ Opcode.SMSG_DEFENSE_MESSAGE, 0x3F000C },
1378+
{ Opcode.SMSG_CHAT_PLAYER_NOTFOUND, 0x3F000D },
1379+
{ Opcode.SMSG_CHAT_AUTO_RESPONDED, 0x3F000E }, // NYI
1380+
{ Opcode.SMSG_USERLIST_ADD, 0x3F000F },
1381+
{ Opcode.SMSG_USERLIST_REMOVE, 0x3F0010 },
1382+
{ Opcode.SMSG_USERLIST_UPDATE, 0x3F0011 },
1383+
{ Opcode.SMSG_BROADCAST_ACHIEVEMENT, 0x3F0012 },
1384+
{ Opcode.SMSG_BROADCAST_LEVELUP, 0x3F0013 }, // NYI
1385+
{ Opcode.SMSG_CHAT_DOWN, 0x3F0014 }, // NYI
1386+
{ Opcode.SMSG_CHAT_IS_DOWN, 0x3F0015 }, // NYI
1387+
{ Opcode.SMSG_CHAT_RECONNECT, 0x3F0016 }, // NYI
1388+
{ Opcode.SMSG_CHANNEL_NOTIFY, 0x3F0017 },
1389+
{ Opcode.SMSG_CHANNEL_NOTIFY_NPE_JOINED_BATCH, 0x3F0018 }, // NYI
1390+
{ Opcode.SMSG_CHANNEL_NOTIFY_JOINED, 0x3F0019 },
1391+
{ Opcode.SMSG_CHANNEL_NOTIFY_LEFT, 0x3F001A },
1392+
{ Opcode.SMSG_CHANNEL_LIST, 0x3F001B },
1393+
{ Opcode.SMSG_CHAT_SERVER_MESSAGE, 0x3F001C },
1394+
{ Opcode.SMSG_CHAT_REGIONAL_SERVICE_STATUS, 0x3F001D }, // NYI
1395+
{ Opcode.SMSG_CHAT_CAN_LOCAL_WHISPER_TARGET_RESPONSE, 0x3F0022 },
1396+
{ Opcode.SMSG_CHAT_NOT_IN_GUILD, 0x3F0023 }, // NYI
13971397

1398-
{ Opcode.SMSG_DB_REPLY, 0x3F0000 },
1399-
{ Opcode.SMSG_AVAILABLE_HOTFIXES, 0x3F0001 },
1400-
{ Opcode.SMSG_HOTFIX_MESSAGE, 0x3F0002 },
1401-
{ Opcode.SMSG_HOTFIX_CONNECT, 0x3F0003 },
1402-
{ Opcode.SMSG_REALM_QUERY_RESPONSE, 0x3F0005 },
1403-
{ Opcode.SMSG_QUERY_CREATURE_RESPONSE, 0x3F0006 },
1404-
{ Opcode.SMSG_QUERY_GAME_OBJECT_RESPONSE, 0x3F0007 },
1405-
{ Opcode.SMSG_QUERY_NPC_TEXT_RESPONSE, 0x3F0008 },
1406-
{ Opcode.SMSG_QUERY_PAGE_TEXT_RESPONSE, 0x3F0009 },
1407-
{ Opcode.SMSG_INVALIDATE_PAGE_TEXT, 0x3F000A }, // NYI
1408-
{ Opcode.SMSG_QUERY_PET_NAME_RESPONSE, 0x3F000B },
1409-
{ Opcode.SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, 0x3F000C },
1410-
{ Opcode.SMSG_QUERY_PETITION_RESPONSE, 0x3F000D },
1411-
{ Opcode.SMSG_CACHE_VERSION, 0x3F000E },
1412-
{ Opcode.SMSG_CACHE_INFO, 0x3F000F },
1413-
{ Opcode.SMSG_QUERY_ITEM_TEXT_RESPONSE, 0x3F0010 },
1414-
{ Opcode.SMSG_TREASURE_PICKER_RESPONSE, 0x3F0011 },
1415-
{ Opcode.SMSG_QUERY_ARENA_TEAM_RESPONSE, 0x3F0012 }, // NYI
1398+
{ Opcode.SMSG_DB_REPLY, 0x3E0000 },
1399+
{ Opcode.SMSG_AVAILABLE_HOTFIXES, 0x3E0001 },
1400+
{ Opcode.SMSG_HOTFIX_MESSAGE, 0x3E0002 },
1401+
{ Opcode.SMSG_HOTFIX_CONNECT, 0x3E0003 },
1402+
{ Opcode.SMSG_REALM_QUERY_RESPONSE, 0x3E0005 },
1403+
{ Opcode.SMSG_QUERY_CREATURE_RESPONSE, 0x3E0006 },
1404+
{ Opcode.SMSG_QUERY_GAME_OBJECT_RESPONSE, 0x3E0007 },
1405+
{ Opcode.SMSG_QUERY_NPC_TEXT_RESPONSE, 0x3E0008 },
1406+
{ Opcode.SMSG_QUERY_PAGE_TEXT_RESPONSE, 0x3E0009 },
1407+
{ Opcode.SMSG_INVALIDATE_PAGE_TEXT, 0x3E000A }, // NYI
1408+
{ Opcode.SMSG_QUERY_PET_NAME_RESPONSE, 0x3E000B },
1409+
{ Opcode.SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, 0x3E000C },
1410+
{ Opcode.SMSG_QUERY_PETITION_RESPONSE, 0x3E000D },
1411+
{ Opcode.SMSG_CACHE_VERSION, 0x3E000E },
1412+
{ Opcode.SMSG_CACHE_INFO, 0x3E000F },
1413+
{ Opcode.SMSG_QUERY_ITEM_TEXT_RESPONSE, 0x3E0010 },
1414+
{ Opcode.SMSG_TREASURE_PICKER_RESPONSE, 0x3E0011 },
1415+
{ Opcode.SMSG_QUERY_ARENA_TEAM_RESPONSE, 0x3E0012 }, // NYI
14161416

14171417
{ Opcode.SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION, 0x400000 },
14181418
{ Opcode.SMSG_BATTLEFIELD_STATUS_ACTIVE, 0x400001 },

WowPacketParser/Misc/ClientVersion.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1693,6 +1693,10 @@ public static ClientVersionBuild GetVersionDefiningBuild(ClientVersionBuild buil
16931693
case ClientVersionBuild.V5_5_3_64802:
16941694
case ClientVersionBuild.V5_5_3_64857:
16951695
case ClientVersionBuild.V5_5_3_65746:
1696+
case ClientVersionBuild.V5_5_3_65890:
1697+
case ClientVersionBuild.V5_5_3_65988:
1698+
case ClientVersionBuild.V5_5_3_66128:
1699+
case ClientVersionBuild.V5_5_3_66290:
16961700
case ClientVersionBuild.V1_15_8_63829:
16971701
case ClientVersionBuild.V1_15_8_64057:
16981702
case ClientVersionBuild.V1_15_8_64130:
@@ -2398,6 +2402,10 @@ public static bool IsMoPClassicClientVersionBuild(ClientVersionBuild build)
23982402
case ClientVersionBuild.V5_5_3_64802:
23992403
case ClientVersionBuild.V5_5_3_64857:
24002404
case ClientVersionBuild.V5_5_3_65746:
2405+
case ClientVersionBuild.V5_5_3_65890:
2406+
case ClientVersionBuild.V5_5_3_65988:
2407+
case ClientVersionBuild.V5_5_3_66128:
2408+
case ClientVersionBuild.V5_5_3_66290:
24012409
return true;
24022410
default:
24032411
return false;
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
using Google.Protobuf.WellKnownTypes;
2+
using System;
3+
using System.Collections.Generic;
4+
using WowPacketParser.Enums;
5+
using WowPacketParser.Hotfix;
6+
using WowPacketParser.Misc;
7+
using WowPacketParser.Parsing;
8+
using WowPacketParser.Proto;
9+
using WowPacketParser.Store;
10+
using WowPacketParser.Store.Objects;
11+
12+
namespace WowPacketParserModule.V5_5_0_61735.Parsers
13+
{
14+
public static class HotfixHandler
15+
{
16+
[Parser(Opcode.SMSG_AVAILABLE_HOTFIXES)]
17+
public static void HandleAvailableHotfixes(Packet packet)
18+
{
19+
packet.ReadUInt32("VirtualRealmAddress");
20+
var hotfixCount = packet.ReadUInt32("HotfixCount");
21+
22+
for (var i = 0u; i < hotfixCount; ++i)
23+
{
24+
packet.ReadUInt32("UniqueID", i, "HotfixUniqueID");
25+
packet.ReadInt32("PushID", i, "HotfixUniqueID");
26+
}
27+
}
28+
29+
[Parser(Opcode.CMSG_HOTFIX_REQUEST)]
30+
public static void HandleHotfixRequest553(Packet packet)
31+
{
32+
packet.ReadUInt32("CurrentBuild");
33+
packet.ReadUInt32("InternalBuild");
34+
var hotfixCount = packet.ReadUInt32("HotfixCount");
35+
for (var i = 0u; i < hotfixCount; ++i)
36+
packet.ReadInt32("HotfixID", i);
37+
}
38+
39+
[Parser(Opcode.CMSG_DB_QUERY_BULK)]
40+
public static void HandleDbQueryBulk(Packet packet)
41+
{
42+
packet.ReadInt32E<DB2Hash>("TableHash");
43+
44+
var count = packet.ReadBits("Count", 13);
45+
for (var i = 0; i < count; ++i)
46+
packet.ReadInt32("RecordID", i);
47+
}
48+
}
49+
}

WowPacketParserModule.V5_5_0_61735/Parsers/NpcHandler.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,12 @@ public static GossipMessageOption ReadGossipOptionsData(uint menuId, WowGuid npc
3737
};
3838

3939
gossipOption.GossipOptionID = packet.ReadInt32("GossipOptionID", idx);
40-
gossipOption.OptionNpc = (GossipOptionNpc?)packet.ReadByte("OptionNPC", idx);
40+
41+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V5_5_3_64802))
42+
gossipOption.OptionNpc = (GossipOptionNpc?)packet.ReadInt32("OptionNPC", idx);
43+
else
44+
gossipOption.OptionNpc = (GossipOptionNpc?)packet.ReadByte("OptionNPC", idx);
45+
4146
gossipMessageOption.OptionNpc = (int)gossipOption.OptionNpc;
4247
gossipOption.BoxCoded = gossipMessageOption.BoxCoded = packet.ReadByte("OptionFlags", idx) != 0;
4348
gossipOption.BoxMoney = packet.ReadUInt64("OptionCost", idx);

WowPacketParserModule.V5_5_0_61735/Parsers/SpellHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ public static void ReadSpellTargetData553(Packet packet, PacketSpellData packetS
201201
{
202202
packet.ResetBitReader();
203203

204-
packet.ReadInt32("FlagsDupa", idx);
204+
packet.ReadInt32("Flags", idx);
205205

206206
var targetUnit = packet.ReadPackedGuid128("Unit", idx);
207207
if (packetSpellData != null)
@@ -984,7 +984,7 @@ public static void HandleAuraUpdate(Packet packet)
984984
// (opcjonalnie) packet.ResetBitReader(); // tylko jeśli zaraz potem miałbyś znowu ReadBit
985985
}
986986
}
987-
auras.Add(aura);
987+
auras.Add(aura);
988988
packet.AddSniffData(StoreNameType.Spell, (int)aura.SpellId, "AURA_UPDATE");
989989
}
990990
}

0 commit comments

Comments
 (0)