Skip to content

Commit 53120ff

Browse files
committed
Add 5.5.0 opcode handlers
SMSG_INVENTORY_CHANGE_FAILURE SMSG_BAG_CLEANUP_FINISHED SMSG_VOID_STORAGE_CONTENTS SMSG_VOID_ITEM_SWAP_RESPONSE SMSG_VOID_STORAGE_TRANSFER_CHANGES SMSG_VOID_TRANSFER_RESULT SMSG_OPEN_CONTAINER SMSG_VOID_STORAGE_FAILED
1 parent 4b2840e commit 53120ff

3 files changed

Lines changed: 105 additions & 1 deletion

File tree

WowPacketParser/Enums/Version/V5_5_0_61735/Opcodes.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1341,7 +1341,7 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
13411341
{ Opcode.SMSG_INVALID_PROMOTION_CODE, 0x3C01F2 },
13421342
{ Opcode.SMSG_INVALIDATE_PAGE_TEXT, 0x40000A }, // NYI
13431343
{ Opcode.SMSG_INVALIDATE_PLAYER, 0x4F0007 },
1344-
{ Opcode.SMSG_INVENTORY_CHANGE_FAILURE, 0x530005 },
1344+
{ Opcode.SMSG_INVENTORY_CHANGE_FAILURE, 0x530005 }, // NYI
13451345
{ Opcode.SMSG_INVENTORY_FIXUP_COMPLETE, 0x3C02B2 }, // NYI
13461346
{ Opcode.SMSG_INVENTORY_FULL_OVERFLOW, 0x3C02C3 },
13471347
{ Opcode.SMSG_IS_QUEST_COMPLETE_RESPONSE, 0x500004 }, // NYI

WowPacketParserModule.V5_5_0_61735/Parser/ItemHandler.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,44 @@ public static void HandleItemCooldown(Packet packet)
228228
packet.ReadInt32("Cooldown");
229229
}
230230

231+
[Parser(Opcode.SMSG_INVENTORY_CHANGE_FAILURE)]
232+
public static void HandleInventoryChangeFailure(Packet packet)
233+
{
234+
var result = packet.ReadInt32E<InventoryResult440>("BagResult");
235+
236+
for (int i = 0; i < 2; i++)
237+
packet.ReadPackedGuid128("Item", i);
238+
239+
packet.ReadByte("ContainerBSlot");
240+
241+
242+
switch (result)
243+
{
244+
case InventoryResult440.CantEquipLevel:
245+
case InventoryResult440.PurchaseLevelTooLow:
246+
{
247+
packet.ReadInt32("Level");
248+
break;
249+
}
250+
case InventoryResult440.EventAutoEquipBindConfirm:
251+
{
252+
packet.ReadPackedGuid128("SrcContainer");
253+
packet.ReadInt32("SrcSlot");
254+
packet.ReadPackedGuid128("DstContainer");
255+
break;
256+
}
257+
case InventoryResult440.ItemMaxLimitCategoryCountExceededIs:
258+
case InventoryResult440.ItemMaxLimitCategorySocketedExceededIs:
259+
case InventoryResult440.ItemMaxLimitCategoryEquippedExceededIs:
260+
{
261+
packet.ReadInt32("LimitCategory");
262+
break;
263+
}
264+
}
265+
}
266+
231267
[Parser(Opcode.SMSG_INVENTORY_FULL_OVERFLOW)]
268+
[Parser(Opcode.SMSG_BAG_CLEANUP_FINISHED)]
232269
public static void HandleItemZero(Packet packet)
233270
{
234271
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
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 VoidStorageHandler
8+
{
9+
public static void ReadVoidItem(Packet packet, params object[] index)
10+
{
11+
packet.ReadPackedGuid128("Guid", index);
12+
packet.ReadPackedGuid128("Creator", index);
13+
packet.ReadUInt32("Slot", index);
14+
15+
Substructures.ItemHandler.ReadItemInstance(packet, index);
16+
}
17+
18+
[Parser(Opcode.SMSG_VOID_STORAGE_CONTENTS)]
19+
public static void HandleVoidStorageContents(Packet packet)
20+
{
21+
var count = packet.ReadBits(8);
22+
for (var i = 0; i < count; ++i)
23+
ReadVoidItem(packet, i);
24+
}
25+
26+
[Parser(Opcode.SMSG_VOID_ITEM_SWAP_RESPONSE)]
27+
public static void HandleVoidItemSwapResponse(Packet packet)
28+
{
29+
packet.ReadPackedGuid128("VoidItemA");
30+
packet.ReadInt32("VoidItemSlotA");
31+
packet.ReadPackedGuid128("VoidItemB");
32+
packet.ReadInt32("VoidItemSlotB");
33+
}
34+
35+
[Parser(Opcode.SMSG_VOID_STORAGE_TRANSFER_CHANGES)]
36+
public static void HandleVoidStorageTransferChanges(Packet packet)
37+
{
38+
var bits32 = packet.ReadBits("AddedItemsCount", 4);
39+
var bits16 = packet.ReadBits("RemovedItemsCount", 4);
40+
41+
// AddedItems
42+
for (int i = 0; i < bits32; i++)
43+
ReadVoidItem(packet, "AddedItems", i);
44+
45+
// RemovedItems
46+
for (int i = 0; i < bits16; i++)
47+
packet.ReadPackedGuid128("RemovedItemsGuid", i);
48+
}
49+
50+
[Parser(Opcode.SMSG_VOID_TRANSFER_RESULT)]
51+
public static void HandleVoidTransferResults(Packet packet)
52+
{
53+
packet.ReadUInt32E<VoidTransferError>("Error");
54+
}
55+
56+
[Parser(Opcode.SMSG_OPEN_CONTAINER)]
57+
public static void HandleOpenContainer(Packet packet)
58+
{
59+
packet.ReadPackedGuid128("ItemGUID");
60+
}
61+
62+
[Parser(Opcode.SMSG_VOID_STORAGE_FAILED)]
63+
public static void HandleVoidStorageZero(Packet packet)
64+
{
65+
}
66+
}
67+
}

0 commit comments

Comments
 (0)