From 4c26625651a2804832036e2d512d5e2cf2438b7d Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sun, 17 Jun 2018 13:47:44 +0200 Subject: [PATCH] Core/Spells: Chill of the Grave will no longer gain Runic Power when Icy Touch or Howling Blast have no power cost * Chill of the Grave will no longer grant Runic Power when Howling blast hits additional targets --- .../custom/custom_2018_06_17_01_world.sql | 3 + src/server/scripts/Spells/spell_dk.cpp | 55 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 sql/updates/world/custom/custom_2018_06_17_01_world.sql diff --git a/sql/updates/world/custom/custom_2018_06_17_01_world.sql b/sql/updates/world/custom/custom_2018_06_17_01_world.sql new file mode 100644 index 00000000000..f9007bf19c3 --- /dev/null +++ b/sql/updates/world/custom/custom_2018_06_17_01_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`= 'spell_dk_chill_of_the_grave'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(-49149, 'spell_dk_chill_of_the_grave'); diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index ffe2a1b2c0f..27c6b6acfda 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -56,11 +56,14 @@ enum DeathKnightSpells SPELL_DK_ENERGIZE_BLOOD_RUNE = 81166, SPELL_DK_ENERGIZE_FROST_RUNE = 81168, SPELL_DK_ENERGIZE_UNHOLY_RUNE = 81169, + SPELL_DK_FREEZING_FOG = 59052, SPELL_DK_FROST_FEVER = 55095, SPELL_DK_FROST_PRESENCE = 48266, SPELL_DK_FROST_STRIKE = 49143, SPELL_DK_GHOUL_EXPLODE = 47496, SPELL_DK_GLYPH_OF_ICEBOUND_FORTITUDE = 58625, + SPELL_DK_HOWLING_BLAST = 49184, + SPELL_DK_ICY_TOUCH = 45477, SPELL_DK_IMPROVED_BLOOD_PRESENCE_R1 = 50365, SPELL_DK_IMPROVED_BLOOD_PRESENCE_TRIGGERED = 63611, SPELL_DK_IMPROVED_DEATH_STRIKE = 62905, @@ -1768,6 +1771,57 @@ class spell_dk_howling_blast : public SpellScriptLoader } }; +// -49149 - Chill of the Grave +class spell_dk_chill_of_the_grave : public SpellScriptLoader +{ + public: + spell_dk_chill_of_the_grave() : SpellScriptLoader("spell_dk_chill_of_the_grave") { } + + class spell_dk_chill_of_the_grave_AuraScript : public AuraScript + { + PrepareAuraScript(spell_dk_chill_of_the_grave_AuraScript); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_DK_FREEZING_FOG, + SPELL_DK_ICY_TOUCH, + SPELL_DK_HOWLING_BLAST + }); + } + + bool CheckProc(ProcEventInfo& eventInfo) + { + if (Spell const* spell = eventInfo.GetProcSpell()) + { + if (SpellInfo const* spellInfo = spell->GetSpellInfo()) + if (GetTarget()->HasAura(SPELL_DK_FREEZING_FOG)) + if (spellInfo->Id == SPELL_DK_ICY_TOUCH || spellInfo->Id == SPELL_DK_HOWLING_BLAST) + return false; + + if (Unit* spellTarget = spell->m_targets.GetUnitTarget()) + if (DamageInfo* damageInfo = eventInfo.GetDamageInfo()) + if (Unit* procTarget = eventInfo.GetDamageInfo()->GetVictim()) + if (spellTarget == procTarget) + return true; + } + + return false; + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_dk_chill_of_the_grave_AuraScript::CheckProc); + } + }; + + AuraScript* GetAuraScript() const override + { + return new spell_dk_chill_of_the_grave_AuraScript(); + } +}; + void AddSC_deathknight_spell_scripts() { new spell_dk_anti_magic_shell_raid(); @@ -1776,6 +1830,7 @@ void AddSC_deathknight_spell_scripts() new spell_dk_blood_boil(); new spell_dk_blood_gorged(); new spell_dk_butchery(); + new spell_dk_chill_of_the_grave(); new spell_dk_dark_transformation(); new spell_dk_dark_transformation_aura(); new spell_dk_death_and_decay();