Prevent locked spawns from being selected.
This commit is contained in:
@@ -875,6 +875,22 @@ namespace OpenRA.Mods.Common.Server
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check if any other slot has locked the requested spawn
|
||||
if (spawnPoint > 0)
|
||||
{
|
||||
var spawnLockedByAnotherSlot = server.LobbyInfo.Slots.Where(ss => ss.Value.LockSpawn).Any(ss =>
|
||||
{
|
||||
var pr = PlayerReferenceForSlot(server, ss.Value);
|
||||
return pr != null && pr.Spawn == spawnPoint;
|
||||
});
|
||||
|
||||
if (spawnLockedByAnotherSlot)
|
||||
{
|
||||
server.SendOrderTo(conn, "Message", "The spawn point is locked to another player slot.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
targetClient.SpawnPoint = spawnPoint;
|
||||
server.SyncLobbyClients();
|
||||
return true;
|
||||
@@ -1037,5 +1053,13 @@ namespace OpenRA.Mods.Common.Server
|
||||
if (client.Slot == null || !server.LobbyInfo.Slots[client.Slot].LockColor)
|
||||
client.Color = SanitizePlayerColor(server, client.Color, client.Index);
|
||||
}
|
||||
|
||||
public PlayerReference PlayerReferenceForSlot(S server, Session.Slot slot)
|
||||
{
|
||||
if (slot == null)
|
||||
return null;
|
||||
|
||||
return server.MapPlayers.Players[slot.PlayerReference];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user