diff --git a/OpenRA.Mods.RA/Capturable.cs b/OpenRA.Mods.RA/Capturable.cs index 04091911d3..3fa232ae55 100644 --- a/OpenRA.Mods.RA/Capturable.cs +++ b/OpenRA.Mods.RA/Capturable.cs @@ -44,9 +44,7 @@ namespace OpenRA.Mods.RA this.Captor = captor; if (self.Owner != self.World.WorldActor.Owner) - { self.ChangeOwner(self.World.WorldActor.Owner); - } } public void Tick(Actor self) @@ -60,6 +58,7 @@ namespace OpenRA.Mods.RA self.World.AddFrameEndTask(w => { self.ChangeOwner(Captor.Owner); + ChangeCargoOwner(self, Captor.Owner); foreach (var t in self.TraitsImplementing()) t.OnCapture(self, Captor, self.Owner, Captor.Owner); @@ -71,5 +70,15 @@ namespace OpenRA.Mods.RA }); } } + + void ChangeCargoOwner(Actor self, Player captor) + { + var cargo = self.TraitOrDefault(); + if (cargo == null) + return; + + foreach (var c in cargo.Passengers) + c.Owner = captor; + } } }