diff --git a/OpenRA.Mods.Common/Orders/PlaceBuildingOrderGenerator.cs b/OpenRA.Mods.Common/Orders/PlaceBuildingOrderGenerator.cs index c057a607f1..c14be21df5 100644 --- a/OpenRA.Mods.Common/Orders/PlaceBuildingOrderGenerator.cs +++ b/OpenRA.Mods.Common/Orders/PlaceBuildingOrderGenerator.cs @@ -110,7 +110,7 @@ namespace OpenRA.Mods.Common.Orders yield break; } - if (world.Map.Rules.Actors[building].HasTraitInfo()) + if (world.Map.Rules.Actors[building].HasTraitInfo() && !mi.Modifiers.HasModifier(Modifiers.Shift)) orderType = "LineBuild"; } @@ -172,8 +172,11 @@ namespace OpenRA.Mods.Common.Orders if (buildingInfo.Dimensions.X != 1 || buildingInfo.Dimensions.Y != 1) throw new InvalidOperationException("LineBuild requires a 1x1 sized Building"); - foreach (var t in BuildingUtils.GetLineBuildCells(world, topLeft, building, buildingInfo)) - cells.Add(t, buildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, building, t)); + if (!Game.GetModifierKeys().HasModifier(Modifiers.Shift)) + foreach (var t in BuildingUtils.GetLineBuildCells(world, topLeft, building, buildingInfo)) + cells.Add(t, buildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, building, t)); + else + cells.Add(topLeft, buildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, building, topLeft)); } else {