From 6e412b16de04d7cd9ef7efa8b75b5ffd87db70f7 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Mon, 21 Feb 2022 11:17:41 +0100 Subject: [PATCH] Core/Spells: correctly implement Elemental Oath --- .../world/4.3.4/2022_02_21_00_world.sql | 3 +++ src/server/game/Spells/SpellMgr.cpp | 12 ---------- src/server/scripts/Spells/spell_shaman.cpp | 24 +++++++++++++++++++ 3 files changed, 27 insertions(+), 12 deletions(-) create mode 100644 sql/updates/world/4.3.4/2022_02_21_00_world.sql diff --git a/sql/updates/world/4.3.4/2022_02_21_00_world.sql b/sql/updates/world/4.3.4/2022_02_21_00_world.sql new file mode 100644 index 00000000000..dd1c7d31911 --- /dev/null +++ b/sql/updates/world/4.3.4/2022_02_21_00_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`= 'spell_sha_clearcasting'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(16246, 'spell_sha_clearcasting'); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 431f4fa2067..ceeb2492fbb 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3254,18 +3254,6 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Stances = UI64LIT(1) << (FORM_TREE - 1); }); - // Elemental Oath - ApplySpellFix({ - 51466, // (Rank 1) - 51470 // (Rank 2) - }, [](SpellInfo* spellInfo) - { - spellInfo->Effects[EFFECT_1].Effect = SPELL_EFFECT_APPLY_AURA; - spellInfo->Effects[EFFECT_1].ApplyAuraName = SPELL_AURA_ADD_FLAT_MODIFIER; - spellInfo->Effects[EFFECT_1].MiscValue = SPELLMOD_EFFECT2; - spellInfo->Effects[EFFECT_1].SpellClassMask = flag96(0x00000000, 0x00004000, 0x00000000); - }); - // Improved Shadowform (Rank 1) ApplySpellFix({ 47569 }, [](SpellInfo* spellInfo) { diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index db4f25a6af9..5ade84821e1 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -48,6 +48,7 @@ enum ShamanSpells SPELL_SHAMAN_EARTHQUAKE_DAMAGE = 77478, SPELL_SHAMAN_EARTHQUAKE_STUN = 77505, SPELL_SHAMAN_ELEMENTAL_MASTERY = 16166, + SPELL_SHAMAN_ELEMENTAL_OATH = 51466, SPELL_SHAMAN_EXHAUSTION = 57723, SPELL_SHAMAN_FIRE_NOVA_DAMAGE = 8349, SPELL_SHAMAN_FLAME_SHOCK = 8050, @@ -1742,6 +1743,28 @@ class spell_sha_maelstrom_weapon : public AuraScript } }; +// 16246 - Clearcasting +class spell_sha_clearcasting : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SHAMAN_ELEMENTAL_OATH }); + } + + // Elemental Oath bonus + void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + { + Unit const* owner = GetUnitOwner(); + if (Aura const* aura = owner->GetAuraOfRankedSpell(SPELL_SHAMAN_ELEMENTAL_OATH, owner->GetGUID())) + amount = aura->GetSpellInfo()->Effects[EFFECT_1].BasePoints; + } + + void Register() override + { + DoEffectCalcAmount.Register(&spell_sha_clearcasting::CalculateAmount, EFFECT_1, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE); + } +}; + void AddSC_shaman_spell_scripts() { RegisterSpellScript(spell_sha_ancestral_awakening); @@ -1750,6 +1773,7 @@ void AddSC_shaman_spell_scripts() RegisterSpellScript(spell_sha_ancestral_resolve); RegisterSpellScript(spell_sha_bloodlust); RegisterSpellScript(spell_sha_cleanse_spirit); + RegisterSpellScript(spell_sha_clearcasting); RegisterSpellScript(spell_sha_chain_heal); RegisterSpellScript(spell_sha_earth_shield); RegisterSpellScript(spell_sha_earth_shock);