diff --git a/Server/src/main/core/game/bots/AIRepository.kt b/Server/src/main/core/game/bots/AIRepository.kt index ea17452ad..113a565f7 100644 --- a/Server/src/main/core/game/bots/AIRepository.kt +++ b/Server/src/main/core/game/bots/AIRepository.kt @@ -43,7 +43,7 @@ class AIRepository { } @JvmStatic fun clearAllBots() { - PulseRepository.forEach { (_, it) -> + PulseRepository.toList().forEach { (_, it) -> it.stop(); it.botScript.bot.clear(); AIPlayer.deregister((it.botScript.bot as AIPlayer).uid) diff --git a/Server/src/main/core/game/node/entity/player/Player.java b/Server/src/main/core/game/node/entity/player/Player.java index 9a4f28dec..57a779f25 100644 --- a/Server/src/main/core/game/node/entity/player/Player.java +++ b/Server/src/main/core/game/node/entity/player/Player.java @@ -351,6 +351,8 @@ public class Player extends Entity { * @param force If we should force removal, a player engaged in combat will otherwise remain active until out of combat. */ public void clear(boolean force) { + if (!isActive()) + return; if (force) { Repository.getDisconnectionQueue().remove(getName()); } diff --git a/Server/src/main/core/game/world/repository/Repository.kt b/Server/src/main/core/game/world/repository/Repository.kt index 11962a3e8..3468c09c8 100644 --- a/Server/src/main/core/game/world/repository/Repository.kt +++ b/Server/src/main/core/game/world/repository/Repository.kt @@ -160,7 +160,6 @@ object Repository { playerNames.remove(player.name) UpdateSequence.renderablePlayers.remove(player) player.session.disconnect() - player.clear(true) } /**