diff --git a/OpenRA.Mods.Common/Traits/Cargo.cs b/OpenRA.Mods.Common/Traits/Cargo.cs index fa1eb3ea9290..4b657070be9b 100644 --- a/OpenRA.Mods.Common/Traits/Cargo.cs +++ b/OpenRA.Mods.Common/Traits/Cargo.cs @@ -271,9 +271,9 @@ public string VoicePhraseForOrder(Actor self, Order order) public Actor Peek() { return cargo.Last(); } - public Actor Unload(Actor self) + public Actor Unload(Actor self, Actor target) { - var a = cargo.Last(); + var a = cargo.First(x => x == target); cargo.Remove(a); totalWeight -= GetWeight(a); @@ -299,6 +299,11 @@ public Actor Unload(Actor self) return a; } + public Actor Unload(Actor self) + { + return Unload(self, cargo.Last()); + } + void SetPassengerFacing(Actor passenger) { if (facing.Value == null) diff --git a/OpenRA.Mods.Common/Traits/Passenger.cs b/OpenRA.Mods.Common/Traits/Passenger.cs index 90a347aa5784..5c2cfa30d18c 100644 --- a/OpenRA.Mods.Common/Traits/Passenger.cs +++ b/OpenRA.Mods.Common/Traits/Passenger.cs @@ -190,7 +190,7 @@ void INotifyKilled.Killed(Actor self, AttackInfo e) return; Cargo c = Transport.Trait(); - c.Unload(self); + c.Unload(Transport, self); } } }