diff options
author | Mematoru23 <127750549+Mematoru23@users.noreply.github.com> | 2024-02-11 01:56:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-11 00:56:33 +0100 |
commit | 9267ac27dd0e006b04b7dc70ca91b91e2f4d5476 (patch) | |
tree | 181e8e4a5ec6a6425aac0160a71c59c2ab5a1ef7 /src | |
parent | 69f2f8cd8cf2d5946bafb294e9b60841271fa875 (diff) |
Scripts/Spells: Implemented Priest talent Train of Thought (#29676)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 1659b3a5fc7..18d509bcfde 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -2990,6 +2990,50 @@ private: std::queue<ObjectGuid> _healQueue; }; +// 390693 - Train of Thought +// Called by Flash Heal, Renew, Smite +class spell_pri_train_of_thought : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo + ({ + SPELL_PRIEST_POWER_WORD_SHIELD, + SPELL_PRIEST_PENANCE + }); + } + + bool CheckEffect0(AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) const + { + // Renew & Flash Heal + return eventInfo.GetSpellInfo()->IsAffected(SPELLFAMILY_PRIEST, { 0x840 }); + } + + bool CheckEffect1(AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) const + { + // Smite + return eventInfo.GetSpellInfo()->IsAffected(SPELLFAMILY_PRIEST, { 0x80 }); + } + + void ReducePowerWordShieldCooldown(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const + { + GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PRIEST_POWER_WORD_SHIELD, Milliseconds(aurEff->GetAmount())); + } + + void ReducePenanceCooldown(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const + { + GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PRIEST_PENANCE, Milliseconds(aurEff->GetAmount())); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_pri_train_of_thought::CheckEffect0, EFFECT_0, SPELL_AURA_DUMMY); + OnEffectProc += AuraEffectProcFn(spell_pri_train_of_thought::ReducePowerWordShieldCooldown, EFFECT_0, SPELL_AURA_DUMMY); + DoCheckEffectProc += AuraCheckEffectProcFn(spell_pri_train_of_thought::CheckEffect1, EFFECT_1, SPELL_AURA_DUMMY); + OnEffectProc += AuraEffectProcFn(spell_pri_train_of_thought::ReducePenanceCooldown, EFFECT_1, SPELL_AURA_DUMMY); + } +}; + // 109142 - Twist of Fate (Shadow) // 265259 - Twist of Fate (Discipline) class spell_pri_twist_of_fate : public AuraScript @@ -3177,6 +3221,7 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_shadow_mend_periodic_damage); RegisterSpellScript(spell_pri_surge_of_light); RegisterSpellScript(spell_pri_trail_of_light); + RegisterSpellScript(spell_pri_train_of_thought); RegisterSpellScript(spell_pri_t3_4p_bonus); RegisterSpellScript(spell_pri_t5_heal_2p_bonus); RegisterSpellScript(spell_pri_t10_heal_2p_bonus); |