From f31cfe5b967ae0346f25e918ea6ecb629e8d3c16 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 19 Aug 2019 09:36:06 +0100 Subject: [PATCH] Fix SendParatroopers return value. --- .../Traits/SupportPowers/ParatroopersPower.cs | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/ParatroopersPower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/ParatroopersPower.cs index 3ec43af676..78be55b58d 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/ParatroopersPower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/ParatroopersPower.cs @@ -168,6 +168,17 @@ namespace OpenRA.Mods.Common.Traits } }; + // Create the units immediately so they can be returned + foreach (var p in info.DropItems) + { + var unit = self.World.CreateActor(false, p.ToLowerInvariant(), new TypeDictionary + { + new OwnerInit(self.Owner) + }); + + units.Add(unit); + } + self.World.AddFrameEndTask(w => { PlayLaunchSounds(); @@ -201,15 +212,9 @@ namespace OpenRA.Mods.Common.Traits drop.OnRemovedFromWorld += onRemovedFromWorld; var cargo = a.Trait(); - foreach (var p in info.DropItems.Skip(added).Take(passengersPerPlane)) + foreach (var unit in units.Skip(added).Take(passengersPerPlane)) { - var unit = self.World.CreateActor(false, p.ToLowerInvariant(), new TypeDictionary - { - new OwnerInit(self.Owner) - }); - cargo.Load(a, unit); - units.Add(unit); added++; } @@ -220,6 +225,10 @@ namespace OpenRA.Mods.Common.Traits distanceTestActor = a; } + // Dispose any unused units + for (var i = added; i < units.Count; i++) + units[i].Dispose(); + if (Info.DisplayBeacon) { var distance = (target - startEdge).HorizontalLength;