diff options
| author | offl <11556157+offl@users.noreply.github.com> | 2021-05-27 19:05:47 +0300 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-03-10 22:36:09 +0100 |
| commit | 09551b663a8190ef2ce9af6ad3e7cb5058e82b2e (patch) | |
| tree | 57b69fe4ce06afce7ae759b7aabc6ee1a90222ce /src/server/scripts/Outland | |
| parent | 86e77891602797be24c30fe7dfad7ed484a4fcf0 (diff) | |
Scripts/Quest: Rework cocooned creatures (#26554)
(cherry picked from commit 78bd609e8a37caa354c42ee6da798ab6c0bb3009)
Diffstat (limited to 'src/server/scripts/Outland')
| -rw-r--r-- | src/server/scripts/Outland/zone_terokkar_forest.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/server/scripts/Outland/zone_terokkar_forest.cpp b/src/server/scripts/Outland/zone_terokkar_forest.cpp index a77e34f1fe2..b30ef7719a6 100644 --- a/src/server/scripts/Outland/zone_terokkar_forest.cpp +++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp @@ -174,8 +174,77 @@ class spell_skyguard_flare : public SpellScript } }; +/*###### +## Quest 10873: Taken in the Night +######*/ + +enum FreeWebbedTerokkar +{ + SPELL_FREE_WEBBED_1 = 38953, + SPELL_FREE_WEBBED_2 = 38955, + SPELL_FREE_WEBBED_3 = 38956, + SPELL_FREE_WEBBED_4 = 38957, + SPELL_FREE_WEBBED_5 = 38958, + SPELL_FREE_WEBBED_6 = 38978 +}; + +uint32 const CocoonSummonSpells[5] = +{ + SPELL_FREE_WEBBED_1, SPELL_FREE_WEBBED_2, SPELL_FREE_WEBBED_3, SPELL_FREE_WEBBED_4, SPELL_FREE_WEBBED_5 +}; + +// 38949 - Terrokar Free Webbed Creature +class spell_free_webbed_terokkar : public SpellScript +{ + PrepareSpellScript(spell_free_webbed_terokkar); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo(CocoonSummonSpells); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetCaster(), Trinity::Containers::SelectRandomContainerElement(CocoonSummonSpells), true); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_free_webbed_terokkar::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +// 38950 - Terokkar Free Webbed Creature ON QUEST +class spell_free_webbed_terokkar_on_quest : public SpellScript +{ + PrepareSpellScript(spell_free_webbed_terokkar_on_quest); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo(CocoonSummonSpells) && ValidateSpellInfo({ SPELL_FREE_WEBBED_6 }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + Unit* target = GetHitUnit(); + + if (roll_chance_i(66)) + caster->CastSpell(caster, Trinity::Containers::SelectRandomContainerElement(CocoonSummonSpells), true); + else + target->CastSpell(caster, SPELL_FREE_WEBBED_6, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_free_webbed_terokkar_on_quest::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + void AddSC_terokkar_forest() { new npc_unkor_the_ruthless(); RegisterSpellScript(spell_skyguard_flare); + RegisterSpellScript(spell_free_webbed_terokkar); + RegisterSpellScript(spell_free_webbed_terokkar_on_quest); } |
