diff --git a/OpenRA.Mods.Common/Traits/Buildings/BaseProvider.cs b/OpenRA.Mods.Common/Traits/Buildings/BaseProvider.cs index 1881d7aec5..1bf56f6edb 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/BaseProvider.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/BaseProvider.cs @@ -45,9 +45,9 @@ namespace OpenRA.Mods.Common.Traits this.self = self; devMode = self.Owner.PlayerActor.Trait(); progress = total = info.InitialDelay; - var mapBuildRadius = self.World.WorldActor.Trait(); - allyBuildEnabled = mapBuildRadius.AllyBuildRadiusEnabled; - buildRadiusEnabled = mapBuildRadius.BuildRadiusEnabled; + var mapBuildRadius = self.World.WorldActor.TraitOrDefault(); + allyBuildEnabled = mapBuildRadius != null && mapBuildRadius.AllyBuildRadiusEnabled; + buildRadiusEnabled = mapBuildRadius != null && mapBuildRadius.BuildRadiusEnabled; } void INotifyCreated.Created(Actor self) diff --git a/OpenRA.Mods.Common/Traits/Buildings/Building.cs b/OpenRA.Mods.Common/Traits/Buildings/Building.cs index 8a76576d3c..8534d10570 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/Building.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/Building.cs @@ -146,10 +146,10 @@ namespace OpenRA.Mods.Common.Traits public BaseProvider FindBaseProvider(World world, Player p, CPos topLeft) { var center = world.Map.CenterOfCell(topLeft) + CenterOffset(world); - var mapBuildRadius = world.WorldActor.Trait(); - var allyBuildEnabled = mapBuildRadius.AllyBuildRadiusEnabled; + var mapBuildRadius = world.WorldActor.TraitOrDefault(); + var allyBuildEnabled = mapBuildRadius != null && mapBuildRadius.AllyBuildRadiusEnabled; - if (!mapBuildRadius.BuildRadiusEnabled) + if (mapBuildRadius == null || !mapBuildRadius.BuildRadiusEnabled) return null; foreach (var bp in world.ActorsWithTrait()) @@ -176,12 +176,12 @@ namespace OpenRA.Mods.Common.Traits public virtual bool IsCloseEnoughToBase(World world, Player p, ActorInfo ai, CPos topLeft) { var requiresBuildableArea = ai.TraitInfoOrDefault(); - var mapBuildRadius = world.WorldActor.Trait(); + var mapBuildRadius = world.WorldActor.TraitOrDefault(); if (requiresBuildableArea == null || p.PlayerActor.Trait().BuildAnywhere) return true; - if (mapBuildRadius.BuildRadiusEnabled && RequiresBaseProvider && FindBaseProvider(world, p, topLeft) == null) + if (mapBuildRadius != null && mapBuildRadius.BuildRadiusEnabled && RequiresBaseProvider && FindBaseProvider(world, p, topLeft) == null) return false; var adjacent = requiresBuildableArea.Adjacent; @@ -192,7 +192,7 @@ namespace OpenRA.Mods.Common.Traits var nearnessCandidates = new List(); var bi = world.WorldActor.Trait(); - var allyBuildEnabled = mapBuildRadius.AllyBuildRadiusEnabled; + var allyBuildEnabled = mapBuildRadius != null && mapBuildRadius.AllyBuildRadiusEnabled; for (var y = scanStart.Y; y < scanEnd.Y; y++) {