diff --git a/OpenRA.Mods.Common/Traits/Repairable.cs b/OpenRA.Mods.Common/Traits/Repairable.cs index c88487ad96..7ba54e84e5 100644 --- a/OpenRA.Mods.Common/Traits/Repairable.cs +++ b/OpenRA.Mods.Common/Traits/Repairable.cs @@ -142,15 +142,13 @@ namespace OpenRA.Mods.Common.Traits static void TryCallTransport(Actor self, Target target, Activity nextActivity) { - var transport = self.TraitOrDefault(); - if (transport == null) - return; - var targetCell = self.World.Map.CellContaining(target.CenterPosition); - if ((self.CenterPosition - target.CenterPosition).LengthSquared < transport.MinimumDistance.LengthSquared) - return; + var delta = (self.CenterPosition - target.CenterPosition).LengthSquared; + var transports = self.TraitsImplementing() + .Where(t => t.MinimumDistance.LengthSquared < delta); - transport.RequestTransport(self, targetCell, nextActivity); + foreach (var t in transports) + t.RequestTransport(self, targetCell, nextActivity); } } }