diff --git a/OpenRA.Server/Server.cs b/OpenRA.Server/Server.cs index be628cd82b..1c9e579e76 100644 --- a/OpenRA.Server/Server.cs +++ b/OpenRA.Server/Server.cs @@ -299,6 +299,20 @@ namespace OpenRA.Server DispatchOrders(null, 0, new ServerOrder(0, "SetLag", lag.ToString()).Serialize()); } + + if (so.Data.StartsWith("/pal ")) + { + int pal; + if (!int.TryParse(so.Data.Substring(5), out pal) || pal < 0 || pal > 7) + { + Console.WriteLine("Invalid palette: {0}", + so.Data.Substring(5)); + return; + } + + DispatchOrders(null, 0, + new ServerOrder(0, "SetPalette", pal.ToString()).Serialize()); + } break; } } diff --git a/OpenRa.Game/UnitOrders.cs b/OpenRa.Game/UnitOrders.cs index 94a16ae291..1b7f66e691 100755 --- a/OpenRa.Game/UnitOrders.cs +++ b/OpenRa.Game/UnitOrders.cs @@ -137,6 +137,16 @@ namespace OpenRa.Game lag))); break; } + case "SetPalette": + { + int palette = int.Parse(order.TargetString); + Game.chat.AddLine(Pair.New(order.Player.PlayerName, + string.Format("has changed color to {0}", + palette))); + + order.Player.Palette = palette; + break; + } case "StartGame": { Game.chat.AddLine(Pair.New("Server:", "The game has started."));