From 37f91542a9e7fe4fbf8bb453213fca08a2e2578c Mon Sep 17 00:00:00 2001 From: Curtis Shmyr Date: Wed, 2 May 2012 11:25:38 -0600 Subject: [PATCH] Change cargo ownership when capturing actors with cargo --- OpenRA.Mods.RA/Capturable.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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; + } } }