From bfb06b771f436f2fff98dce0eefdb449dea791d8 Mon Sep 17 00:00:00 2001 From: Cristian Vintila <127750549+cristianvnt@users.noreply.github.com> Date: Mon, 22 Dec 2025 23:12:31 +0200 Subject: Scripts/Spells: Implement priest talent Angelic Bulwark (#31450) --- src/server/scripts/Spells/spell_priest.cpp | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/server/scripts') diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 26a8525277d..d480f3c387a 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -43,6 +43,8 @@ enum PriestSpells { SPELL_PRIEST_ABYSSAL_REVERIE = 373054, + SPELL_PRIEST_ANGELIC_BULWARK_BUFF = 114214, + SPELL_PRIEST_ANGELIC_BULWARK_DEBUFF = 114216, SPELL_PRIEST_ANGELIC_FEATHER_AREATRIGGER = 158624, SPELL_PRIEST_ANGELIC_FEATHER_AURA = 121557, SPELL_PRIEST_ANSWERED_PRAYERS = 394289, @@ -249,6 +251,44 @@ class RaidCheck Unit const* _caster; }; +// 108945 - Angelic Bulwark +class spell_pri_angelic_bulwark : public AuraScript +{ + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ SPELL_PRIEST_ANGELIC_BULWARK_BUFF, SPELL_PRIEST_ANGELIC_BULWARK_DEBUFF }) + && ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }); + } + + bool CheckProc(ProcEventInfo const& eventInfo) const + { + return eventInfo.GetDamageInfo() && !eventInfo.GetActionTarget()->HasAura(SPELL_PRIEST_ANGELIC_BULWARK_DEBUFF) + && eventInfo.GetActionTarget()->HealthBelowPctDamaged(GetEffect(EFFECT_0)->GetAmount(), eventInfo.GetDamageInfo()->GetDamage()); + } + + void HandleProc(ProcEventInfo const& eventInfo) const + { + Unit* caster = eventInfo.GetActionTarget(); + if (!caster) + return; + + int32 absorb = caster->CountPctFromMaxHealth(GetEffect(EFFECT_1)->GetAmount()); + + caster->CastSpell(caster, SPELL_PRIEST_ANGELIC_BULWARK_BUFF, CastSpellExtraArgsInit + { + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, absorb } } + }); + caster->CastSpell(caster, SPELL_PRIEST_ANGELIC_BULWARK_DEBUFF, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_pri_angelic_bulwark::CheckProc); + OnProc += AuraProcFn(spell_pri_angelic_bulwark::HandleProc); + } +}; + // 121536 - Angelic Feather talent class spell_pri_angelic_feather_trigger : public SpellScript { @@ -3959,6 +3999,7 @@ class spell_pri_whispering_shadows_effect : public SpellScript void AddSC_priest_spell_scripts() { + RegisterSpellScript(spell_pri_angelic_bulwark); RegisterSpellScript(spell_pri_angelic_feather_trigger); RegisterAreaTriggerAI(areatrigger_pri_angelic_feather); RegisterSpellScript(spell_pri_abyssal_reverie); -- cgit v1.2.3