diff --git a/WowPacketParser/DBC/Structures/Dragonflight/ItemSparseEntry.cs b/WowPacketParser/DBC/Structures/Dragonflight/ItemSparseEntry.cs index e35b0d95c9..41e6a7a495 100644 --- a/WowPacketParser/DBC/Structures/Dragonflight/ItemSparseEntry.cs +++ b/WowPacketParser/DBC/Structures/Dragonflight/ItemSparseEntry.cs @@ -20,6 +20,8 @@ public sealed class ItemSparseEntry public uint DurationInInventory; public float QualityModifier; public uint BagFamily; + public int StartQuestID; + public int LanguageID; public float ItemRange; [Cardinality(10)] public float[] StatPercentageOfSocket = new float[10]; diff --git a/WowPacketParser/Hotfix/IHotfixSerializer.cs b/WowPacketParser/Hotfix/IHotfixSerializer.cs index 18b162368c..794d85ea9f 100644 --- a/WowPacketParser/Hotfix/IHotfixSerializer.cs +++ b/WowPacketParser/Hotfix/IHotfixSerializer.cs @@ -292,6 +292,7 @@ public void SerializeStore(HotfixStore store, StringBuilder hotfixBuilder, St case "azerite_essence_power": case "barber_shop_style": case "battlemaster_list": + case "battle_pet_ability": case "battle_pet_species": case "broadcast_text": case "char_titles": @@ -344,6 +345,7 @@ public void SerializeStore(HotfixStore store, StringBuilder hotfixBuilder, St case "quest_sort": case "scenario": case "scenario_step": + case "server_messages": case "skill_line": case "specialization_spells": case "spell_category": diff --git a/WowPacketParser/SQL/Builders/HotfixBuilder.cs b/WowPacketParser/SQL/Builders/HotfixBuilder.cs index 9da4a78242..3993bd0dc4 100644 --- a/WowPacketParser/SQL/Builders/HotfixBuilder.cs +++ b/WowPacketParser/SQL/Builders/HotfixBuilder.cs @@ -98,6 +98,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.AreaTriggerHotfixes1007, hotfixes, StoreNameType.None); } + if (!Storage.AreaTriggerHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.AreaTriggerHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.AreaTriggerHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.ArmorLocationHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.ArmorLocationHotfixes1000, Settings.HotfixesDatabase); @@ -448,6 +455,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.ChrCustomizationDisplayInfoHotfixes1000, hotfixes, StoreNameType.None); } + if (!Storage.ChrCustomizationDisplayInfoHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.ChrCustomizationDisplayInfoHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.ChrCustomizationDisplayInfoHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.ChrCustomizationElementHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.ChrCustomizationElementHotfixes1000, Settings.HotfixesDatabase); @@ -462,6 +476,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.ChrCustomizationElementHotfixes1017, hotfixes, StoreNameType.None); } + if (!Storage.ChrCustomizationElementHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.ChrCustomizationElementHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.ChrCustomizationElementHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.ChrCustomizationOptionHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.ChrCustomizationOptionHotfixes1000, Settings.HotfixesDatabase); @@ -581,6 +602,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.ConversationLineHotfixes1000, hotfixes, StoreNameType.None); } + if (!Storage.ConversationLineHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.ConversationLineHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.ConversationLineHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.CorruptionEffectsHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.CorruptionEffectsHotfixes1000, Settings.HotfixesDatabase); @@ -707,6 +735,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.CurvePointHotfixes1010, hotfixes, StoreNameType.None); } + if (!Storage.CurvePointHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.CurvePointHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.CurvePointHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.DestructibleModelDataHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.DestructibleModelDataHotfixes1000, Settings.HotfixesDatabase); @@ -1519,6 +1554,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.MountHotfixes1000, hotfixes, StoreNameType.None); } + if (!Storage.MountHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.MountHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.MountHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.MountCapabilityHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.MountCapabilityHotfixes1000, Settings.HotfixesDatabase); @@ -1526,6 +1568,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.MountCapabilityHotfixes1000, hotfixes, StoreNameType.None); } + if (!Storage.MountCapabilityHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.MountCapabilityHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.MountCapabilityHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.MountTypeXCapabilityHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.MountTypeXCapabilityHotfixes1000, Settings.HotfixesDatabase); @@ -1554,6 +1603,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.MovieHotfixes1010, hotfixes, StoreNameType.None); } + if (!Storage.MovieHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.MovieHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.MovieHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.MythicPlusSeasonHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.MythicPlusSeasonHotfixes1000, Settings.HotfixesDatabase); @@ -1617,6 +1673,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.PhaseHotfixes1000, hotfixes, StoreNameType.None); } + if (!Storage.PhaseHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.PhaseHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.PhaseHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.PhaseXPhaseGroupHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.PhaseXPhaseGroupHotfixes1000, Settings.HotfixesDatabase); @@ -1631,6 +1694,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.PlayerConditionHotfixes1000, hotfixes, StoreNameType.None); } + if (!Storage.PlayerConditionHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.PlayerConditionHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.PlayerConditionHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.PowerDisplayHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.PowerDisplayHotfixes1000, Settings.HotfixesDatabase); @@ -1841,6 +1911,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.SceneScriptTextHotfixes1000, hotfixes, StoreNameType.None); } + if (!Storage.ServerMessagesHotfixes1000.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.ServerMessagesHotfixes1000, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.ServerMessagesHotfixes1000, hotfixes, StoreNameType.None); + } + if (!Storage.SkillLineHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.SkillLineHotfixes1000, Settings.HotfixesDatabase); @@ -2135,6 +2212,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.SpellShapeshiftFormHotfixes1000, hotfixes, StoreNameType.None); } + if (!Storage.SpellShapeshiftFormHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.SpellShapeshiftFormHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.SpellShapeshiftFormHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.SpellTargetRestrictionsHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.SpellTargetRestrictionsHotfixes1000, Settings.HotfixesDatabase); @@ -2485,6 +2569,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.UiMapHotfixes1015, hotfixes, StoreNameType.None); } + if (!Storage.UiMapHotfixes1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.UiMapHotfixes1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.UiMapHotfixes1020, hotfixes, StoreNameType.None); + } + if (!Storage.UiMapAssignmentHotfixes1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.UiMapAssignmentHotfixes1000, Settings.HotfixesDatabase); @@ -3110,6 +3201,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.MountHotfixesLocale1000, hotfixes, StoreNameType.None); } + if (!Storage.MountHotfixesLocale1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.MountHotfixesLocale1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.MountHotfixesLocale1020, hotfixes, StoreNameType.None); + } + if (!Storage.PlayerConditionHotfixesLocale1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.PlayerConditionHotfixesLocale1000, Settings.HotfixesDatabase); @@ -3117,6 +3215,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.PlayerConditionHotfixesLocale1000, hotfixes, StoreNameType.None); } + if (!Storage.PlayerConditionHotfixesLocale1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.PlayerConditionHotfixesLocale1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.PlayerConditionHotfixesLocale1020, hotfixes, StoreNameType.None); + } + if (!Storage.PrestigeLevelInfoHotfixesLocale1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.PrestigeLevelInfoHotfixesLocale1000, Settings.HotfixesDatabase); @@ -3180,6 +3285,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.ScenarioStepHotfixesLocale1000, hotfixes, StoreNameType.None); } + if (!Storage.ServerMessagesHotfixesLocale1000.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.ServerMessagesHotfixesLocale1000, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.ServerMessagesHotfixesLocale1000, hotfixes, StoreNameType.None); + } + if (!Storage.SkillLineHotfixesLocale1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.SkillLineHotfixesLocale1000, Settings.HotfixesDatabase); @@ -3250,6 +3362,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.SpellShapeshiftFormHotfixesLocale1000, hotfixes, StoreNameType.None); } + if (!Storage.SpellShapeshiftFormHotfixesLocale1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.SpellShapeshiftFormHotfixesLocale1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.SpellShapeshiftFormHotfixesLocale1020, hotfixes, StoreNameType.None); + } + if (!Storage.TalentHotfixesLocale1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.TalentHotfixesLocale1000, Settings.HotfixesDatabase); @@ -3327,6 +3446,13 @@ public static string Hotfixes() sql += SQLUtil.Compare(Storage.UiMapHotfixesLocale1015, hotfixes, StoreNameType.None); } + if (!Storage.UiMapHotfixesLocale1020.IsEmpty()) + { + var hotfixes = SQLDatabase.Get(Storage.UiMapHotfixesLocale1020, Settings.HotfixesDatabase); + + sql += SQLUtil.Compare(Storage.UiMapHotfixesLocale1020, hotfixes, StoreNameType.None); + } + if (!Storage.UiSplashScreenHotfixesLocale1000.IsEmpty()) { var hotfixes = SQLDatabase.Get(Storage.UiSplashScreenHotfixesLocale1000, Settings.HotfixesDatabase); diff --git a/WowPacketParser/Store/Objects/Hotfixes/AreaTriggerHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/AreaTriggerHotfix.cs index 7133a6c9f3..7b62f0b982 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/AreaTriggerHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/AreaTriggerHotfix.cs @@ -120,4 +120,63 @@ public sealed record AreaTriggerHotfix1007 : IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("area_trigger")] + public sealed record AreaTriggerHotfix1020 : IDataModel + { + [DBFieldName("PosX")] + public float? PosX; + + [DBFieldName("PosY")] + public float? PosY; + + [DBFieldName("PosZ")] + public float? PosZ; + + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("ContinentID")] + public short? ContinentID; + + [DBFieldName("PhaseUseFlags")] + public int? PhaseUseFlags; + + [DBFieldName("PhaseID")] + public short? PhaseID; + + [DBFieldName("PhaseGroupID")] + public short? PhaseGroupID; + + [DBFieldName("Radius")] + public float? Radius; + + [DBFieldName("BoxLength")] + public float? BoxLength; + + [DBFieldName("BoxWidth")] + public float? BoxWidth; + + [DBFieldName("BoxHeight")] + public float? BoxHeight; + + [DBFieldName("BoxYaw")] + public float? BoxYaw; + + [DBFieldName("ShapeType")] + public sbyte? ShapeType; + + [DBFieldName("ShapeID")] + public short? ShapeID; + + [DBFieldName("AreaTriggerActionSetID")] + public int? AreaTriggerActionSetID; + + [DBFieldName("Flags")] + public sbyte? Flags; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Objects/Hotfixes/ChrCustomizationDisplayInfoHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/ChrCustomizationDisplayInfoHotfix.cs index 9bb959ffed..989d55b370 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/ChrCustomizationDisplayInfoHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/ChrCustomizationDisplayInfoHotfix.cs @@ -25,4 +25,30 @@ public sealed record ChrCustomizationDisplayInfoHotfix1000: IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("chr_customization_display_info")] + public sealed record ChrCustomizationDisplayInfoHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("ShapeshiftFormID")] + public int? ShapeshiftFormID; + + [DBFieldName("DisplayID")] + public int? DisplayID; + + [DBFieldName("BarberShopMinCameraDistance")] + public float? BarberShopMinCameraDistance; + + [DBFieldName("BarberShopHeightOffset")] + public float? BarberShopHeightOffset; + + [DBFieldName("BarberShopCameraZoomOffset")] + public float? BarberShopCameraZoomOffset; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Objects/Hotfixes/ChrCustomizationElementHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/ChrCustomizationElementHotfix.cs index d8e58fa3bd..cf5d08d43f 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/ChrCustomizationElementHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/ChrCustomizationElementHotfix.cs @@ -90,4 +90,54 @@ public sealed record ChrCustomizationElementHotfix1017 : IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("chr_customization_element")] + public sealed record ChrCustomizationElementHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("ChrCustomizationChoiceID")] + public int? ChrCustomizationChoiceID; + + [DBFieldName("RelatedChrCustomizationChoiceID")] + public int? RelatedChrCustomizationChoiceID; + + [DBFieldName("ChrCustomizationGeosetID")] + public int? ChrCustomizationGeosetID; + + [DBFieldName("ChrCustomizationSkinnedModelID")] + public int? ChrCustomizationSkinnedModelID; + + [DBFieldName("ChrCustomizationMaterialID")] + public int? ChrCustomizationMaterialID; + + [DBFieldName("ChrCustomizationBoneSetID")] + public int? ChrCustomizationBoneSetID; + + [DBFieldName("ChrCustomizationCondModelID")] + public int? ChrCustomizationCondModelID; + + [DBFieldName("ChrCustomizationDisplayInfoID")] + public int? ChrCustomizationDisplayInfoID; + + [DBFieldName("ChrCustItemGeoModifyID")] + public int? ChrCustItemGeoModifyID; + + [DBFieldName("ChrCustomizationVoiceID")] + public int? ChrCustomizationVoiceID; + + [DBFieldName("AnimKitID")] + public int? AnimKitID; + + [DBFieldName("ParticleColorID")] + public int? ParticleColorID; + + [DBFieldName("ChrCustGeoComponentLinkID")] + public int? ChrCustGeoComponentLinkID; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Objects/Hotfixes/ConversationLineHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/ConversationLineHotfix.cs index b6834486f7..6fbeb5a1b4 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/ConversationLineHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/ConversationLineHotfix.cs @@ -37,4 +37,42 @@ public sealed record ConversationLineHotfix1000: IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("conversation_line")] + public sealed record ConversationLineHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("BroadcastTextID")] + public uint? BroadcastTextID; + + [DBFieldName("Unused1020")] + public uint? Unused1020; + + [DBFieldName("SpellVisualKitID")] + public uint? SpellVisualKitID; + + [DBFieldName("AdditionalDuration")] + public int? AdditionalDuration; + + [DBFieldName("NextConversationLineID")] + public ushort? NextConversationLineID; + + [DBFieldName("AnimKitID")] + public ushort? AnimKitID; + + [DBFieldName("SpeechType")] + public byte? SpeechType; + + [DBFieldName("StartAnimation")] + public byte? StartAnimation; + + [DBFieldName("EndAnimation")] + public byte? EndAnimation; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Objects/Hotfixes/CurvePointHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/CurvePointHotfix.cs index fc5d06ae82..0c8ca81e86 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/CurvePointHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/CurvePointHotfix.cs @@ -60,4 +60,33 @@ public sealed record CurvePointHotfix1010 : IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("curve_point")] + public sealed record CurvePointHotfix1020 : IDataModel + { + [DBFieldName("PosX")] + public float? PosX; + + [DBFieldName("PosY")] + public float? PosY; + + [DBFieldName("PreSLSquishPosX")] + public float? PreSLSquishPosX; + + [DBFieldName("PreSLSquishPosY")] + public float? PreSLSquishPosY; + + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("CurveID")] + public uint? CurveID; + + [DBFieldName("OrderIndex")] + public byte? OrderIndex; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Objects/Hotfixes/MountCapabilityHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/MountCapabilityHotfix.cs index 65b1b7e220..545575b2e2 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/MountCapabilityHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/MountCapabilityHotfix.cs @@ -40,4 +40,42 @@ public sealed record MountCapabilityHotfix1000: IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("mount_capability")] + public sealed record MountCapabilityHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("Flags")] + public int? Flags; + + [DBFieldName("ReqRidingSkill")] + public ushort? ReqRidingSkill; + + [DBFieldName("ReqAreaID")] + public ushort? ReqAreaID; + + [DBFieldName("ReqSpellAuraID")] + public uint? ReqSpellAuraID; + + [DBFieldName("ReqSpellKnownID")] + public int? ReqSpellKnownID; + + [DBFieldName("ModSpellAuraID")] + public int? ModSpellAuraID; + + [DBFieldName("ReqMapID")] + public short? ReqMapID; + + [DBFieldName("PlayerConditionID")] + public int? PlayerConditionID; + + [DBFieldName("FlightCapabilityID")] + public int? FlightCapabilityID; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Objects/Hotfixes/MountHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/MountHotfix.cs index 5584694abb..187e704645 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/MountHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/MountHotfix.cs @@ -72,4 +72,74 @@ public sealed record MountLocaleHotfix1000: IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("mount")] + public sealed record MountHotfix1020 : IDataModel + { + [DBFieldName("Name")] + public string Name; + + [DBFieldName("SourceText")] + public string SourceText; + + [DBFieldName("Description")] + public string Description; + + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("MountTypeID")] + public ushort? MountTypeID; + + [DBFieldName("Flags")] + public int? Flags; + + [DBFieldName("SourceTypeEnum")] + public sbyte? SourceTypeEnum; + + [DBFieldName("SourceSpellID")] + public int? SourceSpellID; + + [DBFieldName("PlayerConditionID")] + public uint? PlayerConditionID; + + [DBFieldName("MountFlyRideHeight")] + public float? MountFlyRideHeight; + + [DBFieldName("UiModelSceneID")] + public int? UiModelSceneID; + + [DBFieldName("MountSpecialRiderAnimKitID")] + public int? MountSpecialRiderAnimKitID; + + [DBFieldName("MountSpecialSpellVisualKitID")] + public int? MountSpecialSpellVisualKitID; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } + + [Hotfix] + [DBTableName("mount_locale")] + public sealed record MountLocaleHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("locale", true)] + public string Locale = ClientLocale.PacketLocaleString; + + [DBFieldName("Name_lang")] + public string NameLang; + + [DBFieldName("SourceText_lang")] + public string SourceTextLang; + + [DBFieldName("Description_lang")] + public string DescriptionLang; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Objects/Hotfixes/MovieHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/MovieHotfix.cs index 0f6c1f3859..ee3545aace 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/MovieHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/MovieHotfix.cs @@ -51,4 +51,30 @@ public sealed record MovieHotfix1010 : IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("movie")] + public sealed record MovieHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("Volume")] + public byte? Volume; + + [DBFieldName("KeyID")] + public byte? KeyID; + + [DBFieldName("AudioFileDataID")] + public uint? AudioFileDataID; + + [DBFieldName("SubtitleFileDataID")] + public uint? SubtitleFileDataID; + + [DBFieldName("SubtitleFileFormat")] + public uint? SubtitleFileFormat; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Objects/Hotfixes/PhaseHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/PhaseHotfix.cs index 129d015b3a..b148dc594e 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/PhaseHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/PhaseHotfix.cs @@ -16,4 +16,18 @@ public sealed record PhaseHotfix1000: IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("phase")] + public sealed record PhaseHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("Flags")] + public int? Flags; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Objects/Hotfixes/PlayerConditionHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/PlayerConditionHotfix.cs index 0a8157ec94..3c8fc5bb17 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/PlayerConditionHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/PlayerConditionHotfix.cs @@ -282,4 +282,284 @@ public sealed record PlayerConditionLocaleHotfix1000: IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("player_condition")] + public sealed record PlayerConditionHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("RaceMask")] + public long? RaceMask; + + [DBFieldName("FailureDescription")] + public string FailureDescription; + + [DBFieldName("ClassMask")] + public int? ClassMask; + + [DBFieldName("SkillLogic")] + public uint? SkillLogic; + + [DBFieldName("LanguageID")] + public int? LanguageID; + + [DBFieldName("MinLanguage")] + public byte? MinLanguage; + + [DBFieldName("MaxLanguage")] + public int? MaxLanguage; + + [DBFieldName("MaxFactionID")] + public ushort? MaxFactionID; + + [DBFieldName("MaxReputation")] + public byte? MaxReputation; + + [DBFieldName("ReputationLogic")] + public uint? ReputationLogic; + + [DBFieldName("CurrentPvpFaction")] + public sbyte? CurrentPvpFaction; + + [DBFieldName("PvpMedal")] + public byte? PvpMedal; + + [DBFieldName("PrevQuestLogic")] + public uint? PrevQuestLogic; + + [DBFieldName("CurrQuestLogic")] + public uint? CurrQuestLogic; + + [DBFieldName("CurrentCompletedQuestLogic")] + public uint? CurrentCompletedQuestLogic; + + [DBFieldName("SpellLogic")] + public uint? SpellLogic; + + [DBFieldName("ItemLogic")] + public uint? ItemLogic; + + [DBFieldName("ItemFlags")] + public byte? ItemFlags; + + [DBFieldName("AuraSpellLogic")] + public uint? AuraSpellLogic; + + [DBFieldName("WorldStateExpressionID")] + public ushort? WorldStateExpressionID; + + [DBFieldName("WeatherID")] + public int? WeatherID; + + [DBFieldName("PartyStatus")] + public byte? PartyStatus; + + [DBFieldName("LifetimeMaxPVPRank")] + public byte? LifetimeMaxPVPRank; + + [DBFieldName("AchievementLogic")] + public uint? AchievementLogic; + + [DBFieldName("Gender")] + public sbyte? Gender; + + [DBFieldName("NativeGender")] + public sbyte? NativeGender; + + [DBFieldName("AreaLogic")] + public uint? AreaLogic; + + [DBFieldName("LfgLogic")] + public uint? LfgLogic; + + [DBFieldName("CurrencyLogic")] + public uint? CurrencyLogic; + + [DBFieldName("QuestKillID")] + public int? QuestKillID; + + [DBFieldName("QuestKillLogic")] + public uint? QuestKillLogic; + + [DBFieldName("MinExpansionLevel")] + public sbyte? MinExpansionLevel; + + [DBFieldName("MaxExpansionLevel")] + public sbyte? MaxExpansionLevel; + + [DBFieldName("MinAvgItemLevel")] + public int? MinAvgItemLevel; + + [DBFieldName("MaxAvgItemLevel")] + public int? MaxAvgItemLevel; + + [DBFieldName("MinAvgEquippedItemLevel")] + public ushort? MinAvgEquippedItemLevel; + + [DBFieldName("MaxAvgEquippedItemLevel")] + public ushort? MaxAvgEquippedItemLevel; + + [DBFieldName("PhaseUseFlags")] + public int? PhaseUseFlags; + + [DBFieldName("PhaseID")] + public ushort? PhaseID; + + [DBFieldName("PhaseGroupID")] + public uint? PhaseGroupID; + + [DBFieldName("Flags")] + public int? Flags; + + [DBFieldName("ChrSpecializationIndex")] + public sbyte? ChrSpecializationIndex; + + [DBFieldName("ChrSpecializationRole")] + public sbyte? ChrSpecializationRole; + + [DBFieldName("ModifierTreeID")] + public uint? ModifierTreeID; + + [DBFieldName("PowerType")] + public sbyte? PowerType; + + [DBFieldName("PowerTypeComp")] + public byte? PowerTypeComp; + + [DBFieldName("PowerTypeValue")] + public byte? PowerTypeValue; + + [DBFieldName("WeaponSubclassMask")] + public int? WeaponSubclassMask; + + [DBFieldName("MaxGuildLevel")] + public byte? MaxGuildLevel; + + [DBFieldName("MinGuildLevel")] + public byte? MinGuildLevel; + + [DBFieldName("MaxExpansionTier")] + public sbyte? MaxExpansionTier; + + [DBFieldName("MinExpansionTier")] + public sbyte? MinExpansionTier; + + [DBFieldName("MinPVPRank")] + public byte? MinPVPRank; + + [DBFieldName("MaxPVPRank")] + public byte? MaxPVPRank; + + [DBFieldName("ContentTuningID")] + public int? ContentTuningID; + + [DBFieldName("CovenantID")] + public int? CovenantID; + + [DBFieldName("TraitNodeEntryLogic")] + public uint? TraitNodeEntryLogic; + + [DBFieldName("SkillID", 4)] + public ushort?[] SkillID; + + [DBFieldName("MinSkill", 4)] + public ushort?[] MinSkill; + + [DBFieldName("MaxSkill", 4)] + public ushort?[] MaxSkill; + + [DBFieldName("MinFactionID", 3)] + public uint?[] MinFactionID; + + [DBFieldName("MinReputation", 3)] + public byte?[] MinReputation; + + [DBFieldName("PrevQuestID", 4)] + public int?[] PrevQuestID; + + [DBFieldName("CurrQuestID", 4)] + public int?[] CurrQuestID; + + [DBFieldName("CurrentCompletedQuestID", 4)] + public int?[] CurrentCompletedQuestID; + + [DBFieldName("SpellID", 4)] + public int?[] SpellID; + + [DBFieldName("ItemID", 4)] + public int?[] ItemID; + + [DBFieldName("ItemCount", 4)] + public uint?[] ItemCount; + + [DBFieldName("Explored", 2)] + public ushort?[] Explored; + + [DBFieldName("Time", 2)] + public uint?[] Time; + + [DBFieldName("AuraSpellID", 4)] + public int?[] AuraSpellID; + + [DBFieldName("AuraStacks", 4)] + public byte?[] AuraStacks; + + [DBFieldName("Achievement", 4)] + public ushort?[] Achievement; + + [DBFieldName("AreaID", 4)] + public ushort?[] AreaID; + + [DBFieldName("LfgStatus", 4)] + public byte?[] LfgStatus; + + [DBFieldName("LfgCompare", 4)] + public byte?[] LfgCompare; + + [DBFieldName("LfgValue", 4)] + public uint?[] LfgValue; + + [DBFieldName("CurrencyID", 4)] + public uint?[] CurrencyID; + + [DBFieldName("CurrencyCount", 4)] + public uint?[] CurrencyCount; + + [DBFieldName("QuestKillMonster", 6)] + public uint?[] QuestKillMonster; + + [DBFieldName("MovementFlags", 2)] + public int?[] MovementFlags; + + [DBFieldName("TraitNodeEntryID", 4)] + public int?[] TraitNodeEntryID; + + [DBFieldName("TraitNodeEntryMinRank", 4)] + public ushort?[] TraitNodeEntryMinRank; + + [DBFieldName("TraitNodeEntryMaxRank", 4)] + public ushort?[] TraitNodeEntryMaxRank; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } + + [Hotfix] + [DBTableName("player_condition_locale")] + public sealed record PlayerConditionLocaleHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("locale", true)] + public string Locale = ClientLocale.PacketLocaleString; + + [DBFieldName("FailureDescription_lang")] + public string FailureDescriptionLang; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Objects/Hotfixes/ServerMessagesHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/ServerMessagesHotfix.cs new file mode 100644 index 0000000000..310ba6797a --- /dev/null +++ b/WowPacketParser/Store/Objects/Hotfixes/ServerMessagesHotfix.cs @@ -0,0 +1,36 @@ +using WowPacketParser.Misc; +using WowPacketParser.SQL; + +namespace WowPacketParser.Store.Objects +{ + [Hotfix] + [DBTableName("server_messages")] + public sealed record ServerMessagesHotfix1000: IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("Text")] + public string Text; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } + + [Hotfix] + [DBTableName("server_messages_locale")] + public sealed record ServerMessagesLocaleHotfix1000 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("locale", true)] + public string Locale = ClientLocale.PacketLocaleString; + + [DBFieldName("Text_lang")] + public string TextLang; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } +} diff --git a/WowPacketParser/Store/Objects/Hotfixes/SpellShapeshiftFormHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/SpellShapeshiftFormHotfix.cs index ebe48f1048..999ea8635b 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/SpellShapeshiftFormHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/SpellShapeshiftFormHotfix.cs @@ -60,4 +60,71 @@ public sealed record SpellShapeshiftFormLocaleHotfix1000: IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("spell_shapeshift_form")] + public sealed record SpellShapeshiftFormHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("Name")] + public string Name; + + [DBFieldName("CreatureDisplayID")] + public uint? CreatureDisplayID; + + [DBFieldName("CreatureType")] + public sbyte? CreatureType; + + [DBFieldName("Flags")] + public int? Flags; + + [DBFieldName("AttackIconFileID")] + public int? AttackIconFileID; + + [DBFieldName("BonusActionBar")] + public sbyte? BonusActionBar; + + [DBFieldName("CombatRoundTime")] + public short? CombatRoundTime; + + [DBFieldName("DamageVariance")] + public float? DamageVariance; + + [DBFieldName("MountTypeID")] + public ushort? MountTypeID; + + [DBFieldName("CreatureDisplayID2")] + public uint? CreatureDisplayID2; + + [DBFieldName("CreatureDisplayID3")] + public uint? CreatureDisplayID3; + + [DBFieldName("CreatureDisplayID4")] + public uint? CreatureDisplayID4; + + [DBFieldName("PresetSpellID", 8)] + public uint?[] PresetSpellID; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } + + [Hotfix] + [DBTableName("spell_shapeshift_form_locale")] + public sealed record SpellShapeshiftFormLocaleHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("locale", true)] + public string Locale = ClientLocale.PacketLocaleString; + + [DBFieldName("Name_lang")] + public string NameLang; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Objects/Hotfixes/UiMapHotfix.cs b/WowPacketParser/Store/Objects/Hotfixes/UiMapHotfix.cs index 95ce50d8fe..cbbb19c33b 100644 --- a/WowPacketParser/Store/Objects/Hotfixes/UiMapHotfix.cs +++ b/WowPacketParser/Store/Objects/Hotfixes/UiMapHotfix.cs @@ -133,4 +133,71 @@ public sealed record UiMapLocaleHotfix1015 : IDataModel [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } + + [Hotfix] + [DBTableName("ui_map")] + public sealed record UiMapHotfix1020 : IDataModel + { + [DBFieldName("Name")] + public string Name; + + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("ParentUiMapID")] + public int? ParentUiMapID; + + [DBFieldName("Flags")] + public int? Flags; + + [DBFieldName("System")] + public sbyte? System; + + [DBFieldName("Type")] + public byte? Type; + + [DBFieldName("BountySetID")] + public int? BountySetID; + + [DBFieldName("BountyDisplayLocation")] + public uint? BountyDisplayLocation; + + [DBFieldName("VisibilityPlayerConditionID2")] + public int? VisibilityPlayerConditionID2; + + [DBFieldName("VisibilityPlayerConditionID")] + public int? VisibilityPlayerConditionID; + + [DBFieldName("HelpTextPosition")] + public sbyte? HelpTextPosition; + + [DBFieldName("BkgAtlasID")] + public int? BkgAtlasID; + + [DBFieldName("AlternateUiMapGroup")] + public int? AlternateUiMapGroup; + + [DBFieldName("ContentTuningID")] + public int? ContentTuningID; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } + + [Hotfix] + [DBTableName("ui_map_locale")] + public sealed record UiMapLocaleHotfix1020 : IDataModel + { + [DBFieldName("ID", true)] + public uint? ID; + + [DBFieldName("locale", true)] + public string Locale = ClientLocale.PacketLocaleString; + + [DBFieldName("Name_lang")] + public string NameLang; + + [DBFieldName("VerifiedBuild")] + public int? VerifiedBuild = ClientVersion.BuildInt; + } } diff --git a/WowPacketParser/Store/Storage.cs b/WowPacketParser/Store/Storage.cs index d6b306c083..78c237b2b6 100644 --- a/WowPacketParser/Store/Storage.cs +++ b/WowPacketParser/Store/Storage.cs @@ -158,6 +158,7 @@ public static class Storage public static readonly DataBag AreaTableHotfixes1015 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag AreaTriggerHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag AreaTriggerHotfixes1007 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag AreaTriggerHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ArmorLocationHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ArtifactHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ArtifactAppearanceHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); @@ -208,8 +209,10 @@ public static class Storage public static readonly DataBag ChrCustomizationChoiceHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ChrCustomizationChoiceHotfixes1010 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ChrCustomizationDisplayInfoHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag ChrCustomizationDisplayInfoHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ChrCustomizationElementHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ChrCustomizationElementHotfixes1017 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag ChrCustomizationElementHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ChrCustomizationOptionHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ChrCustomizationReqHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ChrCustomizationReqHotfixes1015 = new DataBag(new List { SQLOutput.hotfixes }); @@ -227,6 +230,7 @@ public static class Storage public static readonly DataBag ContentTuningXExpectedHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ContentTuningXLabelHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ConversationLineHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag ConversationLineHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag CorruptionEffectsHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag CreatureDisplayInfoHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag CreatureDisplayInfoExtraHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); @@ -245,6 +249,7 @@ public static class Storage public static readonly DataBag CurveHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag CurvePointHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag CurvePointHotfixes1010 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag CurvePointHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag DestructibleModelDataHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag DifficultyHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag DifficultyHotfixes1007 = new DataBag(new List { SQLOutput.hotfixes }); @@ -361,11 +366,14 @@ public static class Storage public static readonly DataBag MawPowerHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ModifierTreeHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag MountHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag MountHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag MountCapabilityHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag MountCapabilityHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag MountTypeXCapabilityHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag MountXDisplayHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag MovieHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag MovieHotfixes1010 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag MovieHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag MythicPlusSeasonHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag NameGenHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag NamesProfanityHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); @@ -375,8 +383,10 @@ public static class Storage public static readonly DataBag OverrideSpellDataHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ParagonReputationHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag PhaseHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag PhaseHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag PhaseXPhaseGroupHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag PlayerConditionHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag PlayerConditionHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag PowerDisplayHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag PowerTypeHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag PrestigeLevelInfoHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); @@ -407,6 +417,7 @@ public static class Storage public static readonly DataBag SceneScriptGlobalTextHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SceneScriptPackageHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SceneScriptTextHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag ServerMessagesHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SkillLineHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SkillLineAbilityHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SkillLineXTraitTreeHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); @@ -449,6 +460,7 @@ public static class Storage public static readonly DataBag SpellScalingHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SpellShapeshiftHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SpellShapeshiftFormHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag SpellShapeshiftFormHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SpellTargetRestrictionsHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SpellTotemsHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SpellVisualHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); @@ -499,6 +511,7 @@ public static class Storage public static readonly DataBag TransportRotationHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag UiMapHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag UiMapHotfixes1015 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag UiMapHotfixes1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag UiMapAssignmentHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag UiMapLinkHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag UiMapXMapArtHotfixes1000 = new DataBag(new List { SQLOutput.hotfixes }); @@ -591,7 +604,9 @@ public static class Storage public static readonly DataBag MapDifficultyHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag MapDifficultyXConditionHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag MountHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag MountHotfixesLocale1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag PlayerConditionHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag PlayerConditionHotfixesLocale1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag PrestigeLevelInfoHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag PvpTalentHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag PvpTalentHotfixesLocale1002 = new DataBag(new List { SQLOutput.hotfixes }); @@ -601,6 +616,7 @@ public static class Storage public static readonly DataBag QuestSortHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ScenarioHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag ScenarioStepHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag ServerMessagesHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SkillLineHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SkillLineAbilityHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SpecializationSpellsHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); @@ -611,6 +627,7 @@ public static class Storage public static readonly DataBag SpellNameHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SpellRangeHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag SpellShapeshiftFormHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag SpellShapeshiftFormHotfixesLocale1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag TalentHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag TaxiNodesHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag TaxiNodesHotfixesLocale1017 = new DataBag(new List { SQLOutput.hotfixes }); @@ -622,6 +639,7 @@ public static class Storage public static readonly DataBag TransmogSetGroupHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag UiMapHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag UiMapHotfixesLocale1015 = new DataBag(new List { SQLOutput.hotfixes }); + public static readonly DataBag UiMapHotfixesLocale1020 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag UiSplashScreenHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag UnitPowerBarHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); public static readonly DataBag WmoAreaTableHotfixesLocale1000 = new DataBag(new List { SQLOutput.hotfixes }); @@ -745,6 +763,7 @@ public static void ClearContainers() AreaTableHotfixes1015.Clear(); AreaTriggerHotfixes1000.Clear(); AreaTriggerHotfixes1007.Clear(); + AreaTriggerHotfixes1020.Clear(); ArmorLocationHotfixes1000.Clear(); ArtifactHotfixes1000.Clear(); ArtifactAppearanceHotfixes1000.Clear(); @@ -795,8 +814,10 @@ public static void ClearContainers() ChrCustomizationChoiceHotfixes1000.Clear(); ChrCustomizationChoiceHotfixes1010.Clear(); ChrCustomizationDisplayInfoHotfixes1000.Clear(); + ChrCustomizationDisplayInfoHotfixes1020.Clear(); ChrCustomizationElementHotfixes1000.Clear(); ChrCustomizationElementHotfixes1017.Clear(); + ChrCustomizationElementHotfixes1020.Clear(); ChrCustomizationOptionHotfixes1000.Clear(); ChrCustomizationReqHotfixes1000.Clear(); ChrCustomizationReqHotfixes1015.Clear(); @@ -814,6 +835,7 @@ public static void ClearContainers() ContentTuningXExpectedHotfixes1000.Clear(); ContentTuningXLabelHotfixes1000.Clear(); ConversationLineHotfixes1000.Clear(); + ConversationLineHotfixes1020.Clear(); CorruptionEffectsHotfixes1000.Clear(); CreatureDisplayInfoHotfixes1000.Clear(); CreatureDisplayInfoExtraHotfixes1000.Clear(); @@ -832,6 +854,7 @@ public static void ClearContainers() CurveHotfixes1000.Clear(); CurvePointHotfixes1000.Clear(); CurvePointHotfixes1010.Clear(); + CurvePointHotfixes1020.Clear(); DestructibleModelDataHotfixes1000.Clear(); DifficultyHotfixes1000.Clear(); DifficultyHotfixes1007.Clear(); @@ -948,11 +971,14 @@ public static void ClearContainers() MawPowerHotfixes1000.Clear(); ModifierTreeHotfixes1000.Clear(); MountHotfixes1000.Clear(); + MountHotfixes1020.Clear(); MountCapabilityHotfixes1000.Clear(); + MountCapabilityHotfixes1020.Clear(); MountTypeXCapabilityHotfixes1000.Clear(); MountXDisplayHotfixes1000.Clear(); MovieHotfixes1000.Clear(); MovieHotfixes1010.Clear(); + MovieHotfixes1020.Clear(); MythicPlusSeasonHotfixes1000.Clear(); NameGenHotfixes1000.Clear(); NamesProfanityHotfixes1000.Clear(); @@ -962,8 +988,10 @@ public static void ClearContainers() OverrideSpellDataHotfixes1000.Clear(); ParagonReputationHotfixes1000.Clear(); PhaseHotfixes1000.Clear(); + PhaseHotfixes1020.Clear(); PhaseXPhaseGroupHotfixes1000.Clear(); PlayerConditionHotfixes1000.Clear(); + PlayerConditionHotfixes1020.Clear(); PowerDisplayHotfixes1000.Clear(); PowerTypeHotfixes1000.Clear(); PrestigeLevelInfoHotfixes1000.Clear(); @@ -994,6 +1022,7 @@ public static void ClearContainers() SceneScriptGlobalTextHotfixes1000.Clear(); SceneScriptPackageHotfixes1000.Clear(); SceneScriptTextHotfixes1000.Clear(); + ServerMessagesHotfixes1000.Clear(); SkillLineHotfixes1000.Clear(); SkillLineAbilityHotfixes1000.Clear(); SkillLineXTraitTreeHotfixes1000.Clear(); @@ -1036,6 +1065,7 @@ public static void ClearContainers() SpellScalingHotfixes1000.Clear(); SpellShapeshiftHotfixes1000.Clear(); SpellShapeshiftFormHotfixes1000.Clear(); + SpellShapeshiftFormHotfixes1020.Clear(); SpellTargetRestrictionsHotfixes1000.Clear(); SpellTotemsHotfixes1000.Clear(); SpellVisualHotfixes1000.Clear(); @@ -1086,6 +1116,7 @@ public static void ClearContainers() TransportRotationHotfixes1000.Clear(); UiMapHotfixes1000.Clear(); UiMapHotfixes1015.Clear(); + UiMapHotfixes1020.Clear(); UiMapAssignmentHotfixes1000.Clear(); UiMapLinkHotfixes1000.Clear(); UiMapXMapArtHotfixes1000.Clear(); @@ -1177,7 +1208,9 @@ public static void ClearContainers() MapDifficultyHotfixesLocale1000.Clear(); MapDifficultyXConditionHotfixesLocale1000.Clear(); MountHotfixesLocale1000.Clear(); + MountHotfixesLocale1020.Clear(); PlayerConditionHotfixesLocale1000.Clear(); + PlayerConditionHotfixesLocale1020.Clear(); PrestigeLevelInfoHotfixesLocale1000.Clear(); PvpTalentHotfixesLocale1000.Clear(); PvpTalentHotfixesLocale1002.Clear(); @@ -1187,6 +1220,7 @@ public static void ClearContainers() QuestSortHotfixesLocale1000.Clear(); ScenarioHotfixesLocale1000.Clear(); ScenarioStepHotfixesLocale1000.Clear(); + ServerMessagesHotfixesLocale1000.Clear(); SkillLineHotfixesLocale1000.Clear(); SkillLineAbilityHotfixesLocale1000.Clear(); SpecializationSpellsHotfixesLocale1000.Clear(); @@ -1197,6 +1231,7 @@ public static void ClearContainers() SpellNameHotfixesLocale1000.Clear(); SpellRangeHotfixesLocale1000.Clear(); SpellShapeshiftFormHotfixesLocale1000.Clear(); + SpellShapeshiftFormHotfixesLocale1020.Clear(); TalentHotfixesLocale1000.Clear(); TaxiNodesHotfixesLocale1000.Clear(); TaxiNodesHotfixesLocale1017.Clear(); @@ -1208,6 +1243,7 @@ public static void ClearContainers() TransmogSetGroupHotfixesLocale1000.Clear(); UiMapHotfixesLocale1000.Clear(); UiMapHotfixesLocale1015.Clear(); + UiMapHotfixesLocale1020.Clear(); UiSplashScreenHotfixesLocale1000.Clear(); UnitPowerBarHotfixesLocale1000.Clear(); WmoAreaTableHotfixesLocale1000.Clear(); diff --git a/WowPacketParserModule.V10_0_0_46181/Parsers/HotfixHandler.cs b/WowPacketParserModule.V10_0_0_46181/Parsers/HotfixHandler.cs index 7e751d2da8..7cd71dec8b 100644 --- a/WowPacketParserModule.V10_0_0_46181/Parsers/HotfixHandler.cs +++ b/WowPacketParserModule.V10_0_0_46181/Parsers/HotfixHandler.cs @@ -333,6 +333,31 @@ public static void AreaTriggerHandler1007(Packet packet, uint entry, params obje Storage.AreaTriggerHotfixes1007.Add(hotfix, packet.TimeSpan); } + public static void AreaTriggerHandler1020(Packet packet, uint entry, params object[] indexes) + { + AreaTriggerHotfix1020 hotfix = new AreaTriggerHotfix1020(); + + hotfix.PosX = packet.ReadSingle("PosX", indexes); + hotfix.PosY = packet.ReadSingle("PosY", indexes); + hotfix.PosZ = packet.ReadSingle("PosZ", indexes); + hotfix.ID = packet.ReadUInt32("ID", indexes); + hotfix.ContinentID = packet.ReadInt16("ContinentID", indexes); + hotfix.PhaseUseFlags = packet.ReadInt32("PhaseUseFlags", indexes); + hotfix.PhaseID = packet.ReadInt16("PhaseID", indexes); + hotfix.PhaseGroupID = packet.ReadInt16("PhaseGroupID", indexes); + hotfix.Radius = packet.ReadSingle("Radius", indexes); + hotfix.BoxLength = packet.ReadSingle("BoxLength", indexes); + hotfix.BoxWidth = packet.ReadSingle("BoxWidth", indexes); + hotfix.BoxHeight = packet.ReadSingle("BoxHeight", indexes); + hotfix.BoxYaw = packet.ReadSingle("BoxYaw", indexes); + hotfix.ShapeType = packet.ReadSByte("ShapeType", indexes); + hotfix.ShapeID = packet.ReadInt16("ShapeID", indexes); + hotfix.AreaTriggerActionSetID = packet.ReadInt32("AreaTriggerActionSetID", indexes); + hotfix.Flags = packet.ReadSByte("Flags", indexes); + + Storage.AreaTriggerHotfixes1020.Add(hotfix, packet.TimeSpan); + } + public static void ArmorLocationHandler1000(Packet packet, uint entry, params object[] indexes) { ArmorLocationHotfix1000 hotfix = new ArmorLocationHotfix1000(); @@ -1326,6 +1351,20 @@ public static void ChrCustomizationDisplayInfoHandler1000(Packet packet, uint en Storage.ChrCustomizationDisplayInfoHotfixes1000.Add(hotfix, packet.TimeSpan); } + public static void ChrCustomizationDisplayInfoHandler1020(Packet packet, uint entry, params object[] indexes) + { + ChrCustomizationDisplayInfoHotfix1020 hotfix = new ChrCustomizationDisplayInfoHotfix1020(); + + hotfix.ID = entry; + hotfix.ShapeshiftFormID = packet.ReadInt32("ShapeshiftFormID", indexes); + hotfix.DisplayID = packet.ReadInt32("DisplayID", indexes); + hotfix.BarberShopMinCameraDistance = packet.ReadSingle("BarberShopMinCameraDistance", indexes); + hotfix.BarberShopHeightOffset = packet.ReadSingle("BarberShopHeightOffset", indexes); + hotfix.BarberShopCameraZoomOffset = packet.ReadSingle("BarberShopCameraZoomOffset", indexes); + + Storage.ChrCustomizationDisplayInfoHotfixes1020.Add(hotfix, packet.TimeSpan); + } + public static void ChrCustomizationElementHandler1000(Packet packet, uint entry, params object[] indexes) { ChrCustomizationElementHotfix1000 hotfix = new ChrCustomizationElementHotfix1000(); @@ -1366,6 +1405,28 @@ public static void ChrCustomizationElementHandler1017(Packet packet, uint entry, Storage.ChrCustomizationElementHotfixes1017.Add(hotfix, packet.TimeSpan); } + public static void ChrCustomizationElementHandler1020(Packet packet, uint entry, params object[] indexes) + { + ChrCustomizationElementHotfix1020 hotfix = new ChrCustomizationElementHotfix1020(); + + hotfix.ID = entry; + hotfix.ChrCustomizationChoiceID = packet.ReadInt32("ChrCustomizationChoiceID", indexes); + hotfix.RelatedChrCustomizationChoiceID = packet.ReadInt32("RelatedChrCustomizationChoiceID", indexes); + hotfix.ChrCustomizationGeosetID = packet.ReadInt32("ChrCustomizationGeosetID", indexes); + hotfix.ChrCustomizationSkinnedModelID = packet.ReadInt32("ChrCustomizationSkinnedModelID", indexes); + hotfix.ChrCustomizationMaterialID = packet.ReadInt32("ChrCustomizationMaterialID", indexes); + hotfix.ChrCustomizationBoneSetID = packet.ReadInt32("ChrCustomizationBoneSetID", indexes); + hotfix.ChrCustomizationCondModelID = packet.ReadInt32("ChrCustomizationCondModelID", indexes); + hotfix.ChrCustomizationDisplayInfoID = packet.ReadInt32("ChrCustomizationDisplayInfoID", indexes); + hotfix.ChrCustItemGeoModifyID = packet.ReadInt32("ChrCustItemGeoModifyID", indexes); + hotfix.ChrCustomizationVoiceID = packet.ReadInt32("ChrCustomizationVoiceID", indexes); + hotfix.AnimKitID = packet.ReadInt32("AnimKitID", indexes); + hotfix.ParticleColorID = packet.ReadInt32("ParticleColorID", indexes); + hotfix.ChrCustGeoComponentLinkID = packet.ReadInt32("ChrCustGeoComponentLinkID", indexes); + + Storage.ChrCustomizationElementHotfixes1020.Add(hotfix, packet.TimeSpan); + } + public static void ChrCustomizationOptionHandler1000(Packet packet, uint entry, params object[] indexes) { ChrCustomizationOptionHotfix1000 hotfix = new ChrCustomizationOptionHotfix1000(); @@ -1769,6 +1830,24 @@ public static void ConversationLineHandler1000(Packet packet, uint entry, params Storage.ConversationLineHotfixes1000.Add(hotfix, packet.TimeSpan); } + public static void ConversationLineHandler1020(Packet packet, uint entry, params object[] indexes) + { + ConversationLineHotfix1020 hotfix = new ConversationLineHotfix1020(); + + hotfix.ID = entry; + hotfix.BroadcastTextID = packet.ReadUInt32("BroadcastTextID", indexes); + hotfix.Unused1020 = packet.ReadUInt32("Unused1020", indexes); + hotfix.SpellVisualKitID = packet.ReadUInt32("SpellVisualKitID", indexes); + hotfix.AdditionalDuration = packet.ReadInt32("AdditionalDuration", indexes); + hotfix.NextConversationLineID = packet.ReadUInt16("NextConversationLineID", indexes); + hotfix.AnimKitID = packet.ReadUInt16("AnimKitID", indexes); + hotfix.SpeechType = packet.ReadByte("SpeechType", indexes); + hotfix.StartAnimation = packet.ReadByte("StartAnimation", indexes); + hotfix.EndAnimation = packet.ReadByte("EndAnimation", indexes); + + Storage.ConversationLineHotfixes1020.Add(hotfix, packet.TimeSpan); + } + public static void CorruptionEffectsHandler1000(Packet packet, uint entry, params object[] indexes) { CorruptionEffectsHotfix1000 hotfix = new CorruptionEffectsHotfix1000(); @@ -2238,6 +2317,21 @@ public static void CurvePointHandler1010(Packet packet, uint entry, params objec Storage.CurvePointHotfixes1010.Add(hotfix, packet.TimeSpan); } + public static void CurvePointHandler1020(Packet packet, uint entry, params object[] indexes) + { + CurvePointHotfix1020 hotfix = new CurvePointHotfix1020(); + + hotfix.PosX = packet.ReadSingle("PosX", indexes); + hotfix.PosY = packet.ReadSingle("PosY", indexes); + hotfix.PreSLSquishPosX = packet.ReadSingle("PreSLSquishPosX", indexes); + hotfix.PreSLSquishPosY = packet.ReadSingle("PreSLSquishPosY", indexes); + hotfix.ID = packet.ReadUInt32("ID", indexes); + hotfix.CurveID = packet.ReadUInt32("CurveID", indexes); + hotfix.OrderIndex = packet.ReadByte("OrderIndex", indexes); + + Storage.CurvePointHotfixes1020.Add(hotfix, packet.TimeSpan); + } + public static void DestructibleModelDataHandler1000(Packet packet, uint entry, params object[] indexes) { DestructibleModelDataHotfix1000 hotfix = new DestructibleModelDataHotfix1000(); @@ -4752,6 +4846,39 @@ public static void MountHandler1000(Packet packet, uint entry, params object[] i } } + public static void MountHandler1020(Packet packet, uint entry, params object[] indexes) + { + MountHotfix1020 hotfix = new MountHotfix1020(); + + hotfix.Name = packet.ReadCString("Name", indexes); + hotfix.SourceText = packet.ReadCString("SourceText", indexes); + hotfix.Description = packet.ReadCString("Description", indexes); + hotfix.ID = packet.ReadUInt32("ID", indexes); + hotfix.MountTypeID = packet.ReadUInt16("MountTypeID", indexes); + hotfix.Flags = packet.ReadInt32("Flags", indexes); + hotfix.SourceTypeEnum = packet.ReadSByte("SourceTypeEnum", indexes); + hotfix.SourceSpellID = packet.ReadInt32("SourceSpellID", indexes); + hotfix.PlayerConditionID = packet.ReadUInt32("PlayerConditionID", indexes); + hotfix.MountFlyRideHeight = packet.ReadSingle("MountFlyRideHeight", indexes); + hotfix.UiModelSceneID = packet.ReadInt32("UiModelSceneID", indexes); + hotfix.MountSpecialRiderAnimKitID = packet.ReadInt32("MountSpecialRiderAnimKitID", indexes); + hotfix.MountSpecialSpellVisualKitID = packet.ReadInt32("MountSpecialSpellVisualKitID", indexes); + + Storage.MountHotfixes1020.Add(hotfix, packet.TimeSpan); + + if (ClientLocale.PacketLocale != LocaleConstant.enUS) + { + MountLocaleHotfix1020 hotfixLocale = new MountLocaleHotfix1020 + { + ID = hotfix.ID, + NameLang = hotfix.Name, + SourceTextLang = hotfix.SourceText, + DescriptionLang = hotfix.Description, + }; + Storage.MountHotfixesLocale1020.Add(hotfixLocale, packet.TimeSpan); + } + } + public static void MountCapabilityHandler1000(Packet packet, uint entry, params object[] indexes) { MountCapabilityHotfix1000 hotfix = new MountCapabilityHotfix1000(); @@ -4770,6 +4897,24 @@ public static void MountCapabilityHandler1000(Packet packet, uint entry, params Storage.MountCapabilityHotfixes1000.Add(hotfix, packet.TimeSpan); } + public static void MountCapabilityHandler1020(Packet packet, uint entry, params object[] indexes) + { + MountCapabilityHotfix1020 hotfix = new MountCapabilityHotfix1020(); + + hotfix.ID = entry; + hotfix.Flags = packet.ReadInt32("Flags", indexes); + hotfix.ReqRidingSkill = packet.ReadUInt16("ReqRidingSkill", indexes); + hotfix.ReqAreaID = packet.ReadUInt16("ReqAreaID", indexes); + hotfix.ReqSpellAuraID = packet.ReadUInt32("ReqSpellAuraID", indexes); + hotfix.ReqSpellKnownID = packet.ReadInt32("ReqSpellKnownID", indexes); + hotfix.ModSpellAuraID = packet.ReadInt32("ModSpellAuraID", indexes); + hotfix.ReqMapID = packet.ReadInt16("ReqMapID", indexes); + hotfix.PlayerConditionID = packet.ReadInt32("PlayerConditionID", indexes); + hotfix.FlightCapabilityID = packet.ReadInt32("FlightCapabilityID", indexes); + + Storage.MountCapabilityHotfixes1020.Add(hotfix, packet.TimeSpan); + } + public static void MountTypeXCapabilityHandler1000(Packet packet, uint entry, params object[] indexes) { MountTypeXCapabilityHotfix1000 hotfix = new MountTypeXCapabilityHotfix1000(); @@ -4821,6 +4966,20 @@ public static void MovieHandler1010(Packet packet, uint entry, params object[] i Storage.MovieHotfixes1010.Add(hotfix, packet.TimeSpan); } + public static void MovieHandler1020(Packet packet, uint entry, params object[] indexes) + { + MovieHotfix1020 hotfix = new MovieHotfix1020(); + + hotfix.ID = entry; + hotfix.Volume = packet.ReadByte("Volume", indexes); + hotfix.KeyID = packet.ReadByte("KeyID", indexes); + hotfix.AudioFileDataID = packet.ReadUInt32("AudioFileDataID", indexes); + hotfix.SubtitleFileDataID = packet.ReadUInt32("SubtitleFileDataID", indexes); + hotfix.SubtitleFileFormat = packet.ReadUInt32("SubtitleFileFormat", indexes); + + Storage.MovieHotfixes1020.Add(hotfix, packet.TimeSpan); + } + public static void MythicPlusSeasonHandler1000(Packet packet, uint entry, params object[] indexes) { MythicPlusSeasonHotfix1000 hotfix = new MythicPlusSeasonHotfix1000(); @@ -4925,6 +5084,16 @@ public static void PhaseHandler1000(Packet packet, uint entry, params object[] i Storage.PhaseHotfixes1000.Add(hotfix, packet.TimeSpan); } + public static void PhaseHandler1020(Packet packet, uint entry, params object[] indexes) + { + PhaseHotfix1020 hotfix = new PhaseHotfix1020(); + + hotfix.ID = entry; + hotfix.Flags = packet.ReadInt32("Flags", indexes); + + Storage.PhaseHotfixes1020.Add(hotfix, packet.TimeSpan); + } + public static void PhaseXPhaseGroupHandler1000(Packet packet, uint entry, params object[] indexes) { PhaseXPhaseGroupHotfix1000 hotfix = new PhaseXPhaseGroupHotfix1000(); @@ -5093,6 +5262,163 @@ public static void PlayerConditionHandler1000(Packet packet, uint entry, params } } + public static void PlayerConditionHandler1020(Packet packet, uint entry, params object[] indexes) + { + PlayerConditionHotfix1020 hotfix = new PlayerConditionHotfix1020(); + + hotfix.ID = entry; + hotfix.RaceMask = packet.ReadInt64("RaceMask", indexes); + hotfix.FailureDescription = packet.ReadCString("FailureDescription", indexes); + hotfix.ClassMask = packet.ReadInt32("ClassMask", indexes); + hotfix.SkillLogic = packet.ReadUInt32("SkillLogic", indexes); + hotfix.LanguageID = packet.ReadInt32("LanguageID", indexes); + hotfix.MinLanguage = packet.ReadByte("MinLanguage", indexes); + hotfix.MaxLanguage = packet.ReadInt32("MaxLanguage", indexes); + hotfix.MaxFactionID = packet.ReadUInt16("MaxFactionID", indexes); + hotfix.MaxReputation = packet.ReadByte("MaxReputation", indexes); + hotfix.ReputationLogic = packet.ReadUInt32("ReputationLogic", indexes); + hotfix.CurrentPvpFaction = packet.ReadSByte("CurrentPvpFaction", indexes); + hotfix.PvpMedal = packet.ReadByte("PvpMedal", indexes); + hotfix.PrevQuestLogic = packet.ReadUInt32("PrevQuestLogic", indexes); + hotfix.CurrQuestLogic = packet.ReadUInt32("CurrQuestLogic", indexes); + hotfix.CurrentCompletedQuestLogic = packet.ReadUInt32("CurrentCompletedQuestLogic", indexes); + hotfix.SpellLogic = packet.ReadUInt32("SpellLogic", indexes); + hotfix.ItemLogic = packet.ReadUInt32("ItemLogic", indexes); + hotfix.ItemFlags = packet.ReadByte("ItemFlags", indexes); + hotfix.AuraSpellLogic = packet.ReadUInt32("AuraSpellLogic", indexes); + hotfix.WorldStateExpressionID = packet.ReadUInt16("WorldStateExpressionID", indexes); + hotfix.WeatherID = packet.ReadInt32("WeatherID", indexes); + hotfix.PartyStatus = packet.ReadByte("PartyStatus", indexes); + hotfix.LifetimeMaxPVPRank = packet.ReadByte("LifetimeMaxPVPRank", indexes); + hotfix.AchievementLogic = packet.ReadUInt32("AchievementLogic", indexes); + hotfix.Gender = packet.ReadSByte("Gender", indexes); + hotfix.NativeGender = packet.ReadSByte("NativeGender", indexes); + hotfix.AreaLogic = packet.ReadUInt32("AreaLogic", indexes); + hotfix.LfgLogic = packet.ReadUInt32("LfgLogic", indexes); + hotfix.CurrencyLogic = packet.ReadUInt32("CurrencyLogic", indexes); + hotfix.QuestKillID = packet.ReadInt32("QuestKillID", indexes); + hotfix.QuestKillLogic = packet.ReadUInt32("QuestKillLogic", indexes); + hotfix.MinExpansionLevel = packet.ReadSByte("MinExpansionLevel", indexes); + hotfix.MaxExpansionLevel = packet.ReadSByte("MaxExpansionLevel", indexes); + hotfix.MinAvgItemLevel = packet.ReadInt32("MinAvgItemLevel", indexes); + hotfix.MaxAvgItemLevel = packet.ReadInt32("MaxAvgItemLevel", indexes); + hotfix.MinAvgEquippedItemLevel = packet.ReadUInt16("MinAvgEquippedItemLevel", indexes); + hotfix.MaxAvgEquippedItemLevel = packet.ReadUInt16("MaxAvgEquippedItemLevel", indexes); + hotfix.PhaseUseFlags = packet.ReadInt32("PhaseUseFlags", indexes); + hotfix.PhaseID = packet.ReadUInt16("PhaseID", indexes); + hotfix.PhaseGroupID = packet.ReadUInt32("PhaseGroupID", indexes); + hotfix.Flags = packet.ReadInt32("Flags", indexes); + hotfix.ChrSpecializationIndex = packet.ReadSByte("ChrSpecializationIndex", indexes); + hotfix.ChrSpecializationRole = packet.ReadSByte("ChrSpecializationRole", indexes); + hotfix.ModifierTreeID = packet.ReadUInt32("ModifierTreeID", indexes); + hotfix.PowerType = packet.ReadSByte("PowerType", indexes); + hotfix.PowerTypeComp = packet.ReadByte("PowerTypeComp", indexes); + hotfix.PowerTypeValue = packet.ReadByte("PowerTypeValue", indexes); + hotfix.WeaponSubclassMask = packet.ReadInt32("WeaponSubclassMask", indexes); + hotfix.MaxGuildLevel = packet.ReadByte("MaxGuildLevel", indexes); + hotfix.MinGuildLevel = packet.ReadByte("MinGuildLevel", indexes); + hotfix.MaxExpansionTier = packet.ReadSByte("MaxExpansionTier", indexes); + hotfix.MinExpansionTier = packet.ReadSByte("MinExpansionTier", indexes); + hotfix.MinPVPRank = packet.ReadByte("MinPVPRank", indexes); + hotfix.MaxPVPRank = packet.ReadByte("MaxPVPRank", indexes); + hotfix.ContentTuningID = packet.ReadInt32("ContentTuningID", indexes); + hotfix.CovenantID = packet.ReadInt32("CovenantID", indexes); + hotfix.TraitNodeEntryLogic = packet.ReadUInt32("TraitNodeEntryLogic", indexes); + hotfix.SkillID = new ushort?[4]; + for (int i = 0; i < 4; i++) + hotfix.SkillID[i] = packet.ReadUInt16("SkillID", indexes, i); + hotfix.MinSkill = new ushort?[4]; + for (int i = 0; i < 4; i++) + hotfix.MinSkill[i] = packet.ReadUInt16("MinSkill", indexes, i); + hotfix.MaxSkill = new ushort?[4]; + for (int i = 0; i < 4; i++) + hotfix.MaxSkill[i] = packet.ReadUInt16("MaxSkill", indexes, i); + hotfix.MinFactionID = new uint?[3]; + for (int i = 0; i < 3; i++) + hotfix.MinFactionID[i] = packet.ReadUInt32("MinFactionID", indexes, i); + hotfix.MinReputation = new byte?[3]; + for (int i = 0; i < 3; i++) + hotfix.MinReputation[i] = packet.ReadByte("MinReputation", indexes, i); + hotfix.PrevQuestID = new int?[4]; + for (int i = 0; i < 4; i++) + hotfix.PrevQuestID[i] = packet.ReadInt32("PrevQuestID", indexes, i); + hotfix.CurrQuestID = new int?[4]; + for (int i = 0; i < 4; i++) + hotfix.CurrQuestID[i] = packet.ReadInt32("CurrQuestID", indexes, i); + hotfix.CurrentCompletedQuestID = new int?[4]; + for (int i = 0; i < 4; i++) + hotfix.CurrentCompletedQuestID[i] = packet.ReadInt32("CurrentCompletedQuestID", indexes, i); + hotfix.SpellID = new int?[4]; + for (int i = 0; i < 4; i++) + hotfix.SpellID[i] = packet.ReadInt32("SpellID", indexes, i); + hotfix.ItemID = new int?[4]; + for (int i = 0; i < 4; i++) + hotfix.ItemID[i] = packet.ReadInt32("ItemID", indexes, i); + hotfix.ItemCount = new uint?[4]; + for (int i = 0; i < 4; i++) + hotfix.ItemCount[i] = packet.ReadUInt32("ItemCount", indexes, i); + hotfix.Explored = new ushort?[2]; + for (int i = 0; i < 2; i++) + hotfix.Explored[i] = packet.ReadUInt16("Explored", indexes, i); + hotfix.Time = new uint?[2]; + for (int i = 0; i < 2; i++) + hotfix.Time[i] = packet.ReadUInt32("Time", indexes, i); + hotfix.AuraSpellID = new int?[4]; + for (int i = 0; i < 4; i++) + hotfix.AuraSpellID[i] = packet.ReadInt32("AuraSpellID", indexes, i); + hotfix.AuraStacks = new byte?[4]; + for (int i = 0; i < 4; i++) + hotfix.AuraStacks[i] = packet.ReadByte("AuraStacks", indexes, i); + hotfix.Achievement = new ushort?[4]; + for (int i = 0; i < 4; i++) + hotfix.Achievement[i] = packet.ReadUInt16("Achievement", indexes, i); + hotfix.AreaID = new ushort?[4]; + for (int i = 0; i < 4; i++) + hotfix.AreaID[i] = packet.ReadUInt16("AreaID", indexes, i); + hotfix.LfgStatus = new byte?[4]; + for (int i = 0; i < 4; i++) + hotfix.LfgStatus[i] = packet.ReadByte("LfgStatus", indexes, i); + hotfix.LfgCompare = new byte?[4]; + for (int i = 0; i < 4; i++) + hotfix.LfgCompare[i] = packet.ReadByte("LfgCompare", indexes, i); + hotfix.LfgValue = new uint?[4]; + for (int i = 0; i < 4; i++) + hotfix.LfgValue[i] = packet.ReadUInt32("LfgValue", indexes, i); + hotfix.CurrencyID = new uint?[4]; + for (int i = 0; i < 4; i++) + hotfix.CurrencyID[i] = packet.ReadUInt32("CurrencyID", indexes, i); + hotfix.CurrencyCount = new uint?[4]; + for (int i = 0; i < 4; i++) + hotfix.CurrencyCount[i] = packet.ReadUInt32("CurrencyCount", indexes, i); + hotfix.QuestKillMonster = new uint?[6]; + for (int i = 0; i < 6; i++) + hotfix.QuestKillMonster[i] = packet.ReadUInt32("QuestKillMonster", indexes, i); + hotfix.MovementFlags = new int?[2]; + for (int i = 0; i < 2; i++) + hotfix.MovementFlags[i] = packet.ReadInt32("MovementFlags", indexes, i); + hotfix.TraitNodeEntryID = new int?[4]; + for (int i = 0; i < 4; i++) + hotfix.TraitNodeEntryID[i] = packet.ReadInt32("TraitNodeEntryID", indexes, i); + hotfix.TraitNodeEntryMinRank = new ushort?[4]; + for (int i = 0; i < 4; i++) + hotfix.TraitNodeEntryMinRank[i] = packet.ReadUInt16("TraitNodeEntryMinRank", indexes, i); + hotfix.TraitNodeEntryMaxRank = new ushort?[4]; + for (int i = 0; i < 4; i++) + hotfix.TraitNodeEntryMaxRank[i] = packet.ReadUInt16("TraitNodeEntryMaxRank", indexes, i); + + Storage.PlayerConditionHotfixes1020.Add(hotfix, packet.TimeSpan); + + if (ClientLocale.PacketLocale != LocaleConstant.enUS) + { + PlayerConditionLocaleHotfix1020 hotfixLocale = new PlayerConditionLocaleHotfix1020 + { + ID = hotfix.ID, + FailureDescriptionLang = hotfix.FailureDescription, + }; + Storage.PlayerConditionHotfixesLocale1020.Add(hotfixLocale, packet.TimeSpan); + } + } + public static void PowerDisplayHandler1000(Packet packet, uint entry, params object[] indexes) { PowerDisplayHotfix1000 hotfix = new PowerDisplayHotfix1000(); @@ -5603,6 +5929,26 @@ public static void SceneScriptTextHandler1000(Packet packet, uint entry, params Storage.SceneScriptTextHotfixes1000.Add(hotfix, packet.TimeSpan); } + public static void ServerMessagesHandler1000(Packet packet, uint entry, params object[] indexes) + { + ServerMessagesHotfix1000 hotfix = new ServerMessagesHotfix1000(); + + hotfix.ID = entry; + hotfix.Text = packet.ReadCString("Text", indexes); + + Storage.ServerMessagesHotfixes1000.Add(hotfix, packet.TimeSpan); + + if (ClientLocale.PacketLocale != LocaleConstant.enUS) + { + ServerMessagesLocaleHotfix1000 hotfixLocale = new ServerMessagesLocaleHotfix1000 + { + ID = hotfix.ID, + TextLang = hotfix.Text, + }; + Storage.ServerMessagesHotfixesLocale1000.Add(hotfixLocale, packet.TimeSpan); + } + } + public static void SkillLineHandler1000(Packet packet, uint entry, params object[] indexes) { SkillLineHotfix1000 hotfix = new SkillLineHotfix1000(); @@ -6443,6 +6789,40 @@ public static void SpellShapeshiftFormHandler1000(Packet packet, uint entry, par } } + public static void SpellShapeshiftFormHandler1020(Packet packet, uint entry, params object[] indexes) + { + SpellShapeshiftFormHotfix1020 hotfix = new SpellShapeshiftFormHotfix1020(); + + hotfix.ID = entry; + hotfix.Name = packet.ReadCString("Name", indexes); + hotfix.CreatureDisplayID = packet.ReadUInt32("CreatureDisplayID", indexes); + hotfix.CreatureType = packet.ReadSByte("CreatureType", indexes); + hotfix.Flags = packet.ReadInt32("Flags", indexes); + hotfix.AttackIconFileID = packet.ReadInt32("AttackIconFileID", indexes); + hotfix.BonusActionBar = packet.ReadSByte("BonusActionBar", indexes); + hotfix.CombatRoundTime = packet.ReadInt16("CombatRoundTime", indexes); + hotfix.DamageVariance = packet.ReadSingle("DamageVariance", indexes); + hotfix.MountTypeID = packet.ReadUInt16("MountTypeID", indexes); + hotfix.CreatureDisplayID2 = packet.ReadUInt32("CreatureDisplayID2", indexes); + hotfix.CreatureDisplayID3 = packet.ReadUInt32("CreatureDisplayID3", indexes); + hotfix.CreatureDisplayID4 = packet.ReadUInt32("CreatureDisplayID4", indexes); + hotfix.PresetSpellID = new uint?[8]; + for (int i = 0; i < 8; i++) + hotfix.PresetSpellID[i] = packet.ReadUInt32("PresetSpellID", indexes, i); + + Storage.SpellShapeshiftFormHotfixes1020.Add(hotfix, packet.TimeSpan); + + if (ClientLocale.PacketLocale != LocaleConstant.enUS) + { + SpellShapeshiftFormLocaleHotfix1020 hotfixLocale = new SpellShapeshiftFormLocaleHotfix1020 + { + ID = hotfix.ID, + NameLang = hotfix.Name, + }; + Storage.SpellShapeshiftFormHotfixesLocale1020.Add(hotfixLocale, packet.TimeSpan); + } + } + public static void SpellTargetRestrictionsHandler1000(Packet packet, uint entry, params object[] indexes) { SpellTargetRestrictionsHotfix1000 hotfix = new SpellTargetRestrictionsHotfix1000(); @@ -7336,6 +7716,38 @@ public static void UiMapHandler1015(Packet packet, uint entry, params object[] i } } + public static void UiMapHandler1020(Packet packet, uint entry, params object[] indexes) + { + UiMapHotfix1020 hotfix = new UiMapHotfix1020(); + + hotfix.Name = packet.ReadCString("Name", indexes); + hotfix.ID = packet.ReadUInt32("ID", indexes); + hotfix.ParentUiMapID = packet.ReadInt32("ParentUiMapID", indexes); + hotfix.Flags = packet.ReadInt32("Flags", indexes); + hotfix.System = packet.ReadSByte("System", indexes); + hotfix.Type = packet.ReadByte("Type", indexes); + hotfix.BountySetID = packet.ReadInt32("BountySetID", indexes); + hotfix.BountyDisplayLocation = packet.ReadUInt32("BountyDisplayLocation", indexes); + hotfix.VisibilityPlayerConditionID2 = packet.ReadInt32("VisibilityPlayerConditionID2", indexes); + hotfix.VisibilityPlayerConditionID = packet.ReadInt32("VisibilityPlayerConditionID", indexes); + hotfix.HelpTextPosition = packet.ReadSByte("HelpTextPosition", indexes); + hotfix.BkgAtlasID = packet.ReadInt32("BkgAtlasID", indexes); + hotfix.AlternateUiMapGroup = packet.ReadInt32("AlternateUiMapGroup", indexes); + hotfix.ContentTuningID = packet.ReadInt32("ContentTuningID", indexes); + + Storage.UiMapHotfixes1020.Add(hotfix, packet.TimeSpan); + + if (ClientLocale.PacketLocale != LocaleConstant.enUS) + { + UiMapLocaleHotfix1020 hotfixLocale = new UiMapLocaleHotfix1020 + { + ID = hotfix.ID, + NameLang = hotfix.Name, + }; + Storage.UiMapHotfixesLocale1020.Add(hotfixLocale, packet.TimeSpan); + } + } + public static void UiMapAssignmentHandler1000(Packet packet, uint entry, params object[] indexes) { UiMapAssignmentHotfix1000 hotfix = new UiMapAssignmentHotfix1000(); @@ -7788,7 +8200,9 @@ static void ReadHotfixData(Packet packet, List records, params obj } case DB2Hash.AreaTrigger: { - if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_0_7_48676)) + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + AreaTriggerHandler1020(db2File, (uint)entry, count); + else if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_0_7_48676)) AreaTriggerHandler1007(db2File, (uint)entry, count); else AreaTriggerHandler1000(db2File, (uint)entry, count); @@ -8035,12 +8449,17 @@ static void ReadHotfixData(Packet packet, List records, params obj } case DB2Hash.ChrCustomizationDisplayInfo: { - ChrCustomizationDisplayInfoHandler1000(db2File, (uint)entry, count); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + ChrCustomizationDisplayInfoHandler1020(db2File, (uint)entry, count); + else + ChrCustomizationDisplayInfoHandler1000(db2File, (uint)entry, count); break; } case DB2Hash.ChrCustomizationElement: { - if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_1_7_51187)) + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + ChrCustomizationElementHandler1020(db2File, (uint)entry, count); + else if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_1_7_51187)) ChrCustomizationElementHandler1017(db2File, (uint)entry, count); else ChrCustomizationElementHandler1000(db2File, (uint)entry, count); @@ -8124,7 +8543,10 @@ static void ReadHotfixData(Packet packet, List records, params obj } case DB2Hash.ConversationLine: { - ConversationLineHandler1000(db2File, (uint)entry, count); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + ConversationLineHandler1020(db2File, (uint)entry, count); + else + ConversationLineHandler1000(db2File, (uint)entry, count); break; } case DB2Hash.CorruptionEffects: @@ -8199,7 +8621,9 @@ static void ReadHotfixData(Packet packet, List records, params obj } case DB2Hash.CurvePoint: { - if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_1_0_49407)) + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + CurvePointHandler1020(db2File, (uint)entry, count); + else if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_1_0_49407)) CurvePointHandler1010(db2File, (uint)entry, count); else CurvePointHandler1000(db2File, (uint)entry, count); @@ -8762,12 +9186,18 @@ static void ReadHotfixData(Packet packet, List records, params obj } case DB2Hash.Mount: { - MountHandler1000(db2File, (uint)entry, count); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + MountHandler1020(db2File, (uint)entry, count); + else + MountHandler1000(db2File, (uint)entry, count); break; } case DB2Hash.MountCapability: { - MountCapabilityHandler1000(db2File, (uint)entry, count); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + MountCapabilityHandler1020(db2File, (uint)entry, count); + else + MountCapabilityHandler1000(db2File, (uint)entry, count); break; } case DB2Hash.MountTypeXCapability: @@ -8782,7 +9212,9 @@ static void ReadHotfixData(Packet packet, List records, params obj } case DB2Hash.Movie: { - if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_1_0_49407)) + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + MovieHandler1020(db2File, (uint)entry, count); + else if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_1_0_49407)) MovieHandler1010(db2File, (uint)entry, count); else MovieHandler1000(db2File, (uint)entry, count); @@ -8830,7 +9262,10 @@ static void ReadHotfixData(Packet packet, List records, params obj } case DB2Hash.Phase: { - PhaseHandler1000(db2File, (uint)entry, count); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + PhaseHandler1020(db2File, (uint)entry, count); + else + PhaseHandler1000(db2File, (uint)entry, count); break; } case DB2Hash.PhaseXPhaseGroup: @@ -8840,7 +9275,10 @@ static void ReadHotfixData(Packet packet, List records, params obj } case DB2Hash.PlayerCondition: { - PlayerConditionHandler1000(db2File, (uint)entry, count); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + PlayerConditionHandler1020(db2File, (uint)entry, count); + else + PlayerConditionHandler1000(db2File, (uint)entry, count); break; } case DB2Hash.PowerDisplay: @@ -8989,6 +9427,11 @@ static void ReadHotfixData(Packet packet, List records, params obj SceneScriptTextHandler1000(db2File, (uint)entry, count); break; } + case DB2Hash.ServerMessages: + { + ServerMessagesHandler1000(db2File, (uint)entry, count); + break; + } case DB2Hash.SkillLine: { SkillLineHandler1000(db2File, (uint)entry, count); @@ -9192,7 +9635,10 @@ static void ReadHotfixData(Packet packet, List records, params obj } case DB2Hash.SpellShapeshiftForm: { - SpellShapeshiftFormHandler1000(db2File, (uint)entry, count); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + SpellShapeshiftFormHandler1000(db2File, (uint)entry, count); + else + SpellShapeshiftFormHandler1000(db2File, (uint)entry, count); break; } case DB2Hash.SpellTargetRestrictions: @@ -9431,7 +9877,9 @@ static void ReadHotfixData(Packet packet, List records, params obj } case DB2Hash.UiMap: { - if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_1_5_50232)) + if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_2_0_52038)) + UiMapHandler1020(db2File, (uint)entry, count); + else if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_1_5_50232)) UiMapHandler1015(db2File, (uint)entry, count); else UiMapHandler1000(db2File, (uint)entry, count); diff --git a/WowPacketParserModule.V9_0_1_36216/Parsers/NpcHandler.cs b/WowPacketParserModule.V9_0_1_36216/Parsers/NpcHandler.cs index d436a2cb59..66ee49a708 100644 --- a/WowPacketParserModule.V9_0_1_36216/Parsers/NpcHandler.cs +++ b/WowPacketParserModule.V9_0_1_36216/Parsers/NpcHandler.cs @@ -125,40 +125,43 @@ public static void HandleNpcGossip(Packet packet) CoreParsers.NpcHandler.AddGossipAddon(packetGossip.MenuId, friendshipFactionID, guid, packet.TimeSpan); uint broadcastTextID = 0; + uint npcTextID = 0; if (ClientVersion.RemovedInVersion(ClientVersionBuild.V10_0_0_46181)) broadcastTextID = packet.ReadUInt32("BroadcastTextID"); int optionsCount = packet.ReadInt32("GossipOptionsCount"); int questsCount = packet.ReadInt32("GossipQuestsCount"); + bool hasTextID = false; bool hasBroadcastTextID = false; - bool hasBroadcastTextID2 = false; if (ClientVersion.AddedInVersion(ClientVersionBuild.V10_0_0_46181)) { + hasTextID = packet.ReadBit("HasTextID"); hasBroadcastTextID = packet.ReadBit("HasBroadcastTextID"); - hasBroadcastTextID2 = packet.ReadBit("HasBroadcastTextID2"); } for (int i = 0; i < optionsCount; ++i) packetGossip.Options.Add(V6_0_2_19033.Parsers.NpcHandler.ReadGossipOptionsData((uint)menuId, guid, packet, i, "GossipOptions")); + if (hasTextID) + npcTextID = (uint)packet.ReadInt32("TextID"); + if (hasBroadcastTextID) broadcastTextID = (uint)packet.ReadInt32("BroadcastTextID"); - if (hasBroadcastTextID2) - broadcastTextID = (uint)packet.ReadInt32("BroadcastTextID2"); + if (!hasTextID && hasBroadcastTextID) + npcTextID = SQLDatabase.GetNPCTextIDByMenuIDAndBroadcastText(menuId, broadcastTextID); - var npcTextId = SQLDatabase.GetNPCTextIDByMenuIDAndBroadcastText(menuId, broadcastTextID); - if (npcTextId != 0) + if (npcTextID != 0) { GossipMenu gossip = new(); gossip.MenuID = packetGossip.MenuId; - gossip.TextID = packetGossip.TextId = npcTextId; + gossip.TextID = packetGossip.TextId = npcTextID; gossip.ObjectType = guid.GetObjectType(); gossip.ObjectEntry = guid.GetEntry(); Storage.Gossips.Add(gossip, packet.TimeSpan); } - else + else if (hasBroadcastTextID) AddBroadcastTextToGossip(packetGossip.MenuId, broadcastTextID, guid); for (int i = 0; i < questsCount; ++i)