diff --git a/OpenRA.Mods.RA/Activities/FindResources.cs b/OpenRA.Mods.RA/Activities/FindResources.cs index c1240d08ec..4860ebe0a2 100755 --- a/OpenRA.Mods.RA/Activities/FindResources.cs +++ b/OpenRA.Mods.RA/Activities/FindResources.cs @@ -146,6 +146,7 @@ namespace OpenRA.Mods.RA.Activities } var harv = self.Trait(); + var harvInfo = self.Info.Traits.Get(); harv.LastHarvestedCell = self.Location; if (harv.IsFull) @@ -155,6 +156,15 @@ namespace OpenRA.Mods.RA.Activities return NextActivity; } + // Turn to one of the harvestable facings + if (harvInfo.HarvestFacings != 0) + { + var facing = self.Trait().Facing; + var desired = Util.QuantizeFacing(facing, harvInfo.HarvestFacings) * (256 / harvInfo.HarvestFacings); + if (desired != facing) + return Util.SequenceActivities(new Turn(desired), this); + } + var resLayer = self.World.WorldActor.Trait(); var resource = resLayer.Harvest(self.Location); if (resource == null) @@ -169,7 +179,6 @@ namespace OpenRA.Mods.RA.Activities foreach (var t in self.TraitsImplementing()) t.Harvested(self, resource); - var harvInfo = self.Info.Traits.Get(); return Util.SequenceActivities(new Wait(harvInfo.LoadTicksPerBale), this); } } diff --git a/OpenRA.Mods.RA/Harvester.cs b/OpenRA.Mods.RA/Harvester.cs index a84651c080..6803329716 100644 --- a/OpenRA.Mods.RA/Harvester.cs +++ b/OpenRA.Mods.RA/Harvester.cs @@ -24,6 +24,7 @@ namespace OpenRA.Mods.RA public readonly int LoadTicksPerBale = 4; public readonly int UnloadTicksPerBale = 4; public readonly int PipCount = 7; + public readonly int HarvestFacings = 0; public readonly string[] Resources = { }; public readonly decimal FullyLoadedSpeed = .85m; ///