From 1155c4061f0c68b1456a359e405ad4ed832abb4d Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 12 Mar 2023 00:16:11 -0300 Subject: [PATCH] =?UTF-8?q?fix(Scripts/BlackMorass):=20Fix=20Aeonus=20not?= =?UTF-8?q?=20spawning,=20mobs=20spawning=20duri=E2=80=A6=20(#15346)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../instance_the_black_morass.cpp | 43 +++++++++++++++---- .../TheBlackMorass/the_black_morass.cpp | 7 +-- 2 files changed, 35 insertions(+), 15 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 a9c920290..4831df6a3 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,6 +56,7 @@ public: _currentRift = 0; _shieldPercent = 100; _encounterNPCs.clear(); + _canSpawnPortal = true; // Delay after bosses } void CleanupInstance() @@ -108,12 +109,6 @@ public: player->AreaExploredOrEventHappens(QUEST_MASTER_TOUCH); } }); - break; - } - case DATA_CHRONO_LORD_DEJA: - case DATA_TEMPORUS: - { - _scheduler.RescheduleGroup(CONTEXT_GROUP_RIFTS, 2min + 30s); for (ObjectGuid const& guid : _encounterNPCs) { @@ -126,13 +121,36 @@ public: case NPC_RIFT_LORD: case NPC_RIFT_LORD_2: case NPC_TIME_RIFT: + case NPC_INFINITE_ASSASIN: + case NPC_INFINITE_ASSASIN_2: + case NPC_INFINITE_WHELP: + case NPC_INFINITE_CHRONOMANCER: + case NPC_INFINITE_CHRONOMANCER_2: + case NPC_INFINITE_EXECUTIONER: + case NPC_INFINITE_EXECUTIONER_2: + case NPC_INFINITE_VANQUISHER: + case NPC_INFINITE_VANQUISHER_2: creature->DespawnOrUnsummon(); - break; - default: - break; + break; + default: + break; } } } + + break; + } + case DATA_CHRONO_LORD_DEJA: + case DATA_TEMPORUS: + { + _canSpawnPortal = false; + + _scheduler.Schedule(2min + 30s, [this](TaskContext) + { + _canSpawnPortal = true; + }); + + ScheduleNextPortal(2min + 30s); break; } default: @@ -163,6 +181,12 @@ public: { if (GetCreature(DATA_MEDIVH)) { + // Spawning prevented - there's a 150s delay after a boss dies. + if (!_canSpawnPortal) + { + return; + } + Position spawnPos; if (!_availableRiftPositions.empty()) { @@ -412,6 +436,7 @@ public: GuidSet _encounterNPCs; uint8 _currentRift; int8 _shieldPercent; + bool _canSpawnPortal; TaskScheduler _scheduler; }; }; 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 f744fb3ee..99f4c96b2 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp @@ -263,11 +263,6 @@ struct npc_time_rift : public NullCreatureAI void Reset() override { uint32 riftNumer = _instance->GetData(DATA_RIFT_NUMBER); - if (riftNumer >= 18) - { - me->DespawnOrUnsummon(30000); - return; - } if (riftNumer < 6) { @@ -366,7 +361,7 @@ struct npc_time_rift : public NullCreatureAI switch (events.ExecuteEvent()) { case EVENT_SUMMON_AT_RIFT: - if (_riftKeeperGUID.GetEntry() != NPC_AEONUS) + if (!_instance->GetCreature(DATA_AEONUS)) { DoSelectSummon(); events.ScheduleEvent(EVENT_SUMMON_AT_RIFT, 15000);