diff options
author | offl <11556157+offl@users.noreply.github.com> | 2021-04-13 13:44:15 +0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-03-08 21:53:35 +0100 |
commit | 2583aee17aa73f182d6867d504c2720a94deb6dc (patch) | |
tree | 32c4a686ad2342a62923463c4065bd06fa2553a2 /src | |
parent | 30cbb5bd5c63324556c002cf17533d58a765d946 (diff) |
Scripts/Spells: Add script for Salvage Wreckage & update similar scripts (#26357)
Closes #25099
(cherry picked from commit 89c998c08d5360c383bc8d89e417cf99bf1335aa)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_quest.cpp | 175 |
1 files changed, 75 insertions, 100 deletions
diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index a833bad9cc5..b304665e7fc 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1117,125 +1117,68 @@ class spell_q14112_14145_chum_the_water: public SpellScriptLoader } }; -// http://old01.wowhead.com/quest=9452 - Red Snapper - Very Tasty! enum RedSnapperVeryTasty { - ITEM_RED_SNAPPER = 23614, - SPELL_CAST_NET = 29866, + SPELL_FISHED_UP_RED_SNAPPER = 29867, SPELL_FISHED_UP_MURLOC = 29869 }; -class spell_q9452_cast_net: public SpellScriptLoader +// 29866 - Cast Fishing Net +class spell_q9452_cast_net : public SpellScript { - public: - spell_q9452_cast_net() : SpellScriptLoader("spell_q9452_cast_net") { } - - class spell_q9452_cast_net_SpellScript : public SpellScript - { - PrepareSpellScript(spell_q9452_cast_net_SpellScript); - - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_PLAYER; - } + PrepareSpellScript(spell_q9452_cast_net); - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Player* caster = GetCaster()->ToPlayer(); - if (roll_chance_i(66)) - caster->AddItem(ITEM_RED_SNAPPER, 1); - else - caster->CastSpell(caster, SPELL_FISHED_UP_MURLOC, true); - } + bool Validate(SpellInfo const* /*spell*/) override + { + return ValidateSpellInfo({ SPELL_FISHED_UP_RED_SNAPPER, SPELL_FISHED_UP_MURLOC }); + } - void HandleActiveObject(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - GetHitGObj()->SetRespawnTime(roll_chance_i(50) ? 2 * MINUTE : 3 * MINUTE); - GetHitGObj()->Use(GetCaster()); - GetHitGObj()->SetLootState(GO_JUST_DEACTIVATED); - } + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); - void Register() override - { - OnEffectHit += SpellEffectFn(spell_q9452_cast_net_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - OnEffectHitTarget += SpellEffectFn(spell_q9452_cast_net_SpellScript::HandleActiveObject, EFFECT_1, SPELL_EFFECT_ACTIVATE_OBJECT); - } - }; + if (roll_chance_i(66)) + caster->CastSpell(caster, SPELL_FISHED_UP_RED_SNAPPER, true); + else + caster->CastSpell(nullptr, SPELL_FISHED_UP_MURLOC, true); + } - SpellScript* GetSpellScript() const override - { - return new spell_q9452_cast_net_SpellScript(); - } + void Register() override + { + OnEffectHit += SpellEffectFn(spell_q9452_cast_net::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } }; -enum PoundDrumSpells +enum BreakfastOfChampions { 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(50)) - 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 +// 66512 - Pound Drum +class spell_q14076_14092_pound_drum : public SpellScript { - public: - spell_q12279_cast_net() : SpellScriptLoader("spell_q12279_cast_net") { } + PrepareSpellScript(spell_q14076_14092_pound_drum); - class spell_q12279_cast_net_SpellScript : public SpellScript - { - PrepareSpellScript(spell_q12279_cast_net_SpellScript); + bool Validate(SpellInfo const* /*spell*/) override + { + return ValidateSpellInfo({ SPELL_SUMMON_DEEP_JORMUNGAR, SPELL_STORMFORGED_MOLE_MACHINE }); + } - void HandleActiveObject(SpellEffIndex /*effIndex*/) - { - GetHitGObj()->SetLootState(GO_JUST_DEACTIVATED); - } + void HandleSummon() + { + Unit* caster = GetCaster(); - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12279_cast_net_SpellScript::HandleActiveObject, EFFECT_1, SPELL_EFFECT_ACTIVATE_OBJECT); - } - }; + if (roll_chance_i(50)) + caster->CastSpell(caster, SPELL_SUMMON_DEEP_JORMUNGAR, true); + else + caster->CastSpell(caster, SPELL_STORMFORGED_MOLE_MACHINE, true); + } - SpellScript* GetSpellScript() const override - { - return new spell_q12279_cast_net_SpellScript(); - } + void Register() override + { + OnCast += SpellCastFn(spell_q14076_14092_pound_drum::HandleSummon); + } }; enum HodirsHelm @@ -1694,6 +1637,38 @@ class spell_q11010_q11102_q11023_q11008_check_fly_mount : public SpellScriptLoad } }; +enum RecoverTheCargo +{ + SPELL_SUMMON_LOCKBOX = 42288, + SPELL_SUMMON_BURROWER = 42289 +}; + +// 42287 - Salvage Wreckage +class spell_q11140salvage_wreckage : public SpellScript +{ + PrepareSpellScript(spell_q11140salvage_wreckage); + + bool Validate(SpellInfo const* /*spell*/) override + { + return ValidateSpellInfo({ SPELL_SUMMON_LOCKBOX, SPELL_SUMMON_BURROWER }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + + if (roll_chance_i(50)) + caster->CastSpell(caster, SPELL_SUMMON_LOCKBOX, true); + else + caster->CastSpell(nullptr, SPELL_SUMMON_BURROWER, true); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_q11140salvage_wreckage::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + enum SpellZuldrakRat { SPELL_SUMMON_GORGED_LURKING_BASILISK = 50928 @@ -3092,9 +3067,8 @@ void AddSC_quest_spell_scripts() RegisterSpellScript(spell_q13280_13283_plant_battle_standard); RegisterSpellScript(spell_q13280_13283_jump_jets); new spell_q14112_14145_chum_the_water(); - new spell_q9452_cast_net(); - new spell_q12279_cast_net(); - new spell_q14076_14092_pound_drum(); + RegisterSpellScript(spell_q9452_cast_net); + RegisterSpellScript(spell_q14076_14092_pound_drum); new spell_q12987_read_pronouncement(); new spell_q12277_wintergarde_mine_explosion(); new spell_q12066_bunny_kill_credit(); @@ -3106,6 +3080,7 @@ void AddSC_quest_spell_scripts() new spell_q11010_q11102_q11023_aggro_burst(); new spell_q11010_q11102_q11023_choose_loc(); new spell_q11010_q11102_q11023_q11008_check_fly_mount(); + RegisterSpellScript(spell_q11140salvage_wreckage); new spell_q12372_azure_on_death_force_whisper(); new spell_q12527_zuldrak_rat(); new spell_q12661_q12669_q12676_q12677_q12713_summon_stefan(); |