aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp59
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);