Core/DataStores: 9.1.0 db2 structures

Port From (https://github.com/TrinityCore/TrinityCore/commit/ce1046a8fd0f04aad6c414786949269fffea88f3)
This commit is contained in:
hondacrx
2021-08-08 14:40:42 -04:00
parent 491ec3333c
commit 7ca12d9793
28 changed files with 323 additions and 128 deletions
@@ -701,7 +701,7 @@ namespace Framework.Constants
// 227 - 0 Criterias // 227 - 0 Criterias
ApplyConduit = 228, ApplyConduit = 228,
ConvertItemsToCurrency = 229, ConvertItemsToCurrency = 229,
TotalTypes = 230 TotalTypes = 232
} }
public enum CriteriaDataType public enum CriteriaDataType
+1 -1
View File
@@ -45,7 +45,7 @@ namespace Framework.Constants
public const uint infinityCooldownDelayCheck = Time.Month / 2; public const uint infinityCooldownDelayCheck = Time.Month / 2;
public const int MaxPlayerSummonDelay = 2 * Time.Minute; public const int MaxPlayerSummonDelay = 2 * Time.Minute;
public const int TaxiMaskSize = 337; public const int TaxiMaskSize = 338;
// corpse reclaim times // corpse reclaim times
public const int DeathExpireStep = (5 * Time.Minute); public const int DeathExpireStep = (5 * Time.Minute);
+1 -1
View File
@@ -49,7 +49,7 @@ namespace Framework.Constants
/// <summary> /// <summary>
/// BattlePets Const /// BattlePets Const
/// </summary> /// </summary>
public const int MaxBattlePetSpeciesId = 3084; public const int MaxBattlePetSpeciesId = 3159;
public const int MaxPetBattleSlots = 3; public const int MaxPetBattleSlots = 3;
public const int MaxBattlePetsPerSpecies = 3; public const int MaxBattlePetsPerSpecies = 3;
public const int BattlePetCageItemId = 82800; public const int BattlePetCageItemId = 82800;
@@ -525,6 +525,8 @@ namespace Framework.Constants
ModCriticalDamageTakenFromCaster = 501, ModCriticalDamageTakenFromCaster = 501,
ModVersatilityDamageDoneBenefit = 502, // NYI ModVersatilityDamageDoneBenefit = 502, // NYI
ModVersatilityHealingDoneBenefit = 503, // NYI ModVersatilityHealingDoneBenefit = 503, // NYI
ModHealingTakenFromCaster = 504,
ModPlayerChoiceRerolls = 505, // NYI
Total Total
} }
@@ -2369,6 +2369,8 @@ namespace Framework.Constants
LearnSoulbindConduit = 281, LearnSoulbindConduit = 281,
ConvertItemsToCurrency = 282, ConvertItemsToCurrency = 282,
CompleteCampaign = 283, // Flags all quests as completed that are assigned to campaign (MiscValueA) CompleteCampaign = 283, // Flags all quests as completed that are assigned to campaign (MiscValueA)
SendChatMessage = 284, // MiscValue[0] = BroadcastTextID, MiscValue[1] = ChatType
ModifyKeystone2 = 285,
TotalSpellEffects TotalSpellEffects
} }
@@ -118,7 +118,7 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_AZERITE_EMPOWERED_ITEM, "SELECT ID, ItemID, AzeriteTierUnlockSetID, AzeritePowerSetID FROM azerite_empowered_item"); PrepareStatement(HotfixStatements.SEL_AZERITE_EMPOWERED_ITEM, "SELECT ID, ItemID, AzeriteTierUnlockSetID, AzeritePowerSetID FROM azerite_empowered_item");
// AzeriteEssence.db2 // AzeriteEssence.db2
PrepareStatement(HotfixStatements.SEL_AZERITE_ESSENCE, "SELECT Name, Description, ID, SpecSetID FROM azerite_essence"); PrepareStatement(HotfixStatements.SEL_AZERITE_ESSENCE, "SELECT ID, Name, Description, SpecSetID FROM azerite_essence");
PrepareStatement(HotfixStatements.SEL_AZERITE_ESSENCE_LOCALE, "SELECT ID, Name_lang, Description_lang FROM azerite_essence_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_AZERITE_ESSENCE_LOCALE, "SELECT ID, Name_lang, Description_lang FROM azerite_essence_locale WHERE locale = ?");
// AzeriteEssencePower.db2 // AzeriteEssencePower.db2
@@ -161,7 +161,7 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_BANNED_ADDONS, "SELECT ID, Name, Version, Flags FROM banned_addons"); PrepareStatement(HotfixStatements.SEL_BANNED_ADDONS, "SELECT ID, Name, Version, Flags FROM banned_addons");
// BarberShopStyle.db2 // BarberShopStyle.db2
PrepareStatement(HotfixStatements.SEL_BARBER_SHOP_STYLE, "SELECT DisplayName, Description, ID, Type, CostModifier, Race, Sex, Data FROM barber_shop_style"); PrepareStatement(HotfixStatements.SEL_BARBER_SHOP_STYLE, "SELECT ID, DisplayName, Description, Type, CostModifier, Race, Sex, Data FROM barber_shop_style");
PrepareStatement(HotfixStatements.SEL_BARBER_SHOP_STYLE_LOCALE, "SELECT ID, DisplayName_lang, Description_lang FROM barber_shop_style_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_BARBER_SHOP_STYLE_LOCALE, "SELECT ID, DisplayName_lang, Description_lang FROM barber_shop_style_locale WHERE locale = ?");
// BattlePetBreedQuality.db2 // BattlePetBreedQuality.db2
@@ -199,13 +199,13 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_CHAR_TITLES_LOCALE, "SELECT ID, Name_lang, Name1_lang FROM char_titles_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_CHAR_TITLES_LOCALE, "SELECT ID, Name_lang, Name1_lang FROM char_titles_locale WHERE locale = ?");
// CharacterLoadout.db2 // CharacterLoadout.db2
PrepareStatement(HotfixStatements.SEL_CHARACTER_LOADOUT, "SELECT RaceMask, ID, ChrClassID, Purpose FROM character_loadout"); PrepareStatement(HotfixStatements.SEL_CHARACTER_LOADOUT, "SELECT ID, RaceMask, ChrClassID, Purpose FROM character_loadout");
// CharacterLoadoutItem.db2 // CharacterLoadoutItem.db2
PrepareStatement(HotfixStatements.SEL_CHARACTER_LOADOUT_ITEM, "SELECT ID, CharacterLoadoutID, ItemID FROM character_loadout_item"); PrepareStatement(HotfixStatements.SEL_CHARACTER_LOADOUT_ITEM, "SELECT ID, CharacterLoadoutID, ItemID FROM character_loadout_item");
// ChatChannels.db2 // ChatChannels.db2
PrepareStatement(HotfixStatements.SEL_CHAT_CHANNELS, "SELECT Name, Shortcut, ID, Flags, FactionGroup, Ruleset FROM chat_channels"); PrepareStatement(HotfixStatements.SEL_CHAT_CHANNELS, "SELECT ID, Name, Shortcut, Flags, FactionGroup, Ruleset FROM chat_channels");
PrepareStatement(HotfixStatements.SEL_CHAT_CHANNELS_LOCALE, "SELECT ID, Name_lang, Shortcut_lang FROM chat_channels_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_CHAT_CHANNELS_LOCALE, "SELECT ID, Name_lang, Shortcut_lang FROM chat_channels_locale WHERE locale = ?");
// ChrClassUiDisplay.db2 // ChrClassUiDisplay.db2
@@ -226,8 +226,8 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_CHR_CLASSES_X_POWER_TYPES, "SELECT ID, PowerType, ClassID FROM chr_classes_x_power_types"); PrepareStatement(HotfixStatements.SEL_CHR_CLASSES_X_POWER_TYPES, "SELECT ID, PowerType, ClassID FROM chr_classes_x_power_types");
// ChrCustomizationChoice.db2 // ChrCustomizationChoice.db2
PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_CHOICE, "SELECT Name, ID, ChrCustomizationOptionID, ChrCustomizationReqID, SortOrder, SwatchColor1, " + PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_CHOICE, "SELECT Name, ID, ChrCustomizationOptionID, ChrCustomizationReqID, SortOrder, UiOrderIndex, " +
"SwatchColor2, UiOrderIndex, Flags FROM chr_customization_choice"); "Flags, SwatchColor1, SwatchColor2 FROM chr_customization_choice");
PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_CHOICE_LOCALE, "SELECT ID, Name_lang FROM chr_customization_choice_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_CHOICE_LOCALE, "SELECT ID, Name_lang FROM chr_customization_choice_locale WHERE locale = ?");
// ChrCustomizationDisplayInfo.db2 // ChrCustomizationDisplayInfo.db2
@@ -254,22 +254,23 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_CHR_MODEL, "SELECT FaceCustomizationOffset1, FaceCustomizationOffset2, FaceCustomizationOffset3, CustomizeOffset1, " + PrepareStatement(HotfixStatements.SEL_CHR_MODEL, "SELECT FaceCustomizationOffset1, FaceCustomizationOffset2, FaceCustomizationOffset3, CustomizeOffset1, " +
"CustomizeOffset2, CustomizeOffset3, ID, Sex, DisplayID, CharComponentTextureLayoutID, Flags, SkeletonFileDataID, ModelFallbackChrModelID, " + "CustomizeOffset2, CustomizeOffset3, ID, Sex, DisplayID, CharComponentTextureLayoutID, Flags, SkeletonFileDataID, ModelFallbackChrModelID, " +
"TextureFallbackChrModelID, HelmVisFallbackChrModelID, CustomizeScale, CustomizeFacing, CameraDistanceOffset, BarberShopCameraOffsetScale, " + "TextureFallbackChrModelID, HelmVisFallbackChrModelID, CustomizeScale, CustomizeFacing, CameraDistanceOffset, BarberShopCameraOffsetScale, " +
"BarberShopCameraRotationOffset FROM chr_model"); "BarberShopCameraHeightOffsetScale, BarberShopCameraRotationOffset FROM chr_model");
// ChrRaceXChrModel.db2 // ChrRaceXChrModel.db2
PrepareStatement(HotfixStatements.SEL_CHR_RACE_X_CHR_MODEL, "SELECT ID, ChrRacesID, ChrModelID FROM chr_race_x_chr_model"); PrepareStatement(HotfixStatements.SEL_CHR_RACE_X_CHR_MODEL, "SELECT ID, ChrRacesID, ChrModelID FROM chr_race_x_chr_model");
// ChrRaces.db2 // ChrRaces.db2
PrepareStatement(HotfixStatements.SEL_CHR_RACES, "SELECT ClientPrefix, ClientFileString, Name, NameFemale, NameLowercase, NameFemaleLowercase, NameS, " + PrepareStatement(HotfixStatements.SEL_CHR_RACES, "SELECT ID, ClientPrefix, ClientFileString, Name, NameFemale, NameLowercase, NameFemaleLowercase, NameS, " +
"NameFemaleS, NameLowercaseS, NameFemaleLowercaseS, RaceFantasyDescription, NameL, NameFemaleL, NameLowercaseL, NameFemaleLowercaseL, ID, " + "NameFemaleS, NameLowercaseS, NameFemaleLowercaseS, RaceFantasyDescription, NameL, NameFemaleL, NameLowercaseL, NameFemaleLowercaseL, Flags, " +
"Flags, BaseLanguage, ResSicknessSpellID, SplashSoundID, CreateScreenFileDataID, SelectScreenFileDataID, LowResScreenFileDataID, " + "FactionID, CinematicSequenceID, ResSicknessSpellID, SplashSoundID, Alliance, RaceRelated, UnalteredVisualRaceID, DefaultClassID, " +
"AlteredFormStartVisualKitID1, AlteredFormStartVisualKitID2, AlteredFormStartVisualKitID3, AlteredFormFinishVisualKitID1, " + "CreateScreenFileDataID, SelectScreenFileDataID, NeutralRaceID, LowResScreenFileDataID, AlteredFormStartVisualKitID1, " +
"AlteredFormFinishVisualKitID2, AlteredFormFinishVisualKitID3, HeritageArmorAchievementID, StartingLevel, UiDisplayOrder, PlayableRaceBit, " + "AlteredFormStartVisualKitID2, AlteredFormStartVisualKitID3, AlteredFormFinishVisualKitID1, AlteredFormFinishVisualKitID2, " +
"HelmetAnimScalingRaceID, TransmogrifyDisabledSlotMask, AlteredFormCustomizeOffsetFallback1, AlteredFormCustomizeOffsetFallback2, " + "AlteredFormFinishVisualKitID3, HeritageArmorAchievementID, StartingLevel, UiDisplayOrder, MaleModelFallbackRaceID, " +
"AlteredFormCustomizeOffsetFallback3, AlteredFormCustomizeRotationFallback, FactionID, CinematicSequenceID, CreatureType, Alliance, " + "FemaleModelFallbackRaceID, MaleTextureFallbackRaceID, FemaleTextureFallbackRaceID, PlayableRaceBit, HelmetAnimScalingRaceID, " +
"RaceRelated, UnalteredVisualRaceID, DefaultClassID, NeutralRaceID, MaleModelFallbackRaceID, MaleModelFallbackSex, FemaleModelFallbackRaceID, " + "TransmogrifyDisabledSlotMask, UnalteredVisualCustomizationRaceID, AlteredFormCustomizeOffsetFallback1, AlteredFormCustomizeOffsetFallback2, " +
"FemaleModelFallbackSex, MaleTextureFallbackRaceID, MaleTextureFallbackSex, FemaleTextureFallbackRaceID, FemaleTextureFallbackSex, " + "AlteredFormCustomizeOffsetFallback3, AlteredFormCustomizeRotationFallback, Unknown910_11, Unknown910_12, Unknown910_13, Unknown910_21, " +
"UnalteredVisualCustomizationRaceID FROM chr_races"); "Unknown910_22, Unknown910_23, BaseLanguage, CreatureType, MaleModelFallbackSex, FemaleModelFallbackSex, MaleTextureFallbackSex, " +
"FemaleTextureFallbackSex FROM chr_races");
PrepareStatement(HotfixStatements.SEL_CHR_RACES_LOCALE, "SELECT ID, Name_lang, NameFemale_lang, NameLowercase_lang, NameFemaleLowercase_lang, NameS_lang, " + PrepareStatement(HotfixStatements.SEL_CHR_RACES_LOCALE, "SELECT ID, Name_lang, NameFemale_lang, NameLowercase_lang, NameFemaleLowercase_lang, NameS_lang, " +
"NameFemaleS_lang, NameLowercaseS_lang, NameFemaleLowercaseS_lang, RaceFantasyDescription_lang, NameL_lang, NameFemaleL_lang, " + "NameFemaleS_lang, NameLowercaseS_lang, NameFemaleLowercaseS_lang, RaceFantasyDescription_lang, NameL_lang, NameFemaleL_lang, " +
"NameLowercaseL_lang, NameFemaleLowercaseL_lang FROM chr_races_locale WHERE locale = ?"); "NameLowercaseL_lang, NameFemaleLowercaseL_lang FROM chr_races_locale WHERE locale = ?");
@@ -291,8 +292,8 @@ namespace Framework.Database
"TargetLevelMaxDelta, TargetLevelMin, TargetLevelMax, MinItemLevel FROM content_tuning"); "TargetLevelMaxDelta, TargetLevelMin, TargetLevelMax, MinItemLevel FROM content_tuning");
// ContentTuningXExpected.db2 // ContentTuningXExpected.db2
PrepareStatement(HotfixStatements.SEL_CONTENT_TUNING_X_EXPECTED, "SELECT ID, ExpectedStatModID, MythicPlusSeasonID, ContentTuningID" + PrepareStatement(HotfixStatements.SEL_CONTENT_TUNING_X_EXPECTED, "SELECT ID, ExpectedStatModID, MinMythicPlusSeasonID, MaxMythicPlusSeasonID, " +
" FROM content_tuning_x_expected"); "ContentTuningID FROM content_tuning_x_expected");
// ConversationLine.db2 // ConversationLine.db2
PrepareStatement(HotfixStatements.SEL_CONVERSATION_LINE, "SELECT ID, BroadcastTextID, SpellVisualKitID, AdditionalDuration, NextConversationLineID, " + PrepareStatement(HotfixStatements.SEL_CONVERSATION_LINE, "SELECT ID, BroadcastTextID, SpellVisualKitID, AdditionalDuration, NextConversationLineID, " +
@@ -394,8 +395,8 @@ namespace Framework.Database
"PlayerManaMod, PlayerPrimaryStatMod, PlayerSecondaryStatMod, ArmorConstantMod, CreatureSpellDamageMod FROM expected_stat_mod"); "PlayerManaMod, PlayerPrimaryStatMod, PlayerSecondaryStatMod, ArmorConstantMod, CreatureSpellDamageMod FROM expected_stat_mod");
// Faction.db2 // Faction.db2
PrepareStatement(HotfixStatements.SEL_FACTION, "SELECT ReputationRaceMask1, ReputationRaceMask2, ReputationRaceMask3, ReputationRaceMask4, Name, " + PrepareStatement(HotfixStatements.SEL_FACTION, "SELECT ID, ReputationRaceMask1, ReputationRaceMask2, ReputationRaceMask3, ReputationRaceMask4, Name, " +
"Description, ID, ReputationIndex, ParentFactionID, Expansion, FriendshipRepID, Flags, ParagonFactionID, ReputationClassMask1, " + "Description, ReputationIndex, ParentFactionID, Expansion, FriendshipRepID, Flags, ParagonFactionID, ReputationClassMask1, " +
"ReputationClassMask2, ReputationClassMask3, ReputationClassMask4, ReputationFlags1, ReputationFlags2, ReputationFlags3, ReputationFlags4, " + "ReputationClassMask2, ReputationClassMask3, ReputationClassMask4, ReputationFlags1, ReputationFlags2, ReputationFlags3, ReputationFlags4, " +
"ReputationBase1, ReputationBase2, ReputationBase3, ReputationBase4, ReputationMax1, ReputationMax2, ReputationMax3, ReputationMax4, " + "ReputationBase1, ReputationBase2, ReputationBase3, ReputationBase4, ReputationMax1, ReputationMax2, ReputationMax3, ReputationMax4, " +
"ParentFactionMod1, ParentFactionMod2, ParentFactionCap1, ParentFactionCap2 FROM faction"); "ParentFactionMod1, ParentFactionMod2, ParentFactionCap1, ParentFactionCap2 FROM faction");
@@ -425,7 +426,7 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_GAMEOBJECTS_LOCALE, "SELECT ID, Name_lang FROM gameobjects_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_GAMEOBJECTS_LOCALE, "SELECT ID, Name_lang FROM gameobjects_locale WHERE locale = ?");
// GarrAbility.db2 // GarrAbility.db2
PrepareStatement(HotfixStatements.SEL_GARR_ABILITY, "SELECT Name, Description, ID, GarrAbilityCategoryID, GarrFollowerTypeID, IconFileDataID, " + PrepareStatement(HotfixStatements.SEL_GARR_ABILITY, "SELECT ID, Name, Description, GarrAbilityCategoryID, GarrFollowerTypeID, IconFileDataID, " +
"FactionChangeGarrAbilityID, Flags FROM garr_ability"); "FactionChangeGarrAbilityID, Flags FROM garr_ability");
PrepareStatement(HotfixStatements.SEL_GARR_ABILITY_LOCALE, "SELECT ID, Name_lang, Description_lang FROM garr_ability_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_GARR_ABILITY_LOCALE, "SELECT ID, Name_lang, Description_lang FROM garr_ability_locale WHERE locale = ?");
@@ -442,13 +443,13 @@ namespace Framework.Database
"UiTextureAtlasMemberID FROM garr_building_plot_inst"); "UiTextureAtlasMemberID FROM garr_building_plot_inst");
// GarrClassSpec.db2 // GarrClassSpec.db2
PrepareStatement(HotfixStatements.SEL_GARR_CLASS_SPEC, "SELECT ClassSpec, ClassSpecMale, ClassSpecFemale, ID, UiTextureAtlasMemberID, GarrFollItemSetID, " + PrepareStatement(HotfixStatements.SEL_GARR_CLASS_SPEC, "SELECT ID, ClassSpec, ClassSpecMale, ClassSpecFemale, UiTextureAtlasMemberID, GarrFollItemSetID, " +
"FollowerClassLimit, Flags FROM garr_class_spec"); "FollowerClassLimit, Flags FROM garr_class_spec");
PrepareStatement(HotfixStatements.SEL_GARR_CLASS_SPEC_LOCALE, "SELECT ID, ClassSpec_lang, ClassSpecMale_lang, ClassSpecFemale_lang FROM garr_class_spec_locale" + PrepareStatement(HotfixStatements.SEL_GARR_CLASS_SPEC_LOCALE, "SELECT ID, ClassSpec_lang, ClassSpecMale_lang, ClassSpecFemale_lang FROM garr_class_spec_locale" +
" WHERE locale = ?"); " WHERE locale = ?");
// GarrFollower.db2 // GarrFollower.db2
PrepareStatement(HotfixStatements.SEL_GARR_FOLLOWER, "SELECT HordeSourceText, AllianceSourceText, TitleName, ID, GarrTypeID, GarrFollowerTypeID, " + PrepareStatement(HotfixStatements.SEL_GARR_FOLLOWER, "SELECT ID, HordeSourceText, AllianceSourceText, TitleName, GarrTypeID, GarrFollowerTypeID, " +
"HordeCreatureID, AllianceCreatureID, HordeGarrFollRaceID, AllianceGarrFollRaceID, HordeGarrClassSpecID, AllianceGarrClassSpecID, Quality, " + "HordeCreatureID, AllianceCreatureID, HordeGarrFollRaceID, AllianceGarrFollRaceID, HordeGarrClassSpecID, AllianceGarrClassSpecID, Quality, " +
"FollowerLevel, ItemLevelWeapon, ItemLevelArmor, HordeSourceTypeEnum, AllianceSourceTypeEnum, HordeIconFileDataID, AllianceIconFileDataID, " + "FollowerLevel, ItemLevelWeapon, ItemLevelArmor, HordeSourceTypeEnum, AllianceSourceTypeEnum, HordeIconFileDataID, AllianceIconFileDataID, " +
"HordeGarrFollItemSetID, AllianceGarrFollItemSetID, HordeUITextureKitID, AllianceUITextureKitID, Vitality, HordeFlavorGarrStringID, " + "HordeGarrFollItemSetID, AllianceGarrFollItemSetID, HordeUITextureKitID, AllianceUITextureKitID, Vitality, HordeFlavorGarrStringID, " +
@@ -598,7 +599,7 @@ namespace Framework.Database
// ItemEffect.db2 // ItemEffect.db2
PrepareStatement(HotfixStatements.SEL_ITEM_EFFECT, "SELECT ID, LegacySlotIndex, TriggerType, Charges, CoolDownMSec, CategoryCoolDownMSec, SpellCategoryID, " + PrepareStatement(HotfixStatements.SEL_ITEM_EFFECT, "SELECT ID, LegacySlotIndex, TriggerType, Charges, CoolDownMSec, CategoryCoolDownMSec, SpellCategoryID, " +
"SpellID, ChrSpecializationID, ParentItemID FROM item_effect"); "SpellID, ChrSpecializationID FROM item_effect");
// ItemExtendedCost.db2 // ItemExtendedCost.db2
PrepareStatement(HotfixStatements.SEL_ITEM_EXTENDED_COST, "SELECT ID, RequiredArenaRating, ArenaBracket, Flags, MinFactionID, MinReputation, " + PrepareStatement(HotfixStatements.SEL_ITEM_EXTENDED_COST, "SELECT ID, RequiredArenaRating, ArenaBracket, Flags, MinFactionID, MinReputation, " +
@@ -641,7 +642,7 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_ITEM_PRICE_BASE, "SELECT ID, ItemLevel, Armor, Weapon FROM item_price_base"); PrepareStatement(HotfixStatements.SEL_ITEM_PRICE_BASE, "SELECT ID, ItemLevel, Armor, Weapon FROM item_price_base");
// ItemSearchName.db2 // ItemSearchName.db2
PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME, "SELECT AllowableRace, Display, ID, OverallQualityID, ExpansionID, MinFactionID, MinReputation, " + PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME, "SELECT ID, AllowableRace, Display, OverallQualityID, ExpansionID, MinFactionID, MinReputation, " +
"AllowableClass, RequiredLevel, RequiredSkill, RequiredSkillRank, RequiredAbility, ItemLevel, Flags1, Flags2, Flags3, Flags4" + "AllowableClass, RequiredLevel, RequiredSkill, RequiredSkillRank, RequiredAbility, ItemLevel, Flags1, Flags2, Flags3, Flags4" +
" FROM item_search_name"); " FROM item_search_name");
PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME_LOCALE, "SELECT ID, Display_lang FROM item_search_name_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME_LOCALE, "SELECT ID, Display_lang FROM item_search_name_locale WHERE locale = ?");
@@ -655,20 +656,19 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_ITEM_SET_SPELL, "SELECT ID, ChrSpecID, SpellID, Threshold, ItemSetID FROM item_set_spell"); PrepareStatement(HotfixStatements.SEL_ITEM_SET_SPELL, "SELECT ID, ChrSpecID, SpellID, Threshold, ItemSetID FROM item_set_spell");
// ItemSparse.db2 // ItemSparse.db2
PrepareStatement(HotfixStatements.SEL_ITEM_SPARSE, "SELECT ID, AllowableRace, Description, Display3, Display2, Display1, Display, DmgVariance, " + PrepareStatement(HotfixStatements.SEL_ITEM_SPARSE, "SELECT ID, AllowableRace, Description, Display3, Display2, Display1, Display, ExpansionID, DmgVariance, " +
"DurationInInventory, QualityModifier, BagFamily, ItemRange, StatPercentageOfSocket1, StatPercentageOfSocket2, StatPercentageOfSocket3, " + "InstanceBound, DurationInInventory, QualityModifier, BagFamily, ItemRange, StatPercentageOfSocket1, StatPercentageOfSocket2, " +
"StatPercentageOfSocket4, StatPercentageOfSocket5, StatPercentageOfSocket6, StatPercentageOfSocket7, StatPercentageOfSocket8, " + "StatPercentageOfSocket3, StatPercentageOfSocket4, StatPercentageOfSocket5, StatPercentageOfSocket6, StatPercentageOfSocket7, " +
"StatPercentageOfSocket9, StatPercentageOfSocket10, StatPercentEditor1, StatPercentEditor2, StatPercentEditor3, StatPercentEditor4, " + "StatPercentageOfSocket8, StatPercentageOfSocket9, StatPercentageOfSocket10, StatPercentEditor1, StatPercentEditor2, StatPercentEditor3, " +
"StatPercentEditor5, StatPercentEditor6, StatPercentEditor7, StatPercentEditor8, StatPercentEditor9, StatPercentEditor10, Stackable, " + "StatPercentEditor4, StatPercentEditor5, StatPercentEditor6, StatPercentEditor7, StatPercentEditor8, StatPercentEditor9, StatPercentEditor10, " +
"MaxCount, RequiredAbility, SellPrice, BuyPrice, VendorStackCount, PriceVariance, PriceRandomValue, Flags1, Flags2, Flags3, Flags4, " + "Stackable, MaxCount, RequiredAbility, SellPrice, BuyPrice, VendorStackCount, PriceVariance, PriceRandomValue, Flags1, Flags2, Flags3, " +
"FactionRelated, ModifiedCraftingReagentItemID, ContentTuningID, PlayerLevelToItemLevelCurveID, ItemNameDescriptionID, " + "Flags4, FactionRelated, ModifiedCraftingReagentItemID, ContentTuningID, PlayerLevelToItemLevelCurveID, ItemNameDescriptionID, " +
"RequiredTransmogHoliday, RequiredHoliday, LimitCategory, GemProperties, SocketMatchEnchantmentId, TotemCategoryID, InstanceBound, " + "RequiredTransmogHoliday, RequiredHoliday, LimitCategory, GemProperties, SocketMatchEnchantmentId, TotemCategoryID, ZoneBound1, ZoneBound2, " +
"ZoneBound1, ZoneBound2, ItemSet, LockID, StartQuestID, PageID, ItemDelay, MinFactionID, RequiredSkillRank, RequiredSkill, ItemLevel, " + "ItemSet, LockID, StartQuestID, PageID, ItemDelay, MinFactionID, RequiredSkillRank, RequiredSkill, ItemLevel, AllowableClass, ArtifactID, " +
"AllowableClass, ExpansionID, ArtifactID, SpellWeight, SpellWeightCategory, SocketType1, SocketType2, SocketType3, SheatheType, Material, " + "SpellWeight, SpellWeightCategory, SocketType1, SocketType2, SocketType3, SheatheType, Material, PageMaterialID, LanguageID, Bonding, " +
"PageMaterialID, LanguageID, Bonding, DamageDamageType, StatModifierBonusStat1, StatModifierBonusStat2, StatModifierBonusStat3, " + "DamageDamageType, StatModifierBonusStat1, StatModifierBonusStat2, StatModifierBonusStat3, StatModifierBonusStat4, StatModifierBonusStat5, " +
"StatModifierBonusStat4, StatModifierBonusStat5, StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, " + "StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, StatModifierBonusStat9, StatModifierBonusStat10, ContainerSlots, " +
"StatModifierBonusStat9, StatModifierBonusStat10, ContainerSlots, MinReputation, RequiredPVPMedal, RequiredPVPRank, RequiredLevel, " + "MinReputation, RequiredPVPMedal, RequiredPVPRank, RequiredLevel, InventoryType, OverallQualityID FROM item_sparse");
"InventoryType, OverallQualityID FROM item_sparse");
PrepareStatement(HotfixStatements.SEL_ITEM_SPARSE_LOCALE, "SELECT ID, Description_lang, Display3_lang, Display2_lang, Display1_lang, Display_lang" + PrepareStatement(HotfixStatements.SEL_ITEM_SPARSE_LOCALE, "SELECT ID, Description_lang, Display3_lang, Display2_lang, Display1_lang, Display_lang" +
" FROM item_sparse_locale WHERE locale = ?"); " FROM item_sparse_locale WHERE locale = ?");
@@ -681,6 +681,9 @@ namespace Framework.Database
// ItemXBonusTree.db2 // ItemXBonusTree.db2
PrepareStatement(HotfixStatements.SEL_ITEM_X_BONUS_TREE, "SELECT ID, ItemBonusTreeID, ItemID FROM item_x_bonus_tree"); PrepareStatement(HotfixStatements.SEL_ITEM_X_BONUS_TREE, "SELECT ID, ItemBonusTreeID, ItemID FROM item_x_bonus_tree");
// ItemXItemEffect.db2
PrepareStatement(HotfixStatements.SEL_ITEM_X_ITEM_EFFECT, "SELECT ID, ItemEffectID, ItemID FROM item_x_item_effect");
// Keychain.db2 // Keychain.db2
PrepareStatement(HotfixStatements.SEL_KEYCHAIN, "SELECT ID, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8, Key9, Key10, Key11, Key12, Key13, Key14, Key15, " + PrepareStatement(HotfixStatements.SEL_KEYCHAIN, "SELECT ID, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8, Key9, Key10, Key11, Key12, Key13, Key14, Key15, " +
"Key16, Key17, Key18, Key19, Key20, Key21, Key22, Key23, Key24, Key25, Key26, Key27, Key28, Key29, Key30, Key31, Key32 FROM keychain"); "Key16, Key17, Key18, Key19, Key20, Key21, Key22, Key23, Key24, Key25, Key26, Key27, Key28, Key29, Key30, Key31, Key32 FROM keychain");
@@ -689,7 +692,7 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_LANGUAGE_WORDS, "SELECT ID, Word, LanguageID FROM language_words"); PrepareStatement(HotfixStatements.SEL_LANGUAGE_WORDS, "SELECT ID, Word, LanguageID FROM language_words");
// Languages.db2 // Languages.db2
PrepareStatement(HotfixStatements.SEL_LANGUAGES, "SELECT Name, ID FROM languages"); PrepareStatement(HotfixStatements.SEL_LANGUAGES, "SELECT ID, Name FROM languages");
PrepareStatement(HotfixStatements.SEL_LANGUAGES_LOCALE, "SELECT ID, Name_lang FROM languages_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_LANGUAGES_LOCALE, "SELECT ID, Name_lang FROM languages_locale WHERE locale = ?");
// LfgDungeons.db2 // LfgDungeons.db2
@@ -721,9 +724,9 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_MAIL_TEMPLATE_LOCALE, "SELECT ID, Body_lang FROM mail_template_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_MAIL_TEMPLATE_LOCALE, "SELECT ID, Body_lang FROM mail_template_locale WHERE locale = ?");
// Map.db2 // Map.db2
PrepareStatement(HotfixStatements.SEL_MAP, "SELECT ID, Directory, MapName, InternalName, MapDescription0, MapDescription1, PvpShortDescription, " + PrepareStatement(HotfixStatements.SEL_MAP, "SELECT ID, Directory, MapName, MapDescription0, MapDescription1, PvpShortDescription, PvpLongDescription, " +
"PvpLongDescription, CorpseX, CorpseY, MapType, InstanceType, ExpansionID, AreaTableID, LoadingScreenID, TimeOfDayOverride, ParentMapID, " + "CorpseX, CorpseY, MapType, InstanceType, ExpansionID, AreaTableID, LoadingScreenID, TimeOfDayOverride, ParentMapID, CosmeticParentMapID, " +
"CosmeticParentMapID, TimeOffset, MinimapIconScale, CorpseMapID, MaxPlayers, WindSettingsID, ZmpFileDataID, WdtFileDataID, Flags1, Flags2 FROM map"); "TimeOffset, MinimapIconScale, CorpseMapID, MaxPlayers, WindSettingsID, ZmpFileDataID, WdtFileDataID, Flags1, Flags2 FROM map");
PrepareStatement(HotfixStatements.SEL_MAP_LOCALE, "SELECT ID, MapName_lang, MapDescription0_lang, MapDescription1_lang, PvpShortDescription_lang, " + PrepareStatement(HotfixStatements.SEL_MAP_LOCALE, "SELECT ID, MapName_lang, MapDescription0_lang, MapDescription1_lang, PvpShortDescription_lang, " +
"PvpLongDescription_lang FROM map_locale WHERE locale = ?"); "PvpLongDescription_lang FROM map_locale WHERE locale = ?");
@@ -787,7 +790,7 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_PHASE_X_PHASE_GROUP, "SELECT ID, PhaseID, PhaseGroupID FROM phase_x_phase_group"); PrepareStatement(HotfixStatements.SEL_PHASE_X_PHASE_GROUP, "SELECT ID, PhaseID, PhaseGroupID FROM phase_x_phase_group");
// PlayerCondition.db2 // PlayerCondition.db2
PrepareStatement(HotfixStatements.SEL_PLAYER_CONDITION, "SELECT RaceMask, FailureDescription, ID, ClassMask, SkillLogic, LanguageID, MinLanguage, " + PrepareStatement(HotfixStatements.SEL_PLAYER_CONDITION, "SELECT ID, RaceMask, FailureDescription, ClassMask, SkillLogic, LanguageID, MinLanguage, " +
"MaxLanguage, MaxFactionID, MaxReputation, ReputationLogic, CurrentPvpFaction, PvpMedal, PrevQuestLogic, CurrQuestLogic, " + "MaxLanguage, MaxFactionID, MaxReputation, ReputationLogic, CurrentPvpFaction, PvpMedal, PrevQuestLogic, CurrQuestLogic, " +
"CurrentCompletedQuestLogic, SpellLogic, ItemLogic, ItemFlags, AuraSpellLogic, WorldStateExpressionID, WeatherID, PartyStatus, " + "CurrentCompletedQuestLogic, SpellLogic, ItemLogic, ItemFlags, AuraSpellLogic, WorldStateExpressionID, WeatherID, PartyStatus, " +
"LifetimeMaxPVPRank, AchievementLogic, Gender, NativeGender, AreaLogic, LfgLogic, CurrencyLogic, QuestKillID, QuestKillLogic, " + "LifetimeMaxPVPRank, AchievementLogic, Gender, NativeGender, AreaLogic, LfgLogic, CurrencyLogic, QuestKillID, QuestKillLogic, " +
@@ -972,7 +975,7 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_SPELL_EFFECT, "SELECT ID, EffectAura, DifficultyID, EffectIndex, Effect, EffectAmplitude, EffectAttributes, " + PrepareStatement(HotfixStatements.SEL_SPELL_EFFECT, "SELECT ID, EffectAura, DifficultyID, EffectIndex, Effect, EffectAmplitude, EffectAttributes, " +
"EffectAuraPeriod, EffectBonusCoefficient, EffectChainAmplitude, EffectChainTargets, EffectItemType, EffectMechanic, EffectPointsPerResource, " + "EffectAuraPeriod, EffectBonusCoefficient, EffectChainAmplitude, EffectChainTargets, EffectItemType, EffectMechanic, EffectPointsPerResource, " +
"EffectPosFacing, EffectRealPointsPerLevel, EffectTriggerSpell, BonusCoefficientFromAP, PvpMultiplier, Coefficient, Variance, " + "EffectPosFacing, EffectRealPointsPerLevel, EffectTriggerSpell, BonusCoefficientFromAP, PvpMultiplier, Coefficient, Variance, " +
"ResourceCoefficient, GroupSizeBasePointsCoefficient, EffectBasePoints, EffectMiscValue1, EffectMiscValue2, EffectRadiusIndex1, " + "ResourceCoefficient, GroupSizeBasePointsCoefficient, EffectBasePoints, ScalingClass, EffectMiscValue1, EffectMiscValue2, EffectRadiusIndex1, " +
"EffectRadiusIndex2, EffectSpellClassMask1, EffectSpellClassMask2, EffectSpellClassMask3, EffectSpellClassMask4, ImplicitTarget1, " + "EffectRadiusIndex2, EffectSpellClassMask1, EffectSpellClassMask2, EffectSpellClassMask3, EffectSpellClassMask4, ImplicitTarget1, " +
"ImplicitTarget2, SpellID FROM spell_effect"); "ImplicitTarget2, SpellID FROM spell_effect");
@@ -989,7 +992,7 @@ namespace Framework.Database
"ChannelInterruptFlags1, ChannelInterruptFlags2, SpellID FROM spell_interrupts"); "ChannelInterruptFlags1, ChannelInterruptFlags2, SpellID FROM spell_interrupts");
// SpellItemEnchantment.db2 // SpellItemEnchantment.db2
PrepareStatement(HotfixStatements.SEL_SPELL_ITEM_ENCHANTMENT, "SELECT Name, HordeName, ID, EffectArg1, EffectArg2, EffectArg3, EffectScalingPoints1, " + PrepareStatement(HotfixStatements.SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name, HordeName, EffectArg1, EffectArg2, EffectArg3, EffectScalingPoints1, " +
"EffectScalingPoints2, EffectScalingPoints3, IconFileDataID, MinItemLevel, MaxItemLevel, TransmogUseConditionID, TransmogCost, " + "EffectScalingPoints2, EffectScalingPoints3, IconFileDataID, MinItemLevel, MaxItemLevel, TransmogUseConditionID, TransmogCost, " +
"EffectPointsMin1, EffectPointsMin2, EffectPointsMin3, ItemVisual, Flags, RequiredSkillID, RequiredSkillRank, ItemLevel, Charges, Effect1, " + "EffectPointsMin1, EffectPointsMin2, EffectPointsMin3, ItemVisual, Flags, RequiredSkillID, RequiredSkillRank, ItemLevel, Charges, Effect1, " +
"Effect2, Effect3, ScalingClass, ScalingClassRestricted, ConditionID, MinLevel, MaxLevel FROM spell_item_enchantment"); "Effect2, Effect3, ScalingClass, ScalingClassRestricted, ConditionID, MinLevel, MaxLevel FROM spell_item_enchantment");
@@ -1046,7 +1049,7 @@ namespace Framework.Database
"ReagentCount1, ReagentCount2, ReagentCount3, ReagentCount4, ReagentCount5, ReagentCount6, ReagentCount7, ReagentCount8 FROM spell_reagents"); "ReagentCount1, ReagentCount2, ReagentCount3, ReagentCount4, ReagentCount5, ReagentCount6, ReagentCount7, ReagentCount8 FROM spell_reagents");
// SpellScaling.db2 // SpellScaling.db2
PrepareStatement(HotfixStatements.SEL_SPELL_SCALING, "SELECT ID, SpellID, Class, MinScalingLevel, MaxScalingLevel, ScalesFromItemLevel FROM spell_scaling"); PrepareStatement(HotfixStatements.SEL_SPELL_SCALING, "SELECT ID, SpellID, MinScalingLevel, MaxScalingLevel, ScalesFromItemLevel FROM spell_scaling");
// SpellShapeshift.db2 // SpellShapeshift.db2
PrepareStatement(HotfixStatements.SEL_SPELL_SHAPESHIFT, "SELECT ID, SpellID, StanceBarOrder, ShapeshiftExclude1, ShapeshiftExclude2, ShapeshiftMask1, " + PrepareStatement(HotfixStatements.SEL_SPELL_SHAPESHIFT, "SELECT ID, SpellID, StanceBarOrder, ShapeshiftExclude1, ShapeshiftExclude2, ShapeshiftMask1, " +
@@ -1120,7 +1123,7 @@ namespace Framework.Database
PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_LOCALE, "SELECT ID, Name_lang FROM transmog_set_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_LOCALE, "SELECT ID, Name_lang FROM transmog_set_locale WHERE locale = ?");
// TransmogSetGroup.db2 // TransmogSetGroup.db2
PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_GROUP, "SELECT Name, ID FROM transmog_set_group"); PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_GROUP, "SELECT ID, Name FROM transmog_set_group");
PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_GROUP_LOCALE, "SELECT ID, Name_lang FROM transmog_set_group_locale WHERE locale = ?"); PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_GROUP_LOCALE, "SELECT ID, Name_lang FROM transmog_set_group_locale WHERE locale = ?");
// TransmogSetItem.db2 // TransmogSetItem.db2
@@ -1548,6 +1551,8 @@ namespace Framework.Database
SEL_ITEM_X_BONUS_TREE, SEL_ITEM_X_BONUS_TREE,
SEL_ITEM_X_ITEM_EFFECT,
SEL_KEYCHAIN, SEL_KEYCHAIN,
SEL_LANGUAGE_WORDS, SEL_LANGUAGE_WORDS,
+2
View File
@@ -205,6 +205,7 @@ namespace Game.DataStorage
ItemSpecStorage = ReadDB2<ItemSpecRecord>("ItemSpec.db2", HotfixStatements.SEL_ITEM_SPEC); ItemSpecStorage = ReadDB2<ItemSpecRecord>("ItemSpec.db2", HotfixStatements.SEL_ITEM_SPEC);
ItemSpecOverrideStorage = ReadDB2<ItemSpecOverrideRecord>("ItemSpecOverride.db2", HotfixStatements.SEL_ITEM_SPEC_OVERRIDE); ItemSpecOverrideStorage = ReadDB2<ItemSpecOverrideRecord>("ItemSpecOverride.db2", HotfixStatements.SEL_ITEM_SPEC_OVERRIDE);
ItemXBonusTreeStorage = ReadDB2<ItemXBonusTreeRecord>("ItemXBonusTree.db2", HotfixStatements.SEL_ITEM_X_BONUS_TREE); ItemXBonusTreeStorage = ReadDB2<ItemXBonusTreeRecord>("ItemXBonusTree.db2", HotfixStatements.SEL_ITEM_X_BONUS_TREE);
ItemXItemEffectStorage = ReadDB2<ItemXItemEffectRecord>("ItemXItemEffect.db2", HotfixStatements.SEL_ITEM_X_ITEM_EFFECT);
//KeyChainStorage = ReadDB2<KeyChainRecord>("KeyChain.db2", HotfixStatements.SEL_KEYCHAIN); //KeyChainStorage = ReadDB2<KeyChainRecord>("KeyChain.db2", HotfixStatements.SEL_KEYCHAIN);
LanguageWordsStorage = ReadDB2<LanguageWordsRecord>("LanguageWords.db2", HotfixStatements.SEL_LANGUAGE_WORDS); LanguageWordsStorage = ReadDB2<LanguageWordsRecord>("LanguageWords.db2", HotfixStatements.SEL_LANGUAGE_WORDS);
LanguagesStorage = ReadDB2<LanguagesRecord>("Languages.db2", HotfixStatements.SEL_LANGUAGES, HotfixStatements.SEL_LANGUAGES_LOCALE); LanguagesStorage = ReadDB2<LanguagesRecord>("Languages.db2", HotfixStatements.SEL_LANGUAGES, HotfixStatements.SEL_LANGUAGES_LOCALE);
@@ -576,6 +577,7 @@ namespace Game.DataStorage
public static DB6Storage<ItemSpecRecord> ItemSpecStorage; public static DB6Storage<ItemSpecRecord> ItemSpecStorage;
public static DB6Storage<ItemSpecOverrideRecord> ItemSpecOverrideStorage; public static DB6Storage<ItemSpecOverrideRecord> ItemSpecOverrideStorage;
public static DB6Storage<ItemXBonusTreeRecord> ItemXBonusTreeStorage; public static DB6Storage<ItemXBonusTreeRecord> ItemXBonusTreeStorage;
public static DB6Storage<ItemXItemEffectRecord> ItemXItemEffectStorage;
//public static DB6Storage<KeyChainRecord> KeyChainStorage; //public static DB6Storage<KeyChainRecord> KeyChainStorage;
public static DB6Storage<LanguageWordsRecord> LanguageWordsStorage; public static DB6Storage<LanguageWordsRecord> LanguageWordsStorage;
public static DB6Storage<LanguagesRecord> LanguagesStorage; public static DB6Storage<LanguagesRecord> LanguagesStorage;
+56 -14
View File
@@ -241,9 +241,8 @@ namespace Game.DataStorage
foreach (ContentTuningXExpectedRecord contentTuningXExpectedStat in ContentTuningXExpectedStorage.Values) foreach (ContentTuningXExpectedRecord contentTuningXExpectedStat in ContentTuningXExpectedStorage.Values)
{ {
ExpectedStatModRecord expectedStatMod = ExpectedStatModStorage.LookupByKey(contentTuningXExpectedStat.ExpectedStatModID); if (ExpectedStatModStorage.ContainsKey(contentTuningXExpectedStat.ExpectedStatModID))
if (expectedStatMod != null) _expectedStatModsByContentTuning.Add(contentTuningXExpectedStat.ContentTuningID, contentTuningXExpectedStat);
_expectedStatModsByContentTuning.Add(contentTuningXExpectedStat.ContentTuningID, expectedStatMod);
} }
foreach (CurvePointRecord curvePoint in CurvePointStorage.Values) foreach (CurvePointRecord curvePoint in CurvePointStorage.Values)
@@ -1214,6 +1213,49 @@ namespace Game.DataStorage
return null; return null;
} }
float ExpectedStatModReducer(float mod, ContentTuningXExpectedRecord contentTuningXExpected, ExpectedStatType stat)
{
if (contentTuningXExpected == null)
return mod;
//if (contentTuningXExpected->MinMythicPlusSeasonID)
// if (MythicPlusSeasonEntry const* mythicPlusSeason = sMythicPlusSeasonStore.LookupEntry(contentTuningXExpected->MinMythicPlusSeasonID))
// if (MythicPlusSubSeason < mythicPlusSeason->SubSeason)
// return mod;
//if (contentTuningXExpected->MaxMythicPlusSeasonID)
// if (MythicPlusSeasonEntry const* mythicPlusSeason = sMythicPlusSeasonStore.LookupEntry(contentTuningXExpected->MaxMythicPlusSeasonID))
// if (MythicPlusSubSeason >= mythicPlusSeason->SubSeason)
// return mod;
var expectedStatMod = ExpectedStatModStorage.LookupByKey(contentTuningXExpected.ExpectedStatModID);
switch (stat)
{
case ExpectedStatType.CreatureHealth:
return mod * expectedStatMod.CreatureHealthMod;
case ExpectedStatType.PlayerHealth:
return mod * expectedStatMod.PlayerHealthMod;
case ExpectedStatType.CreatureAutoAttackDps:
return mod * expectedStatMod.CreatureAutoAttackDPSMod;
case ExpectedStatType.CreatureArmor:
return mod * expectedStatMod.CreatureArmorMod;
case ExpectedStatType.PlayerMana:
return mod * expectedStatMod.PlayerManaMod;
case ExpectedStatType.PlayerPrimaryStat:
return mod * expectedStatMod.PlayerPrimaryStatMod;
case ExpectedStatType.PlayerSecondaryStat:
return mod * expectedStatMod.PlayerSecondaryStatMod;
case ExpectedStatType.ArmorConstant:
return mod * expectedStatMod.ArmorConstantMod;
case ExpectedStatType.CreatureSpellDamage:
return mod * expectedStatMod.CreatureSpellDamageMod;
}
return mod;
// int32 MythicPlusSubSeason = 0;
}
public float EvaluateExpectedStat(ExpectedStatType stat, uint level, int expansion, uint contentTuningId, Class unitClass) public float EvaluateExpectedStat(ExpectedStatType stat, uint level, int expansion, uint contentTuningId, Class unitClass)
{ {
var expectedStatRecord = _expectedStatsByLevel.LookupByKey(Tuple.Create(level, expansion)); var expectedStatRecord = _expectedStatsByLevel.LookupByKey(Tuple.Create(level, expansion));
@@ -1241,63 +1283,63 @@ namespace Game.DataStorage
break; break;
} }
List<ExpectedStatModRecord> contentTuningMods = _expectedStatModsByContentTuning.LookupByKey(contentTuningId); List<ContentTuningXExpectedRecord> contentTuningMods = _expectedStatModsByContentTuning.LookupByKey(contentTuningId);
float value = 0.0f; float value = 0.0f;
switch (stat) switch (stat)
{ {
case ExpectedStatType.CreatureHealth: case ExpectedStatType.CreatureHealth:
value = expectedStatRecord.CreatureHealth; value = expectedStatRecord.CreatureHealth;
if (!contentTuningMods.Empty()) if (!contentTuningMods.Empty())
value *= contentTuningMods.Sum(expectedStatMod => expectedStatMod != null ? expectedStatMod.CreatureHealthMod : 1.0f); value *= contentTuningMods.Sum(expectedStatMod => ExpectedStatModReducer(1.0f, expectedStatMod, stat));
if (classMod != null) if (classMod != null)
value *= classMod.CreatureHealthMod; value *= classMod.CreatureHealthMod;
break; break;
case ExpectedStatType.PlayerHealth: case ExpectedStatType.PlayerHealth:
value = expectedStatRecord.PlayerHealth; value = expectedStatRecord.PlayerHealth;
if (!contentTuningMods.Empty()) if (!contentTuningMods.Empty())
value *= contentTuningMods.Sum(expectedStatMod => expectedStatMod != null ? expectedStatMod.PlayerHealthMod : 1.0f); value *= contentTuningMods.Sum(expectedStatMod => ExpectedStatModReducer(1.0f, expectedStatMod, stat));
if (classMod != null) if (classMod != null)
value *= classMod.PlayerHealthMod; value *= classMod.PlayerHealthMod;
break; break;
case ExpectedStatType.CreatureAutoAttackDps: case ExpectedStatType.CreatureAutoAttackDps:
value = expectedStatRecord.CreatureAutoAttackDps; value = expectedStatRecord.CreatureAutoAttackDps;
if (!contentTuningMods.Empty()) if (!contentTuningMods.Empty())
value *= contentTuningMods.Sum(expectedStatMod => expectedStatMod != null ? expectedStatMod.CreatureAutoAttackDPSMod : 1.0f); value *= contentTuningMods.Sum(expectedStatMod => ExpectedStatModReducer(1.0f, expectedStatMod, stat));
if (classMod != null) if (classMod != null)
value *= classMod.CreatureAutoAttackDPSMod; value *= classMod.CreatureAutoAttackDPSMod;
break; break;
case ExpectedStatType.CreatureArmor: case ExpectedStatType.CreatureArmor:
value = expectedStatRecord.CreatureArmor; value = expectedStatRecord.CreatureArmor;
if (!contentTuningMods.Empty()) if (!contentTuningMods.Empty())
value *= contentTuningMods.Sum(expectedStatMod => expectedStatMod != null ? expectedStatMod.CreatureArmorMod : 1.0f); value *= contentTuningMods.Sum(expectedStatMod => ExpectedStatModReducer(1.0f, expectedStatMod, stat));
if (classMod != null) if (classMod != null)
value *= classMod.CreatureArmorMod; value *= classMod.CreatureArmorMod;
break; break;
case ExpectedStatType.PlayerMana: case ExpectedStatType.PlayerMana:
value = expectedStatRecord.PlayerMana; value = expectedStatRecord.PlayerMana;
if (!contentTuningMods.Empty()) if (!contentTuningMods.Empty())
value *= contentTuningMods.Sum(expectedStatMod => expectedStatMod != null ? expectedStatMod.PlayerManaMod : 1.0f); value *= contentTuningMods.Sum(expectedStatMod => ExpectedStatModReducer(1.0f, expectedStatMod, stat));
if (classMod != null) if (classMod != null)
value *= classMod.PlayerManaMod; value *= classMod.PlayerManaMod;
break; break;
case ExpectedStatType.PlayerPrimaryStat: case ExpectedStatType.PlayerPrimaryStat:
value = expectedStatRecord.PlayerPrimaryStat; value = expectedStatRecord.PlayerPrimaryStat;
if (!contentTuningMods.Empty()) if (!contentTuningMods.Empty())
value *= contentTuningMods.Sum(expectedStatMod => expectedStatMod != null ? expectedStatMod.PlayerPrimaryStatMod : 1.0f); value *= contentTuningMods.Sum(expectedStatMod => ExpectedStatModReducer(1.0f, expectedStatMod, stat));
if (classMod != null) if (classMod != null)
value *= classMod.PlayerPrimaryStatMod; value *= classMod.PlayerPrimaryStatMod;
break; break;
case ExpectedStatType.PlayerSecondaryStat: case ExpectedStatType.PlayerSecondaryStat:
value = expectedStatRecord.PlayerSecondaryStat; value = expectedStatRecord.PlayerSecondaryStat;
if (!contentTuningMods.Empty()) if (!contentTuningMods.Empty())
value *= contentTuningMods.Sum(expectedStatMod => expectedStatMod != null ? expectedStatMod.PlayerSecondaryStatMod : 1.0f); value *= contentTuningMods.Sum(expectedStatMod => ExpectedStatModReducer(1.0f, expectedStatMod, stat));
if (classMod != null) if (classMod != null)
value *= classMod.PlayerSecondaryStatMod; value *= classMod.PlayerSecondaryStatMod;
break; break;
case ExpectedStatType.ArmorConstant: case ExpectedStatType.ArmorConstant:
value = expectedStatRecord.ArmorConstant; value = expectedStatRecord.ArmorConstant;
if (!contentTuningMods.Empty()) if (!contentTuningMods.Empty())
value *= contentTuningMods.Sum(expectedStatMod => expectedStatMod != null ? expectedStatMod.ArmorConstantMod : 1.0f); value *= contentTuningMods.Sum(expectedStatMod => ExpectedStatModReducer(1.0f, expectedStatMod, stat));
if (classMod != null) if (classMod != null)
value *= classMod.ArmorConstantMod; value *= classMod.ArmorConstantMod;
break; break;
@@ -1306,7 +1348,7 @@ namespace Game.DataStorage
case ExpectedStatType.CreatureSpellDamage: case ExpectedStatType.CreatureSpellDamage:
value = expectedStatRecord.CreatureSpellDamage; value = expectedStatRecord.CreatureSpellDamage;
if (!contentTuningMods.Empty()) if (!contentTuningMods.Empty())
value *= contentTuningMods.Sum(expectedStatMod => expectedStatMod != null ? expectedStatMod.CreatureSpellDamageMod : 1.0f); value *= contentTuningMods.Sum(expectedStatMod => ExpectedStatModReducer(1.0f, expectedStatMod, stat));
if (classMod != null) if (classMod != null)
value *= classMod.CreatureSpellDamageMod; value *= classMod.CreatureSpellDamageMod;
break; break;
@@ -2275,7 +2317,7 @@ namespace Game.DataStorage
MultiMap<uint, CurvePointRecord> _curvePoints = new(); MultiMap<uint, CurvePointRecord> _curvePoints = new();
Dictionary<Tuple<uint, byte, byte, byte>, EmotesTextSoundRecord> _emoteTextSounds = new(); Dictionary<Tuple<uint, byte, byte, byte>, EmotesTextSoundRecord> _emoteTextSounds = new();
Dictionary<Tuple<uint, int>, ExpectedStatRecord> _expectedStatsByLevel = new(); Dictionary<Tuple<uint, int>, ExpectedStatRecord> _expectedStatsByLevel = new();
MultiMap<uint, ExpectedStatModRecord> _expectedStatModsByContentTuning = new(); MultiMap<uint, ContentTuningXExpectedRecord> _expectedStatModsByContentTuning = new();
MultiMap<uint, uint> _factionTeams = new(); MultiMap<uint, uint> _factionTeams = new();
MultiMap<uint, FriendshipRepReactionRecord> _friendshipRepReactions = new(); MultiMap<uint, FriendshipRepReactionRecord> _friendshipRepReactions = new();
Dictionary<uint, HeirloomRecord> _heirlooms = new(); Dictionary<uint, HeirloomRecord> _heirlooms = new();
+1 -1
View File
@@ -329,9 +329,9 @@ namespace Game.DataStorage
public sealed class AzeriteEssenceRecord public sealed class AzeriteEssenceRecord
{ {
public uint Id;
public string Name; public string Name;
public string Description; public string Description;
public uint Id;
public int SpecSetID; public int SpecSetID;
} }
+3 -3
View File
@@ -34,9 +34,9 @@ namespace Game.DataStorage
public sealed class BarberShopStyleRecord public sealed class BarberShopStyleRecord
{ {
public uint Id;
public string DisplayName; public string DisplayName;
public string Description; public string Description;
public uint Id;
public byte Type; // value 0 . hair, value 2 . facialhair public byte Type; // value 0 . hair, value 2 . facialhair
public float CostModifier; public float CostModifier;
public byte Race; public byte Race;
@@ -48,7 +48,7 @@ namespace Game.DataStorage
{ {
public uint Id; public uint Id;
public float StateMultiplier; public float StateMultiplier;
public byte QualityEnum; public sbyte QualityEnum;
} }
public sealed class BattlePetBreedStateRecord public sealed class BattlePetBreedStateRecord
@@ -67,7 +67,7 @@ namespace Game.DataStorage
public uint CreatureID; public uint CreatureID;
public uint SummonSpellID; public uint SummonSpellID;
public int IconFileDataID; public int IconFileDataID;
public byte PetTypeEnum; public sbyte PetTypeEnum;
public ushort Flags; public ushort Flags;
public sbyte SourceTypeEnum; public sbyte SourceTypeEnum;
public int CardUIModelSceneID; public int CardUIModelSceneID;
+26 -22
View File
@@ -41,10 +41,11 @@ namespace Game.DataStorage
public sealed class CharacterLoadoutRecord public sealed class CharacterLoadoutRecord
{ {
public long RaceMask;
public uint Id; public uint Id;
public long RaceMask;
public sbyte ChrClassID; public sbyte ChrClassID;
public sbyte Purpose; public sbyte Purpose;
public sbyte Unused910;
public bool IsForNewCharacter() { return Purpose == 9; } public bool IsForNewCharacter() { return Purpose == 9; }
} }
@@ -58,9 +59,9 @@ namespace Game.DataStorage
public sealed class ChatChannelsRecord public sealed class ChatChannelsRecord
{ {
public uint Id;
public LocalizedString Name; public LocalizedString Name;
public string Shortcut; public string Shortcut;
public uint Id;
public ChannelDBCFlags Flags; public ChannelDBCFlags Flags;
public sbyte FactionGroup; public sbyte FactionGroup;
public int Ruleset; public int Ruleset;
@@ -131,10 +132,9 @@ namespace Game.DataStorage
public uint ChrCustomizationOptionID; public uint ChrCustomizationOptionID;
public uint ChrCustomizationReqID; public uint ChrCustomizationReqID;
public ushort SortOrder; public ushort SortOrder;
public int SwatchColor1;
public int SwatchColor2;
public ushort UiOrderIndex; public ushort UiOrderIndex;
public int Flags; public int Flags;
public int[] SwatchColor = new int[2];
} }
public sealed class ChrCustomizationDisplayInfoRecord public sealed class ChrCustomizationDisplayInfoRecord
@@ -212,6 +212,7 @@ namespace Game.DataStorage
public float CustomizeFacing; public float CustomizeFacing;
public float CameraDistanceOffset; public float CameraDistanceOffset;
public float BarberShopCameraOffsetScale; public float BarberShopCameraOffsetScale;
public float BarberShopCameraHeightOffsetScale; // applied after BarberShopCameraOffsetScale
public float BarberShopCameraRotationOffset; public float BarberShopCameraRotationOffset;
} }
@@ -224,6 +225,7 @@ namespace Game.DataStorage
public sealed class ChrRacesRecord public sealed class ChrRacesRecord
{ {
public uint Id;
public string ClientPrefix; public string ClientPrefix;
public string ClientFileString; public string ClientFileString;
public LocalizedString Name; public LocalizedString Name;
@@ -239,44 +241,45 @@ namespace Game.DataStorage
public string NameFemaleL; public string NameFemaleL;
public string NameLowercaseL; public string NameLowercaseL;
public string NameFemaleLowercaseL; public string NameFemaleLowercaseL;
public uint Id;
public int Flags; public int Flags;
public int BaseLanguage; public int FactionID;
public uint CinematicSequenceID;
public int ResSicknessSpellID; public int ResSicknessSpellID;
public int SplashSoundID; public int SplashSoundID;
public int Alliance;
public int RaceRelated;
public int UnalteredVisualRaceID;
public int DefaultClassID;
public int CreateScreenFileDataID; public int CreateScreenFileDataID;
public int SelectScreenFileDataID; public int SelectScreenFileDataID;
public int NeutralRaceID;
public int LowResScreenFileDataID; public int LowResScreenFileDataID;
public uint[] AlteredFormStartVisualKitID = new uint[3]; public int[] AlteredFormStartVisualKitID = new int[3];
public uint[] AlteredFormFinishVisualKitID = new uint[3]; public int[] AlteredFormFinishVisualKitID = new int[3];
public int HeritageArmorAchievementID; public int HeritageArmorAchievementID;
public int StartingLevel; public int StartingLevel;
public int UiDisplayOrder; public int UiDisplayOrder;
public int MaleModelFallbackRaceID;
public int FemaleModelFallbackRaceID;
public int MaleTextureFallbackRaceID;
public int FemaleTextureFallbackRaceID;
public int PlayableRaceBit; public int PlayableRaceBit;
public int HelmetAnimScalingRaceID; public int HelmetAnimScalingRaceID;
public int TransmogrifyDisabledSlotMask; public int TransmogrifyDisabledSlotMask;
public int UnalteredVisualCustomizationRaceID;
public float[] AlteredFormCustomizeOffsetFallback = new float[3]; public float[] AlteredFormCustomizeOffsetFallback = new float[3];
public float AlteredFormCustomizeRotationFallback; public float AlteredFormCustomizeRotationFallback;
public ushort FactionID; public float[] Unknown910_1 = new float[3];
public ushort CinematicSequenceID; public float[] Unknown910_2 = new float[3];
public sbyte BaseLanguage;
public sbyte CreatureType; public sbyte CreatureType;
public sbyte Alliance;
public sbyte RaceRelated;
public sbyte UnalteredVisualRaceID;
public sbyte DefaultClassID;
public sbyte NeutralRaceID;
public sbyte MaleModelFallbackRaceID;
public sbyte MaleModelFallbackSex; public sbyte MaleModelFallbackSex;
public sbyte FemaleModelFallbackRaceID;
public sbyte FemaleModelFallbackSex; public sbyte FemaleModelFallbackSex;
public sbyte MaleTextureFallbackRaceID;
public sbyte MaleTextureFallbackSex; public sbyte MaleTextureFallbackSex;
public sbyte FemaleTextureFallbackRaceID;
public sbyte FemaleTextureFallbackSex; public sbyte FemaleTextureFallbackSex;
public sbyte UnalteredVisualCustomizationRaceID;
public ChrRacesFlag GetFlags() { return (ChrRacesFlag)Flags; } public ChrRacesFlag GetFlags() { return (ChrRacesFlag)Flags; }
} }
public sealed class ChrSpecializationRecord public sealed class ChrSpecializationRecord
{ {
@@ -350,7 +353,8 @@ namespace Game.DataStorage
{ {
public uint Id; public uint Id;
public int ExpectedStatModID; public int ExpectedStatModID;
public int MythicPlusSeasonID; public int MinMythicPlusSeasonID;
public int MaxMythicPlusSeasonID;
public uint ContentTuningID; public uint ContentTuningID;
} }
+1 -1
View File
@@ -74,7 +74,7 @@ namespace Game.DataStorage
public int CompleteWorldStateID; public int CompleteWorldStateID;
public sbyte Bit; public sbyte Bit;
public int CreatureDisplayID; public int CreatureDisplayID;
public byte Flags; public int Flags;
public int SpellIconFileID; public int SpellIconFileID;
public int Faction; public int Faction;
} }
+1 -1
View File
@@ -21,10 +21,10 @@ namespace Game.DataStorage
{ {
public sealed class FactionRecord public sealed class FactionRecord
{ {
public uint Id;
public long[] ReputationRaceMask = new long[4]; public long[] ReputationRaceMask = new long[4];
public LocalizedString Name; public LocalizedString Name;
public string Description; public string Description;
public uint Id;
public short ReputationIndex; public short ReputationIndex;
public ushort ParentFactionID; public ushort ParentFactionID;
public byte Expansion; public byte Expansion;
+3 -3
View File
@@ -59,9 +59,9 @@ namespace Game.DataStorage
public sealed class GarrAbilityRecord public sealed class GarrAbilityRecord
{ {
public uint Id;
public string Name; public string Name;
public string Description; public string Description;
public uint Id;
public byte GarrAbilityCategoryID; public byte GarrAbilityCategoryID;
public byte GarrFollowerTypeID; public byte GarrFollowerTypeID;
public int IconFileDataID; public int IconFileDataID;
@@ -109,10 +109,10 @@ namespace Game.DataStorage
public sealed class GarrClassSpecRecord public sealed class GarrClassSpecRecord
{ {
public uint Id;
public string ClassSpec; public string ClassSpec;
public string ClassSpecMale; public string ClassSpecMale;
public string ClassSpecFemale; public string ClassSpecFemale;
public uint Id;
public ushort UiTextureAtlasMemberID; public ushort UiTextureAtlasMemberID;
public ushort GarrFollItemSetID; public ushort GarrFollItemSetID;
public byte FollowerClassLimit; public byte FollowerClassLimit;
@@ -121,10 +121,10 @@ namespace Game.DataStorage
public sealed class GarrFollowerRecord public sealed class GarrFollowerRecord
{ {
public uint Id;
public string HordeSourceText; public string HordeSourceText;
public string AllianceSourceText; public string AllianceSourceText;
public string TitleName; public string TitleName;
public uint Id;
public byte GarrTypeID; public byte GarrTypeID;
public byte GarrFollowerTypeID; public byte GarrFollowerTypeID;
public int HordeCreatureID; public int HordeCreatureID;
+11 -5
View File
@@ -205,7 +205,6 @@ namespace Game.DataStorage
public ushort SpellCategoryID; public ushort SpellCategoryID;
public int SpellID; public int SpellID;
public ushort ChrSpecializationID; public ushort ChrSpecializationID;
public uint ParentItemID;
} }
public sealed class ItemExtendedCostRecord public sealed class ItemExtendedCostRecord
@@ -299,11 +298,11 @@ namespace Game.DataStorage
public sealed class ItemSearchNameRecord public sealed class ItemSearchNameRecord
{ {
public uint Id;
public long AllowableRace; public long AllowableRace;
public string Display; public string Display;
public uint Id;
public byte OverallQualityID; public byte OverallQualityID;
public byte ExpansionID; public int ExpansionID;
public ushort MinFactionID; public ushort MinFactionID;
public byte MinReputation; public byte MinReputation;
public int AllowableClass; public int AllowableClass;
@@ -343,7 +342,9 @@ namespace Game.DataStorage
public string Display2; public string Display2;
public string Display1; public string Display1;
public LocalizedString Display; public LocalizedString Display;
public int ExpansionID;
public float DmgVariance; public float DmgVariance;
public uint InstanceBound;
public uint DurationInInventory; public uint DurationInInventory;
public float QualityModifier; public float QualityModifier;
public uint BagFamily; public uint BagFamily;
@@ -370,7 +371,6 @@ namespace Game.DataStorage
public ushort GemProperties; public ushort GemProperties;
public ushort SocketMatchEnchantmentId; public ushort SocketMatchEnchantmentId;
public ushort TotemCategoryID; public ushort TotemCategoryID;
public ushort InstanceBound;
public ushort[] ZoneBound = new ushort[2]; public ushort[] ZoneBound = new ushort[2];
public ushort ItemSet; public ushort ItemSet;
public ushort LockID; public ushort LockID;
@@ -382,7 +382,6 @@ namespace Game.DataStorage
public ushort RequiredSkill; public ushort RequiredSkill;
public ushort ItemLevel; public ushort ItemLevel;
public short AllowableClass; public short AllowableClass;
public byte ExpansionID;
public byte ArtifactID; public byte ArtifactID;
public byte SpellWeight; public byte SpellWeight;
public byte SpellWeightCategory; public byte SpellWeightCategory;
@@ -427,4 +426,11 @@ namespace Game.DataStorage
public ushort ItemBonusTreeID; public ushort ItemBonusTreeID;
public uint ItemID; public uint ItemID;
} }
public sealed class ItemXItemEffectRecord
{
public uint Id;
public int ItemEffectID;
public uint ItemID;
}
} }
+1 -1
View File
@@ -29,8 +29,8 @@ namespace Game.DataStorage
public sealed class LanguagesRecord public sealed class LanguagesRecord
{ {
public LocalizedString Name;
public uint Id; public uint Id;
public LocalizedString Name;
} }
public sealed class LFGDungeonsRecord public sealed class LFGDungeonsRecord
+1 -2
View File
@@ -30,7 +30,6 @@ namespace Game.DataStorage
public uint Id; public uint Id;
public string Directory; public string Directory;
public LocalizedString MapName; public LocalizedString MapName;
public string InternalName;
public string MapDescription0; // Horde public string MapDescription0; // Horde
public string MapDescription1; // Alliance public string MapDescription1; // Alliance
public string PvpShortDescription; public string PvpShortDescription;
@@ -134,7 +133,7 @@ namespace Game.DataStorage
public uint Type; public uint Type;
public uint Asset; public uint Asset;
public int SecondaryAsset; public int SecondaryAsset;
public sbyte TertiaryAsset; public int TertiaryAsset;
} }
public sealed class MountRecord public sealed class MountRecord
+1 -1
View File
@@ -42,9 +42,9 @@ namespace Game.DataStorage
public sealed class PlayerConditionRecord public sealed class PlayerConditionRecord
{ {
public uint Id;
public long RaceMask; public long RaceMask;
public string FailureDescription; public string FailureDescription;
public uint Id;
public int ClassMask; public int ClassMask;
public uint SkillLogic; public uint SkillLogic;
public int LanguageID; public int LanguageID;
+3 -3
View File
@@ -289,6 +289,7 @@ namespace Game.DataStorage
public float ResourceCoefficient; public float ResourceCoefficient;
public float GroupSizeBasePointsCoefficient; public float GroupSizeBasePointsCoefficient;
public float EffectBasePoints; public float EffectBasePoints;
public int ScalingClass;
public int[] EffectMiscValue = new int[2]; public int[] EffectMiscValue = new int[2];
public uint[] EffectRadiusIndex = new uint[2]; public uint[] EffectRadiusIndex = new uint[2];
public FlagArray128 EffectSpellClassMask; public FlagArray128 EffectSpellClassMask;
@@ -323,9 +324,9 @@ namespace Game.DataStorage
public sealed class SpellItemEnchantmentRecord public sealed class SpellItemEnchantmentRecord
{ {
public uint Id;
public string Name; public string Name;
public string HordeName; public string HordeName;
public uint Id;
public uint[] EffectArg = new uint[ItemConst.MaxItemEnchantmentEffects]; public uint[] EffectArg = new uint[ItemConst.MaxItemEnchantmentEffects];
public float[] EffectScalingPoints = new float[ItemConst.MaxItemEnchantmentEffects]; public float[] EffectScalingPoints = new float[ItemConst.MaxItemEnchantmentEffects];
public uint IconFileDataID; public uint IconFileDataID;
@@ -485,7 +486,6 @@ namespace Game.DataStorage
{ {
public uint Id; public uint Id;
public uint SpellID; public uint SpellID;
public int Class;
public uint MinScalingLevel; public uint MinScalingLevel;
public uint MaxScalingLevel; public uint MaxScalingLevel;
public ushort ScalesFromItemLevel; public ushort ScalesFromItemLevel;
@@ -552,7 +552,7 @@ namespace Game.DataStorage
public byte DifficultyID; public byte DifficultyID;
public uint SpellVisualID; public uint SpellVisualID;
public float Probability; public float Probability;
public byte Priority; public int Priority;
public int SpellIconFileID; public int SpellIconFileID;
public int ActiveIconFileID; public int ActiveIconFileID;
public ushort ViewerUnitConditionID; public ushort ViewerUnitConditionID;
+1 -1
View File
@@ -131,8 +131,8 @@ namespace Game.DataStorage
public sealed class TransmogSetGroupRecord public sealed class TransmogSetGroupRecord
{ {
public string Name;
public uint Id; public uint Id;
public string Name;
} }
public sealed class TransmogSetItemRecord public sealed class TransmogSetItemRecord
+1 -1
View File
@@ -307,7 +307,7 @@ namespace Game.Entities
public HolidayIds GetHolidayID() { return (HolidayIds)ExtendedData.RequiredHoliday; } public HolidayIds GetHolidayID() { return (HolidayIds)ExtendedData.RequiredHoliday; }
public float GetDmgVariance() { return ExtendedData.DmgVariance; } public float GetDmgVariance() { return ExtendedData.DmgVariance; }
public byte GetArtifactID() { return ExtendedData.ArtifactID; } public byte GetArtifactID() { return ExtendedData.ArtifactID; }
public byte GetRequiredExpansion() { return ExtendedData.ExpansionID; } public byte GetRequiredExpansion() { return (byte)ExtendedData.ExpansionID; }
public bool IsCurrencyToken() { return (GetBagFamily() & BagFamilyMask.CurrencyTokens) != 0; } public bool IsCurrencyToken() { return (GetBagFamily() & BagFamilyMask.CurrencyTokens) != 0; }
+5
View File
@@ -593,6 +593,11 @@ namespace Game.Entities
return true; return true;
return false; return false;
}); });
TakenTotalMod *= GetTotalAuraMultiplier(AuraType.ModHealingTakenFromCaster, aurEff =>
{
return aurEff.GetCasterGUID() == caster.GetGUID();
});
} }
float heal = healamount * TakenTotalMod; float heal = healamount * TakenTotalMod;
+8 -6
View File
@@ -4549,13 +4549,15 @@ namespace Game
} }
// Load item effects (spells) // Load item effects (spells)
foreach (var effectEntry in CliDB.ItemEffectStorage.Values) foreach (var effectEntry in CliDB.ItemXItemEffectStorage.Values)
{ {
var itemTemplate = ItemTemplateStorage.LookupByKey(effectEntry.ParentItemID); var item = ItemTemplateStorage.LookupByKey(effectEntry.ItemID);
if (itemTemplate == null) if (item != null)
continue; {
var effect = CliDB.ItemEffectStorage.LookupByKey(effectEntry.ItemEffectID);
itemTemplate.Effects.Add(effectEntry); if (effect != null)
item.Effects.Add(effect);
}
} }
Log.outInfo(LogFilter.ServerLoading, "Loaded {0} item templates in {1} ms", sparseCount, Time.GetMSTimeDiffToNow(oldMSTime)); Log.outInfo(LogFilter.ServerLoading, "Loaded {0} item templates in {1} ms", sparseCount, Time.GetMSTimeDiffToNow(oldMSTime));
+14
View File
@@ -5689,6 +5689,20 @@ namespace Game.Spells
Conversation.CreateConversation((uint)effectInfo.MiscValue, GetCaster(), unitTarget.GetPosition(), new List<ObjectGuid>() { unitTarget.GetGUID() }, GetSpellInfo()); Conversation.CreateConversation((uint)effectInfo.MiscValue, GetCaster(), unitTarget.GetPosition(), new List<ObjectGuid>() { unitTarget.GetGUID() }, GetSpellInfo());
} }
[SpellEffectHandler(SpellEffectName.SendChatMessage)]
void EffectSendChatMessage(uint effIndex)
{
if (effectHandleMode != SpellEffectHandleMode.Hit)
return;
uint broadcastTextId = (uint)effectInfo.MiscValue;
if (!CliDB.BroadcastTextStorage.ContainsKey(broadcastTextId))
return;
ChatMsg chatType = (ChatMsg)effectInfo.MiscValueB;
unitTarget.Talk(broadcastTextId, chatType, Global.CreatureTextMgr.GetRangeForChatType(chatType), unitTarget);
}
} }
public class DispelableAura public class DispelableAura
+9 -7
View File
@@ -83,7 +83,6 @@ namespace Game.Spells
SpellScalingRecord _scaling = data.Scaling; SpellScalingRecord _scaling = data.Scaling;
if (_scaling != null) if (_scaling != null)
{ {
Scaling._Class = _scaling.Class;
Scaling.MinScalingLevel = _scaling.MinScalingLevel; Scaling.MinScalingLevel = _scaling.MinScalingLevel;
Scaling.MaxScalingLevel = _scaling.MaxScalingLevel; Scaling.MaxScalingLevel = _scaling.MaxScalingLevel;
Scaling.ScalesFromItemLevel = _scaling.ScalesFromItemLevel; Scaling.ScalesFromItemLevel = _scaling.ScalesFromItemLevel;
@@ -3750,7 +3749,6 @@ namespace Game.Spells
public struct ScalingInfo public struct ScalingInfo
{ {
public int _Class { get; set; }
public uint MinScalingLevel; public uint MinScalingLevel;
public uint MaxScalingLevel; public uint MaxScalingLevel;
public uint ScalesFromItemLevel; public uint ScalesFromItemLevel;
@@ -3785,6 +3783,7 @@ namespace Game.Spells
TriggerSpell = effect.EffectTriggerSpell; TriggerSpell = effect.EffectTriggerSpell;
SpellClassMask = effect.EffectSpellClassMask; SpellClassMask = effect.EffectSpellClassMask;
BonusCoefficientFromAP = effect.BonusCoefficientFromAP; BonusCoefficientFromAP = effect.BonusCoefficientFromAP;
Scaling.Class = effect.ScalingClass;
Scaling.Coefficient = effect.Coefficient; Scaling.Coefficient = effect.Coefficient;
Scaling.Variance = effect.Variance; Scaling.Variance = effect.Variance;
Scaling.ResourceCoefficient = effect.ResourceCoefficient; Scaling.ResourceCoefficient = effect.ResourceCoefficient;
@@ -3933,7 +3932,7 @@ namespace Game.Spells
float tempValue = 0.0f; float tempValue = 0.0f;
if (level > 0) if (level > 0)
{ {
if (_spellInfo.Scaling._Class == 0) if (Scaling.Class == 0)
return 0; return 0;
uint effectiveItemLevel = itemLevel != -1 ? (uint)itemLevel : 1u; uint effectiveItemLevel = itemLevel != -1 ? (uint)itemLevel : 1u;
@@ -3942,21 +3941,21 @@ namespace Game.Spells
if (_spellInfo.Scaling.ScalesFromItemLevel != 0) if (_spellInfo.Scaling.ScalesFromItemLevel != 0)
effectiveItemLevel = _spellInfo.Scaling.ScalesFromItemLevel; effectiveItemLevel = _spellInfo.Scaling.ScalesFromItemLevel;
if (_spellInfo.Scaling._Class == -8 || _spellInfo.Scaling._Class == -9) if (Scaling.Class == -8 || Scaling.Class == -9)
{ {
RandPropPointsRecord randPropPoints = CliDB.RandPropPointsStorage.LookupByKey(effectiveItemLevel); RandPropPointsRecord randPropPoints = CliDB.RandPropPointsStorage.LookupByKey(effectiveItemLevel);
if (randPropPoints == null) if (randPropPoints == null)
randPropPoints = CliDB.RandPropPointsStorage.LookupByKey(CliDB.RandPropPointsStorage.Count - 1); randPropPoints = CliDB.RandPropPointsStorage.LookupByKey(CliDB.RandPropPointsStorage.Count - 1);
tempValue = _spellInfo.Scaling._Class == -8 ? randPropPoints.DamageReplaceStatF : randPropPoints.DamageSecondaryF; tempValue = Scaling.Class == -8 ? randPropPoints.DamageReplaceStatF : randPropPoints.DamageSecondaryF;
} }
else else
tempValue = ItemEnchantmentManager.GetRandomPropertyPoints(effectiveItemLevel, ItemQuality.Rare, InventoryType.Chest, 0); tempValue = ItemEnchantmentManager.GetRandomPropertyPoints(effectiveItemLevel, ItemQuality.Rare, InventoryType.Chest, 0);
} }
else else
tempValue = CliDB.GetSpellScalingColumnForClass(CliDB.SpellScalingGameTable.GetRow(level), _spellInfo.Scaling._Class); tempValue = CliDB.GetSpellScalingColumnForClass(CliDB.SpellScalingGameTable.GetRow(level), Scaling.Class);
if (_spellInfo.Scaling._Class == -7) if (Scaling.Class == -7)
{ {
GtGenericMultByILvlRecord ratingMult = CliDB.CombatRatingsMultByILvlGameTable.GetRow(effectiveItemLevel); GtGenericMultByILvlRecord ratingMult = CliDB.CombatRatingsMultByILvlGameTable.GetRow(effectiveItemLevel);
if (ratingMult != null) if (ratingMult != null)
@@ -4503,6 +4502,8 @@ namespace Game.Spells
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 281 SPELL_EFFECT_LEARN_SOULBIND_CONDUIT new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 281 SPELL_EFFECT_LEARN_SOULBIND_CONDUIT
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 282 SPELL_EFFECT_CONVERT_ITEMS_TO_CURRENCY new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 282 SPELL_EFFECT_CONVERT_ITEMS_TO_CURRENCY
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 283 SPELL_EFFECT_COMPLETE_CAMPAIGN new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 283 SPELL_EFFECT_COMPLETE_CAMPAIGN
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 284 SPELL_EFFECT_SEND_CHAT_MESSAGE
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 285 SPELL_EFFECT_MODIFY_KEYSTONE_2
}; };
#region Fields #region Fields
@@ -4540,6 +4541,7 @@ namespace Game.Spells
public struct ScalingInfo public struct ScalingInfo
{ {
public int Class;
public float Coefficient; public float Coefficient;
public float Variance; public float Variance;
public float ResourceCoefficient; public float ResourceCoefficient;
+1 -1
View File
@@ -237,7 +237,7 @@ namespace Game
return textEntry.duration; return textEntry.duration;
} }
float GetRangeForChatType(ChatMsg msgType) public float GetRangeForChatType(ChatMsg msgType)
{ {
float dist = WorldConfig.GetFloatValue(WorldCfg.ListenRangeSay); float dist = WorldConfig.GetFloatValue(WorldCfg.ListenRangeSay);
switch (msgType) switch (msgType)
@@ -0,0 +1,104 @@
ALTER TABLE `azerite_essence` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `barber_shop_style` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `battle_pet_breed_quality` MODIFY `QualityEnum` tinyint(11) NOT NULL DEFAULT '0' AFTER `StateMultiplier`;
ALTER TABLE `battle_pet_species` MODIFY `PetTypeEnum` tinyint(11) NOT NULL DEFAULT '0' AFTER `IconFileDataID`;
ALTER TABLE `character_loadout` ADD `Unused910` tinyint(11) NOT NULL DEFAULT '0' AFTER `Purpose`;
ALTER TABLE `character_loadout` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `chat_channels` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `chr_customization_choice` MODIFY `SwatchColor1` int(11) NOT NULL DEFAULT '0' AFTER `Flags`;
ALTER TABLE `chr_customization_choice` MODIFY `SwatchColor2` int(11) NOT NULL DEFAULT '0' AFTER `SwatchColor1`;
ALTER TABLE `chr_model` ADD `BarberShopCameraHeightOffsetScale` float NOT NULL DEFAULT '0' AFTER `BarberShopCameraOffsetScale`;
ALTER TABLE `chr_races` ADD `Unknown910_11` float NOT NULL DEFAULT '0' AFTER `AlteredFormCustomizeRotationFallback`;
ALTER TABLE `chr_races` ADD `Unknown910_12` float NOT NULL DEFAULT '0' AFTER `Unknown910_11`;
ALTER TABLE `chr_races` ADD `Unknown910_13` float NOT NULL DEFAULT '0' AFTER `Unknown910_12`;
ALTER TABLE `chr_races` ADD `Unknown910_21` float NOT NULL DEFAULT '0' AFTER `Unknown910_13`;
ALTER TABLE `chr_races` ADD `Unknown910_22` float NOT NULL DEFAULT '0' AFTER `Unknown910_21`;
ALTER TABLE `chr_races` ADD `Unknown910_23` float NOT NULL DEFAULT '0' AFTER `Unknown910_22`;
ALTER TABLE `chr_races` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `chr_races` MODIFY `FactionID` int(11) NOT NULL DEFAULT '0' AFTER `Flags`;
ALTER TABLE `chr_races` MODIFY `CinematicSequenceID` int(11) NOT NULL DEFAULT '0' AFTER `FactionID`;
ALTER TABLE `chr_races` MODIFY `Alliance` int(11) NOT NULL DEFAULT '0' AFTER `SplashSoundID`;
ALTER TABLE `chr_races` MODIFY `RaceRelated` int(11) NOT NULL DEFAULT '0' AFTER `Alliance`;
ALTER TABLE `chr_races` MODIFY `UnalteredVisualRaceID` int(11) NOT NULL DEFAULT '0' AFTER `RaceRelated`;
ALTER TABLE `chr_races` MODIFY `DefaultClassID` int(11) NOT NULL DEFAULT '0' AFTER `UnalteredVisualRaceID`;
ALTER TABLE `chr_races` MODIFY `NeutralRaceID` int(11) NOT NULL DEFAULT '0' AFTER `SelectScreenFileDataID`;
ALTER TABLE `chr_races` MODIFY `AlteredFormStartVisualKitID1` int(11) NOT NULL DEFAULT '0' AFTER `LowResScreenFileDataID`;
ALTER TABLE `chr_races` MODIFY `AlteredFormStartVisualKitID2` int(11) NOT NULL DEFAULT '0' AFTER `AlteredFormStartVisualKitID1`;
ALTER TABLE `chr_races` MODIFY `AlteredFormStartVisualKitID3` int(11) NOT NULL DEFAULT '0' AFTER `AlteredFormStartVisualKitID2`;
ALTER TABLE `chr_races` MODIFY `AlteredFormFinishVisualKitID1` int(11) NOT NULL DEFAULT '0' AFTER `AlteredFormStartVisualKitID3`;
ALTER TABLE `chr_races` MODIFY `AlteredFormFinishVisualKitID2` int(11) NOT NULL DEFAULT '0' AFTER `AlteredFormFinishVisualKitID1`;
ALTER TABLE `chr_races` MODIFY `AlteredFormFinishVisualKitID3` int(11) NOT NULL DEFAULT '0' AFTER `AlteredFormFinishVisualKitID2`;
ALTER TABLE `chr_races` MODIFY `MaleModelFallbackRaceID` int(11) NOT NULL DEFAULT '0' AFTER `UiDisplayOrder`;
ALTER TABLE `chr_races` MODIFY `FemaleModelFallbackRaceID` int(11) NOT NULL DEFAULT '0' AFTER `MaleModelFallbackRaceID`;
ALTER TABLE `chr_races` MODIFY `MaleTextureFallbackRaceID` int(11) NOT NULL DEFAULT '0' AFTER `FemaleModelFallbackRaceID`;
ALTER TABLE `chr_races` MODIFY `FemaleTextureFallbackRaceID` int(11) NOT NULL DEFAULT '0' AFTER `MaleTextureFallbackRaceID`;
ALTER TABLE `chr_races` MODIFY `PlayableRaceBit` int(11) NOT NULL DEFAULT '0' AFTER `FemaleTextureFallbackRaceID`;
ALTER TABLE `chr_races` MODIFY `UnalteredVisualCustomizationRaceID` int(11) NOT NULL DEFAULT '0' AFTER `TransmogrifyDisabledSlotMask`;
ALTER TABLE `chr_races` MODIFY `BaseLanguage` tinyint(11) NOT NULL DEFAULT '0' AFTER `Unknown910_23`;
ALTER TABLE `content_tuning_x_expected` ADD `MinMythicPlusSeasonID` int(11) NOT NULL DEFAULT '0' AFTER `ExpectedStatModID`;
ALTER TABLE `content_tuning_x_expected` ADD `MaxMythicPlusSeasonID` int(11) NOT NULL DEFAULT '0' AFTER `MinMythicPlusSeasonID`;
ALTER TABLE `content_tuning_x_expected` DROP `MythicPlusSeasonID`;
ALTER TABLE `dungeon_encounter` MODIFY `Flags` int(11) NOT NULL DEFAULT '0' AFTER `CreatureDisplayID`;
ALTER TABLE `faction` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `garr_ability` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `garr_class_spec` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `garr_follower` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `item_effect` DROP `ParentItemID`;
ALTER TABLE `item_search_name` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `item_search_name` MODIFY `ExpansionID` int(11) NOT NULL DEFAULT '0' AFTER `OverallQualityID`;
ALTER TABLE `item_sparse` MODIFY `ExpansionID` int(11) NOT NULL DEFAULT '0' AFTER `Display`;
ALTER TABLE `item_sparse` MODIFY `InstanceBound` int(11) NOT NULL DEFAULT '0' AFTER `DmgVariance`;
CREATE TABLE `item_x_item_effect` (
`ID` int(10) unsigned NOT NULL DEFAULT '0',
`ItemEffectID` int(11) NOT NULL DEFAULT '0',
`ItemID` int(10) unsigned NOT NULL DEFAULT '0',
`VerifiedBuild` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`, `VerifiedBuild`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
ALTER TABLE `languages` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `map` DROP `InternalName`;
ALTER TABLE `modifier_tree` MODIFY `TertiaryAsset` int(11) NOT NULL DEFAULT '0' AFTER `SecondaryAsset`;
ALTER TABLE `paragon_reputation` MODIFY `FactionID` int(11) NOT NULL DEFAULT '0' AFTER `ID`;
ALTER TABLE `player_condition` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `rand_prop_points` MODIFY `GoodF4` float NOT NULL DEFAULT '0' AFTER `GoodF3`;
ALTER TABLE `rand_prop_points` MODIFY `GoodF5` float NOT NULL DEFAULT '0' AFTER `GoodF4`;
ALTER TABLE `rand_prop_points` MODIFY `Epic1` int(10) unsigned NOT NULL DEFAULT '0' AFTER `GoodF5`;
ALTER TABLE `rand_prop_points` MODIFY `Epic2` int(10) unsigned NOT NULL DEFAULT '0' AFTER `Epic1`;
ALTER TABLE `rand_prop_points` MODIFY `Epic3` int(10) unsigned NOT NULL DEFAULT '0' AFTER `Epic2`;
ALTER TABLE `rand_prop_points` MODIFY `Epic4` int(10) unsigned NOT NULL DEFAULT '0' AFTER `Epic3`;
ALTER TABLE `rand_prop_points` MODIFY `Epic5` int(10) unsigned NOT NULL DEFAULT '0' AFTER `Epic4`;
ALTER TABLE `spell_effect` ADD `ScalingClass` int(11) NOT NULL DEFAULT '0' AFTER `EffectBasePoints`;
ALTER TABLE `spell_item_enchantment` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
ALTER TABLE `spell_item_enchantment` MODIFY `TransmogCost` int(10) unsigned NOT NULL DEFAULT '0' AFTER `TransmogUseConditionID`;
ALTER TABLE `spell_scaling` DROP `Class`;
ALTER TABLE `spell_x_spell_visual` MODIFY `Priority` int(11) NOT NULL DEFAULT '0' AFTER `Probability`;
ALTER TABLE `transmog_set_group` MODIFY `ID` int(10) unsigned NOT NULL DEFAULT '0' FIRST;
@@ -0,0 +1,6 @@
ALTER TABLE `creature_template` ADD `CreatureDifficultyID` int(11) NOT NULL DEFAULT '0' AFTER `movementId`;
ALTER TABLE `creature_template_scaling` DROP `LevelScalingMin`, DROP `LevelScalingMax`;
ALTER TABLE `points_of_interest` ADD `PositionZ` float NOT NULL DEFAULT '0' AFTER `PositionY`;
ALTER TABLE `quest_template` ADD `PortraitGiverModelSceneID` int(11) NOT NULL DEFAULT '0' AFTER `PortraitGiverMount`;
DELETE FROM `creature_template_scaling` WHERE `ContentTuningID`=0;