diff options
author | Gustavo <sirikfoll@hotmail.com> | 2016-08-23 13:21:03 +0200 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-02-18 14:40:14 +0100 |
commit | 7e57e9a91ba98435ed87b96964eae57e8b10455d (patch) | |
tree | c8b76a27bcd1bfcd03654ea9cc4c4b9f185548bf /src | |
parent | 2574667854b17c20a77e61136ac13d7c0ca1ce15 (diff) |
Improve scripts for quests Breakfast Of Champions and A Bear of an Appetite (#17780)
Properly despawn the related GameObjects after use of the quest item, avoiding multiple use and summon
(cherry picked from commit 5661b4686bf7a1d2147d9fdb47115883a4d11ecf)
Rename 2016_08_99_99_world.sql to 2016_08_23_03_world.sql
(cherry picked from commit 831975fa3426bdec9f9c0647d690e6c9664d5f72)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_quest.cpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index eb4a5ecf24d..b76b51a8fbc 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1127,6 +1127,75 @@ class spell_q9452_cast_net: public SpellScriptLoader } }; +enum PoundDrumSpells +{ + SPELL_SUMMON_DEEP_JORMUNGAR = 66510, + SPELL_STORMFORGED_MOLE_MACHINE = 66492 +}; + +class spell_q14076_14092_pound_drum : public SpellScriptLoader +{ + public: + spell_q14076_14092_pound_drum() : SpellScriptLoader("spell_q14076_14092_pound_drum") { } + + class spell_q14076_14092_pound_drum_SpellScript : public SpellScript + { + PrepareSpellScript(spell_q14076_14092_pound_drum_SpellScript); + + void HandleSummon() + { + Unit* caster = GetCaster(); + + if (roll_chance_i(80)) + caster->CastSpell(caster, SPELL_SUMMON_DEEP_JORMUNGAR, true); + else + caster->CastSpell(caster, SPELL_STORMFORGED_MOLE_MACHINE, true); + } + + void HandleActiveObject(SpellEffIndex /*effIndex*/) + { + GetHitGObj()->SetLootState(GO_JUST_DEACTIVATED); + } + + void Register() override + { + OnCast += SpellCastFn(spell_q14076_14092_pound_drum_SpellScript::HandleSummon); + OnEffectHitTarget += SpellEffectFn(spell_q14076_14092_pound_drum_SpellScript::HandleActiveObject, EFFECT_0, SPELL_EFFECT_ACTIVATE_OBJECT); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_q14076_14092_pound_drum_SpellScript(); + } +}; + +class spell_q12279_cast_net : public SpellScriptLoader +{ + public: + spell_q12279_cast_net() : SpellScriptLoader("spell_q12279_cast_net") { } + + class spell_q12279_cast_net_SpellScript : public SpellScript + { + PrepareSpellScript(spell_q12279_cast_net_SpellScript); + + void HandleActiveObject(SpellEffIndex /*effIndex*/) + { + GetHitGObj()->SetLootState(GO_JUST_DEACTIVATED); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q12279_cast_net_SpellScript::HandleActiveObject, EFFECT_1, SPELL_EFFECT_ACTIVATE_OBJECT); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_q12279_cast_net_SpellScript(); + } +}; + enum HodirsHelm { SAY_1 = 1, @@ -2569,6 +2638,8 @@ void AddSC_quest_spell_scripts() new spell_q13280_13283_plant_battle_standard(); new spell_q14112_14145_chum_the_water(); new spell_q9452_cast_net(); + new spell_q12279_cast_net(); + new spell_q14076_14092_pound_drum(); new spell_q12987_read_pronouncement(); new spell_q12277_wintergarde_mine_explosion(); new spell_q12066_bunny_kill_credit(); |