diff --git a/sql/updates/world/master/2026_01_01_world.sql b/sql/updates/world/master/2026_01_01_world.sql new file mode 100644 index 00000000000..a27f060f85c --- /dev/null +++ b/sql/updates/world/master/2026_01_01_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_holy_word_chastise'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(88625, 'spell_pri_holy_word_chastise'); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index bb4d07fa971..8350f6189f2 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -62,6 +62,7 @@ enum PriestSpells SPELL_PRIEST_BLESSED_LIGHT = 196813, SPELL_PRIEST_BODY_AND_SOUL = 64129, SPELL_PRIEST_BODY_AND_SOUL_SPEED = 65081, + SPELL_PRIEST_CENSURE = 200199, SPELL_PRIEST_CIRCLE_OF_HEALING = 204883, SPELL_PRIEST_CRYSTALLINE_REFLECTION = 373457, SPELL_PRIEST_CRYSTALLINE_REFLECTION_HEAL = 373462, @@ -122,6 +123,8 @@ enum PriestSpells SPELL_PRIEST_HOLY_MENDING_HEAL = 391156, SPELL_PRIEST_HOLY_NOVA = 132157, SPELL_PRIEST_HOLY_WORD_CHASTISE = 88625, + SPELL_PRIEST_HOLY_WORD_CHASTISE_INCAPACITATE = 200196, + SPELL_PRIEST_HOLY_WORD_CHASTISE_STUN = 200200, SPELL_PRIEST_HOLY_WORD_SALVATION = 265202, SPELL_PRIEST_HOLY_WORD_SANCTIFY = 34861, SPELL_PRIEST_HOLY_WORD_SERENITY = 2050, @@ -1911,6 +1914,36 @@ class spell_pri_holy_words : public AuraScript } }; +// 88625 - Holy Word: Chastise +class spell_pri_holy_word_chastise : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo + ({ + SPELL_PRIEST_HOLY_WORD_CHASTISE_INCAPACITATE, + SPELL_PRIEST_HOLY_WORD_CHASTISE_STUN, + SPELL_PRIEST_CENSURE + }); + } + + void HandleAfterHit() const + { + Unit* caster = GetCaster(); + uint32 spellId = caster->HasAura(SPELL_PRIEST_CENSURE) ? SPELL_PRIEST_HOLY_WORD_CHASTISE_STUN : SPELL_PRIEST_HOLY_WORD_CHASTISE_INCAPACITATE; + + caster->CastSpell(GetHitUnit(), spellId, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + AfterHit += SpellHitFn(spell_pri_holy_word_chastise::HandleAfterHit); + } +}; + // 265202 - Holy Word: Salvation class spell_pri_holy_word_salvation : public SpellScript { @@ -4298,6 +4331,7 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_heavens_wrath); RegisterSpellScript(spell_pri_holy_mending); RegisterSpellScript(spell_pri_holy_words); + RegisterSpellScript(spell_pri_holy_word_chastise); RegisterSpellScript(spell_pri_holy_word_salvation); RegisterSpellScript(spell_pri_holy_word_salvation_cooldown_reduction); RegisterSpellScript(spell_pri_item_t6_trinket);