Skip to content

Commit 462d188

Browse files
committed
Add 5.5.0 opcode handlers
SMSG_ARCHAEOLOGY_SURVERY_CAST SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT SMSG_NOTIFY_MONEY SMSG_ROLE_CHANGED_INFORM SMSG_ROLE_POLL_INFORM SMSG_ITEM_PURCHASE_REFUND_RESULT SMSG_SET_ITEM_PURCHASE_DATA SMSG_ITEM_EXPIRE_PURCHASE_REFUND SMSG_REQUEST_CEMETERY_LIST_RESPONSE SMSG_NEW_WORLD SMSG_LOGIN_VERIFY_WORLD SMSG_ABORT_NEW_WORLD SMSG_PET_NEWLY_TAMED SMSG_PET_MODE SMSG_PET_STABLE_RESULT
1 parent d78bf3f commit 462d188

9 files changed

Lines changed: 184 additions & 10 deletions

File tree

WowPacketParser/Enums/Version/V5_5_0_61735/Opcodes.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -957,7 +957,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
957957
{ Opcode.SMSG_CANCEL_COMBAT, 0x420029 },
958958
{ Opcode.SMSG_CANCEL_ORPHAN_SPELL_VISUAL, 0x520035 },
959959
{ Opcode.SMSG_CANCEL_PING_PIN, 0x3C003C },
960-
{ Opcode.SMSG_CANCEL_PRELOAD_WORLD, 0x3C002F },
960+
{ Opcode.SMSG_CANCEL_PRELOAD_WORLD, 0x3C002F }, // NYI
961961
{ Opcode.SMSG_CANCEL_SCENE, 0x3C00D3 },
962962
{ Opcode.SMSG_CANCEL_SPELL_VISUAL, 0x520033 },
963963
{ Opcode.SMSG_CANCEL_SPELL_VISUAL_KIT, 0x520037 },
@@ -1008,7 +1008,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
10081008
{ Opcode.SMSG_CHEAT_IGNORE_DIMISHING_RETURNS, 0x520002 },
10091009
{ Opcode.SMSG_CHECK_ABANDON_NPE, 0x4F0023 }, // NYI
10101010
{ Opcode.SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT, 0x3C001B },
1011-
{ Opcode.SMSG_CHECK_WARGAME_ENTRY, 0x3C0028 },
1011+
{ Opcode.SMSG_CHECK_WARGAME_ENTRY, 0x3C0028 }, // NYI
10121012
{ Opcode.SMSG_CHROMIE_TIME_SELECT_EXPANSION_SUCCESS, 0x3C02F9 },
10131013
{ Opcode.SMSG_CLAIM_RAF_REWARD_RESPONSE, 0x3C02E0 },
10141014
{ Opcode.SMSG_CLEAR_ALL_SPELL_CHARGES, 0x520016 },
@@ -1080,7 +1080,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
10801080
{ Opcode.SMSG_DELETE_EXPIRED_MISSIONS_RESULT, 0x460022 },
10811081
{ Opcode.SMSG_DESTROY_ARENA_UNIT, 0x3C01E1 },
10821082
{ Opcode.SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, 0x3C0198 },
1083-
{ Opcode.SMSG_DIFFERENT_INSTANCE_FROM_PARTY, 0x3C0020 },
1083+
{ Opcode.SMSG_DIFFERENT_INSTANCE_FROM_PARTY, 0x3C0020 }, // NYI
10841084
{ Opcode.SMSG_DISENCHANT_CREDIT, 0x3C0040 },
10851085
{ Opcode.SMSG_DISMOUNT, 0x3C0150 },
10861086
{ Opcode.SMSG_DISMOUNT_RESULT, 0x3C0010 },
@@ -1243,7 +1243,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
12431243
{ Opcode.SMSG_GOSSIP_POI, 0x3C0237 },
12441244
{ Opcode.SMSG_GOSSIP_QUEST_UPDATE, 0x500019 }, // NYI
12451245
{ Opcode.SMSG_GOSSIP_REFRESH_OPTIONS, 0x500027 },
1246-
{ Opcode.SMSG_GROUP_ACTION_THROTTLED, 0x3C0025 },
1246+
{ Opcode.SMSG_GROUP_ACTION_THROTTLED, 0x3C0025 }, // NYI
12471247
{ Opcode.SMSG_GROUP_AUTO_KICK, 0x3C0234 },
12481248
{ Opcode.SMSG_GROUP_DECLINE, 0x3C0230 },
12491249
{ Opcode.SMSG_GROUP_DESTROYED, 0x3C0233 },
@@ -1658,7 +1658,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
16581658
{ Opcode.SMSG_POWER_UPDATE, 0x3C0171 },
16591659
{ Opcode.SMSG_PRE_RESSURECT, 0x3C020A },
16601660
{ Opcode.SMSG_PRELOAD_CHILD_MAP, 0x3C000D }, // NYI
1661-
{ Opcode.SMSG_PRELOAD_WORLD, 0x3C002D },
1661+
{ Opcode.SMSG_PRELOAD_WORLD, 0x3C002D }, // NYI
16621662
{ Opcode.SMSG_PREPOPULATE_NAME_CACHE, 0x3C02D1 },
16631663
{ Opcode.SMSG_PRINT_NOTIFICATION, 0x3C0064 },
16641664
{ Opcode.SMSG_PROC_RESIST, 0x3C01FA },
@@ -1743,8 +1743,8 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
17431743
{ Opcode.SMSG_REFORGE_RESULT, 0x3C0015 },
17441744
{ Opcode.SMSG_REFRESH_COMPONENT, 0x3C00ED },
17451745
{ Opcode.SMSG_REFRESH_SPELL_HISTORY, 0x52001B },
1746-
{ Opcode.SMSG_REGIONWIDE_CHARACTER_MAIL_DATA, 0x3C001A },
1747-
{ Opcode.SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA, 0x3C0019 },
1746+
{ Opcode.SMSG_REGIONWIDE_CHARACTER_MAIL_DATA, 0x3C001A }, // NYI
1747+
{ Opcode.SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA, 0x3C0019 }, // NYI
17481748
{ Opcode.SMSG_REMOVE_ITEM_PASSIVE, 0x3C0044 },
17491749
{ Opcode.SMSG_REMOVE_SPELL_FROM_ACTION_BAR, 0x520041 },
17501750
{ Opcode.SMSG_REPLACE_TROPHY_RESPONSE, 0x3C0264 },
@@ -1814,7 +1814,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
18141814
{ Opcode.SMSG_SET_FACTION_STANDING, 0x3C01CB },
18151815
{ Opcode.SMSG_SET_FACTION_VISIBLE, 0x3C01C9 },
18161816
{ Opcode.SMSG_SET_FLAT_SPELL_MODIFIER, 0x520025 },
1817-
{ Opcode.SMSG_SET_FORGE_MASTER, 0x3C0027 },
1817+
{ Opcode.SMSG_SET_FORGE_MASTER, 0x3C0027 }, // NYI
18181818
{ Opcode.SMSG_SET_ITEM_PURCHASE_DATA, 0x3C0034 },
18191819
{ Opcode.SMSG_SET_LOOT_METHOD_FAILED, 0x3C026F },
18201820
{ Opcode.SMSG_SET_MAX_WEEKLY_QUANTITY, 0x3C0037 },
@@ -1886,13 +1886,13 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
18861886
{ Opcode.SMSG_STREAMING_MOVIES, 0x3C003D },
18871887
{ Opcode.SMSG_SUGGEST_INVITE_INFORM, 0x3C0236 },
18881888
{ Opcode.SMSG_SUMMON_CANCEL, 0x3C014F },
1889-
{ Opcode.SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED, 0x3C0024 },
1889+
{ Opcode.SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED, 0x3C0024 }, // NYI
18901890
{ Opcode.SMSG_SUMMON_REQUEST, 0x3C01C0 },
18911891
{ Opcode.SMSG_SUPERCEDED_SPELLS, 0x52003B },
18921892
{ Opcode.SMSG_SUSPEND_COMMS, 0x430002 },
18931893
{ Opcode.SMSG_SUSPEND_TOKEN, 0x3C0041 },
18941894
{ Opcode.SMSG_SYNC_WOW_ENTITLEMENTS, 0x3C02F2 },
1895-
{ Opcode.SMSG_TALENT_GROUP_ROLE_CHANGED, 0x3C0023 },
1895+
{ Opcode.SMSG_TALENT_GROUP_ROLE_CHANGED, 0x3C0023 }, // NYI
18961896
{ Opcode.SMSG_TALENTS_INVOLUNTARILY_RESET, 0x3C01B7 },
18971897
{ Opcode.SMSG_TAXI_NODE_STATUS, 0x3C011B },
18981898
{ Opcode.SMSG_TEXT_EMOTE, 0x3C0119 },
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using WowPacketParser.Enums;
2+
using WowPacketParser.Misc;
3+
using WowPacketParser.Parsing;
4+
5+
namespace WowPacketParserModule.V5_5_0_61735.Parsers
6+
{
7+
public static class ArchaelogyHandler
8+
{
9+
[Parser(Opcode.SMSG_ARCHAEOLOGY_SURVERY_CAST)]
10+
public static void HandleArchaelogySurveryCast(Packet packet)
11+
{
12+
packet.ReadUInt32("TotalFinds");
13+
packet.ReadUInt32("NumFindsCompleted");
14+
packet.ReadInt32("ResearchBranchID");
15+
packet.ReadBit("SuccessfulFind");
16+
}
17+
}
18+
}

WowPacketParserModule.V5_5_0_61735/Parser/CharacterHandler.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,13 @@ public static void HandleEnumCharactersResult(Packet packet)
313313
ReadWarbandGroup(packet, i, "WarbandGroups");
314314
}
315315

316+
[Parser(Opcode.SMSG_CHECK_CHARACTER_NAME_AVAILABILITY_RESULT)]
317+
public static void HandleCheckCharacterNameAvailabilityResult(Packet packet)
318+
{
319+
packet.ReadUInt32("SequenceIndex");
320+
packet.ReadUInt32("Result");
321+
}
322+
316323
[Parser(Opcode.SMSG_PLAYER_CHOICE_CLEAR)]
317324
public static void HandleEmpty(Packet packet)
318325
{

WowPacketParserModule.V5_5_0_61735/Parser/CurrencyHandler.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,12 @@ public static void HandleSetCurrency(Packet packet)
110110
packet.ReadInt32("OverflownCurrencyID");
111111
}
112112

113+
[Parser(Opcode.SMSG_NOTIFY_MONEY)]
114+
public static void HandleNotifyMoney(Packet packet)
115+
{
116+
packet.ReadUInt64("Money");
117+
}
118+
113119
[Parser(Opcode.SMSG_RESET_WEEKLY_CURRENCY)]
114120
public static void HandleCurrencyZero(Packet packet)
115121
{

WowPacketParserModule.V5_5_0_61735/Parser/GroupHandler.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,22 @@ public static void HandleChangePlayerDifficultyResult(Packet packet)
3636
break;
3737
}
3838
}
39+
40+
[Parser(Opcode.SMSG_ROLE_CHANGED_INFORM)]
41+
public static void HandleRoleChangedInform(Packet packet)
42+
{
43+
packet.ReadByte("PartyIndex");
44+
packet.ReadPackedGuid128("From");
45+
packet.ReadPackedGuid128("ChangedUnit");
46+
packet.ReadByteE<LfgRoleFlag>("OldRole");
47+
packet.ReadByteE<LfgRoleFlag>("NewRole");
48+
}
49+
50+
[Parser(Opcode.SMSG_ROLE_POLL_INFORM)]
51+
public static void HandleRolePollInform(Packet packet)
52+
{
53+
packet.ReadByte("PartyIndex");
54+
packet.ReadPackedGuid128("From");
55+
}
3956
}
4057
}

WowPacketParserModule.V5_5_0_61735/Parser/ItemHandler.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,62 @@ public static void ReadUIEventToast(Packet packet, params object[] args)
1313
packet.ReadInt32("Asset", args);
1414
}
1515

16+
public static void ReadItemPurchaseRefundItem(Packet packet, params object[] indexes)
17+
{
18+
packet.ReadInt32<ItemId>("ItemID", indexes);
19+
packet.ReadInt32("ItemCount", indexes);
20+
}
21+
22+
public static void ReadItemPurchaseRefundCurrency(Packet packet, params object[] indexes)
23+
{
24+
packet.ReadInt32("CurrencyID", indexes);
25+
packet.ReadInt32("CurrencyCount", indexes);
26+
}
27+
28+
public static void ReadItemPurchaseContents(Packet packet, params object[] indexes)
29+
{
30+
packet.ReadUInt64("Money");
31+
32+
for (int i = 0; i < 5; i++)
33+
ReadItemPurchaseRefundItem(packet, indexes, i, "ItemPurchaseRefundItem");
34+
35+
for (int i = 0; i < 5; i++)
36+
ReadItemPurchaseRefundCurrency(packet, indexes, i, "ItemPurchaseRefundCurrency");
37+
}
38+
1639
[Parser(Opcode.SMSG_REFORGE_RESULT)]
1740
public static void HandleItemReforgeResult(Packet packet)
1841
{
1942
packet.ReadBit("Successful");
2043
}
44+
45+
[Parser(Opcode.SMSG_ITEM_PURCHASE_REFUND_RESULT)]
46+
public static void HandleItemPurchaseRefundResult(Packet packet)
47+
{
48+
packet.ReadPackedGuid128("ItemGUID");
49+
packet.ReadByte("Result");
50+
var hasContents = packet.ReadBit("HasContents");
51+
packet.ResetBitReader();
52+
53+
if (hasContents)
54+
ReadItemPurchaseContents(packet, "Contents");
55+
}
56+
57+
[Parser(Opcode.SMSG_SET_ITEM_PURCHASE_DATA)]
58+
public static void HandleSetItemPurchaseData(Packet packet)
59+
{
60+
packet.ReadPackedGuid128("ItemGUID");
61+
62+
ReadItemPurchaseContents(packet, "ItemPurchaseContents");
63+
64+
packet.ReadInt32("Flags");
65+
packet.ReadInt32("PurchaseTime");
66+
}
67+
68+
[Parser(Opcode.SMSG_ITEM_EXPIRE_PURCHASE_REFUND)]
69+
public static void HandleItemExpirePurchaseRefund(Packet packet)
70+
{
71+
packet.ReadPackedGuid128("ItemGUID");
72+
}
2173
}
2274
}

WowPacketParserModule.V5_5_0_61735/Parser/MiscellaneousHandler.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,16 @@ public static void HandleInitialSetup(Packet packet)
117117
packet.ReadByte("ServerExpansionTier");
118118
}
119119

120+
[Parser(Opcode.SMSG_REQUEST_CEMETERY_LIST_RESPONSE)]
121+
public static void HandleRequestCemeteryListResponse(Packet packet)
122+
{
123+
packet.ReadBit("IsTriggered");
124+
125+
var count = packet.ReadUInt32("Count");
126+
for (int i = 0; i < count; ++i)
127+
packet.ReadInt32("CemeteryID", i);
128+
}
129+
120130
[Parser(Opcode.SMSG_CLEAR_RESURRECT)]
121131
public static void HandleMiscZero(Packet packet)
122132
{

WowPacketParserModule.V5_5_0_61735/Parser/MovementHandler.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,5 +104,31 @@ public static void HandleBindPointUpdate(Packet packet)
104104
packet.ReadInt32<AreaId>("AreaId");
105105

106106
}
107+
108+
[HasSniffData]
109+
[Parser(Opcode.SMSG_NEW_WORLD)]
110+
public static void HandleNewWorld(Packet packet)
111+
{
112+
CoreParsers.MovementHandler.CurrentMapId = (uint)packet.ReadInt32<MapId>("Map");
113+
packet.ReadVector4("Position");
114+
packet.ReadUInt32("Reason");
115+
packet.ReadVector3("MovementOffset");
116+
packet.ReadInt32("Counter");
117+
118+
packet.AddSniffData(StoreNameType.Map, (int)CoreParsers.MovementHandler.CurrentMapId, "NEW_WORLD");
119+
}
120+
121+
[Parser(Opcode.SMSG_LOGIN_VERIFY_WORLD)]
122+
public static void HandleLoginVerifyWorld(Packet packet)
123+
{
124+
CoreParsers.MovementHandler.CurrentMapId = (uint)packet.ReadInt32<MapId>("Map");
125+
packet.ReadVector4("Position");
126+
packet.ReadUInt32("Reason");
127+
}
128+
129+
[Parser(Opcode.SMSG_ABORT_NEW_WORLD)]
130+
public static void HandleMovementZero(Packet packet)
131+
{
132+
}
107133
}
108134
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using WowPacketParser.Enums;
2+
using WowPacketParser.Misc;
3+
using WowPacketParser.Parsing;
4+
5+
6+
namespace WowPacketParserModule.V5_5_0_61735.Parsers
7+
{
8+
public static class PetHandler
9+
{
10+
public static void ReadPetFlags(Packet packet, params object[] idx)
11+
{
12+
packet.ReadByteE<CommandState>("CommandState");
13+
packet.ReadByte("Flag");
14+
packet.ReadByteE<ReactState>("ReactState");
15+
}
16+
17+
[Parser(Opcode.SMSG_PET_NEWLY_TAMED)]
18+
public static void HandlePetNewlyTamed(Packet packet)
19+
{
20+
packet.ReadPackedGuid128("GUID");
21+
packet.ResetBitReader();
22+
packet.ReadBit("SuppressLevelUpAnim");
23+
}
24+
25+
[Parser(Opcode.SMSG_PET_MODE)]
26+
public static void HandlePetMode(Packet packet)
27+
{
28+
packet.ReadPackedGuid128("PetGUID");
29+
ReadPetFlags(packet, "PetModeAndOrders");
30+
}
31+
32+
[Parser(Opcode.SMSG_PET_STABLE_RESULT)]
33+
public static void HandlePetStableResult(Packet packet)
34+
{
35+
packet.ReadUInt32E<PetStableResult>("Result");
36+
}
37+
}
38+
}

0 commit comments

Comments
 (0)