diff --git a/OpenRA.Mods.RA/Missions/Allies04Script.cs b/OpenRA.Mods.RA/Missions/Allies04Script.cs index 70643f6073..d34a75d1a5 100644 --- a/OpenRA.Mods.RA/Missions/Allies04Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies04Script.cs @@ -80,6 +80,9 @@ namespace OpenRA.Mods.RA.Missions Actor reinforcementsEntryPoint; Actor reinforcementsUnloadPoint; + string difficulty; + int destroyBaseTicks; + void MissionFailed(string text) { if (allies1.WinState != WinState.Undefined) @@ -132,7 +135,7 @@ namespace OpenRA.Mods.RA.Missions if (world.FrameNumber == frameInfiltrated + 200) { Sound.Play("timergo1.aud"); - destroyBaseTimer = new CountdownTimer(1500 * 25, OnDestroyBaseTimerExpired, true); + destroyBaseTimer = new CountdownTimer(destroyBaseTicks, OnDestroyBaseTimerExpired, true); destroyBaseTimerWidget = new CountdownTimerWidget(destroyBaseTimer, "Secure lab in: {0}"); Ui.Root.AddChild(destroyBaseTimerWidget); } @@ -331,6 +334,10 @@ namespace OpenRA.Mods.RA.Missions public void WorldLoaded(World w) { world = w; + + difficulty = w.LobbyInfo.GlobalSettings.Difficulty; + Game.Debug("{0} difficulty selected".F(difficulty)); + allies1 = w.Players.Single(p => p.InternalName == "Allies1"); allies2 = w.Players.SingleOrDefault(p => p.InternalName == "Allies2"); if (allies2 == null) @@ -339,6 +346,9 @@ namespace OpenRA.Mods.RA.Missions } allies = w.Players.Single(p => p.InternalName == "Allies"); soviets = w.Players.Single(p => p.InternalName == "Soviets"); + + destroyBaseTicks = difficulty == "Hard" ? 1500 * 20 : difficulty == "Normal" ? 1500 * 25 : 1500 * 30; + var actors = w.WorldActor.Trait().Actors; lstEntryPoint = actors["LstEntryPoint"]; lstUnloadPoint = actors["LstUnloadPoint"]; diff --git a/mods/ra/maps/allies-04/map.yaml b/mods/ra/maps/allies-04/map.yaml index e9f2a1ba92..1ff5743281 100644 --- a/mods/ra/maps/allies-04/map.yaml +++ b/mods/ra/maps/allies-04/map.yaml @@ -20,6 +20,8 @@ UseAsShellmap: False Type: Campaign +Difficulties: Easy, Normal, Hard + Players: PlayerReference@Neutral: Name: Neutral