diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index ed058d1596..b582377d8f 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -361,15 +361,35 @@ namespace OpenRA.Server void NotifyNewClientOfLobbyInfo(Connection newConn) { - SendOrderTo(newConn, "Message", "Diplomacy Changes: {0}".F(LobbyInfo.GlobalSettings.FragileAlliances)); - SendOrderTo(newConn, "Message", "Allow Cheats: {0}".F(LobbyInfo.GlobalSettings.AllowCheats)); - SendOrderTo(newConn, "Message", "Shroud: {0}".F(LobbyInfo.GlobalSettings.Shroud)); - SendOrderTo(newConn, "Message", "Fog of war: {0}".F(LobbyInfo.GlobalSettings.Fog)); - SendOrderTo(newConn, "Message", "Crates Appear: {0}".F(LobbyInfo.GlobalSettings.Crates)); - SendOrderTo(newConn, "Message", "Build off Ally ConYards: {0}".F(LobbyInfo.GlobalSettings.AllyBuildRadius)); - SendOrderTo(newConn, "Message", "Starting Units: {0}".F(LobbyInfo.GlobalSettings.StartingUnitsClass)); - SendOrderTo(newConn, "Message", "Starting Cash: ${0}".F(LobbyInfo.GlobalSettings.StartingCash)); - SendOrderTo(newConn, "Message", "Tech Level: {0}".F(LobbyInfo.GlobalSettings.TechLevel)); + var defaults = new Session.Global(); + FieldLoader.Load(defaults, Game.modData.Manifest.LobbyDefaults); + + if (LobbyInfo.GlobalSettings.FragileAlliances != defaults.FragileAlliances) + SendOrderTo(newConn, "Message", "Diplomacy Changes: {0}".F(LobbyInfo.GlobalSettings.FragileAlliances)); + + if (LobbyInfo.GlobalSettings.AllowCheats != defaults.AllowCheats) + SendOrderTo(newConn, "Message", "Allow Cheats: {0}".F(LobbyInfo.GlobalSettings.AllowCheats)); + + if (LobbyInfo.GlobalSettings.Shroud != defaults.Shroud) + SendOrderTo(newConn, "Message", "Shroud: {0}".F(LobbyInfo.GlobalSettings.Shroud)); + + if (LobbyInfo.GlobalSettings.Fog != defaults.Fog) + SendOrderTo(newConn, "Message", "Fog of war: {0}".F(LobbyInfo.GlobalSettings.Fog)); + + if (LobbyInfo.GlobalSettings.Crates != defaults.Crates) + SendOrderTo(newConn, "Message", "Crates Appear: {0}".F(LobbyInfo.GlobalSettings.Crates)); + + if (LobbyInfo.GlobalSettings.AllyBuildRadius != defaults.AllyBuildRadius) + SendOrderTo(newConn, "Message", "Build off Ally ConYards: {0}".F(LobbyInfo.GlobalSettings.AllyBuildRadius)); + + if (LobbyInfo.GlobalSettings.StartingUnitsClass != defaults.StartingUnitsClass) + SendOrderTo(newConn, "Message", "Starting Units: {0}".F(LobbyInfo.GlobalSettings.StartingUnitsClass)); + + if (LobbyInfo.GlobalSettings.StartingCash != defaults.StartingCash) + SendOrderTo(newConn, "Message", "Starting Cash: ${0}".F(LobbyInfo.GlobalSettings.StartingCash)); + + if (LobbyInfo.GlobalSettings.TechLevel != defaults.TechLevel) + SendOrderTo(newConn, "Message", "Tech Level: {0}".F(LobbyInfo.GlobalSettings.TechLevel)); } void SetOrderLag() diff --git a/OpenRA.Mods.RA/ServerTraits/LobbyCommands.cs b/OpenRA.Mods.RA/ServerTraits/LobbyCommands.cs index c6312db49e..885a499c6c 100644 --- a/OpenRA.Mods.RA/ServerTraits/LobbyCommands.cs +++ b/OpenRA.Mods.RA/ServerTraits/LobbyCommands.cs @@ -299,6 +299,7 @@ namespace OpenRA.Mods.RA.Server server.SendOrderTo(conn, "Message", "Map was not found on server"); return true; } + server.LobbyInfo.GlobalSettings.Map = s; var oldSlots = server.LobbyInfo.Slots.Keys.ToArray(); @@ -335,6 +336,9 @@ namespace OpenRA.Mods.RA.Server } server.SyncLobbyInfo(); + + server.SendMessage("{0} changed the map to {1}.".F(client.Name, server.Map.Title)); + return true; }}, { "fragilealliance", @@ -354,7 +358,8 @@ namespace OpenRA.Mods.RA.Server bool.TryParse(s, out server.LobbyInfo.GlobalSettings.FragileAlliances); server.SyncLobbyGlobalSettings(); - server.SendMessage("{0} modified to {1}.".F(client.Name, s)); + server.SendMessage("{0} {1} Diplomacy Changes." + .F(client.Name, server.LobbyInfo.GlobalSettings.FragileAlliances ? "enabled" : "disabled")); return true; }}, @@ -375,7 +380,8 @@ namespace OpenRA.Mods.RA.Server bool.TryParse(s, out server.LobbyInfo.GlobalSettings.AllowCheats); server.SyncLobbyGlobalSettings(); - server.SendMessage("{0} modified to {1}.".F(client.Name, s)); + server.SendMessage("{0} {1} Developer Cheats." + .F(client.Name, server.LobbyInfo.GlobalSettings.AllowCheats ? "allowed" : "disallowed")); return true; }}, @@ -396,7 +402,8 @@ namespace OpenRA.Mods.RA.Server bool.TryParse(s, out server.LobbyInfo.GlobalSettings.Shroud); server.SyncLobbyGlobalSettings(); - server.SendMessage("{0} modified to {1}.".F(client.Name, s)); + server.SendMessage("{0} {1} Shroud." + .F(client.Name, server.LobbyInfo.GlobalSettings.Shroud ? "enabled" : "disabled")); return true; }}, @@ -418,7 +425,8 @@ namespace OpenRA.Mods.RA.Server bool.TryParse(s, out server.LobbyInfo.GlobalSettings.Fog); server.SyncLobbyGlobalSettings(); - server.SendMessage("{0} modified to {1}.".F(client.Name, s)); + server.SendMessage("{0} {1} Fog of War." + .F(client.Name, server.LobbyInfo.GlobalSettings.Fog ? "enabled" : "disabled")); return true; }}, @@ -480,7 +488,8 @@ namespace OpenRA.Mods.RA.Server bool.TryParse(s, out server.LobbyInfo.GlobalSettings.Crates); server.SyncLobbyGlobalSettings(); - server.SendMessage("{0} modified to {1}.".F(client.Name, s)); + server.SendMessage("{0} {1} Crates Appear." + .F(client.Name, server.LobbyInfo.GlobalSettings.Crates ? "enabled" : "disabled")); return true; }}, @@ -501,7 +510,8 @@ namespace OpenRA.Mods.RA.Server bool.TryParse(s, out server.LobbyInfo.GlobalSettings.AllyBuildRadius); server.SyncLobbyGlobalSettings(); - server.SendMessage("{0} modified to {1}.".F(client.Name, s)); + server.SendMessage("{0} {1} Build off Ally ConYards." + .F(client.Name, server.LobbyInfo.GlobalSettings.AllyBuildRadius ? "enabled" : "disabled")); return true; }}, @@ -523,6 +533,8 @@ namespace OpenRA.Mods.RA.Server server.LobbyInfo.GlobalSettings.Difficulty = s; server.SyncLobbyGlobalSettings(); + server.SendMessage("{0} changed difficulty to {1}.".F(client.Name, s)); + return true; }}, { "startingunits", @@ -542,7 +554,7 @@ namespace OpenRA.Mods.RA.Server server.LobbyInfo.GlobalSettings.StartingUnitsClass = s; server.SyncLobbyGlobalSettings(); - server.SendMessage("{0} modified to {1}.".F(client.Name, s)); + server.SendMessage("{0} changed Starting Units to {1}.".F(client.Name, s)); return true; }}, @@ -563,7 +575,7 @@ namespace OpenRA.Mods.RA.Server server.LobbyInfo.GlobalSettings.StartingCash = Exts.ParseIntegerInvariant(s); server.SyncLobbyGlobalSettings(); - server.SendMessage("{0} modified to ${1}.".F(client.Name, s)); + server.SendMessage("{0} changed Starting Cash to ${1}.".F(client.Name, s)); return true; }}, @@ -584,7 +596,7 @@ namespace OpenRA.Mods.RA.Server server.LobbyInfo.GlobalSettings.TechLevel = s; server.SyncLobbyInfo(); - server.SendMessage("{0} modified to {1}.".F(client.Name, s)); + server.SendMessage("{0} changed Tech Level to {1}.".F(client.Name, s)); return true; }}, @@ -614,9 +626,10 @@ namespace OpenRA.Mods.RA.Server return true; } - var kickConnIP = server.GetClient(kickConn).IpAddress; + var kickClient = server.GetClient(kickConn); Log.Write("server", "Kicking client {0} as requested", kickClientID); + server.SendMessage("{0} kicked {1} from the server.".F(client.Name, kickClient.Name)); server.SendOrderTo(kickConn, "ServerError", "You have been kicked from the server"); server.DropClient(kickConn); @@ -625,12 +638,14 @@ namespace OpenRA.Mods.RA.Server if (tempBan) { - Log.Write("server", "Temporarily banning client {0} ({1}) as requested", kickClientID, kickConnIP); - server.TempBans.Add(kickConnIP); + Log.Write("server", "Temporarily banning client {0} ({1}) as requested", kickClientID, kickClient.IpAddress); + server.SendMessage("{0} temporarily banned {1} from the server.".F(client.Name, kickClient.Name)); + server.TempBans.Add(kickClient.IpAddress); } server.SyncLobbyClients(); server.SyncLobbySlots(); + return true; }}, { "name",