From 1f1c859a477f2bb4573521f0e12322c34017e95d Mon Sep 17 00:00:00 2001 From: Cristian Vintila <127750549+cristianvnt@users.noreply.github.com> Date: Mon, 5 Jan 2026 01:02:19 +0200 Subject: [PATCH] Scripts/Spells: Implement priest talent Divinity (#31470) --- .../world/master/2026_01_04_00_world.sql | 8 ++++ src/server/scripts/Spells/spell_priest.cpp | 41 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 sql/updates/world/master/2026_01_04_00_world.sql diff --git a/sql/updates/world/master/2026_01_04_00_world.sql b/sql/updates/world/master/2026_01_04_00_world.sql new file mode 100644 index 00000000000..8fee38d00d0 --- /dev/null +++ b/sql/updates/world/master/2026_01_04_00_world.sql @@ -0,0 +1,8 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_divinity'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(1215241,'spell_pri_divinity'); + +DELETE FROM `spell_proc` WHERE `SpellId` IN (1215241,1216314); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(1215241,0x00,6,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x2,0x0,0x8,0x0,0,0,0,0), -- Divinity +(1216314,0x00,6,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x4,0x0,0x18,0x0,0,0,0,0); -- Divinity diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 9aef0be5a49..ff4ce39edbd 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -93,6 +93,8 @@ enum PriestSpells SPELL_PRIEST_DIVINE_STAR_SHADOW_DAMAGE = 390845, SPELL_PRIEST_DIVINE_STAR_SHADOW_HEAL = 390981, SPELL_PRIEST_DIVINE_WRATH = 40441, + SPELL_PRIEST_DIVINITY = 1215241, + SPELL_PRIEST_DIVINITY_AURA = 1216314, SPELL_PRIEST_EMPOWERED_RENEW = 391339, SPELL_PRIEST_EMPOWERED_RENEW_HEAL = 391359, SPELL_PRIEST_ENTROPIC_RIFT = 447444, @@ -241,6 +243,11 @@ enum PriestSpells SPELL_PVP_RULES_ENABLED_HARDCODED = 134735 }; +enum PriestSpellLabels +{ + SPELL_LABEL_PRIEST_APOTHEOSIS = 3635, +}; + enum PriestSpellVisuals { SPELL_VISUAL_PRIEST_POWER_WORD_RADIANCE = 52872, @@ -1332,6 +1339,39 @@ private: std::vector _affectedUnits; }; +// 1215241 - Divinity +class spell_pri_divinity : public AuraScript +{ + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } }) + && ValidateSpellInfo({ SPELL_PRIEST_APOTHEOSIS, spellInfo->GetEffect(EFFECT_2).TriggerSpell }); + } + + static bool CheckProc(AuraScript const&, ProcEventInfo const& eventInfo) + { + return eventInfo.GetSpellInfo()->HasLabel(SPELL_LABEL_PRIEST_APOTHEOSIS); + } + + void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& procInfo) + { + PreventDefaultAction(); + + GetTarget()->CastSpell(GetTarget(), aurEff->GetSpellEffectInfo().TriggerSpell, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = procInfo.GetProcSpell(), + .TriggeringAura = aurEff, + .SpellValueOverrides = { { SPELLVALUE_AURA_STACK, int32(sSpellMgr->AssertSpellInfo(aurEff->GetSpellEffectInfo().TriggerSpell, DIFFICULTY_NONE)->StackAmount) } } + }); + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_pri_divinity::CheckProc); + OnEffectProc += AuraEffectProcFn(spell_pri_divinity::HandleProc, EFFECT_2, SPELL_AURA_PROC_TRIGGER_SPELL); + } +}; + struct spell_pri_holy_words_base { static void ModifyCooldown(Unit* priest, SpellInfo const* spellInfo, Milliseconds cooldownMod) @@ -4539,6 +4579,7 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_divine_service); RegisterSpellScript(spell_pri_divine_star_shadow); RegisterAreaTriggerAI(areatrigger_pri_divine_star); + RegisterSpellScript(spell_pri_divinity); RegisterSpellScript(spell_pri_divine_procession); RegisterSpellScript(spell_pri_empowered_renew); RegisterSpellScript(spell_pri_empowered_renew_heal);