aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSorikoff <46191832+Sorikoff@users.noreply.github.com>2019-06-21 17:25:51 +0000
committerShauren <shauren.trinity@gmail.com>2021-12-11 22:28:55 +0100
commit8fc52bc5e542ab5a572343c64e915d01cf363b76 (patch)
tree28ff86c67a4202c0ecfeccd71f1323595169de67 /src
parent4595e63dd73d50fbaf497fbb720cb0fe57536e38 (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.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");