From 25071b813e7ecfecca0f52c97758884fc2387bab Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 26 Nov 2020 22:57:24 +0000 Subject: [PATCH] Prevent concrete from spawning underneath already placed building bibs. This is the equivalent to reverting 83b61ab. --- OpenRA.Mods.D2k/Traits/Buildings/D2kBuilding.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/OpenRA.Mods.D2k/Traits/Buildings/D2kBuilding.cs b/OpenRA.Mods.D2k/Traits/Buildings/D2kBuilding.cs index 2093ce47f2..a6fc592c58 100644 --- a/OpenRA.Mods.D2k/Traits/Buildings/D2kBuilding.cs +++ b/OpenRA.Mods.D2k/Traits/Buildings/D2kBuilding.cs @@ -57,6 +57,7 @@ namespace OpenRA.Mods.D2k.Traits.Buildings int damageThreshold; int damageTicks; TechTree techTree; + BuildingInfluence bi; public D2kBuilding(ActorInitializer init, D2kBuildingInfo info) : base(init, info) @@ -68,6 +69,7 @@ namespace OpenRA.Mods.D2k.Traits.Buildings { health = self.TraitOrDefault(); layer = self.World.WorldActor.TraitOrDefault(); + bi = self.World.WorldActor.Trait(); techTree = self.Owner.PlayerActor.TraitOrDefault(); } @@ -87,8 +89,8 @@ namespace OpenRA.Mods.D2k.Traits.Buildings if (!map.Contains(c) || map.CustomTerrain[c] != byte.MaxValue) continue; - // Don't place under other buildings - if (self.World.ActorMap.GetActorsAt(c).Any(a => a != self && a.TraitOrDefault() != null)) + // Don't place under other buildings (or their bib) + if (bi.GetBuildingAt(c) != self) continue; var index = Game.CosmeticRandom.Next(template.TilesCount); @@ -103,8 +105,8 @@ namespace OpenRA.Mods.D2k.Traits.Buildings if (!map.Contains(c) || map.CustomTerrain[c] != byte.MaxValue) continue; - // Don't place under other buildings - if (self.World.ActorMap.GetActorsAt(c).Any(a => a != self && a.TraitOrDefault() != null)) + // Don't place under other buildings (or their bib) + if (bi.GetBuildingAt(c) != self) continue; layer.AddTile(c, new TerrainTile(template.Id, (byte)i));