diff options
| author | Subv <s.v.h21@hotmail.com> | 2012-09-07 18:26:14 -0500 | 
|---|---|---|
| committer | Subv <s.v.h21@hotmail.com> | 2012-09-07 18:26:14 -0500 | 
| commit | 673ce30f38e983ac73fa916b8a6b1d71790c107c (patch) | |
| tree | e1d845b896c4cd3bf9ddb9fce7fa73052c8728d7 /src/server/scripts/Spells | |
| parent | f9b3cf1531cf1086a8451350bfaf10bc5c63421c (diff) | |
Core/Spells: Fixed Improved Health Funnel damage reduction effect.
Author: Josh
closes #7275
Diffstat (limited to 'src/server/scripts/Spells')
| -rw-r--r-- | src/server/scripts/Spells/spell_warlock.cpp | 47 | 
1 files changed, 47 insertions, 0 deletions
| diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index e0131190916..9b227737e0a 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -41,6 +41,10 @@ enum WarlockSpells      WARLOCK_HAUNT_HEAL                      = 48210,      WARLOCK_UNSTABLE_AFFLICTION_DISPEL      = 31117,      WARLOCK_CURSE_OF_DOOM_EFFECT            = 18662, +    WARLOCK_IMPROVED_HEALTH_FUNNEL_R1       = 18703, +    WARLOCK_IMPROVED_HEALTH_FUNNEL_R2       = 18704, +    WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1  = 60955, +    WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2  = 60956,  };  class spell_warl_banish : public SpellScriptLoader @@ -671,6 +675,48 @@ class spell_warl_curse_of_doom : public SpellScriptLoader          }  }; +class spell_warl_health_funnel : public SpellScriptLoader +{ +public: +    spell_warl_health_funnel() : SpellScriptLoader("spell_warl_health_funnel") { } +  +    class spell_warl_health_funnel_AuraScript : public AuraScript +    { +        PrepareAuraScript(spell_warl_health_funnel_AuraScript) +        void ApplyEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) +        { +            if (Unit* target = GetTarget()) +            { +                if (GetCaster()->HasAura(WARLOCK_IMPROVED_HEALTH_FUNNEL_R2)) +                    target->CastSpell(target, WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2, true); +                else if (GetCaster()->HasAura(WARLOCK_IMPROVED_HEALTH_FUNNEL_R1)) +                    target->CastSpell(target, WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1, true); +            } +  +        } +  +        void RemoveEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) +        { +            if (Unit* target = GetTarget()) +            { +                target->RemoveAurasDueToSpell(WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1); +                target->RemoveAurasDueToSpell(WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2); +            } +        } +  +        void Register() +        { +            OnEffectRemove += AuraEffectRemoveFn(spell_warl_health_funnel_AuraScript::RemoveEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL); +            OnEffectApply += AuraEffectApplyFn(spell_warl_health_funnel_AuraScript::ApplyEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL); +        } +    }; +  +    AuraScript* GetAuraScript() const +    { +        return new spell_warl_health_funnel_AuraScript(); +    } +}; +  void AddSC_warlock_spell_scripts()  {      new spell_warl_banish(); @@ -686,4 +732,5 @@ void AddSC_warlock_spell_scripts()      new spell_warl_haunt();      new spell_warl_unstable_affliction();      new spell_warl_curse_of_doom(); +    new spell_warl_health_funnel();  } | 
