aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorCristian Vintila <127750549+cristianvnt@users.noreply.github.com>2025-12-22 23:12:31 +0200
committerGitHub <noreply@github.com>2025-12-22 22:12:31 +0100
commitbfb06b771f436f2fff98dce0eefdb449dea791d8 (patch)
tree10d51a2eedf594557013e00d7b4ced1382086d8b /src/server/scripts
parentccdfd71ad763d6437f97d59d840f7f8c95b41b42 (diff)
Scripts/Spells: Implement priest talent Angelic Bulwark (#31450)
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp41
1 files changed, 41 insertions, 0 deletions
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);