diff options
| author | Cristian Vintila <127750549+cristianvnt@users.noreply.github.com> | 2025-12-22 23:12:31 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-22 22:12:31 +0100 |
| commit | bfb06b771f436f2fff98dce0eefdb449dea791d8 (patch) | |
| tree | 10d51a2eedf594557013e00d7b4ced1382086d8b | |
| parent | ccdfd71ad763d6437f97d59d840f7f8c95b41b42 (diff) | |
Scripts/Spells: Implement priest talent Angelic Bulwark (#31450)
| -rw-r--r-- | sql/updates/world/master/2025_12_22_01_world.sql | 3 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 41 |
2 files changed, 44 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_12_22_01_world.sql b/sql/updates/world/master/2025_12_22_01_world.sql new file mode 100644 index 00000000000..babae81fa50 --- /dev/null +++ b/sql/updates/world/master/2025_12_22_01_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_angelic_bulwark'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(108945, 'spell_pri_angelic_bulwark'); 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); |
