From 9a5df1987879e881426b4c1fc2c54f11aa28aaab Mon Sep 17 00:00:00 2001 From: Cristian Vintila <127750549+cristianvnt@users.noreply.github.com> Date: Tue, 23 Dec 2025 01:10:46 +0200 Subject: [PATCH] Scripts/Spells: Implement priest talent Protector of the Frail (#31451) --- .../world/master/2025_12_22_02_world.sql | 7 ++++++ src/server/scripts/Spells/spell_priest.cpp | 25 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 sql/updates/world/master/2025_12_22_02_world.sql diff --git a/sql/updates/world/master/2025_12_22_02_world.sql b/sql/updates/world/master/2025_12_22_02_world.sql new file mode 100644 index 00000000000..c24b4e4822e --- /dev/null +++ b/sql/updates/world/master/2025_12_22_02_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_protector_of_the_frail'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(373036, 'spell_pri_protector_of_the_frail'); + +DELETE FROM `spell_proc` WHERE `SpellId` IN (373035); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(373035,0x00,6,0x00000001,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0,0,0); -- Protector of the Frail diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index d480f3c387a..712705d43ad 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -140,6 +140,7 @@ enum PriestSpells SPELL_PRIEST_MIND_BOMB_STUN = 226943, SPELL_PRIEST_MISERY = 238558, SPELL_PRIEST_ORACULAR_HEAL = 26170, + SPELL_PRIEST_PAIN_SUPPRESSION = 33206, SPELL_PRIEST_PAIN_TRANSFORMATION = 372991, SPELL_PRIEST_PAIN_TRANSFORMATION_HEAL = 372994, SPELL_PRIEST_PENANCE = 47540, @@ -163,6 +164,7 @@ enum PriestSpells SPELL_PRIEST_PRAYER_OF_MENDING_HEAL = 33110, SPELL_PRIEST_PRAYER_OF_MENDING_JUMP = 155793, SPELL_PRIEST_PROTECTIVE_LIGHT_AURA = 193065, + SPELL_PRIEST_PROTECTOR_OF_THE_FRAIL = 373035, SPELL_PRIEST_PURGE_THE_WICKED = 204197, SPELL_PRIEST_PURGE_THE_WICKED_DUMMY = 204215, SPELL_PRIEST_PURGE_THE_WICKED_PERIODIC = 204213, @@ -2841,6 +2843,28 @@ class spell_pri_assured_safety : public spell_pri_prayer_of_mending_SpellScriptB } }; +// 373036 - Protector of the Frail +class spell_pri_protector_of_the_frail : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellEffect({ { SPELL_PRIEST_PROTECTOR_OF_THE_FRAIL, EFFECT_1 } }); + } + + void HandleEffectHit(SpellEffIndex /*effIndex*/) const + { + Unit* caster = GetCaster(); + + int32 cdReduction = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_PROTECTOR_OF_THE_FRAIL, GetCastDifficulty())->GetEffect(EFFECT_1).CalcValue(caster); + caster->GetSpellHistory()->ModifyCooldown(SPELL_PRIEST_PAIN_SUPPRESSION, Milliseconds(cdReduction)); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_pri_protector_of_the_frail::HandleEffectHit, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + // 204197 - Purge the Wicked // Called by Penance - 47540, Dark Reprimand - 400169 class spell_pri_purge_the_wicked : public SpellScript @@ -4065,6 +4089,7 @@ void AddSC_priest_spell_scripts() RegisterSpellAndAuraScriptPair(spell_pri_prayer_of_mending, spell_pri_prayer_of_mending_aura); RegisterSpellScript(spell_pri_prayer_of_mending_jump); RegisterSpellScript(spell_pri_protective_light); + RegisterSpellScript(spell_pri_protector_of_the_frail); RegisterSpellScript(spell_pri_holy_10_1_class_set_2pc); RegisterSpellScript(spell_pri_holy_10_1_class_set_2pc_chooser); RegisterSpellScript(spell_pri_holy_10_1_class_set_4pc);