From fe283934068a2fa0bb2f7e2e6bda125c6d4db2b0 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 12 Mar 2016 22:18:42 +0000 Subject: [PATCH] Remove invalid bot types when switching maps. --- OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs index 427e923674..671cb96374 100644 --- a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs +++ b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs @@ -357,6 +357,8 @@ namespace OpenRA.Mods.Common.Server // - Observers remain as observers // - Players who now lack a slot are made observers // - Bots who now lack a slot are dropped + // - Bots who are not defined in the map rules are dropped + var botNames = server.Map.Rules.Actors["player"].TraitInfos().Select(t => t.Name); var slots = server.LobbyInfo.Slots.Keys.ToArray(); var i = 0; foreach (var os in oldSlots) @@ -370,7 +372,7 @@ namespace OpenRA.Mods.Common.Server if (c.Slot != null) { // Remove Bot from slot if slot forbids bots - if (c.Bot != null && !server.Map.Players.Players[c.Slot].AllowBots) + if (c.Bot != null && (!server.Map.Players.Players[c.Slot].AllowBots || !botNames.Contains(c.Bot))) server.LobbyInfo.Clients.Remove(c); S.SyncClientToPlayerReference(c, server.Map.Players.Players[c.Slot]); }