diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.h | 1 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 33 |
2 files changed, 33 insertions, 1 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 032b8987ebd..36ac2648176 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -87,7 +87,6 @@ class TC_GAME_API AuraEffect void ResetPeriodic(bool resetPeriodicTimer = false); void ResetTicks() { _ticksDone = 0; } - bool IsPeriodic() const { return m_isPeriodic; } void SetPeriodic(bool isPeriodic) { m_isPeriodic = isPeriodic; } bool IsAffectingSpell(SpellInfo const* spell) const; diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 66131f306af..7c0c71951e2 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -62,6 +62,7 @@ enum PriestSpells SPELL_PRIEST_DIVINE_STAR_SHADOW_DAMAGE = 390845, SPELL_PRIEST_DIVINE_STAR_SHADOW_HEAL = 390981, SPELL_PRIEST_DIVINE_WRATH = 40441, + SPELL_PRIEST_EMPOWERED_RENEW_HEAL = 391359, SPELL_PRIEST_FLASH_HEAL = 2061, SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL = 48153, SPELL_PRIEST_HALO_HOLY = 120517, @@ -537,6 +538,37 @@ private: float _maxTravelDistance; }; +// 391339 - Empowered Renew +class spell_pri_empowered_renew : public AuraScript +{ + PrepareAuraScript(spell_pri_empowered_renew); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PRIEST_RENEW, SPELL_PRIEST_EMPOWERED_RENEW_HEAL }) + && ValidateSpellEffect({ { SPELL_PRIEST_RENEW, EFFECT_0 } }) + && sSpellMgr->AssertSpellInfo(SPELL_PRIEST_RENEW, DIFFICULTY_NONE)->GetEffect(EFFECT_0).IsAura(SPELL_AURA_PERIODIC_HEAL); + } + + void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) + { + Unit* caster = eventInfo.GetActor(); + Unit* target = eventInfo.GetProcTarget(); + + SpellInfo const* renewSpellInfo = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_RENEW, GetCastDifficulty()); + SpellEffectInfo const& renewEffect = renewSpellInfo->GetEffect(EFFECT_0); + int32 estimatedTotalHeal = AuraEffect::CalculateEstimatedfTotalPeriodicAmount(caster, target, renewSpellInfo, renewEffect, renewEffect.CalcValue(caster), 1); + int32 healAmount = CalculatePct(estimatedTotalHeal, aurEff->GetAmount()); + + caster->CastSpell(target, SPELL_PRIEST_EMPOWERED_RENEW_HEAL, CastSpellExtraArgs(aurEff).AddSpellBP0(healAmount)); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_pri_empowered_renew::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 47788 - Guardian Spirit class spell_pri_guardian_spirit : public AuraScript { @@ -1902,6 +1934,7 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_divine_hymn); RegisterSpellScript(spell_pri_divine_star_shadow); RegisterAreaTriggerAI(areatrigger_pri_divine_star); + RegisterSpellScript(spell_pri_empowered_renew); RegisterSpellScript(spell_pri_guardian_spirit); RegisterSpellScript(spell_pri_halo_shadow); RegisterAreaTriggerAI(areatrigger_pri_halo); |