From f2e56ccb41c4f5c5bc632538202dc8be11397baf Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 7 Nov 2021 15:53:12 -0500 Subject: [PATCH] Core/DataStores: Updated db2 structures to 9.1.5 Port From (https://github.com/TrinityCore/TrinityCore/commit/d52c00a8fe79186013980af0e2caa3fd13c0c5fa) --- Source/Framework/Constants/CliDBConst.cs | 2 +- Source/Framework/Constants/GarrisonConst.cs | 4 +- Source/Framework/Constants/ItemConst.cs | 2 +- Source/Framework/Constants/PlayerConst.cs | 2 +- .../Framework/Constants/Spells/SpellConst.cs | 2 + .../Database/Databases/HotfixDatabase.cs | 26 ++++---- Source/Game/AuctionHouse/AuctionManager.cs | 2 +- Source/Game/DataStorage/Structs/A_Records.cs | 2 +- Source/Game/DataStorage/Structs/C_Records.cs | 3 + Source/Game/DataStorage/Structs/F_Records.cs | 1 + Source/Game/DataStorage/Structs/G_Records.cs | 16 ++--- Source/Game/DataStorage/Structs/H_Records.cs | 4 +- Source/Game/DataStorage/Structs/I_Records.cs | 13 ++-- Source/Game/DataStorage/Structs/K_Records.cs | 4 +- Source/Game/DataStorage/Structs/M_Records.cs | 1 + Source/Game/DataStorage/Structs/Q_Records.cs | 3 +- Source/Game/DataStorage/Structs/S_Records.cs | 2 + Source/Game/DataStorage/Structs/U_Records.cs | 2 +- Source/Game/DataStorage/Structs/W_Records.cs | 2 +- Source/Game/Entities/Item/Item.cs | 2 +- .../Game/Entities/Player/CollectionManager.cs | 2 +- Source/Game/Garrisons/GarrisonManager.cs | 2 +- Source/Game/Garrisons/Garrisons.cs | 4 +- Source/Game/Globals/ObjectManager.cs | 2 +- Source/Game/Spells/SpellInfo.cs | 2 + .../master/2021_11_04_00_hotfixes.sql | 63 +++++++++++++++++++ 26 files changed, 123 insertions(+), 47 deletions(-) create mode 100644 sql/updates/hotfixes/master/2021_11_04_00_hotfixes.sql diff --git a/Source/Framework/Constants/CliDBConst.cs b/Source/Framework/Constants/CliDBConst.cs index d776aec6a..938d3e806 100644 --- a/Source/Framework/Constants/CliDBConst.cs +++ b/Source/Framework/Constants/CliDBConst.cs @@ -2074,7 +2074,7 @@ namespace Framework.Constants Max } - public enum UiMapType + public enum UiMapType : uint { Cosmic = 0, World = 1, diff --git a/Source/Framework/Constants/GarrisonConst.cs b/Source/Framework/Constants/GarrisonConst.cs index 14d516935..b310e6abc 100644 --- a/Source/Framework/Constants/GarrisonConst.cs +++ b/Source/Framework/Constants/GarrisonConst.cs @@ -23,7 +23,7 @@ namespace Framework.Constants public const uint Alliance = 1; } - public enum GarrisonBuildingFlags : byte + public enum GarrisonBuildingFlags : int { NeedsPlan = 0x1 } @@ -42,7 +42,7 @@ namespace Framework.Constants Covenant = 123 } - public enum GarrisonAbilityFlags : ushort + public enum GarrisonAbilityFlags : int { Trait = 0x01, CannotRoll = 0x02, diff --git a/Source/Framework/Constants/ItemConst.cs b/Source/Framework/Constants/ItemConst.cs index a832b331a..86844e01c 100644 --- a/Source/Framework/Constants/ItemConst.cs +++ b/Source/Framework/Constants/ItemConst.cs @@ -501,7 +501,7 @@ namespace Framework.Constants CookingSupp = 0x10000 } - public enum InventoryType : byte + public enum InventoryType : sbyte { NonEquip = 0, Head = 1, diff --git a/Source/Framework/Constants/PlayerConst.cs b/Source/Framework/Constants/PlayerConst.cs index 655a15744..c4031cac6 100644 --- a/Source/Framework/Constants/PlayerConst.cs +++ b/Source/Framework/Constants/PlayerConst.cs @@ -45,7 +45,7 @@ namespace Framework.Constants public const uint infinityCooldownDelayCheck = Time.Month / 2; public const int MaxPlayerSummonDelay = 2 * Time.Minute; - public const int TaxiMaskSize = 338; + public const int TaxiMaskSize = 339; // corpse reclaim times public const int DeathExpireStep = (5 * Time.Minute); diff --git a/Source/Framework/Constants/Spells/SpellConst.cs b/Source/Framework/Constants/Spells/SpellConst.cs index bbd52d319..b06e2f69b 100644 --- a/Source/Framework/Constants/Spells/SpellConst.cs +++ b/Source/Framework/Constants/Spells/SpellConst.cs @@ -2379,6 +2379,8 @@ namespace Framework.Constants CompleteCampaign = 283, // Flags all quests as completed that are assigned to campaign (MiscValueA) SendChatMessage = 284, // MiscValue[0] = BroadcastTextID, MiscValue[1] = ChatType ModifyKeystone2 = 285, + GrantBattlepetExperience = 286, + SetGarrisonFollowerLevel = 287, TotalSpellEffects } diff --git a/Source/Framework/Database/Databases/HotfixDatabase.cs b/Source/Framework/Database/Databases/HotfixDatabase.cs index 7ed14110d..1b4baf24b 100644 --- a/Source/Framework/Database/Databases/HotfixDatabase.cs +++ b/Source/Framework/Database/Databases/HotfixDatabase.cs @@ -230,7 +230,7 @@ namespace Framework.Database // ChrCustomizationChoice.db2 PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_CHOICE, "SELECT Name, ID, ChrCustomizationOptionID, ChrCustomizationReqID, SortOrder, UiOrderIndex, " + - "Flags, SwatchColor1, SwatchColor2 FROM chr_customization_choice"); + "Flags, AddedInPatch, SwatchColor1, SwatchColor2 FROM chr_customization_choice"); PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_CHOICE_LOCALE, "SELECT ID, Name_lang FROM chr_customization_choice_locale WHERE locale = ?"); // ChrCustomizationDisplayInfo.db2 @@ -244,7 +244,7 @@ namespace Framework.Database // ChrCustomizationOption.db2 PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_OPTION, "SELECT Name, ID, SecondaryID, Flags, ChrModelID, SortIndex, ChrCustomizationCategoryID, " + - "OptionType, BarberShopCostModifier, ChrCustomizationID, ChrCustomizationReqID, UiOrderIndex FROM chr_customization_option"); + "OptionType, BarberShopCostModifier, ChrCustomizationID, ChrCustomizationReqID, UiOrderIndex, AddedInPatch FROM chr_customization_option"); PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_OPTION_LOCALE, "SELECT ID, Name_lang FROM chr_customization_option_locale WHERE locale = ?"); // ChrCustomizationReq.db2 @@ -285,7 +285,7 @@ namespace Framework.Database " WHERE locale = ?"); // CinematicCamera.db2 - PrepareStatement(HotfixStatements.SEL_CINEMATIC_CAMERA, "SELECT ID, OriginX, OriginY, OriginZ, SoundID, OriginFacing, FileDataID FROM cinematic_camera"); + PrepareStatement(HotfixStatements.SEL_CINEMATIC_CAMERA, "SELECT ID, OriginX, OriginY, OriginZ, SoundID, OriginFacing, FileDataID, Unknown915 FROM cinematic_camera"); // CinematicSequences.db2 PrepareStatement(HotfixStatements.SEL_CINEMATIC_SEQUENCES, "SELECT ID, SoundID, Camera1, Camera2, Camera3, Camera4, Camera5, Camera6, Camera7, Camera8 FROM cinematic_sequences"); @@ -415,7 +415,7 @@ namespace Framework.Database "Enemies4, Friend1, Friend2, Friend3, Friend4 FROM faction_template"); // FriendshipRepReaction.db2 - PrepareStatement(HotfixStatements.SEL_FRIENDSHIP_REP_REACTION, "SELECT ID, Reaction, FriendshipRepID, ReactionThreshold FROM friendship_rep_reaction"); + PrepareStatement(HotfixStatements.SEL_FRIENDSHIP_REP_REACTION, "SELECT ID, Reaction, FriendshipRepID, ReactionThreshold, OverrideColor FROM friendship_rep_reaction"); PrepareStatement(HotfixStatements.SEL_FRIENDSHIP_REP_REACTION_LOCALE, "SELECT ID, Reaction_lang FROM friendship_rep_reaction_locale WHERE locale = ?"); // FriendshipReputation.db2 @@ -523,9 +523,9 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_GUILD_PERK_SPELLS, "SELECT ID, SpellID FROM guild_perk_spells"); // Heirloom.db2 - PrepareStatement(HotfixStatements.SEL_HEIRLOOM, "SELECT SourceText, ID, ItemID, LegacyUpgradedItemID, StaticUpgradedItemID, SourceTypeEnum, Flags, " + - "LegacyItemID, UpgradeItemID1, UpgradeItemID2, UpgradeItemID3, UpgradeItemID4, UpgradeItemBonusListID1, UpgradeItemBonusListID2, " + - "UpgradeItemBonusListID3, UpgradeItemBonusListID4 FROM heirloom"); + PrepareStatement(HotfixStatements.SEL_HEIRLOOM, "SELECT SourceText, ID, ItemID, LegacyUpgradedItemID, StaticUpgradedItemID, SourceTypeEnum, Flags, " + + "LegacyItemID, UpgradeItemID1, UpgradeItemID2, UpgradeItemID3, UpgradeItemID4, UpgradeItemID5, UpgradeItemID6, UpgradeItemBonusListID1, " + + "UpgradeItemBonusListID2, UpgradeItemBonusListID3, UpgradeItemBonusListID4, UpgradeItemBonusListID5, UpgradeItemBonusListID6 FROM heirloom"); PrepareStatement(HotfixStatements.SEL_HEIRLOOM_LOCALE, "SELECT ID, SourceText_lang FROM heirloom_locale WHERE locale = ?"); // Holidays.db2 @@ -549,7 +549,7 @@ namespace Framework.Database // Item.db2 PrepareStatement(HotfixStatements.SEL_ITEM, "SELECT ID, ClassID, SubclassID, Material, InventoryType, SheatheType, SoundOverrideSubclassID, IconFileDataID, " + - "ItemGroupSoundsID, ModifiedCraftingReagentItemID FROM item"); + "ItemGroupSoundsID, ContentTuningID, ModifiedCraftingReagentItemID FROM item"); // ItemAppearance.db2 PrepareStatement(HotfixStatements.SEL_ITEM_APPEARANCE, "SELECT ID, DisplayType, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder, PlayerConditionID FROM item_appearance"); @@ -726,7 +726,7 @@ namespace Framework.Database "Key16, Key17, Key18, Key19, Key20, Key21, Key22, Key23, Key24, Key25, Key26, Key27, Key28, Key29, Key30, Key31, Key32 FROM keychain"); // KeystoneAffix.db2 - PrepareStatement(HotfixStatements.SEL_KEYSTONE_AFFIX, "SELECT ID, Name, Description, FiledataID FROM keystone_affix"); + PrepareStatement(HotfixStatements.SEL_KEYSTONE_AFFIX, "SELECT Name, Description, ID, FiledataID FROM keystone_affix"); PrepareStatement(HotfixStatements.SEL_KEYSTONE_AFFIX_LOCALE, "SELECT ID, Name_lang, Description_lang FROM keystone_affix_locale WHERE locale = ?"); // LanguageWords.db2 @@ -772,7 +772,7 @@ namespace Framework.Database "PvpLongDescription_lang FROM map_locale WHERE locale = ?"); // MapChallengeMode.db2 - PrepareStatement(HotfixStatements.SEL_MAP_CHALLENGE_MODE, "SELECT Name, ID, MapID, Flags, ExpansionLevel, CriteriaCount1, CriteriaCount2, CriteriaCount3 FROM map_challenge_mode"); + PrepareStatement(HotfixStatements.SEL_MAP_CHALLENGE_MODE, "SELECT Name, ID, MapID, Flags, ExpansionLevel, RequiredWorldStateID, CriteriaCount1, CriteriaCount2, CriteriaCount3 FROM map_challenge_mode"); PrepareStatement(HotfixStatements.SEL_MAP_CHALLENGE_MODE_LOCALE, "SELECT ID, Name_lang FROM map_challenge_mode_locale WHERe locale = ?"); // MapDifficulty.db2 @@ -900,7 +900,7 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_QUEST_INFO_LOCALE, "SELECT ID, InfoName_lang FROM quest_info_locale WHERE locale = ?"); // QuestLineXQuest.db2 - PrepareStatement(HotfixStatements.SEL_QUEST_LINE_X_QUEST, "SELECT ID, QuestLineID, QuestID, OrderIndex FROM quest_line_x_quest"); + PrepareStatement(HotfixStatements.SEL_QUEST_LINE_X_QUEST, "SELECT ID, QuestLineID, QuestID, OrderIndex, Flags FROM quest_line_x_quest"); // QuestMoneyReward.db2 PrepareStatement(HotfixStatements.SEL_QUEST_MONEY_REWARD, "SELECT ID, Difficulty1, Difficulty2, Difficulty3, Difficulty4, Difficulty5, Difficulty6, " + @@ -945,13 +945,13 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_SCENARIO_STEP_LOCALE, "SELECT ID, Description_lang, Title_lang FROM scenario_step_locale WHERE locale = ?"); // SceneScript.db2 - PrepareStatement(HotfixStatements.SEL_SCENE_SCRIPT, "SELECT ID, FirstSceneScriptID, NextSceneScriptID FROM scene_script"); + PrepareStatement(HotfixStatements.SEL_SCENE_SCRIPT, "SELECT ID, FirstSceneScriptID, NextSceneScriptID, Unknown915 FROM scene_script"); // SceneScriptGlobalText.db2 PrepareStatement(HotfixStatements.SEL_SCENE_SCRIPT_GLOBAL_TEXT, "SELECT ID, Name, Script FROM scene_script_global_text"); // SceneScriptPackage.db2 - PrepareStatement(HotfixStatements.SEL_SCENE_SCRIPT_PACKAGE, "SELECT ID, Name FROM scene_script_package"); + PrepareStatement(HotfixStatements.SEL_SCENE_SCRIPT_PACKAGE, "SELECT ID, Name, Unknown915 FROM scene_script_package"); // SceneScriptText.db2 PrepareStatement(HotfixStatements.SEL_SCENE_SCRIPT_TEXT, "SELECT ID, Name, Script FROM scene_script_text"); diff --git a/Source/Game/AuctionHouse/AuctionManager.cs b/Source/Game/AuctionHouse/AuctionManager.cs index 552c517f5..e4d3abeb8 100644 --- a/Source/Game/AuctionHouse/AuctionManager.cs +++ b/Source/Game/AuctionHouse/AuctionManager.cs @@ -892,7 +892,7 @@ namespace Game var itemModifiedAppearance = CliDB.ItemModifiedAppearanceStorage.LookupByKey(bucketAppearance.Item1); if (itemModifiedAppearance != null) { - if (!knownAppearanceIds.Contains(itemModifiedAppearance.ItemAppearanceID)) + if (!knownAppearanceIds.Contains((uint)itemModifiedAppearance.ItemAppearanceID)) { hasAll = false; break; diff --git a/Source/Game/DataStorage/Structs/A_Records.cs b/Source/Game/DataStorage/Structs/A_Records.cs index 9704b07ed..5004bc506 100644 --- a/Source/Game/DataStorage/Structs/A_Records.cs +++ b/Source/Game/DataStorage/Structs/A_Records.cs @@ -395,7 +395,7 @@ namespace Game.DataStorage public uint AzeritePowerSetID; public int AzeritePowerID; public int Class; - public int Tier; + public byte Tier; public uint OrderIndex; } diff --git a/Source/Game/DataStorage/Structs/C_Records.cs b/Source/Game/DataStorage/Structs/C_Records.cs index d00a4685d..4ce51afb2 100644 --- a/Source/Game/DataStorage/Structs/C_Records.cs +++ b/Source/Game/DataStorage/Structs/C_Records.cs @@ -134,6 +134,7 @@ namespace Game.DataStorage public ushort SortOrder; public ushort UiOrderIndex; public int Flags; + public int AddedInPatch; public int[] SwatchColor = new int[2]; } @@ -174,6 +175,7 @@ namespace Game.DataStorage public int ChrCustomizationID; public int ChrCustomizationReqID; public int UiOrderIndex; + public int AddedInPatch; } public sealed class ChrCustomizationReqRecord @@ -310,6 +312,7 @@ namespace Game.DataStorage public uint SoundID; // Sound ID (voiceover for cinematic) public float OriginFacing; // Orientation in map used for basis for M2 co public uint FileDataID; // Model + public int Unknown915; } public sealed class CinematicSequencesRecord diff --git a/Source/Game/DataStorage/Structs/F_Records.cs b/Source/Game/DataStorage/Structs/F_Records.cs index 110f41cc5..9e257c8ac 100644 --- a/Source/Game/DataStorage/Structs/F_Records.cs +++ b/Source/Game/DataStorage/Structs/F_Records.cs @@ -106,6 +106,7 @@ namespace Game.DataStorage public LocalizedString Reaction; public uint FriendshipRepID; public ushort ReactionThreshold; + public int OverrideColor; } public sealed class FriendshipReputationRecord diff --git a/Source/Game/DataStorage/Structs/G_Records.cs b/Source/Game/DataStorage/Structs/G_Records.cs index 938794b52..ae98e3699 100644 --- a/Source/Game/DataStorage/Structs/G_Records.cs +++ b/Source/Game/DataStorage/Structs/G_Records.cs @@ -63,7 +63,7 @@ namespace Game.DataStorage public string Name; public string Description; public byte GarrAbilityCategoryID; - public byte GarrFollowerTypeID; + public sbyte GarrFollowerTypeID; public int IconFileDataID; public ushort FactionChangeGarrAbilityID; public GarrisonAbilityFlags Flags; @@ -77,7 +77,7 @@ namespace Game.DataStorage public string Description; public string Tooltip; public byte GarrTypeID; - public byte BuildingType; + public sbyte BuildingType; public uint HordeGameObjectID; public uint AllianceGameObjectID; public int GarrSiteID; @@ -116,7 +116,7 @@ namespace Game.DataStorage public ushort UiTextureAtlasMemberID; public ushort GarrFollItemSetID; public byte FollowerClassLimit; - public byte Flags; + public int Flags; } public sealed class GarrFollowerRecord @@ -126,14 +126,14 @@ namespace Game.DataStorage public string AllianceSourceText; public string TitleName; public byte GarrTypeID; - public byte GarrFollowerTypeID; + public sbyte GarrFollowerTypeID; public int HordeCreatureID; public int AllianceCreatureID; public byte HordeGarrFollRaceID; public byte AllianceGarrFollRaceID; public uint HordeGarrClassSpecID; public uint AllianceGarrClassSpecID; - public byte Quality; + public sbyte Quality; public byte FollowerLevel; public ushort ItemLevelWeapon; public ushort ItemLevelArmor; @@ -151,7 +151,7 @@ namespace Game.DataStorage public uint HordeSlottingBroadcastTextID; public uint AllySlottingBroadcastTextID; public byte ChrClassID; - public byte Flags; + public int Flags; public byte Gender; public int AutoCombatantID; public int CovenantID; @@ -176,7 +176,7 @@ namespace Game.DataStorage public Vector2 WorldPos; public byte GarrTypeID; public byte GarrMissionTypeID; - public byte GarrFollowerTypeID; + public sbyte GarrFollowerTypeID; public byte MaxFollowers; public uint MissionCost; public ushort MissionCostCurrencyTypesID; @@ -196,7 +196,7 @@ namespace Game.DataStorage public uint OvermaxRewardPackID; public byte FollowerDeathChance; public uint AreaID; - public uint Flags; + public int Flags; public float AutoMissionScalar; public int AutoMissionScalarCurveID; public int AutoCombatantEnvCasterID; diff --git a/Source/Game/DataStorage/Structs/H_Records.cs b/Source/Game/DataStorage/Structs/H_Records.cs index a77bce259..a318f32ad 100644 --- a/Source/Game/DataStorage/Structs/H_Records.cs +++ b/Source/Game/DataStorage/Structs/H_Records.cs @@ -29,8 +29,8 @@ namespace Game.DataStorage public sbyte SourceTypeEnum; public byte Flags; public int LegacyItemID; - public int[] UpgradeItemID = new int[4]; - public ushort[] UpgradeItemBonusListID = new ushort[4]; + public int[] UpgradeItemID = new int[6]; + public ushort[] UpgradeItemBonusListID = new ushort[6]; } public sealed class HolidaysRecord diff --git a/Source/Game/DataStorage/Structs/I_Records.cs b/Source/Game/DataStorage/Structs/I_Records.cs index fe7541d41..47d377a45 100644 --- a/Source/Game/DataStorage/Structs/I_Records.cs +++ b/Source/Game/DataStorage/Structs/I_Records.cs @@ -57,13 +57,14 @@ namespace Game.DataStorage public sbyte SoundOverrideSubclassID; public int IconFileDataID; public byte ItemGroupSoundsID; + public int ContentTuningID; public int ModifiedCraftingReagentItemID; } public sealed class ItemAppearanceRecord { public uint Id; - public byte DisplayType; + public int DisplayType; public uint ItemDisplayInfoID; public int DefaultIconFileDataID; public int UiOrder; @@ -265,10 +266,10 @@ namespace Game.DataStorage { public uint Id; public uint ItemID; - public byte ItemAppearanceModifierID; - public ushort ItemAppearanceID; - public byte OrderIndex; - public sbyte TransmogSourceTypeEnum; + public int ItemAppearanceModifierID; + public int ItemAppearanceID; + public int OrderIndex; + public byte TransmogSourceTypeEnum; } public sealed class ItemModifiedAppearanceExtraRecord @@ -399,7 +400,7 @@ namespace Game.DataStorage public byte RequiredPVPRank; public sbyte RequiredLevel; public InventoryType inventoryType; - public byte OverallQualityID; + public sbyte OverallQualityID; } public sealed class ItemSpecRecord diff --git a/Source/Game/DataStorage/Structs/K_Records.cs b/Source/Game/DataStorage/Structs/K_Records.cs index 38bd4e3d3..a3100f259 100644 --- a/Source/Game/DataStorage/Structs/K_Records.cs +++ b/Source/Game/DataStorage/Structs/K_Records.cs @@ -25,9 +25,9 @@ namespace Game.DataStorage public sealed class KeystoneAffixRecord { - public uint Id; public LocalizedString Name; public LocalizedString Description; + public uint Id; public int FiledataID; } -} +} \ No newline at end of file diff --git a/Source/Game/DataStorage/Structs/M_Records.cs b/Source/Game/DataStorage/Structs/M_Records.cs index 3eb461237..21178b460 100644 --- a/Source/Game/DataStorage/Structs/M_Records.cs +++ b/Source/Game/DataStorage/Structs/M_Records.cs @@ -98,6 +98,7 @@ namespace Game.DataStorage public ushort MapID; public byte Flags; public uint ExpansionLevel; + public int RequiredWorldStateID; // maybe? public short[] CriteriaCount = new short[3]; } diff --git a/Source/Game/DataStorage/Structs/Q_Records.cs b/Source/Game/DataStorage/Structs/Q_Records.cs index fbaab4313..8392433e5 100644 --- a/Source/Game/DataStorage/Structs/Q_Records.cs +++ b/Source/Game/DataStorage/Structs/Q_Records.cs @@ -30,7 +30,7 @@ namespace Game.DataStorage public uint Id; public LocalizedString InfoName; public sbyte Type; - public byte Modifiers; + public int Modifiers; public ushort Profession; } @@ -40,6 +40,7 @@ namespace Game.DataStorage public uint QuestLineID; public uint QuestID; public uint OrderIndex; + public int Flags; } public sealed class QuestMoneyRewardRecord diff --git a/Source/Game/DataStorage/Structs/S_Records.cs b/Source/Game/DataStorage/Structs/S_Records.cs index c899d6809..a44bdf661 100644 --- a/Source/Game/DataStorage/Structs/S_Records.cs +++ b/Source/Game/DataStorage/Structs/S_Records.cs @@ -58,6 +58,7 @@ namespace Game.DataStorage public uint Id; public ushort FirstSceneScriptID; public ushort NextSceneScriptID; + public int Unknown915; } public sealed class SceneScriptGlobalTextRecord @@ -71,6 +72,7 @@ namespace Game.DataStorage { public uint Id; public string Name; + public int Unknown915; } public sealed class SceneScriptTextRecord diff --git a/Source/Game/DataStorage/Structs/U_Records.cs b/Source/Game/DataStorage/Structs/U_Records.cs index 0728220c8..0a1829a4b 100644 --- a/Source/Game/DataStorage/Structs/U_Records.cs +++ b/Source/Game/DataStorage/Structs/U_Records.cs @@ -25,7 +25,7 @@ namespace Game.DataStorage public uint Id; public int ParentUiMapID; public int Flags; - public int System; + public uint System; public UiMapType Type; public int BountySetID; public uint BountyDisplayLocation; diff --git a/Source/Game/DataStorage/Structs/W_Records.cs b/Source/Game/DataStorage/Structs/W_Records.cs index 4d0ba7b66..28de4a002 100644 --- a/Source/Game/DataStorage/Structs/W_Records.cs +++ b/Source/Game/DataStorage/Structs/W_Records.cs @@ -44,7 +44,7 @@ namespace Game.DataStorage public uint Id; public uint QuestFeedbackEffectID; public byte WhenToDisplay; - public int TargetType; + public byte TargetType; public int TargetAsset; public uint PlayerConditionID; public ushort CombatConditionID; diff --git a/Source/Game/Entities/Item/Item.cs b/Source/Game/Entities/Item/Item.cs index f86e5a2b1..b3e6c2dcc 100644 --- a/Source/Game/Entities/Item/Item.cs +++ b/Source/Game/Entities/Item/Item.cs @@ -1991,7 +1991,7 @@ namespace Game.Entities ItemModifiedAppearanceRecord transmog = CliDB.ItemModifiedAppearanceStorage.LookupByKey(itemModifiedAppearanceId); if (transmog != null) - return transmog.ItemAppearanceModifierID; + return (ushort)transmog.ItemAppearanceModifierID; return (ushort)GetAppearanceModId(); } diff --git a/Source/Game/Entities/Player/CollectionManager.cs b/Source/Game/Entities/Player/CollectionManager.cs index a0b594db7..3eab83fa7 100644 --- a/Source/Game/Entities/Player/CollectionManager.cs +++ b/Source/Game/Entities/Player/CollectionManager.cs @@ -784,7 +784,7 @@ namespace Game.Entities { List appearances = new(); foreach (int id in _appearances) - appearances.Add(CliDB.ItemModifiedAppearanceStorage.LookupByKey(id).ItemAppearanceID); + appearances.Add((uint)CliDB.ItemModifiedAppearanceStorage.LookupByKey(id).ItemAppearanceID); return appearances; } diff --git a/Source/Game/Garrisons/GarrisonManager.cs b/Source/Game/Garrisons/GarrisonManager.cs index 21d1a254f..c43096f6e 100644 --- a/Source/Game/Garrisons/GarrisonManager.cs +++ b/Source/Game/Garrisons/GarrisonManager.cs @@ -52,7 +52,7 @@ namespace Game.Garrisons _garrisonBuildingPlotInstances[MathFunctions.MakePair64(buildingPlotInst.GarrBuildingID, buildingPlotInst.GarrSiteLevelPlotInstID)] = buildingPlotInst.Id; foreach (GarrBuildingRecord building in CliDB.GarrBuildingStorage.Values) - _garrisonBuildingsByType.Add(building.BuildingType, building.Id); + _garrisonBuildingsByType.Add((byte)building.BuildingType, building.Id); for (var i = 0; i < 2; ++i) _garrisonFollowerAbilities[i] = new Dictionary(); diff --git a/Source/Game/Garrisons/Garrisons.cs b/Source/Game/Garrisons/Garrisons.cs index ac43524b0..a9ca1169e 100644 --- a/Source/Game/Garrisons/Garrisons.cs +++ b/Source/Game/Garrisons/Garrisons.cs @@ -430,7 +430,7 @@ namespace Game.Garrisons if (constructing.UpgradeLevel > 1) { // Restore previous level building - uint restored = Global.GarrisonMgr.GetPreviousLevelBuilding(constructing.BuildingType, constructing.UpgradeLevel); + uint restored = Global.GarrisonMgr.GetPreviousLevelBuilding((byte)constructing.BuildingType, constructing.UpgradeLevel); Cypher.Assert(restored != 0); GarrisonPlaceBuildingResult placeBuildingResult = new(); @@ -500,7 +500,7 @@ namespace Game.Garrisons Follower follower = new(); follower.PacketInfo.DbID = dbId; follower.PacketInfo.GarrFollowerID = garrFollowerId; - follower.PacketInfo.Quality = followerEntry.Quality; // TODO: handle magic upgrades + follower.PacketInfo.Quality = (uint)followerEntry.Quality; // TODO: handle magic upgrades follower.PacketInfo.FollowerLevel = followerEntry.FollowerLevel; follower.PacketInfo.ItemLevelWeapon = followerEntry.ItemLevelWeapon; follower.PacketInfo.ItemLevelArmor = followerEntry.ItemLevelArmor; diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index 2856a7c0b..c2d08b446 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -2213,7 +2213,7 @@ namespace Game equipmentInfo.Items[i].ItemId, equipmentInfo.Items[i].AppearanceModId, i + 1, i + 1, entry, id); ItemModifiedAppearanceRecord defaultAppearance = Global.DB2Mgr.GetDefaultItemModifiedAppearance(equipmentInfo.Items[i].ItemId); if (defaultAppearance != null) - equipmentInfo.Items[i].AppearanceModId = defaultAppearance.ItemAppearanceModifierID; + equipmentInfo.Items[i].AppearanceModId = (ushort)defaultAppearance.ItemAppearanceModifierID; else equipmentInfo.Items[i].AppearanceModId = 0; continue; diff --git a/Source/Game/Spells/SpellInfo.cs b/Source/Game/Spells/SpellInfo.cs index 97af8d095..4f95ea8ca 100644 --- a/Source/Game/Spells/SpellInfo.cs +++ b/Source/Game/Spells/SpellInfo.cs @@ -4686,6 +4686,8 @@ namespace Game.Spells new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 283 SPELL_EFFECT_COMPLETE_CAMPAIGN new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 284 SPELL_EFFECT_SEND_CHAT_MESSAGE new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 285 SPELL_EFFECT_MODIFY_KEYSTONE_2 + new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 284 SPELL_EFFECT_GRANT_BATTLEPET_EXPERIENCE + new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 285 SPELL_EFFECT_SET_GARRISON_FOLLOWER_LEVEL }; #region Fields diff --git a/sql/updates/hotfixes/master/2021_11_04_00_hotfixes.sql b/sql/updates/hotfixes/master/2021_11_04_00_hotfixes.sql new file mode 100644 index 000000000..05f8aec57 --- /dev/null +++ b/sql/updates/hotfixes/master/2021_11_04_00_hotfixes.sql @@ -0,0 +1,63 @@ +ALTER TABLE `azerite_power_set_member` MODIFY `Tier` tinyint(4) NOT NULL DEFAULT 0 AFTER `Class`; + +ALTER TABLE `chr_customization_choice` ADD `AddedInPatch` int(11) NOT NULL DEFAULT 0 AFTER `Flags`; + +ALTER TABLE `chr_customization_option` ADD `AddedInPatch` int(11) NOT NULL DEFAULT 0 AFTER `UiOrderIndex`; + +ALTER TABLE `cinematic_camera` ADD `Unknown915` int(11) NOT NULL DEFAULT 0 AFTER `FileDataID`; + +ALTER TABLE `friendship_rep_reaction` ADD `OverrideColor` int(11) NOT NULL DEFAULT 0 AFTER `ReactionThreshold`; + +ALTER TABLE `garr_ability` MODIFY `GarrFollowerTypeID` tinyint(4) NOT NULL DEFAULT 0 AFTER `GarrAbilityCategoryID`; +ALTER TABLE `garr_ability` MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `FactionChangeGarrAbilityID`; + +ALTER TABLE `garr_building` MODIFY `BuildingType` tinyint(4) NOT NULL DEFAULT 0 AFTER `GarrTypeID`; +ALTER TABLE `garr_building` MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `GoldCost`; + +ALTER TABLE `garr_class_spec` MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `FollowerClassLimit`; + +ALTER TABLE `garr_follower` MODIFY `GarrFollowerTypeID` tinyint(4) NOT NULL DEFAULT 0 AFTER `GarrTypeID`; +ALTER TABLE `garr_follower` MODIFY `Quality` tinyint(4) NOT NULL DEFAULT 0 AFTER `AllianceGarrClassSpecID`; +ALTER TABLE `garr_follower` MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `ChrClassID`; + +ALTER TABLE `garr_follower` MODIFY `GarrFollowerTypeID` tinyint(4) NOT NULL DEFAULT 0 AFTER `GarrTypeID`; +ALTER TABLE `garr_mission` MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `AreaID`; + +ALTER TABLE `heirloom` + ADD `UpgradeItemID5` int(11) NOT NULL DEFAULT 0 AFTER `UpgradeItemID4`, + ADD `UpgradeItemID6` int(11) NOT NULL DEFAULT 0 AFTER `UpgradeItemID5`, + ADD `UpgradeItemBonusListID5` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `UpgradeItemBonusListID4`, + ADD `UpgradeItemBonusListID6` smallint(5) unsigned NOT NULL DEFAULT 0 AFTER `UpgradeItemBonusListID5`; + +ALTER TABLE `item` ADD `ContentTuningID` int(11) NOT NULL DEFAULT 0 AFTER `ItemGroupSoundsID`; + +ALTER TABLE `item_appearance` MODIFY `DisplayType` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `item_modified_appearance` MODIFY `ItemAppearanceModifierID` int(11) NOT NULL DEFAULT 0 AFTER `ItemID`; +ALTER TABLE `item_modified_appearance` MODIFY `ItemAppearanceID` int(11) NOT NULL DEFAULT 0 AFTER `ItemAppearanceModifierID`; +ALTER TABLE `item_modified_appearance` MODIFY `OrderIndex` int(11) NOT NULL DEFAULT 0 AFTER `ItemAppearanceID`; +ALTER TABLE `item_modified_appearance` MODIFY `TransmogSourceTypeEnum` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `OrderIndex`; + +ALTER TABLE `item_sparse` MODIFY `InventoryType` tinyint(4) NOT NULL DEFAULT 0 AFTER `RequiredLevel`; +ALTER TABLE `item_sparse` MODIFY `OverallQualityID` tinyint(4) NOT NULL DEFAULT 0 AFTER `InventoryType`; + +ALTER TABLE `keystone_affix` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Description`; + +ALTER TABLE `map_challenge_mode` ADD `RequiredWorldStateID` int(11) NOT NULL DEFAULT 0 AFTER `ExpansionLevel`; + +ALTER TABLE `quest_info` MODIFY `Modifiers` int(11) NOT NULL DEFAULT 0 AFTER `Type`; + +ALTER TABLE `quest_line_x_quest` ADD `Flags` int(11) NOT NULL DEFAULT 0 AFTER `OrderIndex`; + +ALTER TABLE `scene_script` ADD `Unknown915` int(11) NOT NULL DEFAULT 0 AFTER `NextSceneScriptID`; + +ALTER TABLE `scene_script_package` ADD `Unknown915` int(11) NOT NULL DEFAULT 0 AFTER `Name`; + +ALTER TABLE `spell_effect` MODIFY `Effect` int(10) unsigned NOT NULL DEFAULT 0 AFTER `EffectIndex`; + +ALTER TABLE `ui_map` MODIFY `System` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Flags`; +ALTER TABLE `ui_map` MODIFY `Type` int(10) unsigned NOT NULL DEFAULT 0 AFTER `System`; + +ALTER TABLE `world_effect` MODIFY `TargetType` tinyint(3) unsigned NOT NULL DEFAULT 0 AFTER `WhenToDisplay`; + +ALTER TABLE `hotfix_data` ADD `UniqueId` int(10) unsigned NOT NULL DEFAULT 0 AFTER `Id`;