aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Outland
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2021-05-27 19:05:47 +0300
committerGitHub <noreply@github.com>2021-05-27 19:05:47 +0300
commit78bd609e8a37caa354c42ee6da798ab6c0bb3009 (patch)
treed0b27de54e6a769f6ffa3bdd2ffa87fb67bdd422 /src/server/scripts/Outland
parentf2f0aeb562dfc1a78b04d13a14e3c37a58367619 (diff)
Scripts/Quest: Rework cocooned creatures (#26554)
Diffstat (limited to 'src/server/scripts/Outland')
-rw-r--r--src/server/scripts/Outland/zone_terokkar_forest.cpp69
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 212f2268c66..387b84230de 100644
--- a/src/server/scripts/Outland/zone_terokkar_forest.cpp
+++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp
@@ -177,8 +177,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);
}