diff --git a/sql/updates/world/master/2026_01_12_01_world.sql b/sql/updates/world/master/2026_01_12_01_world.sql new file mode 100644 index 00000000000..24795101fda --- /dev/null +++ b/sql/updates/world/master/2026_01_12_01_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_insidious_ire'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(373212, 'spell_pri_insidious_ire'); + +DELETE FROM `spell_proc` WHERE `SpellId` IN (373212); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(373212,0x00,6,0x00008000,0x00000400,0x00800000,0x00000000,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0,0,0,0); -- Insidious Ire diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 6d1809aa372..84f0db9dbfc 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -77,6 +77,7 @@ enum PriestSpells SPELL_PRIEST_DARK_REPRIMAND_DAMAGE = 373130, SPELL_PRIEST_DARK_REPRIMAND_HEALING = 400187, SPELL_PRIEST_DAZZLING_LIGHT = 196810, + SPELL_PRIEST_DEVOURING_PLAGUE = 335467, SPELL_PRIEST_DISPERSING_LIGHT = 1215265, SPELL_PRIEST_DISPERSING_LIGHT_HEAL = 1215266, SPELL_PRIEST_DIVINE_AEGIS = 47515, @@ -149,6 +150,7 @@ enum PriestSpells SPELL_PRIEST_INESCAPABLE_TORMENT = 373427, SPELL_PRIEST_INESCAPABLE_TORMENT_TELEPORT = 373441, SPELL_PRIEST_INESCAPABLE_TORMENT_DAMAGE = 373442, + SPELL_PRIEST_INSIDIOUS_IRE_AURA = 373213, SPELL_PRIEST_ITEM_EFFICIENCY = 37595, SPELL_PRIEST_LASTING_WORDS = 471504, SPELL_PRIEST_LEAP_OF_FAITH_EFFECT = 92832, @@ -2537,6 +2539,41 @@ class spell_pri_inescapable_torment : public SpellScript } }; +// 373212 - Insidious Ire +class spell_pri_insidious_ire : public AuraScript +{ + static void HandleProc(AuraScript const&, ProcEventInfo const& eventInfo) + { + Unit* caster = eventInfo.GetActor(); + Unit* target = eventInfo.GetActionTarget(); + + Aura const* requiredAuras[] = + { + target->GetAura(SPELL_PRIEST_SHADOW_WORD_PAIN, caster->GetGUID()), + target->GetAura(SPELL_PRIEST_DEVOURING_PLAGUE, caster->GetGUID()), + target->GetAura(SPELL_PRIEST_VAMPIRIC_TOUCH, caster->GetGUID()) + }; + + if (advstd::ranges::contains(requiredAuras, nullptr)) + { + caster->RemoveAurasDueToSpell(SPELL_PRIEST_INSIDIOUS_IRE_AURA); + return; + } + + int32 shortestDuration = std::ranges::min(requiredAuras, {}, [](Aura const* a) { return a->GetDuration(); })->GetDuration(); + + caster->CastSpell(caster, SPELL_PRIEST_INSIDIOUS_IRE_AURA, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .SpellValueOverrides = { { SPELLVALUE_DURATION, shortestDuration } } + }); + } + + void Register() override + { + OnProc += AuraProcFn(spell_pri_insidious_ire::HandleProc); + } +}; + // 40438 - Priest Tier 6 Trinket class spell_pri_item_t6_trinket : public AuraScript { @@ -5206,6 +5243,7 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_holy_word_salvation); RegisterSpellScript(spell_pri_holy_word_salvation_cooldown_reduction); RegisterSpellScript(spell_pri_inescapable_torment); + RegisterSpellScript(spell_pri_insidious_ire); RegisterSpellScript(spell_pri_item_t6_trinket); RegisterSpellScriptWithArgs(spell_pri_lasting_words, "spell_pri_lasting_words_serenity", EFFECT_0); RegisterSpellScriptWithArgs(spell_pri_lasting_words, "spell_pri_lasting_words_sanctify", EFFECT_1);