diff --git a/OpenRA.Mods.Common/Traits/Buildings/Building.cs b/OpenRA.Mods.Common/Traits/Buildings/Building.cs index 32a5a7fbce..b1defe389b 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/Building.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/Building.cs @@ -46,6 +46,8 @@ namespace OpenRA.Mods.Common.Traits public readonly bool AllowInvalidPlacement = false; + public readonly bool AllowPlacementOnResources = false; + [Desc("Clear smudges from underneath the building footprint.")] public readonly bool RemoveSmudgesOnBuild = true; diff --git a/OpenRA.Mods.Common/Traits/Buildings/BuildingUtils.cs b/OpenRA.Mods.Common/Traits/Buildings/BuildingUtils.cs index e3e24b4be2..b48ff39e3d 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/BuildingUtils.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/BuildingUtils.cs @@ -55,8 +55,8 @@ namespace OpenRA.Mods.Common.Traits return true; var res = world.WorldActor.TraitOrDefault(); - return bi.Tiles(cell).All( - t => world.Map.Contains(t) && (res == null || res.GetResourceType(t) == null) && + return bi.Tiles(cell).All(t => world.Map.Contains(t) && + (bi.AllowPlacementOnResources || res == null || res.GetResourceType(t) == null) && world.IsCellBuildable(t, ai, bi, toIgnore)); }