mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Scripts/Spells: Implement priest talent Angelic Bulwark (#31450)
This commit is contained in:
3
sql/updates/world/master/2025_12_22_01_world.sql
Normal file
3
sql/updates/world/master/2025_12_22_01_world.sql
Normal 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');
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user