aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp1862
1 files changed, 769 insertions, 1093 deletions
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index 7566035e923..803ecee8c5c 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -142,577 +142,434 @@ class RaidCheck
};
// 26169 - Oracle Healing Bonus
-class spell_pri_aq_3p_bonus : public SpellScriptLoader
+class spell_pri_aq_3p_bonus : public AuraScript
{
- public:
- spell_pri_aq_3p_bonus() : SpellScriptLoader("spell_pri_aq_3p_bonus") { }
+ PrepareAuraScript(spell_pri_aq_3p_bonus);
- class spell_pri_aq_3p_bonus_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_aq_3p_bonus_AuraScript);
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_ORACULAR_HEAL });
+ }
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_ORACULAR_HEAL });
- }
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ Unit* caster = eventInfo.GetActor();
+ if (caster == eventInfo.GetProcTarget())
+ return;
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- Unit* caster = eventInfo.GetActor();
- if (caster == eventInfo.GetProcTarget())
- return;
-
- HealInfo* healInfo = eventInfo.GetHealInfo();
- if (!healInfo || !healInfo->GetHeal())
- return;
-
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(CalculatePct(healInfo->GetHeal(), 10));
- caster->CastSpell(caster, SPELL_PRIEST_ORACULAR_HEAL, args);
- }
+ HealInfo* healInfo = eventInfo.GetHealInfo();
+ if (!healInfo || !healInfo->GetHeal())
+ return;
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pri_aq_3p_bonus_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellBP0(CalculatePct(healInfo->GetHeal(), 10));
+ caster->CastSpell(caster, SPELL_PRIEST_ORACULAR_HEAL, args);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_aq_3p_bonus_AuraScript();
- }
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_pri_aq_3p_bonus::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
};
// -27811 - Blessed Recovery
-class spell_pri_blessed_recovery : public SpellScriptLoader
+class spell_pri_blessed_recovery : public AuraScript
{
-public:
- spell_pri_blessed_recovery() : SpellScriptLoader("spell_pri_blessed_recovery") { }
+ PrepareAuraScript(spell_pri_blessed_recovery);
- class spell_pri_blessed_recovery_AuraScript : public AuraScript
+ bool Validate(SpellInfo const* /*spellInfo*/) override
{
- PrepareAuraScript(spell_pri_blessed_recovery_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_BLESSED_RECOVERY_R1 });
- }
+ return ValidateSpellInfo({ SPELL_PRIEST_BLESSED_RECOVERY_R1 });
+ }
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- DamageInfo* dmgInfo = eventInfo.GetDamageInfo();
- if (!dmgInfo || !dmgInfo->GetDamage())
- return;
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ DamageInfo* dmgInfo = eventInfo.GetDamageInfo();
+ if (!dmgInfo || !dmgInfo->GetDamage())
+ return;
- Unit* target = eventInfo.GetActionTarget();
- uint32 triggerSpell = sSpellMgr->GetSpellWithRank(SPELL_PRIEST_BLESSED_RECOVERY_R1, aurEff->GetSpellInfo()->GetRank());
- SpellInfo const* triggerInfo = sSpellMgr->AssertSpellInfo(triggerSpell);
+ Unit* target = eventInfo.GetActionTarget();
+ uint32 triggerSpell = sSpellMgr->GetSpellWithRank(SPELL_PRIEST_BLESSED_RECOVERY_R1, aurEff->GetSpellInfo()->GetRank());
+ SpellInfo const* triggerInfo = sSpellMgr->AssertSpellInfo(triggerSpell);
- int32 bp = CalculatePct(static_cast<int32>(dmgInfo->GetDamage()), aurEff->GetAmount());
+ int32 bp = CalculatePct(static_cast<int32>(dmgInfo->GetDamage()), aurEff->GetAmount());
- ASSERT(triggerInfo->GetMaxTicks() > 0);
- bp /= triggerInfo->GetMaxTicks();
+ ASSERT(triggerInfo->GetMaxTicks() > 0);
+ bp /= triggerInfo->GetMaxTicks();
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(bp);
- target->CastSpell(target, triggerSpell, args);
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pri_blessed_recovery_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
- }
- };
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellBP0(bp);
+ target->CastSpell(target, triggerSpell, args);
+ }
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_pri_blessed_recovery_AuraScript();
+ OnEffectProc += AuraEffectProcFn(spell_pri_blessed_recovery::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
}
};
// -64127 - Body and Soul
-class spell_pri_body_and_soul : public SpellScriptLoader
+class spell_pri_body_and_soul : public AuraScript
{
- public:
- spell_pri_body_and_soul() : SpellScriptLoader("spell_pri_body_and_soul") { }
+ PrepareAuraScript(spell_pri_body_and_soul);
- class spell_pri_body_and_soul_AuraScript : public AuraScript
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
{
- PrepareAuraScript(spell_pri_body_and_soul_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo(
- {
- SPELL_PRIEST_BODY_AND_SOUL_POISON_TRIGGER,
- SPELL_PRIEST_ABOLISH_DISEASE
- });
- }
-
- void HandleProcTriggerSpell(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
- {
- // Proc only on Power Word: Shield
- SpellInfo const* spellInfo = eventInfo.GetSpellInfo();
- if (!spellInfo || !(spellInfo->SpellFamilyFlags[0] & 0x00000001))
- {
- PreventDefaultAction();
- return;
- }
- }
+ SPELL_PRIEST_BODY_AND_SOUL_POISON_TRIGGER,
+ SPELL_PRIEST_ABOLISH_DISEASE
+ });
+ }
- void HandleProcDummy(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
+ void HandleProcTriggerSpell(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
+ {
+ // Proc only on Power Word: Shield
+ SpellInfo const* spellInfo = eventInfo.GetSpellInfo();
+ if (!spellInfo || !(spellInfo->SpellFamilyFlags[0] & 0x00000001))
+ {
+ PreventDefaultAction();
+ return;
+ }
+ }
- // Proc only on self casted abolish disease
- SpellInfo const* spellInfo = eventInfo.GetSpellInfo();
- if (!spellInfo)
- return;
+ void HandleProcDummy(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
- Unit* caster = eventInfo.GetActor();
- if (spellInfo->Id != SPELL_PRIEST_ABOLISH_DISEASE || caster != eventInfo.GetProcTarget())
- return;
+ // Proc only on self casted abolish disease
+ SpellInfo const* spellInfo = eventInfo.GetSpellInfo();
+ if (!spellInfo)
+ return;
- if (roll_chance_i(aurEff->GetAmount()))
- caster->CastSpell(caster, SPELL_PRIEST_BODY_AND_SOUL_POISON_TRIGGER, aurEff);
- }
+ Unit* caster = eventInfo.GetActor();
+ if (spellInfo->Id != SPELL_PRIEST_ABOLISH_DISEASE || caster != eventInfo.GetProcTarget())
+ return;
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pri_body_and_soul_AuraScript::HandleProcTriggerSpell, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
- OnEffectProc += AuraEffectProcFn(spell_pri_body_and_soul_AuraScript::HandleProcDummy, EFFECT_1, SPELL_AURA_DUMMY);
- }
- };
+ if (roll_chance_i(aurEff->GetAmount()))
+ caster->CastSpell(caster, SPELL_PRIEST_BODY_AND_SOUL_POISON_TRIGGER, aurEff);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_body_and_soul_AuraScript();
- }
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_pri_body_and_soul::HandleProcTriggerSpell, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
+ OnEffectProc += AuraEffectProcFn(spell_pri_body_and_soul::HandleProcDummy, EFFECT_1, SPELL_AURA_DUMMY);
+ }
};
// -34861 - Circle of Healing
-class spell_pri_circle_of_healing : public SpellScriptLoader
+class spell_pri_circle_of_healing : public SpellScript
{
- public:
- spell_pri_circle_of_healing() : SpellScriptLoader("spell_pri_circle_of_healing") { }
+ PrepareSpellScript(spell_pri_circle_of_healing);
- class spell_pri_circle_of_healing_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_pri_circle_of_healing_SpellScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING });
- }
-
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- targets.remove_if(RaidCheck(GetCaster()));
-
- uint32 const maxTargets = GetCaster()->HasAura(SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING) ? 6 : 5; // Glyph of Circle of Healing
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING });
+ }
- if (targets.size() > maxTargets)
- {
- targets.sort(Trinity::HealthPctOrderPred());
- targets.resize(maxTargets);
- }
- }
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ targets.remove_if(RaidCheck(GetCaster()));
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_circle_of_healing_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
- }
- };
+ uint32 const maxTargets = GetCaster()->HasAura(SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING) ? 6 : 5; // Glyph of Circle of Healing
- SpellScript* GetSpellScript() const override
+ if (targets.size() > maxTargets)
{
- return new spell_pri_circle_of_healing_SpellScript();
+ targets.sort(Trinity::HealthPctOrderPred());
+ targets.resize(maxTargets);
}
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_circle_of_healing::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
+ }
};
// -47509 - Divine Aegis
-class spell_pri_divine_aegis : public SpellScriptLoader
+class spell_pri_divine_aegis : public AuraScript
{
- public:
- spell_pri_divine_aegis() : SpellScriptLoader("spell_pri_divine_aegis") { }
-
- class spell_pri_divine_aegis_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_divine_aegis_AuraScript);
+ PrepareAuraScript(spell_pri_divine_aegis);
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_DIVINE_AEGIS });
- }
-
- bool CheckProc(ProcEventInfo& eventInfo)
- {
- return eventInfo.GetProcTarget() != nullptr;
- }
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_DIVINE_AEGIS });
+ }
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
+ bool CheckProc(ProcEventInfo& eventInfo)
+ {
+ return eventInfo.GetProcTarget() != nullptr;
+ }
- HealInfo* healInfo = eventInfo.GetHealInfo();
- if (!healInfo || !healInfo->GetHeal())
- return;
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
- int32 absorb = CalculatePct(healInfo->GetHeal(), aurEff->GetAmount());
+ HealInfo* healInfo = eventInfo.GetHealInfo();
+ if (!healInfo || !healInfo->GetHeal())
+ return;
- // Multiple effects stack, so let's try to find this aura.
- if (AuraEffect const* aegis = eventInfo.GetProcTarget()->GetAuraEffect(SPELL_PRIEST_DIVINE_AEGIS, EFFECT_0))
- absorb += aegis->GetAmount();
+ int32 absorb = CalculatePct(healInfo->GetHeal(), aurEff->GetAmount());
- absorb = std::min(absorb, eventInfo.GetProcTarget()->GetLevel() * 125);
+ // Multiple effects stack, so let's try to find this aura.
+ if (AuraEffect const* aegis = eventInfo.GetProcTarget()->GetAuraEffect(SPELL_PRIEST_DIVINE_AEGIS, EFFECT_0))
+ absorb += aegis->GetAmount();
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(absorb);
- GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_PRIEST_DIVINE_AEGIS, args);
- }
+ absorb = std::min(absorb, eventInfo.GetProcTarget()->GetLevel() * 125);
- void Register() override
- {
- DoCheckProc += AuraCheckProcFn(spell_pri_divine_aegis_AuraScript::CheckProc);
- OnEffectProc += AuraEffectProcFn(spell_pri_divine_aegis_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellBP0(absorb);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_PRIEST_DIVINE_AEGIS, args);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_divine_aegis_AuraScript();
- }
+ void Register() override
+ {
+ DoCheckProc += AuraCheckProcFn(spell_pri_divine_aegis::CheckProc);
+ OnEffectProc += AuraEffectProcFn(spell_pri_divine_aegis::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
};
// 64844 - Divine Hymn
-class spell_pri_divine_hymn : public SpellScriptLoader
+class spell_pri_divine_hymn : public SpellScript
{
- public:
- spell_pri_divine_hymn() : SpellScriptLoader("spell_pri_divine_hymn") { }
-
- class spell_pri_divine_hymn_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_pri_divine_hymn_SpellScript);
-
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- targets.remove_if(RaidCheck(GetCaster()));
-
- uint32 const maxTargets = 3;
+ PrepareSpellScript(spell_pri_divine_hymn);
- if (targets.size() > maxTargets)
- {
- targets.sort(Trinity::HealthPctOrderPred());
- targets.resize(maxTargets);
- }
- }
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ targets.remove_if(RaidCheck(GetCaster()));
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_divine_hymn_SpellScript::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ALLY);
- }
- };
+ uint32 const maxTargets = 3;
- SpellScript* GetSpellScript() const override
+ if (targets.size() > maxTargets)
{
- return new spell_pri_divine_hymn_SpellScript();
+ targets.sort(Trinity::HealthPctOrderPred());
+ targets.resize(maxTargets);
}
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_divine_hymn::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ALLY);
+ }
};
// 55677 - Glyph of Dispel Magic
-class spell_pri_glyph_of_dispel_magic : public SpellScriptLoader
+class spell_pri_glyph_of_dispel_magic : public AuraScript
{
- public:
- spell_pri_glyph_of_dispel_magic() : SpellScriptLoader("spell_pri_glyph_of_dispel_magic") { }
-
- class spell_pri_glyph_of_dispel_magic_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_glyph_of_dispel_magic_AuraScript);
+ PrepareAuraScript(spell_pri_glyph_of_dispel_magic);
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL });
- }
-
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- // Dispel Magic shares spellfamilyflag with abolish disease
- SpellInfo const* spellInfo = eventInfo.GetSpellInfo();
- if (!spellInfo || spellInfo->SpellIconID != 74)
- return;
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL });
+ }
- Unit* target = eventInfo.GetProcTarget();
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ // Dispel Magic shares spellfamilyflag with abolish disease
+ SpellInfo const* spellInfo = eventInfo.GetSpellInfo();
+ if (!spellInfo || spellInfo->SpellIconID != 74)
+ return;
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(target->CountPctFromMaxHealth(aurEff->GetAmount()));
- eventInfo.GetActor()->CastSpell(target, SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL, args);
- }
+ Unit* target = eventInfo.GetProcTarget();
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pri_glyph_of_dispel_magic_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellBP0(target->CountPctFromMaxHealth(aurEff->GetAmount()));
+ eventInfo.GetActor()->CastSpell(target, SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL, args);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_glyph_of_dispel_magic_AuraScript();
- }
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_pri_glyph_of_dispel_magic::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
};
// 55680 - Glyph of Prayer of Healing
-class spell_pri_glyph_of_prayer_of_healing : public SpellScriptLoader
+class spell_pri_glyph_of_prayer_of_healing : public AuraScript
{
- public:
- spell_pri_glyph_of_prayer_of_healing() : SpellScriptLoader("spell_pri_glyph_of_prayer_of_healing") { }
-
- class spell_pri_glyph_of_prayer_of_healing_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_glyph_of_prayer_of_healing_AuraScript);
+ PrepareAuraScript(spell_pri_glyph_of_prayer_of_healing);
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL });
- }
-
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL });
+ }
- HealInfo* healInfo = eventInfo.GetHealInfo();
- if (!healInfo || !healInfo->GetHeal())
- return;
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
- SpellInfo const* triggeredSpellInfo = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL);
+ HealInfo* healInfo = eventInfo.GetHealInfo();
+ if (!healInfo || !healInfo->GetHeal())
+ return;
- ASSERT(triggeredSpellInfo->GetMaxTicks() > 0);
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()) / triggeredSpellInfo->GetMaxTicks());
- GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL, args);
- }
+ SpellInfo const* triggeredSpellInfo = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL);
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pri_glyph_of_prayer_of_healing_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ ASSERT(triggeredSpellInfo->GetMaxTicks() > 0);
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellBP0(CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()) / triggeredSpellInfo->GetMaxTicks());
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL, args);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_glyph_of_prayer_of_healing_AuraScript();
- }
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_pri_glyph_of_prayer_of_healing::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
};
// 47788 - Guardian Spirit
-class spell_pri_guardian_spirit : public SpellScriptLoader
+class spell_pri_guardian_spirit : public AuraScript
{
- public:
- spell_pri_guardian_spirit() : SpellScriptLoader("spell_pri_guardian_spirit") { }
+ PrepareAuraScript(spell_pri_guardian_spirit);
- class spell_pri_guardian_spirit_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_guardian_spirit_AuraScript);
+ uint32 healPct = 0;
- uint32 healPct = 0;
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL });
- }
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL });
+ }
- bool Load() override
- {
- healPct = GetSpellInfo()->Effects[EFFECT_1].CalcValue();
- return true;
- }
+ bool Load() override
+ {
+ healPct = GetSpellInfo()->Effects[EFFECT_1].CalcValue();
+ return true;
+ }
- void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/)
- {
- // Set absorbtion amount to unlimited
- amount = -1;
- }
+ void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/)
+ {
+ // Set absorbtion amount to unlimited
+ amount = -1;
+ }
- void Absorb(AuraEffect* /*aurEff*/, DamageInfo & dmgInfo, uint32 & absorbAmount)
- {
- Unit* target = GetTarget();
- if (dmgInfo.GetDamage() < target->GetHealth())
- return;
-
- int32 healAmount = int32(target->CountPctFromMaxHealth(healPct));
- // remove the aura now, we don't want 40% healing bonus
- Remove(AURA_REMOVE_BY_ENEMY_SPELL);
- CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
- args.AddSpellBP0(healAmount);
- target->CastSpell(target, SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL, args);
- absorbAmount = dmgInfo.GetDamage();
- }
+ void Absorb(AuraEffect* /*aurEff*/, DamageInfo & dmgInfo, uint32 & absorbAmount)
+ {
+ Unit* target = GetTarget();
+ if (dmgInfo.GetDamage() < target->GetHealth())
+ return;
- void Register() override
- {
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_guardian_spirit_AuraScript::CalculateAmount, EFFECT_1, SPELL_AURA_SCHOOL_ABSORB);
- OnEffectAbsorb += AuraEffectAbsorbFn(spell_pri_guardian_spirit_AuraScript::Absorb, EFFECT_1);
- }
- };
+ int32 healAmount = int32(target->CountPctFromMaxHealth(healPct));
+ // remove the aura now, we don't want 40% healing bonus
+ Remove(AURA_REMOVE_BY_ENEMY_SPELL);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.AddSpellBP0(healAmount);
+ target->CastSpell(target, SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL, args);
+ absorbAmount = dmgInfo.GetDamage();
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_guardian_spirit_AuraScript();
- }
+ void Register() override
+ {
+ DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_guardian_spirit::CalculateAmount, EFFECT_1, SPELL_AURA_SCHOOL_ABSORB);
+ OnEffectAbsorb += AuraEffectAbsorbFn(spell_pri_guardian_spirit::Absorb, EFFECT_1);
+ }
};
// 64904 - Hymn of Hope
-class spell_pri_hymn_of_hope : public SpellScriptLoader
+class spell_pri_hymn_of_hope : public SpellScript
{
- public:
- spell_pri_hymn_of_hope() : SpellScriptLoader("spell_pri_hymn_of_hope") { }
-
- class spell_pri_hymn_of_hope_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_pri_hymn_of_hope_SpellScript);
+ PrepareSpellScript(spell_pri_hymn_of_hope);
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- targets.remove_if(PowerCheck(POWER_MANA));
- targets.remove_if(RaidCheck(GetCaster()));
-
- uint32 const maxTargets = 3;
-
- if (targets.size() > maxTargets)
- {
- targets.sort(Trinity::PowerPctOrderPred(POWER_MANA));
- targets.resize(maxTargets);
- }
- }
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ targets.remove_if(PowerCheck(POWER_MANA));
+ targets.remove_if(RaidCheck(GetCaster()));
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_hymn_of_hope_SpellScript::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ALLY);
- }
- };
+ uint32 const maxTargets = 3;
- SpellScript* GetSpellScript() const override
+ if (targets.size() > maxTargets)
{
- return new spell_pri_hymn_of_hope_SpellScript();
+ targets.sort(Trinity::PowerPctOrderPred(POWER_MANA));
+ targets.resize(maxTargets);
}
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_hymn_of_hope::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ALLY);
+ }
};
// -47569 - Improved Shadowform
-class spell_pri_imp_shadowform : public SpellScriptLoader
+class spell_pri_imp_shadowform : public AuraScript
{
- public:
- spell_pri_imp_shadowform() : SpellScriptLoader("spell_pri_imp_shadowform") { }
-
- class spell_pri_imp_shadowform_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_imp_shadowform_AuraScript);
+ PrepareAuraScript(spell_pri_imp_shadowform);
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- if (roll_chance_i(aurEff->GetAmount()))
- eventInfo.GetActor()->RemoveMovementImpairingAuras(true);
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pri_imp_shadowform_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ if (roll_chance_i(aurEff->GetAmount()))
+ eventInfo.GetActor()->RemoveMovementImpairingAuras(true);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_imp_shadowform_AuraScript();
- }
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_pri_imp_shadowform::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
};
// -15337 - Improved Spirit Tap
-class spell_pri_improved_spirit_tap : public SpellScriptLoader
+class spell_pri_improved_spirit_tap : public AuraScript
{
- public:
- spell_pri_improved_spirit_tap() : SpellScriptLoader("spell_pri_improved_spirit_tap") { }
+ PrepareAuraScript(spell_pri_improved_spirit_tap);
- class spell_pri_improved_spirit_tap_AuraScript : public AuraScript
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
{
- PrepareAuraScript(spell_pri_improved_spirit_tap_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo(
- {
- SPELL_PRIEST_SHADOW_WORD_DEATH_R1,
- SPELL_PRIEST_MIND_BLAST_R1
- });
- }
-
- bool CheckProc(ProcEventInfo& eventInfo)
- {
- if (SpellInfo const* spellInfo = eventInfo.GetSpellInfo())
- {
- if (spellInfo->IsRankOf(sSpellMgr->AssertSpellInfo(SPELL_PRIEST_SHADOW_WORD_DEATH_R1)) ||
- spellInfo->IsRankOf(sSpellMgr->AssertSpellInfo(SPELL_PRIEST_MIND_BLAST_R1)))
- return true;
- else if (spellInfo->Id == SPELL_PRIEST_MIND_FLAY_DAMAGE)
- return roll_chance_i(50);
- }
-
- return false;
- }
-
- void Register() override
- {
- DoCheckProc += AuraCheckProcFn(spell_pri_improved_spirit_tap_AuraScript::CheckProc);
- }
- };
+ SPELL_PRIEST_SHADOW_WORD_DEATH_R1,
+ SPELL_PRIEST_MIND_BLAST_R1
+ });
+ }
- AuraScript* GetAuraScript() const override
+ bool CheckProc(ProcEventInfo& eventInfo)
+ {
+ if (SpellInfo const* spellInfo = eventInfo.GetSpellInfo())
{
- return new spell_pri_improved_spirit_tap_AuraScript();
+ if (spellInfo->IsRankOf(sSpellMgr->AssertSpellInfo(SPELL_PRIEST_SHADOW_WORD_DEATH_R1)) ||
+ spellInfo->IsRankOf(sSpellMgr->AssertSpellInfo(SPELL_PRIEST_MIND_BLAST_R1)))
+ return true;
+ else if (spellInfo->Id == SPELL_PRIEST_MIND_FLAY_DAMAGE)
+ return roll_chance_i(50);
}
+
+ return false;
+ }
+
+ void Register() override
+ {
+ DoCheckProc += AuraCheckProcFn(spell_pri_improved_spirit_tap::CheckProc);
+ }
};
// 40438 - Priest Tier 6 Trinket
-class spell_pri_item_t6_trinket : public SpellScriptLoader
+class spell_pri_item_t6_trinket : public AuraScript
{
- public:
- spell_pri_item_t6_trinket() : SpellScriptLoader("spell_pri_item_t6_trinket") { }
+ PrepareAuraScript(spell_pri_item_t6_trinket);
- class spell_pri_item_t6_trinket_AuraScript : public AuraScript
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
{
- PrepareAuraScript(spell_pri_item_t6_trinket_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo(
- {
- SPELL_PRIEST_DIVINE_BLESSING,
- SPELL_PRIEST_DIVINE_WRATH
- });
- }
-
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- Unit* caster = eventInfo.GetActor();
- if (eventInfo.GetSpellTypeMask() & PROC_SPELL_TYPE_HEAL)
- caster->CastSpell(nullptr, SPELL_PRIEST_DIVINE_BLESSING, aurEff);
+ SPELL_PRIEST_DIVINE_BLESSING,
+ SPELL_PRIEST_DIVINE_WRATH
+ });
+ }
- if (eventInfo.GetSpellTypeMask() & PROC_SPELL_TYPE_DAMAGE)
- caster->CastSpell(nullptr, SPELL_PRIEST_DIVINE_WRATH, aurEff);
- }
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ Unit* caster = eventInfo.GetActor();
+ if (eventInfo.GetSpellTypeMask() & PROC_SPELL_TYPE_HEAL)
+ caster->CastSpell(nullptr, SPELL_PRIEST_DIVINE_BLESSING, aurEff);
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pri_item_t6_trinket_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ if (eventInfo.GetSpellTypeMask() & PROC_SPELL_TYPE_DAMAGE)
+ caster->CastSpell(nullptr, SPELL_PRIEST_DIVINE_WRATH, aurEff);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_item_t6_trinket_AuraScript();
- }
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_pri_item_t6_trinket::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
};
// 60123 - Lightwell
@@ -785,790 +642,609 @@ class spell_pri_lightwell : public SpellScript
};
// -7001 - Lightwell Renew
-class spell_pri_lightwell_renew : public SpellScriptLoader
+class spell_pri_lightwell_renew : public AuraScript
{
- public:
- spell_pri_lightwell_renew() : SpellScriptLoader("spell_pri_lightwell_renew") { }
+ PrepareAuraScript(spell_pri_lightwell_renew);
- class spell_pri_lightwell_renew_AuraScript : public AuraScript
+ void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
+ {
+ if (Unit* caster = GetCaster())
{
- PrepareAuraScript(spell_pri_lightwell_renew_AuraScript);
-
- void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
- {
- if (Unit* caster = GetCaster())
- {
- // Bonus from Glyph of Lightwell
- if (AuraEffect* modHealing = caster->GetAuraEffect(SPELL_PRIEST_GLYPH_OF_LIGHTWELL, EFFECT_0))
- AddPct(amount, modHealing->GetAmount());
- }
- }
-
- void InitializeAmount(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
- {
- // Attacks done to you equal to 30% of your total health will cancel the effect
- _remainingAmount = GetTarget()->CountPctFromMaxHealth(30);
- }
+ // Bonus from Glyph of Lightwell
+ if (AuraEffect* modHealing = caster->GetAuraEffect(SPELL_PRIEST_GLYPH_OF_LIGHTWELL, EFFECT_0))
+ AddPct(amount, modHealing->GetAmount());
+ }
+ }
- void CheckDropCharge(ProcEventInfo& eventInfo)
- {
- DamageInfo* damageInfo = eventInfo.GetDamageInfo();
- if (!damageInfo)
- return;
+ void InitializeAmount(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ // Attacks done to you equal to 30% of your total health will cancel the effect
+ _remainingAmount = GetTarget()->CountPctFromMaxHealth(30);
+ }
- uint32 damage = damageInfo->GetDamage();
- if (_remainingAmount <= damage)
- return;
+ void CheckDropCharge(ProcEventInfo& eventInfo)
+ {
+ DamageInfo* damageInfo = eventInfo.GetDamageInfo();
+ if (!damageInfo)
+ return;
- _remainingAmount -= damage;
- // prevent drop charge
- PreventDefaultAction();
- }
+ uint32 damage = damageInfo->GetDamage();
+ if (_remainingAmount <= damage)
+ return;
- void Register() override
- {
- DoPrepareProc += AuraProcFn(spell_pri_lightwell_renew_AuraScript::CheckDropCharge);
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_lightwell_renew_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
+ _remainingAmount -= damage;
+ // prevent drop charge
+ PreventDefaultAction();
+ }
- AfterEffectApply += AuraEffectApplyFn(spell_pri_lightwell_renew_AuraScript::InitializeAmount, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
- }
+ void Register() override
+ {
+ DoPrepareProc += AuraProcFn(spell_pri_lightwell_renew::CheckDropCharge);
+ DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_lightwell_renew::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
- uint32 _remainingAmount = 0;
- };
+ AfterEffectApply += AuraEffectApplyFn(spell_pri_lightwell_renew::InitializeAmount, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_lightwell_renew_AuraScript();
- }
+ uint32 _remainingAmount = 0;
};
// 28305 - Mana Leech (Passive) (Priest Pet Aura)
-class spell_pri_mana_leech : public SpellScriptLoader
+class spell_pri_mana_leech : public AuraScript
{
- public:
- spell_pri_mana_leech() : SpellScriptLoader("spell_pri_mana_leech") { }
+ PrepareAuraScript(spell_pri_mana_leech);
- class spell_pri_mana_leech_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_mana_leech_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_MANA_LEECH_PROC });
- }
-
- bool CheckProc(ProcEventInfo& /*eventInfo*/)
- {
- _procTarget = GetTarget()->GetOwner();
- return _procTarget != nullptr;
- }
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_MANA_LEECH_PROC });
+ }
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
- {
- PreventDefaultAction();
- GetTarget()->CastSpell(_procTarget, SPELL_PRIEST_MANA_LEECH_PROC, aurEff);
- }
+ bool CheckProc(ProcEventInfo& /*eventInfo*/)
+ {
+ _procTarget = GetTarget()->GetOwner();
+ return _procTarget != nullptr;
+ }
- void Register() override
- {
- DoCheckProc += AuraCheckProcFn(spell_pri_mana_leech_AuraScript::CheckProc);
- OnEffectProc += AuraEffectProcFn(spell_pri_mana_leech_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
+ {
+ PreventDefaultAction();
+ GetTarget()->CastSpell(_procTarget, SPELL_PRIEST_MANA_LEECH_PROC, aurEff);
+ }
- Unit* _procTarget = nullptr;
- };
+ void Register() override
+ {
+ DoCheckProc += AuraCheckProcFn(spell_pri_mana_leech::CheckProc);
+ OnEffectProc += AuraEffectProcFn(spell_pri_mana_leech::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_mana_leech_AuraScript();
- }
+ Unit* _procTarget = nullptr;
};
// -49821 - Mind Sear
-class spell_pri_mind_sear : public SpellScriptLoader
+class spell_pri_mind_sear : public SpellScript
{
- public:
- spell_pri_mind_sear() : SpellScriptLoader("spell_pri_mind_sear") { }
-
- class spell_pri_mind_sear_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_pri_mind_sear_SpellScript);
+ PrepareSpellScript(spell_pri_mind_sear);
- void FilterTargets(std::list<WorldObject*>& unitList)
- {
- unitList.remove_if(Trinity::ObjectGUIDCheck(GetCaster()->GetChannelObjectGuid()));
- }
-
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_mind_sear_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY);
- }
- };
+ void FilterTargets(std::list<WorldObject*>& unitList)
+ {
+ unitList.remove_if(Trinity::ObjectGUIDCheck(GetCaster()->GetChannelObjectGuid()));
+ }
- SpellScript* GetSpellScript() const override
- {
- return new spell_pri_mind_sear_SpellScript();
- }
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_mind_sear::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY);
+ }
};
// -47580 - Pain and Suffering (dummy aura)
-class spell_pri_pain_and_suffering_dummy : public SpellScriptLoader
+class spell_pri_pain_and_suffering_dummy : public AuraScript
{
- public:
- spell_pri_pain_and_suffering_dummy() : SpellScriptLoader("spell_pri_pain_and_suffering_dummy") { }
-
- class spell_pri_pain_and_suffering_dummy_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_pain_and_suffering_dummy_AuraScript);
+ PrepareAuraScript(spell_pri_pain_and_suffering_dummy);
- bool CheckDummy(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
- {
- return false;
- }
-
- void Register() override
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_pri_pain_and_suffering_dummy_AuraScript::CheckDummy, EFFECT_1, SPELL_AURA_DUMMY);
- }
- };
+ bool CheckDummy(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
+ {
+ return false;
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_pain_and_suffering_dummy_AuraScript;
- }
+ void Register() override
+ {
+ DoCheckEffectProc += AuraCheckEffectProcFn(spell_pri_pain_and_suffering_dummy::CheckDummy, EFFECT_1, SPELL_AURA_DUMMY);
+ }
};
// 47948 - Pain and Suffering (Proc)
-class spell_pri_pain_and_suffering_proc : public SpellScriptLoader
+class spell_pri_pain_and_suffering_proc : public SpellScript
{
- public:
- spell_pri_pain_and_suffering_proc() : SpellScriptLoader("spell_pri_pain_and_suffering_proc") { }
+ PrepareSpellScript(spell_pri_pain_and_suffering_proc);
- class spell_pri_pain_and_suffering_proc_SpellScript : public SpellScript
+ void HandleEffectScriptEffect(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ // Refresh Shadow Word: Pain on target
+ if (Unit* target = GetHitUnit())
{
- PrepareSpellScript(spell_pri_pain_and_suffering_proc_SpellScript);
-
- void HandleEffectScriptEffect(SpellEffIndex /*effIndex*/)
- {
- Unit* caster = GetCaster();
- // Refresh Shadow Word: Pain on target
- if (Unit* target = GetHitUnit())
- {
- if (AuraEffect* aur = target->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_PRIEST, 0x8000, 0, 0, caster->GetGUID()))
- {
- aur->ChangeAmount(aur->CalculateAmount(aur->GetCaster()), false);
- aur->CalculatePeriodic(caster, false, false);
- aur->GetBase()->RefreshDuration();
- }
- }
- }
-
- void Register() override
+ if (AuraEffect* aur = target->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_PRIEST, 0x8000, 0, 0, caster->GetGUID()))
{
- OnEffectHitTarget += SpellEffectFn(spell_pri_pain_and_suffering_proc_SpellScript::HandleEffectScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ aur->ChangeAmount(aur->CalculateAmount(aur->GetCaster()), false);
+ aur->CalculatePeriodic(caster, false, false);
+ aur->GetBase()->RefreshDuration();
}
- };
-
- SpellScript* GetSpellScript() const override
- {
- return new spell_pri_pain_and_suffering_proc_SpellScript;
}
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_pri_pain_and_suffering_proc::HandleEffectScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
};
// -47540 - Penance
-class spell_pri_penance : public SpellScriptLoader
+class spell_pri_penance : public SpellScript
{
- public:
- spell_pri_penance() : SpellScriptLoader("spell_pri_penance") { }
-
- class spell_pri_penance_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_pri_penance_SpellScript);
+ PrepareSpellScript(spell_pri_penance);
- bool Load() override
- {
- return GetCaster()->GetTypeId() == TYPEID_PLAYER;
- }
-
- bool Validate(SpellInfo const* spellInfo) override
- {
- SpellInfo const* firstRankSpellInfo = sSpellMgr->GetSpellInfo(SPELL_PRIEST_PENANCE_R1);
- if (!firstRankSpellInfo)
- return false;
+ bool Load() override
+ {
+ return GetCaster()->GetTypeId() == TYPEID_PLAYER;
+ }
- // can't use other spell than this penance due to spell_ranks dependency
- if (!spellInfo->IsRankOf(firstRankSpellInfo))
- return false;
+ bool Validate(SpellInfo const* spellInfo) override
+ {
+ SpellInfo const* firstRankSpellInfo = sSpellMgr->GetSpellInfo(SPELL_PRIEST_PENANCE_R1);
+ if (!firstRankSpellInfo)
+ return false;
- uint8 rank = spellInfo->GetRank();
- if (!sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_DAMAGE, rank, true))
- return false;
- if (!sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_HEAL, rank, true))
- return false;
+ // can't use other spell than this penance due to spell_ranks dependency
+ if (!spellInfo->IsRankOf(firstRankSpellInfo))
+ return false;
- return true;
- }
+ uint8 rank = spellInfo->GetRank();
+ if (!sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_DAMAGE, rank, true))
+ return false;
+ if (!sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_HEAL, rank, true))
+ return false;
- void HandleDummy(SpellEffIndex /*effIndex*/)
- {
- Unit* caster = GetCaster();
- if (Unit* unitTarget = GetHitUnit())
- {
- if (!unitTarget->IsAlive())
- return;
+ return true;
+ }
- uint8 rank = GetSpellInfo()->GetRank();
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ if (Unit* unitTarget = GetHitUnit())
+ {
+ if (!unitTarget->IsAlive())
+ return;
- if (caster->IsFriendlyTo(unitTarget))
- caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_HEAL, rank), TRIGGERED_DISALLOW_PROC_EVENTS);
- else
- caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_DAMAGE, rank), TRIGGERED_DISALLOW_PROC_EVENTS);
- }
- }
+ uint8 rank = GetSpellInfo()->GetRank();
- SpellCastResult CheckCast()
- {
- Player* caster = GetCaster()->ToPlayer();
- if (Unit* target = GetExplTargetUnit())
- if (!caster->IsFriendlyTo(target))
- {
- if (!caster->IsValidAttackTarget(target))
- return SPELL_FAILED_BAD_TARGETS;
- if (!caster->isInFront(target))
- return SPELL_FAILED_UNIT_NOT_INFRONT;
- }
- return SPELL_CAST_OK;
- }
+ if (caster->IsFriendlyTo(unitTarget))
+ caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_HEAL, rank), TRIGGERED_DISALLOW_PROC_EVENTS);
+ else
+ caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_DAMAGE, rank), TRIGGERED_DISALLOW_PROC_EVENTS);
+ }
+ }
- void Register() override
+ SpellCastResult CheckCast()
+ {
+ Player* caster = GetCaster()->ToPlayer();
+ if (Unit* target = GetExplTargetUnit())
+ if (!caster->IsFriendlyTo(target))
{
- OnEffectHitTarget += SpellEffectFn(spell_pri_penance_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
- OnCheckCast += SpellCheckCastFn(spell_pri_penance_SpellScript::CheckCast);
+ if (!caster->IsValidAttackTarget(target))
+ return SPELL_FAILED_BAD_TARGETS;
+ if (!caster->isInFront(target))
+ return SPELL_FAILED_UNIT_NOT_INFRONT;
}
- };
+ return SPELL_CAST_OK;
+ }
- SpellScript* GetSpellScript() const override
- {
- return new spell_pri_penance_SpellScript;
- }
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_pri_penance::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ OnCheckCast += SpellCheckCastFn(spell_pri_penance::CheckCast);
+ }
};
// -17 - Power Word: Shield
-class spell_pri_power_word_shield : public SpellScriptLoader
+class spell_pri_power_word_shield : public SpellScript
{
- public:
- spell_pri_power_word_shield() : SpellScriptLoader("spell_pri_power_word_shield") { }
+ PrepareSpellScript(spell_pri_power_word_shield);
- class spell_pri_power_word_shield_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_pri_power_word_shield_SpellScript);
+ bool Validate(SpellInfo const* spellInfo) override
+ {
+ return ValidateSpellInfo({ spellInfo->ExcludeTargetAuraSpell });
+ }
- bool Validate(SpellInfo const* spellInfo) override
- {
- return ValidateSpellInfo({ spellInfo->ExcludeTargetAuraSpell });
- }
+ void WeakenSoul()
+ {
+ if (Unit* target = GetHitUnit())
+ GetCaster()->CastSpell(target, GetSpellInfo()->ExcludeTargetAuraSpell, true);
+ }
- void WeakenSoul()
- {
- if (Unit* target = GetHitUnit())
- GetCaster()->CastSpell(target, GetSpellInfo()->ExcludeTargetAuraSpell, true);
- }
+ void Register() override
+ {
+ AfterHit += SpellHitFn(spell_pri_power_word_shield::WeakenSoul);
+ }
+};
- void Register() override
- {
- AfterHit += SpellHitFn(spell_pri_power_word_shield_SpellScript::WeakenSoul);
- }
- };
+class spell_pri_power_word_shield_aura : public AuraScript
+{
+ PrepareAuraScript(spell_pri_power_word_shield_aura);
- SpellScript* GetSpellScript() const override
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
{
- return new spell_pri_power_word_shield_SpellScript();
- }
+ SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED,
+ SPELL_PRIEST_REFLECTIVE_SHIELD_R1
+ });
+ }
- class spell_pri_power_word_shield_AuraScript : public AuraScript
+ void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated)
+ {
+ canBeRecalculated = false;
+ if (Unit* caster = GetCaster())
{
- PrepareAuraScript(spell_pri_power_word_shield_AuraScript);
+ // +80.68% from sp bonus
+ float bonus = 0.8068f;
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo(
- {
- SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED,
- SPELL_PRIEST_REFLECTIVE_SHIELD_R1
- });
- }
+ // Borrowed Time
+ if (AuraEffect const* borrowedTime = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_BORROWED_TIME, EFFECT_1))
+ bonus += CalculatePct(1.0f, borrowedTime->GetAmount());
- void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated)
- {
- canBeRecalculated = false;
- if (Unit* caster = GetCaster())
- {
- // +80.68% from sp bonus
- float bonus = 0.8068f;
-
- // Borrowed Time
- if (AuraEffect const* borrowedTime = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_BORROWED_TIME, EFFECT_1))
- bonus += CalculatePct(1.0f, borrowedTime->GetAmount());
-
- bonus *= caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask());
-
- // Improved PW: Shield: its weird having a SPELLMOD_ALL_EFFECTS here but its blizzards doing :)
- // Improved PW: Shield is only applied at the spell healing bonus because it was already applied to the base value in CalculateSpellDamage
- bonus = caster->ApplyEffectModifiers(GetSpellInfo(), aurEff->GetEffIndex(), bonus);
- bonus *= caster->CalculateSpellpowerCoefficientLevelPenalty(GetSpellInfo());
-
- amount += int32(bonus);
-
- // Twin Disciplines
- if (AuraEffect const* twinDisciplines = caster->GetAuraEffect(SPELL_AURA_ADD_PCT_MODIFIER, SPELLFAMILY_PRIEST, 0x400000, 0, 0, GetCasterGUID()))
- AddPct(amount, twinDisciplines->GetAmount());
-
- // Focused Power
- if (AuraEffect const* focusedPower = caster->GetAuraEffect(SPELL_AURA_MOD_HEALING_DONE_PERCENT, SPELLFAMILY_PRIEST, PRIEST_ICON_ID_FOCUSED_POWER, EFFECT_2))
- AddPct(amount, focusedPower->GetAmount());
-
- // Arena - Dampening
- if (AuraEffect const* auraEffArenaDampening = caster->GetAuraEffect(SPELL_GENERIC_ARENA_DAMPENING, EFFECT_0))
- AddPct(amount, auraEffArenaDampening->GetAmount());
- // Battleground - Dampening
- else if (AuraEffect const* auraEffBattlegroudDampening = caster->GetAuraEffect(SPELL_GENERIC_BATTLEGROUND_DAMPENING, EFFECT_0))
- AddPct(amount, auraEffBattlegroudDampening->GetAmount());
-
- // ICC buff
- if (AuraEffect const* auraStrengthOfWrynn = caster->GetAuraEffect(SPELL_AURA_MOD_HEALING_DONE_PERCENT, SPELLFAMILY_GENERIC, SPELL_ICON_ID_STRENGTH_OF_WRYNN, EFFECT_2))
- AddPct(amount, auraStrengthOfWrynn->GetAmount());
- else if (AuraEffect const* auraHellscreamsWarsong = caster->GetAuraEffect(SPELL_AURA_MOD_HEALING_DONE_PERCENT, SPELLFAMILY_GENERIC, SPELL_ICON_ID_HELLSCREAM_WARSONG, EFFECT_2))
- AddPct(amount, auraHellscreamsWarsong->GetAmount());
- }
- }
+ bonus *= caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask());
- void ReflectDamage(AuraEffect* aurEff, DamageInfo& dmgInfo, uint32& absorbAmount)
- {
- Unit* target = GetTarget();
- if (dmgInfo.GetAttacker() == target)
- return;
+ // Improved PW: Shield: its weird having a SPELLMOD_ALL_EFFECTS here but its blizzards doing :)
+ // Improved PW: Shield is only applied at the spell healing bonus because it was already applied to the base value in CalculateSpellDamage
+ bonus = caster->ApplyEffectModifiers(GetSpellInfo(), aurEff->GetEffIndex(), bonus);
+ bonus *= caster->CalculateSpellpowerCoefficientLevelPenalty(GetSpellInfo());
- // Don't try to reflect the reflect spell
- if (dmgInfo.GetSpellInfo() && dmgInfo.GetSpellInfo()->Id == SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED)
- return;
+ amount += int32(bonus);
- if (AuraEffect* talentAurEff = target->GetAuraEffectOfRankedSpell(SPELL_PRIEST_REFLECTIVE_SHIELD_R1, EFFECT_0))
- {
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(CalculatePct(absorbAmount, talentAurEff->GetAmount()));
- target->CastSpell(dmgInfo.GetAttacker(), SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED, args);
- }
- }
+ // Twin Disciplines
+ if (AuraEffect const* twinDisciplines = caster->GetAuraEffect(SPELL_AURA_ADD_PCT_MODIFIER, SPELLFAMILY_PRIEST, 0x400000, 0, 0, GetCasterGUID()))
+ AddPct(amount, twinDisciplines->GetAmount());
- void Register() override
- {
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_power_word_shield_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
- AfterEffectAbsorb += AuraEffectAbsorbFn(spell_pri_power_word_shield_AuraScript::ReflectDamage, EFFECT_0);
- }
- };
+ // Focused Power
+ if (AuraEffect const* focusedPower = caster->GetAuraEffect(SPELL_AURA_MOD_HEALING_DONE_PERCENT, SPELLFAMILY_PRIEST, PRIEST_ICON_ID_FOCUSED_POWER, EFFECT_2))
+ AddPct(amount, focusedPower->GetAmount());
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_power_word_shield_AuraScript();
- }
-};
+ // Arena - Dampening
+ if (AuraEffect const* auraEffArenaDampening = caster->GetAuraEffect(SPELL_GENERIC_ARENA_DAMPENING, EFFECT_0))
+ AddPct(amount, auraEffArenaDampening->GetAmount());
+ // Battleground - Dampening
+ else if (AuraEffect const* auraEffBattlegroudDampening = caster->GetAuraEffect(SPELL_GENERIC_BATTLEGROUND_DAMPENING, EFFECT_0))
+ AddPct(amount, auraEffBattlegroudDampening->GetAmount());
-// 33110 - Prayer of Mending Heal
-class spell_pri_prayer_of_mending_heal : public SpellScriptLoader
-{
- public:
- spell_pri_prayer_of_mending_heal() : SpellScriptLoader("spell_pri_prayer_of_mending_heal") { }
-
- class spell_pri_prayer_of_mending_heal_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_pri_prayer_of_mending_heal_SpellScript);
+ // ICC buff
+ if (AuraEffect const* auraStrengthOfWrynn = caster->GetAuraEffect(SPELL_AURA_MOD_HEALING_DONE_PERCENT, SPELLFAMILY_GENERIC, SPELL_ICON_ID_STRENGTH_OF_WRYNN, EFFECT_2))
+ AddPct(amount, auraStrengthOfWrynn->GetAmount());
+ else if (AuraEffect const* auraHellscreamsWarsong = caster->GetAuraEffect(SPELL_AURA_MOD_HEALING_DONE_PERCENT, SPELLFAMILY_GENERIC, SPELL_ICON_ID_HELLSCREAM_WARSONG, EFFECT_2))
+ AddPct(amount, auraHellscreamsWarsong->GetAmount());
+ }
+ }
- void HandleHeal(SpellEffIndex /*effIndex*/)
- {
- if (Unit* caster = GetOriginalCaster())
- {
- if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_PRIEST_T9_HEALING_2P, EFFECT_0))
- {
- int32 heal = GetHitHeal();
- AddPct(heal, aurEff->GetAmount());
- SetHitHeal(heal);
- }
- }
- }
+ void ReflectDamage(AuraEffect* aurEff, DamageInfo& dmgInfo, uint32& absorbAmount)
+ {
+ Unit* target = GetTarget();
+ if (dmgInfo.GetAttacker() == target)
+ return;
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_pri_prayer_of_mending_heal_SpellScript::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL);
- }
- };
+ // Don't try to reflect the reflect spell
+ if (dmgInfo.GetSpellInfo() && dmgInfo.GetSpellInfo()->Id == SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED)
+ return;
- SpellScript* GetSpellScript() const override
+ if (AuraEffect* talentAurEff = target->GetAuraEffectOfRankedSpell(SPELL_PRIEST_REFLECTIVE_SHIELD_R1, EFFECT_0))
{
- return new spell_pri_prayer_of_mending_heal_SpellScript();
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellBP0(CalculatePct(absorbAmount, talentAurEff->GetAmount()));
+ target->CastSpell(dmgInfo.GetAttacker(), SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED, args);
}
+ }
+
+ void Register() override
+ {
+ DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_power_word_shield_aura::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
+ AfterEffectAbsorb += AuraEffectAbsorbFn(spell_pri_power_word_shield_aura::ReflectDamage, EFFECT_0);
+ }
};
-// -139 - Renew
-class spell_pri_renew : public SpellScriptLoader
+// 33110 - Prayer of Mending Heal
+class spell_pri_prayer_of_mending_heal : public SpellScript
{
- public:
- spell_pri_renew() : SpellScriptLoader("spell_pri_renew") { }
+ PrepareSpellScript(spell_pri_prayer_of_mending_heal);
- class spell_pri_renew_AuraScript : public AuraScript
+ void HandleHeal(SpellEffIndex /*effIndex*/)
+ {
+ if (Unit* caster = GetOriginalCaster())
{
- PrepareAuraScript(spell_pri_renew_AuraScript);
-
- bool Load() override
+ if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_PRIEST_T9_HEALING_2P, EFFECT_0))
{
- return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER;
+ int32 heal = GetHitHeal();
+ AddPct(heal, aurEff->GetAmount());
+ SetHitHeal(heal);
}
+ }
+ }
- void HandleApplyEffect(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
- {
- Unit* caster = GetCaster();
- if (!caster)
- return;
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_pri_prayer_of_mending_heal::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL);
+ }
+};
- // Empowered Renew
- if (AuraEffect const* empoweredRenewAurEff = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_EMPOWERED_RENEW_TALENT, EFFECT_1))
- {
- int32 heal = aurEff->GetAmount();
- heal *= aurEff->GetTotalTicks();
+// -139 - Renew
+class spell_pri_renew : public AuraScript
+{
+ PrepareAuraScript(spell_pri_renew);
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(CalculatePct(heal, empoweredRenewAurEff->GetAmount()));
- caster->CastSpell(GetTarget(), SPELL_PRIEST_EMPOWERED_RENEW, args);
- }
- }
+ bool Load() override
+ {
+ return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER;
+ }
- void Register() override
- {
- OnEffectApply += AuraEffectApplyFn(spell_pri_renew_AuraScript::HandleApplyEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
- }
- };
+ void HandleApplyEffect(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* caster = GetCaster();
+ if (!caster)
+ return;
- AuraScript* GetAuraScript() const override
+ // Empowered Renew
+ if (AuraEffect const* empoweredRenewAurEff = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_EMPOWERED_RENEW_TALENT, EFFECT_1))
{
- return new spell_pri_renew_AuraScript();
+ int32 heal = aurEff->GetAmount();
+ heal *= aurEff->GetTotalTicks();
+
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellBP0(CalculatePct(heal, empoweredRenewAurEff->GetAmount()));
+ caster->CastSpell(GetTarget(), SPELL_PRIEST_EMPOWERED_RENEW, args);
}
+ }
+
+ void Register() override
+ {
+ OnEffectApply += AuraEffectApplyFn(spell_pri_renew::HandleApplyEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
+ }
};
// 57989 - Shadowfiend Death
-class spell_pri_shadowfiend_death : public SpellScriptLoader
+class spell_pri_shadowfiend_death : public AuraScript
{
- public:
- spell_pri_shadowfiend_death() : SpellScriptLoader("spell_pri_shadowfiend_death") { }
+ PrepareAuraScript(spell_pri_shadowfiend_death);
- class spell_pri_shadowfiend_death_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_shadowfiend_death_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_GLYPH_OF_SHADOWFIEND_MANA });
- }
-
- bool CheckProc(ProcEventInfo& eventInfo)
- {
- DamageInfo* damageInfo = eventInfo.GetDamageInfo();
- if (!damageInfo || !damageInfo->GetDamage())
- return false;
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_GLYPH_OF_SHADOWFIEND_MANA });
+ }
- Unit* shadowfiend = eventInfo.GetActionTarget();
- if (!shadowfiend->GetOwner())
- return false;
+ bool CheckProc(ProcEventInfo& eventInfo)
+ {
+ DamageInfo* damageInfo = eventInfo.GetDamageInfo();
+ if (!damageInfo || !damageInfo->GetDamage())
+ return false;
- return shadowfiend->HealthBelowPctDamaged(1, damageInfo->GetDamage());
- }
+ Unit* shadowfiend = eventInfo.GetActionTarget();
+ if (!shadowfiend->GetOwner())
+ return false;
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- Unit* caster = eventInfo.GetActionTarget()->GetOwner();
- caster->CastSpell(caster, SPELL_PRIEST_GLYPH_OF_SHADOWFIEND_MANA, aurEff);
- }
+ return shadowfiend->HealthBelowPctDamaged(1, damageInfo->GetDamage());
+ }
- void Register() override
- {
- DoCheckProc += AuraCheckProcFn(spell_pri_shadowfiend_death_AuraScript::CheckProc);
- OnEffectProc += AuraEffectProcFn(spell_pri_shadowfiend_death_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ Unit* caster = eventInfo.GetActionTarget()->GetOwner();
+ caster->CastSpell(caster, SPELL_PRIEST_GLYPH_OF_SHADOWFIEND_MANA, aurEff);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_shadowfiend_death_AuraScript();
- }
+ void Register() override
+ {
+ DoCheckProc += AuraCheckProcFn(spell_pri_shadowfiend_death::CheckProc);
+ OnEffectProc += AuraEffectProcFn(spell_pri_shadowfiend_death::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
};
// -32379 - Shadow Word Death
-class spell_pri_shadow_word_death : public SpellScriptLoader
+class spell_pri_shadow_word_death : public SpellScript
{
- public:
- spell_pri_shadow_word_death() : SpellScriptLoader("spell_pri_shadow_word_death") { }
-
- class spell_pri_shadow_word_death_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_pri_shadow_word_death_SpellScript);
+ PrepareSpellScript(spell_pri_shadow_word_death);
- void HandleDamage()
- {
- int32 damage = GetHitDamage();
+ void HandleDamage()
+ {
+ int32 damage = GetHitDamage();
- // Pain and Suffering reduces damage
- if (AuraEffect* aurEff = GetCaster()->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_PAIN_AND_SUFFERING, EFFECT_1))
- AddPct(damage, aurEff->GetAmount());
+ // Pain and Suffering reduces damage
+ if (AuraEffect* aurEff = GetCaster()->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_PAIN_AND_SUFFERING, EFFECT_1))
+ AddPct(damage, aurEff->GetAmount());
- CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
- args.AddSpellBP0(damage);
- GetCaster()->CastSpell(GetCaster(), SPELL_PRIEST_SHADOW_WORD_DEATH, args);
- }
-
- void Register() override
- {
- OnHit += SpellHitFn(spell_pri_shadow_word_death_SpellScript::HandleDamage);
- }
- };
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.AddSpellBP0(damage);
+ GetCaster()->CastSpell(GetCaster(), SPELL_PRIEST_SHADOW_WORD_DEATH, args);
+ }
- SpellScript* GetSpellScript() const override
- {
- return new spell_pri_shadow_word_death_SpellScript();
- }
+ void Register() override
+ {
+ OnHit += SpellHitFn(spell_pri_shadow_word_death::HandleDamage);
+ }
};
// 15286 - Vampiric Embrace
-class spell_pri_vampiric_embrace : public SpellScriptLoader
+class spell_pri_vampiric_embrace : public AuraScript
{
- public:
- spell_pri_vampiric_embrace() : SpellScriptLoader("spell_pri_vampiric_embrace") { }
+ PrepareAuraScript(spell_pri_vampiric_embrace);
- class spell_pri_vampiric_embrace_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_vampiric_embrace_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL });
- }
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL });
+ }
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- DamageInfo* damageInfo = eventInfo.GetDamageInfo();
- if (!damageInfo || !damageInfo->GetDamage())
- return;
-
- int32 selfHeal = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount());
- int32 partyHeal = selfHeal / 5;
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(partyHeal);
- args.AddSpellMod(SPELLVALUE_BASE_POINT1, selfHeal);
- eventInfo.GetActor()->CastSpell(nullptr, SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL, args);
- }
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ DamageInfo* damageInfo = eventInfo.GetDamageInfo();
+ if (!damageInfo || !damageInfo->GetDamage())
+ return;
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pri_vampiric_embrace_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ int32 selfHeal = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount());
+ int32 partyHeal = selfHeal / 5;
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellBP0(partyHeal);
+ args.AddSpellMod(SPELLVALUE_BASE_POINT1, selfHeal);
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL, args);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_vampiric_embrace_AuraScript();
- }
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_pri_vampiric_embrace::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
};
// -34914 - Vampiric Touch
-class spell_pri_vampiric_touch : public SpellScriptLoader
+class spell_pri_vampiric_touch : public AuraScript
{
- public:
- spell_pri_vampiric_touch() : SpellScriptLoader("spell_pri_vampiric_touch") { }
+ PrepareAuraScript(spell_pri_vampiric_touch);
- class spell_pri_vampiric_touch_AuraScript : public AuraScript
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
{
- PrepareAuraScript(spell_pri_vampiric_touch_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo(
- {
- SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL,
- SPELL_REPLENISHMENT
- });
- }
+ SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL,
+ SPELL_REPLENISHMENT
+ });
+ }
- bool CheckDummy(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
- {
- return false;
- }
+ bool CheckDummy(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
+ {
+ return false;
+ }
- void HandleDispel(DispelInfo* /*dispelInfo*/)
+ void HandleDispel(DispelInfo* /*dispelInfo*/)
+ {
+ if (Unit* caster = GetCaster())
+ {
+ if (Unit* target = GetUnitOwner())
{
- if (Unit* caster = GetCaster())
+ if (AuraEffect const* aurEff = GetEffect(EFFECT_1))
{
- if (Unit* target = GetUnitOwner())
- {
- if (AuraEffect const* aurEff = GetEffect(EFFECT_1))
- {
- // backfire damage
- int32 bp = aurEff->GetAmount();
- bp = target->SpellDamageBonusTaken(caster, aurEff->GetSpellInfo(), bp, DOT);
- bp *= 8;
-
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(bp);
- caster->CastSpell(target, SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL, args);
- }
- }
- }
- }
+ // backfire damage
+ int32 bp = aurEff->GetAmount();
+ bp = target->SpellDamageBonusTaken(caster, aurEff->GetSpellInfo(), bp, DOT);
+ bp *= 8;
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(nullptr, SPELL_REPLENISHMENT, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellBP0(bp);
+ caster->CastSpell(target, SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL, args);
+ }
}
+ }
+ }
- void Register() override
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_pri_vampiric_touch_AuraScript::CheckDummy, EFFECT_0, SPELL_AURA_DUMMY);
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_REPLENISHMENT, aurEff);
+ }
- AfterDispel += AuraDispelFn(spell_pri_vampiric_touch_AuraScript::HandleDispel);
- OnEffectProc += AuraEffectProcFn(spell_pri_vampiric_touch_AuraScript::HandleProc, EFFECT_2, SPELL_AURA_DUMMY);
- }
- };
+ void Register() override
+ {
+ DoCheckEffectProc += AuraCheckEffectProcFn(spell_pri_vampiric_touch::CheckDummy, EFFECT_0, SPELL_AURA_DUMMY);
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_vampiric_touch_AuraScript();
- }
+ AfterDispel += AuraDispelFn(spell_pri_vampiric_touch::HandleDispel);
+ OnEffectProc += AuraEffectProcFn(spell_pri_vampiric_touch::HandleProc, EFFECT_2, SPELL_AURA_DUMMY);
+ }
};
// 28809 - Greater Heal
-class spell_pri_t3_4p_bonus : public SpellScriptLoader
+class spell_pri_t3_4p_bonus : public AuraScript
{
- public:
- spell_pri_t3_4p_bonus() : SpellScriptLoader("spell_pri_t3_4p_bonus") { }
-
- class spell_pri_t3_4p_bonus_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_t3_4p_bonus_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_ARMOR_OF_FAITH });
- }
+ PrepareAuraScript(spell_pri_t3_4p_bonus);
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_PRIEST_ARMOR_OF_FAITH, aurEff);
- }
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_ARMOR_OF_FAITH });
+ }
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pri_t3_4p_bonus_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_PRIEST_ARMOR_OF_FAITH, aurEff);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_t3_4p_bonus_AuraScript();
- }
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_pri_t3_4p_bonus::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
};
// 37594 - Greater Heal Refund
-class spell_pri_t5_heal_2p_bonus : public SpellScriptLoader
+class spell_pri_t5_heal_2p_bonus : public AuraScript
{
- public:
- spell_pri_t5_heal_2p_bonus() : SpellScriptLoader("spell_pri_t5_heal_2p_bonus") { }
-
- class spell_pri_t5_heal_2p_bonus_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_t5_heal_2p_bonus_AuraScript);
+ PrepareAuraScript(spell_pri_t5_heal_2p_bonus);
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_ITEM_EFFICIENCY });
- }
-
- bool CheckProc(ProcEventInfo& eventInfo)
- {
- if (HealInfo* healInfo = eventInfo.GetHealInfo())
- if (Unit* healTarget = healInfo->GetTarget())
- if (healInfo->GetEffectiveHeal())
- if (healTarget->GetHealth() >= healTarget->GetMaxHealth())
- return true;
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_ITEM_EFFICIENCY });
+ }
- return false;
- }
+ bool CheckProc(ProcEventInfo& eventInfo)
+ {
+ if (HealInfo* healInfo = eventInfo.GetHealInfo())
+ if (Unit* healTarget = healInfo->GetTarget())
+ if (healInfo->GetEffectiveHeal())
+ if (healTarget->GetHealth() >= healTarget->GetMaxHealth())
+ return true;
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
- {
- PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_PRIEST_ITEM_EFFICIENCY, aurEff);
- }
+ return false;
+ }
- void Register() override
- {
- DoCheckProc += AuraCheckProcFn(spell_pri_t5_heal_2p_bonus_AuraScript::CheckProc);
- OnEffectProc += AuraEffectProcFn(spell_pri_t5_heal_2p_bonus_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
- }
- };
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
+ {
+ PreventDefaultAction();
+ GetTarget()->CastSpell(GetTarget(), SPELL_PRIEST_ITEM_EFFICIENCY, aurEff);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_t5_heal_2p_bonus_AuraScript();
- }
+ void Register() override
+ {
+ DoCheckProc += AuraCheckProcFn(spell_pri_t5_heal_2p_bonus::CheckProc);
+ OnEffectProc += AuraEffectProcFn(spell_pri_t5_heal_2p_bonus::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
+ }
};
// 70770 - Item - Priest T10 Healer 2P Bonus
-class spell_pri_t10_heal_2p_bonus : public SpellScriptLoader
+class spell_pri_t10_heal_2p_bonus : public AuraScript
{
- public:
- spell_pri_t10_heal_2p_bonus() : SpellScriptLoader("spell_pri_t10_heal_2p_bonus") { }
+ PrepareAuraScript(spell_pri_t10_heal_2p_bonus);
- class spell_pri_t10_heal_2p_bonus_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_pri_t10_heal_2p_bonus_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_BLESSED_HEALING });
- }
-
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_BLESSED_HEALING });
+ }
- HealInfo* healInfo = eventInfo.GetHealInfo();
- if (!healInfo || !healInfo->GetHeal())
- return;
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
- SpellInfo const* spellInfo = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_BLESSED_HEALING);
- int32 amount = CalculatePct(static_cast<int32>(healInfo->GetHeal()), aurEff->GetAmount());
+ HealInfo* healInfo = eventInfo.GetHealInfo();
+ if (!healInfo || !healInfo->GetHeal())
+ return;
- ASSERT(spellInfo->GetMaxTicks() > 0);
- amount /= spellInfo->GetMaxTicks();
+ SpellInfo const* spellInfo = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_BLESSED_HEALING);
+ int32 amount = CalculatePct(static_cast<int32>(healInfo->GetHeal()), aurEff->GetAmount());
- Unit* caster = eventInfo.GetActor();
- Unit* target = eventInfo.GetProcTarget();
+ ASSERT(spellInfo->GetMaxTicks() > 0);
+ amount /= spellInfo->GetMaxTicks();
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(amount);
- caster->CastSpell(target, SPELL_PRIEST_BLESSED_HEALING, args);
- }
+ Unit* caster = eventInfo.GetActor();
+ Unit* target = eventInfo.GetProcTarget();
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pri_t10_heal_2p_bonus_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellBP0(amount);
+ caster->CastSpell(target, SPELL_PRIEST_BLESSED_HEALING, args);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_pri_t10_heal_2p_bonus_AuraScript();
- }
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_pri_t10_heal_2p_bonus::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
};
// 10060 - Power Infusion
@@ -1593,35 +1269,35 @@ class spell_pri_power_infusion : public SpellScript
void AddSC_priest_spell_scripts()
{
- new spell_pri_aq_3p_bonus();
- new spell_pri_blessed_recovery();
- new spell_pri_body_and_soul();
- new spell_pri_circle_of_healing();
- new spell_pri_divine_aegis();
- new spell_pri_divine_hymn();
- new spell_pri_glyph_of_dispel_magic();
- new spell_pri_glyph_of_prayer_of_healing();
- new spell_pri_guardian_spirit();
- new spell_pri_hymn_of_hope();
- new spell_pri_imp_shadowform();
- new spell_pri_improved_spirit_tap();
- new spell_pri_item_t6_trinket();
+ RegisterSpellScript(spell_pri_aq_3p_bonus);
+ RegisterSpellScript(spell_pri_blessed_recovery);
+ RegisterSpellScript(spell_pri_body_and_soul);
+ RegisterSpellScript(spell_pri_circle_of_healing);
+ RegisterSpellScript(spell_pri_divine_aegis);
+ RegisterSpellScript(spell_pri_divine_hymn);
+ RegisterSpellScript(spell_pri_glyph_of_dispel_magic);
+ RegisterSpellScript(spell_pri_glyph_of_prayer_of_healing);
+ RegisterSpellScript(spell_pri_guardian_spirit);
+ RegisterSpellScript(spell_pri_hymn_of_hope);
+ RegisterSpellScript(spell_pri_imp_shadowform);
+ RegisterSpellScript(spell_pri_improved_spirit_tap);
+ RegisterSpellScript(spell_pri_item_t6_trinket);
RegisterSpellScript(spell_pri_lightwell);
- new spell_pri_lightwell_renew();
- new spell_pri_mana_leech();
- new spell_pri_mind_sear();
- new spell_pri_pain_and_suffering_dummy();
- new spell_pri_pain_and_suffering_proc();
- new spell_pri_penance();
- new spell_pri_power_word_shield();
- new spell_pri_prayer_of_mending_heal();
- new spell_pri_renew();
- new spell_pri_shadowfiend_death();
- new spell_pri_shadow_word_death();
- new spell_pri_vampiric_embrace();
- new spell_pri_vampiric_touch();
- new spell_pri_t3_4p_bonus();
- new spell_pri_t5_heal_2p_bonus();
- new spell_pri_t10_heal_2p_bonus();
+ RegisterSpellScript(spell_pri_lightwell_renew);
+ RegisterSpellScript(spell_pri_mana_leech);
+ RegisterSpellScript(spell_pri_mind_sear);
+ RegisterSpellScript(spell_pri_pain_and_suffering_dummy);
+ RegisterSpellScript(spell_pri_pain_and_suffering_proc);
+ RegisterSpellScript(spell_pri_penance);
+ RegisterSpellAndAuraScriptPair(spell_pri_power_word_shield, spell_pri_power_word_shield_aura);
+ RegisterSpellScript(spell_pri_prayer_of_mending_heal);
+ RegisterSpellScript(spell_pri_renew);
+ RegisterSpellScript(spell_pri_shadowfiend_death);
+ RegisterSpellScript(spell_pri_shadow_word_death);
+ RegisterSpellScript(spell_pri_vampiric_embrace);
+ RegisterSpellScript(spell_pri_vampiric_touch);
+ RegisterSpellScript(spell_pri_t3_4p_bonus);
+ RegisterSpellScript(spell_pri_t5_heal_2p_bonus);
+ RegisterSpellScript(spell_pri_t10_heal_2p_bonus);
RegisterSpellScript(spell_pri_power_infusion);
}