From f4e55572d65194786809d4b01f7e7d250b1ffc11 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 13 Nov 2009 13:04:24 +1300 Subject: [PATCH] Fixed broken DeliverOre behavior: ordering a harv to deliver to a particular proc would be ignored; the nearest proc was used instead. --- OpenRa.Game/Traits/Activities/DeliverOre.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/OpenRa.Game/Traits/Activities/DeliverOre.cs b/OpenRa.Game/Traits/Activities/DeliverOre.cs index 42845e8393..af8837acfd 100644 --- a/OpenRa.Game/Traits/Activities/DeliverOre.cs +++ b/OpenRa.Game/Traits/Activities/DeliverOre.cs @@ -30,7 +30,11 @@ namespace OpenRa.Game.Traits.Activities } else if( NextActivity != null ) return NextActivity; - else if( refinery == null || refinery.IsDead || self.Location != refinery.Location + refineryDeliverOffset ) + + if( refinery != null && refinery.IsDead ) + refinery = null; + + if( refinery == null || self.Location != refinery.Location + refineryDeliverOffset ) { var search = new PathSearch { @@ -39,8 +43,11 @@ namespace OpenRa.Game.Traits.Activities checkForBlocked = false, }; var refineries = Game.world.Actors.Where( x => x.unitInfo == Rules.UnitInfo[ "proc" ] ).ToList(); - foreach( var r in refineries ) - search.AddInitialCell( r.Location + refineryDeliverOffset ); + if( refinery != null ) + search.AddInitialCell( refinery.Location + refineryDeliverOffset ); + else + foreach( var r in refineries ) + search.AddInitialCell( r.Location + refineryDeliverOffset ); var path = Game.PathFinder.FindPath( search ); path.Reverse();