diff options
| author | Gustavo <sirikfoll@hotmail.com> | 2016-08-23 08:21:03 -0300 |
|---|---|---|
| committer | SnapperRy <snapperryen@gmail.com> | 2016-08-23 13:21:03 +0200 |
| commit | 5661b4686bf7a1d2147d9fdb47115883a4d11ecf (patch) | |
| tree | 19e5715b9d99da6a373c3a1b159bea2712e96f24 /src | |
| parent | 433beb77e32db097bf15f9faea222e99ad6373e3 (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
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 715e4d4ed2d..bf0fc3d0565 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, @@ -2523,6 +2592,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(); |
