diff --git a/OpenRA.Mods.RA/Missions/Allies01Script.cs b/OpenRA.Mods.RA/Missions/Allies01Script.cs index 4186d0934f..1b8d5a8b61 100644 --- a/OpenRA.Mods.RA/Missions/Allies01Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies01Script.cs @@ -106,17 +106,14 @@ namespace OpenRA.Mods.RA.Missions { return; } - // display current objective every so often if (world.FrameNumber % 1500 == 1) { DisplayObjective(); } - // taunt every so often if (world.FrameNumber % 1000 == 0) { Sound.Play(Taunts[world.SharedRandom.Next(Taunts.Length)]); } - // objectives if (currentObjective == 0) { if (AlliesControlLab()) diff --git a/OpenRA.Mods.RA/Missions/Allies02Script.cs b/OpenRA.Mods.RA/Missions/Allies02Script.cs index 88200fbfe4..3dbc3d9deb 100644 --- a/OpenRA.Mods.RA/Missions/Allies02Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies02Script.cs @@ -42,8 +42,6 @@ namespace OpenRA.Mods.RA.Missions Actor einstein; Actor engineer; - Actor engineerMiss; - Actor chinookHusk; Actor allies2BasePoint; Actor reinforcementsEntryPoint; @@ -89,8 +87,7 @@ namespace OpenRA.Mods.RA.Missions const string ChinookName = "tran"; const string SignalFlareName = "flare"; - const string EngineerName = "e6"; - const int EngineerMissClearRange = 5; + const int EngineerSafeRange = 5; void DisplayObjective() { @@ -166,10 +163,9 @@ namespace OpenRA.Mods.RA.Missions BuildSovietUnits(); ManageSovietUnits(); } - if (!engineerMiss.Destroyed && engineer == null && AlliesControlMiss()) + if (EngineerSafe()) { - SpawnEngineerAtMiss(); - engineerMiss.QueueActivity(new Demolish(engineerMiss, 0)); + RescueEngineer(); } if (currentObjective == 0) { @@ -387,16 +383,16 @@ namespace OpenRA.Mods.RA.Missions return UnitsNearActor(actor, range).Where(a => a.HasTrait()); } - bool AlliesControlMiss() + bool EngineerSafe() { - var units = ForcesNearActor(engineerMiss, EngineerMissClearRange); + if (engineer.Destroyed) return false; + var units = ForcesNearActor(engineer, EngineerSafeRange); return units.Any() && units.All(a => a.Owner == allies1); } - void SpawnEngineerAtMiss() + void RescueEngineer() { - engineer = world.CreateActor(EngineerName, new TypeDictionary { new OwnerInit(allies1), new LocationInit(engineerMiss.Location) }); - engineer.QueueActivity(new Move.Move(engineerMiss.Location + new CVec(5, 0))); + if (!engineer.Destroyed) engineer.ChangeOwner(allies1); } public void WorldLoaded(World w) @@ -419,7 +415,7 @@ namespace OpenRA.Mods.RA.Missions extractionLZEntryPoint = actors["ExtractionLZEntryPoint"]; badgerEntryPoint = actors["BadgerEntryPoint"]; badgerDropPoint = actors["BadgerDropPoint"]; - engineerMiss = actors["EngineerMiss"]; + engineer = actors["Engineer"]; sovietBarracks = actors["SovietBarracks"]; sovietWarFactory = actors["SovietWarFactory"]; sovietRallyPoint = actors["SovietRallyPoint"]; diff --git a/mods/ra/maps/allies-01.oramap b/mods/ra/maps/allies-01.oramap index 9fa253b64c..4c8941ec6f 100644 Binary files a/mods/ra/maps/allies-01.oramap and b/mods/ra/maps/allies-01.oramap differ diff --git a/mods/ra/maps/allies-02.oramap b/mods/ra/maps/allies-02.oramap index 3c38bdf8dd..7f4aba1570 100644 Binary files a/mods/ra/maps/allies-02.oramap and b/mods/ra/maps/allies-02.oramap differ diff --git a/mods/ra/rules/structures.yaml b/mods/ra/rules/structures.yaml index 533f8b38d7..6e0f7cbbe6 100644 --- a/mods/ra/rules/structures.yaml +++ b/mods/ra/rules/structures.yaml @@ -1214,6 +1214,7 @@ KENN: Range: 4 IronCurtainable: -EmitInfantryOnSell: + -AcceptsSupplies: FIX: Inherits: ^Building