diff options
| author | Shauren <shauren.trinity@gmail.com> | 2011-06-03 22:09:55 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2011-06-03 22:09:55 +0200 |
| commit | 92af66e0a659ee48faa118274a7e17d75b120e5a (patch) | |
| tree | 6e6c1dad68ebe6f510e88049a91c4de4da3a8696 /src | |
| parent | 702424c28701a7bf65a3c01af33916d006795889 (diff) | |
Scripts/Spells: Scripted Magic Rooster mount
Closes #1704
Closes #1733
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 56 |
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(); } |
