From 1f35a1c0101e7e15be853b37dcaabad586f5cea2 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Fri, 29 Jan 2016 02:30:06 +0100 Subject: [PATCH] Let harvesters tick idle for a while before queueing Wait activity --- OpenRA.Mods.Common/Traits/Harvester.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Harvester.cs b/OpenRA.Mods.Common/Traits/Harvester.cs index 3050955dc7..77c2e393d0 100644 --- a/OpenRA.Mods.Common/Traits/Harvester.cs +++ b/OpenRA.Mods.Common/Traits/Harvester.cs @@ -57,6 +57,12 @@ namespace OpenRA.Mods.Common.Traits [Desc("Search radius (in cells) from the last harvest order location to find more resources.")] public readonly int SearchFromOrderRadius = 12; + [Desc("Maximum duration of being idle before queueing a Wait activity.")] + public readonly int MaxIdleDuration = 25; + + [Desc("Duration to wait before becoming idle again.")] + public readonly int WaitDuration = 25; + [VoiceReference] public readonly string HarvestVoice = "Action"; [VoiceReference] public readonly string DeliverVoice = "Action"; @@ -239,6 +245,7 @@ namespace OpenRA.Mods.Common.Traits } } + int idleDuration; public void TickIdle(Actor self) { // Should we be intelligent while idle? @@ -252,9 +259,16 @@ namespace OpenRA.Mods.Common.Traits } UnblockRefinery(self); + idleDuration += 1; - // Wait for a bit before becoming idle again: - self.QueueActivity(new Wait(10)); + // Wait a bit before queueing Wait activity + if (idleDuration > Info.MaxIdleDuration) + { + idleDuration = 0; + + // Wait for a bit before becoming idle again: + self.QueueActivity(new Wait(Info.WaitDuration)); + } } // Returns true when unloading is complete