diff --git a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs index becc7723b2..7763dae29b 100644 --- a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs +++ b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs @@ -407,6 +407,10 @@ namespace OpenRA.Mods.Common.Server server.SendMessage(server.TwoHumansRequiredText); else if (server.Map.Players.Players.Where(p => p.Value.Playable).All(p => !p.Value.AllowBots)) server.SendMessage("Bots have been disabled on this map."); + + var briefing = MissionBriefingOrDefault(server); + if (briefing != null) + server.SendMessage(briefing); }; Action queryFailed = () => @@ -842,6 +846,15 @@ namespace OpenRA.Mods.Common.Server return validator.MakeValid(askColor.RGB, server.Random, terrainColors, playerColors, onError); } + static string MissionBriefingOrDefault(S server) + { + var missionData = server.Map.Rules.Actors["world"].TraitInfoOrDefault(); + if (missionData != null && !string.IsNullOrEmpty(missionData.Briefing)) + return missionData.Briefing.Replace("\\n", "\n"); + + return null; + } + public void ClientJoined(S server, Connection conn) { var client = server.GetClient(conn); @@ -849,6 +862,13 @@ namespace OpenRA.Mods.Common.Server // Validate whether color is allowed and get an alternative if it isn't if (client.Slot == null || !server.LobbyInfo.Slots[client.Slot].LockColor) client.Color = SanitizePlayerColor(server, client.Color, client.Index); + + // Report any custom map details + // HACK: this isn't the best place for this to live, but if we move it somewhere else + // then we need a larger hack to hook the map change event. + var briefing = MissionBriefingOrDefault(server); + if (briefing != null) + server.SendOrderTo(conn, "Message", briefing); } public PlayerReference PlayerReferenceForSlot(S server, Session.Slot slot)