diff --git a/OpenRA.Mods.RA/Missions/Allies01Script.cs b/OpenRA.Mods.RA/Missions/Allies01Script.cs index b183836d8a..1ae0d2246f 100644 --- a/OpenRA.Mods.RA/Missions/Allies01Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies01Script.cs @@ -80,6 +80,10 @@ namespace OpenRA.Mods.RA.Missions return; } allies.WinState = WinState.Lost; + foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == allies && !a.IsDead())) + { + actor.Kill(actor); + } Game.AddChatLine(Color.Red, "Mission failed", text); Sound.Play("misnlst1.aud"); } diff --git a/OpenRA.Mods.RA/Missions/Allies02Script.cs b/OpenRA.Mods.RA/Missions/Allies02Script.cs index 1d8960410b..cc8dbd8dc8 100644 --- a/OpenRA.Mods.RA/Missions/Allies02Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies02Script.cs @@ -27,7 +27,7 @@ namespace OpenRA.Mods.RA.Missions { static readonly string[] objectives = { - "Destroy the SAM sites. Tanya and Einstein must survive.", + "Hold off the Soviet forces and destroy the SAM sites. Tanya and Einstein must survive.", "Wait for the helicopter and extract Einstein. Tanya and Einstein must survive." }; @@ -92,6 +92,10 @@ namespace OpenRA.Mods.RA.Missions { reinforcementsTimer.Visible = false; } + foreach (var actor in world.Actors.Where(a => a.IsInWorld && (a.Owner == allies1 || a.Owner == allies2) && !a.IsDead())) + { + actor.Kill(actor); + } Game.AddChatLine(Color.Red, "Mission failed", text); Sound.Play("misnlst1.aud"); } @@ -129,6 +133,10 @@ 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(); @@ -265,7 +273,7 @@ namespace OpenRA.Mods.RA.Missions void SpawnEngineerAtMiss() { - engineer = world.CreateActor(EngineerName, new TypeDictionary {new OwnerInit(allies1), new LocationInit(engineerMiss.Location)}); + engineer = world.CreateActor(EngineerName, new TypeDictionary { new OwnerInit(allies1), new LocationInit(engineerMiss.Location) }); engineer.QueueActivity(new Move.Move(engineerMiss.Location + new CVec(5, 0))); }