Scripts/Spells: Implement priest talent Angelic Bulwark (#31450)

This commit is contained in:
Cristian Vintila
2025-12-22 23:12:31 +02:00
committed by GitHub
parent ccdfd71ad7
commit bfb06b771f
2 changed files with 44 additions and 0 deletions

View File

@@ -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');

View File

@@ -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);