diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 59 |
1 files changed, 48 insertions, 11 deletions
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index b960ea34070..48239cd172c 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -47,8 +47,8 @@ enum PriestSpells SPELL_PRIEST_ARMOR_OF_FAITH = 28810, SPELL_PRIEST_ATONEMENT = 81749, SPELL_PRIEST_ATONEMENT_HEAL = 81751, - SPELL_PRIEST_ATONEMENT_TRIGGERED = 194384, - SPELL_PRIEST_ATONEMENT_TRIGGERED_TRINITY = 214206, + SPELL_PRIEST_ATONEMENT_EFFECT = 194384, + SPELL_PRIEST_ATONEMENT_EFFECT_TRINITY = 214206, SPELL_PRIEST_BENEDICTION = 193157, SPELL_PRIEST_BLESSED_HEALING = 70772, SPELL_PRIEST_BLESSED_LIGHT = 196813, @@ -965,6 +965,42 @@ class spell_pri_essence_devourer_heal : public SpellScript } }; +// 246287 - Evangelism +class spell_pri_evangelism : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo + ({ + SPELL_PRIEST_TRINITY, + SPELL_PRIEST_ATONEMENT_EFFECT, + SPELL_PRIEST_ATONEMENT_EFFECT_TRINITY + }); + } + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) const + { + Unit* caster = GetCaster(); + Unit* target = GetHitUnit(); + + Aura* atonementAura = caster->HasAura(SPELL_PRIEST_TRINITY) + ? target->GetAura(SPELL_PRIEST_ATONEMENT_EFFECT_TRINITY, caster->GetGUID()) + : target->GetAura(SPELL_PRIEST_ATONEMENT_EFFECT, caster->GetGUID()); + if (!atonementAura) + return; + + Milliseconds extraDuration = Seconds(GetEffectValue()); + + atonementAura->SetDuration(atonementAura->GetDuration() + extraDuration.count()); + atonementAura->SetMaxDuration(atonementAura->GetDuration() + extraDuration.count()); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_pri_evangelism::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + // 33110 - Prayer of Mending (Heal) class spell_pri_focused_mending : public SpellScript { @@ -1515,7 +1551,7 @@ class spell_pri_power_word_radiance : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ SPELL_PRIEST_ATONEMENT, SPELL_PRIEST_ATONEMENT_TRIGGERED, SPELL_PRIEST_TRINITY }) + return ValidateSpellInfo({ SPELL_PRIEST_ATONEMENT, SPELL_PRIEST_ATONEMENT_EFFECT, SPELL_PRIEST_TRINITY }) && ValidateSpellEffect({ { spellInfo->Id, EFFECT_3 } }); } @@ -1549,7 +1585,7 @@ class spell_pri_power_word_radiance : public SpellScript uint32 durationPct = GetEffectInfo(EFFECT_3).CalcValue(caster); if (caster->HasAura(SPELL_PRIEST_ATONEMENT)) - caster->CastSpell(GetHitUnit(), SPELL_PRIEST_ATONEMENT_TRIGGERED, CastSpellExtraArgs(SPELLVALUE_DURATION_PCT, durationPct).SetTriggerFlags(TRIGGERED_FULL_MASK)); + caster->CastSpell(GetHitUnit(), SPELL_PRIEST_ATONEMENT_EFFECT, CastSpellExtraArgs(SPELLVALUE_DURATION_PCT, durationPct).SetTriggerFlags(TRIGGERED_FULL_MASK)); } void Register() override @@ -1568,7 +1604,7 @@ private: bool IsUnitWithNoAtonement(WorldObject* obj) { Unit* unit = obj->ToUnit(); - return unit && !unit->HasAura(SPELL_PRIEST_ATONEMENT_TRIGGERED, GetCaster()->GetGUID()); + return unit && !unit->HasAura(SPELL_PRIEST_ATONEMENT_EFFECT, GetCaster()->GetGUID()); } // Returns true if obj is a unit and is injured @@ -1631,8 +1667,8 @@ class spell_pri_power_word_shield_aura : public AuraScript SPELL_PRIEST_VOID_SHIELD_EFFECT, SPELL_PRIEST_ATONEMENT, SPELL_PRIEST_TRINITY, - SPELL_PRIEST_ATONEMENT_TRIGGERED, - SPELL_PRIEST_ATONEMENT_TRIGGERED_TRINITY, + SPELL_PRIEST_ATONEMENT_EFFECT, + SPELL_PRIEST_ATONEMENT_EFFECT_TRINITY, SPELL_PRIEST_SHIELD_DISCIPLINE_PASSIVE, SPELL_PRIEST_SHIELD_DISCIPLINE_ENERGIZE, SPELL_PRIEST_RAPTURE, @@ -1653,7 +1689,7 @@ class spell_pri_power_word_shield_aura : public AuraScript AddPct(amountF, player->GetRatingBonusValue(CR_VERSATILITY_DAMAGE_DONE)); if (AuraEffect const* mastery = caster->GetAuraEffect(SPELL_PRIEST_MASTERY_GRACE, EFFECT_0)) - if (GetUnitOwner()->HasAura(SPELL_PRIEST_ATONEMENT_TRIGGERED) || GetUnitOwner()->HasAura(SPELL_PRIEST_ATONEMENT_TRIGGERED_TRINITY)) + if (GetUnitOwner()->HasAura(SPELL_PRIEST_ATONEMENT_EFFECT) || GetUnitOwner()->HasAura(SPELL_PRIEST_ATONEMENT_EFFECT_TRINITY)) AddPct(amountF, mastery->GetAmount()); } @@ -1685,7 +1721,7 @@ class spell_pri_power_word_shield_aura : public AuraScript caster->CastSpell(target, SPELL_PRIEST_VOID_SHIELD_EFFECT, true); if (caster->HasAura(SPELL_PRIEST_ATONEMENT)) - caster->CastSpell(target, caster->HasAura(SPELL_PRIEST_TRINITY) ? SPELL_PRIEST_ATONEMENT_TRIGGERED_TRINITY : SPELL_PRIEST_ATONEMENT_TRIGGERED, true); + caster->CastSpell(target, caster->HasAura(SPELL_PRIEST_TRINITY) ? SPELL_PRIEST_ATONEMENT_EFFECT_TRINITY : SPELL_PRIEST_ATONEMENT_EFFECT, true); } void HandleOnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) @@ -2191,7 +2227,7 @@ class spell_pri_shadow_mend : public SpellScript return ValidateSpellInfo ({ SPELL_PRIEST_ATONEMENT, - SPELL_PRIEST_ATONEMENT_TRIGGERED, + SPELL_PRIEST_ATONEMENT_EFFECT, SPELL_PRIEST_TRINITY, SPELL_PRIEST_MASOCHISM_TALENT, SPELL_PRIEST_MASOCHISM_PERIODIC_HEAL, @@ -2208,7 +2244,7 @@ class spell_pri_shadow_mend : public SpellScript int32 periodicAmount = GetHitHeal() / 20; int32 damageForAuraRemoveAmount = periodicAmount * 10; if (caster->HasAura(SPELL_PRIEST_ATONEMENT) && !caster->HasAura(SPELL_PRIEST_TRINITY)) - caster->CastSpell(target, SPELL_PRIEST_ATONEMENT_TRIGGERED, GetSpell()); + caster->CastSpell(target, SPELL_PRIEST_ATONEMENT_EFFECT, GetSpell()); // Handle Masochism talent if (caster->HasAura(SPELL_PRIEST_MASOCHISM_TALENT) && caster->GetGUID() == target->GetGUID()) @@ -2547,6 +2583,7 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_empowered_renew); RegisterSpellScript(spell_pri_epiphany); RegisterSpellScript(spell_pri_essence_devourer_heal); + RegisterSpellScript(spell_pri_evangelism); RegisterSpellScript(spell_pri_focused_mending); RegisterSpellScript(spell_pri_guardian_spirit); RegisterSpellScript(spell_pri_halo_shadow); |