aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Spells
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts/Spells')
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index e8ad73ceadb..168284b31bc 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -4244,6 +4244,52 @@ class spell_gen_clear_debuffs : public SpellScriptLoader
}
};
+enum PonySpells
+{
+ ACHIEV_PONY_UP = 3736,
+ MOUNT_PONY = 29736
+};
+
+class spell_gen_pony_mount_check : public SpellScriptLoader
+{
+ public:
+ spell_gen_pony_mount_check() : SpellScriptLoader("spell_gen_pony_mount_check") { }
+
+ class spell_gen_pony_mount_check_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_gen_pony_mount_check_AuraScript);
+
+ void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
+ {
+ Unit* caster = GetCaster();
+ Player* owner = caster->GetOwner()->ToPlayer();
+ if (!caster || !owner || !owner->HasAchieved(ACHIEV_PONY_UP))
+ return;
+
+ if (owner->IsMounted())
+ {
+ caster->Mount(MOUNT_PONY);
+ caster->SetSpeedRate(MOVE_RUN, owner->GetSpeedRate(MOVE_RUN));
+ }
+ else if (caster->IsMounted())
+ {
+ caster->Dismount();
+ caster->SetSpeedRate(MOVE_RUN, owner->GetSpeedRate(MOVE_RUN));
+ }
+ }
+
+ void Register() override
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_gen_pony_mount_check_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
+ }
+ };
+
+ AuraScript* GetAuraScript() const
+ {
+ return new spell_gen_pony_mount_check_AuraScript();
+ }
+};
+
void AddSC_generic_spell_scripts()
{
new spell_gen_absorb0_hitlimit1();
@@ -4332,4 +4378,5 @@ void AddSC_generic_spell_scripts()
new spell_gen_mixology_bonus();
new spell_gen_landmine_knockback_achievement();
new spell_gen_clear_debuffs();
+ new spell_gen_pony_mount_check();
}