From 43267a24c3f7909f0ec33f8ec38c48a6eaaf1eeb Mon Sep 17 00:00:00 2001 From: Cristian Vintila <127750549+cristianvnt@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:57:36 +0200 Subject: [PATCH] Scripts/Spells: Implement priest talent Eternal Sanctity (#31469) --- .../world/master/2026_01_03_11_world.sql | 7 +++++ src/server/scripts/Spells/spell_priest.cpp | 29 ++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 sql/updates/world/master/2026_01_03_11_world.sql diff --git a/sql/updates/world/master/2026_01_03_11_world.sql b/sql/updates/world/master/2026_01_03_11_world.sql new file mode 100644 index 00000000000..ef73b79ff5f --- /dev/null +++ b/sql/updates/world/master/2026_01_03_11_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_eternal_sanctity'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(1215245,'spell_pri_eternal_sanctity'); + +DELETE FROM `spell_proc` WHERE `SpellId`=1215245; +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(1215245,0x00,6,0x10000400,0x00000000,0x00000020,0x00000000,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0,0,0,0); -- Eternal Sanctity diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 187716758c3..9aef0be5a49 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -1617,6 +1617,32 @@ class spell_pri_essence_devourer_heal : public SpellScript } }; +// 1215245 - Eternal Sanctity +class spell_pri_eternal_sanctity : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PRIEST_APOTHEOSIS }); + } + + static bool CheckProc(AuraScript const&, ProcEventInfo const& eventInfo) + { + return eventInfo.GetActor()->HasAura(SPELL_PRIEST_APOTHEOSIS); + } + + static void HandleEffectProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& eventInfo) + { + if (Aura* apotheosisAura = eventInfo.GetActor()->GetAura(SPELL_PRIEST_APOTHEOSIS)) + apotheosisAura->SetDuration(apotheosisAura->GetDuration() + aurEff->GetAmount()); + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_pri_eternal_sanctity::CheckProc); + OnEffectProc += AuraEffectProcFn(spell_pri_eternal_sanctity::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 246287 - Evangelism class spell_pri_evangelism : public SpellScript { @@ -1793,7 +1819,7 @@ class spell_pri_harsh_discipline : public SpellScript { bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo({ SPELL_PRIEST_HARSH_DISCIPLINE_AURA }) + return ValidateSpellInfo({ SPELL_PRIEST_HARSH_DISCIPLINE_AURA, SPELL_PRIEST_CASTIGATION }) && ValidateSpellEffect({ { SPELL_PRIEST_HARSH_DISCIPLINE, EFFECT_1 }, { SPELL_PRIEST_PENANCE_CHANNEL_DAMAGE, EFFECT_1 } }); } @@ -4522,6 +4548,7 @@ void AddSC_priest_spell_scripts() RegisterAreaTriggerAI(areatrigger_pri_entropic_rift); RegisterSpellScript(spell_pri_epiphany); RegisterSpellScript(spell_pri_essence_devourer_heal); + RegisterSpellScript(spell_pri_eternal_sanctity); RegisterSpellScript(spell_pri_evangelism); RegisterSpellScript(spell_pri_expiation); RegisterSpellScript(spell_pri_focused_mending);