diff --git a/sql/updates/world/4.3.4/2023_10_21_00_world.sql b/sql/updates/world/4.3.4/2023_10_21_00_world.sql new file mode 100644 index 0000000000..18a990dc3d --- /dev/null +++ b/sql/updates/world/4.3.4/2023_10_21_00_world.sql @@ -0,0 +1,13 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN +('spell_pri_silence', +'spell_dk_strangulate', +'spell_gen_arcane_torrent_racial'); + +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(15487, 'spell_pri_silence'), +(47476, 'spell_dk_strangulate'), +(25046, 'spell_gen_arcane_torrent_racial'), +(28730, 'spell_gen_arcane_torrent_racial'), +(50613, 'spell_gen_arcane_torrent_racial'), +(69179, 'spell_gen_arcane_torrent_racial'), +(80483, 'spell_gen_arcane_torrent_racial'); diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index fd4cc4d612..ea0652deab 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -110,6 +110,11 @@ enum DKSpellIcons DK_ICON_ID_BLOOD_SHIELD_MASTERY = 2624 }; +enum MiscSpells +{ + SPELL_GEN_INTERRUPT = 32747 +}; + // 48707 - Anti-Magic Shell class spell_dk_anti_magic_shell : public AuraScript { @@ -1843,6 +1848,30 @@ class spell_dk_dark_simulacrum : public AuraScript } }; +// 47476 - Strangulate +class spell_dk_strangulate : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfi*/) override + { + return ValidateSpellInfo({ SPELL_GEN_INTERRUPT }); + } + + void HandleCreatureInterrupt(SpellEffIndex /*effIndex*/) + { + Creature* target = GetHitCreature(); + if (!target) + return; + + if (Unit* caster = GetCaster()) + caster->CastSpell(target, SPELL_GEN_INTERRUPT, true); + } + + void Register() override + { + OnEffectHitTarget.Register(&spell_dk_strangulate::HandleCreatureInterrupt, EFFECT_0, SPELL_EFFECT_APPLY_AURA); + } +}; + void AddSC_deathknight_spell_scripts() { RegisterSpellScript(spell_dk_anti_magic_shell); @@ -1891,6 +1920,7 @@ void AddSC_deathknight_spell_scripts() RegisterSpellScript(spell_dk_shadow_infusion); RegisterSpellScript(spell_dk_scourge_strike); RegisterSpellScript(spell_dk_smoldering_rune); + RegisterSpellScript(spell_dk_strangulate); RegisterSpellScript(spell_dk_threat_of_thassarian); RegisterSpellScript(spell_dk_unoly_blight); RegisterSpellScript(spell_dk_unholy_command); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index e916425448..6aa0258c0b 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1902,7 +1902,7 @@ class spell_gen_gnomish_transporter : public SpellScriptLoader enum Interrupt { - SPELL_GEN_THROW_INTERRUPT = 32747 + SPELL_GEN_INTERRUPT = 32747 }; // 32748 - Deadly Throw Interrupt @@ -1916,13 +1916,13 @@ class spell_gen_interrupt : public SpellScriptLoader { bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo({ SPELL_GEN_THROW_INTERRUPT }); + return ValidateSpellInfo({ SPELL_GEN_INTERRUPT }); } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) { PreventDefaultAction(); - GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_GEN_THROW_INTERRUPT, aurEff); + GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_GEN_INTERRUPT, aurEff); } void Register() override @@ -5609,6 +5609,34 @@ class spell_gen_dalaran_shop_keeper_greeting_ping : public SpellScript } }; +// 25046 - Arcane Torrent (Racial) +// 28730 - Arcane Torrent (Racial) +// 50613 - Arcane Torrent (Racial) +// 69179 - Arcane Torrent (Racial) +// 80483 - Arcane Torrent (Racial) +class spell_gen_arcane_torrent_racial : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfi*/) override + { + return ValidateSpellInfo({ SPELL_GEN_INTERRUPT }); + } + + void HandleCreatureInterrupt(SpellEffIndex /*effIndex*/) + { + Creature* target = GetHitCreature(); + if (!target) + return; + + if (Unit* caster = GetCaster()) + caster->CastSpell(target, SPELL_GEN_INTERRUPT, true); + } + + void Register() override + { + OnEffectHitTarget.Register(&spell_gen_arcane_torrent_racial::HandleCreatureInterrupt, EFFECT_0, SPELL_EFFECT_APPLY_AURA); + } +}; + void AddSC_generic_spell_scripts() { new spell_gen_absorb0_hitlimit1(); @@ -5616,6 +5644,7 @@ void AddSC_generic_spell_scripts() new spell_gen_alchemist_stone(); new spell_gen_allow_cast_from_item_only(); new spell_gen_animal_blood(); + RegisterSpellScript(spell_gen_arcane_torrent_racial); new spell_gen_aura_of_anger(); new spell_gen_aura_service_uniform(); new spell_gen_av_drekthar_presence(); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 0fab88b9c0..b3af19d15d 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -123,7 +123,8 @@ enum PriestSpellIcons enum MiscSpells { - SPELL_GEN_REPLENISHMENT = 57669 + SPELL_GEN_REPLENISHMENT = 57669, + SPELL_GEN_INTERRUPT = 32747 }; class PowerCheck @@ -1820,6 +1821,30 @@ class spell_pri_psychic_scream : public SpellScript } }; +// 15487 - Silence +class spell_pri_silence : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfi*/) override + { + return ValidateSpellInfo({ SPELL_GEN_INTERRUPT }); + } + + void HandleCreatureInterrupt(SpellEffIndex /*effIndex*/) + { + Creature* target = GetHitCreature(); + if (!target) + return; + + if (Unit* caster = GetCaster()) + caster->CastSpell(target, SPELL_GEN_INTERRUPT, true); + } + + void Register() override + { + OnEffectHitTarget.Register(&spell_pri_silence::HandleCreatureInterrupt, EFFECT_0, SPELL_EFFECT_APPLY_AURA); + } +}; + void AddSC_priest_spell_scripts() { RegisterSpellScript(spell_pri_archangel); @@ -1869,6 +1894,7 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_renew); RegisterSpellScript(spell_pri_shadow_word_death); RegisterSpellScript(spell_pri_shadowform); + RegisterSpellScript(spell_pri_silence); RegisterSpellScript(spell_pri_vampiric_embrace); RegisterSpellScript(spell_pri_vampiric_embrace_target); RegisterSpellScript(spell_pri_vampiric_touch);