diff --git a/Source/Game/Spells/SpellEffects.cs b/Source/Game/Spells/SpellEffects.cs index 72e761299..9333e840b 100644 --- a/Source/Game/Spells/SpellEffects.cs +++ b/Source/Game/Spells/SpellEffects.cs @@ -576,24 +576,6 @@ namespace Game.Spells Log.outError(LogFilter.Spells, "Spell.EffectTeleportUnits - spellId {0} attempted to teleport creature to a different map.", m_spellInfo.Id); return; } - - // post effects for TARGET_DEST_DB - switch (m_spellInfo.Id) - { - // Dimensional Ripper - Everlook - case 23442: - { - int r = RandomHelper.IRand(0, 119); - if (r >= 70) // 7/12 success - { - if (r < 100) // 4/12 evil twin - m_caster.CastSpell(m_caster, 23445, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId)); - else // 1/12 fire - m_caster.CastSpell(m_caster, 23449, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId)); - } - return; - } - } } [SpellEffectHandler(SpellEffectName.TeleportWithSpellVisualKitLoadingScreen)] diff --git a/Source/Scripts/Spells/Items.cs b/Source/Scripts/Spells/Items.cs index fa04fae26..f8ba14c34 100644 --- a/Source/Scripts/Spells/Items.cs +++ b/Source/Scripts/Spells/Items.cs @@ -173,6 +173,7 @@ namespace Scripts.Spells.Items // TransporterSpells public const uint EvilTwin = 23445; + public const uint TransporterMalfunctionFire = 23449; public const uint TransporterMalfunctionSmaller = 36893; public const uint TransporterMalfunctionBigger = 36895; public const uint TransporterMalfunctionChicken = 36940; @@ -1801,6 +1802,39 @@ namespace Scripts.Spells.Items } } + [Script] // 23442 - Dimensional Ripper - Everlook + class spell_item_dimensional_ripper_everlook : SpellScript + { + public override bool Validate(SpellInfo spellInfo) + { + return ValidateSpellInfo(SpellIds.TransporterMalfunctionFire, SpellIds.EvilTwin); + } + + public override bool Load() + { + return GetCaster().IsPlayer(); + } + + void HandleScript(uint effIndex) + { + int r = RandomHelper.IRand(0, 119); + if (r <= 70) // 7/12 success + return; + + Unit caster = GetCaster(); + + if (r < 100) // 4/12 evil twin + caster.CastSpell(caster, SpellIds.EvilTwin, true); + else // 1/12 fire + caster.CastSpell(caster, SpellIds.TransporterMalfunctionFire, true); + } + + public override void Register() + { + OnEffectHitTarget.Add(new EffectHandler(HandleScript, 0, SpellEffectName.TeleportUnits)); + } + } + [Script] // 36941 - Ultrasafe Transporter: Toshley's Station class spell_item_ultrasafe_transporter : SpellScript { diff --git a/sql/updates/world/master/2021_12_12_29_world_2019_07_01_08_world.sql b/sql/updates/world/master/2021_12_12_29_world_2019_07_01_08_world.sql new file mode 100644 index 000000000..2f2312ebe --- /dev/null +++ b/sql/updates/world/master/2021_12_12_29_world_2019_07_01_08_world.sql @@ -0,0 +1,2 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_item_dimensional_ripper_everlook'; +INSERT INTO `spell_script_names` VALUES (23442,'spell_item_dimensional_ripper_everlook');