diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/server/game/Spells/Auras/SpellAuras.cpp | 13 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 45 | 
2 files changed, 45 insertions, 13 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 4dda1c731a7..9456a219274 100755 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1221,19 +1221,6 @@ void Aura::HandleAuraSpecificMods(AuraApplication const* aurApp, Unit* caster, b                          caster->CastCustomSpell(caster, 75999, &heal, NULL, NULL, true, NULL, GetEffect(0));                      }                  } -                // Renew -                else if (GetSpellInfo()->SpellFamilyFlags[0] & 0x00000040 && GetEffect(0)) -                { -                    // Empowered Renew -                    if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, 3021, 1)) -                    { -                        uint32 damage = caster->SpellHealingBonusDone(target, GetSpellInfo(), GetEffect(0)->GetAmount(), HEAL); -                        damage = target->SpellHealingBonusTaken(caster, GetSpellInfo(), damage, HEAL); - -                        int32 basepoints0 = aurEff->GetAmount() * GetEffect(0)->GetTotalTicks() * int32(damage) / 100; -                        caster->CastCustomSpell(target, 63544, &basepoints0, NULL, NULL, true, NULL, GetEffect(0)); -                    } -                }                  // Power Word: Shield                  else if (m_spellInfo->SpellFamilyFlags[0] & 0x1 && m_spellInfo->SpellFamilyFlags[2] & 0x400 && GetEffect(0))                  { diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index a20534effaf..dbc3a91012b 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -35,6 +35,8 @@ enum PriestSpells      PRIEST_SPELL_REFLECTIVE_SHIELD_TRIGGERED    = 33619,      PRIEST_SPELL_REFLECTIVE_SHIELD_R1           = 33201,      PRIEST_SPELL_VAMPIRIC_TOUCH_DISPEL          = 64085, +    PRIEST_SPELL_EMPOWERED_RENEW                = 63544, +    PRIEST_ICON_ID_EMPOWERED_RENEW_TALENT       = 3021,  };  // Guardian Spirit @@ -375,6 +377,48 @@ class spell_pri_vampiric_touch : public SpellScriptLoader          }  }; +class spell_priest_renew : public SpellScriptLoader +{ +    public: +        spell_priest_renew() : SpellScriptLoader("spell_priest_renew") { } + +        class spell_priest_renew_AuraScript : public AuraScript +        { +            PrepareAuraScript(spell_priest_renew_AuraScript); + +            bool Load() +            { +                return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER; +            } + +            void HandleApplyEffect(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) +            { +                if (Unit* caster = GetCaster()) +                { +                    // Empowered Renew +                    if (AuraEffect const* empoweredRenewAurEff = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_EMPOWERED_RENEW_TALENT, EFFECT_1)) +                    { +                        uint32 heal = caster->SpellHealingBonusDone(GetTarget(), GetSpellInfo(), GetEffect(EFFECT_0)->GetAmount(), DOT); +                        heal = GetTarget()->SpellHealingBonusTaken(caster, GetSpellInfo(), heal, DOT); + +                        int32 basepoints0 = empoweredRenewAurEff->GetAmount() * GetEffect(EFFECT_0)->GetTotalTicks() * int32(heal) / 100; +                        caster->CastCustomSpell(GetTarget(), PRIEST_SPELL_EMPOWERED_RENEW, &basepoints0, NULL, NULL, true, NULL, aurEff); +                    } +                } +            } + +            void Register() +            { +                OnEffectApply += AuraEffectApplyFn(spell_priest_renew_AuraScript::HandleApplyEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); +            } +        }; + +        AuraScript* GetAuraScript() const +        { +            return new spell_priest_renew_AuraScript(); +        } +}; +  void AddSC_priest_spell_scripts()  {      new spell_pri_guardian_spirit(); @@ -385,4 +429,5 @@ void AddSC_priest_spell_scripts()      new spell_pri_mind_sear();      new spell_pri_prayer_of_mending_heal();      new spell_pri_vampiric_touch(); +    new spell_priest_renew();  }  | 
