From 59385f9b047f6641431456a72e257db847d501d0 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sat, 19 Dec 2015 16:27:30 +0100 Subject: [PATCH] Add new difficulties to Fort Lonestar and try to balance them --- mods/ra/maps/fort-lonestar/fort-lonestar.lua | 94 ++++++++++++++++---- mods/ra/maps/fort-lonestar/map.yaml | 1 + 2 files changed, 78 insertions(+), 17 deletions(-) diff --git a/mods/ra/maps/fort-lonestar/fort-lonestar.lua b/mods/ra/maps/fort-lonestar/fort-lonestar.lua index 63d50e81d5..82c0b41e5a 100644 --- a/mods/ra/maps/fort-lonestar/fort-lonestar.lua +++ b/mods/ra/maps/fort-lonestar/fort-lonestar.lua @@ -1,9 +1,3 @@ -Patrol = { "e1", "e2", "e1" } -Infantry = { "e4", "e1", "e1", "e2", "e1", "e2" } -Vehicles = { "arty", "ftrk", "ftrk", "apc", "apc" } -Tank = { "3tnk" } -LongRange = { "v2rl" } -Boss = { "4tnk" } SovietEntryPoints = { Entry1, Entry2, Entry3, Entry4, Entry5, Entry6, Entry7, Entry8 } PatrolWaypoints = { Entry2, Entry4, Entry6, Entry8 } @@ -11,24 +5,76 @@ ParadropWaypoints = { Paradrop1, Paradrop2, Paradrop3, Paradrop4 } SpawnPoints = { Spawn1, Spawn2, Spawn3, Spawn4 } Snipers = { Sniper1, Sniper2, Sniper3, Sniper4, Sniper5, Sniper6, Sniper7, Sniper8, Sniper9, Sniper10, Sniper11, Sniper12 } -ParaChance = 30 +if Map.Difficulty == "Very Easy (1P)" then + ParaChance = 20 + Patrol = { "e1", "e2", "e1" } + Infantry = { "e4", "e1", "e1", "e2", "e2" } + Vehicles = { "apc" } + Tank = { "3tnk" } + LongRange = { "arty" } + Boss = { "v2rl" } + Swarm = { "shok", "shok", "shok" } +elseif Map.Difficulty == "Easy (2P)" then + ParaChance = 25 + Patrol = { "e1", "e2", "e1" } + Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" } + Vehicles = { "ftrk", "apc", "arty" } + Tank = { "3tnk" } + LongRange = { "v2rl" } + Boss = { "4tnk" } + Swarm = { "shok", "shok", "shok", "shok", "ttnk" } +elseif Map.Difficulty == "Normal (3P)" then + ParaChance = 30 + Patrol = { "e1", "e2", "e1", "e1" } + Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" } + Vehicles = { "ftrk", "ftrk", "apc", "arty" } + Tank = { "3tnk" } + LongRange = { "v2rl" } + Boss = { "4tnk" } + Swarm = { "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk" } +elseif Map.Difficulty == "Hard (4P)" then + ParaChance = 35 + Patrol = { "e1", "e2", "e1", "e1", "e4" } + Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" } + Vehicles = { "arty", "ftrk", "ftrk", "apc", "apc" } + Tank = { "3tnk" } + LongRange = { "v2rl" } + Boss = { "4tnk" } + Swarm = { "shok", "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk", "ttnk" } +else + ParaChance = 40 + Patrol = { "e1", "e2", "e1", "e1", "e4", "e4" } + Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1", "e1" } + Vehicles = { "arty", "arty", "ftrk", "apc", "apc" } + Tank = { "ftrk", "3tnk" } + LongRange = { "v2rl" } + Boss = { "4tnk" } + Swarm = { "shok", "shok", "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk", "ttnk", "ttnk" } +end Wave = 0 Waves = { { delay = 500, units = { Infantry } }, - { delay = 750, units = { Patrol } }, - { delay = 750, units = { Infantry, Infantry, Vehicles }, }, + { delay = 500, units = { Patrol, Patrol } }, + { delay = 700, units = { Infantry, Infantry, Vehicles }, }, { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Vehicles } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Tank, Vehicles } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Tank, Tank } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, Tank, LongRange } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, LongRange, Tank, Tank, Vehicles } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Boss } } + { delay = 1500, units = { Infantry, Infantry, Patrol, Vehicles } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Tank, Vehicles } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Tank, Tank, Swarm } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, LongRange } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, LongRange, Tank, LongRange } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, LongRange, Tank, Tank, Vehicles } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Boss, Swarm } } } +-- Now do some adjustments to the waves +if Map.Difficulty == "Real tough guy" or Map.Difficulty == "Endless mode" then + Waves[8] = { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry }, ironUnits = { LongRange } } + Waves[9] = { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, LongRange, Vehicles, Tank }, ironUnits = { Tank } } + Waves[11] = { delay = 1500, units = { Vehicles, Infantry, Patrol, Patrol, Patrol, Infantry, LongRange, Tank, Boss, Infantry, Infantry, Patrol } } +end + SendUnits = function(entryCell, unitTypes, targetCell, extraData) Reinforcements.Reinforce(soviets, unitTypes, { entryCell }, 40, function(a) if not a.HasProperty("AttackMove") then @@ -94,7 +140,14 @@ SendWave = function() SendWave() end else - Trigger.AfterDelay(DateTime.Minutes(2), SovietsRetreating) + if Map.Difficulty == "Endless mode" then + Wave = 0 + IncreaseDifficulty() + SendWave() + return + end + + Trigger.AfterDelay(DateTime.Minutes(1), SovietsRetreating) Media.DisplayMessage("You almost survived the onslaught! No more waves incoming.") end end) @@ -108,6 +161,13 @@ SovietsRetreating = function() end) end +IncreaseDifficulty = function() + local additions = { Infantry, Patrol, Vehicles, Tank, LongRange, Boss, Swarm } + Utils.Do(Waves, function(wave) + wave.units[#wave.units + 1] = Utils.Random(additions) + end) +end + Tick = function() if (Utils.RandomInteger(1, 200) == 10) then local delay = Utils.RandomInteger(1, 10) diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index 77dc86d13f..875228dece 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -30,6 +30,7 @@ Options: StartingUnitsClass: none ConfigurableStartingUnits: False ShortGame: False + Difficulties: Hard (4P), Normal (3P), Easy (2P), Very Easy (1P), Real tough guy, Endless mode Players: PlayerReference@Neutral: