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
+1
View File
@@ -1950,6 +1950,7 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
( 52408, 'spell_gen_seaforium_blast'),
( 25281, 'spell_gen_turkey_marker'),
(-55428, 'spell_gen_lifeblood'),
( 65917, 'spell_gen_magic_rooster'),
-- instances
-- Black Temple
( 41475, 'spell_boss_lady_malande_shield'),
@@ -0,0 +1,3 @@
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_gen_magic_rooster';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(65917, 'spell_gen_magic_rooster');
@@ -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();
}