diff --git a/OpenRA.Mods.Common/Traits/Buildings/Exit.cs b/OpenRA.Mods.Common/Traits/Buildings/Exit.cs index 8cb1937492..a6ccafe1a5 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/Exit.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/Exit.cs @@ -35,12 +35,12 @@ namespace OpenRA.Mods.Common.Traits [Desc("Exits with larger priorities will be used before lower priorities.")] public readonly int Priority = 1; - public override object Create(ActorInitializer init) { return new Exit(init, this); } + public override object Create(ActorInitializer init) { return new Exit(this); } } public class Exit : ConditionalTrait { - public Exit(ActorInitializer init, ExitInfo info) + public Exit(ExitInfo info) : base(info) { } } @@ -62,6 +62,9 @@ namespace OpenRA.Mods.Common.Traits public static IEnumerable Exits(this Actor actor, string productionType = null) { + if (!actor.IsInWorld || actor.Disposed) + return Enumerable.Empty(); + var all = actor.TraitsImplementing() .Where(Exts.IsTraitEnabled); @@ -73,6 +76,9 @@ namespace OpenRA.Mods.Common.Traits public static Exit RandomExitOrDefault(this Actor actor, World world, string productionType, Func p = null) { + if (!actor.IsInWorld || actor.Disposed) + return null; + var allOfType = Exits(actor, productionType); if (!allOfType.Any()) return null;