diff --git a/OpenRA.Mods.Cnc/Traits/SupportPowers/DropPodsPower.cs b/OpenRA.Mods.Cnc/Traits/SupportPowers/DropPodsPower.cs index 6a55529d98..645611e2a0 100644 --- a/OpenRA.Mods.Cnc/Traits/SupportPowers/DropPodsPower.cs +++ b/OpenRA.Mods.Cnc/Traits/SupportPowers/DropPodsPower.cs @@ -108,9 +108,7 @@ namespace OpenRA.Mods.Cnc.Traits public override void Activate(Actor self, Order order, SupportPowerManager manager) { - base.Activate(self, order, manager); - - SendDropPods(self, self.World.Map.CellContaining(order.Target.CenterPosition)); + SendDropPods(self, self.World.Map.CellContaining(order.Target.CenterPosition), () => base.Activate(self, order, manager)); } public bool CanActivate(World world, CPos cell) @@ -120,13 +118,16 @@ namespace OpenRA.Mods.Cnc.Traits && !world.ActorMap.GetActorsAt(c).Any()); } - public void SendDropPods(Actor self, CPos targetCell) + public void SendDropPods(Actor self, CPos targetCell, Action onSuccess) { self.World.AddFrameEndTask(world => { if (!CanActivate(self.World, targetCell)) return; + PlayLaunchSounds(); + onSuccess(); + if (info.CameraActor != null) { var camera = world.CreateActor(info.CameraActor, new TypeDictionary @@ -139,8 +140,6 @@ namespace OpenRA.Mods.Cnc.Traits camera.QueueActivity(new RemoveSelf()); } - PlayLaunchSounds(); - var dropAmount = world.SharedRandom.Next(info.Drops.X, info.Drops.Y); var validUnitTypes = unitTypes.ToList(); for (var i = 0; i < dropAmount; i++)