From bb868e4f15e83b8e7cddb6e9c112c595f1e4a368 Mon Sep 17 00:00:00 2001 From: killerwife Date: Sun, 20 Oct 2024 14:13:44 +0200 Subject: [PATCH] Fix parsing of 3_4_2 update object create part --- .../Parsers/UpdateHandler.cs | 2 +- .../Parsers/UpdateFieldsHandler342.cs | 204 +++++++++++------- .../V3_4_2_50129/ActivePlayerData.cs | 18 +- .../V3_4_2_50129/CategoryCooldownMod.cs | 14 ++ .../UpdateFields/V3_4_2_50129/PlayerData.cs | 10 +- .../UpdateFields/V3_4_2_50129/UnitData.cs | 24 ++- .../V3_4_2_50129/WeeklySpellUse.cs | 14 ++ 7 files changed, 190 insertions(+), 96 deletions(-) create mode 100644 WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/CategoryCooldownMod.cs create mode 100644 WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/WeeklySpellUse.cs diff --git a/WowPacketParserModule.V2_5_1_38707/Parsers/UpdateHandler.cs b/WowPacketParserModule.V2_5_1_38707/Parsers/UpdateHandler.cs index 7a2a341711..82eeef11da 100644 --- a/WowPacketParserModule.V2_5_1_38707/Parsers/UpdateHandler.cs +++ b/WowPacketParserModule.V2_5_1_38707/Parsers/UpdateHandler.cs @@ -871,7 +871,7 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid, if (hasActionButtons) { - var actionButtonCount = (ClientVersion.AddedInVersion(ClientVersionBuild.V3_4_3_51505) ? 180 : 132); + var actionButtonCount = (ClientVersion.AddedInVersion(ClientVersionBuild.V3_4_2_50063) ? 180 : 132); for (int i = 0; i < actionButtonCount; i++) packet.ReadInt32("Action", index, i); } diff --git a/WowPacketParserModule.V3_4_0_45166/Parsers/UpdateFieldsHandler342.cs b/WowPacketParserModule.V3_4_0_45166/Parsers/UpdateFieldsHandler342.cs index 1bdd87f56a..ab31d0c91c 100644 --- a/WowPacketParserModule.V3_4_0_45166/Parsers/UpdateFieldsHandler342.cs +++ b/WowPacketParserModule.V3_4_0_45166/Parsers/UpdateFieldsHandler342.cs @@ -583,17 +583,17 @@ public override IUnitData ReadCreateUnitData(Packet packet, UpdateFieldFlag flag data.OverrideDisplayPowerID = packet.ReadUInt32("OverrideDisplayPowerID", indexes); if ((flags & (UpdateFieldFlag.Owner | UpdateFieldFlag.UnitAll)) != UpdateFieldFlag.None) { - for (var i = 0; i < 7; ++i) + for (var i = 0; i < 10; ++i) { - data.Unk340[i] = packet.ReadSingle("Unk340", indexes, i); - data.Unk340_2[i] = packet.ReadSingle("Unk340_2", indexes, i); + data.PowerRegenFlatModifier[i] = packet.ReadSingle("PowerRegenFlatModifier", indexes, i); + data.PowerRegenInterruptedFlatModifier[i] = packet.ReadSingle("PowerRegenInterruptedFlatModifier", indexes, i); } } - for (var i = 0; i < 7; ++i) + for (var i = 0; i < 10; ++i) { data.Power[i] = packet.ReadInt32("Power", indexes, i); data.MaxPower[i] = packet.ReadInt32("MaxPower", indexes, i); - data.PowerRegenFlatModifier[i] = packet.ReadSingle("PowerRegenFlatModifier", indexes, i); + data.ModPowerRegen[i] = packet.ReadSingle("PowerRegenFlatModifier", indexes, i); } data.Level = packet.ReadInt32("Level", indexes); data.EffectiveLevel = packet.ReadInt32("EffectiveLevel", indexes); @@ -711,21 +711,24 @@ public override IUnitData ReadCreateUnitData(Packet packet, UpdateFieldFlag flag data.MinItemLevel = packet.ReadInt32("MinItemLevel", indexes); data.MaxItemLevel = packet.ReadInt32("MaxItemLevel", indexes); data.WildBattlePetLevel = packet.ReadInt32("WildBattlePetLevel", indexes); - // data.BattlePetCompanionNameTimestamp = packet.ReadUInt32("BattlePetCompanionNameTimestamp", indexes); + data.BattlePetCompanionNameTimestamp = packet.ReadUInt32("BattlePetCompanionNameTimestamp", indexes); data.InteractSpellID = packet.ReadInt32("InteractSpellID", indexes); - //data.ScaleDuration = packet.ReadInt32("ScaleDuration", indexes); + data.ScaleDuration = packet.ReadInt32("ScaleDuration", indexes); data.LooksLikeMountID = packet.ReadInt32("LooksLikeMountID", indexes); data.LooksLikeCreatureID = packet.ReadInt32("LooksLikeCreatureID", indexes); data.LookAtControllerID = packet.ReadInt32("LookAtControllerID", indexes); - //data.PerksVendorItemID = packet.ReadInt32("PerksVendorItemID", indexes); + data.PerksVendorItemID = packet.ReadInt32("PerksVendorItemID", indexes); data.GuildGUID = packet.ReadPackedGuid128("GuildGUID", indexes); data.PassiveSpells.Resize(packet.ReadUInt32()); data.WorldEffects.Resize(packet.ReadUInt32()); data.ChannelObjects.Resize(packet.ReadUInt32()); data.SkinningOwnerGUID = packet.ReadPackedGuid128("SkinningOwnerGUID", indexes); + data.FlightCapabilityID = packet.ReadInt32("FlightCapabilityID", indexes); + // data.GlideEventSpeedDivisor = packet.ReadSingle("GlideEventSpeedDivisor", indexes); + // data.CurrentAreaID = packet.ReadUInt32("CurrentAreaID", indexes); if ((flags & UpdateFieldFlag.Owner) != UpdateFieldFlag.None) { - data.Unk340_3 = packet.ReadPackedGuid128("Unk340_3", indexes); + data.ComboTarget = packet.ReadPackedGuid128("ComboTarget", indexes); } for (var i = 0; i < data.PassiveSpells.Count; ++i) { @@ -1225,7 +1228,7 @@ public override IUnitData ReadUpdateUnitData(Packet packet, params object[] inde } if (changesMask[106]) { - data.Unk340_3 = packet.ReadPackedGuid128("Unk340_3", indexes); + data.ComboTarget = packet.ReadPackedGuid128("Unk340_3", indexes); } } if (changesMask[107]) @@ -1244,11 +1247,11 @@ public override IUnitData ReadUpdateUnitData(Packet packet, params object[] inde { if (changesMask[111 + i]) { - data.Unk340[i] = packet.ReadSingle("Unk340", indexes, i); + data.PowerRegenFlatModifier[i] = packet.ReadSingle("Unk340", indexes, i); } if (changesMask[118 + i]) { - data.Unk340_2[i] = packet.ReadSingle("Unk340_2", indexes, i); + data.PowerRegenInterruptedFlatModifier[i] = packet.ReadSingle("Unk340_2", indexes, i); } if (changesMask[125 + i]) { @@ -1474,8 +1477,7 @@ public static IArenaCooldown ReadUpdateArenaCooldown(Packet packet, params objec public override IPlayerData ReadCreatePlayerData(Packet packet, UpdateFieldFlag flags, params object[] indexes) { var data = new PlayerData(); - data.DuelArbiter = packet.ReadPackedGuid128("Bla", indexes); // TODO - data.DuelArbiter = packet.ReadPackedGuid128("Bla2", indexes); + packet.ResetBitReader(); data.DuelArbiter = packet.ReadPackedGuid128("DuelArbiter", indexes); data.WowAccount = packet.ReadPackedGuid128("WowAccount", indexes); data.LootTargetGUID = packet.ReadPackedGuid128("LootTargetGUID", indexes); @@ -1485,13 +1487,17 @@ public override IPlayerData ReadCreatePlayerData(Packet packet, UpdateFieldFlag data.GuildDeleteDate = packet.ReadUInt32("GuildDeleteDate", indexes); data.GuildLevel = packet.ReadInt32("GuildLevel", indexes); data.Customizations.Resize(packet.ReadUInt32()); - data.PartyType = packet.ReadByte("PartyType", indexes); + for (var i = 0; i < 1; ++i) + { + data.PartyType[i] = packet.ReadByte("PartyType", indexes, i); + } + data.NumBankSlots = packet.ReadByte("NumBankSlots", indexes); data.NativeSex = packet.ReadByte("NativeSex", indexes); data.Inebriation = packet.ReadByte("Inebriation", indexes); data.PvpTitle = packet.ReadByte("PvpTitle", indexes); data.ArenaFaction = packet.ReadByte("ArenaFaction", indexes); data.PvpRank = packet.ReadByte("PvpRank", indexes); - data.Unk254 = packet.ReadByte("Unk254", indexes); + // data.Unk254 = packet.ReadInt32("Unk254", indexes); data.DuelTeam = packet.ReadUInt32("DuelTeam", indexes); data.GuildTimeStamp = packet.ReadInt32("GuildTimeStamp", indexes); if ((flags & UpdateFieldFlag.PartyMember) != UpdateFieldFlag.None) @@ -1516,7 +1522,16 @@ public override IPlayerData ReadCreatePlayerData(Packet packet, UpdateFieldFlag } data.CurrentBattlePetBreedQuality = packet.ReadByte("CurrentBattlePetBreedQuality", indexes); data.HonorLevel = packet.ReadInt32("HonorLevel", indexes); + data.LogoutTime = packet.ReadInt64("LogoutTime", indexes); data.ArenaCooldowns.Resize(packet.ReadUInt32()); + data.CurrentBattlePetSpeciesID = packet.ReadInt32("CurrentBattlePetSpeciesID", indexes); + data.BnetAccount = packet.ReadPackedGuid128("BnetAccount", indexes); + // data.VisualItemReplacements.Resize(packet.ReadUInt32()); + packet.ReadInt16("UNK", indexes); + for (var i = 0; i < 19; ++i) + { + data.Field_3120[i] = packet.ReadUInt32("Field_3120", indexes, i); + } for (var i = 0; i < data.Customizations.Count; ++i) { data.Customizations[i] = ReadCreateChrCustomizationChoice(packet, indexes, "Customizations", i); @@ -1525,6 +1540,10 @@ public override IPlayerData ReadCreatePlayerData(Packet packet, UpdateFieldFlag { data.ArenaCooldowns[i] = ReadCreateArenaCooldown(packet, indexes, "ArenaCooldowns", i); } + for (var i = 0; i < data.VisualItemReplacements.Count; ++i) + { + data.VisualItemReplacements[i] = packet.ReadInt32("VisualItemReplacements", indexes, i); + } return data; } @@ -1533,9 +1552,9 @@ public override IPlayerData ReadUpdatePlayerData(Packet packet, params object[] var data = new PlayerData(); var rawChangesMask = new int[3]; var rawMaskMask = new int[1]; - rawMaskMask[0] = (int)packet.ReadBits(3); + rawMaskMask[0] = (int)packet.ReadBits(4); var maskMask = new BitArray(rawMaskMask); - for (var i = 0; i < 3; ++i) + for (var i = 0; i < 4; ++i) if (maskMask[i]) rawChangesMask[i] = (int)packet.ReadBits(32); var changesMask = new BitArray(rawChangesMask); @@ -1550,6 +1569,10 @@ public override IPlayerData ReadUpdatePlayerData(Packet packet, params object[] { data.ArenaCooldowns.ReadUpdateMask(packet); } + if (changesMask[3]) + { + data.VisualItemReplacements.ReadUpdateMask(packet); + } } packet.ResetBitReader(); if (changesMask[0]) @@ -1608,7 +1631,8 @@ public override IPlayerData ReadUpdatePlayerData(Packet packet, params object[] } if (changesMask[11]) { - data.PartyType = packet.ReadByte("PartyType", indexes); + packet.ReadByte("PartyType", indexes); + packet.ReadByte("PartyType", indexes); } if (changesMask[12]) { @@ -1993,7 +2017,7 @@ public override IActivePlayerData ReadCreateActivePlayerData(Packet packet, Upda { var data = new ActivePlayerData(); packet.ResetBitReader(); - for (var i = 0; i < 129; ++i) + for (var i = 0; i < 141; ++i) { data.InvSlots[i] = packet.ReadPackedGuid128("InvSlots", indexes, i); } @@ -2132,14 +2156,32 @@ public override IActivePlayerData ReadCreateActivePlayerData(Packet packet, Upda } data.Honor = packet.ReadInt32("Honor", indexes); data.HonorNextLevel = packet.ReadInt32("HonorNextLevel", indexes); + // data.Field_F74 = packet.ReadInt32("Field_F74", indexes); data.PvpTierMaxFromWins = packet.ReadInt32("PvpTierMaxFromWins", indexes); data.PvpLastWeeksTierMaxFromWins = packet.ReadInt32("PvpLastWeeksTierMaxFromWins", indexes); - data.NumBankSlots = packet.ReadByte("NumBankSlots", indexes); - data.ResearchSites.Resize(packet.ReadUInt32()); - data.ResearchSiteProgress.Resize(packet.ReadUInt32()); + data.PvpRankProgress = packet.ReadByte("PvpRankProgress", indexes); + // data.PerksProgramCurrency = packet.ReadInt32("PerksProgramCurrency", indexes); + for (var i = 0; i < 1; ++i) + { + data.ResearchSites[i].Resize(packet.ReadUInt32()); + data.ResearchSiteProgress[i].Resize(packet.ReadUInt32()); + data.Research[i].Resize(packet.ReadUInt32()); + for (var j = 0; j < data.ResearchSites[i].Count; ++j) + { + data.ResearchSites[i][j] = packet.ReadUInt16("ResearchSites", indexes, i, j); + } + for (var j = 0; j < data.ResearchSiteProgress[i].Count; ++j) + { + data.ResearchSiteProgress[i][j] = packet.ReadUInt32("ResearchSiteProgress", indexes, i, j); + } + for (var j = 0; j < data.Research[i].Count; ++j) + { + data.Research[i][j] = ReadCreateResearch(packet, indexes, "Research", i, j); + } + } data.DailyQuestsCompleted.Resize(packet.ReadUInt32()); data.AvailableQuestLineXQuestIDs.Resize(packet.ReadUInt32()); - data.Unk254.Resize(packet.ReadUInt32()); + data.Field_1000.Resize(packet.ReadUInt32()); data.Heirlooms.Resize(packet.ReadUInt32()); data.HeirloomFlags.Resize(packet.ReadUInt32()); data.Toys.Resize(packet.ReadUInt32()); @@ -2149,33 +2191,23 @@ public override IActivePlayerData ReadCreateActivePlayerData(Packet packet, Upda data.CharacterRestrictions.Resize(packet.ReadUInt32()); data.SpellPctModByLabel.Resize(packet.ReadUInt32()); data.SpellFlatModByLabel.Resize(packet.ReadUInt32()); - for (var i = 0; i < 1; ++i) - { - data.Research[i].Resize(packet.ReadUInt32()); - for (var j = 0; j < data.Research[i].Count; ++j) - { - data.Research[i][j] = ReadCreateResearch(packet, indexes, "Research", i, j); - } - } + data.TaskQuests.Resize(packet.ReadUInt32()); data.TransportServerTime = packet.ReadInt32("TransportServerTime", indexes); + data.TraitConfigs.Resize(packet.ReadUInt32()); + data.ActiveCombatTraitConfigID = packet.ReadUInt32("ActiveCombatTraitConfigID", indexes); for (var i = 0; i < 6; ++i) { data.GlyphInfo[i] = ReadCreateGlyphInfo(packet, indexes, "GlyphInfo", i); } data.GlyphsEnabled = packet.ReadByte("GlyphsEnabled", indexes); - data.Unk340 = packet.ReadByte("Unk340", indexes); + data.LfgRoles = packet.ReadByte("LfgRoles", indexes); + data.CategoryCooldownMods.Resize(packet.ReadUInt32()); + data.WeeklySpellUses.Resize(packet.ReadUInt32()); + // data.NumStableSlots = packet.ReadByte("NumStableSlots", indexes); for (var i = 0; i < data.KnownTitles.Count; ++i) { data.KnownTitles[i] = packet.ReadUInt64("KnownTitles", indexes, i); } - for (var i = 0; i < data.ResearchSites.Count; ++i) - { - data.ResearchSites[i] = packet.ReadUInt32("ResearchSites", indexes, i); - } - for (var i = 0; i < data.ResearchSiteProgress.Count; ++i) - { - data.ResearchSiteProgress[i] = packet.ReadUInt32("ResearchSiteProgress", indexes, i); - } for (var i = 0; i < data.DailyQuestsCompleted.Count; ++i) { data.DailyQuestsCompleted[i] = packet.ReadInt32("DailyQuestsCompleted", indexes, i); @@ -2184,9 +2216,9 @@ public override IActivePlayerData ReadCreateActivePlayerData(Packet packet, Upda { data.AvailableQuestLineXQuestIDs[i] = packet.ReadInt32("AvailableQuestLineXQuestIDs", indexes, i); } - for (var i = 0; i < data.Unk254.Count; ++i) + for (var i = 0; i < data.Field_1000.Count; ++i) { - data.Unk254[i] = packet.ReadInt32("Unk254", indexes, i); + data.Field_1000[i] = packet.ReadInt32("Field_1000", indexes, i); } for (var i = 0; i < data.Heirlooms.Count; ++i) { @@ -2220,6 +2252,18 @@ public override IActivePlayerData ReadCreateActivePlayerData(Packet packet, Upda { data.SpellFlatModByLabel[i] = ReadCreateSpellFlatModByLabel(packet, indexes, "SpellFlatModByLabel", i); } + for (var i = 0; i < data.TaskQuests.Count; ++i) + { + data.TaskQuests[i] = ReadCreateQuestLog(packet, indexes, "TaskQuests", i); + } + for (var i = 0; i < data.CategoryCooldownMods.Count; ++i) + { + data.CategoryCooldownMods[i] = ReadCreateCategoryCooldownMod(packet, indexes, "CategoryCooldownMods", i); + } + for (var i = 0; i < data.WeeklySpellUses.Count; ++i) + { + data.WeeklySpellUses[i] = ReadCreateWeeklySpellUse(packet, indexes, "WeeklySpellUses", i); + } for (var i = 0; i < 6; ++i) { data.PvpInfo[i] = ReadCreatePVPInfo(packet, indexes, "PvpInfo", i); @@ -2258,14 +2302,6 @@ public override IActivePlayerData ReadUpdateActivePlayerData(Packet packet, para { data.KnownTitles.ReadUpdateMask(packet); } - if (changesMask[3]) - { - data.ResearchSites.ReadUpdateMask(packet); - } - if (changesMask[4]) - { - data.ResearchSiteProgress.ReadUpdateMask(packet); - } if (changesMask[5]) { data.DailyQuestsCompleted.ReadUpdateMask(packet); @@ -2274,10 +2310,6 @@ public override IActivePlayerData ReadUpdateActivePlayerData(Packet packet, para { data.AvailableQuestLineXQuestIDs.ReadUpdateMask(packet); } - if (changesMask[7]) - { - data.Unk254.ReadUpdateMask(packet); - } if (changesMask[8]) { data.Heirlooms.ReadUpdateMask(packet); @@ -2348,23 +2380,11 @@ public override IActivePlayerData ReadUpdateActivePlayerData(Packet packet, para } if (changesMask[3]) { - for (var i = 0; i < data.ResearchSites.Count; ++i) - { - if (data.ResearchSites.UpdateMask[i]) - { - data.ResearchSites[i] = packet.ReadUInt32("ResearchSites", indexes, i); - } - } + } if (changesMask[4]) { - for (var i = 0; i < data.ResearchSiteProgress.Count; ++i) - { - if (data.ResearchSiteProgress.UpdateMask[i]) - { - data.ResearchSiteProgress[i] = packet.ReadUInt32("ResearchSiteProgress", indexes, i); - } - } + } if (changesMask[5]) { @@ -2388,13 +2408,7 @@ public override IActivePlayerData ReadUpdateActivePlayerData(Packet packet, para } if (changesMask[7]) { - for (var i = 0; i < data.Unk254.Count; ++i) - { - if (data.Unk254.UpdateMask[i]) - { - data.Unk254[i] = packet.ReadInt32("Unk254", indexes, i); - } - } + } if (changesMask[8]) { @@ -2841,7 +2855,7 @@ public override IActivePlayerData ReadUpdateActivePlayerData(Packet packet, para } if (changesMask[108]) { - data.Unk340 = packet.ReadByte("Unk340", indexes); + data.LfgRoles = packet.ReadByte("Unk340", indexes); } } if (changesMask[109]) @@ -3017,6 +3031,42 @@ public override IActivePlayerData ReadUpdateActivePlayerData(Packet packet, para return data; } + public static ICategoryCooldownMod ReadCreateCategoryCooldownMod(Packet packet, params object[] indexes) + { + var data = new CategoryCooldownMod(); + packet.ResetBitReader(); + data.SpellCategoryID = packet.ReadInt32("SpellCategoryID", indexes); + data.ModCooldown = packet.ReadInt32("ModCooldown", indexes); + return data; + } + + public static ICategoryCooldownMod ReadUpdateCategoryCooldownMod(Packet packet, params object[] indexes) + { + var data = new CategoryCooldownMod(); + packet.ResetBitReader(); + data.SpellCategoryID = packet.ReadInt32("SpellCategoryID", indexes); + data.ModCooldown = packet.ReadInt32("ModCooldown", indexes); + return data; + } + + public static IWeeklySpellUse ReadCreateWeeklySpellUse(Packet packet, params object[] indexes) + { + var data = new WeeklySpellUse(); + packet.ResetBitReader(); + data.SpellCategoryID = packet.ReadInt32("SpellCategoryID", indexes); + data.Uses = packet.ReadByte("Uses", indexes); + return data; + } + + public static IWeeklySpellUse ReadUpdateWeeklySpellUse(Packet packet, params object[] indexes) + { + var data = new WeeklySpellUse(); + packet.ResetBitReader(); + data.SpellCategoryID = packet.ReadInt32("SpellCategoryID", indexes); + data.Uses = packet.ReadByte("Uses", indexes); + return data; + } + public override IGameObjectData ReadCreateGameObjectData(Packet packet, UpdateFieldFlag flags, params object[] indexes) { var data = new GameObjectData(); diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/ActivePlayerData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/ActivePlayerData.cs index 8a37998df8..a54e962665 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/ActivePlayerData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/ActivePlayerData.cs @@ -7,7 +7,7 @@ namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V3_4_2_50129 { public class ActivePlayerData : IActivePlayerData { - public WowGuid[] InvSlots { get; } = new WowGuid[129]; + public WowGuid[] InvSlots { get; } = new WowGuid[141]; public WowGuid FarsightObject { get; set; } public WowGuid ComboTarget { get; set; } public System.Nullable Coinage { get; set; } @@ -106,20 +106,24 @@ public class ActivePlayerData : IActivePlayerData public System.Nullable[] QuestCompleted { get; } = new System.Nullable[875]; public System.Nullable Honor { get; set; } public System.Nullable HonorNextLevel { get; set; } + public System.Nullable Field_F74 { get; set; } public System.Nullable PvpTierMaxFromWins { get; set; } public System.Nullable PvpLastWeeksTierMaxFromWins { get; set; } + public System.Nullable PvpRankProgress { get; set; } + public System.Nullable PerksProgramCurrency { get; set; } public System.Nullable NumBankSlots { get; set; } public System.Nullable TransportServerTime { get; set; } + public System.Nullable ActiveCombatTraitConfigID { get; set; } public IGlyphInfo[] GlyphInfo { get; } = new IGlyphInfo[6]; public System.Nullable GlyphsEnabled { get; set; } - public System.Nullable Unk340 { get; set; } + public System.Nullable LfgRoles { get; set; } + public DynamicUpdateField>[] ResearchSites { get; } = new DynamicUpdateField>[1] { new DynamicUpdateField>() }; + public DynamicUpdateField>[] ResearchSiteProgress { get; } = new DynamicUpdateField>[1] { new DynamicUpdateField>() }; public DynamicUpdateField[] Research { get; } = new DynamicUpdateField[1] { new DynamicUpdateField() }; public DynamicUpdateField> KnownTitles { get; } = new DynamicUpdateField>(); - public DynamicUpdateField> ResearchSites { get; } = new DynamicUpdateField>(); - public DynamicUpdateField> ResearchSiteProgress { get; } = new DynamicUpdateField>(); public DynamicUpdateField> DailyQuestsCompleted { get; } = new DynamicUpdateField>(); public DynamicUpdateField> AvailableQuestLineXQuestIDs { get; } = new DynamicUpdateField>(); - public DynamicUpdateField> Unk254 { get; } = new DynamicUpdateField>(); + public DynamicUpdateField> Field_1000 { get; } = new DynamicUpdateField>(); public DynamicUpdateField> Heirlooms { get; } = new DynamicUpdateField>(); public DynamicUpdateField> HeirloomFlags { get; } = new DynamicUpdateField>(); public DynamicUpdateField> Toys { get; } = new DynamicUpdateField>(); @@ -128,9 +132,13 @@ public class ActivePlayerData : IActivePlayerData public DynamicUpdateField> SelfResSpells { get; } = new DynamicUpdateField>(); public DynamicUpdateField SpellPctModByLabel { get; } = new DynamicUpdateField(); public DynamicUpdateField SpellFlatModByLabel { get; } = new DynamicUpdateField(); + public DynamicUpdateField TaskQuests { get; } = new DynamicUpdateField(); + public DynamicUpdateField CategoryCooldownMods { get; } = new DynamicUpdateField(); + public DynamicUpdateField WeeklySpellUses { get; } = new DynamicUpdateField(); public IPVPInfo[] PvpInfo { get; } = new IPVPInfo[6]; public System.Nullable InsertItemsLeftToRight { get; set; } public DynamicUpdateField CharacterRestrictions { get; } = new DynamicUpdateField(); + public DynamicUpdateField TraitConfigs { get; } = new DynamicUpdateField(); } } diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/CategoryCooldownMod.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/CategoryCooldownMod.cs new file mode 100644 index 0000000000..8062eb90e8 --- /dev/null +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/CategoryCooldownMod.cs @@ -0,0 +1,14 @@ +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +// This file is automatically generated, DO NOT EDIT + +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V3_4_2_50129 +{ + public class CategoryCooldownMod : ICategoryCooldownMod + { + public int SpellCategoryID { get; set; } + public int ModCooldown { get; set; } + } +} + diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/PlayerData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/PlayerData.cs index d5d147925a..09a3c899a8 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/PlayerData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/PlayerData.cs @@ -15,13 +15,14 @@ public class PlayerData : IPlayerData public System.Nullable GuildRankID { get; set; } public System.Nullable GuildDeleteDate { get; set; } public System.Nullable GuildLevel { get; set; } - public System.Nullable PartyType { get; set; } + public System.Nullable[] PartyType { get; } = new System.Nullable[2]; + public System.Nullable NumBankSlots { get; set; } public System.Nullable NativeSex { get; set; } public System.Nullable Inebriation { get; set; } public System.Nullable PvpTitle { get; set; } public System.Nullable ArenaFaction { get; set; } public System.Nullable PvpRank { get; set; } - public System.Nullable Unk254 { get; set; } + public System.Nullable Unk254 { get; set; } public System.Nullable DuelTeam { get; set; } public System.Nullable GuildTimeStamp { get; set; } public IQuestLog[] QuestLog { get; } = new IQuestLog[25]; @@ -34,8 +35,13 @@ public class PlayerData : IPlayerData public System.Nullable[] AvgItemLevel { get; } = new System.Nullable[6]; public System.Nullable CurrentBattlePetBreedQuality { get; set; } public System.Nullable HonorLevel { get; set; } + public System.Nullable LogoutTime { get; set; } + public WowGuid BnetAccount { get; set; } + public System.Nullable CurrentBattlePetSpeciesID { get; set; } + public System.Nullable[] Field_3120 { get; } = new System.Nullable[19]; public DynamicUpdateField Customizations { get; } = new DynamicUpdateField(); public DynamicUpdateField ArenaCooldowns { get; } = new DynamicUpdateField(); + public DynamicUpdateField> VisualItemReplacements { get; } = new DynamicUpdateField>(); } } diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/UnitData.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/UnitData.cs index f23cc729e5..90baf3b3fc 100644 --- a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/UnitData.cs +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/UnitData.cs @@ -34,11 +34,11 @@ public class UnitData : IMutableUnitData public System.Nullable Sex { get; set; } public System.Nullable DisplayPower { get; set; } public System.Nullable OverrideDisplayPowerID { get; set; } - public System.Nullable[] Unk340 { get; } = new System.Nullable[7]; - public System.Nullable[] Unk340_2 { get; } = new System.Nullable[7]; - public System.Nullable[] Power { get; } = new System.Nullable[7]; - public System.Nullable[] MaxPower { get; } = new System.Nullable[7]; - public System.Nullable[] PowerRegenFlatModifier { get; } = new System.Nullable[7]; + public System.Nullable[] PowerRegenFlatModifier { get; } = new System.Nullable[10]; + public System.Nullable[] ModPowerRegen { get; } = new System.Nullable[10]; + public System.Nullable[] Power { get; } = new System.Nullable[10]; + public System.Nullable[] MaxPower { get; } = new System.Nullable[10]; + public System.Nullable[] PowerRegenInterruptedFlatModifier { get; } = new System.Nullable[10]; public System.Nullable Level { get; set; } public System.Nullable EffectiveLevel { get; set; } public System.Nullable ContentTuningID { get; set; } @@ -116,18 +116,20 @@ public class UnitData : IMutableUnitData public System.Nullable MinItemLevel { get; set; } public System.Nullable MaxItemLevel { get; set; } public System.Nullable WildBattlePetLevel { get; set; } - // public System.Nullable BattlePetCompanionNameTimestamp { get; set; } - // kind reminder this is manual herpity guessworkity + public System.Nullable BattlePetCompanionNameTimestamp { get; set; } public System.Nullable InteractSpellID { get; set; } - // System.Nullable ScaleDuration { get; set; } + public System.Nullable ScaleDuration { get; set; } public System.Nullable LooksLikeMountID { get; set; } public System.Nullable LooksLikeCreatureID { get; set; } public System.Nullable LookAtControllerID { get; set; } - // public System.Nullable PerksVendorItemID { get; set; } - // public System.Nullable TaxiNodesID { get; set; } + public System.Nullable PerksVendorItemID { get; set; } + public System.Nullable TaxiNodesID { get; set; } public WowGuid GuildGUID { get; set; } public WowGuid SkinningOwnerGUID { get; set; } - public WowGuid Unk340_3 { get; set; } + public System.Nullable FlightCapabilityID { get; set; } + public System.Nullable GlideEventSpeedDivisor { get; set; } + public System.Nullable CurrentAreaID { get; set; } + public WowGuid ComboTarget { get; set; } public DynamicUpdateField PassiveSpells { get; } = new DynamicUpdateField(); public DynamicUpdateField> WorldEffects { get; } = new DynamicUpdateField>(); public DynamicUpdateField ChannelObjects { get; } = new DynamicUpdateField(); diff --git a/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/WeeklySpellUse.cs b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/WeeklySpellUse.cs new file mode 100644 index 0000000000..d9c999950f --- /dev/null +++ b/WowPacketParserModule.V3_4_0_45166/UpdateFields/V3_4_2_50129/WeeklySpellUse.cs @@ -0,0 +1,14 @@ +using WowPacketParser.Misc; +using WowPacketParser.Store.Objects.UpdateFields; + +// This file is automatically generated, DO NOT EDIT + +namespace WowPacketParserModule.V3_4_0_45166.UpdateFields.V3_4_2_50129 +{ + public class WeeklySpellUse : IWeeklySpellUse + { + public int SpellCategoryID { get; set; } + public byte Uses { get; set; } + } +} +