aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-06-03 22:09:55 +0200
committerShauren <shauren.trinity@gmail.com>2011-06-03 22:09:55 +0200
commit92af66e0a659ee48faa118274a7e17d75b120e5a (patch)
tree6e6c1dad68ebe6f510e88049a91c4de4da3a8696 /src
parent702424c28701a7bf65a3c01af33916d006795889 (diff)
Scripts/Spells: Scripted Magic Rooster mount
Closes #1704 Closes #1733
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index ddf4324a715..f693c1b249e 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -1105,6 +1105,61 @@ class spell_gen_lifeblood : public SpellScriptLoader
}
};
+enum MagicRoosterSpells
+{
+ SPELL_MAGIC_ROOSTER_NORMAL = 66122,
+ SPELL_MAGIC_ROOSTER_DRAENEI_MALE = 66123,
+ SPELL_MAGIC_ROOSTER_TAUREN_MALE = 66124,
+};
+
+class spell_gen_magic_rooster : public SpellScriptLoader
+{
+ public:
+ spell_gen_magic_rooster() : SpellScriptLoader("spell_gen_magic_rooster") { }
+
+ class spell_gen_magic_rooster_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_gen_magic_rooster_SpellScript);
+
+ void HandleScript(SpellEffIndex effIndex)
+ {
+ PreventHitDefaultEffect(effIndex);
+ Player* target = GetHitPlayer();
+ if (!target)
+ return;
+
+ // prevent client crashes from stacking mounts
+ target->RemoveAurasByType(SPELL_AURA_MOUNTED);
+
+ uint32 spellId = SPELL_MAGIC_ROOSTER_NORMAL;
+ switch (target->getRace())
+ {
+ case RACE_DRAENEI:
+ if (target->getGender() == GENDER_MALE)
+ spellId = SPELL_MAGIC_ROOSTER_DRAENEI_MALE;
+ break;
+ case RACE_TAUREN:
+ if (target->getGender() == GENDER_MALE)
+ spellId = SPELL_MAGIC_ROOSTER_TAUREN_MALE;
+ break;
+ default:
+ break;
+ }
+
+ target->CastSpell(target, spellId, true);
+ }
+
+ void Register()
+ {
+ OnEffect += SpellEffectFn(spell_gen_magic_rooster_SpellScript::HandleScript, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_gen_magic_rooster_SpellScript();
+ }
+};
void AddSC_generic_spell_scripts()
{
@@ -1132,4 +1187,5 @@ void AddSC_generic_spell_scripts()
new spell_gen_seaforium_blast();
new spell_gen_turkey_marker();
new spell_gen_lifeblood();
+ new spell_gen_magic_rooster();
}