diff options
author | azazel <none@none> | 2010-09-17 14:24:25 +0600 |
---|---|---|
committer | azazel <none@none> | 2010-09-17 14:24:25 +0600 |
commit | dd1521aa557fa3db62b865b3ed607a70da18d9cd (patch) | |
tree | 29d41b4aac4480f1ce96ba01481a43e45131a322 | |
parent | d8a854d6e04cecee59fab0ad40c22733d7f67020 (diff) |
Scripts/Spell: implement script effect of spell 24751 Trick or Treat (specially for Malcrom)
--HG--
branch : trunk
-rw-r--r-- | sql/base/world_database.sql | 3 | ||||
-rw-r--r-- | sql/updates/9963_world_spell_script_names.sql | 2 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 43 |
3 files changed, 47 insertions, 1 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index 607278675fb..d09726807e4 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -26745,10 +26745,11 @@ LOCK TABLES `spell_script_names` WRITE; /*!40000 ALTER TABLE `spell_script_names` DISABLE KEYS */; INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES -- generic -( 58601, 'spell_gen_remove_flight_auras'), ( 6962, 'spell_gen_pet_summoned'), +( 24751, 'spell_gen_trick_or_treat'), ( 29266, 'spell_creature_permanent_feign_death'), ( 57685, 'spell_creature_permanent_feign_death'), +( 58601, 'spell_gen_remove_flight_auras'), ( 58951, 'spell_creature_permanent_feign_death'), ( 70592, 'spell_creature_permanent_feign_death'), ( 70628, 'spell_creature_permanent_feign_death'), diff --git a/sql/updates/9963_world_spell_script_names.sql b/sql/updates/9963_world_spell_script_names.sql new file mode 100644 index 00000000000..42aedad8c58 --- /dev/null +++ b/sql/updates/9963_world_spell_script_names.sql @@ -0,0 +1,2 @@ +DELETE FROM `spell_script_names` WHERE `spell_id`=24751 AND `ScriptName`='spell_gen_trick_or_treat'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (24751,'spell_gen_trick_or_treat');
\ No newline at end of file diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 15b698a3bfc..90406de2490 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -115,6 +115,47 @@ public: } }; +// 24751 Trick or Treat +enum eTrickOrTreatSpells +{ + SPELL_TRICK = 24714, + SPELL_TREAT = 24715 +}; + +class spell_gen_trick_or_treat : public SpellScriptLoader +{ +public: + spell_gen_trick_or_treat() : SpellScriptLoader("spell_gen_trick_or_treat") {} + + class spell_gen_trick_or_treat_SpellScript : public SpellScript + { + bool Validate(SpellEntry const * /*spellEntry*/) + { + if (!sSpellStore.LookupEntry(SPELL_TRICK)) + return false; + if (!sSpellStore.LookupEntry(SPELL_TREAT)) + return false; + return true; + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + if (Unit* pTarget = GetHitUnit()) + GetCaster()->CastSpell(pTarget, roll_chance_i(50) ? SPELL_TRICK : SPELL_TREAT, true, NULL); + } + + void Register() + { + OnEffect += SpellEffectFn(spell_gen_trick_or_treat_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_gen_trick_or_treat_SpellScript(); + } +}; + class spell_creature_permanent_feign_death : public SpellScriptLoader { public: @@ -149,6 +190,7 @@ enum PvPTrinketTriggeredSpells SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER = 72752, SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER_WOTF = 72757, }; + class spell_pvp_trinket_wotf_shared_cd : public SpellScriptLoader { public: @@ -197,6 +239,7 @@ void AddSC_generic_spell_scripts() { new spell_gen_pet_summoned(); new spell_gen_remove_flight_auras(); + new spell_gen_trick_or_treat(); new spell_creature_permanent_feign_death(); new spell_pvp_trinket_wotf_shared_cd(); } |