From 720d4041a83ecc5c44fc5ac0e3033869f2d7194a Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Fri, 6 Jan 2023 08:22:50 +0100 Subject: [PATCH] Core/Spells: updated Death Gate spell script for gameobject casting to fix a crash --- .../world/4.3.4/2023_01_06_00_world.sql | 3 +++ src/server/scripts/Spells/spell_dk.cpp | 26 ++++++++++++------- 2 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 sql/updates/world/4.3.4/2023_01_06_00_world.sql diff --git a/sql/updates/world/4.3.4/2023_01_06_00_world.sql b/sql/updates/world/4.3.4/2023_01_06_00_world.sql new file mode 100644 index 0000000000..e985b45847 --- /dev/null +++ b/sql/updates/world/4.3.4/2023_01_06_00_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`= 'spell_dk_death_gate_teleport'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(53822, 'spell_dk_death_gate_teleport'); diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index 1271975010..2532e6786c 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -342,6 +342,21 @@ class spell_dk_death_coil : public SpellScript // 52751 - Death Gate class spell_dk_death_gate : public SpellScript +{ + void HandleScript(SpellEffIndex effIndex) + { + if (Unit* target = GetHitUnit()) + target->CastSpell(target, GetEffectValue(), false); + } + + void Register() override + { + OnEffectHitTarget.Register(&spell_dk_death_gate::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +// 53822 - Death Gate +class spell_dk_death_gate_teleport : public SpellScript { SpellCastResult CheckClass() { @@ -354,17 +369,9 @@ class spell_dk_death_gate : public SpellScript return SPELL_CAST_OK; } - void HandleScript(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - if (Unit* target = GetHitUnit()) - target->CastSpell(target, GetEffectValue(), false); - } - void Register() override { - OnCheckCast.Register(&spell_dk_death_gate::CheckClass); - OnEffectHitTarget.Register(&spell_dk_death_gate::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + OnCheckCast.Register(&spell_dk_death_gate_teleport::CheckClass); } }; @@ -1839,6 +1846,7 @@ void AddSC_deathknight_spell_scripts() RegisterSpellScript(spell_dk_death_and_decay); RegisterSpellScript(spell_dk_death_coil); RegisterSpellScript(spell_dk_death_gate); + RegisterSpellScript(spell_dk_death_gate_teleport); RegisterSpellScript(spell_dk_death_grip); RegisterSpellScript(spell_dk_death_grip_initial); RegisterSpellScript(spell_dk_item_death_knight_t12_dps_4p_bonus);