diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-03-11 15:28:25 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-03-11 15:28:25 +0100 |
| commit | 54974d3113e694f6ccd1299d23ff1a36006f83df (patch) | |
| tree | a15dc1548e5b0f5003ec6c2f0f8e101919b1277c /src | |
| parent | b42e5d4251d1e741882985fc36be1da91a27e800 (diff) | |
Scripts/Spells: Update paladin scripts to new register model
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/scripts/Spells/spell_paladin.cpp | 383 |
1 files changed, 164 insertions, 219 deletions
diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index ba66b8f99d4..3305bbde815 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -687,41 +687,30 @@ class spell_pal_fist_of_justice : public AuraScript }; // -85043 - Grand Crusader -class spell_pal_grand_crusader : public SpellScriptLoader +class spell_pal_grand_crusader : public AuraScript { - public: - spell_pal_grand_crusader() : SpellScriptLoader("spell_pal_grand_crusader") { } - - class spell_pal_grand_crusader_AuraScript : public AuraScript - { - PrepareAuraScript(spell_pal_grand_crusader_AuraScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_AVENGERS_SHIELD }); - } + PrepareAuraScript(spell_pal_grand_crusader); - bool CheckProc(ProcEventInfo& /*eventInfo*/) - { - return GetTarget()->GetTypeId() == TYPEID_PLAYER; - } + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PALADIN_AVENGERS_SHIELD }); + } - void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/) - { - GetTarget()->GetSpellHistory()->ResetCooldown(SPELL_PALADIN_AVENGERS_SHIELD, true); - } + bool CheckProc(ProcEventInfo& /*eventInfo*/) + { + return GetTarget()->GetTypeId() == TYPEID_PLAYER; + } - void Register() override - { - DoCheckProc += AuraCheckProcFn(spell_pal_grand_crusader_AuraScript::CheckProc); - OnEffectProc += AuraEffectProcFn(spell_pal_grand_crusader_AuraScript::HandleEffectProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); - } - }; + void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/) + { + GetTarget()->GetSpellHistory()->ResetCooldown(SPELL_PALADIN_AVENGERS_SHIELD, true); + } - AuraScript* GetAuraScript() const override - { - return new spell_pal_grand_crusader_AuraScript(); - } + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_pal_grand_crusader::CheckProc); + OnEffectProc += AuraEffectProcFn(spell_pal_grand_crusader::HandleEffectProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } }; // 54968 - Glyph of Holy Light @@ -773,54 +762,43 @@ struct spell_pal_hammer_of_the_righteous : public SpellScript }; // 6940 - Hand of Sacrifice -class spell_pal_hand_of_sacrifice : public SpellScriptLoader +class spell_pal_hand_of_sacrifice : public AuraScript { - public: - spell_pal_hand_of_sacrifice() : SpellScriptLoader("spell_pal_hand_of_sacrifice") { } - - class spell_pal_hand_of_sacrifice_AuraScript : public AuraScript - { - PrepareAuraScript(spell_pal_hand_of_sacrifice_AuraScript); - - public: - spell_pal_hand_of_sacrifice_AuraScript() - { - remainingAmount = 0; - } - - private: - int32 remainingAmount; + PrepareAuraScript(spell_pal_hand_of_sacrifice); - bool Load() override - { - if (Unit* caster = GetCaster()) - { - remainingAmount = caster->GetMaxHealth(); - return true; - } - return false; - } +public: + spell_pal_hand_of_sacrifice() + { + remainingAmount = 0; + } - void Split(AuraEffect* /*aurEff*/, DamageInfo & /*dmgInfo*/, uint32 & splitAmount) - { - remainingAmount -= splitAmount; +private: + int32 remainingAmount; - if (remainingAmount <= 0) - { - GetTarget()->RemoveAura(SPELL_PALADIN_HAND_OF_SACRIFICE); - } - } + bool Load() override + { + if (Unit* caster = GetCaster()) + { + remainingAmount = caster->GetMaxHealth(); + return true; + } + return false; + } - void Register() override - { - OnEffectSplit += AuraEffectSplitFn(spell_pal_hand_of_sacrifice_AuraScript::Split, EFFECT_0); - } - }; + void Split(AuraEffect* /*aurEff*/, DamageInfo & /*dmgInfo*/, uint32 & splitAmount) + { + remainingAmount -= splitAmount; - AuraScript* GetAuraScript() const override + if (remainingAmount <= 0) { - return new spell_pal_hand_of_sacrifice_AuraScript(); + GetTarget()->RemoveAura(SPELL_PALADIN_HAND_OF_SACRIFICE); } + } + + void Register() override + { + OnEffectSplit += AuraEffectSplitFn(spell_pal_hand_of_sacrifice::Split, EFFECT_0); + } }; // 54149 - Infusion of Light @@ -1216,68 +1194,57 @@ class spell_pal_lay_on_hands : public SpellScript }; // 53651 - Light's Beacon - Beacon of Light -class spell_pal_light_s_beacon : public SpellScriptLoader +class spell_pal_light_s_beacon : public AuraScript { - public: - spell_pal_light_s_beacon() : SpellScriptLoader("spell_pal_light_s_beacon") { } - - class spell_pal_light_s_beacon_AuraScript : public AuraScript - { - PrepareAuraScript(spell_pal_light_s_beacon_AuraScript); + PrepareAuraScript(spell_pal_light_s_beacon); - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_BEACON_OF_LIGHT, SPELL_PALADIN_BEACON_OF_LIGHT_HEAL }); - } + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PALADIN_BEACON_OF_LIGHT, SPELL_PALADIN_BEACON_OF_LIGHT_HEAL }); + } - bool CheckProc(ProcEventInfo& eventInfo) - { - if (!eventInfo.GetActionTarget()) - return false; - if (eventInfo.GetActionTarget()->HasAura(SPELL_PALADIN_BEACON_OF_LIGHT, eventInfo.GetActor()->GetGUID())) - return false; - return true; - } + bool CheckProc(ProcEventInfo& eventInfo) + { + if (!eventInfo.GetActionTarget()) + return false; + if (eventInfo.GetActionTarget()->HasAura(SPELL_PALADIN_BEACON_OF_LIGHT, eventInfo.GetActor()->GetGUID())) + return false; + return true; + } - void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) - { - PreventDefaultAction(); + void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) + { + PreventDefaultAction(); - HealInfo* healInfo = eventInfo.GetHealInfo(); - if (!healInfo || !healInfo->GetHeal()) - return; + HealInfo* healInfo = eventInfo.GetHealInfo(); + if (!healInfo || !healInfo->GetHeal()) + return; - uint32 heal = CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()); + uint32 heal = CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()); - Unit::AuraList const& auras = GetCaster()->GetSingleCastAuras(); - for (Unit::AuraList::const_iterator itr = auras.begin(); itr != auras.end(); ++itr) + Unit::AuraList const& auras = GetCaster()->GetSingleCastAuras(); + for (Unit::AuraList::const_iterator itr = auras.begin(); itr != auras.end(); ++itr) + { + if ((*itr)->GetId() == SPELL_PALADIN_BEACON_OF_LIGHT) + { + std::vector<AuraApplication*> applications; + (*itr)->GetApplicationVector(applications); + if (!applications.empty()) { - if ((*itr)->GetId() == SPELL_PALADIN_BEACON_OF_LIGHT) - { - std::vector<AuraApplication*> applications; - (*itr)->GetApplicationVector(applications); - if (!applications.empty()) - { - CastSpellExtraArgs args(aurEff); - args.AddSpellMod(SPELLVALUE_BASE_POINT0, heal); - eventInfo.GetActor()->CastSpell(applications.front()->GetTarget(), SPELL_PALADIN_BEACON_OF_LIGHT_HEAL, args); - } - return; - } + CastSpellExtraArgs args(aurEff); + args.AddSpellMod(SPELLVALUE_BASE_POINT0, heal); + eventInfo.GetActor()->CastSpell(applications.front()->GetTarget(), SPELL_PALADIN_BEACON_OF_LIGHT_HEAL, args); } + return; } - - void Register() override - { - DoCheckProc += AuraCheckProcFn(spell_pal_light_s_beacon_AuraScript::CheckProc); - OnEffectProc += AuraEffectProcFn(spell_pal_light_s_beacon_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); - } - }; - - AuraScript* GetAuraScript() const override - { - return new spell_pal_light_s_beacon_AuraScript(); } + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_pal_light_s_beacon::CheckProc); + OnEffectProc += AuraEffectProcFn(spell_pal_light_s_beacon::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } }; // 122773 - Light's Hammer @@ -1443,119 +1410,97 @@ class spell_pal_templar_s_verdict : public SpellScript }; // 28789 - Holy Power -class spell_pal_t3_6p_bonus : public SpellScriptLoader +class spell_pal_t3_6p_bonus : public AuraScript { - public: - spell_pal_t3_6p_bonus() : SpellScriptLoader("spell_pal_t3_6p_bonus") { } + PrepareAuraScript(spell_pal_t3_6p_bonus); - class spell_pal_t3_6p_bonus_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( { - PrepareAuraScript(spell_pal_t3_6p_bonus_AuraScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo( - { - SPELL_PALADIN_HOLY_POWER_ARMOR, - SPELL_PALADIN_HOLY_POWER_ATTACK_POWER, - SPELL_PALADIN_HOLY_POWER_SPELL_POWER, - SPELL_PALADIN_HOLY_POWER_MP5 - }); - } - - void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) - { - PreventDefaultAction(); - - uint32 spellId; - Unit* caster = eventInfo.GetActor(); - Unit* target = eventInfo.GetProcTarget(); - - switch (target->GetClass()) - { - case CLASS_PALADIN: - case CLASS_PRIEST: - case CLASS_SHAMAN: - case CLASS_DRUID: - spellId = SPELL_PALADIN_HOLY_POWER_MP5; - break; - case CLASS_MAGE: - case CLASS_WARLOCK: - spellId = SPELL_PALADIN_HOLY_POWER_SPELL_POWER; - break; - case CLASS_HUNTER: - case CLASS_ROGUE: - spellId = SPELL_PALADIN_HOLY_POWER_ATTACK_POWER; - break; - case CLASS_WARRIOR: - spellId = SPELL_PALADIN_HOLY_POWER_ARMOR; - break; - default: - return; - } + SPELL_PALADIN_HOLY_POWER_ARMOR, + SPELL_PALADIN_HOLY_POWER_ATTACK_POWER, + SPELL_PALADIN_HOLY_POWER_SPELL_POWER, + SPELL_PALADIN_HOLY_POWER_MP5 + }); + } - caster->CastSpell(target, spellId, aurEff); - } + void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) + { + PreventDefaultAction(); - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_pal_t3_6p_bonus_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); - } - }; + uint32 spellId; + Unit* caster = eventInfo.GetActor(); + Unit* target = eventInfo.GetProcTarget(); - AuraScript* GetAuraScript() const override + switch (target->GetClass()) { - return new spell_pal_t3_6p_bonus_AuraScript(); + case CLASS_PALADIN: + case CLASS_PRIEST: + case CLASS_SHAMAN: + case CLASS_DRUID: + spellId = SPELL_PALADIN_HOLY_POWER_MP5; + break; + case CLASS_MAGE: + case CLASS_WARLOCK: + spellId = SPELL_PALADIN_HOLY_POWER_SPELL_POWER; + break; + case CLASS_HUNTER: + case CLASS_ROGUE: + spellId = SPELL_PALADIN_HOLY_POWER_ATTACK_POWER; + break; + case CLASS_WARRIOR: + spellId = SPELL_PALADIN_HOLY_POWER_ARMOR; + break; + default: + return; } + + caster->CastSpell(target, spellId, aurEff); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_pal_t3_6p_bonus::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } }; // 64890 - Item - Paladin T8 Holy 2P Bonus -class spell_pal_t8_2p_bonus : public SpellScriptLoader +class spell_pal_t8_2p_bonus : public AuraScript { - public: - spell_pal_t8_2p_bonus() : SpellScriptLoader("spell_pal_t8_2p_bonus") { } - - class spell_pal_t8_2p_bonus_AuraScript : public AuraScript - { - PrepareAuraScript(spell_pal_t8_2p_bonus_AuraScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_PALADIN_HOLY_MENDING }); - } + PrepareAuraScript(spell_pal_t8_2p_bonus); - void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) - { - PreventDefaultAction(); + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PALADIN_HOLY_MENDING }); + } - HealInfo* healInfo = eventInfo.GetHealInfo(); - if (!healInfo || !healInfo->GetHeal()) - return; + void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) + { + PreventDefaultAction(); - Unit* caster = eventInfo.GetActor(); - Unit* target = eventInfo.GetProcTarget(); + HealInfo* healInfo = eventInfo.GetHealInfo(); + if (!healInfo || !healInfo->GetHeal()) + return; - SpellInfo const* spellInfo = sSpellMgr->AssertSpellInfo(SPELL_PALADIN_HOLY_MENDING, GetCastDifficulty()); - 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(); + SpellInfo const* spellInfo = sSpellMgr->AssertSpellInfo(SPELL_PALADIN_HOLY_MENDING, GetCastDifficulty()); + int32 amount = CalculatePct(static_cast<int32>(healInfo->GetHeal()), aurEff->GetAmount()); - CastSpellExtraArgs args(aurEff); - args.AddSpellBP0(amount); - caster->CastSpell(target, SPELL_PALADIN_HOLY_MENDING, args); - } + ASSERT(spellInfo->GetMaxTicks() > 0); + amount /= spellInfo->GetMaxTicks(); - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_pal_t8_2p_bonus_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); - } - }; + CastSpellExtraArgs args(aurEff); + args.AddSpellBP0(amount); + caster->CastSpell(target, SPELL_PALADIN_HOLY_MENDING, args); + } - AuraScript* GetAuraScript() const override - { - return new spell_pal_t8_2p_bonus_AuraScript(); - } + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_pal_t8_2p_bonus::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } }; // 269569 - Zeal @@ -1600,9 +1545,9 @@ void AddSC_paladin_spell_scripts() RegisterSpellScript(spell_pal_eye_for_an_eye); RegisterSpellScript(spell_pal_fist_of_justice); RegisterSpellScript(spell_pal_glyph_of_holy_light); - new spell_pal_grand_crusader(); - new spell_pal_hand_of_sacrifice(); + RegisterSpellScript(spell_pal_grand_crusader); RegisterSpellScript(spell_pal_hammer_of_the_righteous); + RegisterSpellScript(spell_pal_hand_of_sacrifice); RegisterSpellScript(spell_pal_infusion_of_light); RegisterSpellScript(spell_pal_moment_of_glory); RegisterSpellScript(spell_pal_judgment); @@ -1614,14 +1559,14 @@ void AddSC_paladin_spell_scripts() RegisterSpellScript(spell_pal_item_healing_discount); RegisterSpellScript(spell_pal_item_t6_trinket); RegisterSpellScript(spell_pal_lay_on_hands); - new spell_pal_light_s_beacon(); + RegisterSpellScript(spell_pal_light_s_beacon); RegisterSpellScript(spell_pal_light_hammer_init_summon); RegisterSpellScript(spell_pal_light_hammer_periodic); RegisterSpellScript(spell_pal_righteous_protector); RegisterSpellScript(spell_pal_righteous_verdict); RegisterSpellScript(spell_pal_selfless_healer); RegisterSpellScript(spell_pal_templar_s_verdict); - new spell_pal_t3_6p_bonus(); - new spell_pal_t8_2p_bonus(); + RegisterSpellScript(spell_pal_t3_6p_bonus); + RegisterSpellScript(spell_pal_t8_2p_bonus); RegisterSpellScript(spell_pal_zeal); } |
