From f0a243ca10454f987b63fe68924389363dabfc85 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 11 Apr 2020 10:04:11 +0100 Subject: [PATCH] Fix mine layer desync. World.FogObscures depends on the local RenderPlayer and should not be used from simulation code! --- OpenRA.Mods.Cnc/Activities/LayMines.cs | 2 +- OpenRA.Mods.Cnc/Traits/Minelayer.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Cnc/Activities/LayMines.cs b/OpenRA.Mods.Cnc/Activities/LayMines.cs index 6f945eed0c..74d5ded137 100644 --- a/OpenRA.Mods.Cnc/Activities/LayMines.cs +++ b/OpenRA.Mods.Cnc/Activities/LayMines.cs @@ -109,7 +109,7 @@ namespace OpenRA.Mods.Cnc.Activities var positionable = (IPositionable)movement; minefield.RemoveAll(c => self.World.ActorMap.GetActorsAt(c) .Any(a => a.Info.Name == minelayer.Info.Mine.ToLowerInvariant() && a.CanBeViewedByPlayer(self.Owner)) || - (!positionable.CanEnterCell(c, null, BlockedByActor.Immovable) && !self.World.FogObscures(c))); + (!positionable.CanEnterCell(c, null, BlockedByActor.Immovable) && self.Owner.Shroud.IsVisible(c))); } } diff --git a/OpenRA.Mods.Cnc/Traits/Minelayer.cs b/OpenRA.Mods.Cnc/Traits/Minelayer.cs index ffd711cc08..e050be3184 100644 --- a/OpenRA.Mods.Cnc/Traits/Minelayer.cs +++ b/OpenRA.Mods.Cnc/Traits/Minelayer.cs @@ -115,7 +115,7 @@ namespace OpenRA.Mods.Cnc.Traits var movement = self.Trait(); var minefield = GetMinefieldCells(minefieldStart, cell, Info.MinefieldDepth) - .Where(c => movement.CanEnterCell(c, null, BlockedByActor.Immovable) || self.World.FogObscures(c)) + .Where(c => movement.CanEnterCell(c, null, BlockedByActor.Immovable) || !self.Owner.Shroud.IsVisible(c)) .OrderBy(c => (c - minefieldStart).LengthSquared).ToList(); self.QueueActivity(order.Queued, new LayMines(self, minefield));