diff --git a/OpenRA.Mods.RA/Activities/CaptureActor.cs b/OpenRA.Mods.RA/Activities/CaptureActor.cs index 765832ac16..a95facf9b2 100644 --- a/OpenRA.Mods.RA/Activities/CaptureActor.cs +++ b/OpenRA.Mods.RA/Activities/CaptureActor.cs @@ -32,10 +32,6 @@ namespace OpenRA.Mods.RA.Activities if ((nearest - mobile.toCell).LengthSquared > 2) return Util.SequenceActivities(new MoveAdjacentTo(Target.FromActor(target)), this); - var capturable = target.TraitOrDefault(); - if (capturable != null && capturable.CaptureInProgress && capturable.Captor.Owner.Stances[self.Owner] == Stance.Ally) - return NextActivity; - if (!target.Trait().BeginCapture(target, self)) return NextActivity; diff --git a/OpenRA.Mods.RA/Capturable.cs b/OpenRA.Mods.RA/Capturable.cs index a90f4c144c..46623edb4f 100644 --- a/OpenRA.Mods.RA/Capturable.cs +++ b/OpenRA.Mods.RA/Capturable.cs @@ -40,7 +40,10 @@ namespace OpenRA.Mods.RA public bool BeginCapture(Actor self, Actor captor) { - if (!self.Trait().Lock()) + if (!CaptureInProgress && !self.Trait().Lock()) + return false; + + if (CaptureInProgress && Captor.Owner.Stances[captor.Owner] == Stance.Ally) return false; CaptureProgressTime = 0;