aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index d7b09aab997..28e23a8ddcb 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -193,6 +193,8 @@ enum PriestSpells
SPELL_PRIEST_TRAIL_OF_LIGHT_HEAL = 234946,
SPELL_PRIEST_TRINITY = 214205,
SPELL_PRIEST_TRINITY_EFFECT = 290793,
+ SPELL_PRIEST_TWILIGHT_EQUILIBRIUM_HOLY = 390706,
+ SPELL_PRIEST_TWILIGHT_EQUILIBRIUM_SHADOW = 390707,
SPELL_PRIEST_ULTIMATE_PENITENCE = 421453,
SPELL_PRIEST_ULTIMATE_PENITENCE_DAMAGE = 421543,
SPELL_PRIEST_ULTIMATE_PENITENCE_HEAL = 421544,
@@ -3298,6 +3300,71 @@ class spell_pri_train_of_thought : public AuraScript
}
};
+// 390705 - Twilight Equilibrium
+class spell_pri_twilight_equilibrium : public AuraScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_TWILIGHT_EQUILIBRIUM_HOLY, SPELL_PRIEST_TWILIGHT_EQUILIBRIUM_SHADOW });
+ }
+
+ void HandleProc(ProcEventInfo const& eventInfo) const
+ {
+ uint32 spellId = 0;
+
+ if (eventInfo.GetDamageInfo()->GetSchoolMask() & SPELL_SCHOOL_MASK_SHADOW)
+ spellId = SPELL_PRIEST_TWILIGHT_EQUILIBRIUM_HOLY;
+ else if (eventInfo.GetDamageInfo()->GetSchoolMask() & SPELL_SCHOOL_MASK_HOLY)
+ spellId = SPELL_PRIEST_TWILIGHT_EQUILIBRIUM_SHADOW;
+ else
+ return;
+
+ Unit* caster = GetTarget();
+ caster->CastSpell(caster, spellId, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR);
+ }
+
+ void Register() override
+ {
+ OnProc += AuraProcFn(spell_pri_twilight_equilibrium::HandleProc);
+ }
+};
+
+// ID - 390707 Twilight Equilibrium (attached to 589 - Shadow Word: Pain)
+class spell_pri_twilight_equilibrium_shadow_word_pain : public AuraScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_TWILIGHT_EQUILIBRIUM_SHADOW });
+ }
+
+ void OnApply(AuraEffect const* /*aurEff*/, int32& /*amount*/, bool& /*canBeRecalculated*/)
+ {
+ _damageMultiplier = 1.0f;
+ if (Unit* caster = GetCaster())
+ {
+ if (AuraEffect* twilightEquilibrium = caster->GetAuraEffect(SPELL_PRIEST_TWILIGHT_EQUILIBRIUM_SHADOW, EFFECT_0))
+ {
+ // snapshot Twilight Equilibrium value
+ AddPct(_damageMultiplier, twilightEquilibrium->GetAmount());
+ twilightEquilibrium->GetBase()->Remove();
+ }
+ }
+ }
+
+ void CalcDamage(AuraEffect const* /*aurEff*/, Unit* /*victim*/, int32& /*damageOrHealing*/, int32& /*flatMod*/, float& pctMod) const
+ {
+ pctMod *= _damageMultiplier;
+ }
+
+ void Register() override
+ {
+ DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_twilight_equilibrium_shadow_word_pain::OnApply, EFFECT_1, SPELL_AURA_PERIODIC_DAMAGE);
+ DoEffectCalcDamageAndHealing += AuraEffectCalcDamageFn(spell_pri_twilight_equilibrium_shadow_word_pain::CalcDamage, EFFECT_1, SPELL_AURA_PERIODIC_DAMAGE);
+ }
+
+ float _damageMultiplier = 1.0f;
+};
+
// 109142 - Twist of Fate (Shadow)
// 265259 - Twist of Fate (Discipline)
class spell_pri_twist_of_fate : public AuraScript
@@ -3602,6 +3669,8 @@ void AddSC_priest_spell_scripts()
RegisterSpellScript(spell_pri_t3_4p_bonus);
RegisterSpellScript(spell_pri_t5_heal_2p_bonus);
RegisterSpellScript(spell_pri_t10_heal_2p_bonus);
+ RegisterSpellScript(spell_pri_twilight_equilibrium);
+ RegisterSpellScript(spell_pri_twilight_equilibrium_shadow_word_pain);
RegisterSpellScript(spell_pri_twist_of_fate);
RegisterSpellScript(spell_pri_unfurling_darkness);
RegisterSpellScript(spell_pri_vampiric_embrace);