diff options
author | Sorikoff <46191832+Sorikoff@users.noreply.github.com> | 2019-06-21 17:25:51 +0000 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-11 22:28:55 +0100 |
commit | 8fc52bc5e542ab5a572343c64e915d01cf363b76 (patch) | |
tree | 28ff86c67a4202c0ecfeccd71f1323595169de67 /src | |
parent | 4595e63dd73d50fbaf497fbb720cb0fe57536e38 (diff) |
Scripts/Spells: Migrate Teleporting to Script (#23458)
* Scripts/Spells: Migrate Teleporting to Script
* Rename 9999_99_99_99_world.sql to 2019_06_21_02_world.sql
(cherry picked from commit e9d803ccee2fb5d229babbf6c2c4a17b1986edb0)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 17 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 33 |
2 files changed, 33 insertions, 17 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index fa3a17eec6b..7021b966002 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3249,23 +3249,6 @@ void Spell::EffectScriptEffect() return; } - case 59317: // Teleporting - { - - if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) - return; - - // return from top - if (unitTarget->ToPlayer()->GetAreaId() == 4637) - unitTarget->CastSpell(unitTarget, 59316, CastSpellExtraArgs(TRIGGERED_FULL_MASK) - .SetOriginalCastId(m_castId)); - // teleport atop - else - unitTarget->CastSpell(unitTarget, 59314, CastSpellExtraArgs(TRIGGERED_FULL_MASK) - .SetOriginalCastId(m_castId)); - - return; - } case 62482: // Grab Crate { if (!unitCaster) diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index e926b079461..bad3932c032 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -3242,6 +3242,38 @@ class spell_gen_tournament_pennant : public AuraScript } }; +enum Teleporting +{ + AREA_VIOLET_CITADEL_SPIRE = 4637, + + SPELL_TELEPORT_SPIRE_DOWN = 59316, + SPELL_TELEPORT_SPIRE_UP = 59314 +}; + +class spell_gen_teleporting : public SpellScript +{ + PrepareSpellScript(spell_gen_teleporting); + + void HandleScript(SpellEffIndex /* effIndex */) + { + Unit* target = GetHitUnit(); + if (target->GetTypeId() != TYPEID_PLAYER) + return; + + // return from top + if (target->ToPlayer()->GetAreaId() == AREA_VIOLET_CITADEL_SPIRE) + target->CastSpell(target, SPELL_TELEPORT_SPIRE_DOWN, true); + // teleport atop + else + target->CastSpell(target, SPELL_TELEPORT_SPIRE_UP, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_gen_teleporting::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + class spell_gen_trigger_exclude_caster_aura_spell : public SpellScript { PrepareSpellScript(spell_gen_trigger_exclude_caster_aura_spell); @@ -4623,6 +4655,7 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_throw_shield); RegisterSpellScript(spell_gen_tournament_duel); RegisterAuraScript(spell_gen_tournament_pennant); + RegisterSpellScript(spell_gen_teleporting); RegisterSpellScript(spell_gen_trigger_exclude_caster_aura_spell); RegisterSpellScript(spell_gen_trigger_exclude_target_aura_spell); new spell_pvp_trinket_wotf_shared_cd<SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER>("spell_pvp_trinket_shared_cd"); |