diff --git a/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs b/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs index eb7f5d9118..07362cd018 100644 --- a/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs +++ b/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs @@ -83,12 +83,29 @@ public static void ReadCraftingOrderItem(Packet packet, params object[] indexes) packet.ReadByte("DataSlotIndex", indexes); } + public static void ReadCraftingOrderCustomer(Packet packet, params object[] indexes) + { + packet.ReadPackedGuid128("CustomerGUID", indexes); + packet.ReadPackedGuid128("CustomerAccountGUID", indexes); + } + + public static void ReadCraftingOrderNpcCustomer(Packet packet, params object[] indexes) + { + packet.ReadInt64("NpcCraftingOrderCustomerID", indexes); + packet.ReadInt32("NpcCraftingOrderSetFlags", indexes); + } + public static void ReadCraftingOrderData(Packet packet, params object[] indexes) { packet.ReadInt32("field_0", indexes); packet.ReadUInt64("OrderID", indexes); packet.ReadInt32("SkillLineAbilityID", indexes); - packet.ReadByte("OrderState", indexes); + + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_1_5_60392)) + packet.ReadInt32("OrderState", indexes); + else + packet.ReadByte("OrderState", indexes); + packet.ReadByte("OrderType", indexes); packet.ReadByte("MinQuality", indexes); packet.ReadTime64("ExpirationTime", indexes); @@ -96,13 +113,30 @@ public static void ReadCraftingOrderData(Packet packet, params object[] indexes) packet.ReadUInt64("TipAmount", indexes); packet.ReadUInt64("ConsortiumCut", indexes); packet.ReadUInt32("Flags", indexes); - packet.ReadPackedGuid128("CustomerGUID", indexes); - packet.ReadPackedGuid128("CustomerAccountGUID", indexes); + + if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_2_55959)) + ReadCraftingOrderCustomer(packet, indexes, "Customer"); + packet.ReadPackedGuid128("CrafterGUID", indexes); packet.ReadPackedGuid128("PersonalCrafterGUID", indexes); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_2_55959)) + { + packet.ReadInt32("NpcCraftingOrderSetID", indexes); + packet.ReadInt32("NpcTreasureID", indexes); + } + var reagentsCount = packet.ReadUInt32(); var customerNotesLength = packet.ReadBits(10); + + var hasCustomer = false; + var hasNpcCraftingData = false; + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_2_55959)) + { + hasCustomer = packet.ReadBit(); + hasNpcCraftingData = packet.ReadBit(); + } + var hasOutputItem = packet.ReadBit(); var hasOutputItemData = packet.ReadBit(); @@ -113,6 +147,12 @@ public static void ReadCraftingOrderData(Packet packet, params object[] indexes) packet.ReadWoWString("CustomerNotes", customerNotesLength, indexes); + if (hasCustomer) + ReadCraftingOrderCustomer(packet, indexes, "Customer"); + + if (hasNpcCraftingData) + ReadCraftingOrderNpcCustomer(packet, indexes, "NpcCustomer"); + if (hasOutputItem) ReadCraftingOrderItem(packet, indexes, "OutputItem");