diff options
33 files changed, 730 insertions, 2130 deletions
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index 010fb0498e2..bc54971bc9a 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -38,7 +38,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // Achievement.db2 PrepareStatement(HOTFIX_SEL_ACHIEVEMENT, "SELECT Description, Title, Reward, ID, InstanceID, Faction, Supercedes, Category, MinimumCriteria, " - "Points, Flags, UiOrder, IconFileID, RewardItemID, CriteriaTree, SharesCriteria, CovenantID FROM achievement WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "Points, Flags, UiOrder, IconFileID, CriteriaTree, SharesCriteria FROM achievement WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT MAX(ID) + 1 FROM achievement", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT ID, Description_lang, Title_lang, Reward_lang FROM achievement_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -81,16 +81,17 @@ void HotfixDatabaseConnection::DoPrepareStatements() // AreaTable.db2 PrepareStatement(HOTFIX_SEL_AREA_TABLE, "SELECT ID, ZoneName, AreaName, ContinentID, ParentAreaID, AreaBit, SoundProviderPref, " - "SoundProviderPrefUnderwater, AmbienceID, UwAmbience, ZoneMusic, UwZoneMusic, IntroSound, UwIntroSound, FactionGroupMask, AmbientMultiplier, " - "MountFlags, PvpCombatWorldStateID, WildBattlePetLevelMin, WildBattlePetLevelMax, WindSettingsID, ContentTuningID, Flags1, Flags2, " + "SoundProviderPrefUnderwater, AmbienceID, UwAmbience, ZoneMusic, UwZoneMusic, ExplorationLevel, IntroSound, UwIntroSound, FactionGroupMask, " + "AmbientMultiplier, MountFlags, PvpCombatWorldStateID, WildBattlePetLevelMin, WildBattlePetLevelMax, WindSettingsID, Flags1, Flags2, " "LiquidTypeID1, LiquidTypeID2, LiquidTypeID3, LiquidTypeID4 FROM area_table WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_AREA_TABLE, "SELECT MAX(ID) + 1 FROM area_table", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_AREA_TABLE, "SELECT ID, AreaName_lang FROM area_table_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // AreaTrigger.db2 - PrepareStatement(HOTFIX_SEL_AREA_TRIGGER, "SELECT PosX, PosY, PosZ, ID, ContinentID, PhaseUseFlags, PhaseID, PhaseGroupID, Radius, BoxLength, " - "BoxWidth, BoxHeight, BoxYaw, ShapeType, ShapeID, AreaTriggerActionSetID, Flags FROM area_trigger WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_AREA_TRIGGER, "SELECT Message, PosX, PosY, PosZ, ID, ContinentID, PhaseUseFlags, PhaseID, PhaseGroupID, Radius, " + "BoxLength, BoxWidth, BoxHeight, BoxYaw, ShapeType, ShapeID, AreaTriggerActionSetID, Flags FROM area_trigger WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_AREA_TRIGGER, "SELECT MAX(ID) + 1 FROM area_trigger", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_AREA_TRIGGER, "SELECT ID, Message_lang FROM area_trigger_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // ArmorLocation.db2 PrepareStatement(HOTFIX_SEL_ARMOR_LOCATION, "SELECT ID, Clothmodifier, Leathermodifier, Chainmodifier, Platemodifier, Modifier FROM armor_location" @@ -106,8 +107,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // ArtifactAppearance.db2 PrepareStatement(HOTFIX_SEL_ARTIFACT_APPEARANCE, "SELECT Name, ID, ArtifactAppearanceSetID, DisplayIndex, UnlockPlayerConditionID, " "ItemAppearanceModifierID, UiSwatchColor, UiModelSaturation, UiModelOpacity, OverrideShapeshiftFormID, OverrideShapeshiftDisplayID, " - "UiItemAppearanceID, UiAltItemAppearanceID, Flags, UiCameraID, UsablePlayerConditionID FROM artifact_appearance" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "UiItemAppearanceID, UiAltItemAppearanceID, Flags, UiCameraID FROM artifact_appearance WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT_APPEARANCE, "SELECT MAX(ID) + 1 FROM artifact_appearance", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ARTIFACT_APPEARANCE, "SELECT ID, Name_lang FROM artifact_appearance_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -217,11 +217,6 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_AZERITE_TIER_UNLOCK_SET, "SELECT ID, Flags FROM azerite_tier_unlock_set WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_TIER_UNLOCK_SET, "SELECT MAX(ID) + 1 FROM azerite_tier_unlock_set", CONNECTION_SYNCH); - // AzeriteUnlockMapping.db2 - PrepareStatement(HOTFIX_SEL_AZERITE_UNLOCK_MAPPING, "SELECT ID, ItemLevel, ItemBonusListHead, ItemBonusListShoulders, ItemBonusListChest, " - "AzeriteUnlockMappingSetID FROM azerite_unlock_mapping WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_UNLOCK_MAPPING, "SELECT MAX(ID) + 1 FROM azerite_unlock_mapping", CONNECTION_SYNCH); - // BankBagSlotPrices.db2 PrepareStatement(HOTFIX_SEL_BANK_BAG_SLOT_PRICES, "SELECT ID, Cost FROM bank_bag_slot_prices WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_BANK_BAG_SLOT_PRICES, "SELECT MAX(ID) + 1 FROM bank_bag_slot_prices", CONNECTION_SYNCH); @@ -231,7 +226,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_BANNED_ADDONS, "SELECT MAX(ID) + 1 FROM banned_addons", CONNECTION_SYNCH); // BarberShopStyle.db2 - PrepareStatement(HOTFIX_SEL_BARBER_SHOP_STYLE, "SELECT ID, DisplayName, Description, Type, CostModifier, Race, Sex, Data FROM barber_shop_style" + PrepareStatement(HOTFIX_SEL_BARBER_SHOP_STYLE, "SELECT DisplayName, Description, ID, Type, CostModifier, Race, Sex, Data FROM barber_shop_style" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_BARBER_SHOP_STYLE, "SELECT MAX(ID) + 1 FROM barber_shop_style", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_BARBER_SHOP_STYLE, "SELECT ID, DisplayName_lang, Description_lang FROM barber_shop_style_locale" @@ -245,7 +240,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // BattlePetBreedQuality.db2 - PrepareStatement(HOTFIX_SEL_BATTLE_PET_BREED_QUALITY, "SELECT ID, MaxQualityRoll, StateMultiplier, QualityEnum FROM battle_pet_breed_quality" + PrepareStatement(HOTFIX_SEL_BATTLE_PET_BREED_QUALITY, "SELECT ID, StateMultiplier, QualityEnum FROM battle_pet_breed_quality" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_BATTLE_PET_BREED_QUALITY, "SELECT MAX(ID) + 1 FROM battle_pet_breed_quality", CONNECTION_SYNCH); @@ -256,7 +251,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // BattlePetSpecies.db2 PrepareStatement(HOTFIX_SEL_BATTLE_PET_SPECIES, "SELECT Description, SourceText, ID, CreatureID, SummonSpellID, IconFileDataID, PetTypeEnum, " - "Flags, SourceTypeEnum, CardUIModelSceneID, LoadoutUIModelSceneID, CovenantID FROM battle_pet_species WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "Flags, SourceTypeEnum, CardUIModelSceneID, LoadoutUIModelSceneID FROM battle_pet_species WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_BATTLE_PET_SPECIES, "SELECT MAX(ID) + 1 FROM battle_pet_species", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_BATTLE_PET_SPECIES, "SELECT ID, Description_lang, SourceText_lang FROM battle_pet_species_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -283,11 +278,6 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_BROADCAST_TEXT, "SELECT ID, Text_lang, Text1_lang FROM broadcast_text_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); - // BroadcastTextDuration.db2 - PrepareStatement(HOTFIX_SEL_BROADCAST_TEXT_DURATION, "SELECT ID, BroadcastTextID, Locale, Duration FROM broadcast_text_duration" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_BROADCAST_TEXT_DURATION, "SELECT MAX(ID) + 1 FROM broadcast_text_duration", CONNECTION_SYNCH); - // CfgCategories.db2 PrepareStatement(HOTFIX_SEL_CFG_CATEGORIES, "SELECT ID, Name, LocaleMask, CreateCharsetMask, ExistingCharsetMask, Flags, `Order`" " FROM cfg_categories WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); @@ -299,11 +289,6 @@ void HotfixDatabaseConnection::DoPrepareStatements() " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CFG_REGIONS, "SELECT MAX(ID) + 1 FROM cfg_regions", CONNECTION_SYNCH); - // ChallengeModeItemBonusOverride.db2 - PrepareStatement(HOTFIX_SEL_CHALLENGE_MODE_ITEM_BONUS_OVERRIDE, "SELECT ID, ItemBonusTreeGroupID, DstItemBonusTreeID, Type, Value, " - "MythicPlusSeasonID, PvPSeasonID, SrcItemBonusTreeID FROM challenge_mode_item_bonus_override WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHALLENGE_MODE_ITEM_BONUS_OVERRIDE, "SELECT MAX(ID) + 1 FROM challenge_mode_item_bonus_override", CONNECTION_SYNCH); - // CharTitles.db2 PrepareStatement(HOTFIX_SEL_CHAR_TITLES, "SELECT ID, Name, Name1, MaskID, Flags FROM char_titles WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHAR_TITLES, "SELECT MAX(ID) + 1 FROM char_titles", CONNECTION_SYNCH); @@ -311,7 +296,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() " AND locale = ?", CONNECTION_SYNCH); // CharacterLoadout.db2 - PrepareStatement(HOTFIX_SEL_CHARACTER_LOADOUT, "SELECT ID, RaceMask, ChrClassID, Purpose, ItemContext FROM character_loadout" + PrepareStatement(HOTFIX_SEL_CHARACTER_LOADOUT, "SELECT RaceMask, ID, ChrClassID, Purpose, ItemContext FROM character_loadout" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHARACTER_LOADOUT, "SELECT MAX(ID) + 1 FROM character_loadout", CONNECTION_SYNCH); @@ -321,7 +306,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHARACTER_LOADOUT_ITEM, "SELECT MAX(ID) + 1 FROM character_loadout_item", CONNECTION_SYNCH); // ChatChannels.db2 - PrepareStatement(HOTFIX_SEL_CHAT_CHANNELS, "SELECT ID, Name, Shortcut, Flags, FactionGroup, Ruleset FROM chat_channels" + PrepareStatement(HOTFIX_SEL_CHAT_CHANNELS, "SELECT Name, Shortcut, ID, Flags, FactionGroup, Ruleset FROM chat_channels" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHAT_CHANNELS, "SELECT MAX(ID) + 1 FROM chat_channels", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CHAT_CHANNELS, "SELECT ID, Name_lang, Shortcut_lang FROM chat_channels_locale WHERE (`VerifiedBuild` > 0) = ?" @@ -333,18 +318,13 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CLASS_UI_DISPLAY, "SELECT MAX(ID) + 1 FROM chr_class_ui_display", CONNECTION_SYNCH); // ChrClasses.db2 - PrepareStatement(HOTFIX_SEL_CHR_CLASSES, "SELECT Name, Filename, NameMale, NameFemale, PetNameToken, Description, RoleInfoString, DisabledString, " - "HyphenatedNameMale, HyphenatedNameFemale, ID, CreateScreenFileDataID, SelectScreenFileDataID, IconFileDataID, LowResScreenFileDataID, Flags, " - "SpellTextureBlobFileDataID, ArmorTypeMask, CharStartKitUnknown901, MaleCharacterCreationVisualFallback, " - "MaleCharacterCreationIdleVisualFallback, FemaleCharacterCreationVisualFallback, FemaleCharacterCreationIdleVisualFallback, " - "CharacterCreationIdleGroundVisualFallback, CharacterCreationGroundVisualFallback, AlteredFormCharacterCreationIdleVisualFallback, " - "CharacterCreationAnimLoopWaitTimeMsFallback, CinematicSequenceID, DefaultSpec, PrimaryStatPriority, DisplayPower, " - "RangedAttackPowerPerAgility, AttackPowerPerAgility, AttackPowerPerStrength, SpellClassSet, ClassColorR, ClassColorG, ClassColorB, RolesMask" - " FROM chr_classes WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CHR_CLASSES, "SELECT Name, Filename, NameMale, NameFemale, PetNameToken, ID, CreateScreenFileDataID, " + "SelectScreenFileDataID, IconFileDataID, LowResScreenFileDataID, Flags, StartingLevel, ArmorTypeMask, CinematicSequenceID, DefaultSpec, " + "HasStrengthAttackBonus, PrimaryStatPriority, DisplayPower, RangedAttackPowerPerAgility, AttackPowerPerAgility, AttackPowerPerStrength, " + "SpellClassSet, RolesMask, DamageBonusStat, HasRelicSlot FROM chr_classes WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CLASSES, "SELECT MAX(ID) + 1 FROM chr_classes", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CLASSES, "SELECT ID, Name_lang, NameMale_lang, NameFemale_lang, Description_lang, RoleInfoString_lang, " - "DisabledString_lang, HyphenatedNameMale_lang, HyphenatedNameFemale_lang FROM chr_classes_locale WHERE (`VerifiedBuild` > 0) = ?" - " AND locale = ?", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CLASSES, "SELECT ID, Name_lang, NameMale_lang, NameFemale_lang FROM chr_classes_locale" + " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // ChrClassesXPowerTypes.db2 PrepareStatement(HOTFIX_SEL_CHR_CLASSES_X_POWER_TYPES, "SELECT ID, PowerType, ClassID FROM chr_classes_x_power_types" @@ -373,14 +353,14 @@ void HotfixDatabaseConnection::DoPrepareStatements() // ChrCustomizationOption.db2 PrepareStatement(HOTFIX_SEL_CHR_CUSTOMIZATION_OPTION, "SELECT Name, ID, SecondaryID, Flags, ChrModelID, SortIndex, ChrCustomizationCategoryID, " - "OptionType, BarberShopCostModifier, ChrCustomizationID, ChrCustomizationReqID, UiOrderIndex, AddedInPatch FROM chr_customization_option" + "OptionType, BarberShopCostModifier, ChrCustomizationID, ChrCustomizationReqID, UiOrderIndex FROM chr_customization_option" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_OPTION, "SELECT MAX(ID) + 1 FROM chr_customization_option", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_OPTION, "SELECT ID, Name_lang FROM chr_customization_option_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // ChrCustomizationReq.db2 - PrepareStatement(HOTFIX_SEL_CHR_CUSTOMIZATION_REQ, "SELECT ID, RaceMask, ReqSource, Flags, ClassMask, AchievementID, QuestID, OverrideArchive, " + PrepareStatement(HOTFIX_SEL_CHR_CUSTOMIZATION_REQ, "SELECT RaceMask, ReqSource, ID, Flags, ClassMask, AchievementID, QuestID, OverrideArchive, " "ItemModifiedAppearanceID FROM chr_customization_req WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_REQ, "SELECT MAX(ID) + 1 FROM chr_customization_req", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_REQ, "SELECT ID, ReqSource_lang FROM chr_customization_req_locale WHERE (`VerifiedBuild` > 0) = ?" @@ -406,15 +386,16 @@ void HotfixDatabaseConnection::DoPrepareStatements() // ChrRaces.db2 PrepareStatement(HOTFIX_SEL_CHR_RACES, "SELECT ID, ClientPrefix, ClientFileString, Name, NameFemale, NameLowercase, NameFemaleLowercase, " "LoreName, LoreNameFemale, LoreNameLower, LoreNameLowerFemale, LoreDescription, ShortName, ShortNameFemale, ShortNameLower, " - "ShortNameLowerFemale, Flags, FactionID, CinematicSequenceID, ResSicknessSpellID, SplashSoundID, Alliance, RaceRelated, " - "UnalteredVisualRaceID, DefaultClassID, CreateScreenFileDataID, SelectScreenFileDataID, NeutralRaceID, LowResScreenFileDataID, " - "AlteredFormStartVisualKitID1, AlteredFormStartVisualKitID2, AlteredFormStartVisualKitID3, AlteredFormFinishVisualKitID1, " - "AlteredFormFinishVisualKitID2, AlteredFormFinishVisualKitID3, HeritageArmorAchievementID, StartingLevel, UiDisplayOrder, " - "MaleModelFallbackRaceID, FemaleModelFallbackRaceID, MaleTextureFallbackRaceID, FemaleTextureFallbackRaceID, PlayableRaceBit, " - "HelmetAnimScalingRaceID, TransmogrifyDisabledSlotMask, UnalteredVisualCustomizationRaceID, AlteredFormCustomizeOffsetFallback1, " + "ShortNameLowerFemale, Flags, MaleDisplayID, FemaleDisplayID, HighResMaleDisplayID, HighResFemaleDisplayID, ResSicknessSpellID, " + "SplashSoundID, CreateScreenFileDataID, SelectScreenFileDataID, LowResScreenFileDataID, AlteredFormStartVisualKitID1, " + "AlteredFormStartVisualKitID2, AlteredFormStartVisualKitID3, AlteredFormFinishVisualKitID1, AlteredFormFinishVisualKitID2, " + "AlteredFormFinishVisualKitID3, HeritageArmorAchievementID, StartingLevel, UiDisplayOrder, PlayableRaceBit, FemaleSkeletonFileDataID, " + "MaleSkeletonFileDataID, HelmetAnimScalingRaceID, TransmogrifyDisabledSlotMask, AlteredFormCustomizeOffsetFallback1, " "AlteredFormCustomizeOffsetFallback2, AlteredFormCustomizeOffsetFallback3, AlteredFormCustomizeRotationFallback, Unknown910_11, " - "Unknown910_12, Unknown910_13, Unknown910_21, Unknown910_22, Unknown910_23, Unknown1000, BaseLanguage, CreatureType, MaleModelFallbackSex, " - "FemaleModelFallbackSex, MaleTextureFallbackSex, FemaleTextureFallbackSex FROM chr_races WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "Unknown910_12, Unknown910_13, Unknown910_21, Unknown910_22, Unknown910_23, FactionID, CinematicSequenceID, BaseLanguage, CreatureType, " + "Alliance, RaceRelated, UnalteredVisualRaceID, DefaultClassID, NeutralRaceID, MaleModelFallbackRaceID, MaleModelFallbackSex, " + "FemaleModelFallbackRaceID, FemaleModelFallbackSex, MaleTextureFallbackRaceID, MaleTextureFallbackSex, FemaleTextureFallbackRaceID, " + "FemaleTextureFallbackSex, UnalteredVisualCustomizationRaceID FROM chr_races WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_RACES, "SELECT MAX(ID) + 1 FROM chr_races", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_RACES, "SELECT ID, Name_lang, NameFemale_lang, NameLowercase_lang, NameFemaleLowercase_lang, LoreName_lang, " "LoreNameFemale_lang, LoreNameLower_lang, LoreNameLowerFemale_lang, LoreDescription_lang, ShortName_lang, ShortNameFemale_lang, " @@ -429,8 +410,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // CinematicCamera.db2 - PrepareStatement(HOTFIX_SEL_CINEMATIC_CAMERA, "SELECT ID, OriginX, OriginY, OriginZ, SoundID, OriginFacing, FileDataID, ConversationID" - " FROM cinematic_camera WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CINEMATIC_CAMERA, "SELECT ID, OriginX, OriginY, OriginZ, SoundID, OriginFacing, FileDataID FROM cinematic_camera" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CINEMATIC_CAMERA, "SELECT MAX(ID) + 1 FROM cinematic_camera", CONNECTION_SYNCH); // CinematicSequences.db2 @@ -449,30 +430,15 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONDITIONAL_CONTENT_TUNING, "SELECT MAX(ID) + 1 FROM conditional_content_tuning", CONNECTION_SYNCH); // ContentTuning.db2 - PrepareStatement(HOTFIX_SEL_CONTENT_TUNING, "SELECT ID, Flags, ExpansionID, MinLevel, MaxLevel, MinLevelType, MaxLevelType, TargetLevelDelta, " - "TargetLevelMaxDelta, TargetLevelMin, TargetLevelMax, MinItemLevel, QuestXpMultiplier FROM content_tuning WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONTENT_TUNING, "SELECT MAX(ID) + 1 FROM content_tuning", CONNECTION_SYNCH); - - // ContentTuningXExpected.db2 - PrepareStatement(HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED, "SELECT ID, ExpectedStatModID, MinMythicPlusSeasonID, MaxMythicPlusSeasonID, " - "ContentTuningID FROM content_tuning_x_expected WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED, "SELECT MAX(ID) + 1 FROM content_tuning_x_expected", CONNECTION_SYNCH); - - // ContentTuningXLabel.db2 - PrepareStatement(HOTFIX_SEL_CONTENT_TUNING_X_LABEL, "SELECT ID, LabelID, ContentTuningID FROM content_tuning_x_label" + PrepareStatement(HOTFIX_SEL_CONTENT_TUNING, "SELECT ID, MinLevel, MaxLevel, Flags, ExpectedStatModID, DifficultyESMID FROM content_tuning" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONTENT_TUNING_X_LABEL, "SELECT MAX(ID) + 1 FROM content_tuning_x_label", CONNECTION_SYNCH); + PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONTENT_TUNING, "SELECT MAX(ID) + 1 FROM content_tuning", CONNECTION_SYNCH); // ConversationLine.db2 - PrepareStatement(HOTFIX_SEL_CONVERSATION_LINE, "SELECT ID, BroadcastTextID, Unused1020, SpellVisualKitID, AdditionalDuration, " - "NextConversationLineID, AnimKitID, SpeechType, StartAnimation, EndAnimation FROM conversation_line WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CONVERSATION_LINE, "SELECT ID, BroadcastTextID, SpellVisualKitID, AdditionalDuration, NextConversationLineID, " + "AnimKitID, SpeechType, StartAnimation, EndAnimation FROM conversation_line WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONVERSATION_LINE, "SELECT MAX(ID) + 1 FROM conversation_line", CONNECTION_SYNCH); - // CorruptionEffects.db2 - PrepareStatement(HOTFIX_SEL_CORRUPTION_EFFECTS, "SELECT ID, MinCorruption, Aura, PlayerConditionID, Flags FROM corruption_effects" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_CORRUPTION_EFFECTS, "SELECT MAX(ID) + 1 FROM corruption_effects", CONNECTION_SYNCH); - // CreatureDisplayInfo.db2 PrepareStatement(HOTFIX_SEL_CREATURE_DISPLAY_INFO, "SELECT ID, ModelID, SoundID, SizeClass, CreatureModelScale, CreatureModelAlpha, BloodID, " "ExtendedDisplayInfoID, NPCSoundID, ParticleColorID, PortraitCreatureDisplayInfoID, PortraitTextureFileDataID, ObjectEffectPackageID, " @@ -482,23 +448,23 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_CREATURE_DISPLAY_INFO, "SELECT MAX(ID) + 1 FROM creature_display_info", CONNECTION_SYNCH); // CreatureDisplayInfoExtra.db2 - PrepareStatement(HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA, "SELECT ID, DisplayRaceID, DisplaySexID, DisplayClassID, Flags, BakeMaterialResourcesID, " - "HDBakeMaterialResourcesID FROM creature_display_info_extra WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA, "SELECT ID, DisplayRaceID, DisplaySexID, DisplayClassID, SkinID, FaceID, HairStyleID, " + "HairColorID, FacialHairID, Flags, BakeMaterialResourcesID, HDBakeMaterialResourcesID, CustomDisplayOption1, CustomDisplayOption2, " + "CustomDisplayOption3 FROM creature_display_info_extra WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA, "SELECT MAX(ID) + 1 FROM creature_display_info_extra", CONNECTION_SYNCH); // CreatureFamily.db2 PrepareStatement(HOTFIX_SEL_CREATURE_FAMILY, "SELECT ID, Name, MinScale, MinScaleLevel, MaxScale, MaxScaleLevel, PetFoodMask, PetTalentType, " - "IconFileID, SkillLine1, SkillLine2 FROM creature_family WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "CategoryEnumID, IconFileID, SkillLine1, SkillLine2 FROM creature_family WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CREATURE_FAMILY, "SELECT MAX(ID) + 1 FROM creature_family", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CREATURE_FAMILY, "SELECT ID, Name_lang FROM creature_family_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // CreatureModelData.db2 - PrepareStatement(HOTFIX_SEL_CREATURE_MODEL_DATA, "SELECT ID, GeoBox1, GeoBox2, GeoBox3, GeoBox4, GeoBox5, GeoBox6, Flags, FileDataID, WalkSpeed, " - "RunSpeed, BloodID, FootprintTextureID, FootprintTextureLength, FootprintTextureWidth, FootprintParticleScale, FoleyMaterialID, " - "FootstepCameraEffectID, DeathThudCameraEffectID, SoundID, SizeClass, CollisionWidth, CollisionHeight, WorldEffectScale, " - "CreatureGeosetDataID, HoverHeight, AttachedEffectScale, ModelScale, MissileCollisionRadius, MissileCollisionPush, MissileCollisionRaise, " - "MountHeight, OverrideLootEffectScale, OverrideNameScale, OverrideSelectionRadius, TamedPetBaseScale, Unknown820_1, Unknown820_2, " - "Unknown820_31, Unknown820_32 FROM creature_model_data WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CREATURE_MODEL_DATA, "SELECT ID, GeoBox1, GeoBox2, GeoBox3, GeoBox4, GeoBox5, GeoBox6, Flags, FileDataID, BloodID, " + "FootprintTextureID, FootprintTextureLength, FootprintTextureWidth, FootprintParticleScale, FoleyMaterialID, FootstepCameraEffectID, " + "DeathThudCameraEffectID, SoundID, SizeClass, CollisionWidth, CollisionHeight, WorldEffectScale, CreatureGeosetDataID, HoverHeight, " + "AttachedEffectScale, ModelScale, MissileCollisionRadius, MissileCollisionPush, MissileCollisionRaise, MountHeight, OverrideLootEffectScale, " + "OverrideNameScale, OverrideSelectionRadius, TamedPetBaseScale FROM creature_model_data WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CREATURE_MODEL_DATA, "SELECT MAX(ID) + 1 FROM creature_model_data", CONNECTION_SYNCH); // CreatureType.db2 @@ -527,8 +493,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // CurrencyTypes.db2 PrepareStatement(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, CategoryID, InventoryIconFileID, SpellWeight, SpellCategory, MaxQty, " - "MaxEarnablePerWeek, Quality, FactionID, ItemGroupSoundsID, XpQuestDifficulty, AwardConditionID, MaxQtyWorldStateID, " - "RechargingAmountPerCycle, RechargingCycleDurationMS, Flags1, Flags2 FROM currency_types WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "MaxEarnablePerWeek, Quality, FactionID, AwardConditionID, Flags1, Flags2 FROM currency_types WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CURRENCY_TYPES, "SELECT MAX(ID) + 1 FROM currency_types", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name_lang, Description_lang FROM currency_types_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -558,8 +523,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_DIFFICULTY, "SELECT ID, Name_lang FROM difficulty_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // DungeonEncounter.db2 - PrepareStatement(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT Name, ID, MapID, DifficultyID, OrderIndex, CompleteWorldStateID, Bit, Flags, " - "SpellIconFileID, Faction FROM dungeon_encounter WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT Name, ID, MapID, DifficultyID, OrderIndex, Bit, Flags, Faction FROM dungeon_encounter" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT MAX(ID) + 1 FROM dungeon_encounter", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT ID, Name_lang FROM dungeon_encounter_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -604,8 +569,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_EXPECTED_STAT_MOD, "SELECT MAX(ID) + 1 FROM expected_stat_mod", CONNECTION_SYNCH); // Faction.db2 - PrepareStatement(HOTFIX_SEL_FACTION, "SELECT ID, ReputationRaceMask1, ReputationRaceMask2, ReputationRaceMask3, ReputationRaceMask4, Name, " - "Description, ReputationIndex, ParentFactionID, Expansion, FriendshipRepID, Flags, ParagonFactionID, RenownFactionID, RenownCurrencyID, " + PrepareStatement(HOTFIX_SEL_FACTION, "SELECT ReputationRaceMask1, ReputationRaceMask2, ReputationRaceMask3, ReputationRaceMask4, Name, " + "Description, ID, ReputationIndex, ParentFactionID, Expansion, FriendshipRepID, Flags, ParagonFactionID, RenownFactionID, RenownCurrencyID, " "ReputationClassMask1, ReputationClassMask2, ReputationClassMask3, ReputationClassMask4, ReputationFlags1, ReputationFlags2, " "ReputationFlags3, ReputationFlags4, ReputationBase1, ReputationBase2, ReputationBase3, ReputationBase4, ReputationMax1, ReputationMax2, " "ReputationMax3, ReputationMax4, ParentFactionMod1, ParentFactionMod2, ParentFactionCap1, ParentFactionCap2 FROM faction" @@ -620,18 +585,18 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_FACTION_TEMPLATE, "SELECT MAX(ID) + 1 FROM faction_template", CONNECTION_SYNCH); // FriendshipRepReaction.db2 - PrepareStatement(HOTFIX_SEL_FRIENDSHIP_REP_REACTION, "SELECT ID, Reaction, FriendshipRepID, ReactionThreshold, OverrideColor" - " FROM friendship_rep_reaction WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_FRIENDSHIP_REP_REACTION, "SELECT ID, Reaction, FriendshipRepID, ReactionThreshold FROM friendship_rep_reaction" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_FRIENDSHIP_REP_REACTION, "SELECT MAX(ID) + 1 FROM friendship_rep_reaction", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_FRIENDSHIP_REP_REACTION, "SELECT ID, Reaction_lang FROM friendship_rep_reaction_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // FriendshipReputation.db2 - PrepareStatement(HOTFIX_SEL_FRIENDSHIP_REPUTATION, "SELECT Description, StandingModified, StandingChanged, ID, FactionID, TextureFileID, Flags" - " FROM friendship_reputation WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_FRIENDSHIP_REPUTATION, "SELECT Description, ID, Field34146722002, Field34146722003 FROM friendship_reputation" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_FRIENDSHIP_REPUTATION, "SELECT MAX(ID) + 1 FROM friendship_reputation", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_FRIENDSHIP_REPUTATION, "SELECT ID, Description_lang, StandingModified_lang, StandingChanged_lang" - " FROM friendship_reputation_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_FRIENDSHIP_REPUTATION, "SELECT ID, Description_lang FROM friendship_reputation_locale" + " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // GameobjectArtKit.db2 PrepareStatement(HOTFIX_SEL_GAMEOBJECT_ART_KIT, "SELECT ID, AttachModelFileID, TextureVariationFileID1, TextureVariationFileID2, " @@ -639,9 +604,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_GAMEOBJECT_ART_KIT, "SELECT MAX(ID) + 1 FROM gameobject_art_kit", CONNECTION_SYNCH); // GameobjectDisplayInfo.db2 - PrepareStatement(HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT ID, GeoBoxMinX, GeoBoxMinY, GeoBoxMinZ, GeoBoxMaxX, GeoBoxMaxY, GeoBoxMaxZ, " - "FileDataID, ObjectEffectPackageID, OverrideLootEffectScale, OverrideNameScale, AlternateDisplayType, ClientCreatureDisplayInfoID, " - "ClientItemID FROM gameobject_display_info WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT ID, ModelName, GeoBoxMinX, GeoBoxMinY, GeoBoxMinZ, GeoBoxMaxX, GeoBoxMaxY, " + "GeoBoxMaxZ, FileDataID, ObjectEffectPackageID, OverrideLootEffectScale, OverrideNameScale FROM gameobject_display_info" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT MAX(ID) + 1 FROM gameobject_display_info", CONNECTION_SYNCH); // Gameobjects.db2 @@ -652,7 +617,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_GAMEOBJECTS, "SELECT ID, Name_lang FROM gameobjects_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // GarrAbility.db2 - PrepareStatement(HOTFIX_SEL_GARR_ABILITY, "SELECT ID, Name, Description, GarrAbilityCategoryID, GarrFollowerTypeID, IconFileDataID, " + PrepareStatement(HOTFIX_SEL_GARR_ABILITY, "SELECT Name, Description, ID, GarrAbilityCategoryID, GarrFollowerTypeID, IconFileDataID, " "FactionChangeGarrAbilityID, Flags FROM garr_ability WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_ABILITY, "SELECT MAX(ID) + 1 FROM garr_ability", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_ABILITY, "SELECT ID, Name_lang, Description_lang FROM garr_ability_locale WHERE (`VerifiedBuild` > 0) = ?" @@ -673,19 +638,19 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_BUILDING_PLOT_INST, "SELECT MAX(ID) + 1 FROM garr_building_plot_inst", CONNECTION_SYNCH); // GarrClassSpec.db2 - PrepareStatement(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT ID, ClassSpec, ClassSpecMale, ClassSpecFemale, UiTextureAtlasMemberID, GarrFollItemSetID, " + PrepareStatement(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT ClassSpec, ClassSpecMale, ClassSpecFemale, ID, UiTextureAtlasMemberID, GarrFollItemSetID, " "FollowerClassLimit, Flags FROM garr_class_spec WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT MAX(ID) + 1 FROM garr_class_spec", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT ID, ClassSpec_lang, ClassSpecMale_lang, ClassSpecFemale_lang FROM garr_class_spec_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // GarrFollower.db2 - PrepareStatement(HOTFIX_SEL_GARR_FOLLOWER, "SELECT ID, HordeSourceText, AllianceSourceText, TitleName, GarrTypeID, GarrFollowerTypeID, " + PrepareStatement(HOTFIX_SEL_GARR_FOLLOWER, "SELECT HordeSourceText, AllianceSourceText, TitleName, ID, GarrTypeID, GarrFollowerTypeID, " "HordeCreatureID, AllianceCreatureID, HordeGarrFollRaceID, AllianceGarrFollRaceID, HordeGarrClassSpecID, AllianceGarrClassSpecID, Quality, " "FollowerLevel, ItemLevelWeapon, ItemLevelArmor, HordeSourceTypeEnum, AllianceSourceTypeEnum, HordeIconFileDataID, AllianceIconFileDataID, " "HordeGarrFollItemSetID, AllianceGarrFollItemSetID, HordeUITextureKitID, AllianceUITextureKitID, Vitality, HordeFlavorGarrStringID, " - "AllianceFlavorGarrStringID, HordeSlottingBroadcastTextID, AllySlottingBroadcastTextID, ChrClassID, Flags, Gender, AutoCombatantID, " - "CovenantID FROM garr_follower WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "AllianceFlavorGarrStringID, HordeSlottingBroadcastTextID, AllySlottingBroadcastTextID, ChrClassID, Flags, Gender FROM garr_follower" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_FOLLOWER, "SELECT MAX(ID) + 1 FROM garr_follower", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_FOLLOWER, "SELECT ID, HordeSourceText_lang, AllianceSourceText_lang, TitleName_lang FROM garr_follower_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -696,11 +661,11 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY, "SELECT MAX(ID) + 1 FROM garr_follower_x_ability", CONNECTION_SYNCH); // GarrMission.db2 - PrepareStatement(HOTFIX_SEL_GARR_MISSION, "SELECT ID, Name, Location, Description, MapPosX, MapPosY, WorldPosX, WorldPosY, GarrTypeID, " + PrepareStatement(HOTFIX_SEL_GARR_MISSION, "SELECT Name, Location, Description, MapPosX, MapPosY, WorldPosX, WorldPosY, ID, GarrTypeID, " "GarrMissionTypeID, GarrFollowerTypeID, MaxFollowers, MissionCost, MissionCostCurrencyTypesID, OfferedGarrMissionTextureID, UiTextureKitID, " - "EnvGarrMechanicID, EnvGarrMechanicTypeID, PlayerConditionID, GarrMissionSetID, TargetLevel, TargetItemLevel, MissionDuration, " - "TravelDuration, OfferDuration, BaseCompletionChance, BaseFollowerXP, OvermaxRewardPackID, FollowerDeathChance, AreaID, Flags, " - "AutoMissionScalar, AutoMissionScalarCurveID, AutoCombatantEnvCasterID FROM garr_mission WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "EnvGarrMechanicID, EnvGarrMechanicTypeID, PlayerConditionID, TargetLevel, TargetItemLevel, MissionDuration, TravelDuration, OfferDuration, " + "BaseCompletionChance, BaseFollowerXP, OvermaxRewardPackID, FollowerDeathChance, AreaID, Flags, GarrMissionSetID FROM garr_mission" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_MISSION, "SELECT MAX(ID) + 1 FROM garr_mission", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_MISSION, "SELECT ID, Name_lang, Location_lang, Description_lang FROM garr_mission_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -729,27 +694,22 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_SITE_LEVEL_PLOT_INST, "SELECT MAX(ID) + 1 FROM garr_site_level_plot_inst", CONNECTION_SYNCH); // GarrTalentTree.db2 - PrepareStatement(HOTFIX_SEL_GARR_TALENT_TREE, "SELECT ID, Name, GarrTypeID, ClassID, MaxTiers, UiOrder, Flags, UiTextureKitID, " - "GarrTalentTreeType, PlayerConditionID, FeatureTypeIndex, FeatureSubtypeIndex, CurrencyID FROM garr_talent_tree" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GARR_TALENT_TREE, "SELECT ID, Name, GarrTypeID, ClassID, MaxTiers, UiOrder, Flags, UiTextureKitID" + " FROM garr_talent_tree WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_TALENT_TREE, "SELECT MAX(ID) + 1 FROM garr_talent_tree", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_TALENT_TREE, "SELECT ID, Name_lang FROM garr_talent_tree_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // GemProperties.db2 - PrepareStatement(HOTFIX_SEL_GEM_PROPERTIES, "SELECT ID, EnchantId, Type FROM gem_properties WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GEM_PROPERTIES, "SELECT ID, EnchantId, Type, MinItemLevel FROM gem_properties WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_GEM_PROPERTIES, "SELECT MAX(ID) + 1 FROM gem_properties", CONNECTION_SYNCH); - // GlobalCurve.db2 - PrepareStatement(HOTFIX_SEL_GLOBAL_CURVE, "SELECT ID, CurveID, Type FROM global_curve WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_GLOBAL_CURVE, "SELECT MAX(ID) + 1 FROM global_curve", CONNECTION_SYNCH); - // GlyphBindableSpell.db2 PrepareStatement(HOTFIX_SEL_GLYPH_BINDABLE_SPELL, "SELECT ID, SpellID, GlyphPropertiesID FROM glyph_bindable_spell WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_GLYPH_BINDABLE_SPELL, "SELECT MAX(ID) + 1 FROM glyph_bindable_spell", CONNECTION_SYNCH); // GlyphProperties.db2 - PrepareStatement(HOTFIX_SEL_GLYPH_PROPERTIES, "SELECT ID, SpellID, GlyphType, GlyphExclusiveCategoryID, SpellIconFileDataID FROM glyph_properties" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GLYPH_PROPERTIES, "SELECT ID, SpellID, GlyphType, GlyphExclusiveCategoryID, SpellIconFileDataID, GlyphSlotFlags" + " FROM glyph_properties WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_GLYPH_PROPERTIES, "SELECT MAX(ID) + 1 FROM glyph_properties", CONNECTION_SYNCH); // GlyphRequiredSpec.db2 @@ -758,9 +718,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_GLYPH_REQUIRED_SPEC, "SELECT MAX(ID) + 1 FROM glyph_required_spec", CONNECTION_SYNCH); // GossipNpcOption.db2 - PrepareStatement(HOTFIX_SEL_GOSSIP_NPC_OPTION, "SELECT ID, GossipNpcOption, LFGDungeonsID, TrainerID, GarrFollowerTypeID, CharShipmentID, " - "GarrTalentTreeID, UiMapID, UiItemInteractionID, Unknown_1000_8, Unknown_1000_9, CovenantID, GossipOptionID, TraitTreeID, ProfessionID, " - "Unknown_1002_14 FROM gossip_npc_option WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_GOSSIP_NPC_OPTION, "SELECT ID, GossipNpcOption, LFGDungeonsID, TrainerID, Unk341_1, Unk341_2, Unk341_3, Unk341_4, " + "Unk341_5, Unk341_6, Unk341_7, Unk341_8, GossipOptionID FROM gossip_npc_option WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_GOSSIP_NPC_OPTION, "SELECT MAX(ID) + 1 FROM gossip_npc_option", CONNECTION_SYNCH); // GuildColorBackground.db2 @@ -789,11 +748,10 @@ void HotfixDatabaseConnection::DoPrepareStatements() // Holidays.db2 PrepareStatement(HOTFIX_SEL_HOLIDAYS, "SELECT ID, Region, Looping, HolidayNameID, HolidayDescriptionID, Priority, CalendarFilterType, Flags, " - "Duration1, Duration2, Duration3, Duration4, Duration5, Duration6, Duration7, Duration8, Duration9, Duration10, Date1, Date2, Date3, Date4, " - "Date5, Date6, Date7, Date8, Date9, Date10, Date11, Date12, Date13, Date14, Date15, Date16, Date17, Date18, Date19, Date20, Date21, Date22, " - "Date23, Date24, Date25, Date26, CalendarFlags1, CalendarFlags2, CalendarFlags3, CalendarFlags4, CalendarFlags5, CalendarFlags6, " - "CalendarFlags7, CalendarFlags8, CalendarFlags9, CalendarFlags10, TextureFileDataID1, TextureFileDataID2, TextureFileDataID3 FROM holidays" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "WorldStateExpressionID, Duration1, Duration2, Duration3, Duration4, Duration5, Duration6, Duration7, Duration8, Duration9, Duration10, " + "Date1, Date2, Date3, Date4, Date5, Date6, Date7, Date8, Date9, Date10, Date11, Date12, Date13, Date14, Date15, Date16, CalendarFlags1, " + "CalendarFlags2, CalendarFlags3, CalendarFlags4, CalendarFlags5, CalendarFlags6, CalendarFlags7, CalendarFlags8, CalendarFlags9, " + "CalendarFlags10, TextureFileDataID1, TextureFileDataID2, TextureFileDataID3 FROM holidays WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_HOLIDAYS, "SELECT MAX(ID) + 1 FROM holidays", CONNECTION_SYNCH); // ImportPriceArmor.db2 @@ -814,13 +772,16 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_IMPORT_PRICE_WEAPON, "SELECT MAX(ID) + 1 FROM import_price_weapon", CONNECTION_SYNCH); // Item.db2 - PrepareStatement(HOTFIX_SEL_ITEM, "SELECT ID, ClassID, SubclassID, Material, InventoryType, SheatheType, SoundOverrideSubclassID, IconFileDataID, " - "ItemGroupSoundsID, ContentTuningID, ModifiedCraftingReagentItemID, CraftingQualityID FROM item WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM, "SELECT ID, ClassID, SubclassID, Material, InventoryType, RequiredLevel, SheatheType, RandomSelect, " + "ItemRandomSuffixGroupID, SoundOverrideSubclassID, ScalingStatDistributionID, IconFileDataID, ItemGroupSoundsID, ContentTuningID, " + "MaxDurability, AmmunitionType, ScalingStatValue, DamageType1, DamageType2, DamageType3, DamageType4, DamageType5, Resistances1, " + "Resistances2, Resistances3, Resistances4, Resistances5, Resistances6, Resistances7, MinDamage1, MinDamage2, MinDamage3, MinDamage4, " + "MinDamage5, MaxDamage1, MaxDamage2, MaxDamage3, MaxDamage4, MaxDamage5 FROM item WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM, "SELECT MAX(ID) + 1 FROM item", CONNECTION_SYNCH); // ItemAppearance.db2 - PrepareStatement(HOTFIX_SEL_ITEM_APPEARANCE, "SELECT ID, DisplayType, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder, PlayerConditionID" - " FROM item_appearance WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM_APPEARANCE, "SELECT ID, DisplayType, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder FROM item_appearance" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_APPEARANCE, "SELECT MAX(ID) + 1 FROM item_appearance", CONNECTION_SYNCH); // ItemArmorQuality.db2 @@ -848,28 +809,18 @@ void HotfixDatabaseConnection::DoPrepareStatements() " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_BONUS, "SELECT MAX(ID) + 1 FROM item_bonus", CONNECTION_SYNCH); - // ItemBonusListGroupEntry.db2 - PrepareStatement(HOTFIX_SEL_ITEM_BONUS_LIST_GROUP_ENTRY, "SELECT ID, ItemBonusListGroupID, ItemBonusListID, ItemLevelSelectorID, SequenceValue, " - "ItemExtendedCostID, PlayerConditionID, Flags, ItemLogicalCostGroupID FROM item_bonus_list_group_entry WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_BONUS_LIST_GROUP_ENTRY, "SELECT MAX(ID) + 1 FROM item_bonus_list_group_entry", CONNECTION_SYNCH); - // ItemBonusListLevelDelta.db2 PrepareStatement(HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA, "SELECT ItemLevelDelta, ID FROM item_bonus_list_level_delta" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA, "SELECT MAX(ID) + 1 FROM item_bonus_list_level_delta", CONNECTION_SYNCH); - // ItemBonusTree.db2 - PrepareStatement(HOTFIX_SEL_ITEM_BONUS_TREE, "SELECT ID, Flags, InventoryTypeSlotMask FROM item_bonus_tree WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_BONUS_TREE, "SELECT MAX(ID) + 1 FROM item_bonus_tree", CONNECTION_SYNCH); - // ItemBonusTreeNode.db2 PrepareStatement(HOTFIX_SEL_ITEM_BONUS_TREE_NODE, "SELECT ID, ItemContext, ChildItemBonusTreeID, ChildItemBonusListID, ChildItemLevelSelectorID, " - "ChildItemBonusListGroupID, IblGroupPointsModSetID, MinMythicPlusLevel, MaxMythicPlusLevel, ParentItemBonusTreeID FROM item_bonus_tree_node" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "ParentItemBonusTreeID FROM item_bonus_tree_node WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_BONUS_TREE_NODE, "SELECT MAX(ID) + 1 FROM item_bonus_tree_node", CONNECTION_SYNCH); // ItemChildEquipment.db2 - PrepareStatement(HOTFIX_SEL_ITEM_CHILD_EQUIPMENT, "SELECT ID, ParentItemID, ChildItemID, ChildItemEquipSlot FROM item_child_equipment" + PrepareStatement(HOTFIX_SEL_ITEM_CHILD_EQUIPMENT, "SELECT ID, ChildItemID, ChildItemEquipSlot, ParentItemID FROM item_child_equipment" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_CHILD_EQUIPMENT, "SELECT MAX(ID) + 1 FROM item_child_equipment", CONNECTION_SYNCH); @@ -879,7 +830,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_CLASS, "SELECT ID, ClassName_lang FROM item_class_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // ItemContextPickerEntry.db2 - PrepareStatement(HOTFIX_SEL_ITEM_CONTEXT_PICKER_ENTRY, "SELECT ID, ItemCreationContext, OrderIndex, PVal, LabelID, Flags, PlayerConditionID, " + PrepareStatement(HOTFIX_SEL_ITEM_CONTEXT_PICKER_ENTRY, "SELECT ID, ItemCreationContext, OrderIndex, PVal, Flags, PlayerConditionID, " "ItemContextPickerID FROM item_context_picker_entry WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_CONTEXT_PICKER_ENTRY, "SELECT MAX(ID) + 1 FROM item_context_picker_entry", CONNECTION_SYNCH); @@ -919,7 +870,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // ItemEffect.db2 PrepareStatement(HOTFIX_SEL_ITEM_EFFECT, "SELECT ID, LegacySlotIndex, TriggerType, Charges, CoolDownMSec, CategoryCoolDownMSec, SpellCategoryID, " - "SpellID, ChrSpecializationID FROM item_effect WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "SpellID, ChrSpecializationID, ParentItemID FROM item_effect WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_EFFECT, "SELECT MAX(ID) + 1 FROM item_effect", CONNECTION_SYNCH); // ItemExtendedCost.db2 @@ -930,8 +881,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_EXTENDED_COST, "SELECT MAX(ID) + 1 FROM item_extended_cost", CONNECTION_SYNCH); // ItemLevelSelector.db2 - PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR, "SELECT ID, MinItemLevel, ItemLevelSelectorQualitySetID, AzeriteUnlockMappingSet" - " FROM item_level_selector WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR, "SELECT ID, MinItemLevel, ItemLevelSelectorQualitySetID FROM item_level_selector" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_LEVEL_SELECTOR, "SELECT MAX(ID) + 1 FROM item_level_selector", CONNECTION_SYNCH); // ItemLevelSelectorQuality.db2 @@ -976,7 +927,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_PRICE_BASE, "SELECT MAX(ID) + 1 FROM item_price_base", CONNECTION_SYNCH); // ItemSearchName.db2 - PrepareStatement(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT ID, AllowableRace, Display, OverallQualityID, ExpansionID, MinFactionID, MinReputation, " + PrepareStatement(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT AllowableRace, Display, ID, OverallQualityID, ExpansionID, MinFactionID, MinReputation, " "AllowableClass, RequiredLevel, RequiredSkill, RequiredSkillRank, RequiredAbility, ItemLevel, Flags1, Flags2, Flags3, Flags4" " FROM item_search_name WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT MAX(ID) + 1 FROM item_search_name", CONNECTION_SYNCH); @@ -996,20 +947,24 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SET_SPELL, "SELECT MAX(ID) + 1 FROM item_set_spell", CONNECTION_SYNCH); // ItemSparse.db2 - PrepareStatement(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, AllowableRace, Description, Display3, Display2, Display1, Display, ExpansionID, DmgVariance, " - "LimitCategory, DurationInInventory, QualityModifier, BagFamily, StartQuestID, LanguageID, ItemRange, StatPercentageOfSocket1, " - "StatPercentageOfSocket2, StatPercentageOfSocket3, StatPercentageOfSocket4, StatPercentageOfSocket5, StatPercentageOfSocket6, " - "StatPercentageOfSocket7, StatPercentageOfSocket8, StatPercentageOfSocket9, StatPercentageOfSocket10, StatPercentEditor1, StatPercentEditor2, " - "StatPercentEditor3, StatPercentEditor4, StatPercentEditor5, StatPercentEditor6, StatPercentEditor7, StatPercentEditor8, StatPercentEditor9, " - "StatPercentEditor10, Stackable, MaxCount, MinReputation, RequiredAbility, SellPrice, BuyPrice, VendorStackCount, PriceVariance, " - "PriceRandomValue, Flags1, Flags2, Flags3, Flags4, FactionRelated, ModifiedCraftingReagentItemID, ContentTuningID, " - "PlayerLevelToItemLevelCurveID, ItemNameDescriptionID, RequiredTransmogHoliday, RequiredHoliday, GemProperties, SocketMatchEnchantmentId, " - "TotemCategoryID, InstanceBound, ZoneBound1, ZoneBound2, ItemSet, LockID, PageID, ItemDelay, MinFactionID, RequiredSkillRank, RequiredSkill, " - "ItemLevel, AllowableClass, ArtifactID, SpellWeight, SpellWeightCategory, SocketType1, SocketType2, SocketType3, SheatheType, Material, " - "PageMaterialID, Bonding, DamageDamageType, StatModifierBonusStat1, StatModifierBonusStat2, StatModifierBonusStat3, StatModifierBonusStat4, " - "StatModifierBonusStat5, StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, StatModifierBonusStat9, " - "StatModifierBonusStat10, ContainerSlots, RequiredPVPMedal, RequiredPVPRank, RequiredLevel, InventoryType, OverallQualityID FROM item_sparse" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, AllowableRace, Description, Display3, Display2, Display1, Display, DmgVariance, " + "DurationInInventory, QualityModifier, BagFamily, StartQuestID, ItemRange, StatPercentageOfSocket1, StatPercentageOfSocket2, " + "StatPercentageOfSocket3, StatPercentageOfSocket4, StatPercentageOfSocket5, StatPercentageOfSocket6, StatPercentageOfSocket7, " + "StatPercentageOfSocket8, StatPercentageOfSocket9, StatPercentageOfSocket10, StatPercentEditor1, StatPercentEditor2, StatPercentEditor3, " + "StatPercentEditor4, StatPercentEditor5, StatPercentEditor6, StatPercentEditor7, StatPercentEditor8, StatPercentEditor9, StatPercentEditor10, " + "Stackable, MaxCount, MinReputation, RequiredAbility, SellPrice, BuyPrice, VendorStackCount, PriceVariance, PriceRandomValue, Flags1, Flags2, " + "Flags3, Flags4, FactionRelated, ModifiedCraftingReagentItemID, ContentTuningID, PlayerLevelToItemLevelCurveID, MaxDurability, " + "ItemNameDescriptionID, RequiredTransmogHoliday, RequiredHoliday, LimitCategory, GemProperties, SocketMatchEnchantmentId, TotemCategoryID, " + "InstanceBound, ZoneBound1, ZoneBound2, ItemSet, LockID, PageID, ItemDelay, MinFactionID, RequiredSkillRank, RequiredSkill, ItemLevel, " + "AllowableClass, ItemRandomSuffixGroupID, RandomSelect, MinDamage1, MinDamage2, MinDamage3, MinDamage4, MinDamage5, MaxDamage1, MaxDamage2, " + "MaxDamage3, MaxDamage4, MaxDamage5, Resistances1, Resistances2, Resistances3, Resistances4, Resistances5, Resistances6, Resistances7, " + "ScalingStatDistributionID, StatModifierBonusAmount1, StatModifierBonusAmount2, StatModifierBonusAmount3, StatModifierBonusAmount4, " + "StatModifierBonusAmount5, StatModifierBonusAmount6, StatModifierBonusAmount7, StatModifierBonusAmount8, StatModifierBonusAmount9, " + "StatModifierBonusAmount10, ExpansionID, ArtifactID, SpellWeight, SpellWeightCategory, SocketType1, SocketType2, SocketType3, SheatheType, " + "Material, PageMaterialID, LanguageID, Bonding, DamageDamageType, StatModifierBonusStat1, StatModifierBonusStat2, StatModifierBonusStat3, " + "StatModifierBonusStat4, StatModifierBonusStat5, StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, " + "StatModifierBonusStat9, StatModifierBonusStat10, ContainerSlots, RequiredPVPMedal, RequiredPVPRank, InventoryType, OverallQualityID, " + "AmmunitionType, RequiredLevel FROM item_sparse WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SPARSE, "SELECT MAX(ID) + 1 FROM item_sparse", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, Description_lang, Display3_lang, Display2_lang, Display1_lang, Display_lang" " FROM item_sparse_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1027,13 +982,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_ITEM_X_BONUS_TREE, "SELECT ID, ItemBonusTreeID, ItemID FROM item_x_bonus_tree WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_X_BONUS_TREE, "SELECT MAX(ID) + 1 FROM item_x_bonus_tree", CONNECTION_SYNCH); - // ItemXItemEffect.db2 - PrepareStatement(HOTFIX_SEL_ITEM_X_ITEM_EFFECT, "SELECT ID, ItemEffectID, ItemID FROM item_x_item_effect WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_X_ITEM_EFFECT, "SELECT MAX(ID) + 1 FROM item_x_item_effect", CONNECTION_SYNCH); - // JournalEncounter.db2 - PrepareStatement(HOTFIX_SEL_JOURNAL_ENCOUNTER, "SELECT Name, Description, MapX, MapY, ID, JournalInstanceID, DungeonEncounterID, OrderIndex, " - "FirstSectionID, UiMapID, MapDisplayConditionID, Flags, DifficultyMask FROM journal_encounter WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_JOURNAL_ENCOUNTER, "SELECT ID, Name, Description, MapX, MapY, JournalInstanceID, OrderIndex, FirstSectionID, UiMapID, " + "MapDisplayConditionID, Flags, DifficultyMask FROM journal_encounter WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_JOURNAL_ENCOUNTER, "SELECT MAX(ID) + 1 FROM journal_encounter", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_JOURNAL_ENCOUNTER, "SELECT ID, Name_lang, Description_lang FROM journal_encounter_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1047,14 +998,14 @@ void HotfixDatabaseConnection::DoPrepareStatements() " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // JournalInstance.db2 - PrepareStatement(HOTFIX_SEL_JOURNAL_INSTANCE, "SELECT ID, Name, Description, MapID, BackgroundFileDataID, ButtonFileDataID, " + PrepareStatement(HOTFIX_SEL_JOURNAL_INSTANCE, "SELECT Name, Description, ID, MapID, BackgroundFileDataID, ButtonFileDataID, " "ButtonSmallFileDataID, LoreFileDataID, Flags, AreaID FROM journal_instance WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_JOURNAL_INSTANCE, "SELECT MAX(ID) + 1 FROM journal_instance", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_JOURNAL_INSTANCE, "SELECT ID, Name_lang, Description_lang FROM journal_instance_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // JournalTier.db2 - PrepareStatement(HOTFIX_SEL_JOURNAL_TIER, "SELECT ID, Name, PlayerConditionID FROM journal_tier WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_JOURNAL_TIER, "SELECT ID, Name FROM journal_tier WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_JOURNAL_TIER, "SELECT MAX(ID) + 1 FROM journal_tier", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_JOURNAL_TIER, "SELECT ID, Name_lang FROM journal_tier_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1081,10 +1032,11 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_LANGUAGES, "SELECT ID, Name_lang FROM languages_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // LfgDungeons.db2 - PrepareStatement(HOTFIX_SEL_LFG_DUNGEONS, "SELECT ID, Name, Description, TypeID, Subtype, Faction, IconTextureFileID, RewardsBgTextureFileID, " - "PopupBgTextureFileID, ExpansionLevel, MapID, DifficultyID, MinGear, GroupID, OrderIndex, RequiredPlayerConditionId, RandomID, ScenarioID, " - "FinalEncounterID, CountTank, CountHealer, CountDamage, MinCountTank, MinCountHealer, MinCountDamage, BonusReputationAmount, MentorItemLevel, " - "MentorCharLevel, ContentTuningID, Flags1, Flags2 FROM lfg_dungeons WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_LFG_DUNGEONS, "SELECT ID, Name, Description, MinLevel, MaxLevel, TypeID, Subtype, Faction, IconTextureFileID, " + "RewardsBgTextureFileID, PopupBgTextureFileID, ExpansionLevel, MapID, DifficultyID, MinGear, GroupID, OrderIndex, RequiredPlayerConditionId, " + "TargetLevel, TargetLevelMin, TargetLevelMax, RandomID, ScenarioID, FinalEncounterID, CountTank, CountHealer, CountDamage, MinCountTank, " + "MinCountHealer, MinCountDamage, BonusReputationAmount, MentorItemLevel, MentorCharLevel, Flags1, Flags2 FROM lfg_dungeons" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_LFG_DUNGEONS, "SELECT MAX(ID) + 1 FROM lfg_dungeons", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_LFG_DUNGEONS, "SELECT ID, Name_lang, Description_lang FROM lfg_dungeons_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -1105,8 +1057,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_LIQUID_TYPE, "SELECT MAX(ID) + 1 FROM liquid_type", CONNECTION_SYNCH); // Lock.db2 - PrepareStatement(HOTFIX_SEL_LOCK, "SELECT ID, Flags, Index1, Index2, Index3, Index4, Index5, Index6, Index7, Index8, Skill1, Skill2, Skill3, " - "Skill4, Skill5, Skill6, Skill7, Skill8, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Action1, Action2, Action3, Action4, Action5, " + PrepareStatement(HOTFIX_SEL_LOCK, "SELECT ID, Index1, Index2, Index3, Index4, Index5, Index6, Index7, Index8, Skill1, Skill2, Skill3, Skill4, " + "Skill5, Skill6, Skill7, Skill8, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Action1, Action2, Action3, Action4, Action5, " "Action6, Action7, Action8 FROM `lock` WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_LOCK, "SELECT MAX(ID) + 1 FROM `lock`", CONNECTION_SYNCH); @@ -1117,9 +1069,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() // Map.db2 PrepareStatement(HOTFIX_SEL_MAP, "SELECT ID, Directory, MapName, MapDescription0, MapDescription1, PvpShortDescription, PvpLongDescription, " - "CorpseX, CorpseY, MapType, InstanceType, ExpansionID, AreaTableID, LoadingScreenID, TimeOfDayOverride, ParentMapID, CosmeticParentMapID, " - "TimeOffset, MinimapIconScale, CorpseMapID, MaxPlayers, WindSettingsID, ZmpFileDataID, WdtFileDataID, NavigationMaxDistance, Flags1, Flags2, " - "Flags3 FROM map WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "MapType, InstanceType, ExpansionID, AreaTableID, LoadingScreenID, TimeOfDayOverride, ParentMapID, CosmeticParentMapID, TimeOffset, " + "MinimapIconScale, RaidOffset, CorpseMapID, MaxPlayers, WindSettingsID, ZmpFileDataID, Flags1, Flags2, Flags3 FROM map" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_MAP, "SELECT MAX(ID) + 1 FROM map", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_MAP, "SELECT ID, MapName_lang, MapDescription0_lang, MapDescription1_lang, PvpShortDescription_lang, " "PvpLongDescription_lang FROM map_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1132,8 +1084,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() " AND locale = ?", CONNECTION_SYNCH); // MapDifficulty.db2 - PrepareStatement(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message, DifficultyID, LockID, ResetInterval, MaxPlayers, ItemContext, " - "ItemContextPickerID, Flags, ContentTuningID, MapID FROM map_difficulty WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message, ItemContextPickerID, ContentTuningID, ItemContext, DifficultyID, LockID, " + "ResetInterval, MaxPlayers, Flags, MapID FROM map_difficulty WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT MAX(ID) + 1 FROM map_difficulty", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message_lang FROM map_difficulty_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1144,10 +1096,6 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_MAP_DIFFICULTY_X_CONDITION, "SELECT ID, FailureDescription_lang FROM map_difficulty_x_condition_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); - // MawPower.db2 - PrepareStatement(HOTFIX_SEL_MAW_POWER, "SELECT ID, SpellID, MawPowerRarityID FROM maw_power WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_MAW_POWER, "SELECT MAX(ID) + 1 FROM maw_power", CONNECTION_SYNCH); - // ModifierTree.db2 PrepareStatement(HOTFIX_SEL_MODIFIER_TREE, "SELECT ID, Parent, Operator, Amount, Type, Asset, SecondaryAsset, TertiaryAsset FROM modifier_tree" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); @@ -1155,15 +1103,14 @@ void HotfixDatabaseConnection::DoPrepareStatements() // Mount.db2 PrepareStatement(HOTFIX_SEL_MOUNT, "SELECT Name, SourceText, Description, ID, MountTypeID, Flags, SourceTypeEnum, SourceSpellID, " - "PlayerConditionID, MountFlyRideHeight, UiModelSceneID, MountSpecialRiderAnimKitID, MountSpecialSpellVisualKitID FROM mount" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "PlayerConditionID, MountFlyRideHeight, UiModelSceneID FROM mount WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOUNT, "SELECT MAX(ID) + 1 FROM mount", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_MOUNT, "SELECT ID, Name_lang, SourceText_lang, Description_lang FROM mount_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); // MountCapability.db2 PrepareStatement(HOTFIX_SEL_MOUNT_CAPABILITY, "SELECT ID, Flags, ReqRidingSkill, ReqAreaID, ReqSpellAuraID, ReqSpellKnownID, ModSpellAuraID, " - "ReqMapID, PlayerConditionID, FlightCapabilityID FROM mount_capability WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "ReqMapID FROM mount_capability WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOUNT_CAPABILITY, "SELECT MAX(ID) + 1 FROM mount_capability", CONNECTION_SYNCH); // MountTypeXCapability.db2 @@ -1177,8 +1124,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOUNT_X_DISPLAY, "SELECT MAX(ID) + 1 FROM mount_x_display", CONNECTION_SYNCH); // Movie.db2 - PrepareStatement(HOTFIX_SEL_MOVIE, "SELECT ID, Volume, KeyID, AudioFileDataID, SubtitleFileDataID, SubtitleFileFormat FROM movie" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_MOVIE, "SELECT ID, Volume, KeyID, AudioFileDataID, SubtitleFileDataID FROM movie WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOVIE, "SELECT MAX(ID) + 1 FROM movie", CONNECTION_SYNCH); // MythicPlusSeason.db2 @@ -1203,8 +1149,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_NAMES_RESERVED_LOCALE, "SELECT MAX(ID) + 1 FROM names_reserved_locale", CONNECTION_SYNCH); // NumTalentsAtLevel.db2 - PrepareStatement(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter FROM num_talents_at_level" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter, NumberOfTalents" + " FROM num_talents_at_level WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT MAX(ID) + 1 FROM num_talents_at_level", CONNECTION_SYNCH); // OverrideSpellData.db2 @@ -1226,25 +1172,23 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_PHASE_X_PHASE_GROUP, "SELECT MAX(ID) + 1 FROM phase_x_phase_group", CONNECTION_SYNCH); // PlayerCondition.db2 - PrepareStatement(HOTFIX_SEL_PLAYER_CONDITION, "SELECT ID, RaceMask, FailureDescription, ClassMask, SkillLogic, LanguageID, MinLanguage, " - "MaxLanguage, MaxFactionID, MaxReputation, ReputationLogic, CurrentPvpFaction, PvpMedal, PrevQuestLogic, CurrQuestLogic, " + PrepareStatement(HOTFIX_SEL_PLAYER_CONDITION, "SELECT RaceMask, FailureDescription, ID, MinLevel, MaxLevel, ClassMask, SkillLogic, LanguageID, " + "MinLanguage, MaxLanguage, MaxFactionID, MaxReputation, ReputationLogic, CurrentPvpFaction, PvpMedal, PrevQuestLogic, CurrQuestLogic, " "CurrentCompletedQuestLogic, SpellLogic, ItemLogic, ItemFlags, AuraSpellLogic, WorldStateExpressionID, WeatherID, PartyStatus, " "LifetimeMaxPVPRank, AchievementLogic, Gender, NativeGender, AreaLogic, LfgLogic, CurrencyLogic, QuestKillID, QuestKillLogic, " "MinExpansionLevel, MaxExpansionLevel, MinAvgItemLevel, MaxAvgItemLevel, MinAvgEquippedItemLevel, MaxAvgEquippedItemLevel, PhaseUseFlags, " "PhaseID, PhaseGroupID, Flags, ChrSpecializationIndex, ChrSpecializationRole, ModifierTreeID, PowerType, PowerTypeComp, PowerTypeValue, " - "WeaponSubclassMask, MaxGuildLevel, MinGuildLevel, MaxExpansionTier, MinExpansionTier, MinPVPRank, MaxPVPRank, ContentTuningID, CovenantID, " - "TraitNodeEntryLogic, SkillID1, SkillID2, SkillID3, SkillID4, MinSkill1, MinSkill2, MinSkill3, MinSkill4, MaxSkill1, MaxSkill2, MaxSkill3, " - "MaxSkill4, MinFactionID1, MinFactionID2, MinFactionID3, MinReputation1, MinReputation2, MinReputation3, PrevQuestID1, PrevQuestID2, " - "PrevQuestID3, PrevQuestID4, CurrQuestID1, CurrQuestID2, CurrQuestID3, CurrQuestID4, CurrentCompletedQuestID1, CurrentCompletedQuestID2, " - "CurrentCompletedQuestID3, CurrentCompletedQuestID4, SpellID1, SpellID2, SpellID3, SpellID4, ItemID1, ItemID2, ItemID3, ItemID4, ItemCount1, " - "ItemCount2, ItemCount3, ItemCount4, Explored1, Explored2, Time1, Time2, AuraSpellID1, AuraSpellID2, AuraSpellID3, AuraSpellID4, AuraStacks1, " - "AuraStacks2, AuraStacks3, AuraStacks4, Achievement1, Achievement2, Achievement3, Achievement4, AreaID1, AreaID2, AreaID3, AreaID4, " - "LfgStatus1, LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, LfgCompare2, LfgCompare3, LfgCompare4, LfgValue1, LfgValue2, LfgValue3, " - "LfgValue4, CurrencyID1, CurrencyID2, CurrencyID3, CurrencyID4, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, " - "QuestKillMonster1, QuestKillMonster2, QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, QuestKillMonster6, MovementFlags1, " - "MovementFlags2, TraitNodeEntryID1, TraitNodeEntryID2, TraitNodeEntryID3, TraitNodeEntryID4, TraitNodeEntryMinRank1, TraitNodeEntryMinRank2, " - "TraitNodeEntryMinRank3, TraitNodeEntryMinRank4, TraitNodeEntryMaxRank1, TraitNodeEntryMaxRank2, TraitNodeEntryMaxRank3, " - "TraitNodeEntryMaxRank4 FROM player_condition WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "WeaponSubclassMask, MaxGuildLevel, MinGuildLevel, MaxExpansionTier, MinExpansionTier, MinPVPRank, MaxPVPRank, SkillID1, SkillID2, SkillID3, " + "SkillID4, MinSkill1, MinSkill2, MinSkill3, MinSkill4, MaxSkill1, MaxSkill2, MaxSkill3, MaxSkill4, MinFactionID1, MinFactionID2, " + "MinFactionID3, MinReputation1, MinReputation2, MinReputation3, PrevQuestID1, PrevQuestID2, PrevQuestID3, PrevQuestID4, CurrQuestID1, " + "CurrQuestID2, CurrQuestID3, CurrQuestID4, CurrentCompletedQuestID1, CurrentCompletedQuestID2, CurrentCompletedQuestID3, " + "CurrentCompletedQuestID4, SpellID1, SpellID2, SpellID3, SpellID4, ItemID1, ItemID2, ItemID3, ItemID4, ItemCount1, ItemCount2, ItemCount3, " + "ItemCount4, Explored1, Explored2, Time1, Time2, AuraSpellID1, AuraSpellID2, AuraSpellID3, AuraSpellID4, AuraStacks1, AuraStacks2, " + "AuraStacks3, AuraStacks4, Achievement1, Achievement2, Achievement3, Achievement4, AreaID1, AreaID2, AreaID3, AreaID4, LfgStatus1, " + "LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, LfgCompare2, LfgCompare3, LfgCompare4, LfgValue1, LfgValue2, LfgValue3, LfgValue4, " + "CurrencyID1, CurrencyID2, CurrencyID3, CurrencyID4, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, QuestKillMonster1, " + "QuestKillMonster2, QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, QuestKillMonster6, MovementFlags1, MovementFlags2" + " FROM player_condition WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_PLAYER_CONDITION, "SELECT MAX(ID) + 1 FROM player_condition", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_PLAYER_CONDITION, "SELECT ID, FailureDescription_lang FROM player_condition_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -1255,7 +1199,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_POWER_DISPLAY, "SELECT MAX(ID) + 1 FROM power_display", CONNECTION_SYNCH); // PowerType.db2 - PrepareStatement(HOTFIX_SEL_POWER_TYPE, "SELECT NameGlobalStringTag, CostGlobalStringTag, ID, PowerTypeEnum, MinPower, MaxBasePower, CenterPower, " + PrepareStatement(HOTFIX_SEL_POWER_TYPE, "SELECT ID, NameGlobalStringTag, CostGlobalStringTag, PowerTypeEnum, MinPower, MaxBasePower, CenterPower, " "DefaultPower, DisplayModifier, RegenInterruptTimeMS, RegenPeace, RegenCombat, Flags FROM power_type WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_POWER_TYPE, "SELECT MAX(ID) + 1 FROM power_type", CONNECTION_SYNCH); @@ -1274,11 +1218,6 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_PVP_ITEM, "SELECT ID, ItemID, ItemLevelDelta FROM pvp_item WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_PVP_ITEM, "SELECT MAX(ID) + 1 FROM pvp_item", CONNECTION_SYNCH); - // PvpStat.db2 - PrepareStatement(HOTFIX_SEL_PVP_STAT, "SELECT Description, ID, MapID FROM pvp_stat WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_PVP_STAT, "SELECT MAX(ID) + 1 FROM pvp_stat", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_PVP_STAT, "SELECT ID, Description_lang FROM pvp_stat_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); - // PvpSeason.db2 PrepareStatement(HOTFIX_SEL_PVP_SEASON, "SELECT ID, MilestoneSeason, AllianceAchievementID, HordeAchievementID FROM pvp_season" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); @@ -1286,7 +1225,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // PvpTalent.db2 PrepareStatement(HOTFIX_SEL_PVP_TALENT, "SELECT Description, ID, SpecID, SpellID, OverridesSpellID, Flags, ActionBarSpellID, PvpTalentCategoryID, " - "LevelRequired, PlayerConditionID FROM pvp_talent WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "LevelRequired FROM pvp_talent WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_PVP_TALENT, "SELECT MAX(ID) + 1 FROM pvp_talent", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_PVP_TALENT, "SELECT ID, Description_lang FROM pvp_talent_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1300,7 +1239,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_PVP_TALENT_SLOT_UNLOCK, "SELECT MAX(ID) + 1 FROM pvp_talent_slot_unlock", CONNECTION_SYNCH); // PvpTier.db2 - PrepareStatement(HOTFIX_SEL_PVP_TIER, "SELECT Name, ID, MinRating, MaxRating, PrevTier, NextTier, BracketID, `Rank`, RankIconFileDataID" + PrepareStatement(HOTFIX_SEL_PVP_TIER, "SELECT ID, Name, MinRating, MaxRating, PrevTier, NextTier, BracketID, `Rank`, RankIconFileDataID" " FROM pvp_tier WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_PVP_TIER, "SELECT MAX(ID) + 1 FROM pvp_tier", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_PVP_TIER, "SELECT ID, Name_lang FROM pvp_tier_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1316,7 +1255,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_QUEST_INFO, "SELECT ID, InfoName_lang FROM quest_info_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // QuestLineXQuest.db2 - PrepareStatement(HOTFIX_SEL_QUEST_LINE_X_QUEST, "SELECT ID, QuestLineID, QuestID, OrderIndex, Flags FROM quest_line_x_quest" + PrepareStatement(HOTFIX_SEL_QUEST_LINE_X_QUEST, "SELECT ID, QuestLineID, QuestID, OrderIndex FROM quest_line_x_quest" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_QUEST_LINE_X_QUEST, "SELECT MAX(ID) + 1 FROM quest_line_x_quest", CONNECTION_SYNCH); @@ -1336,7 +1275,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_QUEST_SORT, "SELECT ID, SortName_lang FROM quest_sort_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // QuestV2.db2 - PrepareStatement(HOTFIX_SEL_QUEST_V2, "SELECT ID, UniqueBitFlag, UiQuestDetailsTheme FROM quest_v2 WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_QUEST_V2, "SELECT ID, UniqueBitFlag FROM quest_v2 WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_QUEST_V2, "SELECT MAX(ID) + 1 FROM quest_v2", CONNECTION_SYNCH); // QuestXp.db2 @@ -1345,10 +1284,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_QUEST_XP, "SELECT MAX(ID) + 1 FROM quest_xp", CONNECTION_SYNCH); // RandPropPoints.db2 - PrepareStatement(HOTFIX_SEL_RAND_PROP_POINTS, "SELECT ID, DamageReplaceStatF, DamageSecondaryF, DamageReplaceStat, DamageSecondary, EpicF1, " - "EpicF2, EpicF3, EpicF4, EpicF5, SuperiorF1, SuperiorF2, SuperiorF3, SuperiorF4, SuperiorF5, GoodF1, GoodF2, GoodF3, GoodF4, GoodF5, Epic1, " - "Epic2, Epic3, Epic4, Epic5, Superior1, Superior2, Superior3, Superior4, Superior5, Good1, Good2, Good3, Good4, Good5 FROM rand_prop_points" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_RAND_PROP_POINTS, "SELECT ID, DamageReplaceStat, Epic1, Epic2, Epic3, Epic4, Epic5, Superior1, Superior2, Superior3, " + "Superior4, Superior5, Good1, Good2, Good3, Good4, Good5 FROM rand_prop_points WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_RAND_PROP_POINTS, "SELECT MAX(ID) + 1 FROM rand_prop_points", CONNECTION_SYNCH); // RewardPack.db2 @@ -1388,7 +1325,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCENE_SCRIPT_GLOBAL_TEXT, "SELECT MAX(ID) + 1 FROM scene_script_global_text", CONNECTION_SYNCH); // SceneScriptPackage.db2 - PrepareStatement(HOTFIX_SEL_SCENE_SCRIPT_PACKAGE, "SELECT ID, Name, Unknown915 FROM scene_script_package WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SCENE_SCRIPT_PACKAGE, "SELECT ID, Name FROM scene_script_package WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCENE_SCRIPT_PACKAGE, "SELECT MAX(ID) + 1 FROM scene_script_package", CONNECTION_SYNCH); // SceneScriptText.db2 @@ -1402,19 +1339,17 @@ void HotfixDatabaseConnection::DoPrepareStatements() // SkillLine.db2 PrepareStatement(HOTFIX_SEL_SKILL_LINE, "SELECT DisplayName, AlternateVerb, Description, HordeDisplayName, OverrideSourceInfoDisplayName, ID, " - "CategoryID, SpellIconFileID, CanLink, ParentSkillLineID, ParentTierIndex, Flags, SpellBookSpellID, ExpansionNameSharedStringID, " - "HordeExpansionNameSharedStringID FROM skill_line WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "CategoryID, SpellIconFileID, CanLink, ParentSkillLineID, ParentTierIndex, Flags, SpellBookSpellID FROM skill_line" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SKILL_LINE, "SELECT MAX(ID) + 1 FROM skill_line", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_SKILL_LINE, "SELECT ID, DisplayName_lang, AlternateVerb_lang, Description_lang, HordeDisplayName_lang" " FROM skill_line_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // SkillLineAbility.db2 - PrepareStatement(HOTFIX_SEL_SKILL_LINE_ABILITY, "SELECT RaceMask, AbilityVerb, AbilityAllVerb, ID, SkillLine, Spell, MinSkillLineRank, ClassMask, " - "SupercedesSpell, AcquireMethod, TrivialSkillLineRankHigh, TrivialSkillLineRankLow, Flags, NumSkillUps, UniqueBit, TradeSkillCategoryID, " - "SkillupSkillLineID FROM skill_line_ability WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SKILL_LINE_ABILITY, "SELECT RaceMask, ID, SkillLine, Spell, MinSkillLineRank, ClassMask, SupercedesSpell, " + "AcquireMethod, TrivialSkillLineRankHigh, TrivialSkillLineRankLow, Flags, NumSkillUps, UniqueBit, TradeSkillCategoryID, SkillupSkillLineID, " + "CharacterPoints1, CharacterPoints2 FROM skill_line_ability WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SKILL_LINE_ABILITY, "SELECT MAX(ID) + 1 FROM skill_line_ability", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_SKILL_LINE_ABILITY, "SELECT ID, AbilityVerb_lang, AbilityAllVerb_lang FROM skill_line_ability_locale" - " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // SkillLineXTraitTree.db2 PrepareStatement(HOTFIX_SEL_SKILL_LINE_X_TRAIT_TREE, "SELECT ID, SkillLineID, TraitTreeID, OrderIndex FROM skill_line_x_trait_tree" @@ -1422,15 +1357,10 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_SKILL_LINE_X_TRAIT_TREE, "SELECT MAX(ID) + 1 FROM skill_line_x_trait_tree", CONNECTION_SYNCH); // SkillRaceClassInfo.db2 - PrepareStatement(HOTFIX_SEL_SKILL_RACE_CLASS_INFO, "SELECT ID, RaceMask, SkillID, ClassMask, Flags, Availability, MinLevel, SkillTierID" - " FROM skill_race_class_info WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SKILL_RACE_CLASS_INFO, "SELECT ID, RaceMask, SkillID, ClassMask, Flags, Availability, MinLevel, SkillTierID, " + "Unknown115_1 FROM skill_race_class_info WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SKILL_RACE_CLASS_INFO, "SELECT MAX(ID) + 1 FROM skill_race_class_info", CONNECTION_SYNCH); - // SoulbindConduitRank.db2 - PrepareStatement(HOTFIX_SEL_SOULBIND_CONDUIT_RANK, "SELECT ID, RankIndex, SpellID, AuraPointsOverride, SoulbindConduitID" - " FROM soulbind_conduit_rank WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_SOULBIND_CONDUIT_RANK, "SELECT MAX(ID) + 1 FROM soulbind_conduit_rank", CONNECTION_SYNCH); - // SoundKit.db2 PrepareStatement(HOTFIX_SEL_SOUND_KIT, "SELECT ID, SoundType, VolumeFloat, Flags, MinDistance, DistanceCutoff, EAXDef, SoundKitAdvancedID, " "VolumeVariationPlus, VolumeVariationMinus, PitchVariationPlus, PitchVariationMinus, DialogType, PitchAdjust, BusOverwriteID, MaxInstances, " @@ -1455,12 +1385,12 @@ void HotfixDatabaseConnection::DoPrepareStatements() // SpellAuraRestrictions.db2 PrepareStatement(HOTFIX_SEL_SPELL_AURA_RESTRICTIONS, "SELECT ID, DifficultyID, CasterAuraState, TargetAuraState, ExcludeCasterAuraState, " - "ExcludeTargetAuraState, CasterAuraSpell, TargetAuraSpell, ExcludeCasterAuraSpell, ExcludeTargetAuraSpell, CasterAuraType, TargetAuraType, " - "ExcludeCasterAuraType, ExcludeTargetAuraType, SpellID FROM spell_aura_restrictions WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "ExcludeTargetAuraState, CasterAuraSpell, TargetAuraSpell, ExcludeCasterAuraSpell, ExcludeTargetAuraSpell, SpellID" + " FROM spell_aura_restrictions WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_AURA_RESTRICTIONS, "SELECT MAX(ID) + 1 FROM spell_aura_restrictions", CONNECTION_SYNCH); // SpellCastTimes.db2 - PrepareStatement(HOTFIX_SEL_SPELL_CAST_TIMES, "SELECT ID, Base, Minimum FROM spell_cast_times WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_CAST_TIMES, "SELECT ID, Base, PerLevel, Minimum FROM spell_cast_times WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_CAST_TIMES, "SELECT MAX(ID) + 1 FROM spell_cast_times", CONNECTION_SYNCH); // SpellCastingRequirements.db2 @@ -1490,16 +1420,17 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_COOLDOWNS, "SELECT MAX(ID) + 1 FROM spell_cooldowns", CONNECTION_SYNCH); // SpellDuration.db2 - PrepareStatement(HOTFIX_SEL_SPELL_DURATION, "SELECT ID, Duration, MaxDuration FROM spell_duration WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_DURATION, "SELECT ID, Duration, DurationPerLevel, MaxDuration FROM spell_duration" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_DURATION, "SELECT MAX(ID) + 1 FROM spell_duration", CONNECTION_SYNCH); // SpellEffect.db2 - PrepareStatement(HOTFIX_SEL_SPELL_EFFECT, "SELECT ID, EffectAura, DifficultyID, EffectIndex, Effect, EffectAmplitude, EffectAttributes, " - "EffectAuraPeriod, EffectBonusCoefficient, EffectChainAmplitude, EffectChainTargets, EffectItemType, EffectMechanic, EffectPointsPerResource, " - "EffectPosFacing, EffectRealPointsPerLevel, EffectTriggerSpell, BonusCoefficientFromAP, PvpMultiplier, Coefficient, Variance, " - "ResourceCoefficient, GroupSizeBasePointsCoefficient, EffectBasePoints, ScalingClass, EffectMiscValue1, EffectMiscValue2, EffectRadiusIndex1, " - "EffectRadiusIndex2, EffectSpellClassMask1, EffectSpellClassMask2, EffectSpellClassMask3, EffectSpellClassMask4, ImplicitTarget1, " - "ImplicitTarget2, SpellID FROM spell_effect WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_EFFECT, "SELECT ID, DifficultyID, EffectIndex, Effect, EffectAmplitude, EffectAttributes, EffectAura, " + "EffectAuraPeriod, EffectBasePoints, EffectBonusCoefficient, EffectChainAmplitude, EffectChainTargets, EffectDieSides, EffectItemType, " + "EffectMechanic, EffectPointsPerResource, EffectPosFacing, EffectRealPointsPerLevel, EffectTriggerSpell, BonusCoefficientFromAP, " + "PvpMultiplier, Coefficient, Variance, ResourceCoefficient, GroupSizeBasePointsCoefficient, EffectMiscValue1, EffectMiscValue2, " + "EffectRadiusIndex1, EffectRadiusIndex2, EffectSpellClassMask1, EffectSpellClassMask2, EffectSpellClassMask3, EffectSpellClassMask4, " + "ImplicitTarget1, ImplicitTarget2, SpellID FROM spell_effect WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_EFFECT, "SELECT MAX(ID) + 1 FROM spell_effect", CONNECTION_SYNCH); // SpellEquippedItems.db2 @@ -1519,11 +1450,11 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_INTERRUPTS, "SELECT MAX(ID) + 1 FROM spell_interrupts", CONNECTION_SYNCH); // SpellItemEnchantment.db2 - PrepareStatement(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name, HordeName, Duration, EffectArg1, EffectArg2, EffectArg3, " - "EffectScalingPoints1, EffectScalingPoints2, EffectScalingPoints3, IconFileDataID, MinItemLevel, MaxItemLevel, TransmogUseConditionID, " - "TransmogCost, EffectPointsMin1, EffectPointsMin2, EffectPointsMin3, ItemVisual, Flags, RequiredSkillID, RequiredSkillRank, ItemLevel, " - "Charges, Effect1, Effect2, Effect3, ScalingClass, ScalingClassRestricted, ConditionID, MinLevel, MaxLevel FROM spell_item_enchantment" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name, HordeName, EffectArg1, EffectArg2, EffectArg3, EffectScalingPoints1, " + "EffectScalingPoints2, EffectScalingPoints3, GemItemID, TransmogUseConditionID, TransmogCost, IconFileDataID, EffectPointsMin1, " + "EffectPointsMin2, EffectPointsMin3, EffectPointsMax1, EffectPointsMax2, EffectPointsMax3, ItemVisual, Flags, RequiredSkillID, " + "RequiredSkillRank, ItemLevel, Charges, Effect1, Effect2, Effect3, ScalingClass, ScalingClassRestricted, ConditionID, MinLevel, MaxLevel" + " FROM spell_item_enchantment WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT, "SELECT MAX(ID) + 1 FROM spell_item_enchantment", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name_lang, HordeName_lang FROM spell_item_enchantment_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1550,7 +1481,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_LEARN_SPELL, "SELECT MAX(ID) + 1 FROM spell_learn_spell", CONNECTION_SYNCH); // SpellLevels.db2 - PrepareStatement(HOTFIX_SEL_SPELL_LEVELS, "SELECT ID, DifficultyID, MaxLevel, MaxPassiveAuraLevel, BaseLevel, SpellLevel, SpellID" + PrepareStatement(HOTFIX_SEL_SPELL_LEVELS, "SELECT ID, DifficultyID, BaseLevel, MaxLevel, SpellLevel, MaxPassiveAuraLevel, SpellID" " FROM spell_levels WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_LEVELS, "SELECT MAX(ID) + 1 FROM spell_levels", CONNECTION_SYNCH); @@ -1558,8 +1489,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_SPELL_MISC, "SELECT ID, Attributes1, Attributes2, Attributes3, Attributes4, Attributes5, Attributes6, Attributes7, " "Attributes8, Attributes9, Attributes10, Attributes11, Attributes12, Attributes13, Attributes14, Attributes15, DifficultyID, " "CastingTimeIndex, DurationIndex, RangeIndex, SchoolMask, Speed, LaunchDelay, MinDuration, SpellIconFileDataID, ActiveIconFileDataID, " - "ContentTuningID, ShowFutureSpellPlayerConditionID, SpellVisualScript, ActiveSpellVisualScript, SpellID FROM spell_misc" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "ContentTuningID, ShowFutureSpellPlayerConditionID, SpellID FROM spell_misc WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_MISC, "SELECT MAX(ID) + 1 FROM spell_misc", CONNECTION_SYNCH); // SpellName.db2 @@ -1569,7 +1499,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // SpellPower.db2 PrepareStatement(HOTFIX_SEL_SPELL_POWER, "SELECT ID, OrderIndex, ManaCost, ManaCostPerLevel, ManaPerSecond, PowerDisplayID, AltPowerBarID, " - "PowerCostPct, PowerCostMaxPct, OptionalCostPct, PowerPctPerSecond, PowerType, RequiredAuraSpellID, OptionalCost, SpellID FROM spell_power" + "PowerCostPct, PowerCostMaxPct, PowerPctPerSecond, PowerType, RequiredAuraSpellID, OptionalCost, SpellID FROM spell_power" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_POWER, "SELECT MAX(ID) + 1 FROM spell_power", CONNECTION_SYNCH); @@ -1601,10 +1531,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() // SpellReagents.db2 PrepareStatement(HOTFIX_SEL_SPELL_REAGENTS, "SELECT ID, SpellID, Reagent1, Reagent2, Reagent3, Reagent4, Reagent5, Reagent6, Reagent7, Reagent8, " - "ReagentCount1, ReagentCount2, ReagentCount3, ReagentCount4, ReagentCount5, ReagentCount6, ReagentCount7, ReagentCount8, " - "ReagentRecraftCount1, ReagentRecraftCount2, ReagentRecraftCount3, ReagentRecraftCount4, ReagentRecraftCount5, ReagentRecraftCount6, " - "ReagentRecraftCount7, ReagentRecraftCount8, ReagentSource1, ReagentSource2, ReagentSource3, ReagentSource4, ReagentSource5, ReagentSource6, " - "ReagentSource7, ReagentSource8 FROM spell_reagents WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "ReagentCount1, ReagentCount2, ReagentCount3, ReagentCount4, ReagentCount5, ReagentCount6, ReagentCount7, ReagentCount8 FROM spell_reagents" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_REAGENTS, "SELECT MAX(ID) + 1 FROM spell_reagents", CONNECTION_SYNCH); // SpellReagentsCurrency.db2 @@ -1613,8 +1541,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_REAGENTS_CURRENCY, "SELECT MAX(ID) + 1 FROM spell_reagents_currency", CONNECTION_SYNCH); // SpellScaling.db2 - PrepareStatement(HOTFIX_SEL_SPELL_SCALING, "SELECT ID, SpellID, MinScalingLevel, MaxScalingLevel, ScalesFromItemLevel FROM spell_scaling" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_SCALING, "SELECT ID, SpellID, Class, MinScalingLevel, MaxScalingLevel, ScalesFromItemLevel, CastTimeMin, " + "CastTimeMax, CastTimeMaxLevel, NerfFactor, NerfMaxLevel FROM spell_scaling WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_SCALING, "SELECT MAX(ID) + 1 FROM spell_scaling", CONNECTION_SYNCH); // SpellShapeshift.db2 @@ -1623,9 +1551,10 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_SHAPESHIFT, "SELECT MAX(ID) + 1 FROM spell_shapeshift", CONNECTION_SYNCH); // SpellShapeshiftForm.db2 - PrepareStatement(HOTFIX_SEL_SPELL_SHAPESHIFT_FORM, "SELECT ID, Name, CreatureDisplayID, CreatureType, Flags, AttackIconFileID, BonusActionBar, " - "CombatRoundTime, DamageVariance, MountTypeID, PresetSpellID1, PresetSpellID2, PresetSpellID3, PresetSpellID4, PresetSpellID5, " - "PresetSpellID6, PresetSpellID7, PresetSpellID8 FROM spell_shapeshift_form WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SPELL_SHAPESHIFT_FORM, "SELECT ID, Name, Field115052124002, CreatureType, Flags, AttackIconFileID, BonusActionBar, " + "CombatRoundTime, DamageVariance, MountTypeID, CreatureDisplayID1, CreatureDisplayID2, CreatureDisplayID3, CreatureDisplayID4, " + "PresetSpellID1, PresetSpellID2, PresetSpellID3, PresetSpellID4, PresetSpellID5, PresetSpellID6, PresetSpellID7, PresetSpellID8" + " FROM spell_shapeshift_form WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_SHAPESHIFT_FORM, "SELECT MAX(ID) + 1 FROM spell_shapeshift_form", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_SHAPESHIFT_FORM, "SELECT ID, Name_lang FROM spell_shapeshift_form_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -1644,25 +1573,25 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_SPELL_VISUAL, "SELECT ID, MissileCastOffset1, MissileCastOffset2, MissileCastOffset3, MissileImpactOffset1, " "MissileImpactOffset2, MissileImpactOffset3, AnimEventSoundID, Flags, MissileAttachment, MissileDestinationAttachment, " "MissileCastPositionerID, MissileImpactPositionerID, MissileTargetingKit, HostileSpellVisualID, CasterSpellVisualID, SpellVisualMissileSetID, " - "DamageNumberDelay, LowViolenceSpellVisualID, RaidSpellVisualMissileSetID, ReducedUnexpectedCameraMovementSpellVisualID FROM spell_visual" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "DamageNumberDelay, LowViolenceSpellVisualID, RaidSpellVisualMissileSetID, ReducedUnexpectedCameraMovementSpellVisualID, AreaModel, " + "HasMissile FROM spell_visual WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_VISUAL, "SELECT MAX(ID) + 1 FROM spell_visual", CONNECTION_SYNCH); // SpellVisualEffectName.db2 PrepareStatement(HOTFIX_SEL_SPELL_VISUAL_EFFECT_NAME, "SELECT ID, ModelFileDataID, BaseMissileSpeed, Scale, MinAllowedScale, MaxAllowedScale, " - "Alpha, Flags, TextureFileDataID, EffectRadius, Type, GenericID, RibbonQualityID, DissolveEffectID, ModelPosition, Unknown901" + "Alpha, Flags, TextureFileDataID, EffectRadius, Type, GenericID, RibbonQualityID, DissolveEffectID, ModelPosition" " FROM spell_visual_effect_name WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_VISUAL_EFFECT_NAME, "SELECT MAX(ID) + 1 FROM spell_visual_effect_name", CONNECTION_SYNCH); // SpellVisualMissile.db2 PrepareStatement(HOTFIX_SEL_SPELL_VISUAL_MISSILE, "SELECT CastOffset1, CastOffset2, CastOffset3, ImpactOffset1, ImpactOffset2, ImpactOffset3, ID, " "SpellVisualEffectNameID, SoundEntriesID, Attachment, DestinationAttachment, CastPositionerID, ImpactPositionerID, FollowGroundHeight, " - "FollowGroundDropSpeed, FollowGroundApproach, Flags, SpellMissileMotionID, AnimKitID, ClutterLevel, DecayTimeAfterImpact, " - "SpellVisualMissileSetID FROM spell_visual_missile WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "FollowGroundDropSpeed, FollowGroundApproach, Flags, SpellMissileMotionID, AnimKitID, SpellVisualMissileSetID FROM spell_visual_missile" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_VISUAL_MISSILE, "SELECT MAX(ID) + 1 FROM spell_visual_missile", CONNECTION_SYNCH); // SpellVisualKit.db2 - PrepareStatement(HOTFIX_SEL_SPELL_VISUAL_KIT, "SELECT ID, FallbackPriority, FallbackSpellVisualKitId, DelayMin, DelayMax, Flags1, Flags2" + PrepareStatement(HOTFIX_SEL_SPELL_VISUAL_KIT, "SELECT ID, FallbackSpellVisualKitId, DelayMin, DelayMax, FallbackPriority, Flags1, Flags2" " FROM spell_visual_kit WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_VISUAL_KIT, "SELECT MAX(ID) + 1 FROM spell_visual_kit", CONNECTION_SYNCH); @@ -1683,15 +1612,17 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_TACT_KEY, "SELECT MAX(ID) + 1 FROM tact_key", CONNECTION_SYNCH); // Talent.db2 - PrepareStatement(HOTFIX_SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, ClassID, SpecID, SpellID, OverridesSpellID, " - "CategoryMask1, CategoryMask2 FROM talent WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, TabID, ClassID, SpecID, SpellID, OverridesSpellID, " + "RequiredSpellID, CategoryMask1, CategoryMask2, SpellRank1, SpellRank2, SpellRank3, SpellRank4, SpellRank5, SpellRank6, SpellRank7, " + "SpellRank8, SpellRank9, PrereqTalent1, PrereqTalent2, PrereqTalent3, PrereqRank1, PrereqRank2, PrereqRank3 FROM talent" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_TALENT, "SELECT MAX(ID) + 1 FROM talent", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TALENT, "SELECT ID, Description_lang FROM talent_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // TaxiNodes.db2 PrepareStatement(HOTFIX_SEL_TAXI_NODES, "SELECT Name, PosX, PosY, PosZ, MapOffsetX, MapOffsetY, FlightMapOffsetX, FlightMapOffsetY, ID, " - "ContinentID, ConditionID, CharacterBitNumber, Flags, UiTextureKitID, MinimapAtlasMemberID, Facing, SpecialIconConditionID, " - "VisibilityConditionID, MountCreatureID1, MountCreatureID2 FROM taxi_nodes WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "ContinentID, ConditionID, CharacterBitNumber, Flags, UiTextureKitID, Facing, SpecialIconConditionID, VisibilityConditionID, " + "MountCreatureID1, MountCreatureID2 FROM taxi_nodes WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_TAXI_NODES, "SELECT MAX(ID) + 1 FROM taxi_nodes", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TAXI_NODES, "SELECT ID, Name_lang FROM taxi_nodes_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1811,7 +1742,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRAIT_NODE_X_TRAIT_NODE_ENTRY, "SELECT MAX(ID) + 1 FROM trait_node_x_trait_node_entry", CONNECTION_SYNCH); // TraitTree.db2 - PrepareStatement(HOTFIX_SEL_TRAIT_TREE, "SELECT ID, TraitSystemID, Unused1000_1, FirstTraitNodeID, PlayerConditionID, Flags, Unused1000_2, " + PrepareStatement(HOTFIX_SEL_TRAIT_TREE, "SELECT ID, TraitSystemID, TraitTreeID, FirstTraitNodeID, PlayerConditionID, Flags, Unused1000_2, " "Unused1000_3 FROM trait_tree WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRAIT_TREE, "SELECT MAX(ID) + 1 FROM trait_tree", CONNECTION_SYNCH); @@ -1835,19 +1766,14 @@ void HotfixDatabaseConnection::DoPrepareStatements() " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRAIT_TREE_X_TRAIT_CURRENCY, "SELECT MAX(ID) + 1 FROM trait_tree_x_trait_currency", CONNECTION_SYNCH); - // TransmogIllusion.db2 - PrepareStatement(HOTFIX_SEL_TRANSMOG_ILLUSION, "SELECT ID, UnlockConditionID, TransmogCost, SpellItemEnchantmentID, Flags FROM transmog_illusion" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_ILLUSION, "SELECT MAX(ID) + 1 FROM transmog_illusion", CONNECTION_SYNCH); - // TransmogSet.db2 PrepareStatement(HOTFIX_SEL_TRANSMOG_SET, "SELECT Name, ID, ClassMask, TrackingQuestID, Flags, TransmogSetGroupID, ItemNameDescriptionID, " - "ParentTransmogSetID, Unknown810, ExpansionID, PatchID, UiOrder, PlayerConditionID FROM transmog_set WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "ParentTransmogSetID, ExpansionID, UiOrder FROM transmog_set WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_SET, "SELECT MAX(ID) + 1 FROM transmog_set", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TRANSMOG_SET, "SELECT ID, Name_lang FROM transmog_set_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // TransmogSetGroup.db2 - PrepareStatement(HOTFIX_SEL_TRANSMOG_SET_GROUP, "SELECT ID, Name FROM transmog_set_group WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_TRANSMOG_SET_GROUP, "SELECT Name, ID FROM transmog_set_group WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_SET_GROUP, "SELECT MAX(ID) + 1 FROM transmog_set_group", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TRANSMOG_SET_GROUP, "SELECT ID, Name_lang FROM transmog_set_group_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -1880,7 +1806,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_UI_MAP_ASSIGNMENT, "SELECT MAX(ID) + 1 FROM ui_map_assignment", CONNECTION_SYNCH); // UiMapLink.db2 - PrepareStatement(HOTFIX_SEL_UI_MAP_LINK, "SELECT UiMinX, UiMinY, UiMaxX, UiMaxY, ID, ParentUiMapID, OrderIndex, ChildUiMapID, PlayerConditionID, " + PrepareStatement(HOTFIX_SEL_UI_MAP_LINK, "SELECT UiMinX, UiMinY, UiMaxX, UiMaxY, ID, ParentUiMapID, OrderIndex, ChildUiMapID, " "OverrideHighlightFileDataID, OverrideHighlightAtlasID, Flags FROM ui_map_link WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_UI_MAP_LINK, "SELECT MAX(ID) + 1 FROM ui_map_link", CONNECTION_SYNCH); @@ -1888,15 +1814,6 @@ void HotfixDatabaseConnection::DoPrepareStatements() PrepareStatement(HOTFIX_SEL_UI_MAP_X_MAP_ART, "SELECT ID, PhaseID, UiMapArtID, UiMapID FROM ui_map_x_map_art WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_UI_MAP_X_MAP_ART, "SELECT MAX(ID) + 1 FROM ui_map_x_map_art", CONNECTION_SYNCH); - // UiSplashScreen.db2 - PrepareStatement(HOTFIX_SEL_UI_SPLASH_SCREEN, "SELECT ID, Header, TopLeftFeatureTitle, TopLeftFeatureDesc, BottomLeftFeatureTitle, " - "BottomLeftFeatureDesc, RightFeatureTitle, RightFeatureDesc, AllianceQuestID, HordeQuestID, ScreenType, TextureKitID, SoundKitID, " - "PlayerConditionID, CharLevelConditionID, RequiredTimeEventPassed FROM ui_splash_screen WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); - PREPARE_MAX_ID_STMT(HOTFIX_SEL_UI_SPLASH_SCREEN, "SELECT MAX(ID) + 1 FROM ui_splash_screen", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_UI_SPLASH_SCREEN, "SELECT ID, Header_lang, TopLeftFeatureTitle_lang, TopLeftFeatureDesc_lang, " - "BottomLeftFeatureTitle_lang, BottomLeftFeatureDesc_lang, RightFeatureTitle_lang, RightFeatureDesc_lang FROM ui_splash_screen_locale" - " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); - // UnitCondition.db2 PrepareStatement(HOTFIX_SEL_UNIT_CONDITION, "SELECT ID, Flags, Variable1, Variable2, Variable3, Variable4, Variable5, Variable6, Variable7, " "Variable8, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8 FROM unit_condition" @@ -1914,8 +1831,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() // Vehicle.db2 PrepareStatement(HOTFIX_SEL_VEHICLE, "SELECT ID, Flags, FlagsB, TurnSpeed, PitchSpeed, PitchMin, PitchMax, MouseLookOffsetPitch, " "CameraFadeDistScalarMin, CameraFadeDistScalarMax, CameraPitchOffset, FacingLimitRight, FacingLimitLeft, CameraYawOffset, " - "VehicleUIIndicatorID, MissileTargetingID, VehiclePOITypeID, SeatID1, SeatID2, SeatID3, SeatID4, SeatID5, SeatID6, SeatID7, SeatID8, " - "PowerDisplayID1, PowerDisplayID2, PowerDisplayID3 FROM vehicle WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "VehicleUIIndicatorID, MissileTargetingID, VehiclePOITypeID, UiLocomotionType, SeatID1, SeatID2, SeatID3, SeatID4, SeatID5, SeatID6, SeatID7, " + "SeatID8, PowerDisplayID1, PowerDisplayID2, PowerDisplayID3 FROM vehicle WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_VEHICLE, "SELECT MAX(ID) + 1 FROM vehicle", CONNECTION_SYNCH); // VehicleSeat.db2 @@ -1925,9 +1842,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() "ExitPreDelay, ExitSpeed, ExitGravity, ExitMinDuration, ExitMaxDuration, ExitMinArcHeight, ExitMaxArcHeight, ExitAnimStart, ExitAnimLoop, " "ExitAnimEnd, VehicleEnterAnim, VehicleEnterAnimBone, VehicleExitAnim, VehicleExitAnimBone, VehicleRideAnimLoop, VehicleRideAnimLoopBone, " "PassengerAttachmentID, PassengerYaw, PassengerPitch, PassengerRoll, VehicleEnterAnimDelay, VehicleExitAnimDelay, VehicleAbilityDisplay, " - "EnterUISoundID, ExitUISoundID, UiSkinFileDataID, CameraEnteringDelay, CameraEnteringDuration, CameraExitingDelay, CameraExitingDuration, " - "CameraPosChaseRate, CameraFacingChaseRate, CameraEnteringZoom, CameraSeatZoomMin, CameraSeatZoomMax, EnterAnimKitID, RideAnimKitID, " - "ExitAnimKitID, VehicleEnterAnimKitID, VehicleRideAnimKitID, VehicleExitAnimKitID, CameraModeID FROM vehicle_seat" + "EnterUISoundID, ExitUISoundID, UiSkinFileDataID, UiSkin, CameraEnteringDelay, CameraEnteringDuration, CameraExitingDelay, " + "CameraExitingDuration, CameraPosChaseRate, CameraFacingChaseRate, CameraEnteringZoom, CameraSeatZoomMin, CameraSeatZoomMax, EnterAnimKitID, " + "RideAnimKitID, ExitAnimKitID, VehicleEnterAnimKitID, VehicleRideAnimKitID, VehicleExitAnimKitID, CameraModeID FROM vehicle_seat" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_VEHICLE_SEAT, "SELECT MAX(ID) + 1 FROM vehicle_seat", CONNECTION_SYNCH); diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h index 2df1c260a97..ed9752af0d4 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.h +++ b/src/server/database/Database/Implementation/HotfixDatabase.h @@ -62,6 +62,7 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_AREA_TRIGGER, HOTFIX_SEL_AREA_TRIGGER_MAX_ID, + HOTFIX_SEL_AREA_TRIGGER_LOCALE, HOTFIX_SEL_ARMOR_LOCATION, HOTFIX_SEL_ARMOR_LOCATION_MAX_ID, @@ -141,9 +142,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_AZERITE_TIER_UNLOCK_SET, HOTFIX_SEL_AZERITE_TIER_UNLOCK_SET_MAX_ID, - HOTFIX_SEL_AZERITE_UNLOCK_MAPPING, - HOTFIX_SEL_AZERITE_UNLOCK_MAPPING_MAX_ID, - HOTFIX_SEL_BANK_BAG_SLOT_PRICES, HOTFIX_SEL_BANK_BAG_SLOT_PRICES_MAX_ID, @@ -179,9 +177,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_BROADCAST_TEXT_MAX_ID, HOTFIX_SEL_BROADCAST_TEXT_LOCALE, - HOTFIX_SEL_BROADCAST_TEXT_DURATION, - HOTFIX_SEL_BROADCAST_TEXT_DURATION_MAX_ID, - HOTFIX_SEL_CFG_CATEGORIES, HOTFIX_SEL_CFG_CATEGORIES_MAX_ID, HOTFIX_SEL_CFG_CATEGORIES_LOCALE, @@ -189,9 +184,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_CFG_REGIONS, HOTFIX_SEL_CFG_REGIONS_MAX_ID, - HOTFIX_SEL_CHALLENGE_MODE_ITEM_BONUS_OVERRIDE, - HOTFIX_SEL_CHALLENGE_MODE_ITEM_BONUS_OVERRIDE_MAX_ID, - HOTFIX_SEL_CHAR_TITLES, HOTFIX_SEL_CHAR_TITLES_MAX_ID, HOTFIX_SEL_CHAR_TITLES_LOCALE, @@ -266,18 +258,9 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_CONTENT_TUNING, HOTFIX_SEL_CONTENT_TUNING_MAX_ID, - HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED, - HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED_MAX_ID, - - HOTFIX_SEL_CONTENT_TUNING_X_LABEL, - HOTFIX_SEL_CONTENT_TUNING_X_LABEL_MAX_ID, - HOTFIX_SEL_CONVERSATION_LINE, HOTFIX_SEL_CONVERSATION_LINE_MAX_ID, - HOTFIX_SEL_CORRUPTION_EFFECTS, - HOTFIX_SEL_CORRUPTION_EFFECTS_MAX_ID, - HOTFIX_SEL_CREATURE_DISPLAY_INFO, HOTFIX_SEL_CREATURE_DISPLAY_INFO_MAX_ID, @@ -421,9 +404,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_GEM_PROPERTIES, HOTFIX_SEL_GEM_PROPERTIES_MAX_ID, - HOTFIX_SEL_GLOBAL_CURVE, - HOTFIX_SEL_GLOBAL_CURVE_MAX_ID, - HOTFIX_SEL_GLYPH_BINDABLE_SPELL, HOTFIX_SEL_GLYPH_BINDABLE_SPELL_MAX_ID, @@ -489,15 +469,9 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_ITEM_BONUS, HOTFIX_SEL_ITEM_BONUS_MAX_ID, - HOTFIX_SEL_ITEM_BONUS_LIST_GROUP_ENTRY, - HOTFIX_SEL_ITEM_BONUS_LIST_GROUP_ENTRY_MAX_ID, - HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA, HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA_MAX_ID, - HOTFIX_SEL_ITEM_BONUS_TREE, - HOTFIX_SEL_ITEM_BONUS_TREE_MAX_ID, - HOTFIX_SEL_ITEM_BONUS_TREE_NODE, HOTFIX_SEL_ITEM_BONUS_TREE_NODE_MAX_ID, @@ -591,9 +565,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_ITEM_X_BONUS_TREE, HOTFIX_SEL_ITEM_X_BONUS_TREE_MAX_ID, - HOTFIX_SEL_ITEM_X_ITEM_EFFECT, - HOTFIX_SEL_ITEM_X_ITEM_EFFECT_MAX_ID, - HOTFIX_SEL_JOURNAL_ENCOUNTER, HOTFIX_SEL_JOURNAL_ENCOUNTER_MAX_ID, HOTFIX_SEL_JOURNAL_ENCOUNTER_LOCALE, @@ -657,9 +628,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_MAP_DIFFICULTY_X_CONDITION_MAX_ID, HOTFIX_SEL_MAP_DIFFICULTY_X_CONDITION_LOCALE, - HOTFIX_SEL_MAW_POWER, - HOTFIX_SEL_MAW_POWER_MAX_ID, - HOTFIX_SEL_MODIFIER_TREE, HOTFIX_SEL_MODIFIER_TREE_MAX_ID, @@ -729,10 +697,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_PVP_ITEM, HOTFIX_SEL_PVP_ITEM_MAX_ID, - HOTFIX_SEL_PVP_STAT, - HOTFIX_SEL_PVP_STAT_MAX_ID, - HOTFIX_SEL_PVP_STAT_LOCALE, - HOTFIX_SEL_PVP_SEASON, HOTFIX_SEL_PVP_SEASON_MAX_ID, @@ -818,7 +782,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_SKILL_LINE_ABILITY, HOTFIX_SEL_SKILL_LINE_ABILITY_MAX_ID, - HOTFIX_SEL_SKILL_LINE_ABILITY_LOCALE, HOTFIX_SEL_SKILL_LINE_X_TRAIT_TREE, HOTFIX_SEL_SKILL_LINE_X_TRAIT_TREE_MAX_ID, @@ -826,9 +789,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_SKILL_RACE_CLASS_INFO, HOTFIX_SEL_SKILL_RACE_CLASS_INFO_MAX_ID, - HOTFIX_SEL_SOULBIND_CONDUIT_RANK, - HOTFIX_SEL_SOULBIND_CONDUIT_RANK_MAX_ID, - HOTFIX_SEL_SOUND_KIT, HOTFIX_SEL_SOUND_KIT_MAX_ID, @@ -1064,9 +1024,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_TRAIT_TREE_X_TRAIT_CURRENCY, HOTFIX_SEL_TRAIT_TREE_X_TRAIT_CURRENCY_MAX_ID, - HOTFIX_SEL_TRANSMOG_ILLUSION, - HOTFIX_SEL_TRANSMOG_ILLUSION_MAX_ID, - HOTFIX_SEL_TRANSMOG_SET, HOTFIX_SEL_TRANSMOG_SET_MAX_ID, HOTFIX_SEL_TRANSMOG_SET_LOCALE, @@ -1097,10 +1054,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_UI_MAP_X_MAP_ART, HOTFIX_SEL_UI_MAP_X_MAP_ART_MAX_ID, - HOTFIX_SEL_UI_SPLASH_SCREEN, - HOTFIX_SEL_UI_SPLASH_SCREEN_MAX_ID, - HOTFIX_SEL_UI_SPLASH_SCREEN_LOCALE, - HOTFIX_SEL_UNIT_CONDITION, HOTFIX_SEL_UNIT_CONDITION_MAX_ID, diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 64dd27d18e0..048c57c5c84 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -111,13 +111,6 @@ bool AchievementMgr::CanUpdateCriteriaTree(Criteria const* criteria, CriteriaTre if (referencePlayer->GetSession()->HasPermission(rbac::RBAC_PERM_CANNOT_EARN_REALM_FIRST_ACHIEVEMENTS)) return false; - if (achievement->CovenantID && referencePlayer->m_playerData->CovenantID != achievement->CovenantID) - { - TC_LOG_TRACE("criteria.achievement", "AchievementMgr::CanUpdateCriteriaTree: (Id: {} Type {} Achievement {}) Wrong covenant", - criteria->ID, CriteriaMgr::GetCriteriaTypeString(criteria->Entry->Type), achievement->ID); - return false; - } - return CriteriaHandler::CanUpdateCriteriaTree(criteria, tree, referencePlayer); } diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 8e6d7a84bba..00a5ce547c2 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -2159,8 +2159,8 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 FriendshipReputationEntry const* friendshipReputation = sFriendshipReputationStore.LookupEntry(friendshipRepReaction->FriendshipRepID); if (!friendshipReputation) return false; - if (referencePlayer->GetReputation(friendshipReputation->FactionID) < int32(friendshipRepReaction->ReactionThreshold)) - return false; + //if (referencePlayer->GetReputation(friendshipReputation->FactionID) < int32(friendshipRepReaction->ReactionThreshold)) + // return false; break; } case ModifierTreeType::ReputationWithFactionIsEqualOrGreaterThan: // 95 @@ -3348,6 +3348,10 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 DB2Manager::FriendshipRepReactionSet const* friendshipReactions = sDB2Manager.GetFriendshipRepReactions(reqValue); if (!friendshipReactions) return false; + + return false; + + /* uint32 rank = referencePlayer->GetReputationRank(friendshipReputation->FactionID); if (rank >= friendshipReactions->size()) return false; @@ -3355,6 +3359,7 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 std::advance(itr, rank); if ((*itr)->ID != reqValue) return false; + */ break; } case ModifierTreeType::PlayerAuraStackCountEqual: // 255 diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp index e4b0d7b4d2c..562e688dd24 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp @@ -115,9 +115,7 @@ struct SpellInfoVisitor using value_type = SpellInfo const*; value_type operator()(Hyperlink<apower> artifactPower) const { return operator()(artifactPower->ArtifactPower->SpellID); } - value_type operator()(Hyperlink<conduit> soulbindConduit) const { return operator()((*soulbindConduit)->SpellID); } value_type operator()(Hyperlink<enchant> enchant) const { return enchant; } - value_type operator()(Hyperlink<mawpower> mawPower) const { return operator()((*mawPower)->SpellID); } value_type operator()(Hyperlink<mount> const& mount) const { return mount->Spell; } value_type operator()(Hyperlink<pvptal> pvpTalent) const { return operator()((*pvpTalent)->SpellID); } value_type operator()(Hyperlink<spell> spell) const { return spell->Spell; } @@ -128,7 +126,7 @@ struct SpellInfoVisitor }; ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo<SpellInfo const*>::TryConsume(SpellInfo const*& data, ChatHandler const* handler, std::string_view args) { - Variant<Hyperlink<apower>, Hyperlink<conduit>, Hyperlink<enchant>, Hyperlink<mawpower>, Hyperlink<mount>, Hyperlink<pvptal>, Hyperlink<spell>, Hyperlink<talent>, Hyperlink<trade>, uint32> val; + Variant<Hyperlink<apower>, Hyperlink<enchant>, Hyperlink<mount>, Hyperlink<pvptal>, Hyperlink<spell>, Hyperlink<talent>, Hyperlink<trade>, uint32> val; ChatCommandResult result = ArgInfo<decltype(val)>::TryConsume(val, handler, args); if (!result || (data = val.visit(SpellInfoVisitor()))) return result; diff --git a/src/server/game/Chat/HyperlinkTags.cpp b/src/server/game/Chat/HyperlinkTags.cpp index 64ce77b3f2d..58a16880de7 100644 --- a/src/server/game/Chat/HyperlinkTags.cpp +++ b/src/server/game/Chat/HyperlinkTags.cpp @@ -154,15 +154,6 @@ bool Trinity::Hyperlinks::LinkTags::battlePetAbil::StoreTo(BattlePetAbilLinkData && t.IsEmpty(); } -bool Trinity::Hyperlinks::LinkTags::conduit::StoreTo(SoulbindConduitRankEntry const*& val, std::string_view text) -{ - HyperlinkDataTokenizer t(text); - uint32 soulbindConduitId, rank; - if (!(t.TryConsumeTo(soulbindConduitId) && t.TryConsumeTo(rank) && t.IsEmpty())) - return false; - return !!(val = sDB2Manager.GetSoulbindConduitRank(soulbindConduitId, rank)); -} - bool Trinity::Hyperlinks::LinkTags::currency::StoreTo(CurrencyLinkData& val, std::string_view text) { HyperlinkDataTokenizer t(text); @@ -406,15 +397,6 @@ bool Trinity::Hyperlinks::LinkTags::keystone::StoreTo(KeystoneLinkData& val, std return true; } -bool Trinity::Hyperlinks::LinkTags::mawpower::StoreTo(MawPowerEntry const*& val, std::string_view text) -{ - HyperlinkDataTokenizer t(text); - uint32 mawPowerId; - if (!t.TryConsumeTo(mawPowerId)) - return false; - return !!(val = sMawPowerStore.LookupEntry(mawPowerId)) && t.IsEmpty(); -} - bool Trinity::Hyperlinks::LinkTags::mount::StoreTo(MountLinkData& val, std::string_view text) { HyperlinkDataTokenizer t(text); @@ -502,16 +484,6 @@ bool Trinity::Hyperlinks::LinkTags::transmogappearance::StoreTo(ItemModifiedAppe return !!(val = sItemModifiedAppearanceStore.LookupEntry(itemModifiedAppearanceId)) && t.IsEmpty(); } -bool Trinity::Hyperlinks::LinkTags::transmogillusion::StoreTo(SpellItemEnchantmentEntry const*& val, std::string_view text) -{ - HyperlinkDataTokenizer t(text); - uint32 spellItemEnchantmentId; - if (!t.TryConsumeTo(spellItemEnchantmentId)) - return false; - return !!(val = sSpellItemEnchantmentStore.LookupEntry(spellItemEnchantmentId)) - && sDB2Manager.GetTransmogIllusionForEnchantment(spellItemEnchantmentId) && t.IsEmpty(); -} - bool Trinity::Hyperlinks::LinkTags::transmogset::StoreTo(TransmogSetEntry const*& val, std::string_view text) { HyperlinkDataTokenizer t(text); diff --git a/src/server/game/Chat/Hyperlinks.cpp b/src/server/game/Chat/Hyperlinks.cpp index 2d991fd05bf..d15a17f2c6d 100644 --- a/src/server/game/Chat/Hyperlinks.cpp +++ b/src/server/game/Chat/Hyperlinks.cpp @@ -234,22 +234,6 @@ struct LinkValidator<LinkTags::battlePetAbil> }; template <> -struct LinkValidator<LinkTags::conduit> -{ - static bool IsTextValid(SoulbindConduitRankEntry const* rank, std::string_view text) - { - if (SpellInfo const* info = sSpellMgr->GetSpellInfo(rank->SpellID, DIFFICULTY_NONE)) - return LinkValidator<LinkTags::spell>::IsTextValid(info, text); - return false; - } - - static bool IsColorValid(SoulbindConduitRankEntry const*, HyperlinkColor c) - { - return c == CHAT_LINK_COLOR_SPELL; - } -}; - -template <> struct LinkValidator<LinkTags::currency> { static bool IsTextValid(CurrencyLinkData const& data, std::string_view text) @@ -498,22 +482,6 @@ struct LinkValidator<LinkTags::quest> }; template <> -struct LinkValidator<LinkTags::mawpower> -{ - static bool IsTextValid(MawPowerEntry const* mawPower, std::string_view text) - { - if (SpellInfo const* info = sSpellMgr->GetSpellInfo(mawPower->SpellID, DIFFICULTY_NONE)) - return LinkValidator<LinkTags::spell>::IsTextValid(info, text); - return false; - } - - static bool IsColorValid(MawPowerEntry const*, HyperlinkColor c) - { - return c == CHAT_LINK_COLOR_SPELL; - } -}; - -template <> struct LinkValidator<LinkTags::mount> { static bool IsTextValid(MountLinkData const& data, std::string_view text) @@ -604,26 +572,6 @@ struct LinkValidator<LinkTags::transmogappearance> }; template <> -struct LinkValidator<LinkTags::transmogillusion> -{ - static bool IsTextValid(SpellItemEnchantmentEntry const* enchantment, std::string_view text) - { - for (LocaleConstant i = LOCALE_enUS; i < TOTAL_LOCALES; i = LocaleConstant(i + 1)) - if (enchantment->Name[i] == text) - return true; - for (LocaleConstant i = LOCALE_enUS; i < TOTAL_LOCALES; i = LocaleConstant(i + 1)) - if (enchantment->HordeName[i] == text) - return true; - return false; - } - - static bool IsColorValid(SpellItemEnchantmentEntry const*, HyperlinkColor c) - { - return c == CHAT_LINK_COLOR_TRANSMOG; - } -}; - -template <> struct LinkValidator<LinkTags::transmogset> { static bool IsTextValid(TransmogSetEntry const* set, std::string_view text) @@ -698,7 +646,6 @@ static bool ValidateLinkInfo(HyperlinkInfo const& info) TryValidateAs(battlePetAbil); TryValidateAs(clubFinder); TryValidateAs(clubTicket); - TryValidateAs(conduit); TryValidateAs(creature); TryValidateAs(creature_entry); TryValidateAs(currency); @@ -715,7 +662,6 @@ static bool ValidateLinkInfo(HyperlinkInfo const& info) TryValidateAs(itemset); TryValidateAs(journal); TryValidateAs(keystone); - TryValidateAs(mawpower); TryValidateAs(mount); TryValidateAs(outfit); TryValidateAs(player); @@ -730,7 +676,6 @@ static bool ValidateLinkInfo(HyperlinkInfo const& info) TryValidateAs(title); TryValidateAs(trade); TryValidateAs(transmogappearance); - TryValidateAs(transmogillusion); TryValidateAs(transmogset); TryValidateAs(worldmap); return false; diff --git a/src/server/game/Chat/Hyperlinks.h b/src/server/game/Chat/Hyperlinks.h index 8adb96187f9..d25d796b55a 100644 --- a/src/server/game/Chat/Hyperlinks.h +++ b/src/server/game/Chat/Hyperlinks.h @@ -42,11 +42,9 @@ struct ItemTemplate; struct LocalizedString; struct MapEntry; struct MapChallengeModeEntry; -struct MawPowerEntry; struct PvpTalentEntry; class Quest; struct SkillLineEntry; -struct SoulbindConduitRankEntry; class SpellInfo; struct SpellItemEnchantmentEntry; struct TalentEntry; @@ -368,13 +366,6 @@ namespace Trinity::Hyperlinks static bool StoreTo(BattlePetAbilLinkData& val, std::string_view text); }; - struct TC_GAME_API conduit - { - using value_type = SoulbindConduitRankEntry const*; - static constexpr std::string_view tag() { return "conduit"; } - static bool StoreTo(SoulbindConduitRankEntry const*& val, std::string_view text); - }; - struct TC_GAME_API currency { using value_type = CurrencyLinkData const&; @@ -445,13 +436,6 @@ namespace Trinity::Hyperlinks static bool StoreTo(KeystoneLinkData& val, std::string_view text); }; - struct TC_GAME_API mawpower - { - using value_type = MawPowerEntry const*; - static constexpr std::string_view tag() { return "mawpower"; } - static bool StoreTo(MawPowerEntry const*& val, std::string_view text); - }; - struct TC_GAME_API mount { using value_type = MountLinkData const&; @@ -508,13 +492,6 @@ namespace Trinity::Hyperlinks static bool StoreTo(ItemModifiedAppearanceEntry const*& val, std::string_view text); }; - struct TC_GAME_API transmogillusion - { - using value_type = SpellItemEnchantmentEntry const*; - static constexpr std::string_view tag() { return "transmogillusion"; } - static bool StoreTo(SpellItemEnchantmentEntry const*& val, std::string_view text); - }; - struct TC_GAME_API transmogset { using value_type = TransmogSetEntry const*; diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 48d22c458f4..4dd0aeec1e5 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -2824,31 +2824,6 @@ uint32 ConditionMgr::GetPlayerConditionLfgValue(Player const* player, PlayerCond bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditionEntry const* condition) { - if (Optional<ContentTuningLevels> levels = sDB2Manager.GetContentTuningData(condition->ContentTuningID, player->m_playerData->CtrOptions->ContentTuningConditionMask)) - { - uint8 minLevel = condition->Flags & 0x800 ? levels->MinLevelWithDelta : levels->MinLevel; - uint8 maxLevel = 0; - if (!(condition->Flags & 0x20)) - maxLevel = condition->Flags & 0x800 ? levels->MaxLevelWithDelta : levels->MaxLevel; - - if (condition->Flags & 0x80) - { - if (minLevel && player->GetLevel() >= minLevel && (!maxLevel || player->GetLevel() <= maxLevel)) - return false; - - if (maxLevel && player->GetLevel() <= maxLevel && (!minLevel || player->GetLevel() >= minLevel)) - return false; - } - else - { - if (minLevel && player->GetLevel() < minLevel) - return false; - - if (maxLevel && player->GetLevel() > maxLevel) - return false; - } - } - if (!condition->RaceMask.IsEmpty() && !condition->RaceMask.HasRace(player->GetRace())) return false; @@ -3243,49 +3218,6 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->ModifierTreeID && !player->ModifierTreeSatisfied(condition->ModifierTreeID)) return false; - if (condition->CovenantID && player->m_playerData->CovenantID != condition->CovenantID) - return false; - - if (std::any_of(condition->TraitNodeEntryID.begin(), condition->TraitNodeEntryID.end(), [](int32 traitNodeEntryId) { return traitNodeEntryId != 0; })) - { - auto getTraitNodeEntryRank = [player](int32 traitNodeEntryId) -> Optional<uint16> - { - for (UF::TraitConfig const& traitConfig : player->m_activePlayerData->TraitConfigs) - { - if (TraitConfigType(*traitConfig.Type) == TraitConfigType::Combat) - { - if (int32(*player->m_activePlayerData->ActiveCombatTraitConfigID) != traitConfig.ID - || !EnumFlag(TraitCombatConfigFlags(*traitConfig.CombatConfigFlags)).HasFlag(TraitCombatConfigFlags::ActiveForSpec)) - continue; - } - - for (UF::TraitEntry const& traitEntry : traitConfig.Entries) - if (traitEntry.TraitNodeEntryID == traitNodeEntryId) - return traitEntry.Rank; - } - return {}; - }; - - std::array<bool, std::tuple_size_v<decltype(condition->TraitNodeEntryID)>> results; - results.fill(true); - for (std::size_t i = 0; i < condition->TraitNodeEntryID.size(); ++i) - { - if (!condition->TraitNodeEntryID[i]) - continue; - - Optional<int32> rank = getTraitNodeEntryRank(condition->TraitNodeEntryID[i]); - if (!rank) - results[i] = false; - else if (condition->TraitNodeEntryMinRank[i] && rank < condition->TraitNodeEntryMinRank[i]) - results[i] = false; - else if (condition->TraitNodeEntryMaxRank[i] && rank > condition->TraitNodeEntryMaxRank[i]) - results[i] = false; - } - - if (!PlayerConditionLogic(condition->TraitNodeEntryLogic, results)) - return false; - } - return true; } diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index d051c0fa472..d8347263cce 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -26,7 +26,7 @@ struct AchievementLoadInfo { - static constexpr DB2FieldMeta Fields[17] = + static constexpr DB2FieldMeta Fields[15] = { { false, FT_STRING, "Description" }, { false, FT_STRING, "Title" }, @@ -41,13 +41,11 @@ struct AchievementLoadInfo { true, FT_INT, "Flags" }, { true, FT_SHORT, "UiOrder" }, { true, FT_INT, "IconFileID" }, - { true, FT_INT, "RewardItemID" }, { false, FT_INT, "CriteriaTree" }, { true, FT_SHORT, "SharesCriteria" }, - { true, FT_INT, "CovenantID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 17, &AchievementMeta::Instance, HOTFIX_SEL_ACHIEVEMENT }; + static constexpr DB2LoadInfo Instance{ Fields, 15, &AchievementMeta::Instance, HOTFIX_SEL_ACHIEVEMENT }; }; struct AchievementCategoryLoadInfo @@ -79,14 +77,14 @@ struct AdventureJournalLoadInfo { false, FT_BYTE, "ButtonActionType" }, { true, FT_INT, "TextureFileDataID" }, { false, FT_SHORT, "LfgDungeonID" }, - { true, FT_INT, "QuestID" }, + { false, FT_INT, "QuestID" }, { false, FT_SHORT, "BattleMasterListID" }, { false, FT_BYTE, "PriorityMin" }, { false, FT_BYTE, "PriorityMax" }, { true, FT_INT, "ItemID" }, { false, FT_INT, "ItemQuantity" }, { false, FT_SHORT, "CurrencyType" }, - { false, FT_INT, "CurrencyQuantity" }, + { false, FT_BYTE, "CurrencyQuantity" }, { false, FT_SHORT, "UiMapID" }, { false, FT_INT, "BonusPlayerConditionID1" }, { false, FT_INT, "BonusPlayerConditionID2" }, @@ -176,6 +174,7 @@ struct AreaTableLoadInfo { false, FT_SHORT, "UwAmbience" }, { false, FT_SHORT, "ZoneMusic" }, { false, FT_SHORT, "UwZoneMusic" }, + { true, FT_BYTE, "ExplorationLevel" }, { false, FT_SHORT, "IntroSound" }, { false, FT_INT, "UwIntroSound" }, { false, FT_BYTE, "FactionGroupMask" }, @@ -185,7 +184,6 @@ struct AreaTableLoadInfo { false, FT_BYTE, "WildBattlePetLevelMin" }, { false, FT_BYTE, "WildBattlePetLevelMax" }, { false, FT_BYTE, "WindSettingsID" }, - { true, FT_INT, "ContentTuningID" }, { true, FT_INT, "Flags1" }, { true, FT_INT, "Flags2" }, { false, FT_SHORT, "LiquidTypeID1" }, @@ -199,8 +197,9 @@ struct AreaTableLoadInfo struct AreaTriggerLoadInfo { - static constexpr DB2FieldMeta Fields[17] = + static constexpr DB2FieldMeta Fields[18] = { + { false, FT_STRING, "Message" }, { false, FT_FLOAT, "PosX" }, { false, FT_FLOAT, "PosY" }, { false, FT_FLOAT, "PosZ" }, @@ -216,11 +215,11 @@ struct AreaTriggerLoadInfo { false, FT_FLOAT, "BoxYaw" }, { true, FT_BYTE, "ShapeType" }, { true, FT_SHORT, "ShapeID" }, - { true, FT_INT, "AreaTriggerActionSetID" }, + { true, FT_SHORT, "AreaTriggerActionSetID" }, { true, FT_BYTE, "Flags" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 17, &AreaTriggerMeta::Instance, HOTFIX_SEL_AREA_TRIGGER }; + static constexpr DB2LoadInfo Instance{ Fields, 18, &AreaTriggerMeta::Instance, HOTFIX_SEL_AREA_TRIGGER }; }; struct ArmorLocationLoadInfo @@ -260,7 +259,7 @@ struct ArtifactLoadInfo struct ArtifactAppearanceLoadInfo { - static constexpr DB2FieldMeta Fields[16] = + static constexpr DB2FieldMeta Fields[15] = { { false, FT_STRING, "Name" }, { false, FT_INT, "ID" }, @@ -277,10 +276,9 @@ struct ArtifactAppearanceLoadInfo { false, FT_INT, "UiAltItemAppearanceID" }, { false, FT_BYTE, "Flags" }, { false, FT_SHORT, "UiCameraID" }, - { false, FT_INT, "UsablePlayerConditionID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 16, &ArtifactAppearanceMeta::Instance, HOTFIX_SEL_ARTIFACT_APPEARANCE }; + static constexpr DB2LoadInfo Instance{ Fields, 15, &ArtifactAppearanceMeta::Instance, HOTFIX_SEL_ARTIFACT_APPEARANCE }; }; struct ArtifactAppearanceSetLoadInfo @@ -547,7 +545,7 @@ struct AzeritePowerSetMemberLoadInfo { true, FT_INT, "AzeritePowerSetID" }, { true, FT_INT, "AzeritePowerID" }, { true, FT_INT, "Class" }, - { true, FT_BYTE, "Tier" }, + { false, FT_BYTE, "Tier" }, { true, FT_INT, "OrderIndex" }, }; @@ -579,21 +577,6 @@ struct AzeriteTierUnlockSetLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 2, &AzeriteTierUnlockSetMeta::Instance, HOTFIX_SEL_AZERITE_TIER_UNLOCK_SET }; }; -struct AzeriteUnlockMappingLoadInfo -{ - static constexpr DB2FieldMeta Fields[6] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "ItemLevel" }, - { true, FT_INT, "ItemBonusListHead" }, - { true, FT_INT, "ItemBonusListShoulders" }, - { true, FT_INT, "ItemBonusListChest" }, - { false, FT_INT, "AzeriteUnlockMappingSetID" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 6, &AzeriteUnlockMappingMeta::Instance, HOTFIX_SEL_AZERITE_UNLOCK_MAPPING }; -}; - struct BankBagSlotPricesLoadInfo { static constexpr DB2FieldMeta Fields[2] = @@ -622,9 +605,9 @@ struct BarberShopStyleLoadInfo { static constexpr DB2FieldMeta Fields[8] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "DisplayName" }, { false, FT_STRING, "Description" }, + { false, FT_INT, "ID" }, { false, FT_BYTE, "Type" }, { false, FT_FLOAT, "CostModifier" }, { false, FT_BYTE, "Race" }, @@ -654,15 +637,14 @@ struct BattlePetAbilityLoadInfo struct BattlePetBreedQualityLoadInfo { - static constexpr DB2FieldMeta Fields[4] = + static constexpr DB2FieldMeta Fields[3] = { { false, FT_INT, "ID" }, - { true, FT_INT, "MaxQualityRoll" }, { false, FT_FLOAT, "StateMultiplier" }, { true, FT_BYTE, "QualityEnum" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 4, &BattlePetBreedQualityMeta::Instance, HOTFIX_SEL_BATTLE_PET_BREED_QUALITY }; + static constexpr DB2LoadInfo Instance{ Fields, 3, &BattlePetBreedQualityMeta::Instance, HOTFIX_SEL_BATTLE_PET_BREED_QUALITY }; }; struct BattlePetBreedStateLoadInfo @@ -670,7 +652,7 @@ struct BattlePetBreedStateLoadInfo static constexpr DB2FieldMeta Fields[4] = { { false, FT_INT, "ID" }, - { true, FT_INT, "BattlePetStateID" }, + { false, FT_BYTE, "BattlePetStateID" }, { false, FT_SHORT, "Value" }, { false, FT_INT, "BattlePetBreedID" }, }; @@ -680,7 +662,7 @@ struct BattlePetBreedStateLoadInfo struct BattlePetSpeciesLoadInfo { - static constexpr DB2FieldMeta Fields[12] = + static constexpr DB2FieldMeta Fields[11] = { { false, FT_STRING, "Description" }, { false, FT_STRING, "SourceText" }, @@ -688,15 +670,14 @@ struct BattlePetSpeciesLoadInfo { true, FT_INT, "CreatureID" }, { true, FT_INT, "SummonSpellID" }, { true, FT_INT, "IconFileDataID" }, - { true, FT_BYTE, "PetTypeEnum" }, + { false, FT_BYTE, "PetTypeEnum" }, { true, FT_INT, "Flags" }, { true, FT_BYTE, "SourceTypeEnum" }, { true, FT_INT, "CardUIModelSceneID" }, { true, FT_INT, "LoadoutUIModelSceneID" }, - { true, FT_INT, "CovenantID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 12, &BattlePetSpeciesMeta::Instance, HOTFIX_SEL_BATTLE_PET_SPECIES }; + static constexpr DB2LoadInfo Instance{ Fields, 11, &BattlePetSpeciesMeta::Instance, HOTFIX_SEL_BATTLE_PET_SPECIES }; }; struct BattlePetSpeciesStateLoadInfo @@ -704,7 +685,7 @@ struct BattlePetSpeciesStateLoadInfo static constexpr DB2FieldMeta Fields[4] = { { false, FT_INT, "ID" }, - { false, FT_SHORT, "BattlePetStateID" }, + { false, FT_BYTE, "BattlePetStateID" }, { true, FT_INT, "Value" }, { false, FT_INT, "BattlePetSpeciesID" }, }; @@ -730,7 +711,7 @@ struct BattlemasterListLoadInfo { true, FT_BYTE, "GroupsAllowed" }, { true, FT_BYTE, "MaxGroupSize" }, { true, FT_SHORT, "HolidayWorldState" }, - { true, FT_INT, "Flags" }, + { true, FT_BYTE, "Flags" }, { true, FT_INT, "IconFileDataID" }, { true, FT_INT, "RequiredPlayerConditionID" }, { true, FT_SHORT, "MapID1" }, @@ -780,19 +761,6 @@ struct BroadcastTextLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 17, &BroadcastTextMeta::Instance, HOTFIX_SEL_BROADCAST_TEXT }; }; -struct BroadcastTextDurationLoadInfo -{ - static constexpr DB2FieldMeta Fields[4] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "BroadcastTextID" }, - { true, FT_INT, "Locale" }, - { true, FT_INT, "Duration" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 4, &BroadcastTextDurationMeta::Instance, HOTFIX_SEL_BROADCAST_TEXT_DURATION }; -}; - struct CfgCategoriesLoadInfo { static constexpr DB2FieldMeta Fields[7] = @@ -824,23 +792,6 @@ struct CfgRegionsLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 6, &Cfg_RegionsMeta::Instance, HOTFIX_SEL_CFG_REGIONS }; }; -struct ChallengeModeItemBonusOverrideLoadInfo -{ - static constexpr DB2FieldMeta Fields[8] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "ItemBonusTreeGroupID" }, - { true, FT_INT, "DstItemBonusTreeID" }, - { true, FT_BYTE, "Type" }, - { true, FT_INT, "Value" }, - { true, FT_INT, "MythicPlusSeasonID" }, - { true, FT_INT, "PvPSeasonID" }, - { false, FT_INT, "SrcItemBonusTreeID" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 8, &ChallengeModeItemBonusOverrideMeta::Instance, HOTFIX_SEL_CHALLENGE_MODE_ITEM_BONUS_OVERRIDE }; -}; - struct CharTitlesLoadInfo { static constexpr DB2FieldMeta Fields[5] = @@ -859,8 +810,8 @@ struct CharacterLoadoutLoadInfo { static constexpr DB2FieldMeta Fields[5] = { - { false, FT_INT, "ID" }, { true, FT_LONG, "RaceMask" }, + { false, FT_INT, "ID" }, { true, FT_BYTE, "ChrClassID" }, { true, FT_INT, "Purpose" }, { true, FT_BYTE, "ItemContext" }, @@ -885,9 +836,9 @@ struct ChatChannelsLoadInfo { static constexpr DB2FieldMeta Fields[6] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "Shortcut" }, + { false, FT_INT, "ID" }, { true, FT_INT, "Flags" }, { true, FT_BYTE, "FactionGroup" }, { true, FT_INT, "Ruleset" }, @@ -911,50 +862,36 @@ struct ChrClassUiDisplayLoadInfo struct ChrClassesLoadInfo { - static constexpr DB2FieldMeta Fields[39] = + static constexpr DB2FieldMeta Fields[25] = { { false, FT_STRING, "Name" }, { false, FT_STRING_NOT_LOCALIZED, "Filename" }, { false, FT_STRING, "NameMale" }, { false, FT_STRING, "NameFemale" }, { false, FT_STRING_NOT_LOCALIZED, "PetNameToken" }, - { false, FT_STRING, "Description" }, - { false, FT_STRING, "RoleInfoString" }, - { false, FT_STRING, "DisabledString" }, - { false, FT_STRING, "HyphenatedNameMale" }, - { false, FT_STRING, "HyphenatedNameFemale" }, { false, FT_INT, "ID" }, { false, FT_INT, "CreateScreenFileDataID" }, { false, FT_INT, "SelectScreenFileDataID" }, { false, FT_INT, "IconFileDataID" }, { false, FT_INT, "LowResScreenFileDataID" }, { true, FT_INT, "Flags" }, - { false, FT_INT, "SpellTextureBlobFileDataID" }, + { true, FT_INT, "StartingLevel" }, { false, FT_INT, "ArmorTypeMask" }, - { true, FT_INT, "CharStartKitUnknown901" }, - { true, FT_INT, "MaleCharacterCreationVisualFallback" }, - { true, FT_INT, "MaleCharacterCreationIdleVisualFallback" }, - { true, FT_INT, "FemaleCharacterCreationVisualFallback" }, - { true, FT_INT, "FemaleCharacterCreationIdleVisualFallback" }, - { true, FT_INT, "CharacterCreationIdleGroundVisualFallback" }, - { true, FT_INT, "CharacterCreationGroundVisualFallback" }, - { true, FT_INT, "AlteredFormCharacterCreationIdleVisualFallback" }, - { true, FT_INT, "CharacterCreationAnimLoopWaitTimeMsFallback" }, { false, FT_SHORT, "CinematicSequenceID" }, { false, FT_SHORT, "DefaultSpec" }, + { false, FT_BYTE, "HasStrengthAttackBonus" }, { false, FT_BYTE, "PrimaryStatPriority" }, { false, FT_BYTE, "DisplayPower" }, { false, FT_BYTE, "RangedAttackPowerPerAgility" }, { false, FT_BYTE, "AttackPowerPerAgility" }, { false, FT_BYTE, "AttackPowerPerStrength" }, { false, FT_BYTE, "SpellClassSet" }, - { false, FT_BYTE, "ClassColorR" }, - { false, FT_BYTE, "ClassColorG" }, - { false, FT_BYTE, "ClassColorB" }, { false, FT_BYTE, "RolesMask" }, + { false, FT_BYTE, "DamageBonusStat" }, + { false, FT_BYTE, "HasRelicSlot" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 39, &ChrClassesMeta::Instance, HOTFIX_SEL_CHR_CLASSES }; + static constexpr DB2LoadInfo Instance{ Fields, 25, &ChrClassesMeta::Instance, HOTFIX_SEL_CHR_CLASSES }; }; struct ChrClassesXPowerTypesLoadInfo @@ -1030,7 +967,7 @@ struct ChrCustomizationElementLoadInfo struct ChrCustomizationOptionLoadInfo { - static constexpr DB2FieldMeta Fields[13] = + static constexpr DB2FieldMeta Fields[12] = { { false, FT_STRING, "Name" }, { false, FT_INT, "ID" }, @@ -1044,19 +981,18 @@ struct ChrCustomizationOptionLoadInfo { true, FT_INT, "ChrCustomizationID" }, { true, FT_INT, "ChrCustomizationReqID" }, { true, FT_INT, "UiOrderIndex" }, - { true, FT_INT, "AddedInPatch" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 13, &ChrCustomizationOptionMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_OPTION }; + static constexpr DB2LoadInfo Instance{ Fields, 12, &ChrCustomizationOptionMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_OPTION }; }; struct ChrCustomizationReqLoadInfo { static constexpr DB2FieldMeta Fields[9] = { - { false, FT_INT, "ID" }, { true, FT_LONG, "RaceMask" }, { false, FT_STRING, "ReqSource" }, + { false, FT_INT, "ID" }, { true, FT_INT, "Flags" }, { true, FT_INT, "ClassMask" }, { true, FT_INT, "AchievementID" }, @@ -1126,7 +1062,7 @@ struct ChrRaceXChrModelLoadInfo struct ChrRacesLoadInfo { - static constexpr DB2FieldMeta Fields[63] = + static constexpr DB2FieldMeta Fields[68] = { { false, FT_INT, "ID" }, { false, FT_STRING_NOT_LOCALIZED, "ClientPrefix" }, @@ -1145,35 +1081,29 @@ struct ChrRacesLoadInfo { false, FT_STRING, "ShortNameLower" }, { false, FT_STRING, "ShortNameLowerFemale" }, { true, FT_INT, "Flags" }, - { true, FT_INT, "FactionID" }, - { true, FT_INT, "CinematicSequenceID" }, + { false, FT_INT, "MaleDisplayID" }, + { false, FT_INT, "FemaleDisplayID" }, + { false, FT_INT, "HighResMaleDisplayID" }, + { false, FT_INT, "HighResFemaleDisplayID" }, { true, FT_INT, "ResSicknessSpellID" }, { true, FT_INT, "SplashSoundID" }, - { true, FT_INT, "Alliance" }, - { true, FT_INT, "RaceRelated" }, - { true, FT_INT, "UnalteredVisualRaceID" }, - { true, FT_INT, "DefaultClassID" }, { true, FT_INT, "CreateScreenFileDataID" }, { true, FT_INT, "SelectScreenFileDataID" }, - { true, FT_INT, "NeutralRaceID" }, { true, FT_INT, "LowResScreenFileDataID" }, - { true, FT_INT, "AlteredFormStartVisualKitID1" }, - { true, FT_INT, "AlteredFormStartVisualKitID2" }, - { true, FT_INT, "AlteredFormStartVisualKitID3" }, - { true, FT_INT, "AlteredFormFinishVisualKitID1" }, - { true, FT_INT, "AlteredFormFinishVisualKitID2" }, - { true, FT_INT, "AlteredFormFinishVisualKitID3" }, + { false, FT_INT, "AlteredFormStartVisualKitID1" }, + { false, FT_INT, "AlteredFormStartVisualKitID2" }, + { false, FT_INT, "AlteredFormStartVisualKitID3" }, + { false, FT_INT, "AlteredFormFinishVisualKitID1" }, + { false, FT_INT, "AlteredFormFinishVisualKitID2" }, + { false, FT_INT, "AlteredFormFinishVisualKitID3" }, { true, FT_INT, "HeritageArmorAchievementID" }, { true, FT_INT, "StartingLevel" }, { true, FT_INT, "UiDisplayOrder" }, - { true, FT_INT, "MaleModelFallbackRaceID" }, - { true, FT_INT, "FemaleModelFallbackRaceID" }, - { true, FT_INT, "MaleTextureFallbackRaceID" }, - { true, FT_INT, "FemaleTextureFallbackRaceID" }, { true, FT_INT, "PlayableRaceBit" }, + { true, FT_INT, "FemaleSkeletonFileDataID" }, + { true, FT_INT, "MaleSkeletonFileDataID" }, { true, FT_INT, "HelmetAnimScalingRaceID" }, { true, FT_INT, "TransmogrifyDisabledSlotMask" }, - { true, FT_INT, "UnalteredVisualCustomizationRaceID" }, { false, FT_FLOAT, "AlteredFormCustomizeOffsetFallback1" }, { false, FT_FLOAT, "AlteredFormCustomizeOffsetFallback2" }, { false, FT_FLOAT, "AlteredFormCustomizeOffsetFallback3" }, @@ -1184,16 +1114,27 @@ struct ChrRacesLoadInfo { false, FT_FLOAT, "Unknown910_21" }, { false, FT_FLOAT, "Unknown910_22" }, { false, FT_FLOAT, "Unknown910_23" }, - { true, FT_INT, "Unknown1000" }, + { true, FT_SHORT, "FactionID" }, + { true, FT_SHORT, "CinematicSequenceID" }, { true, FT_BYTE, "BaseLanguage" }, { true, FT_BYTE, "CreatureType" }, + { true, FT_BYTE, "Alliance" }, + { true, FT_BYTE, "RaceRelated" }, + { true, FT_BYTE, "UnalteredVisualRaceID" }, + { true, FT_BYTE, "DefaultClassID" }, + { true, FT_BYTE, "NeutralRaceID" }, + { true, FT_BYTE, "MaleModelFallbackRaceID" }, { true, FT_BYTE, "MaleModelFallbackSex" }, + { true, FT_BYTE, "FemaleModelFallbackRaceID" }, { true, FT_BYTE, "FemaleModelFallbackSex" }, + { true, FT_BYTE, "MaleTextureFallbackRaceID" }, { true, FT_BYTE, "MaleTextureFallbackSex" }, + { true, FT_BYTE, "FemaleTextureFallbackRaceID" }, { true, FT_BYTE, "FemaleTextureFallbackSex" }, + { true, FT_BYTE, "UnalteredVisualCustomizationRaceID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 63, &ChrRacesMeta::Instance, HOTFIX_SEL_CHR_RACES }; + static constexpr DB2LoadInfo Instance{ Fields, 68, &ChrRacesMeta::Instance, HOTFIX_SEL_CHR_RACES }; }; struct ChrSpecializationLoadInfo @@ -1221,7 +1162,7 @@ struct ChrSpecializationLoadInfo struct CinematicCameraLoadInfo { - static constexpr DB2FieldMeta Fields[8] = + static constexpr DB2FieldMeta Fields[7] = { { false, FT_INT, "ID" }, { false, FT_FLOAT, "OriginX" }, @@ -1230,10 +1171,9 @@ struct CinematicCameraLoadInfo { false, FT_INT, "SoundID" }, { false, FT_FLOAT, "OriginFacing" }, { false, FT_INT, "FileDataID" }, - { false, FT_INT, "ConversationID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 8, &CinematicCameraMeta::Instance, HOTFIX_SEL_CINEMATIC_CAMERA }; + static constexpr DB2LoadInfo Instance{ Fields, 7, &CinematicCameraMeta::Instance, HOTFIX_SEL_CINEMATIC_CAMERA }; }; struct CinematicSequencesLoadInfo @@ -1286,59 +1226,25 @@ struct ConditionalContentTuningLoadInfo struct ContentTuningLoadInfo { - static constexpr DB2FieldMeta Fields[13] = + static constexpr DB2FieldMeta Fields[6] = { { false, FT_INT, "ID" }, - { true, FT_INT, "Flags" }, - { true, FT_INT, "ExpansionID" }, { true, FT_INT, "MinLevel" }, { true, FT_INT, "MaxLevel" }, - { true, FT_INT, "MinLevelType" }, - { true, FT_INT, "MaxLevelType" }, - { true, FT_INT, "TargetLevelDelta" }, - { true, FT_INT, "TargetLevelMaxDelta" }, - { true, FT_INT, "TargetLevelMin" }, - { true, FT_INT, "TargetLevelMax" }, - { true, FT_INT, "MinItemLevel" }, - { false, FT_FLOAT, "QuestXpMultiplier" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 13, &ContentTuningMeta::Instance, HOTFIX_SEL_CONTENT_TUNING }; -}; - -struct ContentTuningXExpectedLoadInfo -{ - static constexpr DB2FieldMeta Fields[5] = - { - { false, FT_INT, "ID" }, + { true, FT_INT, "Flags" }, { true, FT_INT, "ExpectedStatModID" }, - { true, FT_INT, "MinMythicPlusSeasonID" }, - { true, FT_INT, "MaxMythicPlusSeasonID" }, - { false, FT_INT, "ContentTuningID" }, + { true, FT_INT, "DifficultyESMID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 5, &ContentTuningXExpectedMeta::Instance, HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED }; -}; - -struct ContentTuningXLabelLoadInfo -{ - static constexpr DB2FieldMeta Fields[3] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "LabelID" }, - { false, FT_INT, "ContentTuningID" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 3, &ContentTuningXLabelMeta::Instance, HOTFIX_SEL_CONTENT_TUNING_X_LABEL }; + static constexpr DB2LoadInfo Instance{ Fields, 6, &ContentTuningMeta::Instance, HOTFIX_SEL_CONTENT_TUNING }; }; struct ConversationLineLoadInfo { - static constexpr DB2FieldMeta Fields[10] = + static constexpr DB2FieldMeta Fields[9] = { { false, FT_INT, "ID" }, { false, FT_INT, "BroadcastTextID" }, - { false, FT_INT, "Unused1020" }, { false, FT_INT, "SpellVisualKitID" }, { true, FT_INT, "AdditionalDuration" }, { false, FT_SHORT, "NextConversationLineID" }, @@ -1348,21 +1254,7 @@ struct ConversationLineLoadInfo { false, FT_BYTE, "EndAnimation" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 10, &ConversationLineMeta::Instance, HOTFIX_SEL_CONVERSATION_LINE }; -}; - -struct CorruptionEffectsLoadInfo -{ - static constexpr DB2FieldMeta Fields[5] = - { - { false, FT_INT, "ID" }, - { false, FT_FLOAT, "MinCorruption" }, - { true, FT_INT, "Aura" }, - { true, FT_INT, "PlayerConditionID" }, - { true, FT_INT, "Flags" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 5, &CorruptionEffectsMeta::Instance, HOTFIX_SEL_CORRUPTION_EFFECTS }; + static constexpr DB2LoadInfo Instance{ Fields, 9, &ConversationLineMeta::Instance, HOTFIX_SEL_CONVERSATION_LINE }; }; struct CreatureDisplayInfoLoadInfo @@ -1404,23 +1296,31 @@ struct CreatureDisplayInfoLoadInfo struct CreatureDisplayInfoExtraLoadInfo { - static constexpr DB2FieldMeta Fields[7] = + static constexpr DB2FieldMeta Fields[15] = { { false, FT_INT, "ID" }, { true, FT_BYTE, "DisplayRaceID" }, { true, FT_BYTE, "DisplaySexID" }, { true, FT_BYTE, "DisplayClassID" }, + { true, FT_BYTE, "SkinID" }, + { true, FT_BYTE, "FaceID" }, + { true, FT_BYTE, "HairStyleID" }, + { true, FT_BYTE, "HairColorID" }, + { true, FT_BYTE, "FacialHairID" }, { true, FT_BYTE, "Flags" }, { true, FT_INT, "BakeMaterialResourcesID" }, { true, FT_INT, "HDBakeMaterialResourcesID" }, + { false, FT_BYTE, "CustomDisplayOption1" }, + { false, FT_BYTE, "CustomDisplayOption2" }, + { false, FT_BYTE, "CustomDisplayOption3" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 7, &CreatureDisplayInfoExtraMeta::Instance, HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA }; + static constexpr DB2LoadInfo Instance{ Fields, 15, &CreatureDisplayInfoExtraMeta::Instance, HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA }; }; struct CreatureFamilyLoadInfo { - static constexpr DB2FieldMeta Fields[11] = + static constexpr DB2FieldMeta Fields[12] = { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, @@ -1430,17 +1330,18 @@ struct CreatureFamilyLoadInfo { true, FT_BYTE, "MaxScaleLevel" }, { true, FT_SHORT, "PetFoodMask" }, { true, FT_BYTE, "PetTalentType" }, + { true, FT_INT, "CategoryEnumID" }, { true, FT_INT, "IconFileID" }, { true, FT_SHORT, "SkillLine1" }, { true, FT_SHORT, "SkillLine2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 11, &CreatureFamilyMeta::Instance, HOTFIX_SEL_CREATURE_FAMILY }; + static constexpr DB2LoadInfo Instance{ Fields, 12, &CreatureFamilyMeta::Instance, HOTFIX_SEL_CREATURE_FAMILY }; }; struct CreatureModelDataLoadInfo { - static constexpr DB2FieldMeta Fields[40] = + static constexpr DB2FieldMeta Fields[34] = { { false, FT_INT, "ID" }, { false, FT_FLOAT, "GeoBox1" }, @@ -1451,8 +1352,6 @@ struct CreatureModelDataLoadInfo { false, FT_FLOAT, "GeoBox6" }, { false, FT_INT, "Flags" }, { false, FT_INT, "FileDataID" }, - { false, FT_FLOAT, "WalkSpeed" }, - { false, FT_FLOAT, "RunSpeed" }, { false, FT_INT, "BloodID" }, { false, FT_INT, "FootprintTextureID" }, { false, FT_FLOAT, "FootprintTextureLength" }, @@ -1478,13 +1377,9 @@ struct CreatureModelDataLoadInfo { false, FT_FLOAT, "OverrideNameScale" }, { false, FT_FLOAT, "OverrideSelectionRadius" }, { false, FT_FLOAT, "TamedPetBaseScale" }, - { true, FT_BYTE, "Unknown820_1" }, - { false, FT_FLOAT, "Unknown820_2" }, - { false, FT_FLOAT, "Unknown820_31" }, - { false, FT_FLOAT, "Unknown820_32" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 40, &CreatureModelDataMeta::Instance, HOTFIX_SEL_CREATURE_MODEL_DATA }; + static constexpr DB2LoadInfo Instance{ Fields, 34, &CreatureModelDataMeta::Instance, HOTFIX_SEL_CREATURE_MODEL_DATA }; }; struct CreatureTypeLoadInfo @@ -1547,7 +1442,7 @@ struct CurrencyContainerLoadInfo { true, FT_INT, "MinAmount" }, { true, FT_INT, "MaxAmount" }, { true, FT_INT, "ContainerIconID" }, - { true, FT_BYTE, "ContainerQuality" }, + { true, FT_INT, "ContainerQuality" }, { true, FT_INT, "OnLootSpellVisualKitID" }, { false, FT_INT, "CurrencyTypesID" }, }; @@ -1557,12 +1452,12 @@ struct CurrencyContainerLoadInfo struct CurrencyTypesLoadInfo { - static constexpr DB2FieldMeta Fields[19] = + static constexpr DB2FieldMeta Fields[14] = { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, - { true, FT_INT, "CategoryID" }, + { false, FT_BYTE, "CategoryID" }, { true, FT_INT, "InventoryIconFileID" }, { false, FT_INT, "SpellWeight" }, { false, FT_BYTE, "SpellCategory" }, @@ -1570,17 +1465,12 @@ struct CurrencyTypesLoadInfo { false, FT_INT, "MaxEarnablePerWeek" }, { true, FT_BYTE, "Quality" }, { true, FT_INT, "FactionID" }, - { true, FT_INT, "ItemGroupSoundsID" }, - { true, FT_INT, "XpQuestDifficulty" }, { true, FT_INT, "AwardConditionID" }, - { true, FT_INT, "MaxQtyWorldStateID" }, - { false, FT_INT, "RechargingAmountPerCycle" }, - { false, FT_INT, "RechargingCycleDurationMS" }, { true, FT_INT, "Flags1" }, { true, FT_INT, "Flags2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 19, &CurrencyTypesMeta::Instance, HOTFIX_SEL_CURRENCY_TYPES }; + static constexpr DB2LoadInfo Instance{ Fields, 14, &CurrencyTypesMeta::Instance, HOTFIX_SEL_CURRENCY_TYPES }; }; struct CurveLoadInfo @@ -1655,12 +1545,12 @@ struct DifficultyLoadInfo { false, FT_BYTE, "FallbackDifficultyID" }, { false, FT_BYTE, "MinPlayers" }, { false, FT_BYTE, "MaxPlayers" }, - { false, FT_SHORT, "Flags" }, + { false, FT_BYTE, "Flags" }, { false, FT_BYTE, "ItemContext" }, { false, FT_BYTE, "ToggleDifficultyID" }, - { false, FT_INT, "GroupSizeHealthCurveID" }, - { false, FT_INT, "GroupSizeDmgCurveID" }, - { false, FT_INT, "GroupSizeSpellPointsCurveID" }, + { false, FT_SHORT, "GroupSizeHealthCurveID" }, + { false, FT_SHORT, "GroupSizeDmgCurveID" }, + { false, FT_SHORT, "GroupSizeSpellPointsCurveID" }, }; static constexpr DB2LoadInfo Instance{ Fields, 14, &DifficultyMeta::Instance, HOTFIX_SEL_DIFFICULTY }; @@ -1668,21 +1558,19 @@ struct DifficultyLoadInfo struct DungeonEncounterLoadInfo { - static constexpr DB2FieldMeta Fields[10] = + static constexpr DB2FieldMeta Fields[8] = { { false, FT_STRING, "Name" }, { false, FT_INT, "ID" }, { true, FT_SHORT, "MapID" }, { true, FT_INT, "DifficultyID" }, { true, FT_INT, "OrderIndex" }, - { true, FT_INT, "CompleteWorldStateID" }, { true, FT_BYTE, "Bit" }, { true, FT_INT, "Flags" }, - { true, FT_INT, "SpellIconFileID" }, { true, FT_INT, "Faction" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 10, &DungeonEncounterMeta::Instance, HOTFIX_SEL_DUNGEON_ENCOUNTER }; + static constexpr DB2LoadInfo Instance{ Fields, 8, &DungeonEncounterMeta::Instance, HOTFIX_SEL_DUNGEON_ENCOUNTER }; }; struct DurabilityCostsLoadInfo @@ -1825,17 +1713,17 @@ struct FactionLoadInfo { static constexpr DB2FieldMeta Fields[35] = { - { false, FT_INT, "ID" }, { true, FT_LONG, "ReputationRaceMask1" }, { true, FT_LONG, "ReputationRaceMask2" }, { true, FT_LONG, "ReputationRaceMask3" }, { true, FT_LONG, "ReputationRaceMask4" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, + { false, FT_INT, "ID" }, { true, FT_SHORT, "ReputationIndex" }, { false, FT_SHORT, "ParentFactionID" }, { false, FT_BYTE, "Expansion" }, - { false, FT_INT, "FriendshipRepID" }, + { false, FT_BYTE, "FriendshipRepID" }, { true, FT_INT, "Flags" }, { false, FT_SHORT, "ParagonFactionID" }, { true, FT_INT, "RenownFactionID" }, @@ -1898,32 +1786,28 @@ struct FactionTemplateLoadInfo struct FriendshipRepReactionLoadInfo { - static constexpr DB2FieldMeta Fields[5] = + static constexpr DB2FieldMeta Fields[4] = { { false, FT_INT, "ID" }, { false, FT_STRING, "Reaction" }, - { false, FT_INT, "FriendshipRepID" }, + { false, FT_BYTE, "FriendshipRepID" }, { false, FT_SHORT, "ReactionThreshold" }, - { true, FT_INT, "OverrideColor" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 5, &FriendshipRepReactionMeta::Instance, HOTFIX_SEL_FRIENDSHIP_REP_REACTION }; + static constexpr DB2LoadInfo Instance{ Fields, 4, &FriendshipRepReactionMeta::Instance, HOTFIX_SEL_FRIENDSHIP_REP_REACTION }; }; struct FriendshipReputationLoadInfo { - static constexpr DB2FieldMeta Fields[7] = + static constexpr DB2FieldMeta Fields[4] = { { false, FT_STRING, "Description" }, - { false, FT_STRING, "StandingModified" }, - { false, FT_STRING, "StandingChanged" }, { false, FT_INT, "ID" }, - { true, FT_INT, "FactionID" }, - { true, FT_INT, "TextureFileID" }, - { true, FT_INT, "Flags" }, + { true, FT_INT, "Field34146722002" }, + { true, FT_INT, "Field34146722003" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 7, &FriendshipReputationMeta::Instance, HOTFIX_SEL_FRIENDSHIP_REPUTATION }; + static constexpr DB2LoadInfo Instance{ Fields, 4, &FriendshipReputationMeta::Instance, HOTFIX_SEL_FRIENDSHIP_REPUTATION }; }; struct GameobjectArtKitLoadInfo @@ -1942,9 +1826,10 @@ struct GameobjectArtKitLoadInfo struct GameobjectDisplayInfoLoadInfo { - static constexpr DB2FieldMeta Fields[14] = + static constexpr DB2FieldMeta Fields[12] = { { false, FT_INT, "ID" }, + { false, FT_STRING_NOT_LOCALIZED, "ModelName" }, { false, FT_FLOAT, "GeoBoxMinX" }, { false, FT_FLOAT, "GeoBoxMinY" }, { false, FT_FLOAT, "GeoBoxMinZ" }, @@ -1955,12 +1840,9 @@ struct GameobjectDisplayInfoLoadInfo { true, FT_SHORT, "ObjectEffectPackageID" }, { false, FT_FLOAT, "OverrideLootEffectScale" }, { false, FT_FLOAT, "OverrideNameScale" }, - { true, FT_INT, "AlternateDisplayType" }, - { true, FT_INT, "ClientCreatureDisplayInfoID" }, - { true, FT_INT, "ClientItemID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 14, &GameObjectDisplayInfoMeta::Instance, HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO }; + static constexpr DB2LoadInfo Instance{ Fields, 12, &GameObjectDisplayInfoMeta::Instance, HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO }; }; struct GameobjectsLoadInfo @@ -1976,13 +1858,13 @@ struct GameobjectsLoadInfo { false, FT_FLOAT, "Rot3" }, { false, FT_FLOAT, "Rot4" }, { false, FT_INT, "ID" }, - { true, FT_INT, "OwnerID" }, - { true, FT_INT, "DisplayID" }, + { false, FT_SHORT, "OwnerID" }, + { false, FT_INT, "DisplayID" }, { false, FT_FLOAT, "Scale" }, - { true, FT_INT, "TypeID" }, + { false, FT_BYTE, "TypeID" }, { true, FT_INT, "PhaseUseFlags" }, - { true, FT_INT, "PhaseID" }, - { true, FT_INT, "PhaseGroupID" }, + { false, FT_SHORT, "PhaseID" }, + { false, FT_SHORT, "PhaseGroupID" }, { true, FT_INT, "PropValue1" }, { true, FT_INT, "PropValue2" }, { true, FT_INT, "PropValue3" }, @@ -2000,14 +1882,14 @@ struct GarrAbilityLoadInfo { static constexpr DB2FieldMeta Fields[8] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, + { false, FT_INT, "ID" }, { false, FT_BYTE, "GarrAbilityCategoryID" }, - { true, FT_BYTE, "GarrFollowerTypeID" }, + { false, FT_BYTE, "GarrFollowerTypeID" }, { true, FT_INT, "IconFileDataID" }, { false, FT_SHORT, "FactionChangeGarrAbilityID" }, - { true, FT_INT, "Flags" }, + { false, FT_SHORT, "Flags" }, }; static constexpr DB2LoadInfo Instance{ Fields, 8, &GarrAbilityMeta::Instance, HOTFIX_SEL_GARR_ABILITY }; @@ -2022,11 +1904,11 @@ struct GarrBuildingLoadInfo { false, FT_STRING, "AllianceName" }, { false, FT_STRING, "Description" }, { false, FT_STRING, "Tooltip" }, - { true, FT_BYTE, "GarrTypeID" }, - { true, FT_BYTE, "BuildingType" }, + { false, FT_BYTE, "GarrTypeID" }, + { false, FT_BYTE, "BuildingType" }, { true, FT_INT, "HordeGameObjectID" }, { true, FT_INT, "AllianceGameObjectID" }, - { true, FT_INT, "GarrSiteID" }, + { false, FT_BYTE, "GarrSiteID" }, { false, FT_BYTE, "UpgradeLevel" }, { true, FT_INT, "BuildSeconds" }, { false, FT_SHORT, "CurrencyTypeID" }, @@ -2041,7 +1923,7 @@ struct GarrBuildingLoadInfo { false, FT_SHORT, "GarrAbilityID" }, { false, FT_SHORT, "BonusGarrAbilityID" }, { false, FT_SHORT, "GoldCost" }, - { true, FT_INT, "Flags" }, + { false, FT_BYTE, "Flags" }, }; static constexpr DB2LoadInfo Instance{ Fields, 25, &GarrBuildingMeta::Instance, HOTFIX_SEL_GARR_BUILDING }; @@ -2066,14 +1948,14 @@ struct GarrClassSpecLoadInfo { static constexpr DB2FieldMeta Fields[8] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "ClassSpec" }, { false, FT_STRING, "ClassSpecMale" }, { false, FT_STRING, "ClassSpecFemale" }, + { false, FT_INT, "ID" }, { false, FT_SHORT, "UiTextureAtlasMemberID" }, { false, FT_SHORT, "GarrFollItemSetID" }, { false, FT_BYTE, "FollowerClassLimit" }, - { true, FT_INT, "Flags" }, + { false, FT_BYTE, "Flags" }, }; static constexpr DB2LoadInfo Instance{ Fields, 8, &GarrClassSpecMeta::Instance, HOTFIX_SEL_GARR_CLASS_SPEC }; @@ -2081,21 +1963,21 @@ struct GarrClassSpecLoadInfo struct GarrFollowerLoadInfo { - static constexpr DB2FieldMeta Fields[34] = + static constexpr DB2FieldMeta Fields[32] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "HordeSourceText" }, { false, FT_STRING, "AllianceSourceText" }, { false, FT_STRING, "TitleName" }, - { true, FT_BYTE, "GarrTypeID" }, - { true, FT_BYTE, "GarrFollowerTypeID" }, + { false, FT_INT, "ID" }, + { false, FT_BYTE, "GarrTypeID" }, + { false, FT_BYTE, "GarrFollowerTypeID" }, { true, FT_INT, "HordeCreatureID" }, { true, FT_INT, "AllianceCreatureID" }, { false, FT_BYTE, "HordeGarrFollRaceID" }, { false, FT_BYTE, "AllianceGarrFollRaceID" }, - { true, FT_INT, "HordeGarrClassSpecID" }, - { true, FT_INT, "AllianceGarrClassSpecID" }, - { true, FT_BYTE, "Quality" }, + { false, FT_BYTE, "HordeGarrClassSpecID" }, + { false, FT_BYTE, "AllianceGarrClassSpecID" }, + { false, FT_BYTE, "Quality" }, { false, FT_BYTE, "FollowerLevel" }, { false, FT_SHORT, "ItemLevelWeapon" }, { false, FT_SHORT, "ItemLevelArmor" }, @@ -2113,13 +1995,11 @@ struct GarrFollowerLoadInfo { false, FT_INT, "HordeSlottingBroadcastTextID" }, { false, FT_INT, "AllySlottingBroadcastTextID" }, { false, FT_BYTE, "ChrClassID" }, - { true, FT_INT, "Flags" }, + { false, FT_BYTE, "Flags" }, { false, FT_BYTE, "Gender" }, - { true, FT_INT, "AutoCombatantID" }, - { true, FT_INT, "CovenantID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 34, &GarrFollowerMeta::Instance, HOTFIX_SEL_GARR_FOLLOWER }; + static constexpr DB2LoadInfo Instance{ Fields, 32, &GarrFollowerMeta::Instance, HOTFIX_SEL_GARR_FOLLOWER }; }; struct GarrFollowerXAbilityLoadInfo @@ -2138,9 +2018,8 @@ struct GarrFollowerXAbilityLoadInfo struct GarrMissionLoadInfo { - static constexpr DB2FieldMeta Fields[34] = + static constexpr DB2FieldMeta Fields[31] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "Location" }, { false, FT_STRING, "Description" }, @@ -2148,18 +2027,18 @@ struct GarrMissionLoadInfo { false, FT_FLOAT, "MapPosY" }, { false, FT_FLOAT, "WorldPosX" }, { false, FT_FLOAT, "WorldPosY" }, - { true, FT_BYTE, "GarrTypeID" }, + { false, FT_INT, "ID" }, + { false, FT_BYTE, "GarrTypeID" }, { false, FT_BYTE, "GarrMissionTypeID" }, - { true, FT_BYTE, "GarrFollowerTypeID" }, + { false, FT_BYTE, "GarrFollowerTypeID" }, { false, FT_BYTE, "MaxFollowers" }, { false, FT_INT, "MissionCost" }, { false, FT_SHORT, "MissionCostCurrencyTypesID" }, { false, FT_BYTE, "OfferedGarrMissionTextureID" }, { false, FT_SHORT, "UiTextureKitID" }, { false, FT_INT, "EnvGarrMechanicID" }, - { true, FT_INT, "EnvGarrMechanicTypeID" }, + { false, FT_BYTE, "EnvGarrMechanicTypeID" }, { false, FT_INT, "PlayerConditionID" }, - { true, FT_INT, "GarrMissionSetID" }, { true, FT_BYTE, "TargetLevel" }, { false, FT_SHORT, "TargetItemLevel" }, { true, FT_INT, "MissionDuration" }, @@ -2170,13 +2049,11 @@ struct GarrMissionLoadInfo { false, FT_INT, "OvermaxRewardPackID" }, { false, FT_BYTE, "FollowerDeathChance" }, { false, FT_INT, "AreaID" }, - { true, FT_INT, "Flags" }, - { false, FT_FLOAT, "AutoMissionScalar" }, - { true, FT_INT, "AutoMissionScalarCurveID" }, - { true, FT_INT, "AutoCombatantEnvCasterID" }, + { false, FT_INT, "Flags" }, + { true, FT_INT, "GarrMissionSetID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 34, &GarrMissionMeta::Instance, HOTFIX_SEL_GARR_MISSION }; + static constexpr DB2LoadInfo Instance{ Fields, 31, &GarrMissionMeta::Instance, HOTFIX_SEL_GARR_MISSION }; }; struct GarrPlotLoadInfo @@ -2258,48 +2135,32 @@ struct GarrSiteLevelPlotInstLoadInfo struct GarrTalentTreeLoadInfo { - static constexpr DB2FieldMeta Fields[13] = + static constexpr DB2FieldMeta Fields[8] = { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, - { true, FT_BYTE, "GarrTypeID" }, + { true, FT_INT, "GarrTypeID" }, { true, FT_INT, "ClassID" }, { true, FT_BYTE, "MaxTiers" }, { true, FT_BYTE, "UiOrder" }, - { true, FT_INT, "Flags" }, + { true, FT_BYTE, "Flags" }, { false, FT_SHORT, "UiTextureKitID" }, - { true, FT_INT, "GarrTalentTreeType" }, - { true, FT_INT, "PlayerConditionID" }, - { false, FT_BYTE, "FeatureTypeIndex" }, - { true, FT_BYTE, "FeatureSubtypeIndex" }, - { true, FT_INT, "CurrencyID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 13, &GarrTalentTreeMeta::Instance, HOTFIX_SEL_GARR_TALENT_TREE }; + static constexpr DB2LoadInfo Instance{ Fields, 8, &GarrTalentTreeMeta::Instance, HOTFIX_SEL_GARR_TALENT_TREE }; }; struct GemPropertiesLoadInfo { - static constexpr DB2FieldMeta Fields[3] = + static constexpr DB2FieldMeta Fields[4] = { { false, FT_INT, "ID" }, { false, FT_SHORT, "EnchantId" }, { true, FT_INT, "Type" }, + { false, FT_SHORT, "MinItemLevel" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 3, &GemPropertiesMeta::Instance, HOTFIX_SEL_GEM_PROPERTIES }; -}; - -struct GlobalCurveLoadInfo -{ - static constexpr DB2FieldMeta Fields[3] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "CurveID" }, - { true, FT_INT, "Type" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 3, &GlobalCurveMeta::Instance, HOTFIX_SEL_GLOBAL_CURVE }; + static constexpr DB2LoadInfo Instance{ Fields, 4, &GemPropertiesMeta::Instance, HOTFIX_SEL_GEM_PROPERTIES }; }; struct GlyphBindableSpellLoadInfo @@ -2316,16 +2177,17 @@ struct GlyphBindableSpellLoadInfo struct GlyphPropertiesLoadInfo { - static constexpr DB2FieldMeta Fields[5] = + static constexpr DB2FieldMeta Fields[6] = { { false, FT_INT, "ID" }, { false, FT_INT, "SpellID" }, { false, FT_BYTE, "GlyphType" }, { false, FT_BYTE, "GlyphExclusiveCategoryID" }, { true, FT_INT, "SpellIconFileDataID" }, + { false, FT_INT, "GlyphSlotFlags" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 5, &GlyphPropertiesMeta::Instance, HOTFIX_SEL_GLYPH_PROPERTIES }; + static constexpr DB2LoadInfo Instance{ Fields, 6, &GlyphPropertiesMeta::Instance, HOTFIX_SEL_GLYPH_PROPERTIES }; }; struct GlyphRequiredSpecLoadInfo @@ -2342,27 +2204,24 @@ struct GlyphRequiredSpecLoadInfo struct GossipNpcOptionLoadInfo { - static constexpr DB2FieldMeta Fields[16] = + static constexpr DB2FieldMeta Fields[13] = { { false, FT_INT, "ID" }, { true, FT_INT, "GossipNpcOption" }, { true, FT_INT, "LFGDungeonsID" }, { true, FT_INT, "TrainerID" }, - { true, FT_INT, "GarrFollowerTypeID" }, - { true, FT_INT, "CharShipmentID" }, - { true, FT_INT, "GarrTalentTreeID" }, - { true, FT_INT, "UiMapID" }, - { true, FT_INT, "UiItemInteractionID" }, - { true, FT_INT, "Unknown_1000_8" }, - { true, FT_INT, "Unknown_1000_9" }, - { true, FT_INT, "CovenantID" }, + { true, FT_INT, "Unk341_1" }, + { true, FT_INT, "Unk341_2" }, + { true, FT_INT, "Unk341_3" }, + { true, FT_INT, "Unk341_4" }, + { true, FT_INT, "Unk341_5" }, + { true, FT_INT, "Unk341_6" }, + { true, FT_INT, "Unk341_7" }, + { true, FT_INT, "Unk341_8" }, { true, FT_INT, "GossipOptionID" }, - { true, FT_INT, "TraitTreeID" }, - { true, FT_INT, "ProfessionID" }, - { true, FT_INT, "Unknown_1002_14" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 16, &GossipNPCOptionMeta::Instance, HOTFIX_SEL_GOSSIP_NPC_OPTION }; + static constexpr DB2LoadInfo Instance{ Fields, 13, &GossipNPCOptionMeta::Instance, HOTFIX_SEL_GOSSIP_NPC_OPTION }; }; struct GuildColorBackgroundLoadInfo @@ -2446,7 +2305,7 @@ struct HeirloomLoadInfo struct HolidaysLoadInfo { - static constexpr DB2FieldMeta Fields[57] = + static constexpr DB2FieldMeta Fields[48] = { { false, FT_INT, "ID" }, { false, FT_SHORT, "Region" }, @@ -2456,6 +2315,7 @@ struct HolidaysLoadInfo { false, FT_BYTE, "Priority" }, { true, FT_BYTE, "CalendarFilterType" }, { false, FT_BYTE, "Flags" }, + { false, FT_INT, "WorldStateExpressionID" }, { false, FT_SHORT, "Duration1" }, { false, FT_SHORT, "Duration2" }, { false, FT_SHORT, "Duration3" }, @@ -2482,16 +2342,6 @@ struct HolidaysLoadInfo { false, FT_INT, "Date14" }, { false, FT_INT, "Date15" }, { false, FT_INT, "Date16" }, - { false, FT_INT, "Date17" }, - { false, FT_INT, "Date18" }, - { false, FT_INT, "Date19" }, - { false, FT_INT, "Date20" }, - { false, FT_INT, "Date21" }, - { false, FT_INT, "Date22" }, - { false, FT_INT, "Date23" }, - { false, FT_INT, "Date24" }, - { false, FT_INT, "Date25" }, - { false, FT_INT, "Date26" }, { false, FT_BYTE, "CalendarFlags1" }, { false, FT_BYTE, "CalendarFlags2" }, { false, FT_BYTE, "CalendarFlags3" }, @@ -2507,7 +2357,7 @@ struct HolidaysLoadInfo { true, FT_INT, "TextureFileDataID3" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 57, &HolidaysMeta::Instance, HOTFIX_SEL_HOLIDAYS }; + static constexpr DB2LoadInfo Instance{ Fields, 48, &HolidaysMeta::Instance, HOTFIX_SEL_HOLIDAYS }; }; struct ImportPriceArmorLoadInfo @@ -2559,38 +2409,64 @@ struct ImportPriceWeaponLoadInfo struct ItemLoadInfo { - static constexpr DB2FieldMeta Fields[12] = + static constexpr DB2FieldMeta Fields[39] = { { false, FT_INT, "ID" }, { false, FT_BYTE, "ClassID" }, { false, FT_BYTE, "SubclassID" }, { false, FT_BYTE, "Material" }, { true, FT_BYTE, "InventoryType" }, + { true, FT_INT, "RequiredLevel" }, { false, FT_BYTE, "SheatheType" }, + { false, FT_SHORT, "RandomSelect" }, + { false, FT_SHORT, "ItemRandomSuffixGroupID" }, { true, FT_BYTE, "SoundOverrideSubclassID" }, + { false, FT_SHORT, "ScalingStatDistributionID" }, { true, FT_INT, "IconFileDataID" }, { false, FT_BYTE, "ItemGroupSoundsID" }, { true, FT_INT, "ContentTuningID" }, - { true, FT_INT, "ModifiedCraftingReagentItemID" }, - { true, FT_INT, "CraftingQualityID" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 12, &ItemMeta::Instance, HOTFIX_SEL_ITEM }; + { false, FT_INT, "MaxDurability" }, + { false, FT_BYTE, "AmmunitionType" }, + { true, FT_INT, "ScalingStatValue" }, + { false, FT_BYTE, "DamageType1" }, + { false, FT_BYTE, "DamageType2" }, + { false, FT_BYTE, "DamageType3" }, + { false, FT_BYTE, "DamageType4" }, + { false, FT_BYTE, "DamageType5" }, + { true, FT_INT, "Resistances1" }, + { true, FT_INT, "Resistances2" }, + { true, FT_INT, "Resistances3" }, + { true, FT_INT, "Resistances4" }, + { true, FT_INT, "Resistances5" }, + { true, FT_INT, "Resistances6" }, + { true, FT_INT, "Resistances7" }, + { true, FT_INT, "MinDamage1" }, + { true, FT_INT, "MinDamage2" }, + { true, FT_INT, "MinDamage3" }, + { true, FT_INT, "MinDamage4" }, + { true, FT_INT, "MinDamage5" }, + { true, FT_INT, "MaxDamage1" }, + { true, FT_INT, "MaxDamage2" }, + { true, FT_INT, "MaxDamage3" }, + { true, FT_INT, "MaxDamage4" }, + { true, FT_INT, "MaxDamage5" }, + }; + + static constexpr DB2LoadInfo Instance{ Fields, 39, &ItemMeta::Instance, HOTFIX_SEL_ITEM }; }; struct ItemAppearanceLoadInfo { - static constexpr DB2FieldMeta Fields[6] = + static constexpr DB2FieldMeta Fields[5] = { { false, FT_INT, "ID" }, - { true, FT_INT, "DisplayType" }, + { false, FT_BYTE, "DisplayType" }, { true, FT_INT, "ItemDisplayInfoID" }, { true, FT_INT, "DefaultIconFileDataID" }, { true, FT_INT, "UiOrder" }, - { true, FT_INT, "PlayerConditionID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 6, &ItemAppearanceMeta::Instance, HOTFIX_SEL_ITEM_APPEARANCE }; + static constexpr DB2LoadInfo Instance{ Fields, 5, &ItemAppearanceMeta::Instance, HOTFIX_SEL_ITEM_APPEARANCE }; }; struct ItemArmorQualityLoadInfo @@ -2671,24 +2547,6 @@ struct ItemBonusLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 8, &ItemBonusMeta::Instance, HOTFIX_SEL_ITEM_BONUS }; }; -struct ItemBonusListGroupEntryLoadInfo -{ - static constexpr DB2FieldMeta Fields[9] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "ItemBonusListGroupID" }, - { true, FT_INT, "ItemBonusListID" }, - { true, FT_INT, "ItemLevelSelectorID" }, - { true, FT_INT, "SequenceValue" }, - { true, FT_INT, "ItemExtendedCostID" }, - { true, FT_INT, "PlayerConditionID" }, - { true, FT_INT, "Flags" }, - { true, FT_INT, "ItemLogicalCostGroupID" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 9, &ItemBonusListGroupEntryMeta::Instance, HOTFIX_SEL_ITEM_BONUS_LIST_GROUP_ENTRY }; -}; - struct ItemBonusListLevelDeltaLoadInfo { static constexpr DB2FieldMeta Fields[2] = @@ -2700,35 +2558,19 @@ struct ItemBonusListLevelDeltaLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 2, &ItemBonusListLevelDeltaMeta::Instance, HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA }; }; -struct ItemBonusTreeLoadInfo -{ - static constexpr DB2FieldMeta Fields[3] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "Flags" }, - { true, FT_INT, "InventoryTypeSlotMask" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 3, &ItemBonusTreeMeta::Instance, HOTFIX_SEL_ITEM_BONUS_TREE }; -}; - struct ItemBonusTreeNodeLoadInfo { - static constexpr DB2FieldMeta Fields[10] = + static constexpr DB2FieldMeta Fields[6] = { { false, FT_INT, "ID" }, { false, FT_BYTE, "ItemContext" }, { false, FT_SHORT, "ChildItemBonusTreeID" }, { false, FT_SHORT, "ChildItemBonusListID" }, { false, FT_SHORT, "ChildItemLevelSelectorID" }, - { true, FT_INT, "ChildItemBonusListGroupID" }, - { true, FT_INT, "IblGroupPointsModSetID" }, - { true, FT_INT, "MinMythicPlusLevel" }, - { true, FT_INT, "MaxMythicPlusLevel" }, { false, FT_INT, "ParentItemBonusTreeID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 10, &ItemBonusTreeNodeMeta::Instance, HOTFIX_SEL_ITEM_BONUS_TREE_NODE }; + static constexpr DB2LoadInfo Instance{ Fields, 6, &ItemBonusTreeNodeMeta::Instance, HOTFIX_SEL_ITEM_BONUS_TREE_NODE }; }; struct ItemChildEquipmentLoadInfo @@ -2736,9 +2578,9 @@ struct ItemChildEquipmentLoadInfo static constexpr DB2FieldMeta Fields[4] = { { false, FT_INT, "ID" }, - { true, FT_INT, "ParentItemID" }, { true, FT_INT, "ChildItemID" }, { false, FT_BYTE, "ChildItemEquipSlot" }, + { true, FT_INT, "ParentItemID" }, }; static constexpr DB2LoadInfo Instance{ Fields, 4, &ItemChildEquipmentMeta::Instance, HOTFIX_SEL_ITEM_CHILD_EQUIPMENT }; @@ -2760,19 +2602,18 @@ struct ItemClassLoadInfo struct ItemContextPickerEntryLoadInfo { - static constexpr DB2FieldMeta Fields[8] = + static constexpr DB2FieldMeta Fields[7] = { { false, FT_INT, "ID" }, { false, FT_BYTE, "ItemCreationContext" }, { false, FT_BYTE, "OrderIndex" }, { true, FT_INT, "PVal" }, - { true, FT_INT, "LabelID" }, { false, FT_INT, "Flags" }, { false, FT_INT, "PlayerConditionID" }, { false, FT_INT, "ItemContextPickerID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 8, &ItemContextPickerEntryMeta::Instance, HOTFIX_SEL_ITEM_CONTEXT_PICKER_ENTRY }; + static constexpr DB2LoadInfo Instance{ Fields, 7, &ItemContextPickerEntryMeta::Instance, HOTFIX_SEL_ITEM_CONTEXT_PICKER_ENTRY }; }; struct ItemCurrencyCostLoadInfo @@ -2895,7 +2736,7 @@ struct ItemDisenchantLootLoadInfo struct ItemEffectLoadInfo { - static constexpr DB2FieldMeta Fields[9] = + static constexpr DB2FieldMeta Fields[10] = { { false, FT_INT, "ID" }, { false, FT_BYTE, "LegacySlotIndex" }, @@ -2906,9 +2747,10 @@ struct ItemEffectLoadInfo { false, FT_SHORT, "SpellCategoryID" }, { true, FT_INT, "SpellID" }, { false, FT_SHORT, "ChrSpecializationID" }, + { true, FT_INT, "ParentItemID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 9, &ItemEffectMeta::Instance, HOTFIX_SEL_ITEM_EFFECT }; + static constexpr DB2LoadInfo Instance{ Fields, 10, &ItemEffectMeta::Instance, HOTFIX_SEL_ITEM_EFFECT }; }; struct ItemExtendedCostLoadInfo @@ -2949,15 +2791,14 @@ struct ItemExtendedCostLoadInfo struct ItemLevelSelectorLoadInfo { - static constexpr DB2FieldMeta Fields[4] = + static constexpr DB2FieldMeta Fields[3] = { { false, FT_INT, "ID" }, { false, FT_SHORT, "MinItemLevel" }, { false, FT_SHORT, "ItemLevelSelectorQualitySetID" }, - { false, FT_SHORT, "AzeriteUnlockMappingSet" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 4, &ItemLevelSelectorMeta::Instance, HOTFIX_SEL_ITEM_LEVEL_SELECTOR }; + static constexpr DB2LoadInfo Instance{ Fields, 3, &ItemLevelSelectorMeta::Instance, HOTFIX_SEL_ITEM_LEVEL_SELECTOR }; }; struct ItemLevelSelectorQualityLoadInfo @@ -3070,11 +2911,11 @@ struct ItemSearchNameLoadInfo { static constexpr DB2FieldMeta Fields[17] = { - { false, FT_INT, "ID" }, { true, FT_LONG, "AllowableRace" }, { false, FT_STRING, "Display" }, + { false, FT_INT, "ID" }, { false, FT_BYTE, "OverallQualityID" }, - { true, FT_INT, "ExpansionID" }, + { true, FT_BYTE, "ExpansionID" }, { false, FT_SHORT, "MinFactionID" }, { true, FT_INT, "MinReputation" }, { true, FT_INT, "AllowableClass" }, @@ -3131,7 +2972,7 @@ struct ItemSetSpellLoadInfo { false, FT_SHORT, "ChrSpecID" }, { false, FT_INT, "SpellID" }, { false, FT_BYTE, "Threshold" }, - { false, FT_INT, "ItemSetID" }, + { true, FT_INT, "ItemSetID" }, }; static constexpr DB2LoadInfo Instance{ Fields, 5, &ItemSetSpellMeta::Instance, HOTFIX_SEL_ITEM_SET_SPELL }; @@ -3139,7 +2980,7 @@ struct ItemSetSpellLoadInfo struct ItemSparseLoadInfo { - static constexpr DB2FieldMeta Fields[98] = + static constexpr DB2FieldMeta Fields[130] = { { false, FT_INT, "ID" }, { true, FT_LONG, "AllowableRace" }, @@ -3148,14 +2989,11 @@ struct ItemSparseLoadInfo { false, FT_STRING, "Display2" }, { false, FT_STRING, "Display1" }, { false, FT_STRING, "Display" }, - { true, FT_INT, "ExpansionID" }, { false, FT_FLOAT, "DmgVariance" }, - { true, FT_INT, "LimitCategory" }, { false, FT_INT, "DurationInInventory" }, { false, FT_FLOAT, "QualityModifier" }, { false, FT_INT, "BagFamily" }, { true, FT_INT, "StartQuestID" }, - { true, FT_INT, "LanguageID" }, { false, FT_FLOAT, "ItemRange" }, { false, FT_FLOAT, "StatPercentageOfSocket1" }, { false, FT_FLOAT, "StatPercentageOfSocket2" }, @@ -3194,9 +3032,11 @@ struct ItemSparseLoadInfo { true, FT_INT, "ModifiedCraftingReagentItemID" }, { true, FT_INT, "ContentTuningID" }, { true, FT_INT, "PlayerLevelToItemLevelCurveID" }, + { false, FT_INT, "MaxDurability" }, { false, FT_SHORT, "ItemNameDescriptionID" }, { false, FT_SHORT, "RequiredTransmogHoliday" }, { false, FT_SHORT, "RequiredHoliday" }, + { false, FT_SHORT, "LimitCategory" }, { false, FT_SHORT, "GemProperties" }, { false, FT_SHORT, "SocketMatchEnchantmentId" }, { false, FT_SHORT, "TotemCategoryID" }, @@ -3212,6 +3052,37 @@ struct ItemSparseLoadInfo { false, FT_SHORT, "RequiredSkill" }, { false, FT_SHORT, "ItemLevel" }, { true, FT_SHORT, "AllowableClass" }, + { false, FT_SHORT, "ItemRandomSuffixGroupID" }, + { false, FT_SHORT, "RandomSelect" }, + { false, FT_SHORT, "MinDamage1" }, + { false, FT_SHORT, "MinDamage2" }, + { false, FT_SHORT, "MinDamage3" }, + { false, FT_SHORT, "MinDamage4" }, + { false, FT_SHORT, "MinDamage5" }, + { false, FT_SHORT, "MaxDamage1" }, + { false, FT_SHORT, "MaxDamage2" }, + { false, FT_SHORT, "MaxDamage3" }, + { false, FT_SHORT, "MaxDamage4" }, + { false, FT_SHORT, "MaxDamage5" }, + { true, FT_SHORT, "Resistances1" }, + { true, FT_SHORT, "Resistances2" }, + { true, FT_SHORT, "Resistances3" }, + { true, FT_SHORT, "Resistances4" }, + { true, FT_SHORT, "Resistances5" }, + { true, FT_SHORT, "Resistances6" }, + { true, FT_SHORT, "Resistances7" }, + { false, FT_SHORT, "ScalingStatDistributionID" }, + { true, FT_SHORT, "StatModifierBonusAmount1" }, + { true, FT_SHORT, "StatModifierBonusAmount2" }, + { true, FT_SHORT, "StatModifierBonusAmount3" }, + { true, FT_SHORT, "StatModifierBonusAmount4" }, + { true, FT_SHORT, "StatModifierBonusAmount5" }, + { true, FT_SHORT, "StatModifierBonusAmount6" }, + { true, FT_SHORT, "StatModifierBonusAmount7" }, + { true, FT_SHORT, "StatModifierBonusAmount8" }, + { true, FT_SHORT, "StatModifierBonusAmount9" }, + { true, FT_SHORT, "StatModifierBonusAmount10" }, + { false, FT_BYTE, "ExpansionID" }, { false, FT_BYTE, "ArtifactID" }, { false, FT_BYTE, "SpellWeight" }, { false, FT_BYTE, "SpellWeightCategory" }, @@ -3221,6 +3092,7 @@ struct ItemSparseLoadInfo { false, FT_BYTE, "SheatheType" }, { false, FT_BYTE, "Material" }, { false, FT_BYTE, "PageMaterialID" }, + { false, FT_BYTE, "LanguageID" }, { false, FT_BYTE, "Bonding" }, { false, FT_BYTE, "DamageDamageType" }, { true, FT_BYTE, "StatModifierBonusStat1" }, @@ -3236,12 +3108,13 @@ struct ItemSparseLoadInfo { false, FT_BYTE, "ContainerSlots" }, { false, FT_BYTE, "RequiredPVPMedal" }, { false, FT_BYTE, "RequiredPVPRank" }, - { true, FT_BYTE, "RequiredLevel" }, { true, FT_BYTE, "InventoryType" }, { true, FT_BYTE, "OverallQualityID" }, + { false, FT_BYTE, "AmmunitionType" }, + { true, FT_BYTE, "RequiredLevel" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 98, &ItemSparseMeta::Instance, HOTFIX_SEL_ITEM_SPARSE }; + static constexpr DB2LoadInfo Instance{ Fields, 130, &ItemSparseMeta::Instance, HOTFIX_SEL_ITEM_SPARSE }; }; struct ItemSpecLoadInfo @@ -3284,29 +3157,16 @@ struct ItemXBonusTreeLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 3, &ItemXBonusTreeMeta::Instance, HOTFIX_SEL_ITEM_X_BONUS_TREE }; }; -struct ItemXItemEffectLoadInfo -{ - static constexpr DB2FieldMeta Fields[3] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "ItemEffectID" }, - { false, FT_INT, "ItemID" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 3, &ItemXItemEffectMeta::Instance, HOTFIX_SEL_ITEM_X_ITEM_EFFECT }; -}; - struct JournalEncounterLoadInfo { - static constexpr DB2FieldMeta Fields[13] = + static constexpr DB2FieldMeta Fields[12] = { + { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, { false, FT_FLOAT, "MapX" }, { false, FT_FLOAT, "MapY" }, - { false, FT_INT, "ID" }, { false, FT_SHORT, "JournalInstanceID" }, - { false, FT_SHORT, "DungeonEncounterID" }, { false, FT_INT, "OrderIndex" }, { false, FT_SHORT, "FirstSectionID" }, { false, FT_SHORT, "UiMapID" }, @@ -3315,7 +3175,7 @@ struct JournalEncounterLoadInfo { true, FT_BYTE, "DifficultyMask" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 13, &JournalEncounterMeta::Instance, HOTFIX_SEL_JOURNAL_ENCOUNTER }; + static constexpr DB2LoadInfo Instance{ Fields, 12, &JournalEncounterMeta::Instance, HOTFIX_SEL_JOURNAL_ENCOUNTER }; }; struct JournalEncounterSectionLoadInfo @@ -3347,9 +3207,9 @@ struct JournalInstanceLoadInfo { static constexpr DB2FieldMeta Fields[10] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, + { false, FT_INT, "ID" }, { false, FT_SHORT, "MapID" }, { true, FT_INT, "BackgroundFileDataID" }, { true, FT_INT, "ButtonFileDataID" }, @@ -3364,14 +3224,13 @@ struct JournalInstanceLoadInfo struct JournalTierLoadInfo { - static constexpr DB2FieldMeta Fields[3] = + static constexpr DB2FieldMeta Fields[2] = { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, - { true, FT_INT, "PlayerConditionID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 3, &JournalTierMeta::Instance, HOTFIX_SEL_JOURNAL_TIER }; + static constexpr DB2LoadInfo Instance{ Fields, 2, &JournalTierMeta::Instance, HOTFIX_SEL_JOURNAL_TIER }; }; struct KeychainLoadInfo @@ -3435,7 +3294,7 @@ struct LanguageWordsLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING_NOT_LOCALIZED, "Word" }, - { false, FT_INT, "LanguageID" }, + { false, FT_BYTE, "LanguageID" }, }; static constexpr DB2LoadInfo Instance{ Fields, 3, &LanguageWordsMeta::Instance, HOTFIX_SEL_LANGUAGE_WORDS }; @@ -3458,13 +3317,15 @@ struct LanguagesLoadInfo struct LfgDungeonsLoadInfo { - static constexpr DB2FieldMeta Fields[31] = + static constexpr DB2FieldMeta Fields[35] = { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "Description" }, + { false, FT_BYTE, "MinLevel" }, + { false, FT_SHORT, "MaxLevel" }, { false, FT_BYTE, "TypeID" }, - { true, FT_BYTE, "Subtype" }, + { false, FT_BYTE, "Subtype" }, { true, FT_BYTE, "Faction" }, { true, FT_INT, "IconTextureFileID" }, { true, FT_INT, "RewardsBgTextureFileID" }, @@ -3476,6 +3337,9 @@ struct LfgDungeonsLoadInfo { false, FT_BYTE, "GroupID" }, { false, FT_BYTE, "OrderIndex" }, { false, FT_INT, "RequiredPlayerConditionId" }, + { false, FT_BYTE, "TargetLevel" }, + { false, FT_BYTE, "TargetLevelMin" }, + { false, FT_SHORT, "TargetLevelMax" }, { false, FT_SHORT, "RandomID" }, { false, FT_SHORT, "ScenarioID" }, { false, FT_SHORT, "FinalEncounterID" }, @@ -3488,12 +3352,11 @@ struct LfgDungeonsLoadInfo { false, FT_SHORT, "BonusReputationAmount" }, { false, FT_SHORT, "MentorItemLevel" }, { false, FT_BYTE, "MentorCharLevel" }, - { true, FT_INT, "ContentTuningID" }, { true, FT_INT, "Flags1" }, { true, FT_INT, "Flags2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 31, &LFGDungeonsMeta::Instance, HOTFIX_SEL_LFG_DUNGEONS }; + static constexpr DB2LoadInfo Instance{ Fields, 35, &LFGDungeonsMeta::Instance, HOTFIX_SEL_LFG_DUNGEONS }; }; struct LightLoadInfo @@ -3587,10 +3450,9 @@ struct LiquidTypeLoadInfo struct LockLoadInfo { - static constexpr DB2FieldMeta Fields[34] = + static constexpr DB2FieldMeta Fields[33] = { { false, FT_INT, "ID" }, - { true, FT_INT, "Flags" }, { true, FT_INT, "Index1" }, { true, FT_INT, "Index2" }, { true, FT_INT, "Index3" }, @@ -3625,7 +3487,7 @@ struct LockLoadInfo { false, FT_BYTE, "Action8" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 34, &LockMeta::Instance, HOTFIX_SEL_LOCK }; + static constexpr DB2LoadInfo Instance{ Fields, 33, &LockMeta::Instance, HOTFIX_SEL_LOCK }; }; struct MailTemplateLoadInfo @@ -3641,7 +3503,7 @@ struct MailTemplateLoadInfo struct MapLoadInfo { - static constexpr DB2FieldMeta Fields[28] = + static constexpr DB2FieldMeta Fields[25] = { { false, FT_INT, "ID" }, { false, FT_STRING_NOT_LOCALIZED, "Directory" }, @@ -3650,8 +3512,6 @@ struct MapLoadInfo { false, FT_STRING, "MapDescription1" }, { false, FT_STRING, "PvpShortDescription" }, { false, FT_STRING, "PvpLongDescription" }, - { false, FT_FLOAT, "CorpseX" }, - { false, FT_FLOAT, "CorpseY" }, { false, FT_BYTE, "MapType" }, { true, FT_BYTE, "InstanceType" }, { false, FT_BYTE, "ExpansionID" }, @@ -3662,18 +3522,17 @@ struct MapLoadInfo { true, FT_SHORT, "CosmeticParentMapID" }, { false, FT_BYTE, "TimeOffset" }, { false, FT_FLOAT, "MinimapIconScale" }, + { true, FT_INT, "RaidOffset" }, { true, FT_SHORT, "CorpseMapID" }, { false, FT_BYTE, "MaxPlayers" }, { true, FT_SHORT, "WindSettingsID" }, { true, FT_INT, "ZmpFileDataID" }, - { true, FT_INT, "WdtFileDataID" }, - { true, FT_INT, "NavigationMaxDistance" }, { true, FT_INT, "Flags1" }, { true, FT_INT, "Flags2" }, { true, FT_INT, "Flags3" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 28, &MapMeta::Instance, HOTFIX_SEL_MAP }; + static constexpr DB2LoadInfo Instance{ Fields, 25, &MapMeta::Instance, HOTFIX_SEL_MAP }; }; struct MapChallengeModeLoadInfo @@ -3700,14 +3559,14 @@ struct MapDifficultyLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Message" }, - { true, FT_INT, "DifficultyID" }, - { true, FT_INT, "LockID" }, - { true, FT_BYTE, "ResetInterval" }, - { true, FT_INT, "MaxPlayers" }, - { true, FT_INT, "ItemContext" }, - { true, FT_INT, "ItemContextPickerID" }, - { true, FT_INT, "Flags" }, + { false, FT_INT, "ItemContextPickerID" }, { true, FT_INT, "ContentTuningID" }, + { true, FT_INT, "ItemContext" }, + { false, FT_BYTE, "DifficultyID" }, + { false, FT_BYTE, "LockID" }, + { false, FT_BYTE, "ResetInterval" }, + { false, FT_BYTE, "MaxPlayers" }, + { false, FT_BYTE, "Flags" }, { false, FT_INT, "MapID" }, }; @@ -3728,18 +3587,6 @@ struct MapDifficultyXConditionLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 5, &MapDifficultyXConditionMeta::Instance, HOTFIX_SEL_MAP_DIFFICULTY_X_CONDITION }; }; -struct MawPowerLoadInfo -{ - static constexpr DB2FieldMeta Fields[3] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "SpellID" }, - { true, FT_INT, "MawPowerRarityID" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 3, &MawPowerMeta::Instance, HOTFIX_SEL_MAW_POWER }; -}; - struct ModifierTreeLoadInfo { static constexpr DB2FieldMeta Fields[8] = @@ -3751,7 +3598,7 @@ struct ModifierTreeLoadInfo { true, FT_INT, "Type" }, { true, FT_INT, "Asset" }, { true, FT_INT, "SecondaryAsset" }, - { true, FT_INT, "TertiaryAsset" }, + { true, FT_BYTE, "TertiaryAsset" }, }; static constexpr DB2LoadInfo Instance{ Fields, 8, &ModifierTreeMeta::Instance, HOTFIX_SEL_MODIFIER_TREE }; @@ -3759,7 +3606,7 @@ struct ModifierTreeLoadInfo struct MountLoadInfo { - static constexpr DB2FieldMeta Fields[13] = + static constexpr DB2FieldMeta Fields[11] = { { false, FT_STRING, "Name" }, { false, FT_STRING, "SourceText" }, @@ -3772,16 +3619,14 @@ struct MountLoadInfo { false, FT_INT, "PlayerConditionID" }, { false, FT_FLOAT, "MountFlyRideHeight" }, { true, FT_INT, "UiModelSceneID" }, - { true, FT_INT, "MountSpecialRiderAnimKitID" }, - { true, FT_INT, "MountSpecialSpellVisualKitID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 13, &MountMeta::Instance, HOTFIX_SEL_MOUNT }; + static constexpr DB2LoadInfo Instance{ Fields, 11, &MountMeta::Instance, HOTFIX_SEL_MOUNT }; }; struct MountCapabilityLoadInfo { - static constexpr DB2FieldMeta Fields[10] = + static constexpr DB2FieldMeta Fields[8] = { { false, FT_INT, "ID" }, { true, FT_INT, "Flags" }, @@ -3791,11 +3636,9 @@ struct MountCapabilityLoadInfo { true, FT_INT, "ReqSpellKnownID" }, { true, FT_INT, "ModSpellAuraID" }, { true, FT_SHORT, "ReqMapID" }, - { true, FT_INT, "PlayerConditionID" }, - { true, FT_INT, "FlightCapabilityID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 10, &MountCapabilityMeta::Instance, HOTFIX_SEL_MOUNT_CAPABILITY }; + static constexpr DB2LoadInfo Instance{ Fields, 8, &MountCapabilityMeta::Instance, HOTFIX_SEL_MOUNT_CAPABILITY }; }; struct MountTypeXCapabilityLoadInfo @@ -3826,17 +3669,16 @@ struct MountXDisplayLoadInfo struct MovieLoadInfo { - static constexpr DB2FieldMeta Fields[6] = + static constexpr DB2FieldMeta Fields[5] = { { false, FT_INT, "ID" }, { false, FT_BYTE, "Volume" }, { false, FT_BYTE, "KeyID" }, { false, FT_INT, "AudioFileDataID" }, { false, FT_INT, "SubtitleFileDataID" }, - { false, FT_INT, "SubtitleFileFormat" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 6, &MovieMeta::Instance, HOTFIX_SEL_MOVIE }; + static constexpr DB2LoadInfo Instance{ Fields, 5, &MovieMeta::Instance, HOTFIX_SEL_MOVIE }; }; struct MythicPlusSeasonLoadInfo @@ -3902,15 +3744,16 @@ struct NamesReservedLocaleLoadInfo struct NumTalentsAtLevelLoadInfo { - static constexpr DB2FieldMeta Fields[4] = + static constexpr DB2FieldMeta Fields[5] = { { false, FT_INT, "ID" }, { true, FT_INT, "NumTalents" }, { true, FT_INT, "NumTalentsDeathKnight" }, { true, FT_INT, "NumTalentsDemonHunter" }, + { false, FT_FLOAT, "NumberOfTalents" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 4, &NumTalentsAtLevelMeta::Instance, HOTFIX_SEL_NUM_TALENTS_AT_LEVEL }; + static constexpr DB2LoadInfo Instance{ Fields, 5, &NumTalentsAtLevelMeta::Instance, HOTFIX_SEL_NUM_TALENTS_AT_LEVEL }; }; struct OverrideSpellDataLoadInfo @@ -3973,14 +3816,16 @@ struct PhaseXPhaseGroupLoadInfo struct PlayerConditionLoadInfo { - static constexpr DB2FieldMeta Fields[160] = + static constexpr DB2FieldMeta Fields[147] = { - { false, FT_INT, "ID" }, { true, FT_LONG, "RaceMask" }, { false, FT_STRING, "FailureDescription" }, + { false, FT_INT, "ID" }, + { false, FT_SHORT, "MinLevel" }, + { false, FT_SHORT, "MaxLevel" }, { true, FT_INT, "ClassMask" }, { false, FT_INT, "SkillLogic" }, - { true, FT_INT, "LanguageID" }, + { false, FT_BYTE, "LanguageID" }, { false, FT_BYTE, "MinLanguage" }, { true, FT_INT, "MaxLanguage" }, { false, FT_SHORT, "MaxFactionID" }, @@ -3996,7 +3841,7 @@ struct PlayerConditionLoadInfo { false, FT_BYTE, "ItemFlags" }, { false, FT_INT, "AuraSpellLogic" }, { false, FT_SHORT, "WorldStateExpressionID" }, - { true, FT_INT, "WeatherID" }, + { false, FT_BYTE, "WeatherID" }, { false, FT_BYTE, "PartyStatus" }, { false, FT_BYTE, "LifetimeMaxPVPRank" }, { false, FT_INT, "AchievementLogic" }, @@ -4005,7 +3850,7 @@ struct PlayerConditionLoadInfo { false, FT_INT, "AreaLogic" }, { false, FT_INT, "LfgLogic" }, { false, FT_INT, "CurrencyLogic" }, - { true, FT_INT, "QuestKillID" }, + { false, FT_INT, "QuestKillID" }, { false, FT_INT, "QuestKillLogic" }, { true, FT_BYTE, "MinExpansionLevel" }, { true, FT_BYTE, "MaxExpansionLevel" }, @@ -4016,7 +3861,7 @@ struct PlayerConditionLoadInfo { true, FT_INT, "PhaseUseFlags" }, { false, FT_SHORT, "PhaseID" }, { false, FT_INT, "PhaseGroupID" }, - { true, FT_INT, "Flags" }, + { false, FT_BYTE, "Flags" }, { true, FT_BYTE, "ChrSpecializationIndex" }, { true, FT_BYTE, "ChrSpecializationRole" }, { false, FT_INT, "ModifierTreeID" }, @@ -4030,9 +3875,6 @@ struct PlayerConditionLoadInfo { true, FT_BYTE, "MinExpansionTier" }, { false, FT_BYTE, "MinPVPRank" }, { false, FT_BYTE, "MaxPVPRank" }, - { true, FT_INT, "ContentTuningID" }, - { true, FT_INT, "CovenantID" }, - { false, FT_INT, "TraitNodeEntryLogic" }, { false, FT_SHORT, "SkillID1" }, { false, FT_SHORT, "SkillID2" }, { false, FT_SHORT, "SkillID3" }, @@ -4051,18 +3893,18 @@ struct PlayerConditionLoadInfo { false, FT_BYTE, "MinReputation1" }, { false, FT_BYTE, "MinReputation2" }, { false, FT_BYTE, "MinReputation3" }, - { true, FT_INT, "PrevQuestID1" }, - { true, FT_INT, "PrevQuestID2" }, - { true, FT_INT, "PrevQuestID3" }, - { true, FT_INT, "PrevQuestID4" }, - { true, FT_INT, "CurrQuestID1" }, - { true, FT_INT, "CurrQuestID2" }, - { true, FT_INT, "CurrQuestID3" }, - { true, FT_INT, "CurrQuestID4" }, - { true, FT_INT, "CurrentCompletedQuestID1" }, - { true, FT_INT, "CurrentCompletedQuestID2" }, - { true, FT_INT, "CurrentCompletedQuestID3" }, - { true, FT_INT, "CurrentCompletedQuestID4" }, + { false, FT_INT, "PrevQuestID1" }, + { false, FT_INT, "PrevQuestID2" }, + { false, FT_INT, "PrevQuestID3" }, + { false, FT_INT, "PrevQuestID4" }, + { false, FT_INT, "CurrQuestID1" }, + { false, FT_INT, "CurrQuestID2" }, + { false, FT_INT, "CurrQuestID3" }, + { false, FT_INT, "CurrQuestID4" }, + { false, FT_INT, "CurrentCompletedQuestID1" }, + { false, FT_INT, "CurrentCompletedQuestID2" }, + { false, FT_INT, "CurrentCompletedQuestID3" }, + { false, FT_INT, "CurrentCompletedQuestID4" }, { true, FT_INT, "SpellID1" }, { true, FT_INT, "SpellID2" }, { true, FT_INT, "SpellID3" }, @@ -4123,21 +3965,9 @@ struct PlayerConditionLoadInfo { false, FT_INT, "QuestKillMonster6" }, { true, FT_INT, "MovementFlags1" }, { true, FT_INT, "MovementFlags2" }, - { true, FT_INT, "TraitNodeEntryID1" }, - { true, FT_INT, "TraitNodeEntryID2" }, - { true, FT_INT, "TraitNodeEntryID3" }, - { true, FT_INT, "TraitNodeEntryID4" }, - { false, FT_SHORT, "TraitNodeEntryMinRank1" }, - { false, FT_SHORT, "TraitNodeEntryMinRank2" }, - { false, FT_SHORT, "TraitNodeEntryMinRank3" }, - { false, FT_SHORT, "TraitNodeEntryMinRank4" }, - { false, FT_SHORT, "TraitNodeEntryMaxRank1" }, - { false, FT_SHORT, "TraitNodeEntryMaxRank2" }, - { false, FT_SHORT, "TraitNodeEntryMaxRank3" }, - { false, FT_SHORT, "TraitNodeEntryMaxRank4" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 160, &PlayerConditionMeta::Instance, HOTFIX_SEL_PLAYER_CONDITION }; + static constexpr DB2LoadInfo Instance{ Fields, 147, &PlayerConditionMeta::Instance, HOTFIX_SEL_PLAYER_CONDITION }; }; struct PowerDisplayLoadInfo @@ -4159,9 +3989,9 @@ struct PowerTypeLoadInfo { static constexpr DB2FieldMeta Fields[13] = { + { false, FT_INT, "ID" }, { false, FT_STRING_NOT_LOCALIZED, "NameGlobalStringTag" }, { false, FT_STRING_NOT_LOCALIZED, "CostGlobalStringTag" }, - { false, FT_INT, "ID" }, { true, FT_BYTE, "PowerTypeEnum" }, { true, FT_INT, "MinPower" }, { true, FT_INT, "MaxBasePower" }, @@ -4218,18 +4048,6 @@ struct PvpItemLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 3, &PVPItemMeta::Instance, HOTFIX_SEL_PVP_ITEM }; }; -struct PvpStatLoadInfo -{ - static constexpr DB2FieldMeta Fields[3] = - { - { false, FT_STRING, "Description" }, - { false, FT_INT, "ID" }, - { true, FT_INT, "MapID" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 3, &PVPStatMeta::Instance, HOTFIX_SEL_PVP_STAT }; -}; - struct PvpSeasonLoadInfo { static constexpr DB2FieldMeta Fields[4] = @@ -4245,7 +4063,7 @@ struct PvpSeasonLoadInfo struct PvpTalentLoadInfo { - static constexpr DB2FieldMeta Fields[10] = + static constexpr DB2FieldMeta Fields[9] = { { false, FT_STRING, "Description" }, { false, FT_INT, "ID" }, @@ -4256,10 +4074,9 @@ struct PvpTalentLoadInfo { true, FT_INT, "ActionBarSpellID" }, { true, FT_INT, "PvpTalentCategoryID" }, { true, FT_INT, "LevelRequired" }, - { true, FT_INT, "PlayerConditionID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 10, &PvpTalentMeta::Instance, HOTFIX_SEL_PVP_TALENT }; + static constexpr DB2LoadInfo Instance{ Fields, 9, &PvpTalentMeta::Instance, HOTFIX_SEL_PVP_TALENT }; }; struct PvpTalentCategoryLoadInfo @@ -4291,8 +4108,8 @@ struct PvpTierLoadInfo { static constexpr DB2FieldMeta Fields[9] = { - { false, FT_STRING, "Name" }, { false, FT_INT, "ID" }, + { false, FT_STRING, "Name" }, { true, FT_SHORT, "MinRating" }, { true, FT_SHORT, "MaxRating" }, { true, FT_INT, "PrevTier" }, @@ -4341,16 +4158,15 @@ struct QuestInfoLoadInfo struct QuestLineXQuestLoadInfo { - static constexpr DB2FieldMeta Fields[5] = + static constexpr DB2FieldMeta Fields[4] = { { false, FT_INT, "ID" }, { false, FT_INT, "QuestLineID" }, { false, FT_INT, "QuestID" }, { false, FT_INT, "OrderIndex" }, - { true, FT_INT, "Flags" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 5, &QuestLineXQuestMeta::Instance, HOTFIX_SEL_QUEST_LINE_X_QUEST }; + static constexpr DB2LoadInfo Instance{ Fields, 4, &QuestLineXQuestMeta::Instance, HOTFIX_SEL_QUEST_LINE_X_QUEST }; }; struct QuestMoneyRewardLoadInfo @@ -4401,14 +4217,13 @@ struct QuestSortLoadInfo struct QuestV2LoadInfo { - static constexpr DB2FieldMeta Fields[3] = + static constexpr DB2FieldMeta Fields[2] = { { false, FT_INT, "ID" }, { false, FT_SHORT, "UniqueBitFlag" }, - { true, FT_INT, "UiQuestDetailsTheme" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 3, &QuestV2Meta::Instance, HOTFIX_SEL_QUEST_V2 }; + static constexpr DB2LoadInfo Instance{ Fields, 2, &QuestV2Meta::Instance, HOTFIX_SEL_QUEST_V2 }; }; struct QuestXpLoadInfo @@ -4416,16 +4231,16 @@ struct QuestXpLoadInfo static constexpr DB2FieldMeta Fields[11] = { { false, FT_INT, "ID" }, - { false, FT_SHORT, "Difficulty1" }, - { false, FT_SHORT, "Difficulty2" }, - { false, FT_SHORT, "Difficulty3" }, - { false, FT_SHORT, "Difficulty4" }, - { false, FT_SHORT, "Difficulty5" }, - { false, FT_SHORT, "Difficulty6" }, - { false, FT_SHORT, "Difficulty7" }, - { false, FT_SHORT, "Difficulty8" }, - { false, FT_SHORT, "Difficulty9" }, - { false, FT_SHORT, "Difficulty10" }, + { true, FT_INT, "Difficulty1" }, + { true, FT_INT, "Difficulty2" }, + { true, FT_INT, "Difficulty3" }, + { true, FT_INT, "Difficulty4" }, + { true, FT_INT, "Difficulty5" }, + { true, FT_INT, "Difficulty6" }, + { true, FT_INT, "Difficulty7" }, + { true, FT_INT, "Difficulty8" }, + { true, FT_INT, "Difficulty9" }, + { true, FT_INT, "Difficulty10" }, }; static constexpr DB2LoadInfo Instance{ Fields, 11, &QuestXPMeta::Instance, HOTFIX_SEL_QUEST_XP }; @@ -4433,28 +4248,10 @@ struct QuestXpLoadInfo struct RandPropPointsLoadInfo { - static constexpr DB2FieldMeta Fields[35] = + static constexpr DB2FieldMeta Fields[17] = { { false, FT_INT, "ID" }, - { false, FT_FLOAT, "DamageReplaceStatF" }, - { false, FT_FLOAT, "DamageSecondaryF" }, { true, FT_INT, "DamageReplaceStat" }, - { true, FT_INT, "DamageSecondary" }, - { false, FT_FLOAT, "EpicF1" }, - { false, FT_FLOAT, "EpicF2" }, - { false, FT_FLOAT, "EpicF3" }, - { false, FT_FLOAT, "EpicF4" }, - { false, FT_FLOAT, "EpicF5" }, - { false, FT_FLOAT, "SuperiorF1" }, - { false, FT_FLOAT, "SuperiorF2" }, - { false, FT_FLOAT, "SuperiorF3" }, - { false, FT_FLOAT, "SuperiorF4" }, - { false, FT_FLOAT, "SuperiorF5" }, - { false, FT_FLOAT, "GoodF1" }, - { false, FT_FLOAT, "GoodF2" }, - { false, FT_FLOAT, "GoodF3" }, - { false, FT_FLOAT, "GoodF4" }, - { false, FT_FLOAT, "GoodF5" }, { false, FT_INT, "Epic1" }, { false, FT_INT, "Epic2" }, { false, FT_INT, "Epic3" }, @@ -4472,7 +4269,7 @@ struct RandPropPointsLoadInfo { false, FT_INT, "Good5" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 35, &RandPropPointsMeta::Instance, HOTFIX_SEL_RAND_PROP_POINTS }; + static constexpr DB2LoadInfo Instance{ Fields, 17, &RandPropPointsMeta::Instance, HOTFIX_SEL_RAND_PROP_POINTS }; }; struct RewardPackLoadInfo @@ -4541,7 +4338,7 @@ struct ScenarioStepLoadInfo { false, FT_STRING, "Title" }, { false, FT_SHORT, "ScenarioID" }, { false, FT_INT, "Criteriatreeid" }, - { true, FT_INT, "RewardQuestID" }, + { false, FT_INT, "RewardQuestID" }, { true, FT_INT, "RelatedStep" }, { false, FT_SHORT, "Supersedes" }, { false, FT_BYTE, "OrderIndex" }, @@ -4580,14 +4377,13 @@ struct SceneScriptGlobalTextLoadInfo struct SceneScriptPackageLoadInfo { - static constexpr DB2FieldMeta Fields[3] = + static constexpr DB2FieldMeta Fields[2] = { { false, FT_INT, "ID" }, { false, FT_STRING_NOT_LOCALIZED, "Name" }, - { true, FT_INT, "Unknown915" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 3, &SceneScriptPackageMeta::Instance, HOTFIX_SEL_SCENE_SCRIPT_PACKAGE }; + static constexpr DB2LoadInfo Instance{ Fields, 2, &SceneScriptPackageMeta::Instance, HOTFIX_SEL_SCENE_SCRIPT_PACKAGE }; }; struct SceneScriptTextLoadInfo @@ -4615,7 +4411,7 @@ struct ServerMessagesLoadInfo struct SkillLineLoadInfo { - static constexpr DB2FieldMeta Fields[15] = + static constexpr DB2FieldMeta Fields[13] = { { false, FT_STRING, "DisplayName" }, { false, FT_STRING, "AlternateVerb" }, @@ -4630,11 +4426,9 @@ struct SkillLineLoadInfo { true, FT_INT, "ParentTierIndex" }, { false, FT_SHORT, "Flags" }, { true, FT_INT, "SpellBookSpellID" }, - { true, FT_INT, "ExpansionNameSharedStringID" }, - { true, FT_INT, "HordeExpansionNameSharedStringID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 15, &SkillLineMeta::Instance, HOTFIX_SEL_SKILL_LINE }; + static constexpr DB2LoadInfo Instance{ Fields, 13, &SkillLineMeta::Instance, HOTFIX_SEL_SKILL_LINE }; }; struct SkillLineAbilityLoadInfo @@ -4642,8 +4436,6 @@ struct SkillLineAbilityLoadInfo static constexpr DB2FieldMeta Fields[17] = { { true, FT_LONG, "RaceMask" }, - { false, FT_STRING, "AbilityVerb" }, - { false, FT_STRING, "AbilityAllVerb" }, { false, FT_INT, "ID" }, { true, FT_SHORT, "SkillLine" }, { true, FT_INT, "Spell" }, @@ -4653,11 +4445,13 @@ struct SkillLineAbilityLoadInfo { true, FT_BYTE, "AcquireMethod" }, { true, FT_SHORT, "TrivialSkillLineRankHigh" }, { true, FT_SHORT, "TrivialSkillLineRankLow" }, - { true, FT_INT, "Flags" }, + { true, FT_BYTE, "Flags" }, { true, FT_BYTE, "NumSkillUps" }, { true, FT_SHORT, "UniqueBit" }, { true, FT_SHORT, "TradeSkillCategoryID" }, { true, FT_SHORT, "SkillupSkillLineID" }, + { true, FT_INT, "CharacterPoints1" }, + { true, FT_INT, "CharacterPoints2" }, }; static constexpr DB2LoadInfo Instance{ Fields, 17, &SkillLineAbilityMeta::Instance, HOTFIX_SEL_SKILL_LINE_ABILITY }; @@ -4678,7 +4472,7 @@ struct SkillLineXTraitTreeLoadInfo struct SkillRaceClassInfoLoadInfo { - static constexpr DB2FieldMeta Fields[8] = + static constexpr DB2FieldMeta Fields[9] = { { false, FT_INT, "ID" }, { true, FT_LONG, "RaceMask" }, @@ -4688,23 +4482,10 @@ struct SkillRaceClassInfoLoadInfo { true, FT_BYTE, "Availability" }, { true, FT_BYTE, "MinLevel" }, { true, FT_SHORT, "SkillTierID" }, + { true, FT_INT, "Unknown115_1" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 8, &SkillRaceClassInfoMeta::Instance, HOTFIX_SEL_SKILL_RACE_CLASS_INFO }; -}; - -struct SoulbindConduitRankLoadInfo -{ - static constexpr DB2FieldMeta Fields[5] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "RankIndex" }, - { true, FT_INT, "SpellID" }, - { false, FT_FLOAT, "AuraPointsOverride" }, - { false, FT_INT, "SoulbindConduitID" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 5, &SoulbindConduitRankMeta::Instance, HOTFIX_SEL_SOULBIND_CONDUIT_RANK }; + static constexpr DB2LoadInfo Instance{ Fields, 9, &SkillRaceClassInfoMeta::Instance, HOTFIX_SEL_SKILL_RACE_CLASS_INFO }; }; struct SoundKitLoadInfo @@ -4712,9 +4493,9 @@ struct SoundKitLoadInfo static constexpr DB2FieldMeta Fields[17] = { { false, FT_INT, "ID" }, - { true, FT_INT, "SoundType" }, + { false, FT_BYTE, "SoundType" }, { false, FT_FLOAT, "VolumeFloat" }, - { true, FT_INT, "Flags" }, + { false, FT_SHORT, "Flags" }, { false, FT_FLOAT, "MinDistance" }, { false, FT_FLOAT, "DistanceCutoff" }, { false, FT_BYTE, "EAXDef" }, @@ -4766,7 +4547,7 @@ struct SpellAuraOptionsLoadInfo { { false, FT_INT, "ID" }, { false, FT_BYTE, "DifficultyID" }, - { false, FT_SHORT, "CumulativeAura" }, + { false, FT_INT, "CumulativeAura" }, { true, FT_INT, "ProcCategoryRecovery" }, { false, FT_BYTE, "ProcChance" }, { true, FT_INT, "ProcCharges" }, @@ -4781,38 +4562,35 @@ struct SpellAuraOptionsLoadInfo struct SpellAuraRestrictionsLoadInfo { - static constexpr DB2FieldMeta Fields[15] = + static constexpr DB2FieldMeta Fields[11] = { { false, FT_INT, "ID" }, - { true, FT_INT, "DifficultyID" }, - { true, FT_INT, "CasterAuraState" }, - { true, FT_INT, "TargetAuraState" }, - { true, FT_INT, "ExcludeCasterAuraState" }, - { true, FT_INT, "ExcludeTargetAuraState" }, + { false, FT_BYTE, "DifficultyID" }, + { false, FT_BYTE, "CasterAuraState" }, + { false, FT_BYTE, "TargetAuraState" }, + { false, FT_BYTE, "ExcludeCasterAuraState" }, + { false, FT_BYTE, "ExcludeTargetAuraState" }, { true, FT_INT, "CasterAuraSpell" }, { true, FT_INT, "TargetAuraSpell" }, { true, FT_INT, "ExcludeCasterAuraSpell" }, { true, FT_INT, "ExcludeTargetAuraSpell" }, - { true, FT_INT, "CasterAuraType" }, - { true, FT_INT, "TargetAuraType" }, - { true, FT_INT, "ExcludeCasterAuraType" }, - { true, FT_INT, "ExcludeTargetAuraType" }, { false, FT_INT, "SpellID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 15, &SpellAuraRestrictionsMeta::Instance, HOTFIX_SEL_SPELL_AURA_RESTRICTIONS }; + static constexpr DB2LoadInfo Instance{ Fields, 11, &SpellAuraRestrictionsMeta::Instance, HOTFIX_SEL_SPELL_AURA_RESTRICTIONS }; }; struct SpellCastTimesLoadInfo { - static constexpr DB2FieldMeta Fields[3] = + static constexpr DB2FieldMeta Fields[4] = { { false, FT_INT, "ID" }, { true, FT_INT, "Base" }, + { true, FT_SHORT, "PerLevel" }, { true, FT_INT, "Minimum" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 3, &SpellCastTimesMeta::Instance, HOTFIX_SEL_SPELL_CAST_TIMES }; + static constexpr DB2LoadInfo Instance{ Fields, 4, &SpellCastTimesMeta::Instance, HOTFIX_SEL_SPELL_CAST_TIMES }; }; struct SpellCastingRequirementsLoadInfo @@ -4902,14 +4680,15 @@ struct SpellCooldownsLoadInfo struct SpellDurationLoadInfo { - static constexpr DB2FieldMeta Fields[3] = + static constexpr DB2FieldMeta Fields[4] = { { false, FT_INT, "ID" }, { true, FT_INT, "Duration" }, + { false, FT_INT, "DurationPerLevel" }, { true, FT_INT, "MaxDuration" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 3, &SpellDurationMeta::Instance, HOTFIX_SEL_SPELL_DURATION }; + static constexpr DB2LoadInfo Instance{ Fields, 4, &SpellDurationMeta::Instance, HOTFIX_SEL_SPELL_DURATION }; }; struct SpellEffectLoadInfo @@ -4917,16 +4696,18 @@ struct SpellEffectLoadInfo static constexpr DB2FieldMeta Fields[36] = { { false, FT_INT, "ID" }, - { true, FT_SHORT, "EffectAura" }, { true, FT_INT, "DifficultyID" }, { true, FT_INT, "EffectIndex" }, { false, FT_INT, "Effect" }, { false, FT_FLOAT, "EffectAmplitude" }, { true, FT_INT, "EffectAttributes" }, + { true, FT_SHORT, "EffectAura" }, { true, FT_INT, "EffectAuraPeriod" }, + { true, FT_INT, "EffectBasePoints" }, { false, FT_FLOAT, "EffectBonusCoefficient" }, { false, FT_FLOAT, "EffectChainAmplitude" }, { true, FT_INT, "EffectChainTargets" }, + { true, FT_INT, "EffectDieSides" }, { true, FT_INT, "EffectItemType" }, { true, FT_INT, "EffectMechanic" }, { false, FT_FLOAT, "EffectPointsPerResource" }, @@ -4939,8 +4720,6 @@ struct SpellEffectLoadInfo { false, FT_FLOAT, "Variance" }, { false, FT_FLOAT, "ResourceCoefficient" }, { false, FT_FLOAT, "GroupSizeBasePointsCoefficient" }, - { false, FT_FLOAT, "EffectBasePoints" }, - { true, FT_INT, "ScalingClass" }, { true, FT_INT, "EffectMiscValue1" }, { true, FT_INT, "EffectMiscValue2" }, { false, FT_INT, "EffectRadiusIndex1" }, @@ -5001,26 +4780,27 @@ struct SpellInterruptsLoadInfo struct SpellItemEnchantmentLoadInfo { - static constexpr DB2FieldMeta Fields[32] = + static constexpr DB2FieldMeta Fields[33] = { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, { false, FT_STRING, "HordeName" }, - { true, FT_INT, "Duration" }, { false, FT_INT, "EffectArg1" }, { false, FT_INT, "EffectArg2" }, { false, FT_INT, "EffectArg3" }, { false, FT_FLOAT, "EffectScalingPoints1" }, { false, FT_FLOAT, "EffectScalingPoints2" }, { false, FT_FLOAT, "EffectScalingPoints3" }, - { false, FT_INT, "IconFileDataID" }, - { true, FT_INT, "MinItemLevel" }, - { true, FT_INT, "MaxItemLevel" }, + { false, FT_INT, "GemItemID" }, { false, FT_INT, "TransmogUseConditionID" }, { false, FT_INT, "TransmogCost" }, + { false, FT_INT, "IconFileDataID" }, { true, FT_SHORT, "EffectPointsMin1" }, { true, FT_SHORT, "EffectPointsMin2" }, { true, FT_SHORT, "EffectPointsMin3" }, + { true, FT_SHORT, "EffectPointsMax1" }, + { true, FT_SHORT, "EffectPointsMax2" }, + { true, FT_SHORT, "EffectPointsMax3" }, { false, FT_SHORT, "ItemVisual" }, { false, FT_SHORT, "Flags" }, { false, FT_SHORT, "RequiredSkillID" }, @@ -5037,7 +4817,7 @@ struct SpellItemEnchantmentLoadInfo { false, FT_BYTE, "MaxLevel" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 32, &SpellItemEnchantmentMeta::Instance, HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT }; + static constexpr DB2LoadInfo Instance{ Fields, 33, &SpellItemEnchantmentMeta::Instance, HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT }; }; struct SpellItemEnchantmentConditionLoadInfo @@ -5125,10 +4905,10 @@ struct SpellLevelsLoadInfo { { false, FT_INT, "ID" }, { false, FT_BYTE, "DifficultyID" }, + { true, FT_SHORT, "BaseLevel" }, { true, FT_SHORT, "MaxLevel" }, + { true, FT_SHORT, "SpellLevel" }, { false, FT_BYTE, "MaxPassiveAuraLevel" }, - { true, FT_INT, "BaseLevel" }, - { true, FT_INT, "SpellLevel" }, { false, FT_INT, "SpellID" }, }; @@ -5137,7 +4917,7 @@ struct SpellLevelsLoadInfo struct SpellMiscLoadInfo { - static constexpr DB2FieldMeta Fields[31] = + static constexpr DB2FieldMeta Fields[29] = { { false, FT_INT, "ID" }, { true, FT_INT, "Attributes1" }, @@ -5167,12 +4947,10 @@ struct SpellMiscLoadInfo { true, FT_INT, "ActiveIconFileDataID" }, { true, FT_INT, "ContentTuningID" }, { true, FT_INT, "ShowFutureSpellPlayerConditionID" }, - { true, FT_INT, "SpellVisualScript" }, - { true, FT_INT, "ActiveSpellVisualScript" }, { false, FT_INT, "SpellID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 31, &SpellMiscMeta::Instance, HOTFIX_SEL_SPELL_MISC }; + static constexpr DB2LoadInfo Instance{ Fields, 29, &SpellMiscMeta::Instance, HOTFIX_SEL_SPELL_MISC }; }; struct SpellNameLoadInfo @@ -5188,7 +4966,7 @@ struct SpellNameLoadInfo struct SpellPowerLoadInfo { - static constexpr DB2FieldMeta Fields[15] = + static constexpr DB2FieldMeta Fields[14] = { { false, FT_INT, "ID" }, { false, FT_BYTE, "OrderIndex" }, @@ -5199,7 +4977,6 @@ struct SpellPowerLoadInfo { true, FT_INT, "AltPowerBarID" }, { false, FT_FLOAT, "PowerCostPct" }, { false, FT_FLOAT, "PowerCostMaxPct" }, - { false, FT_FLOAT, "OptionalCostPct" }, { false, FT_FLOAT, "PowerPctPerSecond" }, { true, FT_BYTE, "PowerType" }, { true, FT_INT, "RequiredAuraSpellID" }, @@ -5207,7 +4984,7 @@ struct SpellPowerLoadInfo { false, FT_INT, "SpellID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 15, &SpellPowerMeta::Instance, HOTFIX_SEL_SPELL_POWER }; + static constexpr DB2LoadInfo Instance{ Fields, 14, &SpellPowerMeta::Instance, HOTFIX_SEL_SPELL_POWER }; }; struct SpellPowerDifficultyLoadInfo @@ -5240,7 +5017,7 @@ struct SpellProcsPerMinuteModLoadInfo { { false, FT_INT, "ID" }, { false, FT_BYTE, "Type" }, - { true, FT_INT, "Param" }, + { true, FT_SHORT, "Param" }, { false, FT_FLOAT, "Coeff" }, { false, FT_INT, "SpellProcsPerMinuteID" }, }; @@ -5281,7 +5058,7 @@ struct SpellRangeLoadInfo struct SpellReagentsLoadInfo { - static constexpr DB2FieldMeta Fields[34] = + static constexpr DB2FieldMeta Fields[18] = { { false, FT_INT, "ID" }, { true, FT_INT, "SpellID" }, @@ -5301,25 +5078,9 @@ struct SpellReagentsLoadInfo { true, FT_SHORT, "ReagentCount6" }, { true, FT_SHORT, "ReagentCount7" }, { true, FT_SHORT, "ReagentCount8" }, - { true, FT_SHORT, "ReagentRecraftCount1" }, - { true, FT_SHORT, "ReagentRecraftCount2" }, - { true, FT_SHORT, "ReagentRecraftCount3" }, - { true, FT_SHORT, "ReagentRecraftCount4" }, - { true, FT_SHORT, "ReagentRecraftCount5" }, - { true, FT_SHORT, "ReagentRecraftCount6" }, - { true, FT_SHORT, "ReagentRecraftCount7" }, - { true, FT_SHORT, "ReagentRecraftCount8" }, - { false, FT_BYTE, "ReagentSource1" }, - { false, FT_BYTE, "ReagentSource2" }, - { false, FT_BYTE, "ReagentSource3" }, - { false, FT_BYTE, "ReagentSource4" }, - { false, FT_BYTE, "ReagentSource5" }, - { false, FT_BYTE, "ReagentSource6" }, - { false, FT_BYTE, "ReagentSource7" }, - { false, FT_BYTE, "ReagentSource8" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 34, &SpellReagentsMeta::Instance, HOTFIX_SEL_SPELL_REAGENTS }; + }; + + static constexpr DB2LoadInfo Instance{ Fields, 18, &SpellReagentsMeta::Instance, HOTFIX_SEL_SPELL_REAGENTS }; }; struct SpellReagentsCurrencyLoadInfo @@ -5337,16 +5098,22 @@ struct SpellReagentsCurrencyLoadInfo struct SpellScalingLoadInfo { - static constexpr DB2FieldMeta Fields[5] = + static constexpr DB2FieldMeta Fields[11] = { { false, FT_INT, "ID" }, { true, FT_INT, "SpellID" }, + { true, FT_INT, "Class" }, { false, FT_INT, "MinScalingLevel" }, { false, FT_INT, "MaxScalingLevel" }, { true, FT_SHORT, "ScalesFromItemLevel" }, + { true, FT_INT, "CastTimeMin" }, + { true, FT_INT, "CastTimeMax" }, + { true, FT_INT, "CastTimeMaxLevel" }, + { false, FT_FLOAT, "NerfFactor" }, + { true, FT_INT, "NerfMaxLevel" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 5, &SpellScalingMeta::Instance, HOTFIX_SEL_SPELL_SCALING }; + static constexpr DB2LoadInfo Instance{ Fields, 11, &SpellScalingMeta::Instance, HOTFIX_SEL_SPELL_SCALING }; }; struct SpellShapeshiftLoadInfo @@ -5367,11 +5134,11 @@ struct SpellShapeshiftLoadInfo struct SpellShapeshiftFormLoadInfo { - static constexpr DB2FieldMeta Fields[18] = + static constexpr DB2FieldMeta Fields[22] = { { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, - { false, FT_INT, "CreatureDisplayID" }, + { false, FT_INT, "Field115052124002" }, { true, FT_BYTE, "CreatureType" }, { true, FT_INT, "Flags" }, { true, FT_INT, "AttackIconFileID" }, @@ -5379,6 +5146,10 @@ struct SpellShapeshiftFormLoadInfo { true, FT_SHORT, "CombatRoundTime" }, { false, FT_FLOAT, "DamageVariance" }, { false, FT_SHORT, "MountTypeID" }, + { false, FT_INT, "CreatureDisplayID1" }, + { false, FT_INT, "CreatureDisplayID2" }, + { false, FT_INT, "CreatureDisplayID3" }, + { false, FT_INT, "CreatureDisplayID4" }, { false, FT_INT, "PresetSpellID1" }, { false, FT_INT, "PresetSpellID2" }, { false, FT_INT, "PresetSpellID3" }, @@ -5389,7 +5160,7 @@ struct SpellShapeshiftFormLoadInfo { false, FT_INT, "PresetSpellID8" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 18, &SpellShapeshiftFormMeta::Instance, HOTFIX_SEL_SPELL_SHAPESHIFT_FORM }; + static constexpr DB2LoadInfo Instance{ Fields, 22, &SpellShapeshiftFormMeta::Instance, HOTFIX_SEL_SPELL_SHAPESHIFT_FORM }; }; struct SpellTargetRestrictionsLoadInfo @@ -5427,7 +5198,7 @@ struct SpellTotemsLoadInfo struct SpellVisualLoadInfo { - static constexpr DB2FieldMeta Fields[21] = + static constexpr DB2FieldMeta Fields[23] = { { false, FT_INT, "ID" }, { false, FT_FLOAT, "MissileCastOffset1" }, @@ -5450,14 +5221,16 @@ struct SpellVisualLoadInfo { false, FT_INT, "LowViolenceSpellVisualID" }, { false, FT_INT, "RaidSpellVisualMissileSetID" }, { true, FT_INT, "ReducedUnexpectedCameraMovementSpellVisualID" }, + { false, FT_SHORT, "AreaModel" }, + { true, FT_BYTE, "HasMissile" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 21, &SpellVisualMeta::Instance, HOTFIX_SEL_SPELL_VISUAL }; + static constexpr DB2LoadInfo Instance{ Fields, 23, &SpellVisualMeta::Instance, HOTFIX_SEL_SPELL_VISUAL }; }; struct SpellVisualEffectNameLoadInfo { - static constexpr DB2FieldMeta Fields[16] = + static constexpr DB2FieldMeta Fields[15] = { { false, FT_INT, "ID" }, { true, FT_INT, "ModelFileDataID" }, @@ -5474,15 +5247,14 @@ struct SpellVisualEffectNameLoadInfo { false, FT_INT, "RibbonQualityID" }, { true, FT_INT, "DissolveEffectID" }, { true, FT_INT, "ModelPosition" }, - { true, FT_BYTE, "Unknown901" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 16, &SpellVisualEffectNameMeta::Instance, HOTFIX_SEL_SPELL_VISUAL_EFFECT_NAME }; + static constexpr DB2LoadInfo Instance{ Fields, 15, &SpellVisualEffectNameMeta::Instance, HOTFIX_SEL_SPELL_VISUAL_EFFECT_NAME }; }; struct SpellVisualMissileLoadInfo { - static constexpr DB2FieldMeta Fields[22] = + static constexpr DB2FieldMeta Fields[20] = { { false, FT_FLOAT, "CastOffset1" }, { false, FT_FLOAT, "CastOffset2" }, @@ -5503,12 +5275,10 @@ struct SpellVisualMissileLoadInfo { false, FT_INT, "Flags" }, { false, FT_SHORT, "SpellMissileMotionID" }, { false, FT_INT, "AnimKitID" }, - { true, FT_BYTE, "ClutterLevel" }, - { true, FT_INT, "DecayTimeAfterImpact" }, { false, FT_INT, "SpellVisualMissileSetID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 22, &SpellVisualMissileMeta::Instance, HOTFIX_SEL_SPELL_VISUAL_MISSILE }; + static constexpr DB2LoadInfo Instance{ Fields, 20, &SpellVisualMissileMeta::Instance, HOTFIX_SEL_SPELL_VISUAL_MISSILE }; }; struct SpellVisualKitLoadInfo @@ -5516,10 +5286,10 @@ struct SpellVisualKitLoadInfo static constexpr DB2FieldMeta Fields[7] = { { false, FT_INT, "ID" }, - { true, FT_BYTE, "FallbackPriority" }, - { true, FT_INT, "FallbackSpellVisualKitId" }, + { false, FT_INT, "FallbackSpellVisualKitId" }, { false, FT_SHORT, "DelayMin" }, { false, FT_SHORT, "DelayMax" }, + { false, FT_FLOAT, "FallbackPriority" }, { true, FT_INT, "Flags1" }, { true, FT_INT, "Flags2" }, }; @@ -5535,7 +5305,7 @@ struct SpellXSpellVisualLoadInfo { false, FT_BYTE, "DifficultyID" }, { false, FT_INT, "SpellVisualID" }, { false, FT_FLOAT, "Probability" }, - { true, FT_INT, "Flags" }, + { false, FT_BYTE, "Flags" }, { true, FT_INT, "Priority" }, { true, FT_INT, "SpellIconFileID" }, { true, FT_INT, "ActiveIconFileID" }, @@ -5593,27 +5363,44 @@ struct TactKeyLoadInfo struct TalentLoadInfo { - static constexpr DB2FieldMeta Fields[11] = + static constexpr DB2FieldMeta Fields[28] = { { false, FT_INT, "ID" }, { false, FT_STRING, "Description" }, { false, FT_BYTE, "TierID" }, { false, FT_BYTE, "Flags" }, { false, FT_BYTE, "ColumnIndex" }, + { false, FT_SHORT, "TabID" }, { false, FT_BYTE, "ClassID" }, { false, FT_SHORT, "SpecID" }, - { false, FT_INT, "SpellID" }, - { false, FT_INT, "OverridesSpellID" }, - { false, FT_BYTE, "CategoryMask1" }, - { false, FT_BYTE, "CategoryMask2" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 11, &TalentMeta::Instance, HOTFIX_SEL_TALENT }; + { true, FT_INT, "SpellID" }, + { true, FT_INT, "OverridesSpellID" }, + { true, FT_INT, "RequiredSpellID" }, + { true, FT_INT, "CategoryMask1" }, + { true, FT_INT, "CategoryMask2" }, + { true, FT_INT, "SpellRank1" }, + { true, FT_INT, "SpellRank2" }, + { true, FT_INT, "SpellRank3" }, + { true, FT_INT, "SpellRank4" }, + { true, FT_INT, "SpellRank5" }, + { true, FT_INT, "SpellRank6" }, + { true, FT_INT, "SpellRank7" }, + { true, FT_INT, "SpellRank8" }, + { true, FT_INT, "SpellRank9" }, + { true, FT_INT, "PrereqTalent1" }, + { true, FT_INT, "PrereqTalent2" }, + { true, FT_INT, "PrereqTalent3" }, + { true, FT_INT, "PrereqRank1" }, + { true, FT_INT, "PrereqRank2" }, + { true, FT_INT, "PrereqRank3" }, + }; + + static constexpr DB2LoadInfo Instance{ Fields, 28, &TalentMeta::Instance, HOTFIX_SEL_TALENT }; }; struct TaxiNodesLoadInfo { - static constexpr DB2FieldMeta Fields[20] = + static constexpr DB2FieldMeta Fields[19] = { { false, FT_STRING, "Name" }, { false, FT_FLOAT, "PosX" }, @@ -5624,12 +5411,11 @@ struct TaxiNodesLoadInfo { false, FT_FLOAT, "FlightMapOffsetX" }, { false, FT_FLOAT, "FlightMapOffsetY" }, { false, FT_INT, "ID" }, - { false, FT_SHORT, "ContinentID" }, - { true, FT_INT, "ConditionID" }, + { false, FT_INT, "ContinentID" }, + { false, FT_INT, "ConditionID" }, { false, FT_SHORT, "CharacterBitNumber" }, { true, FT_INT, "Flags" }, { true, FT_INT, "UiTextureKitID" }, - { true, FT_INT, "MinimapAtlasMemberID" }, { false, FT_FLOAT, "Facing" }, { false, FT_INT, "SpecialIconConditionID" }, { false, FT_INT, "VisibilityConditionID" }, @@ -5637,7 +5423,7 @@ struct TaxiNodesLoadInfo { true, FT_INT, "MountCreatureID2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 20, &TaxiNodesMeta::Instance, HOTFIX_SEL_TAXI_NODES }; + static constexpr DB2LoadInfo Instance{ Fields, 19, &TaxiNodesMeta::Instance, HOTFIX_SEL_TAXI_NODES }; }; struct TaxiPathLoadInfo @@ -5666,8 +5452,8 @@ struct TaxiPathNodeLoadInfo { false, FT_SHORT, "ContinentID" }, { true, FT_INT, "Flags" }, { false, FT_INT, "Delay" }, - { true, FT_INT, "ArrivalEventID" }, - { true, FT_INT, "DepartureEventID" }, + { false, FT_INT, "ArrivalEventID" }, + { false, FT_INT, "DepartureEventID" }, }; static constexpr DB2LoadInfo Instance{ Fields, 11, &TaxiPathNodeMeta::Instance, HOTFIX_SEL_TAXI_PATH_NODE }; @@ -5833,7 +5619,7 @@ struct TraitNodeLoadInfo { true, FT_INT, "TraitTreeID" }, { true, FT_INT, "PosX" }, { true, FT_INT, "PosY" }, - { true, FT_BYTE, "Type" }, + { false, FT_BYTE, "Type" }, { true, FT_INT, "Flags" }, }; @@ -5969,7 +5755,7 @@ struct TraitTreeLoadInfo { { false, FT_INT, "ID" }, { true, FT_INT, "TraitSystemID" }, - { true, FT_INT, "Unused1000_1" }, + { true, FT_INT, "TraitTreeID" }, { true, FT_INT, "FirstTraitNodeID" }, { true, FT_INT, "PlayerConditionID" }, { true, FT_INT, "Flags" }, @@ -6012,7 +5798,7 @@ struct TraitTreeXTraitCostLoadInfo static constexpr DB2FieldMeta Fields[3] = { { false, FT_INT, "ID" }, - { false, FT_INT, "TraitTreeID" }, + { true, FT_INT, "TraitTreeID" }, { true, FT_INT, "TraitCostID" }, }; @@ -6032,23 +5818,9 @@ struct TraitTreeXTraitCurrencyLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 4, &TraitTreeXTraitCurrencyMeta::Instance, HOTFIX_SEL_TRAIT_TREE_X_TRAIT_CURRENCY }; }; -struct TransmogIllusionLoadInfo -{ - static constexpr DB2FieldMeta Fields[5] = - { - { false, FT_INT, "ID" }, - { true, FT_INT, "UnlockConditionID" }, - { true, FT_INT, "TransmogCost" }, - { true, FT_INT, "SpellItemEnchantmentID" }, - { true, FT_INT, "Flags" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 5, &TransmogIllusionMeta::Instance, HOTFIX_SEL_TRANSMOG_ILLUSION }; -}; - struct TransmogSetLoadInfo { - static constexpr DB2FieldMeta Fields[13] = + static constexpr DB2FieldMeta Fields[10] = { { false, FT_STRING, "Name" }, { false, FT_INT, "ID" }, @@ -6058,22 +5830,19 @@ struct TransmogSetLoadInfo { false, FT_INT, "TransmogSetGroupID" }, { true, FT_INT, "ItemNameDescriptionID" }, { false, FT_SHORT, "ParentTransmogSetID" }, - { false, FT_BYTE, "Unknown810" }, { false, FT_BYTE, "ExpansionID" }, - { true, FT_INT, "PatchID" }, { true, FT_SHORT, "UiOrder" }, - { true, FT_INT, "PlayerConditionID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 13, &TransmogSetMeta::Instance, HOTFIX_SEL_TRANSMOG_SET }; + static constexpr DB2LoadInfo Instance{ Fields, 10, &TransmogSetMeta::Instance, HOTFIX_SEL_TRANSMOG_SET }; }; struct TransmogSetGroupLoadInfo { static constexpr DB2FieldMeta Fields[2] = { - { false, FT_INT, "ID" }, { false, FT_STRING, "Name" }, + { false, FT_INT, "ID" }, }; static constexpr DB2LoadInfo Instance{ Fields, 2, &TransmogSetGroupMeta::Instance, HOTFIX_SEL_TRANSMOG_SET_GROUP }; @@ -6132,7 +5901,7 @@ struct UiMapLoadInfo { false, FT_INT, "ID" }, { true, FT_INT, "ParentUiMapID" }, { true, FT_INT, "Flags" }, - { true, FT_BYTE, "System" }, + { false, FT_BYTE, "System" }, { false, FT_BYTE, "Type" }, { true, FT_INT, "BountySetID" }, { false, FT_INT, "BountyDisplayLocation" }, @@ -6175,7 +5944,7 @@ struct UiMapAssignmentLoadInfo struct UiMapLinkLoadInfo { - static constexpr DB2FieldMeta Fields[12] = + static constexpr DB2FieldMeta Fields[11] = { { false, FT_FLOAT, "UiMinX" }, { false, FT_FLOAT, "UiMinY" }, @@ -6185,13 +5954,12 @@ struct UiMapLinkLoadInfo { true, FT_INT, "ParentUiMapID" }, { true, FT_INT, "OrderIndex" }, { true, FT_INT, "ChildUiMapID" }, - { true, FT_INT, "PlayerConditionID" }, { true, FT_INT, "OverrideHighlightFileDataID" }, { true, FT_INT, "OverrideHighlightAtlasID" }, { true, FT_INT, "Flags" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 12, &UiMapLinkMeta::Instance, HOTFIX_SEL_UI_MAP_LINK }; + static constexpr DB2LoadInfo Instance{ Fields, 11, &UiMapLinkMeta::Instance, HOTFIX_SEL_UI_MAP_LINK }; }; struct UiMapXMapArtLoadInfo @@ -6207,31 +5975,6 @@ struct UiMapXMapArtLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 4, &UiMapXMapArtMeta::Instance, HOTFIX_SEL_UI_MAP_X_MAP_ART }; }; -struct UiSplashScreenLoadInfo -{ - static constexpr DB2FieldMeta Fields[16] = - { - { false, FT_INT, "ID" }, - { false, FT_STRING, "Header" }, - { false, FT_STRING, "TopLeftFeatureTitle" }, - { false, FT_STRING, "TopLeftFeatureDesc" }, - { false, FT_STRING, "BottomLeftFeatureTitle" }, - { false, FT_STRING, "BottomLeftFeatureDesc" }, - { false, FT_STRING, "RightFeatureTitle" }, - { false, FT_STRING, "RightFeatureDesc" }, - { true, FT_INT, "AllianceQuestID" }, - { true, FT_INT, "HordeQuestID" }, - { true, FT_BYTE, "ScreenType" }, - { true, FT_INT, "TextureKitID" }, - { true, FT_INT, "SoundKitID" }, - { true, FT_INT, "PlayerConditionID" }, - { true, FT_INT, "CharLevelConditionID" }, - { true, FT_INT, "RequiredTimeEventPassed" }, - }; - - static constexpr DB2LoadInfo Instance{ Fields, 16, &UISplashScreenMeta::Instance, HOTFIX_SEL_UI_SPLASH_SCREEN }; -}; - struct UnitConditionLoadInfo { static constexpr DB2FieldMeta Fields[26] = @@ -6278,7 +6021,7 @@ struct UnitPowerBarLoadInfo { false, FT_STRING, "ToolTip" }, { false, FT_INT, "MinPower" }, { false, FT_INT, "MaxPower" }, - { false, FT_INT, "StartPower" }, + { false, FT_SHORT, "StartPower" }, { false, FT_BYTE, "CenterPower" }, { false, FT_FLOAT, "RegenerationPeace" }, { false, FT_FLOAT, "RegenerationCombat" }, @@ -6305,7 +6048,7 @@ struct UnitPowerBarLoadInfo struct VehicleLoadInfo { - static constexpr DB2FieldMeta Fields[28] = + static constexpr DB2FieldMeta Fields[29] = { { false, FT_INT, "ID" }, { true, FT_INT, "Flags" }, @@ -6324,6 +6067,7 @@ struct VehicleLoadInfo { false, FT_SHORT, "VehicleUIIndicatorID" }, { true, FT_INT, "MissileTargetingID" }, { false, FT_SHORT, "VehiclePOITypeID" }, + { true, FT_INT, "UiLocomotionType" }, { false, FT_SHORT, "SeatID1" }, { false, FT_SHORT, "SeatID2" }, { false, FT_SHORT, "SeatID3" }, @@ -6337,12 +6081,12 @@ struct VehicleLoadInfo { false, FT_SHORT, "PowerDisplayID3" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 28, &VehicleMeta::Instance, HOTFIX_SEL_VEHICLE }; + static constexpr DB2LoadInfo Instance{ Fields, 29, &VehicleMeta::Instance, HOTFIX_SEL_VEHICLE }; }; struct VehicleSeatLoadInfo { - static constexpr DB2FieldMeta Fields[66] = + static constexpr DB2FieldMeta Fields[67] = { { false, FT_INT, "ID" }, { false, FT_FLOAT, "AttachmentOffsetX" }, @@ -6394,6 +6138,7 @@ struct VehicleSeatLoadInfo { false, FT_INT, "EnterUISoundID" }, { false, FT_INT, "ExitUISoundID" }, { true, FT_INT, "UiSkinFileDataID" }, + { true, FT_INT, "UiSkin" }, { false, FT_FLOAT, "CameraEnteringDelay" }, { false, FT_FLOAT, "CameraEnteringDuration" }, { false, FT_FLOAT, "CameraExitingDelay" }, @@ -6412,7 +6157,7 @@ struct VehicleSeatLoadInfo { true, FT_SHORT, "CameraModeID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 66, &VehicleSeatMeta::Instance, HOTFIX_SEL_VEHICLE_SEAT }; + static constexpr DB2LoadInfo Instance{ Fields, 67, &VehicleSeatMeta::Instance, HOTFIX_SEL_VEHICLE_SEAT }; }; struct WmoAreaTableLoadInfo diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 8c849f43061..9a979890fae 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -73,7 +73,6 @@ DB2Storage<AzeritePowerEntry> sAzeritePowerStore("AzeritePower DB2Storage<AzeritePowerSetMemberEntry> sAzeritePowerSetMemberStore("AzeritePowerSetMember.db2", &AzeritePowerSetMemberLoadInfo::Instance); DB2Storage<AzeriteTierUnlockEntry> sAzeriteTierUnlockStore("AzeriteTierUnlock.db2", &AzeriteTierUnlockLoadInfo::Instance); DB2Storage<AzeriteTierUnlockSetEntry> sAzeriteTierUnlockSetStore("AzeriteTierUnlockSet.db2", &AzeriteTierUnlockSetLoadInfo::Instance); -DB2Storage<AzeriteUnlockMappingEntry> sAzeriteUnlockMappingStore("AzeriteUnlockMapping.db2", &AzeriteUnlockMappingLoadInfo::Instance); DB2Storage<BankBagSlotPricesEntry> sBankBagSlotPricesStore("BankBagSlotPrices.db2", &BankBagSlotPricesLoadInfo::Instance); DB2Storage<BannedAddonsEntry> sBannedAddonsStore("BannedAddons.db2", &BannedAddonsLoadInfo::Instance); DB2Storage<BarberShopStyleEntry> sBarberShopStyleStore("BarberShopStyle.db2", &BarberShopStyleLoadInfo::Instance); @@ -84,10 +83,8 @@ DB2Storage<BattlePetSpeciesEntry> sBattlePetSpeciesStore("BattlePe DB2Storage<BattlePetSpeciesStateEntry> sBattlePetSpeciesStateStore("BattlePetSpeciesState.db2", &BattlePetSpeciesStateLoadInfo::Instance); DB2Storage<BattlemasterListEntry> sBattlemasterListStore("BattlemasterList.db2", &BattlemasterListLoadInfo::Instance); DB2Storage<BroadcastTextEntry> sBroadcastTextStore("BroadcastText.db2", &BroadcastTextLoadInfo::Instance); -DB2Storage<BroadcastTextDurationEntry> sBroadcastTextDurationStore("BroadcastTextDuration.db2", &BroadcastTextDurationLoadInfo::Instance); DB2Storage<Cfg_CategoriesEntry> sCfgCategoriesStore("Cfg_Categories.db2", &CfgCategoriesLoadInfo::Instance); DB2Storage<Cfg_RegionsEntry> sCfgRegionsStore("Cfg_Regions.db2", &CfgRegionsLoadInfo::Instance); -DB2Storage<ChallengeModeItemBonusOverrideEntry> sChallengeModeItemBonusOverrideStore("ChallengeModeItemBonusOverride.db2", &ChallengeModeItemBonusOverrideLoadInfo::Instance); DB2Storage<CharTitlesEntry> sCharTitlesStore("CharTitles.db2", &CharTitlesLoadInfo::Instance); DB2Storage<CharacterLoadoutEntry> sCharacterLoadoutStore("CharacterLoadout.db2", &CharacterLoadoutLoadInfo::Instance); DB2Storage<CharacterLoadoutItemEntry> sCharacterLoadoutItemStore("CharacterLoadoutItem.db2", &CharacterLoadoutItemLoadInfo::Instance); @@ -110,10 +107,7 @@ DB2Storage<CinematicSequencesEntry> sCinematicSequencesStore("Cinema DB2Storage<ConditionalChrModelEntry> sConditionalChrModelStore("ConditionalChrModel.db2", &ConditionalChrModelLoadInfo::Instance); DB2Storage<ConditionalContentTuningEntry> sConditionalContentTuningStore("ConditionalContentTuning.db2", &ConditionalContentTuningLoadInfo::Instance); DB2Storage<ContentTuningEntry> sContentTuningStore("ContentTuning.db2", &ContentTuningLoadInfo::Instance); -DB2Storage<ContentTuningXExpectedEntry> sContentTuningXExpectedStore("ContentTuningXExpected.db2", &ContentTuningXExpectedLoadInfo::Instance); -DB2Storage<ContentTuningXLabelEntry> sContentTuningXLabelStore("ContentTuningXLabel.db2", &ContentTuningXLabelLoadInfo::Instance); DB2Storage<ConversationLineEntry> sConversationLineStore("ConversationLine.db2", &ConversationLineLoadInfo::Instance); -DB2Storage<CorruptionEffectsEntry> sCorruptionEffectsStore("CorruptionEffects.db2", &CorruptionEffectsLoadInfo::Instance); DB2Storage<CreatureDisplayInfoEntry> sCreatureDisplayInfoStore("CreatureDisplayInfo.db2", &CreatureDisplayInfoLoadInfo::Instance); DB2Storage<CreatureDisplayInfoExtraEntry> sCreatureDisplayInfoExtraStore("CreatureDisplayInfoExtra.db2", &CreatureDisplayInfoExtraLoadInfo::Instance); DB2Storage<CreatureFamilyEntry> sCreatureFamilyStore("CreatureFamily.db2", &CreatureFamilyLoadInfo::Instance); @@ -156,7 +150,6 @@ DB2Storage<GarrSiteLevelEntry> sGarrSiteLevelStore("GarrSiteLev DB2Storage<GarrSiteLevelPlotInstEntry> sGarrSiteLevelPlotInstStore("GarrSiteLevelPlotInst.db2", &GarrSiteLevelPlotInstLoadInfo::Instance); DB2Storage<GarrTalentTreeEntry> sGarrTalentTreeStore("GarrTalentTree.db2", &GarrTalentTreeLoadInfo::Instance); DB2Storage<GemPropertiesEntry> sGemPropertiesStore("GemProperties.db2", &GemPropertiesLoadInfo::Instance); -DB2Storage<GlobalCurveEntry> sGlobalCurveStore("GlobalCurve.db2", &GlobalCurveLoadInfo::Instance); DB2Storage<GlyphBindableSpellEntry> sGlyphBindableSpellStore("GlyphBindableSpell.db2", &GlyphBindableSpellLoadInfo::Instance); DB2Storage<GlyphPropertiesEntry> sGlyphPropertiesStore("GlyphProperties.db2", &GlyphPropertiesLoadInfo::Instance); DB2Storage<GlyphRequiredSpecEntry> sGlyphRequiredSpecStore("GlyphRequiredSpec.db2", &GlyphRequiredSpecLoadInfo::Instance); @@ -177,9 +170,7 @@ DB2Storage<ItemArmorShieldEntry> sItemArmorShieldStore("ItemArmor DB2Storage<ItemArmorTotalEntry> sItemArmorTotalStore("ItemArmorTotal.db2", &ItemArmorTotalLoadInfo::Instance); DB2Storage<ItemBagFamilyEntry> sItemBagFamilyStore("ItemBagFamily.db2", &ItemBagFamilyLoadInfo::Instance); DB2Storage<ItemBonusEntry> sItemBonusStore("ItemBonus.db2", &ItemBonusLoadInfo::Instance); -DB2Storage<ItemBonusListGroupEntryEntry> sItemBonusListGroupEntryStore("ItemBonusListGroupEntry.db2", &ItemBonusListGroupEntryLoadInfo::Instance); DB2Storage<ItemBonusListLevelDeltaEntry> sItemBonusListLevelDeltaStore("ItemBonusListLevelDelta.db2", &ItemBonusListLevelDeltaLoadInfo::Instance); -DB2Storage<ItemBonusTreeEntry> sItemBonusTreeStore("ItemBonusTree.db2", &ItemBonusTreeLoadInfo::Instance); DB2Storage<ItemBonusTreeNodeEntry> sItemBonusTreeNodeStore("ItemBonusTreeNode.db2", &ItemBonusTreeNodeLoadInfo::Instance); DB2Storage<ItemChildEquipmentEntry> sItemChildEquipmentStore("ItemChildEquipment.db2", &ItemChildEquipmentLoadInfo::Instance); DB2Storage<ItemClassEntry> sItemClassStore("ItemClass.db2", &ItemClassLoadInfo::Instance); @@ -210,7 +201,6 @@ DB2Storage<ItemSparseEntry> sItemSparseStore("ItemSparse.db2 DB2Storage<ItemSpecEntry> sItemSpecStore("ItemSpec.db2", &ItemSpecLoadInfo::Instance); DB2Storage<ItemSpecOverrideEntry> sItemSpecOverrideStore("ItemSpecOverride.db2", &ItemSpecOverrideLoadInfo::Instance); DB2Storage<ItemXBonusTreeEntry> sItemXBonusTreeStore("ItemXBonusTree.db2", &ItemXBonusTreeLoadInfo::Instance); -DB2Storage<ItemXItemEffectEntry> sItemXItemEffectStore("ItemXItemEffect.db2", &ItemXItemEffectLoadInfo::Instance); DB2Storage<JournalEncounterEntry> sJournalEncounterStore("JournalEncounter.db2", &JournalEncounterLoadInfo::Instance); DB2Storage<JournalEncounterSectionEntry> sJournalEncounterSectionStore("JournalEncounterSection.db2", &JournalEncounterSectionLoadInfo::Instance); DB2Storage<JournalInstanceEntry> sJournalInstanceStore("JournalInstance.db2", &JournalInstanceLoadInfo::Instance); @@ -228,7 +218,6 @@ DB2Storage<MapEntry> sMapStore("Map.db2", &MapLoadInf DB2Storage<MapChallengeModeEntry> sMapChallengeModeStore("MapChallengeMode.db2", &MapChallengeModeLoadInfo::Instance); DB2Storage<MapDifficultyEntry> sMapDifficultyStore("MapDifficulty.db2", &MapDifficultyLoadInfo::Instance); DB2Storage<MapDifficultyXConditionEntry> sMapDifficultyXConditionStore("MapDifficultyXCondition.db2", &MapDifficultyXConditionLoadInfo::Instance); -DB2Storage<MawPowerEntry> sMawPowerStore("MawPower.db2", &MawPowerLoadInfo::Instance); DB2Storage<ModifierTreeEntry> sModifierTreeStore("ModifierTree.db2", &ModifierTreeLoadInfo::Instance); DB2Storage<MountCapabilityEntry> sMountCapabilityStore("MountCapability.db2", &MountCapabilityLoadInfo::Instance); DB2Storage<MountEntry> sMountStore("Mount.db2", &MountLoadInfo::Instance); @@ -251,7 +240,6 @@ DB2Storage<PowerTypeEntry> sPowerTypeStore("PowerType.db2", DB2Storage<PrestigeLevelInfoEntry> sPrestigeLevelInfoStore("PrestigeLevelInfo.db2", &PrestigeLevelInfoLoadInfo::Instance); DB2Storage<PVPDifficultyEntry> sPVPDifficultyStore("PVPDifficulty.db2", &PvpDifficultyLoadInfo::Instance); DB2Storage<PVPItemEntry> sPVPItemStore("PVPItem.db2", &PvpItemLoadInfo::Instance); -DB2Storage<PVPStatEntry> sPVPStatStore("PVPStat.db2", &PvpStatLoadInfo::Instance); DB2Storage<PvpSeasonEntry> sPvpSeasonStore("PvpSeason.db2", &PvpSeasonLoadInfo::Instance); DB2Storage<PvpTalentEntry> sPvpTalentStore("PvpTalent.db2", &PvpTalentLoadInfo::Instance); DB2Storage<PvpTalentCategoryEntry> sPvpTalentCategoryStore("PvpTalentCategory.db2", &PvpTalentCategoryLoadInfo::Instance); @@ -280,7 +268,6 @@ DB2Storage<SkillLineEntry> sSkillLineStore("SkillLine.db2", DB2Storage<SkillLineAbilityEntry> sSkillLineAbilityStore("SkillLineAbility.db2", &SkillLineAbilityLoadInfo::Instance); DB2Storage<SkillLineXTraitTreeEntry> sSkillLineXTraitTreeStore("SkillLineXTraitTree.db2", &SkillLineXTraitTreeLoadInfo::Instance); DB2Storage<SkillRaceClassInfoEntry> sSkillRaceClassInfoStore("SkillRaceClassInfo.db2", &SkillRaceClassInfoLoadInfo::Instance); -DB2Storage<SoulbindConduitRankEntry> sSoulbindConduitRankStore("SoulbindConduitRank.db2", &SoulbindConduitRankLoadInfo::Instance); DB2Storage<SoundKitEntry> sSoundKitStore("SoundKit.db2", &SoundKitLoadInfo::Instance); DB2Storage<SpecializationSpellsEntry> sSpecializationSpellsStore("SpecializationSpells.db2", &SpecializationSpellsLoadInfo::Instance); DB2Storage<SpecSetMemberEntry> sSpecSetMemberStore("SpecSetMember.db2", &SpecSetMemberLoadInfo::Instance); @@ -355,7 +342,6 @@ DB2Storage<TraitTreeLoadoutEntryEntry> sTraitTreeLoadoutEntryStore("Tra DB2Storage<TraitTreeXTraitCostEntry> sTraitTreeXTraitCostStore("TraitTreeXTraitCost.db2", &TraitTreeXTraitCostLoadInfo::Instance); DB2Storage<TraitTreeXTraitCurrencyEntry> sTraitTreeXTraitCurrencyStore("TraitTreeXTraitCurrency.db2", &TraitTreeXTraitCurrencyLoadInfo::Instance); DB2Storage<TransmogHolidayEntry> sTransmogHolidayStore("TransmogHoliday.db2", &TransmogHolidayLoadInfo::Instance); -DB2Storage<TransmogIllusionEntry> sTransmogIllusionStore("TransmogIllusion.db2", &TransmogIllusionLoadInfo::Instance); DB2Storage<TransmogSetEntry> sTransmogSetStore("TransmogSet.db2", &TransmogSetLoadInfo::Instance); DB2Storage<TransmogSetGroupEntry> sTransmogSetGroupStore("TransmogSetGroup.db2", &TransmogSetGroupLoadInfo::Instance); DB2Storage<TransmogSetItemEntry> sTransmogSetItemStore("TransmogSetItem.db2", &TransmogSetItemLoadInfo::Instance); @@ -365,7 +351,6 @@ DB2Storage<UiMapEntry> sUiMapStore("UiMap.db2", &UiMapL DB2Storage<UiMapAssignmentEntry> sUiMapAssignmentStore("UiMapAssignment.db2", &UiMapAssignmentLoadInfo::Instance); DB2Storage<UiMapLinkEntry> sUiMapLinkStore("UiMapLink.db2", &UiMapLinkLoadInfo::Instance); DB2Storage<UiMapXMapArtEntry> sUiMapXMapArtStore("UiMapXMapArt.db2", &UiMapXMapArtLoadInfo::Instance); -DB2Storage<UISplashScreenEntry> sUISplashScreenStore("UISplashScreen.db2", &UiSplashScreenLoadInfo::Instance); DB2Storage<UnitConditionEntry> sUnitConditionStore("UnitCondition.db2", &UnitConditionLoadInfo::Instance); DB2Storage<UnitPowerBarEntry> sUnitPowerBarStore("UnitPowerBar.db2", &UnitPowerBarLoadInfo::Instance); DB2Storage<VehicleEntry> sVehicleStore("Vehicle.db2", &VehicleLoadInfo::Instance); @@ -448,7 +433,6 @@ namespace std::array<AzeriteItemMilestonePowerEntry const*, MAX_AZERITE_ESSENCE_SLOT> _azeriteItemMilestonePowerByEssenceSlot; std::unordered_map<uint32 /*azeritePowerSetId*/, std::vector<AzeritePowerSetMemberEntry const*>> _azeritePowers; std::unordered_map<std::pair<uint32 /*azeriteUnlockSetId*/, ItemContext>, std::array<uint8, MAX_AZERITE_EMPOWERED_TIER>> _azeriteTierUnlockLevels; - std::unordered_map<std::pair<int32 /*broadcastTextId*/, CascLocaleBit /*cascLocaleBit*/>, int32> _broadcastTextDurations; std::array<ChrClassUIDisplayEntry const*, MAX_CLASSES> _uiDisplayByClass; std::array<std::array<uint32, MAX_POWERS>, MAX_CLASSES> _powersByClass; std::unordered_map<uint32 /*chrCustomizationOptionId*/, std::vector<ChrCustomizationChoiceEntry const*>> _chrCustomizationChoicesByOption; @@ -459,12 +443,9 @@ namespace ChrSpecializationByIndexContainer _chrSpecializationsByIndex; std::unordered_map<int32, ConditionalChrModelEntry const*> _conditionalChrModelsByChrModelId; std::unordered_multimap<uint32, ConditionalContentTuningEntry const*> _conditionalContentTuning; - std::unordered_set<std::pair<uint32, int32>> _contentTuningLabels; std::unordered_multimap<uint32, CurrencyContainerEntry const*> _currencyContainers; CurvePointsContainer _curvePoints; EmotesTextSoundContainer _emoteTextSounds; - std::unordered_map<std::pair<uint32 /*level*/, int32 /*expansion*/>, ExpectedStatEntry const*> _expectedStatsByLevel; - std::unordered_map<uint32 /*contentTuningId*/, std::vector<ContentTuningXExpectedEntry const*>> _expectedStatModsByContentTuning; FactionTeamContainer _factionTeams; std::unordered_map<uint32, std::set<FriendshipRepReactionEntry const*, DB2Manager::FriendshipRepReactionEntryComparator>> _friendshipRepReactions; HeirloomItemsContainer _heirlooms; @@ -497,7 +478,6 @@ namespace std::unordered_map<uint32, std::vector<SkillLineEntry const*>> _skillLinesByParentSkillLine; std::unordered_map<uint32, std::vector<SkillLineAbilityEntry const*>> _skillLineAbilitiesBySkillupSkill; SkillRaceClassInfoContainer _skillRaceClassInfoBySkill; - std::unordered_map<std::pair<int32, int32>, SoulbindConduitRankEntry const*> _soulbindConduitRanks; SpecializationSpellsContainer _specializationSpellsBySpec; std::unordered_set<std::pair<int32, uint32>> _specsBySpecSet; std::unordered_set<uint8> _spellFamilyNames; @@ -506,7 +486,6 @@ namespace TalentsByPosition _talentsByPosition; std::unordered_map<std::pair<uint32, uint32>, TaxiPathEntry const*> _taxiPaths; ToyItemIdsContainer _toys; - std::unordered_map<uint32, TransmogIllusionEntry const*> _transmogIllusionsByEnchantmentId; std::unordered_map<uint32, std::vector<TransmogSetEntry const*>> _transmogSetsByItemModifiedAppearance; std::unordered_map<uint32, std::vector<TransmogSetItemEntry const*>> _transmogSetItemsByTransmogSet; std::unordered_map<int32, UiMapBounds> _uiMapBounds; @@ -516,7 +495,6 @@ namespace std::unordered_multimap<int32, UiMapAssignmentEntry const*> _uiMapAssignmentByWmoGroup[MAX_UI_MAP_SYSTEM]; std::unordered_set<int32> _uiMapPhases; WMOAreaTableLookupContainer _wmoAreaTableLookup; - std::unordered_map<uint32, std::unordered_set<uint32>> _pvpStatIdsByMap; } template<typename T> @@ -672,7 +650,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sAzeritePowerSetMemberStore); LOAD_DB2(sAzeriteTierUnlockStore); LOAD_DB2(sAzeriteTierUnlockSetStore); - LOAD_DB2(sAzeriteUnlockMappingStore); LOAD_DB2(sBankBagSlotPricesStore); LOAD_DB2(sBannedAddonsStore); LOAD_DB2(sBarberShopStyleStore); @@ -683,10 +660,8 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sBattlePetSpeciesStateStore); LOAD_DB2(sBattlemasterListStore); LOAD_DB2(sBroadcastTextStore); - LOAD_DB2(sBroadcastTextDurationStore); LOAD_DB2(sCfgCategoriesStore); LOAD_DB2(sCfgRegionsStore); - LOAD_DB2(sChallengeModeItemBonusOverrideStore); LOAD_DB2(sCharTitlesStore); LOAD_DB2(sCharacterLoadoutStore); LOAD_DB2(sCharacterLoadoutItemStore); @@ -709,10 +684,7 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sConditionalChrModelStore); LOAD_DB2(sConditionalContentTuningStore); LOAD_DB2(sContentTuningStore); - LOAD_DB2(sContentTuningXExpectedStore); - LOAD_DB2(sContentTuningXLabelStore); LOAD_DB2(sConversationLineStore); - LOAD_DB2(sCorruptionEffectsStore); LOAD_DB2(sCreatureDisplayInfoStore); LOAD_DB2(sCreatureDisplayInfoExtraStore); LOAD_DB2(sCreatureFamilyStore); @@ -755,7 +727,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sGarrSiteLevelPlotInstStore); LOAD_DB2(sGarrTalentTreeStore); LOAD_DB2(sGemPropertiesStore); - LOAD_DB2(sGlobalCurveStore); LOAD_DB2(sGlyphBindableSpellStore); LOAD_DB2(sGlyphPropertiesStore); LOAD_DB2(sGlyphRequiredSpecStore); @@ -776,9 +747,7 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sItemArmorTotalStore); LOAD_DB2(sItemBagFamilyStore); LOAD_DB2(sItemBonusStore); - LOAD_DB2(sItemBonusListGroupEntryStore); LOAD_DB2(sItemBonusListLevelDeltaStore); - LOAD_DB2(sItemBonusTreeStore); LOAD_DB2(sItemBonusTreeNodeStore); LOAD_DB2(sItemChildEquipmentStore); LOAD_DB2(sItemClassStore); @@ -809,7 +778,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sItemSpecStore); LOAD_DB2(sItemSpecOverrideStore); LOAD_DB2(sItemXBonusTreeStore); - LOAD_DB2(sItemXItemEffectStore); LOAD_DB2(sJournalEncounterStore); LOAD_DB2(sJournalEncounterSectionStore); LOAD_DB2(sJournalInstanceStore); @@ -827,7 +795,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sMapChallengeModeStore); LOAD_DB2(sMapDifficultyStore); LOAD_DB2(sMapDifficultyXConditionStore); - LOAD_DB2(sMawPowerStore); LOAD_DB2(sModifierTreeStore); LOAD_DB2(sMountCapabilityStore); LOAD_DB2(sMountStore); @@ -850,7 +817,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sPrestigeLevelInfoStore); LOAD_DB2(sPVPDifficultyStore); LOAD_DB2(sPVPItemStore); - LOAD_DB2(sPVPStatStore); LOAD_DB2(sPvpSeasonStore); LOAD_DB2(sPvpTalentStore); LOAD_DB2(sPvpTalentCategoryStore); @@ -879,7 +845,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sSkillLineAbilityStore); LOAD_DB2(sSkillLineXTraitTreeStore); LOAD_DB2(sSkillRaceClassInfoStore); - LOAD_DB2(sSoulbindConduitRankStore); LOAD_DB2(sSoundKitStore); LOAD_DB2(sSpecializationSpellsStore); LOAD_DB2(sSpecSetMemberStore); @@ -954,7 +919,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sTraitTreeXTraitCostStore); LOAD_DB2(sTraitTreeXTraitCurrencyStore); LOAD_DB2(sTransmogHolidayStore); - LOAD_DB2(sTransmogIllusionStore); LOAD_DB2(sTransmogSetStore); LOAD_DB2(sTransmogSetGroupStore); LOAD_DB2(sTransmogSetItemStore); @@ -964,7 +928,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sUiMapAssignmentStore); LOAD_DB2(sUiMapLinkStore); LOAD_DB2(sUiMapXMapArtStore); - LOAD_DB2(sUISplashScreenStore); LOAD_DB2(sUnitConditionStore); LOAD_DB2(sUnitPowerBarStore); LOAD_DB2(sVehicleStore); @@ -1072,10 +1035,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul } } - _broadcastTextDurations.reserve(sBroadcastTextDurationStore.GetNumRows()); - for (BroadcastTextDurationEntry const* broadcastTextDuration : sBroadcastTextDurationStore) - _broadcastTextDurations[{ broadcastTextDuration->BroadcastTextID, CascLocaleBit(broadcastTextDuration->Locale) }] = broadcastTextDuration->Duration; - for (ChrClassUIDisplayEntry const* uiDisplay : sChrClassUIDisplayStore) { ASSERT(uiDisplay->ChrClassesID < MAX_CLASSES); @@ -1212,13 +1171,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul for (ConditionalContentTuningEntry const* conditionalContentTuning : sConditionalContentTuningStore) _conditionalContentTuning.emplace(conditionalContentTuning->ParentContentTuningID, conditionalContentTuning); - for (ContentTuningXExpectedEntry const* contentTuningXExpectedStat : sContentTuningXExpectedStore) - if (sExpectedStatModStore.LookupEntry(contentTuningXExpectedStat->ExpectedStatModID)) - _expectedStatModsByContentTuning[contentTuningXExpectedStat->ContentTuningID].push_back(contentTuningXExpectedStat); - - for (ContentTuningXLabelEntry const* contentTuningXLabel : sContentTuningXLabelStore) - _contentTuningLabels.emplace(contentTuningXLabel->ContentTuningID, contentTuningXLabel->LabelID); - for (CurrencyContainerEntry const* currencyContainer : sCurrencyContainerStore) _currencyContainers.emplace(currencyContainer->CurrencyTypesID, currencyContainer); @@ -1240,9 +1192,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul for (EmotesTextSoundEntry const* emoteTextSound : sEmotesTextSoundStore) _emoteTextSounds[EmotesTextSoundContainer::key_type(emoteTextSound->EmotesTextID, emoteTextSound->RaceID, emoteTextSound->SexID, emoteTextSound->ClassID)] = emoteTextSound; - for (ExpectedStatEntry const* expectedStat : sExpectedStatStore) - _expectedStatsByLevel[std::make_pair(expectedStat->Lvl, expectedStat->ExpansionID)] = expectedStat; - for (FactionEntry const* faction : sFactionStore) if (faction->ParentFactionID) _factionTeams[faction->ParentFactionID].push_back(faction->ID); @@ -1441,9 +1390,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul if (sSkillLineStore.LookupEntry(entry->SkillID)) _skillRaceClassInfoBySkill.insert(SkillRaceClassInfoContainer::value_type(entry->SkillID, entry)); - for (SoulbindConduitRankEntry const* soulbindConduitRank : sSoulbindConduitRankStore) - _soulbindConduitRanks[{ soulbindConduitRank->SoulbindConduitID, soulbindConduitRank->RankIndex }] = soulbindConduitRank; - for (SpecializationSpellsEntry const* specSpells : sSpecializationSpellsStore) _specializationSpellsBySpec[specSpells->SpecID].push_back(specSpells); @@ -1492,9 +1438,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul for (ToyEntry const* toy : sToyStore) _toys.insert(toy->ItemID); - for (TransmogIllusionEntry const* transmogIllusion : sTransmogIllusionStore) - _transmogIllusionsByEnchantmentId[transmogIllusion->SpellItemEnchantmentID] = transmogIllusion; - for (TransmogSetItemEntry const* transmogSetItem : sTransmogSetItemStore) { TransmogSetEntry const* set = sTransmogSetStore.LookupEntry(transmogSetItem->TransmogSetID); @@ -1634,9 +1577,6 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul sOldContinentsNodesMask[field] |= submask; } - for (PVPStatEntry const* pvpStat : sPVPStatStore) - _pvpStatIdsByMap[pvpStat->MapID].insert(pvpStat->ID); - TC_LOG_INFO("server.loading", ">> Initialized {} DB2 data stores in {} ms", _stores.size(), GetMSTimeDiffToNow(oldMSTime)); return availableDb2Locales.to_ulong(); @@ -1921,17 +1861,6 @@ bool DB2Manager::IsInArea(uint32 objectAreaId, uint32 areaId) ContentTuningEntry const* DB2Manager::GetContentTuningForArea(AreaTableEntry const* areaEntry) { - if (!areaEntry) - return nullptr; - - // Get ContentTuning for the area - if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(areaEntry->ContentTuningID)) - return contentTuning; - - // If there is no data for the current area and it has a parent area, get data from the last (recursive) - if (AreaTableEntry const* parentAreaEntry = sAreaTableStore.LookupEntry(areaEntry->ParentAreaID)) - return GetContentTuningForArea(parentAreaEntry); - return nullptr; } @@ -2021,7 +1950,7 @@ char const* DB2Manager::GetBroadcastTextValue(BroadcastTextEntry const* broadcas int32 const* DB2Manager::GetBroadcastTextDuration(int32 broadcastTextId, LocaleConstant locale /*= DEFAULT_LOCALE*/) const { - return Trinity::Containers::MapGetValuePtr(_broadcastTextDurations, { broadcastTextId, WowLocaleToCascLocaleBit[locale] }); + return nullptr; } ChrClassUIDisplayEntry const* DB2Manager::GetUiDisplayForClass(Classes unitClass) const @@ -2105,54 +2034,12 @@ uint32 DB2Manager::GetRedirectedContentTuningId(uint32 contentTuningId, uint32 r Optional<ContentTuningLevels> DB2Manager::GetContentTuningData(uint32 contentTuningId, uint32 redirectFlag, bool forItem /*= false*/) const { - ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(GetRedirectedContentTuningId(contentTuningId, redirectFlag)); - if (!contentTuning) - return {}; - - if (forItem && contentTuning->GetFlags().HasFlag(ContentTuningFlag::DisabledForItem)) - return {}; - - auto getLevelAdjustment = [](ContentTuningCalcType type) -> int32 - { - switch (type) - { - case ContentTuningCalcType::PlusOne: - return 1; - case ContentTuningCalcType::PlusMaxLevelForExpansion: - return GetMaxLevelForExpansion(sWorld->getIntConfig(CONFIG_EXPANSION)); - default: - break; - } - - return 0; - }; - - ContentTuningLevels levels; - levels.MinLevel = contentTuning->MinLevel + getLevelAdjustment(static_cast<ContentTuningCalcType>(contentTuning->MinLevelType)); - levels.MaxLevel = contentTuning->MaxLevel + getLevelAdjustment(static_cast<ContentTuningCalcType>(contentTuning->MaxLevelType)); - levels.MinLevelWithDelta = std::clamp<int32>(levels.MinLevel + contentTuning->TargetLevelDelta, 1, MAX_LEVEL); - levels.MaxLevelWithDelta = std::clamp<int32>(levels.MaxLevel + contentTuning->TargetLevelMaxDelta, 1, MAX_LEVEL); - - // clamp after calculating levels with delta (delta can bring "overflown" level back into correct range) - levels.MinLevel = std::clamp<int32>(levels.MinLevel, 1, MAX_LEVEL); - levels.MaxLevel = std::clamp<int32>(levels.MaxLevel, 1, MAX_LEVEL); - - if (contentTuning->TargetLevelMin) - levels.TargetLevelMin = contentTuning->TargetLevelMin; - else - levels.TargetLevelMin = levels.MinLevelWithDelta; - - if (contentTuning->TargetLevelMax) - levels.TargetLevelMax = contentTuning->TargetLevelMax; - else - levels.TargetLevelMax = levels.MaxLevelWithDelta; - - return levels; + return {}; } bool DB2Manager::HasContentTuningLabel(uint32 contentTuningId, int32 label) const { - return _contentTuningLabels.contains({ contentTuningId, label }); + return false; } char const* DB2Manager::GetCreatureFamilyPetName(uint32 petfamily, LocaleConstant locale) @@ -2345,143 +2232,9 @@ EmotesTextSoundEntry const* DB2Manager::GetTextSoundEmoteFor(uint32 emote, uint8 return nullptr; } -template<float(ExpectedStatModEntry::*field)> -struct ExpectedStatModReducer -{ - explicit ExpectedStatModReducer(int32 mythicPlusMilestoneSeason) : ActiveMilestoneSeason(mythicPlusMilestoneSeason) { } - - float operator()(float mod, ContentTuningXExpectedEntry const* contentTuningXExpected) const - { - if (!contentTuningXExpected) - return mod; - - if (contentTuningXExpected->MinMythicPlusSeasonID) - if (MythicPlusSeasonEntry const* mythicPlusSeason = sMythicPlusSeasonStore.LookupEntry(contentTuningXExpected->MinMythicPlusSeasonID)) - if (ActiveMilestoneSeason < mythicPlusSeason->MilestoneSeason) - return mod; - - if (contentTuningXExpected->MaxMythicPlusSeasonID) - if (MythicPlusSeasonEntry const* mythicPlusSeason = sMythicPlusSeasonStore.LookupEntry(contentTuningXExpected->MaxMythicPlusSeasonID)) - if (ActiveMilestoneSeason >= mythicPlusSeason->MilestoneSeason) - return mod; - - return mod * sExpectedStatModStore.AssertEntry(contentTuningXExpected->ExpectedStatModID)->*field; - } - - int32 ActiveMilestoneSeason = 0; -}; - float DB2Manager::EvaluateExpectedStat(ExpectedStatType stat, uint32 level, int32 expansion, uint32 contentTuningId, Classes unitClass, int32 mythicPlusMilestoneSeason) const { - auto expectedStatItr = _expectedStatsByLevel.find(std::make_pair(level, expansion)); - if (expectedStatItr == _expectedStatsByLevel.end()) - expectedStatItr = _expectedStatsByLevel.find(std::make_pair(level, -2)); - - if (expectedStatItr == _expectedStatsByLevel.end()) - return 1.0f; - - ExpectedStatModEntry const* classMod = nullptr; - switch (unitClass) - { - case CLASS_WARRIOR: - classMod = sExpectedStatModStore.LookupEntry(4); - break; - case CLASS_PALADIN: - classMod = sExpectedStatModStore.LookupEntry(2); - break; - case CLASS_ROGUE: - classMod = sExpectedStatModStore.LookupEntry(3); - break; - case CLASS_MAGE: - classMod = sExpectedStatModStore.LookupEntry(1); - break; - default: - break; - } - - std::vector<ContentTuningXExpectedEntry const*> const* contentTuningMods = Trinity::Containers::MapGetValuePtr(_expectedStatModsByContentTuning, contentTuningId); - float value = 0.0f; - switch (stat) - { - case ExpectedStatType::CreatureHealth: - value = expectedStatItr->second->CreatureHealth; - if (contentTuningMods) - value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, - ExpectedStatModReducer<&ExpectedStatModEntry::CreatureHealthMod>(mythicPlusMilestoneSeason)); - if (classMod) - value *= classMod->CreatureHealthMod; - break; - case ExpectedStatType::PlayerHealth: - value = expectedStatItr->second->PlayerHealth; - if (contentTuningMods) - value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, - ExpectedStatModReducer<&ExpectedStatModEntry::PlayerHealthMod>(mythicPlusMilestoneSeason)); - if (classMod) - value *= classMod->PlayerHealthMod; - break; - case ExpectedStatType::CreatureAutoAttackDps: - value = expectedStatItr->second->CreatureAutoAttackDps; - if (contentTuningMods) - value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, - ExpectedStatModReducer<&ExpectedStatModEntry::CreatureAutoAttackDPSMod>(mythicPlusMilestoneSeason)); - if (classMod) - value *= classMod->CreatureAutoAttackDPSMod; - break; - case ExpectedStatType::CreatureArmor: - value = expectedStatItr->second->CreatureArmor; - if (contentTuningMods) - value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, - ExpectedStatModReducer<&ExpectedStatModEntry::CreatureArmorMod>(mythicPlusMilestoneSeason)); - if (classMod) - value *= classMod->CreatureArmorMod; - break; - case ExpectedStatType::PlayerMana: - value = expectedStatItr->second->PlayerMana; - if (contentTuningMods) - value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, - ExpectedStatModReducer<&ExpectedStatModEntry::PlayerManaMod>(mythicPlusMilestoneSeason)); - if (classMod) - value *= classMod->PlayerManaMod; - break; - case ExpectedStatType::PlayerPrimaryStat: - value = expectedStatItr->second->PlayerPrimaryStat; - if (contentTuningMods) - value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, - ExpectedStatModReducer<&ExpectedStatModEntry::PlayerPrimaryStatMod>(mythicPlusMilestoneSeason)); - if (classMod) - value *= classMod->PlayerPrimaryStatMod; - break; - case ExpectedStatType::PlayerSecondaryStat: - value = expectedStatItr->second->PlayerSecondaryStat; - if (contentTuningMods) - value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, - ExpectedStatModReducer<&ExpectedStatModEntry::PlayerSecondaryStatMod>(mythicPlusMilestoneSeason)); - if (classMod) - value *= classMod->PlayerSecondaryStatMod; - break; - case ExpectedStatType::ArmorConstant: - value = expectedStatItr->second->ArmorConstant; - if (contentTuningMods) - value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, - ExpectedStatModReducer<&ExpectedStatModEntry::ArmorConstantMod>(mythicPlusMilestoneSeason)); - if (classMod) - value *= classMod->ArmorConstantMod; - break; - case ExpectedStatType::None: - break; - case ExpectedStatType::CreatureSpellDamage: - value = expectedStatItr->second->CreatureSpellDamage; - if (contentTuningMods) - value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, - ExpectedStatModReducer<&ExpectedStatModEntry::CreatureSpellDamageMod>(mythicPlusMilestoneSeason)); - if (classMod) - value *= classMod->CreatureSpellDamageMod; - break; - default: - break; - } - - return value; + return 1.0f; } std::vector<uint32> const* DB2Manager::GetFactionTeamList(uint32 faction) const @@ -2496,10 +2249,6 @@ DB2Manager::FriendshipRepReactionSet const* DB2Manager::GetFriendshipRepReaction uint32 DB2Manager::GetGlobalCurveId(GlobalCurve globalCurveType) const { - for (GlobalCurveEntry const* globalCurveEntry : sGlobalCurveStore) - if (GlobalCurve(globalCurveEntry->Type) == globalCurveType) - return globalCurveEntry->CurveID; - return 0; } @@ -2941,11 +2690,6 @@ std::vector<SkillRaceClassInfoEntry const*> DB2Manager::GetSkillRaceClassInfo(ui return result; } -SoulbindConduitRankEntry const* DB2Manager::GetSoulbindConduitRank(int32 soulbindConduitId, int32 rank) const -{ - return Trinity::Containers::MapGetValuePtr(_soulbindConduitRanks, { soulbindConduitId, rank }); -} - std::vector<SpecializationSpellsEntry const*> const* DB2Manager::GetSpecializationSpells(uint32 specId) const { return Trinity::Containers::MapGetValuePtr(_specializationSpellsBySpec, specId); @@ -3011,11 +2755,6 @@ bool DB2Manager::IsToyItem(uint32 toy) const return _toys.count(toy) > 0; } -TransmogIllusionEntry const* DB2Manager::GetTransmogIllusionForEnchantment(uint32 spellItemEnchantmentId) const -{ - return Trinity::Containers::MapGetValuePtr(_transmogIllusionsByEnchantmentId, spellItemEnchantmentId); -} - std::vector<TransmogSetEntry const*> const* DB2Manager::GetTransmogSetsForItemModifiedAppearance(uint32 itemModifiedAppearanceId) const { return Trinity::Containers::MapGetValuePtr(_transmogSetsByItemModifiedAppearance, itemModifiedAppearanceId); @@ -3376,7 +3115,7 @@ WMOAreaTableEntry const* DB2Manager::GetWMOAreaTable(int32 rootId, int32 adtId, std::unordered_set<uint32> const* DB2Manager::GetPVPStatIDsForMap(uint32 mapId) const { - return Trinity::Containers::MapGetValuePtr(_pvpStatIdsByMap, mapId); + return nullptr; } bool ChrClassesXPowerTypesEntryComparator::Compare(ChrClassesXPowerTypesEntry const* left, ChrClassesXPowerTypesEntry const* right) diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index 91609057a35..89bba8e4bd1 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -59,7 +59,6 @@ TC_GAME_API extern DB2Storage<AzeriteKnowledgeMultiplierEntry> sAzeriteKnow TC_GAME_API extern DB2Storage<AzeriteItemMilestonePowerEntry> sAzeriteItemMilestonePowerStore; TC_GAME_API extern DB2Storage<AzeriteLevelInfoEntry> sAzeriteLevelInfoStore; TC_GAME_API extern DB2Storage<AzeritePowerEntry> sAzeritePowerStore; -TC_GAME_API extern DB2Storage<AzeriteUnlockMappingEntry> sAzeriteUnlockMappingStore; TC_GAME_API extern DB2Storage<BankBagSlotPricesEntry> sBankBagSlotPricesStore; TC_GAME_API extern DB2Storage<BannedAddonsEntry> sBannedAddonsStore; TC_GAME_API extern DB2Storage<BarberShopStyleEntry> sBarberShopStyleStore; @@ -72,7 +71,6 @@ TC_GAME_API extern DB2Storage<BattlemasterListEntry> sBattlemaste TC_GAME_API extern DB2Storage<BroadcastTextEntry> sBroadcastTextStore; TC_GAME_API extern DB2Storage<Cfg_CategoriesEntry> sCfgCategoriesStore; TC_GAME_API extern DB2Storage<Cfg_RegionsEntry> sCfgRegionsStore; -TC_GAME_API extern DB2Storage<ChallengeModeItemBonusOverrideEntry> sChallengeModeItemBonusOverrideStore; TC_GAME_API extern DB2Storage<CharTitlesEntry> sCharTitlesStore; TC_GAME_API extern DB2Storage<CharacterLoadoutEntry> sCharacterLoadoutStore; TC_GAME_API extern DB2Storage<CharacterLoadoutItemEntry> sCharacterLoadoutItemStore; @@ -87,7 +85,6 @@ TC_GAME_API extern DB2Storage<CinematicSequencesEntry> sCinematicSe TC_GAME_API extern DB2Storage<ConditionalChrModelEntry> sConditionalChrModelStore; TC_GAME_API extern DB2Storage<ContentTuningEntry> sContentTuningStore; TC_GAME_API extern DB2Storage<ConversationLineEntry> sConversationLineStore; -TC_GAME_API extern DB2Storage<CorruptionEffectsEntry> sCorruptionEffectsStore; TC_GAME_API extern DB2Storage<CreatureDisplayInfoEntry> sCreatureDisplayInfoStore; TC_GAME_API extern DB2Storage<CreatureDisplayInfoExtraEntry> sCreatureDisplayInfoExtraStore; TC_GAME_API extern DB2Storage<CreatureFamilyEntry> sCreatureFamilyStore; @@ -142,9 +139,7 @@ TC_GAME_API extern DB2Storage<ItemArmorShieldEntry> sItemArmorSh TC_GAME_API extern DB2Storage<ItemArmorTotalEntry> sItemArmorTotalStore; TC_GAME_API extern DB2Storage<ItemBagFamilyEntry> sItemBagFamilyStore; TC_GAME_API extern DB2Storage<ItemBonusEntry> sItemBonusStore; -TC_GAME_API extern DB2Storage<ItemBonusListGroupEntryEntry> sItemBonusListGroupEntryStore; TC_GAME_API extern DB2Storage<ItemBonusListLevelDeltaEntry> sItemBonusListLevelDeltaStore; -TC_GAME_API extern DB2Storage<ItemBonusTreeEntry> sItemBonusTreeStore; TC_GAME_API extern DB2Storage<ItemBonusTreeNodeEntry> sItemBonusTreeNodeStore; TC_GAME_API extern DB2Storage<ItemContextPickerEntryEntry> sItemContextPickerEntryStore; TC_GAME_API extern DB2Storage<ItemDamageAmmoEntry> sItemDamageAmmoStore; @@ -171,7 +166,6 @@ TC_GAME_API extern DB2Storage<ItemSparseEntry> sItemSparseS TC_GAME_API extern DB2Storage<ItemSpecEntry> sItemSpecStore; TC_GAME_API extern DB2Storage<ItemSpecOverrideEntry> sItemSpecOverrideStore; TC_GAME_API extern DB2Storage<ItemXBonusTreeEntry> sItemXBonusTreeStore; -TC_GAME_API extern DB2Storage<ItemXItemEffectEntry> sItemXItemEffectStore; TC_GAME_API extern DB2Storage<JournalEncounterEntry> sJournalEncounterStore; TC_GAME_API extern DB2Storage<JournalEncounterSectionEntry> sJournalEncounterSectionStore; TC_GAME_API extern DB2Storage<JournalInstanceEntry> sJournalInstanceStore; @@ -186,7 +180,6 @@ TC_GAME_API extern DB2Storage<MailTemplateEntry> sMailTemplat TC_GAME_API extern DB2Storage<MapEntry> sMapStore; TC_GAME_API extern DB2Storage<MapChallengeModeEntry> sMapChallengeModeStore; TC_GAME_API extern DB2Storage<MapDifficultyEntry> sMapDifficultyStore; -TC_GAME_API extern DB2Storage<MawPowerEntry> sMawPowerStore; TC_GAME_API extern DB2Storage<ModifierTreeEntry> sModifierTreeStore; TC_GAME_API extern DB2Storage<MountCapabilityEntry> sMountCapabilityStore; TC_GAME_API extern DB2Storage<MountEntry> sMountStore; @@ -198,7 +191,6 @@ TC_GAME_API extern DB2Storage<PhaseEntry> sPhaseStore; TC_GAME_API extern DB2Storage<PlayerConditionEntry> sPlayerConditionStore; TC_GAME_API extern DB2Storage<PowerDisplayEntry> sPowerDisplayStore; TC_GAME_API extern DB2Storage<PowerTypeEntry> sPowerTypeStore; -TC_GAME_API extern DB2Storage<PVPStatEntry> sPVPStatStore; TC_GAME_API extern DB2Storage<PvpSeasonEntry> sPvpSeasonStore; TC_GAME_API extern DB2Storage<PvpTalentEntry> sPvpTalentStore; TC_GAME_API extern DB2Storage<PvpTalentCategoryEntry> sPvpTalentCategoryStore; @@ -286,14 +278,12 @@ TC_GAME_API extern DB2Storage<TraitTreeLoadoutEntryEntry> sTraitTreeLo TC_GAME_API extern DB2Storage<TraitTreeXTraitCostEntry> sTraitTreeXTraitCostStore; TC_GAME_API extern DB2Storage<TraitTreeXTraitCurrencyEntry> sTraitTreeXTraitCurrencyStore; TC_GAME_API extern DB2Storage<TransmogHolidayEntry> sTransmogHolidayStore; -TC_GAME_API extern DB2Storage<TransmogIllusionEntry> sTransmogIllusionStore; TC_GAME_API extern DB2Storage<TransmogSetEntry> sTransmogSetStore; TC_GAME_API extern DB2Storage<TransmogSetGroupEntry> sTransmogSetGroupStore; TC_GAME_API extern DB2Storage<TransmogSetItemEntry> sTransmogSetItemStore; TC_GAME_API extern DB2Storage<TransportAnimationEntry> sTransportAnimationStore; TC_GAME_API extern DB2Storage<TransportRotationEntry> sTransportRotationStore; TC_GAME_API extern DB2Storage<UiMapEntry> sUiMapStore; -TC_GAME_API extern DB2Storage<UISplashScreenEntry> sUISplashScreenStore; TC_GAME_API extern DB2Storage<UnitConditionEntry> sUnitConditionStore; TC_GAME_API extern DB2Storage<UnitPowerBarEntry> sUnitPowerBarStore; TC_GAME_API extern DB2Storage<VehicleEntry> sVehicleStore; @@ -507,7 +497,6 @@ public: std::vector<SkillLineAbilityEntry const*> const* GetSkillLineAbilitiesBySkill(uint32 skillId) const; SkillRaceClassInfoEntry const* GetSkillRaceClassInfo(uint32 skill, uint8 race, uint8 class_) const; std::vector<SkillRaceClassInfoEntry const*> GetSkillRaceClassInfo(uint32 skill) const; - SoulbindConduitRankEntry const* GetSoulbindConduitRank(int32 soulbindConduitId, int32 rank) const; std::vector<SpecializationSpellsEntry const*> const* GetSpecializationSpells(uint32 specId) const; bool IsSpecSetMember(int32 specSetId, uint32 specId) const; static bool IsValidSpellFamiliyName(SpellFamilyNames family); @@ -517,7 +506,6 @@ public: TaxiPathEntry const* GetTaxiPath(uint32 from, uint32 to) const; static bool IsTotemCategoryCompatibleWith(uint32 itemTotemCategoryId, uint32 requiredTotemCategoryId, bool requireAllTotems = true); bool IsToyItem(uint32 toy) const; - TransmogIllusionEntry const* GetTransmogIllusionForEnchantment(uint32 spellItemEnchantmentId) const; std::vector<TransmogSetEntry const*> const* GetTransmogSetsForItemModifiedAppearance(uint32 itemModifiedAppearanceId) const; std::vector<TransmogSetItemEntry const*> const* GetTransmogSetItems(uint32 transmogSetId) const; static bool GetUiMapPosition(float x, float y, float z, int32 mapId, int32 areaId, int32 wmoDoodadPlacementId, int32 wmoGroupId, UiMapSystem system, bool local, diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index eabb0c4ac21..be163abe409 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -2596,16 +2596,16 @@ struct MapEntry bool IsScenario() const { return InstanceType == MAP_SCENARIO; } bool IsWorldMap() const { return InstanceType == MAP_COMMON; } - bool GetEntrancePos(int32& mapid, float& x, float& y) const + bool GetEntrancePos(int32& mapid, float& /*x*/, float& /*y*/) const { if (CorpseMapID < 0) return false; // FIX ME! - //mapid = CorpseMapID; + mapid = CorpseMapID; //x = Corpse.X; //y = Corpse.Y; - //return true; + return true; } bool IsContinent() const @@ -3391,7 +3391,7 @@ struct SpellDurationEntry uint32 ID; int32 Duration; uint32 DurationPerLevel; - uint32 MaxDuration; + int32 MaxDuration; }; struct SpellEffectEntry diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index e99faab32c1..642367f1128 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -49,12 +49,12 @@ LFGDungeonData::LFGDungeonData() : id(0), name(), map(0), type(0), expansion(0), LFGDungeonData::LFGDungeonData(LFGDungeonsEntry const* dbc) : id(dbc->ID), name(dbc->Name[sWorld->GetDefaultDbcLocale()]), map(dbc->MapID), type(uint8(dbc->TypeID)), expansion(uint8(dbc->ExpansionLevel)), group(uint8(dbc->GroupID)), - contentTuningId(uint32(dbc->ContentTuningID)), difficulty(Difficulty(dbc->DifficultyID)), + contentTuningId(0), difficulty(Difficulty(dbc->DifficultyID)), seasonal((dbc->Flags[0] & LFG_FLAG_SEASONAL) != 0), x(0.0f), y(0.0f), z(0.0f), o(0.0f), requiredItemLevel(0), finalDungeonEncounterId(0) { - if (JournalEncounterEntry const* journalEncounter = sJournalEncounterStore.LookupEntry(dbc->FinalEncounterID)) - finalDungeonEncounterId = journalEncounter->DungeonEncounterID; + //if (JournalEncounterEntry const* journalEncounter = sJournalEncounterStore.LookupEntry(dbc->FinalEncounterID)) + // finalDungeonEncounterId = journalEncounter->DungeonEncounterID; } LFGMgr::LFGMgr() : m_QueueTimer(0), m_lfgProposalId(1), diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index ecc2ba48585..5816b1c3707 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -2869,12 +2869,12 @@ void GameObject::Use(Unit* user) if (!areaContentTuning) break; - player->UpdateFishingSkill(areaContentTuning->ExpansionID); + player->UpdateFishingSkill(0); // Send loot int32 areaFishingLevel = sObjectMgr->GetFishingBaseSkillLevel(areaEntry); - uint32 playerFishingSkill = player->GetProfessionSkillForExp(SKILL_FISHING, areaContentTuning->ExpansionID); + uint32 playerFishingSkill = player->GetProfessionSkillForExp(SKILL_FISHING, 0); int32 playerFishingLevel = player->GetSkillValue(playerFishingSkill); int32 roll = irand(1, 100); diff --git a/src/server/game/Entities/Item/ItemBonusMgr.cpp b/src/server/game/Entities/Item/ItemBonusMgr.cpp index 748fd929647..7315bc8ea8a 100644 --- a/src/server/game/Entities/Item/ItemBonusMgr.cpp +++ b/src/server/game/Entities/Item/ItemBonusMgr.cpp @@ -32,10 +32,7 @@ struct ItemLevelSelectorQualityEntryComparator using ItemLevelSelectorQualities = std::set<ItemLevelSelectorQualityEntry const*, ItemLevelSelectorQualityEntryComparator>; -std::unordered_multimap<int32 /*azeriteUnlockMappingSetId*/, AzeriteUnlockMappingEntry const*> _azeriteUnlockMappings; -std::unordered_multimap<uint32 /*itemBonusTreeId*/, ChallengeModeItemBonusOverrideEntry const*> _challengeModeItemBonusOverrides; std::unordered_map<uint32 /*itemBonusListId*/, std::vector<ItemBonusEntry const*>> _itemBonusLists; -std::unordered_multimap<int32, ItemBonusListGroupEntryEntry const*> _itemBonusListGroupEntries; std::unordered_map<int16 /*itemLevelDelta*/, uint32 /*itemBonusListId*/> _itemLevelDeltaToBonusListContainer; std::unordered_map<uint32 /*itemLevelSelectorQualitySetId*/, ItemLevelSelectorQualities> _itemLevelQualitySelectorQualities; std::unordered_map<uint32 /*itemBonusTreeId*/, std::set<ItemBonusTreeNodeEntry const*>> _itemBonusTrees; @@ -46,18 +43,9 @@ namespace ItemBonusMgr { void Load() { - for (AzeriteUnlockMappingEntry const* azeriteUnlockMapping : sAzeriteUnlockMappingStore) - _azeriteUnlockMappings.emplace(azeriteUnlockMapping->AzeriteUnlockMappingSetID, azeriteUnlockMapping); - - for (ChallengeModeItemBonusOverrideEntry const* challengeModeItemBonusOverride : sChallengeModeItemBonusOverrideStore) - _challengeModeItemBonusOverrides.emplace(challengeModeItemBonusOverride->SrcItemBonusTreeID, challengeModeItemBonusOverride); - for (ItemBonusEntry const* bonus : sItemBonusStore) _itemBonusLists[bonus->ParentItemBonusListID].push_back(bonus); - for (ItemBonusListGroupEntryEntry const* bonusListGroupEntry : sItemBonusListGroupEntryStore) - _itemBonusListGroupEntries.emplace(bonusListGroupEntry->ItemBonusListGroupID, bonusListGroupEntry); - for (ItemBonusListLevelDeltaEntry const* itemBonusListLevelDelta : sItemBonusListLevelDeltaStore) _itemLevelDeltaToBonusListContainer[itemBonusListLevelDelta->ItemLevelDelta] = itemBonusListLevelDelta->ID; @@ -112,9 +100,6 @@ ItemContext GetContextForPlayer(MapDifficultyEntry const* mapDifficulty, Player if (!meetsPlayerCondition) continue; - if (itemContextPickerEntry->LabelID && !sDB2Manager.HasContentTuningLabel(contentTuningId, itemContextPickerEntry->LabelID)) - continue; - if (!selectedPickerEntry || selectedPickerEntry->OrderIndex < itemContextPickerEntry->OrderIndex) selectedPickerEntry = itemContextPickerEntry; } @@ -144,294 +129,20 @@ uint32 GetItemBonusListForItemLevelDelta(int16 delta) bool CanApplyBonusTreeToItem(ItemTemplate const* itemTemplate, uint32 itemBonusTreeId, ItemBonusGenerationParams const& params) { - if (ItemBonusTreeEntry const* bonusTree = sItemBonusTreeStore.LookupEntry(itemBonusTreeId)) - { - if (bonusTree->InventoryTypeSlotMask) - if (!(1 << itemTemplate->GetInventoryType() & bonusTree->InventoryTypeSlotMask)) - return false; - - if (bonusTree->Flags & 0x8 && !itemTemplate->HasFlag(ITEM_FLAG2_CASTER_WEAPON)) - return false; - if (bonusTree->Flags & 0x10 && itemTemplate->HasFlag(ITEM_FLAG2_CASTER_WEAPON)) - return false; - if (bonusTree->Flags & 0x20 && !itemTemplate->HasFlag(ITEM_FLAG4_CC_TRINKET)) - return false; - if (bonusTree->Flags & 0x40 && itemTemplate->HasFlag(ITEM_FLAG4_CC_TRINKET)) - return false; - - if (bonusTree->Flags & 0x4) - return true; - } - - if (std::set<ItemBonusTreeNodeEntry const*>* bonusTreeNodes = Trinity::Containers::MapGetValuePtr(_itemBonusTrees, itemBonusTreeId)) - { - bool anyNodeMatched = false; - for (ItemBonusTreeNodeEntry const* bonusTreeNode : *bonusTreeNodes) - { - if (bonusTreeNode->MinMythicPlusLevel > 0) - continue; - - ItemContext nodeContext = ItemContext(bonusTreeNode->ItemContext); - if (nodeContext == ItemContext::NONE || nodeContext == params.Context) - { - if (anyNodeMatched) - return false; - - anyNodeMatched = true; - } - } - } - - return true; + return false; } uint32 GetBonusTreeIdOverride(uint32 itemBonusTreeId, ItemBonusGenerationParams const& params) { - // TODO: configure seasons globally - if (MythicPlusSeasonEntry const* mythicPlusSeason = sMythicPlusSeasonStore.LookupEntry(0)) - { - int32 selectedLevel = -1; - int32 selectedMilestoneSeason = -1; - ChallengeModeItemBonusOverrideEntry const* selectedItemBonusOverride = nullptr; - for (auto& [_, itemBonusOverride] : Trinity::Containers::MapEqualRange(_challengeModeItemBonusOverrides, itemBonusTreeId)) - { - if (itemBonusOverride->Type != 0) - continue; - - if (itemBonusOverride->Value > params.MythicPlusKeystoneLevel.value_or(-1)) - continue; - - if (itemBonusOverride->MythicPlusSeasonID) - { - MythicPlusSeasonEntry const* overrideSeason = sMythicPlusSeasonStore.LookupEntry(itemBonusOverride->MythicPlusSeasonID); - if (!overrideSeason) - continue; - - if (mythicPlusSeason->MilestoneSeason < overrideSeason->MilestoneSeason) - continue; - - if (selectedMilestoneSeason > overrideSeason->MilestoneSeason) - continue; - - if (selectedMilestoneSeason == overrideSeason->MilestoneSeason) - if (selectedLevel > itemBonusOverride->Value) - continue; - - selectedMilestoneSeason = overrideSeason->MilestoneSeason; - } - else if (selectedLevel > itemBonusOverride->Value) - continue; - - selectedLevel = itemBonusOverride->Value; - selectedItemBonusOverride = itemBonusOverride; - } - - if (selectedItemBonusOverride && selectedItemBonusOverride->DstItemBonusTreeID) - itemBonusTreeId = selectedItemBonusOverride->DstItemBonusTreeID; - } - - // TODO: configure seasons globally - if (PvpSeasonEntry const* pvpSeason = sPvpSeasonStore.LookupEntry(0)) - { - int32 selectedLevel = -1; - int32 selectedMilestoneSeason = -1; - ChallengeModeItemBonusOverrideEntry const* selectedItemBonusOverride = nullptr; - for (auto& [_, itemBonusOverride] : Trinity::Containers::MapEqualRange(_challengeModeItemBonusOverrides, itemBonusTreeId)) - { - if (itemBonusOverride->Type != 1) - continue; - - if (itemBonusOverride->Value > params.PvpTier.value_or(-1)) - continue; - - if (itemBonusOverride->PvPSeasonID) - { - PvpSeasonEntry const* overrideSeason = sPvpSeasonStore.LookupEntry(itemBonusOverride->PvPSeasonID); - if (!overrideSeason) - continue; - - if (pvpSeason->MilestoneSeason < overrideSeason->MilestoneSeason) - continue; - - if (selectedMilestoneSeason > overrideSeason->MilestoneSeason) - continue; - - if (selectedMilestoneSeason == overrideSeason->MilestoneSeason) - if (selectedLevel > itemBonusOverride->Value) - continue; - - selectedMilestoneSeason = overrideSeason->MilestoneSeason; - } - else if (selectedLevel > itemBonusOverride->Value) - continue; - - selectedLevel = itemBonusOverride->Value; - selectedItemBonusOverride = itemBonusOverride; - } - - if (selectedItemBonusOverride && selectedItemBonusOverride->DstItemBonusTreeID) - itemBonusTreeId = selectedItemBonusOverride->DstItemBonusTreeID; - } - return itemBonusTreeId; } void ApplyBonusTreeHelper(ItemTemplate const* itemTemplate, uint32 itemBonusTreeId, ItemBonusGenerationParams const& params, int32 sequenceLevel, uint32* itemLevelSelectorId, std::vector<int32>* bonusListIDs) { - uint32 originalItemBonusTreeId = itemBonusTreeId; - - // override bonus tree with season specific values - itemBonusTreeId = GetBonusTreeIdOverride(itemBonusTreeId, params); - - if (!CanApplyBonusTreeToItem(itemTemplate, itemBonusTreeId, params)) - return; - - auto treeItr = _itemBonusTrees.find(itemBonusTreeId); - if (treeItr == _itemBonusTrees.end()) - return; - - for (ItemBonusTreeNodeEntry const* bonusTreeNode : treeItr->second) - { - ItemContext nodeContext = ItemContext(bonusTreeNode->ItemContext); - ItemContext requiredContext = nodeContext != ItemContext::Force_to_NONE ? nodeContext : ItemContext::NONE; - if (nodeContext != ItemContext::NONE && params.Context != requiredContext) - continue; - - if (params.MythicPlusKeystoneLevel) - { - if (bonusTreeNode->MinMythicPlusLevel && params.MythicPlusKeystoneLevel < bonusTreeNode->MinMythicPlusLevel) - continue; - - if (bonusTreeNode->MaxMythicPlusLevel && params.MythicPlusKeystoneLevel > bonusTreeNode->MaxMythicPlusLevel) - continue; - } - - if (bonusTreeNode->ChildItemBonusTreeID) - ApplyBonusTreeHelper(itemTemplate, bonusTreeNode->ChildItemBonusTreeID, params, sequenceLevel, itemLevelSelectorId, bonusListIDs); - else if (bonusTreeNode->ChildItemBonusListID) - bonusListIDs->push_back(bonusTreeNode->ChildItemBonusListID); - else if (bonusTreeNode->ChildItemLevelSelectorID) - *itemLevelSelectorId = bonusTreeNode->ChildItemLevelSelectorID; - else if (bonusTreeNode->ChildItemBonusListGroupID) - { - int32 resolvedSequenceLevel = sequenceLevel; - switch (originalItemBonusTreeId) - { - case 4001: - resolvedSequenceLevel = 1; - break; - case 4079: - if (params.MythicPlusKeystoneLevel) - { - switch (bonusTreeNode->IblGroupPointsModSetID) - { - case 2909: // MythicPlus_End_of_Run levels 2-8 - resolvedSequenceLevel = sDB2Manager.GetCurveValueAt(62951, *params.MythicPlusKeystoneLevel); - break; - case 2910: // MythicPlus_End_of_Run levels 9-16 - resolvedSequenceLevel = sDB2Manager.GetCurveValueAt(62952, *params.MythicPlusKeystoneLevel); - break; - case 2911: // MythicPlus_End_of_Run levels 17-20 - resolvedSequenceLevel = sDB2Manager.GetCurveValueAt(62954, *params.MythicPlusKeystoneLevel); - break; - case 3007: // MythicPlus_Jackpot (weekly reward) levels 2-7 - resolvedSequenceLevel = sDB2Manager.GetCurveValueAt(64388, *params.MythicPlusKeystoneLevel); - break; - case 3008: // MythicPlus_Jackpot (weekly reward) levels 8-15 - resolvedSequenceLevel = sDB2Manager.GetCurveValueAt(64389, *params.MythicPlusKeystoneLevel); - break; - case 3009: // MythicPlus_Jackpot (weekly reward) levels 16-20 - resolvedSequenceLevel = sDB2Manager.GetCurveValueAt(64395, *params.MythicPlusKeystoneLevel); - break; - default: - break; - } - } - break; - case 4125: - resolvedSequenceLevel = 2; - break; - case 4126: - resolvedSequenceLevel = 3; - break; - case 4127: - resolvedSequenceLevel = 4; - break; - case 4128: - switch (params.Context) - { - case ItemContext::Raid_Normal: - case ItemContext::Raid_Raid_Finder: - case ItemContext::Raid_Heroic: - resolvedSequenceLevel = 2; - break; - case ItemContext::Raid_Mythic: - resolvedSequenceLevel = 6; - break; - default: - break; - } - break; - case 4140: - switch (params.Context) - { - case ItemContext::Dungeon_Normal: - resolvedSequenceLevel = 2; - break; - case ItemContext::Dungeon_Mythic: - resolvedSequenceLevel = 4; - break; - default: - break; - } - break; - default: - break; - } - - for (auto const& [_, bonusListGroupEntry] : Trinity::Containers::MapEqualRange(_itemBonusListGroupEntries, bonusTreeNode->ChildItemBonusListGroupID)) - { - if ((resolvedSequenceLevel > 0 || bonusListGroupEntry->SequenceValue <= 0) && resolvedSequenceLevel != bonusListGroupEntry->SequenceValue) - continue; - - *itemLevelSelectorId = bonusListGroupEntry->ItemLevelSelectorID; - bonusListIDs->push_back(bonusListGroupEntry->ItemBonusListID); - break; - } - } - } } int32 GetAzeriteUnlockBonusList(uint16 azeriteUnlockMappingSetId, uint16 minItemLevel, InventoryType inventoryType) { - AzeriteUnlockMappingEntry const* selectedAzeriteUnlockMapping = nullptr; - for (auto [_, azeriteUnlockMapping] : Trinity::Containers::MapEqualRange(_azeriteUnlockMappings, azeriteUnlockMappingSetId)) - { - if (minItemLevel < azeriteUnlockMapping->ItemLevel) - continue; - - if (selectedAzeriteUnlockMapping && selectedAzeriteUnlockMapping->ItemLevel > azeriteUnlockMapping->ItemLevel) - continue; - - selectedAzeriteUnlockMapping = azeriteUnlockMapping; - } - - if (selectedAzeriteUnlockMapping) - { - switch (inventoryType) - { - case INVTYPE_HEAD: - return selectedAzeriteUnlockMapping->ItemBonusListHead; - case INVTYPE_SHOULDERS: - return selectedAzeriteUnlockMapping->ItemBonusListShoulders; - case INVTYPE_CHEST: - case INVTYPE_ROBE: - return selectedAzeriteUnlockMapping->ItemBonusListChest; - default: - break; - } - } - return 0; } @@ -473,9 +184,6 @@ std::vector<int32> GetBonusListsForItem(uint32 itemId, ItemBonusGenerationParams bonusListIDs.push_back((*itemSelectorQuality)->QualityItemBonusListID); } } - - if (int32 azeriteUnlockBonusListId = GetAzeriteUnlockBonusList(selector->AzeriteUnlockMappingSet, selector->MinItemLevel, itemTemplate->GetInventoryType())) - bonusListIDs.push_back(azeriteUnlockBonusListId); } return bonusListIDs; diff --git a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp index 297d39f1da9..224a8cc6001 100644 --- a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp +++ b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp @@ -160,14 +160,14 @@ TC_GAME_API float GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uint switch (quality) { case ITEM_QUALITY_UNCOMMON: - return randPropPointsEntry->GoodF[propIndex]; + return randPropPointsEntry->Good[propIndex]; case ITEM_QUALITY_RARE: case ITEM_QUALITY_HEIRLOOM: - return randPropPointsEntry->SuperiorF[propIndex]; + return randPropPointsEntry->Superior[propIndex]; case ITEM_QUALITY_EPIC: case ITEM_QUALITY_LEGENDARY: case ITEM_QUALITY_ARTIFACT: - return randPropPointsEntry->EpicF[propIndex]; + return randPropPointsEntry->Epic[propIndex]; } return 0; diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 51c85f241df..350756f3313 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2381,7 +2381,7 @@ int32 WorldObject::CalcSpellDuration(SpellInfo const* spellInfo, std::vector<Spe int32 baseComboCost = (*itr)->ManaCost + (*itr)->OptionalCost; if (PowerTypeEntry const* powerTypeEntry = sDB2Manager.GetPowerTypeEntry(POWER_COMBO_POINTS)) - baseComboCost += int32(CalculatePct(powerTypeEntry->MaxBasePower, (*itr)->PowerCostPct + (*itr)->OptionalCostPct)); + baseComboCost += int32(CalculatePct(powerTypeEntry->MaxBasePower, (*itr)->PowerCostPct)); float durationPerComboPoint = float(maxduration - minduration) / baseComboCost; return minduration + int32(durationPerComboPoint * consumedItr->Amount); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 296875faa06..c59c553f37b 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6335,46 +6335,6 @@ void Player::CheckAreaExploreAndOutdoor() AddExploredZones(offset, val); UpdateCriteria(CriteriaType::RevealWorldMapOverlay, GetAreaId()); - - if (Optional<ContentTuningLevels> areaLevels = sDB2Manager.GetContentTuningData(areaEntry->ContentTuningID, m_playerData->CtrOptions->ContentTuningConditionMask)) - { - if (IsMaxLevel()) - { - SendExplorationExperience(areaId, 0); - } - else - { - int16 areaLevel = std::min(std::max(int16(GetLevel()), areaLevels->MinLevel), areaLevels->MaxLevel); - int32 diff = int32(GetLevel()) - areaLevel; - uint32 XP; - if (diff < -5) - { - XP = uint32(sObjectMgr->GetBaseXP(GetLevel() + 5) * sWorld->getRate(RATE_XP_EXPLORE)); - } - else if (diff > 5) - { - int32 exploration_percent = 100 - ((diff - 5) * 5); - if (exploration_percent < 0) - exploration_percent = 0; - - XP = uint32(sObjectMgr->GetBaseXP(areaLevel) * exploration_percent / 100 * sWorld->getRate(RATE_XP_EXPLORE)); - } - else - { - XP = uint32(sObjectMgr->GetBaseXP(areaLevel) * sWorld->getRate(RATE_XP_EXPLORE)); - } - - if (sWorld->getIntConfig(CONFIG_MIN_DISCOVERED_SCALED_XP_RATIO)) - { - uint32 minScaledXP = uint32(sObjectMgr->GetBaseXP(areaLevel)*sWorld->getRate(RATE_XP_EXPLORE)) * sWorld->getIntConfig(CONFIG_MIN_DISCOVERED_SCALED_XP_RATIO) / 100; - XP = std::max(minScaledXP, XP); - } - - GiveXP(XP, nullptr); - SendExplorationExperience(areaId, XP); - } - TC_LOG_DEBUG("entities.player", "Player '{}' ({}) discovered a new area: {}", GetName(),GetGUID().ToString(), areaId); - } } } @@ -6464,10 +6424,12 @@ ReputationRank Player::GetReputationRank(uint32 faction) const int32 Player::CalculateReputationGain(ReputationSource source, uint32 creatureOrQuestLevel, int32 rep, int32 faction, bool noQuestBonus) { bool noBonuses = false; + /* if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(faction)) if (FriendshipReputationEntry const* friendshipReputation = sFriendshipReputationStore.LookupEntry(factionEntry->FriendshipRepID)) if (friendshipReputation->GetFlags().HasFlag(FriendshipReputationFlags::NoRepGainModifiers)) noBonuses = true; + */ float percent = 100.0f; @@ -6570,8 +6532,8 @@ void Player::RewardReputation(Unit* victim, float rate) Map const* map = GetMap(); if (map->IsNonRaidDungeon()) if (LFGDungeonsEntry const* dungeon = DB2Manager::GetLfgDungeon(map->GetId(), map->GetDifficultyID())) - if (Optional<ContentTuningLevels> dungeonLevels = sDB2Manager.GetContentTuningData(dungeon->ContentTuningID, m_playerData->CtrOptions->ContentTuningConditionMask)) - if (dungeonLevels->TargetLevelMax == int16(GetMaxLevelForExpansion(EXPANSION_WRATH_OF_THE_LICH_KING))) + if (LFGDungeonsEntry const* dungeon = DB2Manager::GetLfgDungeon(map->GetId(), map->GetDifficultyID())) + if (dungeon->TargetLevel == int16(GetMaxLevelForExpansion(EXPANSION_WRATH_OF_THE_LICH_KING))) ChampioningFaction = GetChampioningFaction(); } @@ -7345,9 +7307,6 @@ uint32 Player::GetCurrencyMaxQuantity(CurrencyTypesEntry const* currency, bool o return 0; uint32 maxQuantity = currency->MaxQty; - if (currency->MaxQtyWorldStateID) - maxQuantity = sWorldStateMgr->GetValue(currency->MaxQtyWorldStateID, GetMap()); - uint32 increasedCap = 0; if (currency->GetFlags().HasFlag(CurrencyTypesFlags::DynamicMaximum)) increasedCap = GetCurrencyIncreasedCapQuantity(currency->ID); @@ -18442,21 +18401,6 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol PushQuests(); - for (TransmogIllusionEntry const* transmogIllusion : sTransmogIllusionStore) - { - if (!transmogIllusion->GetFlags().HasFlag(TransmogIllusionFlags::PlayerConditionGrantsOnLogin)) - continue; - - if (GetSession()->GetCollectionMgr()->HasTransmogIllusion(transmogIllusion->ID)) - continue; - - if (PlayerConditionEntry const* playerCondition = sPlayerConditionStore.LookupEntry(transmogIllusion->UnlockConditionID)) - if (!ConditionMgr::IsPlayerMeetingCondition(this, playerCondition)) - continue; - - GetSession()->GetCollectionMgr()->AddTransmogIllusion(transmogIllusion->ID); - } - return true; } @@ -26791,58 +26735,7 @@ void Player::ResetTalentSpecialization() TalentLearnResult Player::LearnPvpTalent(uint32 talentID, uint8 slot, int32* spellOnCooldown) { - if (slot >= MAX_PVP_TALENT_SLOTS) - return TALENT_FAILED_UNKNOWN; - - if (IsInCombat()) - return TALENT_FAILED_AFFECTING_COMBAT; - - if (isDead()) - return TALENT_FAILED_CANT_DO_THAT_RIGHT_NOW; - - PvpTalentEntry const* talentInfo = sPvpTalentStore.LookupEntry(talentID); - if (!talentInfo) - return TALENT_FAILED_UNKNOWN; - - if (talentInfo->SpecID != int32(GetPrimarySpecialization())) - return TALENT_FAILED_UNKNOWN; - - if (talentInfo->LevelRequired > GetLevel()) - return TALENT_FAILED_UNKNOWN; - - if (sDB2Manager.GetRequiredLevelForPvpTalentSlot(slot, Classes(GetClass())) > GetLevel()) - return TALENT_FAILED_UNKNOWN; - - if (PvpTalentCategoryEntry const* talentCategory = sPvpTalentCategoryStore.LookupEntry(talentInfo->PvpTalentCategoryID)) - if (!(talentCategory->TalentSlotMask & (1 << slot))) - return TALENT_FAILED_UNKNOWN; - - // Check if player doesn't have this talent in other slot - if (HasPvpTalent(talentID, GetActiveTalentGroup())) - return TALENT_FAILED_UNKNOWN; - - if (PlayerConditionEntry const* playerCondition = sPlayerConditionStore.LookupEntry(talentInfo->PlayerConditionID)) - if (!ConditionMgr::IsPlayerMeetingCondition(this, playerCondition)) - return TALENT_FAILED_CANT_DO_THAT_RIGHT_NOW; - - if (PvpTalentEntry const* talent = sPvpTalentStore.LookupEntry(GetPvpTalentMap(GetActiveTalentGroup())[slot])) - { - if (!HasPlayerFlag(PLAYER_FLAGS_RESTING) && !HasUnitFlag2(UNIT_FLAG2_ALLOW_CHANGING_TALENTS)) - return TALENT_FAILED_REST_AREA; - - if (GetSpellHistory()->HasCooldown(talent->SpellID)) - { - *spellOnCooldown = talent->SpellID; - return TALENT_FAILED_CANT_REMOVE_TALENT; - } - - RemovePvpTalent(talent, GetActiveTalentGroup()); - } - - if (!AddPvpTalent(talentInfo, GetActiveTalentGroup(), slot)) - return TALENT_FAILED_UNKNOWN; - - return TALENT_LEARN_OK; + return TALENT_FAILED_UNKNOWN; } bool Player::AddPvpTalent(PvpTalentEntry const* talent, uint8 activeTalentGroup, uint8 slot) diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index b07e7d625e9..5dd4eaf42d0 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -727,29 +727,6 @@ void Player::UpdateSpellCritChance() void Player::UpdateCorruption() { - float effectiveCorruption = GetRatingBonusValue(CR_CORRUPTION) - GetRatingBonusValue(CR_CORRUPTION_RESISTANCE); - for (CorruptionEffectsEntry const* corruptionEffect : sCorruptionEffectsStore) - { - if ((CorruptionEffectsFlag(corruptionEffect->Flags) & CorruptionEffectsFlag::Disabled) != CorruptionEffectsFlag::None) - continue; - - if (effectiveCorruption < corruptionEffect->MinCorruption) - { - RemoveAura(corruptionEffect->Aura); - continue; - } - - if (PlayerConditionEntry const* playerCondition = sPlayerConditionStore.LookupEntry(corruptionEffect->PlayerConditionID)) - { - if (!ConditionMgr::IsPlayerMeetingCondition(this, playerCondition)) - { - RemoveAura(corruptionEffect->Aura); - continue; - } - } - - CastSpell(this, corruptionEffect->Aura, true); - } } void Player::UpdateArmorPenetration(int32 amount) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c9e7114b6af..708b35d2418 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8035,11 +8035,6 @@ MountCapabilityEntry const* Unit::GetMountCapability(uint32 mountType) const if (mountCapability->ReqSpellKnownID && !HasSpell(mountCapability->ReqSpellKnownID)) continue; - if (Player const* thisPlayer = ToPlayer()) - if (PlayerConditionEntry const* playerCondition = sPlayerConditionStore.LookupEntry(mountCapability->PlayerConditionID)) - if (!ConditionMgr::IsPlayerMeetingCondition(thisPlayer, playerCondition)) - continue; - return mountCapability; } @@ -11976,11 +11971,27 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const } } + uint32 modelId = 0; SpellShapeshiftFormEntry const* formEntry = sSpellShapeshiftFormStore.LookupEntry(form); - if (formEntry && formEntry->CreatureDisplayID) - return formEntry->CreatureDisplayID; + if (formEntry && formEntry->CreatureDisplayID[0]) + { + // Take the alliance modelid as default + if (GetTypeId() != TYPEID_PLAYER) + return formEntry->CreatureDisplayID[0]; + else + { + if (Player::TeamForRace(GetRace()) == ALLIANCE) + modelId = formEntry->CreatureDisplayID[0]; + else + modelId = formEntry->CreatureDisplayID[1]; - return 0; + // If the player is horde but there are no values for the horde modelid - take the alliance modelid + if (!modelId && Player::TeamForRace(GetRace()) == HORDE) + modelId = formEntry->CreatureDisplayID[0]; + } + } + + return modelId; } void Unit::JumpTo(float speedXY, float speedZ, float angle, Optional<Position> dest) diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 0f63ab58c88..13c70ef83d7 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -3321,11 +3321,13 @@ void ObjectMgr::LoadItemTemplates() specs.set(); } + /* // Load item effects (spells) for (ItemXItemEffectEntry const* effectEntry : sItemXItemEffectStore) if (ItemTemplate* item = Trinity::Containers::MapGetValuePtr(_itemTemplateStore, effectEntry->ItemID)) if (ItemEffectEntry const* effect = sItemEffectStore.LookupEntry(effectEntry->ItemEffectID)) item->Effects.push_back(effect); + */ TC_LOG_INFO("server.loading", ">> Loaded {} item templates in {} ms", _itemTemplateStore.size(), GetMSTimeDiffToNow(oldMSTime)); } @@ -6917,8 +6919,7 @@ WorldSafeLocsEntry const* ObjectMgr::GetClosestGraveyardInZone(WorldLocation con // if find graveyard at different map from where entrance placed (or no entrance data), use any first if (!mapEntry || mapEntry->CorpseMapID < 0 - || uint32(mapEntry->CorpseMapID) != entry->Loc.GetMapId() - || (mapEntry->Corpse.X == 0 && mapEntry->Corpse.Y == 0)) // Check X and Y + || uint32(mapEntry->CorpseMapID) != entry->Loc.GetMapId()) { // not have any corrdinates for check distance anyway entryFar = entry; @@ -6926,20 +6927,15 @@ WorldSafeLocsEntry const* ObjectMgr::GetClosestGraveyardInZone(WorldLocation con } // at entrance map calculate distance (2D); - float dist2 = (entry->Loc.GetPositionX() - mapEntry->Corpse.X) * (entry->Loc.GetPositionX() - mapEntry->Corpse.X) - + (entry->Loc.GetPositionY() - mapEntry->Corpse.Y) * (entry->Loc.GetPositionY() - mapEntry->Corpse.Y); if (foundEntr) { - if (dist2 < distEntr) - { - distEntr = dist2; - entryEntr = entry; - } + //distEntr = 0.f; + entryEntr = entry; } else { foundEntr = true; - distEntr = dist2; + //distEntr = 0.f; entryEntr = entry; } } diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index e7baa92f361..fcb0ed610ed 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1167,18 +1167,8 @@ void WorldSession::HandleConversationLineStarted(WorldPackets::Misc::Conversatio void WorldSession::HandleRequestLatestSplashScreen(WorldPackets::Misc::RequestLatestSplashScreen& /*requestLatestSplashScreen*/) { - UISplashScreenEntry const* splashScreen = nullptr; - for (auto itr = sUISplashScreenStore.begin(); itr != sUISplashScreenStore.end(); ++itr) - { - if (PlayerConditionEntry const* playerCondition = sPlayerConditionStore.LookupEntry(itr->CharLevelConditionID)) - if (!ConditionMgr::IsPlayerMeetingCondition(_player, playerCondition)) - continue; - - splashScreen = *itr; - } - WorldPackets::Misc::SplashScreenShowLatest splashScreenShowLatest; - splashScreenShowLatest.UISplashScreenID = splashScreen ? splashScreen->ID : 0; + splashScreenShowLatest.UISplashScreenID = 0; SendPacket(splashScreenShowLatest.Write()); } diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index 74548ba34e2..4bcab4d2074 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -154,8 +154,8 @@ void WorldSession::HandleQueryCorpseLocation(WorldPackets::Query::QueryCorpseLoc if (std::shared_ptr<TerrainInfo> entranceTerrain = sTerrainMgr.LoadTerrain(corpseMapEntry->CorpseMapID)) { mapID = corpseMapEntry->CorpseMapID; - x = corpseMapEntry->Corpse.X; - y = corpseMapEntry->Corpse.Y; + //x = corpseMapEntry->Corpse.X; + //y = corpseMapEntry->Corpse.Y; z = entranceTerrain->GetStaticHeight(player->GetPhaseShift(), mapID, x, y, MAX_HEIGHT); } } diff --git a/src/server/game/Handlers/TransmogrificationHandler.cpp b/src/server/game/Handlers/TransmogrificationHandler.cpp index e067b97f57a..23d51ec49fd 100644 --- a/src/server/game/Handlers/TransmogrificationHandler.cpp +++ b/src/server/game/Handlers/TransmogrificationHandler.cpp @@ -119,36 +119,6 @@ void WorldSession::HandleTransmogrifyItems(WorldPackets::Transmogrification::Tra } else resetAppearanceItems.push_back(itemTransmogrified); - - if (transmogItem.SpellItemEnchantmentID) - { - if (transmogItem.Slot != EQUIPMENT_SLOT_MAINHAND && transmogItem.Slot != EQUIPMENT_SLOT_OFFHAND) - { - TC_LOG_DEBUG("network", "WORLD: HandleTransmogrifyItems - {}, Name: {} tried to transmogrify illusion into non-weapon slot ({}).", player->GetGUID().ToString(), player->GetName(), transmogItem.Slot); - return; - } - - TransmogIllusionEntry const* illusion = sDB2Manager.GetTransmogIllusionForEnchantment(transmogItem.SpellItemEnchantmentID); - if (!illusion) - { - TC_LOG_DEBUG("network", "WORLD: HandleTransmogrifyItems - {}, Name: {} tried to transmogrify illusion using invalid enchant ({}).", player->GetGUID().ToString(), player->GetName(), transmogItem.SpellItemEnchantmentID); - return; - } - - if (PlayerConditionEntry const* condition = sPlayerConditionStore.LookupEntry(illusion->UnlockConditionID)) - { - if (!ConditionMgr::IsPlayerMeetingCondition(player, condition)) - { - TC_LOG_DEBUG("network", "WORLD: HandleTransmogrifyItems - {}, Name: {} tried to transmogrify illusion using not allowed enchant ({}).", player->GetGUID().ToString(), player->GetName(), transmogItem.SpellItemEnchantmentID); - return; - } - } - - illusionItems[itemTransmogrified] = transmogItem.SpellItemEnchantmentID; - cost += illusion->TransmogCost; - } - else - resetIllusionItems.push_back(itemTransmogrified); } if (!player->HasAuraType(SPELL_AURA_REMOVE_TRANSMOG_COST) && cost) // 0 cost if reverting look diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 40c08e742f7..2acece13dd0 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -440,8 +440,6 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state) DoUpdateCriteria(CriteriaType::DefeatDungeonEncounter, dungeonEncounter->ID); SendBossKillCredit(dungeonEncounter->ID); - if (dungeonEncounter->CompleteWorldStateID) - DoUpdateWorldState(dungeonEncounter->CompleteWorldStateID, 1); UpdateLfgEncounterState(bossInfo); } @@ -508,10 +506,6 @@ void InstanceScript::Load(char const* data) { if (bosses[i].state == DONE && !CheckRequiredBosses(i)) bosses[i].state = NOT_STARTED; - - if (DungeonEncounterEntry const* dungeonEncounter = bosses[i].GetDungeonEncounterForDifficulty(instance->GetDifficultyID())) - if (dungeonEncounter->CompleteWorldStateID) - DoUpdateWorldState(dungeonEncounter->CompleteWorldStateID, bosses[i].state == DONE ? 1 : 0); } UpdateSpawnGroups(); diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index 20306a41081..17003ca274a 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -398,8 +398,6 @@ uint32 Quest::XPValue(Player const* player, uint32 contentTuningId, uint32 xpDif return 0; uint32 xp = questXp->Difficulty[xpDifficulty]; - if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(contentTuningId)) - xp = xp * contentTuning->QuestXpMultiplier; int32 diffFactor = 2 * (questLevel - player->GetLevel()) + 12; if (diffFactor < 1) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index a424e24a7bc..0086030683f 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5775,11 +5775,6 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 if (m_spellInfo->ExcludeCasterAuraSpell && unitCaster->HasAura(m_spellInfo->ExcludeCasterAuraSpell)) return SPELL_FAILED_CASTER_AURASTATE; - if (m_spellInfo->CasterAuraType && !unitCaster->HasAuraType(m_spellInfo->CasterAuraType)) - return SPELL_FAILED_CASTER_AURASTATE; - if (m_spellInfo->ExcludeCasterAuraType && unitCaster->HasAuraType(m_spellInfo->ExcludeCasterAuraType)) - return SPELL_FAILED_CASTER_AURASTATE; - if (unitCaster->IsInCombat() && !m_spellInfo->CanBeUsedInCombat(unitCaster)) return SPELL_FAILED_AFFECTING_COMBAT; } @@ -6559,54 +6554,7 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 case SPELL_EFFECT_GRANT_BATTLEPET_LEVEL: case SPELL_EFFECT_GRANT_BATTLEPET_EXPERIENCE: { - Player* playerCaster = m_caster->ToPlayer(); - if (!playerCaster || !m_targets.GetUnitTarget() || !m_targets.GetUnitTarget()->IsCreature()) - return SPELL_FAILED_BAD_TARGETS; - - BattlePets::BattlePetMgr* battlePetMgr = playerCaster->GetSession()->GetBattlePetMgr(); - if (!battlePetMgr->HasJournalLock()) - return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; - - if (Creature* creature = m_targets.GetUnitTarget()->ToCreature()) - { - if (playerCaster->GetSummonedBattlePetGUID().IsEmpty() || creature->GetBattlePetCompanionGUID().IsEmpty()) - return SPELL_FAILED_NO_PET; - - if (playerCaster->GetSummonedBattlePetGUID() != creature->GetBattlePetCompanionGUID()) - return SPELL_FAILED_BAD_TARGETS; - - if (BattlePets::BattlePet* battlePet = battlePetMgr->GetPet(creature->GetBattlePetCompanionGUID())) - { - if (BattlePetSpeciesEntry const* battlePetSpecies = sBattlePetSpeciesStore.LookupEntry(battlePet->PacketInfo.Species)) - { - if (uint32 battlePetType = spellEffectInfo.MiscValue) - if (!(battlePetType & (1 << battlePetSpecies->PetTypeEnum))) - return SPELL_FAILED_WRONG_BATTLE_PET_TYPE; - - if (spellEffectInfo.Effect == SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY) - { - auto qualityItr = std::lower_bound(sBattlePetBreedQualityStore.begin(), sBattlePetBreedQualityStore.end(), spellEffectInfo.CalcBaseValue(m_caster, creature, m_castItemEntry, m_castItemLevel), [](BattlePetBreedQualityEntry const* a1, int32 selector) - { - return a1->MaxQualityRoll < selector; - }); - - BattlePets::BattlePetBreedQuality quality = BattlePets::BattlePetBreedQuality::Poor; - if (qualityItr != sBattlePetBreedQualityStore.end()) - quality = BattlePets::BattlePetBreedQuality(qualityItr->QualityEnum); - - if (battlePet->PacketInfo.Quality >= AsUnderlyingType(quality)) - return SPELL_FAILED_CANT_UPGRADE_BATTLE_PET; - } - - if (spellEffectInfo.Effect == SPELL_EFFECT_GRANT_BATTLEPET_LEVEL || spellEffectInfo.Effect == SPELL_EFFECT_GRANT_BATTLEPET_EXPERIENCE) - if (battlePet->PacketInfo.Level >= BattlePets::MAX_BATTLE_PET_LEVEL) - return GRANT_PET_LEVEL_FAIL; - - if (battlePetSpecies->GetFlags().HasFlag(BattlePetSpeciesFlags::CantBattle)) - return SPELL_FAILED_BAD_TARGETS; - } - } - } + return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; break; } default: diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 8c694c29f89..6f72cacf075 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2485,7 +2485,7 @@ void Spell::EffectEnchantItemTmp() } // select enchantment duration - uint32 duration = pEnchant->Duration; + uint32 duration = m_damage; // item can be in trade slot and have owner diff. from caster Player* item_owner = itemTarget->GetOwner(); @@ -3807,7 +3807,7 @@ void Spell::EffectSkinning() if (!contentTuning) return; - uint32 skinningSkill = player->GetProfessionSkillForExp(skill, contentTuning->ExpansionID); + uint32 skinningSkill = player->GetProfessionSkillForExp(skill, 0); if (!skinningSkill) return; @@ -5505,6 +5505,9 @@ void Spell::EffectEnableBattlePets() void Spell::EffectChangeBattlePetQuality() { + return; + + /* if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) return; @@ -5525,6 +5528,7 @@ void Spell::EffectChangeBattlePetQuality() quality = BattlePets::BattlePetBreedQuality(qualityItr->QualityEnum); playerCaster->GetSession()->GetBattlePetMgr()->ChangeBattlePetQuality(unitTarget->GetBattlePetCompanionGUID(), quality); + */ } void Spell::EffectLaunchQuestChoice() @@ -5926,6 +5930,9 @@ void Spell::EffectGrantBattlePetExperience() void Spell::EffectLearnTransmogIllusion() { + return; + + /* if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) return; @@ -5938,6 +5945,7 @@ void Spell::EffectLearnTransmogIllusion() return; player->GetSession()->GetCollectionMgr()->AddTransmogIllusion(illusionId); + */ } void Spell::EffectModifyAuraStacks() diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 4df6b83d89c..4e2e92a8f21 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -434,7 +434,6 @@ SpellEffectInfo::SpellEffectInfo(SpellInfo const* spellInfo, SpellEffectEntry co TriggerSpell = _effect.EffectTriggerSpell; SpellClassMask = _effect.EffectSpellClassMask; BonusCoefficientFromAP = _effect.BonusCoefficientFromAP; - Scaling.Class = _effect.ScalingClass; Scaling.Coefficient = _effect.Coefficient; Scaling.Variance = _effect.Variance; Scaling.ResourceCoefficient = _effect.ResourceCoefficient; @@ -571,6 +570,7 @@ int32 SpellEffectInfo::CalcBaseValue(WorldObject const* caster, Unit const* targ level = _spellInfo->Scaling.MaxScalingLevel; float value = 0.0f; + /* if (level > 0) { if (!Scaling.Class) @@ -606,8 +606,9 @@ int32 SpellEffectInfo::CalcBaseValue(WorldObject const* caster, Unit const* targ if (GtStaminaMultByILvl const* staminaMult = sStaminaMultByILvlGameTable.GetRow(effectiveItemLevel)) if (ItemSparseEntry const* itemSparse = sItemSparseStore.LookupEntry(itemId)) value *= GetIlvlStatMultiplier(staminaMult, InventoryType(itemSparse->InventoryType)); - */ + } + */ value *= Scaling.Coefficient; if (value > 0.0f && value < 1.0f) @@ -618,27 +619,6 @@ int32 SpellEffectInfo::CalcBaseValue(WorldObject const* caster, Unit const* targ else { float value = BasePoints; - ExpectedStatType stat = GetScalingExpectedStat(); - if (stat != ExpectedStatType::None) - { - if (_spellInfo->HasAttribute(SPELL_ATTR0_SCALES_WITH_CREATURE_LEVEL)) - stat = ExpectedStatType::CreatureAutoAttackDps; - - // TODO - add expansion and content tuning id args? - uint32 contentTuningId = _spellInfo->ContentTuningId; // content tuning should be passed as arg, the one stored in SpellInfo is fallback - int32 expansion = -2; - if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(contentTuningId)) - expansion = contentTuning->ExpansionID; - - int32 level = 1; - if (target && _spellInfo->HasAttribute(SPELL_ATTR8_USE_TARGETS_LEVEL_FOR_SPELL_SCALING)) - level = target->GetLevel(); - else if (caster && caster->IsUnit()) - level = caster->ToUnit()->GetLevel(); - - value = sDB2Manager.EvaluateExpectedStat(stat, level, expansion, 0, CLASS_NONE, 0) * BasePoints / 100.0f; - } - return int32(round(value)); } } @@ -1250,10 +1230,6 @@ SpellInfo::SpellInfo(SpellNameEntry const* spellName, ::Difficulty difficulty, S TargetAuraSpell = _aura->TargetAuraSpell; ExcludeCasterAuraSpell = _aura->ExcludeCasterAuraSpell; ExcludeTargetAuraSpell = _aura->ExcludeTargetAuraSpell; - CasterAuraType = AuraType(_aura->CasterAuraType); - TargetAuraType = AuraType(_aura->TargetAuraType); - ExcludeCasterAuraType = AuraType(_aura->ExcludeCasterAuraType); - ExcludeTargetAuraType = AuraType(_aura->ExcludeTargetAuraType); } // SpellCastingRequirementsEntry @@ -3955,34 +3931,6 @@ Optional<SpellPowerCost> SpellInfo::CalcPowerCost(SpellPowerEntry const* power, { powerCost = int32(power->OptionalCost); - if (power->OptionalCostPct) - { - switch (power->PowerType) - { - // health as power used - case POWER_HEALTH: - powerCost += int32(CalculatePct(unitCaster->GetMaxHealth(), power->OptionalCostPct)); - break; - case POWER_MANA: - powerCost += int32(CalculatePct(unitCaster->GetCreateMana(), power->OptionalCostPct)); - break; - case POWER_ALTERNATE_POWER: - TC_LOG_ERROR("spells", "SpellInfo::CalcPowerCost: Unsupported power type POWER_ALTERNATE_POWER in spell {} for optional cost percent", Id); - return {}; - default: - { - if (PowerTypeEntry const* powerTypeEntry = sDB2Manager.GetPowerTypeEntry(Powers(power->PowerType))) - { - powerCost += int32(CalculatePct(powerTypeEntry->MaxBasePower, power->OptionalCostPct)); - break; - } - - TC_LOG_ERROR("spells", "SpellInfo::CalcPowerCost: Unknown power type '{}' in spell {} for optional cost percent", power->PowerType, Id); - return {}; - } - } - } - powerCost += unitCaster->GetTotalAuraModifier(SPELL_AURA_MOD_ADDITIONAL_POWER_COST, [this, power](AuraEffect const* aurEff) -> bool { return aurEff->GetMiscValue() == power->PowerType diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index cbc56e7a079..d8364042762 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -242,7 +242,6 @@ public: // SpellScalingEntry struct ScalingInfo { - int32 Class; float Coefficient; float Variance; float ResourceCoefficient; @@ -358,10 +357,6 @@ class TC_GAME_API SpellInfo uint32 TargetAuraSpell = 0; uint32 ExcludeCasterAuraSpell = 0; uint32 ExcludeTargetAuraSpell = 0; - AuraType CasterAuraType = SPELL_AURA_NONE; - AuraType TargetAuraType = SPELL_AURA_NONE; - AuraType ExcludeCasterAuraType = SPELL_AURA_NONE; - AuraType ExcludeTargetAuraType = SPELL_AURA_NONE; SpellCastTimesEntry const* CastTimeEntry = nullptr; uint32 RecoveryTime = 0; uint32 CategoryRecoveryTime = 0; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index e7673939f7c..68373ed3ea4 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2907,10 +2907,10 @@ void SpellMgr::LoadSpellInfoServerside() spellInfo.TargetAuraSpell = fields[31].GetUInt32(); spellInfo.ExcludeCasterAuraSpell = fields[32].GetUInt32(); spellInfo.ExcludeTargetAuraSpell = fields[33].GetUInt32(); - spellInfo.CasterAuraType = AuraType(fields[34].GetInt32()); - spellInfo.TargetAuraType = AuraType(fields[35].GetInt32()); - spellInfo.ExcludeCasterAuraType = AuraType(fields[36].GetInt32()); - spellInfo.ExcludeTargetAuraType = AuraType(fields[37].GetInt32()); + // spellInfo.CasterAuraType = AuraType(fields[34].GetInt32()); + // spellInfo.TargetAuraType = AuraType(fields[35].GetInt32()); + // spellInfo.ExcludeCasterAuraType = AuraType(fields[36].GetInt32()); + // spellInfo.ExcludeTargetAuraType = AuraType(fields[37].GetInt32()); spellInfo.CastTimeEntry = sSpellCastTimesStore.LookupEntry(fields[38].GetUInt32()); spellInfo.RecoveryTime = fields[39].GetUInt32(); spellInfo.CategoryRecoveryTime = fields[40].GetUInt32(); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index f3a1d809b76..5b0f9ac28f9 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -5004,7 +5004,7 @@ class spell_gen_skinning : public SpellScript if (!contentTuning) return; - uint32 skinningSkill = player->GetProfessionSkillForExp(SKILL_SKINNING, contentTuning->ExpansionID); + uint32 skinningSkill = player->GetProfessionSkillForExp(SKILL_SKINNING, 0); if (!skinningSkill) return; |