Scripts/Spells: Scripted Magic Rooster mount

Closes #1704
Closes #1733
This commit is contained in:
Shauren
2011-06-03 22:09:55 +02:00
parent 702424c287
commit 92af66e0a6
3 changed files with 60 additions and 0 deletions
@@ -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();
}