diff --git a/OpenRA.Mods.Common/Orders/PlaceBuildingOrderGenerator.cs b/OpenRA.Mods.Common/Orders/PlaceBuildingOrderGenerator.cs index b47d5655ad..492efe2bc2 100644 --- a/OpenRA.Mods.Common/Orders/PlaceBuildingOrderGenerator.cs +++ b/OpenRA.Mods.Common/Orders/PlaceBuildingOrderGenerator.cs @@ -230,10 +230,10 @@ namespace OpenRA.Mods.Common.Orders foreach (var r in previewRenderables) yield return r; - var res = world.WorldActor.Trait(); + var res = world.WorldActor.TraitOrDefault(); var isCloseEnough = buildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, building, topLeft); foreach (var t in buildingInfo.Tiles(topLeft)) - cells.Add(t, MakeCellType(isCloseEnough && world.IsCellBuildable(t, buildingInfo) && res.GetResource(t) == null)); + cells.Add(t, MakeCellType(isCloseEnough && world.IsCellBuildable(t, buildingInfo) && (res == null || res.GetResource(t) == null))); } var cellPalette = wr.Palette(placeBuildingInfo.Palette); diff --git a/OpenRA.Mods.Common/Traits/Buildings/BuildingUtils.cs b/OpenRA.Mods.Common/Traits/Buildings/BuildingUtils.cs index 35c604f6dc..ff135dfece 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/BuildingUtils.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/BuildingUtils.cs @@ -43,9 +43,9 @@ namespace OpenRA.Mods.Common.Traits if (building.AllowInvalidPlacement) return true; - var res = world.WorldActor.Trait(); + var res = world.WorldActor.TraitOrDefault(); return building.Tiles(topLeft).All( - t => world.Map.Contains(t) && res.GetResource(t) == null && + t => world.Map.Contains(t) && (res == null || res.GetResource(t) == null) && world.IsCellBuildable(t, building, toIgnore)); }