diff options
author | Andrew <47818697+Nyeriah@users.noreply.github.com> | 2025-09-23 05:46:17 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-23 10:46:17 +0200 |
commit | 7a0b9785bb5ae22a99e269d8f462295bb43aedc4 (patch) | |
tree | a9ee4a7c71c60aa769afeccf5aa1919ec4b33ece /src/server | |
parent | c6f24a23cc18b2ef8052237008a02093df500dcd (diff) |
fix(Scripts/Gundrak): Update Slad'ran script (#22975)
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp | 112 |
1 files changed, 36 insertions, 76 deletions
diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp index d9e57fab19..68a22e9640 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp @@ -75,21 +75,32 @@ class boss_slad_ran : public CreatureScript public: boss_slad_ran() : CreatureScript("boss_slad_ran") { } - CreatureAI* GetAI(Creature* creature) const override - { - return GetGundrakAI<boss_slad_ranAI>(creature); - } - struct boss_slad_ranAI : public BossAI { - boss_slad_ranAI(Creature* creature) : BossAI(creature, DATA_SLAD_RAN) - { - } + boss_slad_ranAI(Creature* creature) : BossAI(creature, DATA_SLAD_RAN) { } void Reset() override { BossAI::Reset(); _achievement = true; + + ScheduleHealthCheckEvent(90, [&] { + Talk(SAY_SUMMON_SNAKES); + + ScheduleTimedEvent(1s, [&] { + for (uint8 i = MAX_CONSTRICTOR; i < MAX_SUMMONS; ++i) + me->SummonCreature(NPC_SLADRAN_VIPER, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20 * IN_MILLISECONDS); + }, 8s); + }); + + ScheduleHealthCheckEvent(DUNGEON_MODE(50, 75), [&] { + Talk(SAY_SUMMON_CONSTRICTORS); + + ScheduleTimedEvent(1s, [&] { + for (uint8 i = 0; i < MAX_CONSTRICTOR; ++i) + me->SummonCreature(NPC_SLADRAN_CONSTRICTORS, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20 * IN_MILLISECONDS); + }, 3s, 5s); + }); } uint32 GetData(uint32 data) const override @@ -110,11 +121,18 @@ public: Talk(SAY_AGGRO); BossAI::JustEngagedWith(who); - events.ScheduleEvent(EVENT_POISON_NOVA, 10s); - events.ScheduleEvent(EVENT_POWERFULL_BITE, 3s); - events.ScheduleEvent(EVENT_VENOM_BOLT, 15s); - events.ScheduleEvent(EVENT_CHECK_HEALTH1, 1s); - events.ScheduleEvent(EVENT_CHECK_HEALTH2, 1s); + ScheduleTimedEvent(10s, [&]{ + Talk(EMOTE_NOVA); + DoCastAOE(SPELL_POISON_NOVA); + }, 15s); + + ScheduleTimedEvent(3s, [&] { + DoCastVictim(SPELL_POWERFULL_BITE); + }, 10s); + + ScheduleTimedEvent(15s, [&] { + DoCastVictim(SPELL_VENOM_BOLT); + }, 10s); } void JustDied(Unit* killer) override @@ -133,72 +151,14 @@ public: } } - void JustSummoned(Creature* summon) override - { - summon->SetInCombatWithZone(); - summons.Summon(summon); - } - - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - switch (events.ExecuteEvent()) - { - case EVENT_CHECK_HEALTH1: - if (me->HealthBelowPct(70)) - { - Talk(SAY_SUMMON_SNAKES); - events.ScheduleEvent(EVENT_SUMMON1, 1s); - break; - } - events.ScheduleEvent(EVENT_CHECK_HEALTH1, 1s); - break; - case EVENT_CHECK_HEALTH2: - if (me->HealthBelowPct(50)) - { - Talk(SAY_SUMMON_CONSTRICTORS); - events.ScheduleEvent(EVENT_SUMMON2, 1s); - break; - } - events.ScheduleEvent(EVENT_CHECK_HEALTH2, 1s); - break; - case EVENT_POISON_NOVA: - Talk(EMOTE_NOVA); - me->CastSpell(me, SPELL_POISON_NOVA, false); - events.ScheduleEvent(EVENT_POISON_NOVA, 15s); - break; - case EVENT_POWERFULL_BITE: - me->CastSpell(me->GetVictim(), SPELL_POWERFULL_BITE, false); - events.ScheduleEvent(EVENT_POWERFULL_BITE, 10s); - break; - case EVENT_VENOM_BOLT: - me->CastSpell(me->GetVictim(), SPELL_VENOM_BOLT, false); - events.ScheduleEvent(EVENT_VENOM_BOLT, 10s); - break; - case EVENT_SUMMON1: - for (uint8 i = MAX_CONSTRICTOR; i < MAX_SUMMONS; ++i) - me->SummonCreature(NPC_SLADRAN_VIPER, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20 * IN_MILLISECONDS); - events.ScheduleEvent(EVENT_SUMMON1, 8s); - break; - case EVENT_SUMMON2: - for (uint8 i = 0; i < MAX_CONSTRICTOR; ++i) - me->SummonCreature(NPC_SLADRAN_CONSTRICTORS, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20 * IN_MILLISECONDS); - events.ScheduleEvent(EVENT_SUMMON2, 3s, 5s); - break; - } - - DoMeleeAttackIfReady(); - } - private: bool _achievement; }; + + CreatureAI* GetAI(Creature* creature) const override + { + return GetGundrakAI<boss_slad_ranAI>(creature); + } }; class spell_sladran_grip_of_sladran_aura : public AuraScript |