diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index dec8dbd783..35c8378e0e 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -408,7 +408,19 @@ namespace OpenRA.Server void SetOrderLag() { - LobbyInfo.GlobalSettings.OrderLatency = LobbyInfo.IsSinglePlayer ? 1 : 3; + int latency = 1; + if (!LobbyInfo.IsSinglePlayer) + { + var gameSpeeds = Game.ModData.Manifest.Get(); + GameSpeed speed; + if (gameSpeeds.Speeds.TryGetValue(LobbyInfo.GlobalSettings.GameSpeedType, out speed)) + latency = speed.OrderLatency; + else + latency = 3; + } + + LobbyInfo.GlobalSettings.OrderLatency = latency; + SyncLobbyGlobalSettings(); } diff --git a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs index bf8b372fad..bcb18c402c 100644 --- a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs +++ b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs @@ -695,7 +695,8 @@ namespace OpenRA.Mods.Common.Server server.LobbyInfo.GlobalSettings.GameSpeedType = s; server.LobbyInfo.GlobalSettings.Timestep = speed.Timestep; - server.LobbyInfo.GlobalSettings.OrderLatency = speed.OrderLatency; + server.LobbyInfo.GlobalSettings.OrderLatency = + server.LobbyInfo.IsSinglePlayer ? 1 : speed.OrderLatency; server.SyncLobbyInfo(); server.SendMessage("{0} changed Game Speed to {1}.".F(client.Name, speed.Name));