diff --git a/OpenRA.Server/Server.cs b/OpenRA.Server/Server.cs index 1c9e579e76..0a82481568 100644 --- a/OpenRA.Server/Server.cs +++ b/OpenRA.Server/Server.cs @@ -313,6 +313,21 @@ namespace OpenRA.Server DispatchOrders(null, 0, new ServerOrder(0, "SetPalette", pal.ToString()).Serialize()); } + + if (so.Data.StartsWith("/race ")) + { + int race; + if (!int.TryParse(so.Data.Substring(6), out race) || race < 0 || race > 1) + { + Console.WriteLine("Invalid race: {0}", + so.Data.Substring(6)); + return; + } + + DispatchOrders(null, 0, + new ServerOrder(0, "SetRace", race.ToString()).Serialize()); + } + break; } } diff --git a/OpenRa.Game/UnitOrders.cs b/OpenRa.Game/UnitOrders.cs index 1b7f66e691..c8953b8cde 100755 --- a/OpenRa.Game/UnitOrders.cs +++ b/OpenRa.Game/UnitOrders.cs @@ -119,7 +119,15 @@ namespace OpenRa.Game order.Player.PlayerName = order.TargetString; break; } - + case "SetRace": + { + order.Player.Race = order.TargetString == "0" + ? Race.Soviet : Race.Allies; + Game.chat.AddLine(Pair.New(order.Player.PlayerName, + string.Format("is now playing {0}", + order.Player.Race))); + break; + } case "SetLag": { int lag = int.Parse(order.TargetString); diff --git a/session.ini b/session.ini index 6e7bfd0aca..48ca3cbcc1 100644 --- a/session.ini +++ b/session.ini @@ -5,7 +5,8 @@ [UNITS] s0=Multi0,mcv,600,2580,0,Guard,None -s1=Multi1,mcv,600,10900,0,Guard,None -s2=Multi2,mcv,600,2662,0,Guard,None -s3=Multi3,mcv,600,10980,0,Guard,None +s3=Multi1,mcv,600,10980,0,Guard,None +s1=Multi2,mcv,600,10900,0,Guard,None +s2=Multi3,mcv,600,2662,0,Guard,None +