aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp17
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp33
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");