diff options
author | My name is Mud <95978183+aquadeus@users.noreply.github.com> | 2022-01-07 22:17:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-07 22:17:12 +0100 |
commit | 1410e018ebafa6e28bd5f22ff60407f27ae01728 (patch) | |
tree | 75ee9e2da1b8e81e07a6ad4eb8096a73a7f49c0c | |
parent | ddc71206de653d05aed479b82260bcf55dd72445 (diff) |
Scripts/Spells: Fix Warlock Drain Soul energize (#27512)
-rw-r--r-- | sql/updates/world/master/2022_01_07_00_warlock_drain_soul.sql | 2 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_warlock.cpp | 27 |
2 files changed, 29 insertions, 0 deletions
diff --git a/sql/updates/world/master/2022_01_07_00_warlock_drain_soul.sql b/sql/updates/world/master/2022_01_07_00_warlock_drain_soul.sql new file mode 100644 index 00000000000..a5b158b0d60 --- /dev/null +++ b/sql/updates/world/master/2022_01_07_00_warlock_drain_soul.sql @@ -0,0 +1,2 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_warl_drain_soul'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (198590, 'spell_warl_drain_soul'); diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index c327e9d9539..ed0b0a7c069 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -40,6 +40,7 @@ enum WarlockSpells SPELL_WARLOCK_DEMONIC_CIRCLE_SUMMON = 48018, SPELL_WARLOCK_DEMONIC_CIRCLE_TELEPORT = 48020, SPELL_WARLOCK_DEVOUR_MAGIC_HEAL = 19658, + SPELL_WARLOCK_DRAIN_SOUL_ENERGIZE = 205292, SPELL_WARLOCK_GLYPH_OF_DEMON_TRAINING = 56249, SPELL_WARLOCK_GLYPH_OF_SOUL_SWAP = 56226, SPELL_WARLOCK_GLYPH_OF_SUCCUBUS = 56250, @@ -304,6 +305,31 @@ class spell_warl_devour_magic : public SpellScriptLoader } }; +// 198590 - Drain Soul +class spell_warl_drain_soul : public AuraScript +{ + PrepareAuraScript(spell_warl_drain_soul); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo ({ SPELL_WARLOCK_DRAIN_SOUL_ENERGIZE }); + } + + void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_DEATH) + return; + + if (Unit* caster = GetCaster()) + caster->CastSpell(caster, SPELL_WARLOCK_DRAIN_SOUL_ENERGIZE, true); + } + + void Register() override + { + AfterEffectRemove += AuraEffectApplyFn(spell_warl_drain_soul::HandleRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); + } +}; + // 48181 - Haunt /// Updated 4.3.4 class spell_warl_haunt : public SpellScriptLoader @@ -999,6 +1025,7 @@ void AddSC_warlock_spell_scripts() new spell_warl_demonic_circle_summon(); new spell_warl_demonic_circle_teleport(); new spell_warl_devour_magic(); + RegisterAuraScript(spell_warl_drain_soul); new spell_warl_haunt(); new spell_warl_health_funnel(); new spell_warl_healthstone_heal(); |