From 527f4628262b95b198666a874b23551152aaef60 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Tue, 7 Mar 2023 09:19:48 -0300 Subject: [PATCH] fix(Scripts/Blackmorass): Clean unnecessary repetitions (#15299) --- .../instance_the_black_morass.cpp | 73 ++++++------------- .../TheBlackMorass/the_black_morass.cpp | 2 +- 2 files changed, 23 insertions(+), 52 deletions(-) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp index e98a27561..762df4d07 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp @@ -56,7 +56,6 @@ public: _currentRift = 0; _shieldPercent = 100; _encounterNPCs.clear(); - _timerToNextBoss = 0; } void CleanupInstance() @@ -114,6 +113,8 @@ public: case DATA_CHRONO_LORD_DEJA: case DATA_TEMPORUS: { + _scheduler.RescheduleGroup(CONTEXT_GROUP_RIFTS, 2min + 30s); + for (ObjectGuid const& guid : _encounterNPCs) { if (Creature* creature = instance->GetCreature(guid)) @@ -132,17 +133,6 @@ public: } } } - - if (!_timerToNextBoss || _timerToNextBoss > 30 * IN_MILLISECONDS) - { - ScheduleNextPortal(30s); - } - else - { - ScheduleNextPortal(Milliseconds(_timerToNextBoss)); - } - - _timerToNextBoss = (instance->IsHeroic() ? 300 : 150) * IN_MILLISECONDS; break; } default: @@ -190,23 +180,21 @@ public: } // Here we check if we have available rift spots. - // If there are spots available, spawn a rift instantly. - if (!_availableRiftPositions.empty()) + if (_currentRift < 18) { - context.Repeat((_currentRift >= 13 ? 2min : 90s)); - } - else - { - context.Repeat(3s); + if (!_availableRiftPositions.empty()) + { + context.Repeat((_currentRift >= 13 ? 2min : 90s)); + } + else + { + context.Repeat(4s); + } } } - else - { - context.Repeat(3s); - } - - context.SetGroup(CONTEXT_GROUP_RIFTS); } + + context.SetGroup(CONTEXT_GROUP_RIFTS); }); } @@ -242,21 +230,19 @@ public: switch (creature->GetEntry()) { case NPC_TIME_RIFT: - _availableRiftPositions.push_back(creature->GetHomePosition()); - - if (GetBossState(DATA_AEONUS) != DONE) + if (_currentRift < 18) { - // Here we check if we have available rift spots. - // If there are spots available, spawn a rift instantly. - if (!_availableRiftPositions.empty()) - { - ScheduleNextPortal(4s); - } - else + if (!_availableRiftPositions.empty() && _availableRiftPositions.size() < 3) { ScheduleNextPortal((_currentRift >= 13 ? 2min : 90s)); } + else + { + ScheduleNextPortal(4s); + } } + + _availableRiftPositions.push_back(creature->GetHomePosition()); [[fallthrough]]; case NPC_CHRONO_LORD_DEJA: case NPC_INFINITE_CHRONO_LORD: @@ -291,8 +277,6 @@ public: ScheduleNextPortal(3s); - _timerToNextBoss = (instance->IsHeroic() ? 300 : 150) * IN_MILLISECONDS; - for (ObjectGuid const& guid : _encounterNPCs) { if (guid.GetEntry() == NPC_DP_BEAM_STALKER) @@ -463,24 +447,11 @@ public: void Update(uint32 diff) override { - if (_timerToNextBoss) - { - if (_timerToNextBoss <= diff) - { - _timerToNextBoss = 0; - } - else - { - _timerToNextBoss -= diff; - } - } - - _scheduler.Update(); + _scheduler.Update(diff); } protected: std::list _availableRiftPositions; - uint32 _timerToNextBoss; GuidSet _encounterNPCs; uint8 _currentRift; int8 _shieldPercent; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp index cd8877d6c..cab4a86c8 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp @@ -269,7 +269,7 @@ struct npc_time_rift : public NullCreatureAI void JustSummoned(Creature* creature) override { - if (creature->GetEntry() != NPC_AEONUS) + if (creature->GetEntry() != NPC_AEONUS && _riftKeeperGUID.IsEmpty()) { _riftKeeperGUID = creature->GetGUID(); }