From 071971ac0320d28b942040bd84aca2f995812d4c Mon Sep 17 00:00:00 2001 From: ModoX Date: Sun, 4 Aug 2024 20:25:00 +0200 Subject: [PATCH] Updated some packets to 11.0.0 --- .../Enums/PlayerInteractionType.cs | 76 ++++++++ WowPacketParser/Enums/TargetedDatabase.cs | 3 +- WowPacketParser/SQL/Builders/WDBTemplates.cs | 17 ++ .../Store/Objects/QuestTemplate.cs | 2 +- .../Store/Objects/QuestTreasurePickers.cs | 19 ++ WowPacketParser/Store/Storage.cs | 2 + .../Parsers/QueryHandler.cs | 59 +++++- .../Parsers/BankHandler.cs | 17 ++ .../Parsers/CharacterHandler.cs | 7 +- .../Parsers/CombatLogHandler.cs | 5 +- .../Parsers/SessionHandler.cs | 7 +- .../Parsers/AuctionHouseHandler.cs | 181 +++++++++++++++++- .../Parsers/ItemHandler.cs | 14 +- .../Parsers/SpellHandler.cs | 5 +- .../Parsers/AreaTriggerHandler.cs | 2 + .../Parsers/GarrisonHandler.cs | 10 +- .../Parsers/SpellHandler.cs | 5 +- 17 files changed, 412 insertions(+), 19 deletions(-) create mode 100644 WowPacketParser/Enums/PlayerInteractionType.cs create mode 100644 WowPacketParser/Store/Objects/QuestTreasurePickers.cs create mode 100644 WowPacketParserModule.V11_0_0_55666/Parsers/BankHandler.cs diff --git a/WowPacketParser/Enums/PlayerInteractionType.cs b/WowPacketParser/Enums/PlayerInteractionType.cs new file mode 100644 index 0000000000..350ea3a9eb --- /dev/null +++ b/WowPacketParser/Enums/PlayerInteractionType.cs @@ -0,0 +1,76 @@ + +namespace WowPacketParser.Enums +{ + public enum PlayerInteractionType : uint + { + None = 0, + TradePartner = 1, + Item = 2, + Gossip = 3, + QuestGiver = 4, + Merchant = 5, + TaxiNode = 6, + Trainer = 7, + Banker = 8, + AlliedRaceDetailsGiver = 9, + GuildBanker = 10, + Registrar = 11, + Vendor = 12, + PetitionVendor = 13, + GuildTabardVendor = 14, + TalentMaster = 15, + SpecializationMaster = 16, + MailInfo = 17, + SpiritHealer = 18, + AreaSpiritHealer = 19, + Binder = 20, + Auctioneer = 21, + StableMaster = 22, + BattleMaster = 23, + Transmogrifier = 24, + LFGDungeon = 25, + VoidStorageBanker = 26, + BlackMarketAuctioneer = 27, + AdventureMap = 28, + WorldMap = 29, + GarrArchitect = 30, + GarrTradeskill = 31, + GarrMission = 32, + ShipmentCrafter = 33, + GarrRecruitment = 34, + GarrTalent = 35, + Trophy = 36, + PlayerChoice = 37, + ArtifactForge = 38, + ObliterumForge = 39, + ScrappingMachine = 40, + ContributionCollector = 41, + AzeriteRespec = 42, + IslandQueue = 43, + ItemInteraction = 44, + ChromieTime = 45, + CovenantPreview = 46, + AnimaDiversion = 47, + LegendaryCrafting = 48, + WeeklyRewards = 49, + Soulbind = 50, + CovenantSanctum = 51, + NewPlayerGuide = 52, + ItemUpgrade = 53, + AdventureJournal = 54, + Renown = 55, + AzeriteForge = 56, + PerksProgramVendor = 57, + ProfessionsCraftingOrder = 58, + Professions = 59, + ProfessionsCustomerOrder = 60, + TraitSystem = 61, + BarbersChoice = 62, + JailersTowerBuffs = 63, + MajorFactionRenown = 64, + PersonalTabardVendor = 65, + ForgeMaster = 66, + CharacterBanker = 67, + AccountBanker = 68 + } +} diff --git a/WowPacketParser/Enums/TargetedDatabase.cs b/WowPacketParser/Enums/TargetedDatabase.cs index 344df06e9d..5b7c4c3be5 100644 --- a/WowPacketParser/Enums/TargetedDatabase.cs +++ b/WowPacketParser/Enums/TargetedDatabase.cs @@ -66,6 +66,7 @@ public enum TargetedDatabaseFlag : uint SinceWarlordsOfDraenor = WarlordsOfDraenor | SinceLegion, SinceCataclysm = Cataclysm | SinceWarlordsOfDraenor, - SinceWarlordsOfDraenorTillShadowLands = WarlordsOfDraenor | Legion | BattleForAzeroth | Shadowlands + SinceWarlordsOfDraenorTillShadowLands = WarlordsOfDraenor | Legion | BattleForAzeroth | Shadowlands, + SinceBattleForAzerothTillDragonflight = BattleForAzeroth | Shadowlands | Dragonflight } } diff --git a/WowPacketParser/SQL/Builders/WDBTemplates.cs b/WowPacketParser/SQL/Builders/WDBTemplates.cs index 8747229314..0370e3747e 100644 --- a/WowPacketParser/SQL/Builders/WDBTemplates.cs +++ b/WowPacketParser/SQL/Builders/WDBTemplates.cs @@ -77,6 +77,23 @@ public static string QuestRewardDisplaySpell() return SQLUtil.Compare(Storage.QuestRewardDisplaySpells, templatesDb, StoreNameType.None); } + [BuilderMethod(true)] + public static string QuestTreasurePickers() + { + if (!Settings.SQLOutputFlag.HasAnyFlagBit(SQLOutput.quest_template)) + return string.Empty; + + if (Settings.TargetedDatabase < TargetedDatabase.TheWarWithin) + return string.Empty; + + if (Storage.QuestTreasurePickersStorage.IsEmpty()) + return string.Empty; + + var templateDb = SQLDatabase.Get(Storage.QuestTreasurePickersStorage); + + return SQLUtil.Compare(Storage.QuestTreasurePickersStorage, templateDb, StoreNameType.Quest); + } + [BuilderMethod(true, Units = true)] public static string CreatureTemplate(Dictionary units) { diff --git a/WowPacketParser/Store/Objects/QuestTemplate.cs b/WowPacketParser/Store/Objects/QuestTemplate.cs index 9e2a32734e..6f01a63f47 100644 --- a/WowPacketParser/Store/Objects/QuestTemplate.cs +++ b/WowPacketParser/Store/Objects/QuestTemplate.cs @@ -261,7 +261,7 @@ public sealed record QuestTemplate : IDataModel public ulong? AllowableRacesWod; [DBFieldName("QuestRewardID", TargetedDatabaseFlag.Legion)] - [DBFieldName("TreasurePickerID", TargetedDatabaseFlag.SinceBattleForAzeroth | TargetedDatabaseFlag.AnyClassic)] + [DBFieldName("TreasurePickerID", TargetedDatabaseFlag.SinceBattleForAzerothTillDragonflight | TargetedDatabaseFlag.AnyClassic)] public int? QuestRewardID; [DBFieldName("Expansion", TargetedDatabaseFlag.SinceLegion | TargetedDatabaseFlag.AnyClassic)] diff --git a/WowPacketParser/Store/Objects/QuestTreasurePickers.cs b/WowPacketParser/Store/Objects/QuestTreasurePickers.cs new file mode 100644 index 0000000000..e99aa3a504 --- /dev/null +++ b/WowPacketParser/Store/Objects/QuestTreasurePickers.cs @@ -0,0 +1,19 @@ +using WowPacketParser.Enums; +using WowPacketParser.Misc; +using WowPacketParser.SQL; + +namespace WowPacketParser.Store.Objects +{ + [DBTableName("quest_treasure_pickers")] + public sealed record QuestTreasurePickers : IDataModel + { + [DBFieldName("QuestID", true)] + public uint? QuestID; + + [DBFieldName("TreasurePickerID", true)] + public int? TreasurePickerID; + + [DBFieldName("OrderIndex", true)] + public int? OrderIndex; + } +} diff --git a/WowPacketParser/Store/Storage.cs b/WowPacketParser/Store/Storage.cs index 236211222b..499fb8704f 100644 --- a/WowPacketParser/Store/Storage.cs +++ b/WowPacketParser/Store/Storage.cs @@ -37,6 +37,7 @@ public static class Storage public static readonly DataBag QuestObjectives = new DataBag(new List { SQLOutput.quest_template }); public static readonly DataBag QuestVisualEffects = new DataBag(new List { SQLOutput.quest_template }); public static readonly DataBag QuestRewardDisplaySpells = new DataBag(new List { SQLOutput.quest_template }); + public static readonly DataBag QuestTreasurePickersStorage = new DataBag(new List { SQLOutput.quest_template }); public static readonly StoreDictionary CreatureTemplates = new StoreDictionary(new List { SQLOutput.creature_template }); public static readonly DataBag CreatureTemplatesClassic = new DataBag(new List { SQLOutput.creature_template }); public static readonly DataBag CreatureTemplatesNonWDB = new DataBag(new List { SQLOutput.creature_template }); @@ -1599,6 +1600,7 @@ public static void ClearContainers() QuestObjectives.Clear(); QuestVisualEffects.Clear(); QuestRewardDisplaySpells.Clear(); + QuestTreasurePickersStorage.Clear(); CreatureTemplates.Clear(); CreatureTemplatesClassic.Clear(); CreatureTemplatesNonWDB.Clear(); diff --git a/WowPacketParserModule.V10_0_0_46181/Parsers/QueryHandler.cs b/WowPacketParserModule.V10_0_0_46181/Parsers/QueryHandler.cs index 41ae5888f7..b121ef8cae 100644 --- a/WowPacketParserModule.V10_0_0_46181/Parsers/QueryHandler.cs +++ b/WowPacketParserModule.V10_0_0_46181/Parsers/QueryHandler.cs @@ -148,7 +148,12 @@ public static void HandleQuestQueryResponse(Packet packet) var objectiveCount = packet.ReadUInt32("ObjectiveCount"); quest.AllowableRacesWod = packet.ReadUInt64("AllowableRaces"); - quest.QuestRewardID = packet.ReadInt32("TreasurePickerID"); + var treasurePickerCount = 0u; + if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin)) + quest.QuestRewardID = packet.ReadInt32("TreasurePickerID"); + else + treasurePickerCount = packet.ReadUInt32(); + quest.Expansion = packet.ReadInt32("Expansion"); quest.ManagedWorldStateID = packet.ReadInt32("ManagedWorldStateID"); quest.QuestSessionBonus = packet.ReadInt32("QuestSessionBonus"); @@ -160,6 +165,17 @@ public static void HandleQuestQueryResponse(Packet packet) for (uint i = 0; i < rewardDisplaySpellCount; ++i) ReadQuestCompleteDisplaySpell(packet, (uint)id.Key, i, i, "RewardDisplaySpell"); + for (uint i = 0; i < treasurePickerCount; ++i) + { + var treasurePickerID = packet.ReadInt32("TreasurePickerID"); + QuestTreasurePickers pickers = new() + { + QuestID = quest.ID, + TreasurePickerID = treasurePickerID, + OrderIndex = (int)i + }; + Storage.QuestTreasurePickersStorage.Add(pickers); + } packet.ResetBitReader(); uint logTitleLen = packet.ReadBits("logTitleLen", 9); @@ -172,6 +188,8 @@ public static void HandleQuestQueryResponse(Packet packet) uint questTurnTargetNameLen = packet.ReadBits("questTurnTargetNameLen", 8); uint questCompletionLogLen = packet.ReadBits("questCompletionLogLen", 11); packet.ReadBit("ReadyForTranslation"); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666)) + packet.ReadBit("ResetByScheduler"); for (uint i = 0; i < objectiveCount; ++i) { @@ -182,7 +200,12 @@ public static void HandleQuestQueryResponse(Packet packet) ID = (uint)objectiveId.Key, QuestID = (uint)id.Key }; - questInfoObjective.Type = packet.ReadByteE("Quest Requirement Type", i); + + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666)) + questInfoObjective.Type = packet.ReadUInt32E("QuestRequirementType", i); + else + questInfoObjective.Type = packet.ReadByteE("QuestRequirementType", i); + questInfoObjective.StorageIndex = packet.ReadSByte("StorageIndex", i); questInfoObjective.Order = i; questInfoObjective.ObjectID = packet.ReadInt32("ObjectID", i); @@ -270,5 +293,37 @@ public static void HandleQuestQueryResponse(Packet packet) Storage.QuestTemplates.Add(quest, packet.TimeSpan); } + + [Parser(Opcode.CMSG_SPAWN_TRACKING_UPDATE)] + public static void HandleSpawnTrackingVignette(Packet packet) + { + var count = packet.ReadUInt32("SpawnTrackingCount"); + + for (var i = 0; i < count; i++) + { + packet.ReadUInt32("SpawnTrackingID", i); + packet.ReadInt32("ObjectID", i); + packet.ReadInt32("ObjectTypeMask", i); + } + } + + [Parser(Opcode.SMSG_QUEST_POI_UPDATE_RESPONSE)] + public static void HandleQuestPOIUpdateResponse(Packet packet) + { + var count = packet.ReadUInt32("SpawnTrackingCount"); + + for (var i = 0; i < count; i++) + { + var spawnTrackingId = packet.ReadUInt32("SpawnTrackingID", i); + packet.ReadInt32("ObjectID", i); + var phaseId = packet.ReadInt32("PhaseID", i); + var phaseGroup = packet.ReadInt32("PhaseGroupID", i); + var phaseUseFlags = packet.ReadInt32("PhaseUseFlags", i); + + packet.ResetBitReader(); + + packet.ReadBit("Visible", i); + } + } } } diff --git a/WowPacketParserModule.V11_0_0_55666/Parsers/BankHandler.cs b/WowPacketParserModule.V11_0_0_55666/Parsers/BankHandler.cs new file mode 100644 index 0000000000..66ad0a779c --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/Parsers/BankHandler.cs @@ -0,0 +1,17 @@ +using System.Text; +using WowPacketParser.Enums; +using WowPacketParser.Misc; +using WowPacketParser.Parsing; + +namespace WowPacketParserModule.V11_0_0_55666.Parsers +{ + public static class BankHandler + { + [Parser(Opcode.CMSG_BANKER_ACTIVATE)] + public static void HandleBankerActivate(Packet packet) + { + packet.ReadPackedGuid128("Banker"); + packet.ReadInt32E("InteractionType"); + } + } +} diff --git a/WowPacketParserModule.V6_0_2_19033/Parsers/CharacterHandler.cs b/WowPacketParserModule.V6_0_2_19033/Parsers/CharacterHandler.cs index db4bee2896..5ed53791c1 100644 --- a/WowPacketParserModule.V6_0_2_19033/Parsers/CharacterHandler.cs +++ b/WowPacketParserModule.V6_0_2_19033/Parsers/CharacterHandler.cs @@ -154,8 +154,13 @@ public static void HandlePowerUpdate(Packet packet) var int32 = packet.ReadInt32("Count"); for (var i = 0; i < int32; i++) { - packet.ReadInt32("Power", i); + if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin)) + packet.ReadInt32("Power", i); + packet.ReadByteE("PowerType", i); + + if (ClientVersion.AddedInVersion(ClientType.TheWarWithin)) + packet.ReadInt32("Power", i); } } diff --git a/WowPacketParserModule.V6_0_2_19033/Parsers/CombatLogHandler.cs b/WowPacketParserModule.V6_0_2_19033/Parsers/CombatLogHandler.cs index 7e344d22de..56b3cc1b83 100644 --- a/WowPacketParserModule.V6_0_2_19033/Parsers/CombatLogHandler.cs +++ b/WowPacketParserModule.V6_0_2_19033/Parsers/CombatLogHandler.cs @@ -164,7 +164,10 @@ public static void HandleSpellLogExecute(Packet packet) { packet.ReadPackedGuid128("Victim"); packet.ReadInt32("Points"); - packet.ReadInt32("PowerType"); + if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin)) + packet.ReadUInt32E("PowerType"); + else + packet.ReadByteE("PowerType"); packet.ReadSingle("Amplitude"); } diff --git a/WowPacketParserModule.V6_0_2_19033/Parsers/SessionHandler.cs b/WowPacketParserModule.V6_0_2_19033/Parsers/SessionHandler.cs index c5a63bb353..cb4cffb676 100644 --- a/WowPacketParserModule.V6_0_2_19033/Parsers/SessionHandler.cs +++ b/WowPacketParserModule.V6_0_2_19033/Parsers/SessionHandler.cs @@ -325,8 +325,13 @@ public static void HandleTimeQueryResponse(Packet packet) [Parser(Opcode.CMSG_CONNECT_TO_FAILED)] public static void HandleRedirectFailed(Packet packet) { - packet.ReadUInt32("Serial"); + if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin)) + packet.ReadUInt32("Serial"); + packet.ReadSByte("Con"); + + if (ClientVersion.AddedInVersion(ClientType.TheWarWithin)) + packet.ReadUInt32("Serial"); } [Parser(Opcode.CMSG_SUSPEND_TOKEN_RESPONSE)] diff --git a/WowPacketParserModule.V8_0_1_27101/Parsers/AuctionHouseHandler.cs b/WowPacketParserModule.V8_0_1_27101/Parsers/AuctionHouseHandler.cs index 12d20bef29..322d0c61ea 100644 --- a/WowPacketParserModule.V8_0_1_27101/Parsers/AuctionHouseHandler.cs +++ b/WowPacketParserModule.V8_0_1_27101/Parsers/AuctionHouseHandler.cs @@ -9,7 +9,10 @@ public static class AuctionHouseHandler public static void ReadAuctionSortDef(Packet packet, params object[] idx) { packet.ResetBitReader(); - packet.ReadBits("SortOrder", 4, idx); ; + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666)) + packet.ReadByte("SortOrder", idx); + else + packet.ReadBits("SortOrder", 4, idx); packet.ReadBit("ReverseSort", idx); } @@ -21,11 +24,29 @@ public static void ReadAuctionListFilterSubClass(Packet packet, params object[] public static void ReadAuctionListFilterClass(Packet packet, params object[] idx) { - packet.ReadInt32("FilterClass"); + packet.ReadInt32("FilterClass", idx); packet.ResetBitReader(); - var subClassFilterCount = packet.ReadBits("SubClassFilterCount", 5); + var subClassFilterCount = packet.ReadBits("SubClassFilterCount", 5, idx); for (var i = 0; i < subClassFilterCount; i++) - ReadAuctionListFilterSubClass(packet, i, "SubClassFilter"); + ReadAuctionListFilterSubClass(packet, i, "SubClassFilter", i, idx); + } + + public static void ReadAuctionBucketKey(Packet packet, params object[] idx) + { + packet.ResetBitReader(); + packet.ReadBits("ItemID", 20, idx); + + var hasBattlePetSpeciesID = packet.ReadBit(); + + packet.ReadBits("ItemLevel", 11, idx); + + var hasSuffixItemNameDescriptionID = packet.ReadBit(); + + if (hasBattlePetSpeciesID) + packet.ReadUInt16("BattlePetSpeciesID", idx); + + if (hasSuffixItemNameDescriptionID) + packet.ReadUInt16("SuffixItemNameDescriptionID", idx); } [Parser(Opcode.CMSG_AUCTION_BROWSE_QUERY)] @@ -56,8 +77,11 @@ public static void HandleAuctionBrowseQuery(Packet packet) var itemClassFilterSize = packet.ReadBits(3); var sortsSize = packet.ReadBits(2); - for (var i = 0; i < sortsSize; i++) - ReadAuctionSortDef(packet, i, "SortDef"); + if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortsSize; i++) + ReadAuctionSortDef(packet, i, "SortDef"); + } if (taintedBy) AddonHandler.ReadAddOnInfo(packet, "TaintedBy"); @@ -66,6 +90,151 @@ public static void HandleAuctionBrowseQuery(Packet packet) for (var i = 0; i < itemClassFilterSize; i++) ReadAuctionListFilterClass(packet, i, "FilterClass"); + + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortsSize; i++) + ReadAuctionSortDef(packet, i, "SortDef"); + } + } + + [Parser(Opcode.CMSG_AUCTION_LIST_BIDDED_ITEMS)] + public static void HandleAuctionListBiddedItems(Packet packet) + { + packet.ReadPackedGuid128("Auctioneer"); + packet.ReadUInt32("Offset"); + + var taintedBy = packet.ReadBit(); + + var auctionIdsCount= packet.ReadBits(7); + var sortCount = packet.ReadBits(2); + + if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortCount; i++) + ReadAuctionSortDef(packet, i); + } + + if (taintedBy) + AddonHandler.ReadAddOnInfo(packet, "TaintedBy"); + + for (var i = 0; i < auctionIdsCount; i++) + packet.ReadUInt32("AuctionID", i); + + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortCount; i++) + ReadAuctionSortDef(packet, i); + } + } + + [Parser(Opcode.CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS)] + public static void HandleAuctionListBucketsByBucketKeys(Packet packet) + { + packet.ReadPackedGuid128("Auctioneer"); + + var taintedBy = packet.ReadBit(); + + var bucketKeysCount = packet.ReadBits(7); + var sortCount = packet.ReadBits(2); + + if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortCount; i++) + ReadAuctionSortDef(packet, i); + } + + if (taintedBy) + AddonHandler.ReadAddOnInfo(packet, "TaintedBy"); + + for (var i = 0; i < bucketKeysCount; i++) + ReadAuctionBucketKey(packet, i); + + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortCount; i++) + ReadAuctionSortDef(packet, i); + } + } + + [Parser(Opcode.CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY)] + public static void HandleAuctionListItemsByBucketKey(Packet packet) + { + packet.ReadPackedGuid128("Auctioneer"); + packet.ReadUInt32("Offset"); + packet.ReadByte("Unknown830"); + + var taintedBy = packet.ReadBit(); + var sortCount = packet.ReadBits(2); + + if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortCount; i++) + ReadAuctionSortDef(packet, i); + } + + ReadAuctionBucketKey(packet, "BucketKey"); + + if (taintedBy) + AddonHandler.ReadAddOnInfo(packet, "TaintedBy"); + + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortCount; i++) + ReadAuctionSortDef(packet, i); + } + } + + [Parser(Opcode.CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID)] + public static void HandleAuctionListItemsByItemID(Packet packet) + { + packet.ReadPackedGuid128("Auctioneer"); + packet.ReadInt32("ItemID"); + packet.ReadInt32("SuffixItemNameDescriptionID"); + packet.ReadUInt32("Offset"); + + var taintedBy = packet.ReadBit(); + var sortCount = packet.ReadBits(2); + + if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortCount; i++) + ReadAuctionSortDef(packet, i); + } + + if (taintedBy) + AddonHandler.ReadAddOnInfo(packet, "TaintedBy"); + + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortCount; i++) + ReadAuctionSortDef(packet, i); + } + } + + [Parser(Opcode.CMSG_AUCTION_LIST_OWNED_ITEMS)] + public static void HandleAuctionListOwnedItems(Packet packet) + { + packet.ReadPackedGuid128("Auctioneer"); + packet.ReadUInt32("Offset"); + + var taintedBy = packet.ReadBit(); + var sortCount = packet.ReadBits(2); + + if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortCount; i++) + ReadAuctionSortDef(packet, i); + } + + if (taintedBy) + AddonHandler.ReadAddOnInfo(packet, "TaintedBy"); + + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666)) + { + for (var i = 0; i < sortCount; i++) + ReadAuctionSortDef(packet, i); + } } } } diff --git a/WowPacketParserModule.V8_0_1_27101/Parsers/ItemHandler.cs b/WowPacketParserModule.V8_0_1_27101/Parsers/ItemHandler.cs index 47cbf1513b..a60bcb215e 100644 --- a/WowPacketParserModule.V8_0_1_27101/Parsers/ItemHandler.cs +++ b/WowPacketParserModule.V8_0_1_27101/Parsers/ItemHandler.cs @@ -9,10 +9,20 @@ public static class ItemHandler [Parser(Opcode.CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER)] public static void HandleItemAzerithEmpoweredItemSelectPower(Packet packet) { - packet.ReadInt32("AzeriteTier"); - packet.ReadInt32("AzeritePowerID"); + if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin)) + { + packet.ReadInt32("AzeriteTier"); + packet.ReadInt32("AzeritePowerID"); + } + packet.ReadByte("ContainerSlot"); packet.ReadByte("Slot"); + + if (ClientVersion.AddedInVersion(ClientType.TheWarWithin)) + { + packet.ReadByte("AzeriteTier"); + packet.ReadInt32("AzeritePowerID"); + } } [Parser(Opcode.CMSG_AZERITE_EMPOWERED_ITEM_VIEWED)] diff --git a/WowPacketParserModule.V8_0_1_27101/Parsers/SpellHandler.cs b/WowPacketParserModule.V8_0_1_27101/Parsers/SpellHandler.cs index ce72ea9de4..3c83cd42e3 100644 --- a/WowPacketParserModule.V8_0_1_27101/Parsers/SpellHandler.cs +++ b/WowPacketParserModule.V8_0_1_27101/Parsers/SpellHandler.cs @@ -201,7 +201,10 @@ public static void ReadSpellCastLogData(Packet packet, params object[] idx) // SpellLogPowerData for (var i = 0; i < spellLogPowerDataCount; ++i) { - packet.ReadInt32("PowerType", idx, i); + if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin)) + packet.ReadInt32E("PowerType", idx, i); + else + packet.ReadByteE("PowerType"); packet.ReadInt32("Amount", idx, i); packet.ReadInt32("Cost", idx, i); } diff --git a/WowPacketParserModule.V9_0_1_36216/Parsers/AreaTriggerHandler.cs b/WowPacketParserModule.V9_0_1_36216/Parsers/AreaTriggerHandler.cs index 1a8b4f587f..f129188f13 100644 --- a/WowPacketParserModule.V9_0_1_36216/Parsers/AreaTriggerHandler.cs +++ b/WowPacketParserModule.V9_0_1_36216/Parsers/AreaTriggerHandler.cs @@ -16,6 +16,8 @@ public static void ReadAreaTriggerMovementScript(Packet packet, params object[] public static void HandleAreaTriggerReShape(Packet packet) { packet.ReadPackedGuid128("TriggerGUID"); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666)) + packet.ReadPackedGuid128("Unused_1100"); packet.ResetBitReader(); var hasAreaTriggerSpline = packet.ReadBit("HasAreaTriggerSpline"); diff --git a/WowPacketParserModule.V9_0_1_36216/Parsers/GarrisonHandler.cs b/WowPacketParserModule.V9_0_1_36216/Parsers/GarrisonHandler.cs index 147fd1aa32..4e006f4b1a 100644 --- a/WowPacketParserModule.V9_0_1_36216/Parsers/GarrisonHandler.cs +++ b/WowPacketParserModule.V9_0_1_36216/Parsers/GarrisonHandler.cs @@ -10,7 +10,10 @@ public static void ReadGarrisonPlotInfo(Packet packet, params object[] indexes) { packet.ReadUInt32("GarrPlotInstanceID", indexes); packet.ReadVector4("PlotPos", indexes); - packet.ReadUInt32("PlotType", indexes); + if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin)) + packet.ReadUInt32("PlotType", indexes); + else + packet.ReadByte("PlotType", indexes); } public static void ReadGarrisonBuildingInfo(Packet packet, params object[] indexes) @@ -260,7 +263,10 @@ public static void HandleGetGarrisonInfoResult(Packet packet) for (int i = 0; i < garrisonCount; i++) { - packet.ReadInt32E("GarrTypeID", i); + if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin)) + packet.ReadInt32E("GarrTypeID", i); + else + packet.ReadByteE("GarrTypeID", i); packet.ReadInt32E("GarrSiteID", i); packet.ReadInt32E("GarrSiteLevelID", i); diff --git a/WowPacketParserModule.V9_0_1_36216/Parsers/SpellHandler.cs b/WowPacketParserModule.V9_0_1_36216/Parsers/SpellHandler.cs index db9091e48a..c5eea1cd12 100644 --- a/WowPacketParserModule.V9_0_1_36216/Parsers/SpellHandler.cs +++ b/WowPacketParserModule.V9_0_1_36216/Parsers/SpellHandler.cs @@ -439,7 +439,10 @@ public static void HandlePetCastSpell(Packet packet) [Parser(Opcode.SMSG_INTERRUPT_POWER_REGEN)] public static void HandleInterruptPowerRegen(Packet packet) { - packet.ReadUInt32E("PowerType"); + if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin)) + packet.ReadUInt32E("PowerType"); + else + packet.ReadByteE("PowerType"); } [Parser(Opcode.SMSG_SPELL_HEAL_ABSORB_LOG)]