From fc7fc434e307db705fd9864ecd505496f027b3ad Mon Sep 17 00:00:00 2001 From: Aqua Deus <95978183+aquadeus@users.noreply.github.com> Date: Thu, 5 Feb 2026 20:52:35 +0100 Subject: [PATCH] Scripts/Spells: Implement proc of dk talent Suppression (#30243) --- .../world/master/2026_02_05_05_world.sql | 3 +++ src/server/game/Miscellaneous/SharedDefines.h | 3 +++ src/server/scripts/Spells/spell_dk.cpp | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 sql/updates/world/master/2026_02_05_05_world.sql diff --git a/sql/updates/world/master/2026_02_05_05_world.sql b/sql/updates/world/master/2026_02_05_05_world.sql new file mode 100644 index 0000000000..529f2d4445 --- /dev/null +++ b/sql/updates/world/master/2026_02_05_05_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dk_suppression'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(374049, 'spell_dk_suppression'); diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 08024c884b..572683b389 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -2907,6 +2907,9 @@ inline constexpr uint64 IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK(\ (1 << MECHANIC_TURN) | (1 << MECHANIC_HORROR) | (1 << MECHANIC_DAZE) | \ (1 << MECHANIC_SAPPED)); +inline constexpr uint64 MECHANIC_LOSS_CONTROL_MASK(\ + IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK & ~((1 << MECHANIC_SNARE) | (1 << MECHANIC_TURN) | (1 << MECHANIC_DAZE))); + // Spell dispel type enum DispelType { diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index a9fe0abdd8..79d3cdb35e 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -1293,6 +1293,24 @@ class spell_dk_subduing_grasp : public SpellScript } }; +// 374049 - Suppression +class spell_dk_suppression : public AuraScript +{ + bool CheckProc(ProcEventInfo& eventInfo) + { + SpellInfo const* spellInfo = eventInfo.GetSpellInfo(); + if (!spellInfo) + return false; + + return (spellInfo->GetAllEffectsMechanicMask() & MECHANIC_LOSS_CONTROL_MASK) != 0; + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_dk_suppression::CheckProc); + } +}; + // 242057 - Rune Empowered class spell_dk_t20_2p_rune_empowered : public AuraScript { @@ -1456,6 +1474,7 @@ void AddSC_deathknight_spell_scripts() RegisterSpellScriptWithArgs(spell_dk_soul_reaper, "spell_dk_soul_reaper", EFFECT_1, EFFECT_2); RegisterSpellScriptWithArgs(spell_dk_soul_reaper, "spell_dk_soul_reaper_reaper_of_souls", EFFECT_0, Optional()); RegisterSpellScript(spell_dk_subduing_grasp); + RegisterSpellScript(spell_dk_suppression); RegisterSpellScript(spell_dk_t20_2p_rune_empowered); RegisterSpellScript(spell_dk_vampiric_blood); RegisterSpellScript(spell_dk_voracious);