Add difficulty settings to soviet06 missions
This commit is contained in:
@@ -74,8 +74,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Red Alert Lua scripts", "Re
|
|||||||
mods\ra\maps\soviet-05\soviet05-reinforcements_teams.lua = mods\ra\maps\soviet-05\soviet05-reinforcements_teams.lua
|
mods\ra\maps\soviet-05\soviet05-reinforcements_teams.lua = mods\ra\maps\soviet-05\soviet05-reinforcements_teams.lua
|
||||||
mods\ra\maps\soviet-05\soviet05.lua = mods\ra\maps\soviet-05\soviet05.lua
|
mods\ra\maps\soviet-05\soviet05.lua = mods\ra\maps\soviet-05\soviet05.lua
|
||||||
mods\ra\maps\soviet-06a\soviet06a-AI.lua = mods\ra\maps\soviet-06a\soviet06a-AI.lua
|
mods\ra\maps\soviet-06a\soviet06a-AI.lua = mods\ra\maps\soviet-06a\soviet06a-AI.lua
|
||||||
|
mods\ra\maps\soviet-06a\soviet06a-reinforcements_teams.lua = mods\ra\maps\soviet-06a\soviet06a-reinforcements_teams.lua
|
||||||
mods\ra\maps\soviet-06a\soviet06a.lua = mods\ra\maps\soviet-06a\soviet06a.lua
|
mods\ra\maps\soviet-06a\soviet06a.lua = mods\ra\maps\soviet-06a\soviet06a.lua
|
||||||
mods\ra\maps\soviet-06b\soviet06b-AI.lua = mods\ra\maps\soviet-06b\soviet06b-AI.lua
|
mods\ra\maps\soviet-06b\soviet06b-AI.lua = mods\ra\maps\soviet-06b\soviet06b-AI.lua
|
||||||
|
mods\ra\maps\soviet-06b\soviet06b-reinforcements_teams.lua = mods\ra\maps\soviet-06b\soviet06b-reinforcements_teams.lua
|
||||||
mods\ra\maps\soviet-06b\soviet06b.lua = mods\ra\maps\soviet-06b\soviet06b.lua
|
mods\ra\maps\soviet-06b\soviet06b.lua = mods\ra\maps\soviet-06b\soviet06b.lua
|
||||||
mods\ra\maps\soviet-07\soviet07.lua = mods\ra\maps\soviet-07\soviet07.lua
|
mods\ra\maps\soviet-07\soviet07.lua = mods\ra\maps\soviet-07\soviet07.lua
|
||||||
mods\ra\maps\survival01\survival01.lua = mods\ra\maps\survival01\survival01.lua
|
mods\ra\maps\survival01\survival01.lua = mods\ra\maps\survival01\survival01.lua
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ Options:
|
|||||||
FragileAlliances: False
|
FragileAlliances: False
|
||||||
StartingCash: 11500
|
StartingCash: 11500
|
||||||
ConfigurableStartingUnits: False
|
ConfigurableStartingUnits: False
|
||||||
|
Difficulties: Easy, Normal, Hard
|
||||||
ShortGame: False
|
ShortGame: False
|
||||||
|
|
||||||
Players:
|
Players:
|
||||||
@@ -544,9 +545,6 @@ Actors:
|
|||||||
Location: 28,23
|
Location: 28,23
|
||||||
Owner: Greece
|
Owner: Greece
|
||||||
Facing: 128
|
Facing: 128
|
||||||
Actor161: dome
|
|
||||||
Location: 23,5
|
|
||||||
Owner: Greece
|
|
||||||
Actor163: gap
|
Actor163: gap
|
||||||
Location: 24,21
|
Location: 24,21
|
||||||
Owner: Greece
|
Owner: Greece
|
||||||
@@ -736,6 +734,10 @@ Actors:
|
|||||||
waypoint82: waypoint
|
waypoint82: waypoint
|
||||||
Location: 87,29
|
Location: 87,29
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
|
AGun: agun
|
||||||
|
Owner: Greece
|
||||||
|
Location: 25,4
|
||||||
|
TurretFacing: 92
|
||||||
APCWaypoint1: waypoint
|
APCWaypoint1: waypoint
|
||||||
Location: 52,50
|
Location: 52,50
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
@@ -789,6 +791,21 @@ Actors:
|
|||||||
CYardLocation: waypoint
|
CYardLocation: waypoint
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Location: 31,4
|
Location: 31,4
|
||||||
|
Dome: dome
|
||||||
|
Location: 23,5
|
||||||
|
Owner: Greece
|
||||||
|
EnemyEntry1: waypoint
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 10,1
|
||||||
|
EnemyEntry2: waypoint
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 97,37
|
||||||
|
EnemyRally1: waypoint
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 9,23
|
||||||
|
EnemyRally2: waypoint
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 88,37
|
||||||
Harvester: harv
|
Harvester: harv
|
||||||
Location: 12,10
|
Location: 12,10
|
||||||
Owner: Greece
|
Owner: Greece
|
||||||
@@ -843,7 +860,7 @@ Rules:
|
|||||||
-SpawnMPUnits:
|
-SpawnMPUnits:
|
||||||
-MPStartLocations:
|
-MPStartLocations:
|
||||||
LuaScript:
|
LuaScript:
|
||||||
Scripts: soviet06a.lua, soviet06a-AI.lua
|
Scripts: soviet06a.lua, soviet06a-AI.lua, soviet06a-reinforcements_teams.lua
|
||||||
ObjectivesPanel:
|
ObjectivesPanel:
|
||||||
PanelName: MISSION_OBJECTIVES
|
PanelName: MISSION_OBJECTIVES
|
||||||
^Building:
|
^Building:
|
||||||
|
|||||||
59
mods/ra/maps/soviet-06a/soviet06a-reinforcements_teams.lua
Normal file
59
mods/ra/maps/soviet-06a/soviet06a-reinforcements_teams.lua
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
EnemyReinforcements =
|
||||||
|
{
|
||||||
|
Easy =
|
||||||
|
{
|
||||||
|
{ "e1", "e1", "e3" },
|
||||||
|
{ "e1", "e3", "jeep" },
|
||||||
|
{ "e1", "jeep", "1tnk" }
|
||||||
|
},
|
||||||
|
|
||||||
|
Normal =
|
||||||
|
{
|
||||||
|
{ "e1", "e1", "e3", "e3" },
|
||||||
|
{ "e1", "e3", "jeep", "jeep" },
|
||||||
|
{ "e1", "jeep", "1tnk", "2tnk" }
|
||||||
|
},
|
||||||
|
|
||||||
|
Hard =
|
||||||
|
{
|
||||||
|
{ "e1", "e1", "e3", "e3", "e1" },
|
||||||
|
{ "e1", "e3", "jeep", "jeep", "1tnk" },
|
||||||
|
{ "e1", "jeep", "1tnk", "2tnk", "arty" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EnemyAttackDelay =
|
||||||
|
{
|
||||||
|
Easy = DateTime.Minutes(5),
|
||||||
|
Normal = DateTime.Minutes(2) + DateTime.Seconds(40),
|
||||||
|
Hard = DateTime.Minutes(1) + DateTime.Seconds(30)
|
||||||
|
}
|
||||||
|
|
||||||
|
EnemyPaths =
|
||||||
|
{
|
||||||
|
{ EnemyEntry1.Location, EnemyRally1.Location },
|
||||||
|
{ EnemyEntry2.Location, EnemyRally2.Location }
|
||||||
|
}
|
||||||
|
|
||||||
|
wave = 0
|
||||||
|
SendEnemies = function()
|
||||||
|
Trigger.AfterDelay(EnemyAttackDelay[Map.Difficulty], function()
|
||||||
|
|
||||||
|
wave = wave + 1
|
||||||
|
if wave > 3 then
|
||||||
|
wave = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
if wave == 1 then
|
||||||
|
local units = Reinforcements.ReinforceWithTransport(enemy, "tran", EnemyReinforcements[Map.Difficulty][wave], EnemyPaths[1], { EnemyPaths[1][1] })[2]
|
||||||
|
Utils.Do(units, IdleHunt)
|
||||||
|
else
|
||||||
|
local units = Reinforcements.ReinforceWithTransport(enemy, "lst", EnemyReinforcements[Map.Difficulty][wave], EnemyPaths[2], { EnemyPaths[2][1] })[2]
|
||||||
|
Utils.Do(units, IdleHunt)
|
||||||
|
end
|
||||||
|
|
||||||
|
if not Dome.IsDead then
|
||||||
|
SendEnemies()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
@@ -76,11 +76,17 @@ Trigger.OnKilled(Apwr2, function(building)
|
|||||||
BaseApwr2.exists = false
|
BaseApwr2.exists = false
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
Trigger.OnKilled(Dome, function()
|
||||||
|
player.MarkCompletedObjective(sovietObjective2)
|
||||||
|
Media.PlaySpeechNotification(player, "ObjectiveMet")
|
||||||
|
end)
|
||||||
|
|
||||||
-- Activate the AI once the player deployed the Mcv
|
-- Activate the AI once the player deployed the Mcv
|
||||||
Trigger.OnRemovedFromWorld(Mcv, function()
|
Trigger.OnRemovedFromWorld(Mcv, function()
|
||||||
if not mcvDeployed then
|
if not mcvDeployed then
|
||||||
mcvDeployed = true
|
mcvDeployed = true
|
||||||
BuildBase()
|
BuildBase()
|
||||||
|
SendEnemies()
|
||||||
Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
|
Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
|
||||||
Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor)
|
Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor)
|
||||||
Trigger.AfterDelay(DateTime.Minutes(2), function()
|
Trigger.AfterDelay(DateTime.Minutes(2), function()
|
||||||
@@ -128,6 +134,7 @@ WorldLoaded = function()
|
|||||||
end)
|
end)
|
||||||
alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.")
|
alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.")
|
||||||
sovietObjective = player.AddPrimaryObjective("Escort the Convoy.")
|
sovietObjective = player.AddPrimaryObjective("Escort the Convoy.")
|
||||||
|
sovietObjective2 = player.AddSecondaryObjective("Destroy the Allied radar dome to stop enemy\nreinforcements.")
|
||||||
end
|
end
|
||||||
|
|
||||||
Tick = function()
|
Tick = function()
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ Options:
|
|||||||
FragileAlliances: False
|
FragileAlliances: False
|
||||||
StartingCash: 11500
|
StartingCash: 11500
|
||||||
ConfigurableStartingUnits: False
|
ConfigurableStartingUnits: False
|
||||||
|
Difficulties: Easy, Normal, Hard
|
||||||
ShortGame: False
|
ShortGame: False
|
||||||
|
|
||||||
Players:
|
Players:
|
||||||
@@ -325,9 +326,6 @@ Actors:
|
|||||||
Location: 61,48
|
Location: 61,48
|
||||||
Owner: Greece
|
Owner: Greece
|
||||||
Facing: 160
|
Facing: 160
|
||||||
Actor95: dome
|
|
||||||
Location: 67,49
|
|
||||||
Owner: Greece
|
|
||||||
Actor103: 2tnk
|
Actor103: 2tnk
|
||||||
Location: 76,30
|
Location: 76,30
|
||||||
Owner: Greece
|
Owner: Greece
|
||||||
@@ -429,6 +427,9 @@ Actors:
|
|||||||
Actor147: silo
|
Actor147: silo
|
||||||
Owner: Greece
|
Owner: Greece
|
||||||
Location: 73,49
|
Location: 73,49
|
||||||
|
Actor148: sbag
|
||||||
|
Owner: Greece
|
||||||
|
Location: 65,51
|
||||||
waypoint69: waypoint
|
waypoint69: waypoint
|
||||||
Location: 21,28
|
Location: 21,28
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
@@ -450,6 +451,10 @@ Actors:
|
|||||||
waypoint94: waypoint
|
waypoint94: waypoint
|
||||||
Location: 49,16
|
Location: 49,16
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
|
AGun: agun
|
||||||
|
Owner: Greece
|
||||||
|
Location: 69,48
|
||||||
|
TurretFacing: 92
|
||||||
APCWaypoint1: waypoint
|
APCWaypoint1: waypoint
|
||||||
Location: 39,62
|
Location: 39,62
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
@@ -480,6 +485,21 @@ Actors:
|
|||||||
CYardLocation: waypoint
|
CYardLocation: waypoint
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Location: 71,49
|
Location: 71,49
|
||||||
|
Dome: dome
|
||||||
|
Location: 67,49
|
||||||
|
Owner: Greece
|
||||||
|
EnemyEntry1: waypoint
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 53,10
|
||||||
|
EnemyEntry2: waypoint
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 18,62
|
||||||
|
EnemyRally1: waypoint
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 53,31
|
||||||
|
EnemyRally2: waypoint
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 25,62
|
||||||
Harvester: harv
|
Harvester: harv
|
||||||
Location: 77,39
|
Location: 77,39
|
||||||
Owner: Greece
|
Owner: Greece
|
||||||
@@ -532,7 +552,7 @@ Rules:
|
|||||||
-SpawnMPUnits:
|
-SpawnMPUnits:
|
||||||
-MPStartLocations:
|
-MPStartLocations:
|
||||||
LuaScript:
|
LuaScript:
|
||||||
Scripts: soviet06b.lua, soviet06b-AI.lua
|
Scripts: soviet06b.lua, soviet06b-AI.lua, soviet06b-reinforcements_teams.lua
|
||||||
ObjectivesPanel:
|
ObjectivesPanel:
|
||||||
PanelName: MISSION_OBJECTIVES
|
PanelName: MISSION_OBJECTIVES
|
||||||
^Building:
|
^Building:
|
||||||
|
|||||||
59
mods/ra/maps/soviet-06b/soviet06b-reinforcements_teams.lua
Normal file
59
mods/ra/maps/soviet-06b/soviet06b-reinforcements_teams.lua
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
EnemyReinforcements =
|
||||||
|
{
|
||||||
|
Easy =
|
||||||
|
{
|
||||||
|
{ "e1", "e1", "e3" },
|
||||||
|
{ "e1", "e3", "jeep" },
|
||||||
|
{ "e1", "jeep", "1tnk" }
|
||||||
|
},
|
||||||
|
|
||||||
|
Normal =
|
||||||
|
{
|
||||||
|
{ "e1", "e1", "e3", "e3" },
|
||||||
|
{ "e1", "e3", "jeep", "jeep" },
|
||||||
|
{ "e1", "jeep", "1tnk", "2tnk" }
|
||||||
|
},
|
||||||
|
|
||||||
|
Hard =
|
||||||
|
{
|
||||||
|
{ "e1", "e1", "e3", "e3", "e1" },
|
||||||
|
{ "e1", "e3", "jeep", "jeep", "1tnk" },
|
||||||
|
{ "e1", "jeep", "1tnk", "2tnk", "arty" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EnemyAttackDelay =
|
||||||
|
{
|
||||||
|
Easy = DateTime.Minutes(5),
|
||||||
|
Normal = DateTime.Minutes(2) + DateTime.Seconds(40),
|
||||||
|
Hard = DateTime.Minutes(1) + DateTime.Seconds(30)
|
||||||
|
}
|
||||||
|
|
||||||
|
EnemyPaths =
|
||||||
|
{
|
||||||
|
{ EnemyEntry1.Location, EnemyRally1.Location },
|
||||||
|
{ EnemyEntry2.Location, EnemyRally2.Location }
|
||||||
|
}
|
||||||
|
|
||||||
|
wave = 0
|
||||||
|
SendEnemies = function()
|
||||||
|
Trigger.AfterDelay(EnemyAttackDelay[Map.Difficulty], function()
|
||||||
|
|
||||||
|
wave = wave + 1
|
||||||
|
if wave > 3 then
|
||||||
|
wave = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
if wave == 1 then
|
||||||
|
local units = Reinforcements.ReinforceWithTransport(enemy, "tran", EnemyReinforcements[Map.Difficulty][wave], EnemyPaths[1], { EnemyPaths[1][1] })[2]
|
||||||
|
Utils.Do(units, IdleHunt)
|
||||||
|
else
|
||||||
|
local units = Reinforcements.ReinforceWithTransport(enemy, "lst", EnemyReinforcements[Map.Difficulty][wave], EnemyPaths[2], { EnemyPaths[2][1] })[2]
|
||||||
|
Utils.Do(units, IdleHunt)
|
||||||
|
end
|
||||||
|
|
||||||
|
if not Dome.IsDead then
|
||||||
|
SendEnemies()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
@@ -47,10 +47,16 @@ Trigger.OnKilled(Apwr2, function(building)
|
|||||||
BaseApwr2.exists = false
|
BaseApwr2.exists = false
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
Trigger.OnKilled(Dome, function()
|
||||||
|
player.MarkCompletedObjective(sovietObjective2)
|
||||||
|
Media.PlaySpeechNotification(player, "ObjectiveMet")
|
||||||
|
end)
|
||||||
|
|
||||||
Trigger.OnRemovedFromWorld(Mcv, function()
|
Trigger.OnRemovedFromWorld(Mcv, function()
|
||||||
if not mcvDeployed then
|
if not mcvDeployed then
|
||||||
mcvDeployed = true
|
mcvDeployed = true
|
||||||
BuildBase()
|
BuildBase()
|
||||||
|
SendEnemies()
|
||||||
Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
|
Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
|
||||||
Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor)
|
Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor)
|
||||||
end
|
end
|
||||||
@@ -93,6 +99,7 @@ WorldLoaded = function()
|
|||||||
end)
|
end)
|
||||||
alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.")
|
alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.")
|
||||||
sovietObjective = player.AddPrimaryObjective("Escort the Convoy.")
|
sovietObjective = player.AddPrimaryObjective("Escort the Convoy.")
|
||||||
|
sovietObjective2 = player.AddSecondaryObjective("Destroy the Allied radar dome to stop enemy\nreinforcements.")
|
||||||
end
|
end
|
||||||
|
|
||||||
Tick = function()
|
Tick = function()
|
||||||
|
|||||||
Reference in New Issue
Block a user