aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index aaf52504049..66131f306af 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -348,6 +348,33 @@ class spell_pri_atonement_triggered : public AuraScript
}
};
+// 204883 - Circle of Healing
+class spell_pri_circle_of_healing : public SpellScript
+{
+ PrepareSpellScript(spell_pri_circle_of_healing);
+
+ bool Validate(SpellInfo const* spellInfo) override
+ {
+ return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
+ }
+
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ // Note: we must remove one since target is always chosen.
+ uint32 const maxTargets = uint32(GetSpellInfo()->GetEffect(EFFECT_1).CalcValue(GetCaster()) - 1);
+
+ Trinity::SelectRandomInjuredTargets(targets, maxTargets, true);
+
+ if (Unit* explicitTarget = GetExplTargetUnit())
+ targets.push_front(explicitTarget);
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_circle_of_healing::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
+ }
+};
+
// 64844 - Divine Hymn
class spell_pri_divine_hymn : public SpellScript
{
@@ -1871,6 +1898,7 @@ void AddSC_priest_spell_scripts()
RegisterSpellScript(spell_pri_aq_3p_bonus);
RegisterSpellScript(spell_pri_atonement);
RegisterSpellScript(spell_pri_atonement_triggered);
+ RegisterSpellScript(spell_pri_circle_of_healing);
RegisterSpellScript(spell_pri_divine_hymn);
RegisterSpellScript(spell_pri_divine_star_shadow);
RegisterAreaTriggerAI(areatrigger_pri_divine_star);