aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/scripts/world_scripts_full.sql1
-rw-r--r--sql/updates/world/2011_06_03_01_world_spell_script_names.sql3
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp56
3 files changed, 60 insertions, 0 deletions
diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql
index c6147308449..3ec8651497f 100644
--- a/sql/scripts/world_scripts_full.sql
+++ b/sql/scripts/world_scripts_full.sql
@@ -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'),
diff --git a/sql/updates/world/2011_06_03_01_world_spell_script_names.sql b/sql/updates/world/2011_06_03_01_world_spell_script_names.sql
new file mode 100644
index 00000000000..92dad52f1dd
--- /dev/null
+++ b/sql/updates/world/2011_06_03_01_world_spell_script_names.sql
@@ -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');
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();
}