From 4587b5d88082d2c6416fafaa2f5b9f5f15038520 Mon Sep 17 00:00:00 2001 From: Ivan Beňovic Date: Wed, 20 Jul 2016 21:36:41 +0200 Subject: Core/Spells: Fixed warlock's Banish cancel if target was already banished (#17614) --- src/server/scripts/Spells/spell_warlock.cpp | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 937c68e43ec..543f2eb5278 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -142,10 +142,7 @@ class spell_warl_banish : public SpellScriptLoader PrepareSpellScript(spell_warl_banish_SpellScript); public: - spell_warl_banish_SpellScript() - { - _removed = false; - } + spell_warl_banish_SpellScript() {} private: void HandleBanish(SpellMissInfo missInfo) @@ -155,30 +152,16 @@ class spell_warl_banish : public SpellScriptLoader if (Unit* target = GetHitUnit()) { - if (target->GetAuraEffect(SPELL_AURA_SCHOOL_IMMUNITY, SPELLFAMILY_WARLOCK, flag128(0, 0x08000000, 0))) - { - // No need to remove old aura since its removed due to not stack by current Banish aura - PreventHitDefaultEffect(EFFECT_0); - PreventHitDefaultEffect(EFFECT_1); - PreventHitDefaultEffect(EFFECT_2); - _removed = true; - } + // Casting Banish on a banished target will remove applied aura + if (Aura * banishAura = target->GetAura(GetSpellInfo()->Id, GetCaster()->GetGUID())) + banishAura->Remove(); } } - void RemoveAura() - { - if (_removed) - PreventHitAura(); - } - void Register() override { BeforeHit += BeforeSpellHitFn(spell_warl_banish_SpellScript::HandleBanish); - AfterHit += SpellHitFn(spell_warl_banish_SpellScript::RemoveAura); } - - bool _removed; }; SpellScript* GetSpellScript() const override -- cgit v1.2.3