diff --git a/OpenRA.Game/Map/TileSet.cs b/OpenRA.Game/Map/TileSet.cs index c7b9ff6fe8..4d0a47bd90 100644 --- a/OpenRA.Game/Map/TileSet.cs +++ b/OpenRA.Game/Map/TileSet.cs @@ -53,6 +53,7 @@ namespace OpenRA public readonly HashSet AcceptsSmudgeType = new HashSet(); public readonly bool IsWater = false; // TODO: Remove this public readonly Color Color; + public readonly bool RestrictPlayerColor = false; public readonly string CustomCursor; // Private default ctor for serialization comparison diff --git a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs index 62b5a02d36..86dc76dfb8 100644 --- a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs +++ b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs @@ -291,7 +291,7 @@ namespace OpenRA.Mods.Common.Server // Pick a random color for the bot var validator = server.ModData.Manifest.Get(); var tileset = server.Map.Rules.TileSets[server.Map.Tileset]; - var terrainColors = tileset.TerrainInfo.Select(ti => ti.Color); + var terrainColors = tileset.TerrainInfo.Where(ti => ti.RestrictPlayerColor).Select(ti => ti.Color); var playerColors = server.LobbyInfo.Clients.Select(c => c.Color.RGB) .Concat(server.MapPlayers.Players.Values.Select(p => p.Color.RGB)); bot.Color = bot.PreferredColor = validator.RandomValidColor(server.Random, terrainColors, playerColors); @@ -975,7 +975,7 @@ namespace OpenRA.Mods.Common.Server }; var tileset = server.Map.Rules.TileSets[server.Map.Tileset]; - var terrainColors = tileset.TerrainInfo.Select(ti => ti.Color).ToList(); + var terrainColors = tileset.TerrainInfo.Where(ti => ti.RestrictPlayerColor).Select(ti => ti.Color).ToList(); var playerColors = server.LobbyInfo.Clients.Where(c => c.Index != playerIndex).Select(c => c.Color.RGB) .Concat(server.MapPlayers.Players.Values.Select(p => p.Color.RGB)).ToList(); diff --git a/mods/cnc/tilesets/desert.yaml b/mods/cnc/tilesets/desert.yaml index 3e102cd34b..334dee8689 100644 --- a/mods/cnc/tilesets/desert.yaml +++ b/mods/cnc/tilesets/desert.yaml @@ -14,11 +14,13 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 54FCFC + RestrictPlayerColor: true TerrainType@Clear: Type: Clear TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 865F45 + RestrictPlayerColor: true TerrainType@River: Type: River TargetTypes: Ground @@ -42,6 +44,7 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: A1E21C + RestrictPlayerColor: true TerrainType@Tree: Type: Tree TargetTypes: Ground @@ -56,6 +59,7 @@ Terrain: TargetTypes: Water IsWater: True Color: 5DA5CE + RestrictPlayerColor: true Templates: Template@255: diff --git a/mods/cnc/tilesets/jungle.yaml b/mods/cnc/tilesets/jungle.yaml index fc2817de41..2fb453596d 100644 --- a/mods/cnc/tilesets/jungle.yaml +++ b/mods/cnc/tilesets/jungle.yaml @@ -14,11 +14,13 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 54FCFC + RestrictPlayerColor: true TerrainType@Clear: Type: Clear TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 285C30 + RestrictPlayerColor: true TerrainType@River: Type: River TargetTypes: Ground @@ -42,6 +44,7 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: A1E21C + RestrictPlayerColor: true TerrainType@Tree: Type: Tree TargetTypes: Ground @@ -56,6 +59,7 @@ Terrain: TargetTypes: Water IsWater: True Color: 5C74A4 + RestrictPlayerColor: true Templates: Template@255: diff --git a/mods/cnc/tilesets/snow.yaml b/mods/cnc/tilesets/snow.yaml index 7e40c6f4eb..3c41c3257b 100644 --- a/mods/cnc/tilesets/snow.yaml +++ b/mods/cnc/tilesets/snow.yaml @@ -14,11 +14,13 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 54FCFC + RestrictPlayerColor: true TerrainType@Clear: Type: Clear TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: C4C4C4 + RestrictPlayerColor: true TerrainType@River: Type: River TargetTypes: Ground @@ -42,6 +44,7 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: A1E21C + RestrictPlayerColor: true TerrainType@Tree: Type: Tree TargetTypes: Ground @@ -56,6 +59,7 @@ Terrain: TargetTypes: Water IsWater: True Color: 5C74A4 + RestrictPlayerColor: true Templates: Template@255: diff --git a/mods/cnc/tilesets/temperat.yaml b/mods/cnc/tilesets/temperat.yaml index 6c4b7f20b6..c2baa7180d 100644 --- a/mods/cnc/tilesets/temperat.yaml +++ b/mods/cnc/tilesets/temperat.yaml @@ -14,11 +14,13 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 54FCFC + RestrictPlayerColor: true TerrainType@Clear: Type: Clear TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 284428 + RestrictPlayerColor: true TerrainType@River: Type: River TargetTypes: Ground @@ -42,6 +44,7 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: A1E21C + RestrictPlayerColor: true TerrainType@Tree: Type: Tree TargetTypes: Ground @@ -56,6 +59,7 @@ Terrain: TargetTypes: Water IsWater: True Color: 5C74A4 + RestrictPlayerColor: true Templates: Template@255: diff --git a/mods/cnc/tilesets/winter.yaml b/mods/cnc/tilesets/winter.yaml index 5eda5cc96d..b53bbb07a0 100644 --- a/mods/cnc/tilesets/winter.yaml +++ b/mods/cnc/tilesets/winter.yaml @@ -14,11 +14,13 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 54FCFC + RestrictPlayerColor: true TerrainType@Clear: Type: Clear TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 284428 + RestrictPlayerColor: true TerrainType@River: Type: River TargetTypes: Ground @@ -42,6 +44,7 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: A1E21C + RestrictPlayerColor: true TerrainType@Tree: Type: Tree TargetTypes: Ground @@ -56,6 +59,7 @@ Terrain: TargetTypes: Water IsWater: True Color: 5C74A4 + RestrictPlayerColor: true Templates: Template@255: diff --git a/mods/d2k/tilesets/arrakis.yaml b/mods/d2k/tilesets/arrakis.yaml index d581f961df..834b64c6bb 100644 --- a/mods/d2k/tilesets/arrakis.yaml +++ b/mods/d2k/tilesets/arrakis.yaml @@ -33,6 +33,7 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: RockCrater Color: CE8C42 + RestrictPlayerColor: true TerrainType@Rough: Type: Rough TargetTypes: Ground @@ -43,10 +44,12 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: SandCrater Color: D0C0A0 + RestrictPlayerColor: true TerrainType@Spice: Type: Spice TargetTypes: Ground Color: EF944A + RestrictPlayerColor: true TerrainType@Transition: Type: Transition TargetTypes: Ground diff --git a/mods/ra/tilesets/desert.yaml b/mods/ra/tilesets/desert.yaml index 4b9363911f..2be95e1601 100644 --- a/mods/ra/tilesets/desert.yaml +++ b/mods/ra/tilesets/desert.yaml @@ -24,16 +24,19 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 865F45 + RestrictPlayerColor: true TerrainType@Gems: Type: Gems TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 8470FF + RestrictPlayerColor: true TerrainType@Ore: Type: Ore TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 948060 + RestrictPlayerColor: true TerrainType@River: Type: River TargetTypes: Ground @@ -66,6 +69,7 @@ Terrain: TargetTypes: Water IsWater: True Color: 5DA5CE + RestrictPlayerColor: true Templates: Template@255: diff --git a/mods/ra/tilesets/interior.yaml b/mods/ra/tilesets/interior.yaml index ed75844330..1a152a9b13 100644 --- a/mods/ra/tilesets/interior.yaml +++ b/mods/ra/tilesets/interior.yaml @@ -19,11 +19,13 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 8470FF + RestrictPlayerColor: true TerrainType@Ore: Type: Ore TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 948060 + RestrictPlayerColor: true TerrainType@Tree: Type: Tree TargetTypes: Ground @@ -32,6 +34,7 @@ Terrain: Type: Wall TargetTypes: Ground Color: D0C0A0 + RestrictPlayerColor: true Templates: Template@255: diff --git a/mods/ra/tilesets/snow.yaml b/mods/ra/tilesets/snow.yaml index 6b42b5e27d..e13e8f81c8 100644 --- a/mods/ra/tilesets/snow.yaml +++ b/mods/ra/tilesets/snow.yaml @@ -19,16 +19,19 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: C4C4C4 + RestrictPlayerColor: true TerrainType@Gems: Type: Gems TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 8470FF + RestrictPlayerColor: true TerrainType@Ore: Type: Ore TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 948060 + RestrictPlayerColor: true TerrainType@River: Type: River TargetTypes: Ground @@ -61,6 +64,7 @@ Terrain: TargetTypes: Water IsWater: True Color: 5C74A4 + RestrictPlayerColor: true Templates: Template@255: diff --git a/mods/ra/tilesets/temperat.yaml b/mods/ra/tilesets/temperat.yaml index e5b72644cf..502f5cb98c 100644 --- a/mods/ra/tilesets/temperat.yaml +++ b/mods/ra/tilesets/temperat.yaml @@ -19,16 +19,19 @@ Terrain: TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 284428 + RestrictPlayerColor: true TerrainType@Gems: Type: Gems TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 8470FF + RestrictPlayerColor: true TerrainType@Ore: Type: Ore TargetTypes: Ground AcceptsSmudgeType: Crater, Scorch Color: 948060 + RestrictPlayerColor: true TerrainType@River: Type: River TargetTypes: Ground @@ -61,6 +64,7 @@ Terrain: TargetTypes: Water IsWater: True Color: 5C74A4 + RestrictPlayerColor: true Templates: Template@255: diff --git a/mods/ts/tilesets/snow.yaml b/mods/ts/tilesets/snow.yaml index 413ea358a1..37666db14d 100644 --- a/mods/ts/tilesets/snow.yaml +++ b/mods/ts/tilesets/snow.yaml @@ -13,6 +13,7 @@ Terrain: AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch Color: C7C9FA TargetTypes: Ground + RestrictPlayerColor: true TerrainType@Road: Type: Road Color: 2D2B28 @@ -30,6 +31,7 @@ Terrain: Color: 3D4148 TargetTypes: Water IsWater: True + RestrictPlayerColor: true TerrainType@DirtRoad: Type: DirtRoad Color: 82838F @@ -47,11 +49,13 @@ Terrain: AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch Color: 009000 TargetTypes: Ground + RestrictPlayerColor: true TerrainType@BlueTiberium: Type: BlueTiberium AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch Color: 202080 TargetTypes: Ground + RestrictPlayerColor: true TerrainType@Veins: Type: Veins Color: 000000 diff --git a/mods/ts/tilesets/temperate.yaml b/mods/ts/tilesets/temperate.yaml index 5e3600d56b..7bdfdc40cb 100644 --- a/mods/ts/tilesets/temperate.yaml +++ b/mods/ts/tilesets/temperate.yaml @@ -13,6 +13,7 @@ Terrain: AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch Color: 745537 TargetTypes: Ground + RestrictPlayerColor: true TerrainType@Road: Type: Road Color: 745537 @@ -30,6 +31,7 @@ Terrain: Color: 745537 TargetTypes: Water IsWater: True + RestrictPlayerColor: true TerrainType@DirtRoad: Type: DirtRoad Color: 745537 @@ -47,11 +49,13 @@ Terrain: AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch Color: 009000 TargetTypes: Ground + RestrictPlayerColor: true TerrainType@BlueTiberium: Type: BlueTiberium AcceptsSmudgeType: SmallCrater, MediumCrater, LargeCrater, SmallScorch, MediumScorch, LargeScorch Color: 202080 TargetTypes: Ground + RestrictPlayerColor: true TerrainType@Veins: Type: Veins Color: 000000