diff --git a/OpenRA.Mods.Common/Activities/PickupUnit.cs b/OpenRA.Mods.Common/Activities/PickupUnit.cs index 1e3f4da1e8..09c9864753 100644 --- a/OpenRA.Mods.Common/Activities/PickupUnit.cs +++ b/OpenRA.Mods.Common/Activities/PickupUnit.cs @@ -166,7 +166,7 @@ namespace OpenRA.Mods.Common.Activities self.World.AddFrameEndTask(w => { cargo.World.Remove(cargo); - carryable.Attached(cargo); + carryable.Attached(cargo, self); carryall.AttachCarryable(self, cargo); }); } diff --git a/OpenRA.Mods.Common/Traits/Carryable.cs b/OpenRA.Mods.Common/Traits/Carryable.cs index 697272579d..03b592cb70 100644 --- a/OpenRA.Mods.Common/Traits/Carryable.cs +++ b/OpenRA.Mods.Common/Traits/Carryable.cs @@ -69,12 +69,13 @@ namespace OpenRA.Mods.Common.Traits base.Created(self); } - public virtual void Attached(Actor self) + public virtual void Attached(Actor self, Actor carrier) { if (attached) return; attached = true; + Carrier = carrier; if (carriedToken == Actor.InvalidConditionToken) carriedToken = self.GrantCondition(Info.CarriedCondition); diff --git a/OpenRA.Mods.Common/Traits/Carryall.cs b/OpenRA.Mods.Common/Traits/Carryall.cs index bf40c67e9f..eaa086d27d 100644 --- a/OpenRA.Mods.Common/Traits/Carryall.cs +++ b/OpenRA.Mods.Common/Traits/Carryall.cs @@ -128,14 +128,14 @@ namespace OpenRA.Mods.Common.Traits if (!string.IsNullOrEmpty(info.InitialActor)) { - var unit = self.World.CreateActor(false, info.InitialActor.ToLowerInvariant(), new TypeDictionary + var cargo = self.World.CreateActor(false, info.InitialActor.ToLowerInvariant(), new TypeDictionary { new ParentActorInit(self), new OwnerInit(self.Owner) }); - unit.Trait().Attached(unit); - AttachCarryable(self, unit); + cargo.Trait().Attached(cargo, self); + AttachCarryable(self, cargo); } }