diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp index 13778decd..358678794 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp @@ -209,10 +209,36 @@ struct boss_moroes : public BossAI return Acore::Containers::SelectRandomContainerElement(guestList); } + bool CheckGuestsInRoom() + { + bool guestsInRoom = true; + summons.DoForAllSummons([&guestsInRoom](WorldObject* summon) + { + if ((summon->ToCreature()->GetPositionX()) < -11028.f || (summon->ToCreature()->GetPositionY()) < -1955.f) //boundaries of the two doors + { + guestsInRoom = false; + return false; + } + return true; + }); + + return guestsInRoom; + } + void UpdateAI(uint32 diff) override { scheduler.Update(diff); + if (!CheckGuestsInRoom()) + { + EnterEvadeMode(); + summons.DoForAllSummons([](WorldObject* summon) + { + summon->ToCreature()->AI()->EnterEvadeMode(); + }); + return; + } + if (!UpdateVictim()) return;