diff --git a/OpenRA.Mods.Cnc/Traits/Minelayer.cs b/OpenRA.Mods.Cnc/Traits/Minelayer.cs index e315dbed23..eb49274eb3 100644 --- a/OpenRA.Mods.Cnc/Traits/Minelayer.cs +++ b/OpenRA.Mods.Cnc/Traits/Minelayer.cs @@ -89,22 +89,24 @@ namespace OpenRA.Mods.Cnc.Traits void IResolveOrder.ResolveOrder(Actor self, Order order) { - if (order.OrderString == "BeginMinefield") - minefieldStart = order.TargetLocation; + if (order.OrderString != "BeginMinefield" && order.OrderString != "PlaceMinefield" && order.OrderString != "PlaceMine") + return; - if (order.OrderString == "PlaceMine") + var cell = self.World.Map.CellContaining(order.Target.CenterPosition); + if (order.OrderString == "BeginMinefield") + minefieldStart = cell; + else if (order.OrderString == "PlaceMine") { - minefieldStart = order.TargetLocation; - Minefield = new CPos[] { order.TargetLocation }; + minefieldStart = cell; + Minefield = new[] { cell }; self.CancelActivity(); self.QueueActivity(new LayMines(self)); } - - if (order.OrderString == "PlaceMinefield") + else if (order.OrderString == "PlaceMinefield") { var movement = self.Trait(); - Minefield = GetMinefieldCells(minefieldStart, order.TargetLocation, info.MinefieldDepth) + Minefield = GetMinefieldCells(minefieldStart, cell, info.MinefieldDepth) .Where(p => movement.CanEnterCell(p, null, false)).ToArray(); if (Minefield.Length == 1 && Minefield[0] != self.Location)