diff --git a/OpenRA.Mods.RA/Missions/Allies01Script.cs b/OpenRA.Mods.RA/Missions/Allies01Script.cs index 1ae0d2246f..907f2a8167 100644 --- a/OpenRA.Mods.RA/Missions/Allies01Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies01Script.cs @@ -156,19 +156,26 @@ namespace OpenRA.Mods.RA.Missions FlyEinsteinFromExtractionLZ(); } } - if (einsteinChinook != null && !einsteinChinook.IsDead() && !world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait().Passengers.Contains(einstein)) + if (einsteinChinook != null) { - MissionAccomplished("Einstein was rescued."); - } - if (einstein.Destroyed) - { - MissionFailed("Einstein was killed."); + if (einsteinChinook.Destroyed) + { + MissionFailed("The extraction helicopter was destroyed."); + } + else if (!world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait().Passengers.Contains(einstein)) + { + MissionAccomplished("Einstein was rescued."); + } } } if (tanya.Destroyed) { MissionFailed("Tanya was killed."); } + else if (einstein != null && einstein.Destroyed) + { + MissionFailed("Einstein was killed."); + } ManageSovietOre(); } diff --git a/OpenRA.Mods.RA/Missions/Allies02Script.cs b/OpenRA.Mods.RA/Missions/Allies02Script.cs index 55d62ce91e..7447ff8868 100644 --- a/OpenRA.Mods.RA/Missions/Allies02Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies02Script.cs @@ -133,10 +133,6 @@ namespace OpenRA.Mods.RA.Missions { BuildSovietUnits(); } - if (!world.Actors.Any(a => a.IsInWorld && a.HasTrait() && a.Owner == allies2)) - { - MissionFailed("The Allied reinforcements have been defeated."); - } if (!engineerMiss.Destroyed && engineer == null && AlliesControlMiss()) { SpawnEngineerAtMiss(); @@ -153,9 +149,13 @@ namespace OpenRA.Mods.RA.Missions SendChinook(); } } - else if (currentObjective == 1) + else if (currentObjective == 1 && einsteinChinook != null) { - if (einsteinChinook != null && !einsteinChinook.IsDead() && !world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait().Passengers.Contains(einstein)) + if (einsteinChinook.Destroyed) + { + MissionFailed("The extraction helicopter was destroyed."); + } + else if (!world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait().Passengers.Contains(einstein)) { MissionAccomplished("Einstein was rescued."); } @@ -164,10 +164,14 @@ namespace OpenRA.Mods.RA.Missions { MissionFailed("Tanya was killed."); } - if (einstein.Destroyed) + else if (einstein.Destroyed) { MissionFailed("Einstein was killed."); } + else if (!world.Actors.Any(a => a.IsInWorld && a.HasTrait() && a.Owner == allies2)) + { + MissionFailed("The Allied reinforcements have been defeated."); + } } void BuildSovietUnits()