Added soviet05
This commit is contained in:
159
mods/ra/maps/soviet-05/AI.lua
Normal file
159
mods/ra/maps/soviet-05/AI.lua
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
|
||||||
|
|
||||||
|
IdlingUnits = function()
|
||||||
|
local lazyUnits = Map.ActorsInBox(NWIdlePoint.CenterPosition, Map.BottomRight, function(actor)
|
||||||
|
return actor.HasProperty("Hunt") and (actor.Owner == GoodGuy or actor.Owner == Greece) end)
|
||||||
|
|
||||||
|
Utils.Do(lazyUnits, function(unit)
|
||||||
|
Trigger.OnDamaged(unit, function()
|
||||||
|
Trigger.ClearAll(unit)
|
||||||
|
Trigger.AfterDelay(0, function() IdleHunt(unit) end)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
BaseBuildings = {
|
||||||
|
{ "powr", CVec.New(3, -2), 300 },
|
||||||
|
{ "tent", CVec.New(0, 4), 400 },
|
||||||
|
{ "hbox", CVec.New(3, 6), 600 },
|
||||||
|
{ "proc", CVec.New(4, 2), 1400 },
|
||||||
|
{ "powr", CVec.New(5, -3), 300 },
|
||||||
|
{ "weap", CVec.New(-5, 3), 2000 },
|
||||||
|
{ "hbox", CVec.New(-6, 5), 600 },
|
||||||
|
{ "gun", CVec.New(0, 8), 600 },
|
||||||
|
{ "gun", CVec.New(-4, 7), 600 },
|
||||||
|
{ "powr", CVec.New(-4, -3), 300 },
|
||||||
|
{ "proc", CVec.New(-9, 1), 1400 },
|
||||||
|
{ "powr", CVec.New(-8, -2), 300 },
|
||||||
|
{ "silo", CVec.New(6, 0), 150 },
|
||||||
|
{ "agun", CVec.New(-3, 0), 800 },
|
||||||
|
{ "powr", CVec.New(-6, -2), 300 },
|
||||||
|
{ "agun", CVec.New(4, 1), 800 },
|
||||||
|
{ "gun", CVec.New(-9, 5), 600 },
|
||||||
|
{ "gun", CVec.New(-2, -3), 600 },
|
||||||
|
{ "powr", CVec.New(4, 6), 300 },
|
||||||
|
{ "gun", CVec.New(3, -6), 600 },
|
||||||
|
{ "hbox", CVec.New(3, -4), 600 },
|
||||||
|
{ "gun", CVec.New(2, 3), 600 }
|
||||||
|
}
|
||||||
|
|
||||||
|
BuildBase = function()
|
||||||
|
if not CheckForCYard() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
for i,v in ipairs(BaseBuildings) do
|
||||||
|
if not v[4] then
|
||||||
|
BuildBuilding(v)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(5), BuildBase)
|
||||||
|
end
|
||||||
|
|
||||||
|
BuildBuilding = function(building)
|
||||||
|
Trigger.AfterDelay(Actor.BuildTime(building[1]), function()
|
||||||
|
local actor = Actor.Create(building[1], true, { Owner = GoodGuy, Location = MCVDeploy.Location + building[2] })
|
||||||
|
GoodGuy.Cash = GoodGuy.Cash - building[3]
|
||||||
|
|
||||||
|
building[4] = true
|
||||||
|
Trigger.OnKilled(actor, function() building[4] = false end)
|
||||||
|
Trigger.OnDamaged(actor, function(building)
|
||||||
|
if building.Owner == GoodGuy and building.Health < building.MaxHealth * 3/4 then
|
||||||
|
building.StartBuildingRepairs()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(1), BuildBase)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
ProduceInfantry = function()
|
||||||
|
if Barr.IsDead then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9))
|
||||||
|
local toBuild = { Utils.Random(AlliedInfantryTypes) }
|
||||||
|
Greece.Build(toBuild, function(unit)
|
||||||
|
GreeceInfAttack[#GreeceInfAttack + 1] = unit[1]
|
||||||
|
|
||||||
|
if #GreeceInfAttack >= 7 then
|
||||||
|
SendUnits(GreeceInfAttack, InfantryWaypoints)
|
||||||
|
GreeceInfAttack = { }
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(2), ProduceInfantry)
|
||||||
|
else
|
||||||
|
Trigger.AfterDelay(delay, ProduceInfantry)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
ProduceShips = function()
|
||||||
|
if Shipyard.IsDead then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
Greece.Build( {"dd"}, function(unit)
|
||||||
|
Ships[#Ships + 1] = unit[1]
|
||||||
|
|
||||||
|
if #Ships >= 2 then
|
||||||
|
SendUnits(Ships, ShipWaypoints)
|
||||||
|
Ships = { }
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(6), ProduceShips)
|
||||||
|
else
|
||||||
|
Trigger.AfterDelay(Actor.BuildTime("dd"), ProduceShips)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
ProduceInfantryGG = function()
|
||||||
|
if not BaseBuildings[2][4] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9))
|
||||||
|
local toBuild = { Utils.Random(AlliedInfantryTypes) }
|
||||||
|
GoodGuy.Build(toBuild, function(unit)
|
||||||
|
GGInfAttack[#GGInfAttack + 1] = unit[1]
|
||||||
|
|
||||||
|
if #GGInfAttack >= 10 then
|
||||||
|
SendUnits(GGInfAttack, InfantryGGWaypoints)
|
||||||
|
GGInfAttack = { }
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(2), ProduceInfantryGG)
|
||||||
|
else
|
||||||
|
Trigger.AfterDelay(delay, ProduceInfantryGG)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
ProduceTanksGG = function()
|
||||||
|
if not BaseBuildings[6][4] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local delay = Utils.RandomInteger(DateTime.Seconds(12), DateTime.Seconds(17))
|
||||||
|
local toBuild = { Utils.Random(AlliedTankTypes) }
|
||||||
|
GoodGuy.Build(toBuild, function(unit)
|
||||||
|
TankAttackGG[#TankAttackGG + 1] = unit[1]
|
||||||
|
|
||||||
|
if #TankAttackGG >= 6 then
|
||||||
|
SendUnits(TankAttackGG, TanksGGWaypoints)
|
||||||
|
TankAttackGG = { }
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(3), ProduceTanksGG)
|
||||||
|
else
|
||||||
|
Trigger.AfterDelay(delay, ProduceTanksGG)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
SendUnits = function(units, waypoints)
|
||||||
|
Utils.Do(units, function(unit)
|
||||||
|
if not unit.IsDead then
|
||||||
|
Utils.Do(waypoints, function(waypoint)
|
||||||
|
unit.AttackMove(waypoint.Location)
|
||||||
|
end)
|
||||||
|
unit.Hunt()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
276
mods/ra/maps/soviet-05/main.lua
Normal file
276
mods/ra/maps/soviet-05/main.lua
Normal file
@@ -0,0 +1,276 @@
|
|||||||
|
CheckForBase = function()
|
||||||
|
baseBuildings = Map.ActorsInBox(Map.TopLeft, CFBPoint.CenterPosition, function(actor)
|
||||||
|
return actor.Type == "fact" or actor.Type == "powr"
|
||||||
|
end)
|
||||||
|
|
||||||
|
return #baseBuildings >= 2
|
||||||
|
end
|
||||||
|
|
||||||
|
CheckForCYard = function()
|
||||||
|
ConYard = Map.ActorsInBox(mcvGGLoadPoint.CenterPosition, ReinfEastPoint.CenterPosition, function(actor)
|
||||||
|
return actor.Type == "fact" and actor.Owner == GoodGuy
|
||||||
|
end)
|
||||||
|
|
||||||
|
return #ConYard >= 1
|
||||||
|
end
|
||||||
|
|
||||||
|
CheckForSPen = function()
|
||||||
|
SPens = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(actor)
|
||||||
|
return actor.Type == "spen"
|
||||||
|
end)
|
||||||
|
|
||||||
|
return #SPens >=1
|
||||||
|
end
|
||||||
|
|
||||||
|
RunInitialActivities = function()
|
||||||
|
if Map.Difficulty == "Hard" then
|
||||||
|
Expand()
|
||||||
|
ExpansionCheck = true
|
||||||
|
else
|
||||||
|
ExpansionCheck = false
|
||||||
|
end
|
||||||
|
|
||||||
|
Trigger.AfterDelay(1, function()
|
||||||
|
Harvester.FindResources()
|
||||||
|
Helper.Destroy()
|
||||||
|
IdlingUnits()
|
||||||
|
Media.PlaySpeechNotification(player, "ReinforcementsArrived")
|
||||||
|
|
||||||
|
local buildings = Map.ActorsInBox(NWIdlePoint.CenterPosition, Map.BottomRight, function(self) return self.Owner == Greece and self.HasProperty("StartBuildingRepairs") end)
|
||||||
|
Utils.Do(buildings, function(actor)
|
||||||
|
Trigger.OnDamaged(actor, function(building)
|
||||||
|
if building.Owner == Greece and building.Health < building.MaxHealth * 3/4 then
|
||||||
|
building.StartBuildingRepairs()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Reinforcements.Reinforce(player, SovietStartReinf, SovietStartToBasePath, 0, function(soldier)
|
||||||
|
soldier.AttackMove(SovietBasePoint.Location)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Actor.Create("camera", true, { Owner = player, Location = GreeceBasePoint.Location })
|
||||||
|
Actor.Create("camera", true, { Owner = player, Location = SovietBasePoint.Location })
|
||||||
|
|
||||||
|
startmcv.Move(MCVStartMovePoint.Location)
|
||||||
|
Runner1.Move(RunnerPoint.Location)
|
||||||
|
Runner2.Move(RunnerPoint.Location)
|
||||||
|
Runner3.Move(RunnerPoint.Location)
|
||||||
|
|
||||||
|
ProduceInfantry()
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(2), ProduceShips)
|
||||||
|
|
||||||
|
if Map.Difficulty == "Hard" or Map.Difficulty == "Medium" then
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(25), ReinfInf)
|
||||||
|
end
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(2), ReinfInf)
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(3), BringDDPatrol2)
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(5), ReinfInf)
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(6), BringDDPatrol1)
|
||||||
|
end
|
||||||
|
|
||||||
|
Expand = function()
|
||||||
|
if ExpansionCheck then
|
||||||
|
return
|
||||||
|
elseif mcvtransport.IsDead then
|
||||||
|
return
|
||||||
|
elseif mcvGG.IsDead then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
mcvGG.Move(mcvGGLoadPoint.Location)
|
||||||
|
mcvtransport.Move(lstBeachPoint.Location)
|
||||||
|
|
||||||
|
Reinforcements.Reinforce(GoodGuy, { "dd", "dd" }, ShipArrivePath, 0, function(ddsquad)
|
||||||
|
ddsquad.AttackMove(NearExpPoint.Location) end)
|
||||||
|
|
||||||
|
ExpansionCheck = true
|
||||||
|
Trigger.ClearAll(mcvGG)
|
||||||
|
Trigger.ClearAll(mcvtransport)
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||||
|
if mcvtransport.IsDead then
|
||||||
|
return
|
||||||
|
elseif mcvGG.IsDead then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
mcvGG.IsInWorld = false
|
||||||
|
mcvtransport.LoadPassenger(mcvGG)
|
||||||
|
mcvtransport.Move(GGUnloadPoint.Location)
|
||||||
|
mcvtransport.UnloadPassengers()
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(12), function()
|
||||||
|
if mcvGG.IsDead then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
mcvGG.Move(MCVDeploy.Location)
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(4), function()
|
||||||
|
if not mcvGG.IsDead then
|
||||||
|
mcvGG.Deploy()
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(4), function()
|
||||||
|
local fact = Map.ActorsInBox(mcvGGLoadPoint.CenterPosition, ReinfEastPoint.CenterPosition, function(actor)
|
||||||
|
return actor.Type == "fact" and actor.Owner == GoodGuy end)
|
||||||
|
if #fact == 0 then
|
||||||
|
return
|
||||||
|
else
|
||||||
|
Trigger.OnDamaged(fact[1], function()
|
||||||
|
if fact[1].Owner == GoodGuy and fact[1].Health < fact[1].MaxHealth * 3/4 then
|
||||||
|
fact[1].StartBuildingRepairs()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
IslandTroops1()
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(3), IslandTroops2)
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(6), IslandTroops3)
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(7), BuildBase)
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mcvtransport.IsDead then
|
||||||
|
mcvtransport.Move(ReinfNorthPoint.Location)
|
||||||
|
mcvtransport.Destroy()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
Tick = function()
|
||||||
|
if Greece.HasNoRequiredUnits() and GoodGuy.HasNoRequiredUnits() then
|
||||||
|
player.MarkCompletedObjective(KillAll)
|
||||||
|
player.MarkCompletedObjective(HoldObjective)
|
||||||
|
end
|
||||||
|
|
||||||
|
if player.HasNoRequiredUnits() then
|
||||||
|
GoodGuy.MarkCompletedObjective(BeatUSSR)
|
||||||
|
end
|
||||||
|
|
||||||
|
if Greece.Resources >= Greece.ResourceCapacity * 0.75 then
|
||||||
|
Greece.Cash = Greece.Cash + Greece.Resources - Greece.ResourceCapacity * 0.25
|
||||||
|
Greece.Resources = Greece.ResourceCapacity * 0.25
|
||||||
|
end
|
||||||
|
|
||||||
|
if GoodGuy.Resources >= GoodGuy.ResourceCapacity * 0.75 then
|
||||||
|
GoodGuy.Cash = GoodGuy.Cash + GoodGuy.Resources - GoodGuy.ResourceCapacity * 0.25
|
||||||
|
GoodGuy.Resources = GoodGuy.ResourceCapacity * 0.25
|
||||||
|
end
|
||||||
|
|
||||||
|
if not baseEstablished and CheckForBase() then
|
||||||
|
baseEstablished = true
|
||||||
|
Para()
|
||||||
|
end
|
||||||
|
|
||||||
|
if not SPenEstablished and CheckForSPen() then
|
||||||
|
SPenEstablished = true
|
||||||
|
|
||||||
|
local units = Reinforcements.ReinforceWithTransport(Greece, "lst", ArtyReinf, SouthReinfPath, { ReinfEastPoint.Location })[2]
|
||||||
|
Utils.Do(units, function(unit) IdleHunt(unit) end)
|
||||||
|
if not ExpansionCheck then
|
||||||
|
Expand()
|
||||||
|
ExpansionCheck = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not RCheck then
|
||||||
|
RCheck = true
|
||||||
|
if Map.Difficulty == "Easy" and ReinfCheck then
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(6), ReinfArmor)
|
||||||
|
elseif Map.Difficulty == "Medium" then
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(4), ReinfArmor)
|
||||||
|
else
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(3), ReinfArmor)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
WorldLoaded = function()
|
||||||
|
player = Player.GetPlayer("USSR")
|
||||||
|
GoodGuy = Player.GetPlayer("GoodGuy")
|
||||||
|
Greece = Player.GetPlayer("Greece")
|
||||||
|
|
||||||
|
RunInitialActivities()
|
||||||
|
|
||||||
|
Trigger.OnObjectiveAdded(player, function(p, id)
|
||||||
|
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
|
||||||
|
end)
|
||||||
|
Trigger.OnObjectiveCompleted(player, function(p, id)
|
||||||
|
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
|
||||||
|
Media.PlaySpeechNotification(player, "ObjectiveMet")
|
||||||
|
end)
|
||||||
|
Trigger.OnObjectiveFailed(player, function(p, id)
|
||||||
|
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
|
||||||
|
end)
|
||||||
|
|
||||||
|
CaptureObjective = player.AddPrimaryObjective("Capture the Radar Dome.")
|
||||||
|
KillAll = player.AddPrimaryObjective("Defeat the Allied forces.")
|
||||||
|
BeatUSSR = GoodGuy.AddPrimaryObjective("Defeat the Soviet forces.")
|
||||||
|
|
||||||
|
Trigger.OnDamaged(mcvGG, Expand)
|
||||||
|
Trigger.OnDamaged(mcvtransport, Expand)
|
||||||
|
|
||||||
|
Trigger.OnKilled(Radar, function()
|
||||||
|
player.MarkFailedObjective(CaptureObjective)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnCapture(Radar, function(self, captor)
|
||||||
|
if captor.Owner ~= player then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
HoldObjective = player.AddPrimaryObjective("Defend the Radar Dome.")
|
||||||
|
player.MarkCompletedObjective(CaptureObjective)
|
||||||
|
|
||||||
|
if not ExpansionCheck then
|
||||||
|
Expand()
|
||||||
|
ExpansionCheck = true
|
||||||
|
end
|
||||||
|
|
||||||
|
Reinforcements.Reinforce(Greece, ArmorReinfGreece, AlliedCrossroadsToRadarPath , 0, function(soldier)
|
||||||
|
soldier.Hunt()
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.AfterDelay(1, function()
|
||||||
|
local newRadar = Actor.Create("dome", true, { Owner = player, Location = Radar.Location })
|
||||||
|
newRadar.Health = Radar.Health
|
||||||
|
Radar.Destroy()
|
||||||
|
Trigger.OnKilled(newRadar, function()
|
||||||
|
player.MarkFailedObjective(HoldObjective)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(USSRExpansionPoint.CenterPosition, WRange.New(4 * 1024), function(unit, id)
|
||||||
|
if unit.Owner == player and Radar.Owner == player then
|
||||||
|
Trigger.RemoveProximityTrigger(id)
|
||||||
|
|
||||||
|
Para2()
|
||||||
|
ProduceInfantryGG()
|
||||||
|
ProduceTanksGG()
|
||||||
|
|
||||||
|
local units = Reinforcements.ReinforceWithTransport(player, "lst", SovietMCVReinf, { ReinfSouthPoint.Location, USSRlstPoint.Location }, { ReinfSouthPoint.Location })[2]
|
||||||
|
Utils.Do(units, function(unit)
|
||||||
|
Trigger.OnAddedToWorld(unit, function()
|
||||||
|
if unit.Type == "mcv" then
|
||||||
|
unit.Move(USSRExpansionPoint.Location)
|
||||||
|
else
|
||||||
|
unit.AttackMove(USSRExpansionPoint.Location)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Media.PlaySpeechNotification(player, "ReinforcementsArrived")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnPlayerLost(player, function()
|
||||||
|
Media.PlaySpeechNotification(player, "Lose")
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnPlayerWon(player, function()
|
||||||
|
Media.PlaySpeechNotification(player, "Win")
|
||||||
|
end)
|
||||||
|
|
||||||
|
Camera.Position = StartCamPoint.CenterPosition
|
||||||
|
end
|
||||||
BIN
mods/ra/maps/soviet-05/map.bin
Normal file
BIN
mods/ra/maps/soviet-05/map.bin
Normal file
Binary file not shown.
BIN
mods/ra/maps/soviet-05/map.png
Normal file
BIN
mods/ra/maps/soviet-05/map.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
744
mods/ra/maps/soviet-05/map.yaml
Normal file
744
mods/ra/maps/soviet-05/map.yaml
Normal file
@@ -0,0 +1,744 @@
|
|||||||
|
MapFormat: 7
|
||||||
|
|
||||||
|
RequiresMod: ra
|
||||||
|
|
||||||
|
Title: Soviet 05: Distant Thunder
|
||||||
|
|
||||||
|
Description: Khalkis island contains a large quantity of ore that we need.\n\nThe Allies are well aware of our plans, and intend to establish their own base there. See to it that they fail.\n\nIn addition, capture their radar center so we can track Allied activity in this area.
|
||||||
|
|
||||||
|
Author: Westwood Studios
|
||||||
|
|
||||||
|
Tileset: TEMPERAT
|
||||||
|
|
||||||
|
MapSize: 128,128
|
||||||
|
|
||||||
|
Bounds: 20,42,90,50
|
||||||
|
|
||||||
|
Visibility: MissionSelector
|
||||||
|
|
||||||
|
Type: Campaign
|
||||||
|
|
||||||
|
Videos:
|
||||||
|
Briefing: soviet5.vqa
|
||||||
|
GameStart: double.vqa
|
||||||
|
GameWon: strafe.vqa
|
||||||
|
GameLost: sovbatl.vqa
|
||||||
|
|
||||||
|
Options:
|
||||||
|
Crates: False
|
||||||
|
Fog: True
|
||||||
|
Shroud: True
|
||||||
|
AllyBuildRadius: False
|
||||||
|
FragileAlliances: False
|
||||||
|
StartingCash: 5000
|
||||||
|
TechLevel: Medium
|
||||||
|
ConfigurableStartingUnits: False
|
||||||
|
Difficulties: Easy, Normal, Hard
|
||||||
|
ShortGame: False
|
||||||
|
|
||||||
|
Players:
|
||||||
|
PlayerReference@Neutral:
|
||||||
|
Name: Neutral
|
||||||
|
OwnsWorld: True
|
||||||
|
NonCombatant: True
|
||||||
|
Race: england
|
||||||
|
PlayerReference@Creeps:
|
||||||
|
Name: Creeps
|
||||||
|
NonCombatant: True
|
||||||
|
Race: england
|
||||||
|
PlayerReference@Greece:
|
||||||
|
Name: Greece
|
||||||
|
Race: allies
|
||||||
|
ColorRamp: 161,134,236
|
||||||
|
Allies: GoodGuy
|
||||||
|
Enemies: USSR
|
||||||
|
PlayerReference@USSR:
|
||||||
|
Name: USSR
|
||||||
|
Race: soviet
|
||||||
|
Playable: True
|
||||||
|
AllowBots: False
|
||||||
|
Required: True
|
||||||
|
LockRace: True
|
||||||
|
LockColor: True
|
||||||
|
ColorRamp: 3,255,127
|
||||||
|
LockSpawn: True
|
||||||
|
LockTeam: True
|
||||||
|
Enemies: Greece, GoodGuy
|
||||||
|
PlayerReference@GoodGuy:
|
||||||
|
Name: GoodGuy
|
||||||
|
Race: allies
|
||||||
|
ColorRamp: 161,134,236
|
||||||
|
Allies: Greece
|
||||||
|
Enemies: USSR
|
||||||
|
|
||||||
|
Actors:
|
||||||
|
Actor0: sbag
|
||||||
|
Location: 60,42
|
||||||
|
Owner: Neutral
|
||||||
|
Actor1: sbag
|
||||||
|
Location: 61,42
|
||||||
|
Owner: Neutral
|
||||||
|
Actor2: sbag
|
||||||
|
Location: 60,43
|
||||||
|
Owner: Neutral
|
||||||
|
Actor3: sbag
|
||||||
|
Location: 60,44
|
||||||
|
Owner: Neutral
|
||||||
|
Actor4: sbag
|
||||||
|
Location: 60,48
|
||||||
|
Owner: Neutral
|
||||||
|
Actor5: sbag
|
||||||
|
Location: 60,49
|
||||||
|
Owner: Neutral
|
||||||
|
Actor6: sbag
|
||||||
|
Location: 60,50
|
||||||
|
Owner: Neutral
|
||||||
|
Actor7: sbag
|
||||||
|
Location: 61,50
|
||||||
|
Owner: Neutral
|
||||||
|
Actor8: tc01
|
||||||
|
Location: 33,41
|
||||||
|
Owner: Neutral
|
||||||
|
Actor9: tc03
|
||||||
|
Location: 20,52
|
||||||
|
Owner: Neutral
|
||||||
|
Actor10: tc02
|
||||||
|
Location: 24,62
|
||||||
|
Owner: Neutral
|
||||||
|
Actor11: t06
|
||||||
|
Location: 62,84
|
||||||
|
Owner: Neutral
|
||||||
|
Actor12: t07
|
||||||
|
Location: 85,78
|
||||||
|
Owner: Neutral
|
||||||
|
Actor13: t14
|
||||||
|
Location: 84,77
|
||||||
|
Owner: Neutral
|
||||||
|
Actor14: t12
|
||||||
|
Location: 95,77
|
||||||
|
Owner: Neutral
|
||||||
|
Actor15: t07
|
||||||
|
Location: 78,77
|
||||||
|
Owner: Neutral
|
||||||
|
Actor16: t02
|
||||||
|
Location: 81,74
|
||||||
|
Owner: Neutral
|
||||||
|
Actor17: t16
|
||||||
|
Location: 46,79
|
||||||
|
Owner: Neutral
|
||||||
|
Actor18: tc03
|
||||||
|
Location: 47,78
|
||||||
|
Owner: Neutral
|
||||||
|
Actor19: t10
|
||||||
|
Location: 45,78
|
||||||
|
Owner: Neutral
|
||||||
|
Actor20: t14
|
||||||
|
Location: 45,77
|
||||||
|
Owner: Neutral
|
||||||
|
Actor21: t17
|
||||||
|
Location: 45,76
|
||||||
|
Owner: Neutral
|
||||||
|
Actor22: t08
|
||||||
|
Location: 60,83
|
||||||
|
Owner: Neutral
|
||||||
|
Actor23: t17
|
||||||
|
Location: 81,71
|
||||||
|
Owner: Neutral
|
||||||
|
Actor24: tc02
|
||||||
|
Location: 45,48
|
||||||
|
Owner: Neutral
|
||||||
|
Actor25: tc01
|
||||||
|
Location: 32,90
|
||||||
|
Owner: Neutral
|
||||||
|
Actor26: tc03
|
||||||
|
Location: 33,89
|
||||||
|
Owner: Neutral
|
||||||
|
Actor27: tc05
|
||||||
|
Location: 20,83
|
||||||
|
Owner: Neutral
|
||||||
|
Actor28: t11
|
||||||
|
Location: 25,88
|
||||||
|
Owner: Neutral
|
||||||
|
Actor29: t17
|
||||||
|
Location: 20,90
|
||||||
|
Owner: Neutral
|
||||||
|
Actor30: tc01
|
||||||
|
Location: 24,90
|
||||||
|
Owner: Neutral
|
||||||
|
Actor31: tc04
|
||||||
|
Location: 23,89
|
||||||
|
Owner: Neutral
|
||||||
|
Actor32: tc05
|
||||||
|
Location: 20,89
|
||||||
|
Owner: Neutral
|
||||||
|
Actor33: t01
|
||||||
|
Location: 28,47
|
||||||
|
Owner: Neutral
|
||||||
|
Actor34: t05
|
||||||
|
Location: 24,42
|
||||||
|
Owner: Neutral
|
||||||
|
Actor35: tc04
|
||||||
|
Location: 36,54
|
||||||
|
Owner: Neutral
|
||||||
|
Actor36: tc01
|
||||||
|
Location: 36,51
|
||||||
|
Owner: Neutral
|
||||||
|
Actor37: tc02
|
||||||
|
Location: 61,42
|
||||||
|
Owner: Neutral
|
||||||
|
Actor38: tc02
|
||||||
|
Location: 63,70
|
||||||
|
Owner: Neutral
|
||||||
|
Actor39: t12
|
||||||
|
Location: 73,79
|
||||||
|
Owner: Neutral
|
||||||
|
Actor40: tc03
|
||||||
|
Location: 82,64
|
||||||
|
Owner: Neutral
|
||||||
|
Actor41: t03
|
||||||
|
Location: 46,58
|
||||||
|
Owner: Neutral
|
||||||
|
Actor42: tc05
|
||||||
|
Location: 57,50
|
||||||
|
Owner: Neutral
|
||||||
|
Actor43: t16
|
||||||
|
Location: 59,41
|
||||||
|
Owner: Neutral
|
||||||
|
Actor44: tc01
|
||||||
|
Location: 56,51
|
||||||
|
Owner: Neutral
|
||||||
|
Actor45: t11
|
||||||
|
Location: 47,48
|
||||||
|
Owner: Neutral
|
||||||
|
Actor46: t05
|
||||||
|
Location: 51,48
|
||||||
|
Owner: Neutral
|
||||||
|
Actor47: mine
|
||||||
|
Location: 27,48
|
||||||
|
Owner: Neutral
|
||||||
|
Actor48: t01
|
||||||
|
Location: 71,81
|
||||||
|
Owner: Neutral
|
||||||
|
Actor49: t02
|
||||||
|
Location: 71,82
|
||||||
|
Owner: Neutral
|
||||||
|
Actor50: t02
|
||||||
|
Location: 81,61
|
||||||
|
Owner: Neutral
|
||||||
|
Actor51: t03
|
||||||
|
Location: 80,57
|
||||||
|
Owner: Neutral
|
||||||
|
Actor52: t05
|
||||||
|
Location: 80,58
|
||||||
|
Owner: Neutral
|
||||||
|
Actor53: tc01
|
||||||
|
Location: 78,61
|
||||||
|
Owner: Neutral
|
||||||
|
Actor54: agun
|
||||||
|
Location: 73,45
|
||||||
|
Owner: Greece
|
||||||
|
Actor55: gun
|
||||||
|
Location: 69,49
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 32
|
||||||
|
Radar: dome.ignore
|
||||||
|
Location: 70,45
|
||||||
|
Owner: Greece
|
||||||
|
Actor57: fact
|
||||||
|
Location: 67,42
|
||||||
|
Owner: Greece
|
||||||
|
Actor58: powr
|
||||||
|
Location: 74,47
|
||||||
|
Owner: Greece
|
||||||
|
Actor59: brl3
|
||||||
|
Location: 66,42
|
||||||
|
Owner: Greece
|
||||||
|
Actor60: brl3
|
||||||
|
Location: 71,42
|
||||||
|
Owner: Greece
|
||||||
|
Actor61: brl3
|
||||||
|
Location: 71,43
|
||||||
|
Owner: Greece
|
||||||
|
Actor62: brl3
|
||||||
|
Location: 76,43
|
||||||
|
Owner: Greece
|
||||||
|
Actor63: barl
|
||||||
|
Location: 71,44
|
||||||
|
Owner: Greece
|
||||||
|
Actor64: brl3
|
||||||
|
Location: 73,47
|
||||||
|
Owner: Greece
|
||||||
|
Actor65: barl
|
||||||
|
Location: 66,43
|
||||||
|
Owner: Greece
|
||||||
|
Actor66: brl3
|
||||||
|
Location: 70,42
|
||||||
|
Owner: Greece
|
||||||
|
Actor67: gun
|
||||||
|
Location: 61,44
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 192
|
||||||
|
Actor68: gun
|
||||||
|
Location: 61,48
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 160
|
||||||
|
Actor69: agun
|
||||||
|
Location: 68,46
|
||||||
|
Owner: Greece
|
||||||
|
Actor70: proc
|
||||||
|
Location: 63,42
|
||||||
|
Owner: Greece
|
||||||
|
FreeActor: False
|
||||||
|
Barr: tent
|
||||||
|
Location: 63,47
|
||||||
|
Owner: Greece
|
||||||
|
Shipyard: syrd
|
||||||
|
Location: 78,48
|
||||||
|
Owner: Greece
|
||||||
|
Actor73: powr
|
||||||
|
Location: 74,42
|
||||||
|
Owner: Greece
|
||||||
|
Actor74: powr
|
||||||
|
Location: 72,42
|
||||||
|
Owner: Greece
|
||||||
|
Actor75: powr
|
||||||
|
Location: 72,48
|
||||||
|
Owner: Greece
|
||||||
|
startmcv: mcv
|
||||||
|
Location: 22,80
|
||||||
|
Owner: USSR
|
||||||
|
Facing: 192
|
||||||
|
Actor77: 2tnk
|
||||||
|
Location: 59,43
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 32
|
||||||
|
TurretFacing: 32
|
||||||
|
Actor78: 1tnk
|
||||||
|
Location: 58,48
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 32
|
||||||
|
TurretFacing: 32
|
||||||
|
Actor79: 1tnk
|
||||||
|
Location: 57,44
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 96
|
||||||
|
TurretFacing: 96
|
||||||
|
Actor80: 1tnk
|
||||||
|
Location: 67,49
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 224
|
||||||
|
TurretFacing: 224
|
||||||
|
Harvester: harv
|
||||||
|
Location: 45,45
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 96
|
||||||
|
mcvGG: mcv
|
||||||
|
Location: 75,46
|
||||||
|
Owner: GoodGuy
|
||||||
|
Facing: 192
|
||||||
|
Actor83: 1tnk
|
||||||
|
Location: 43,47
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 224
|
||||||
|
TurretFacing: 64
|
||||||
|
Actor84: e1
|
||||||
|
Location: 61,45
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 160
|
||||||
|
SubCell: 1
|
||||||
|
Actor85: e1
|
||||||
|
Location: 62,46
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 160
|
||||||
|
SubCell: 0
|
||||||
|
Actor86: e1
|
||||||
|
Location: 61,49
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 224
|
||||||
|
SubCell: 2
|
||||||
|
Runner1: e1
|
||||||
|
Location: 25,75
|
||||||
|
Owner: GoodGuy
|
||||||
|
SubCell: 0
|
||||||
|
Runner2: e1
|
||||||
|
Location: 25,76
|
||||||
|
Owner: GoodGuy
|
||||||
|
SubCell: 2
|
||||||
|
Runner3: e1
|
||||||
|
Location: 26,75
|
||||||
|
Owner: GoodGuy
|
||||||
|
SubCell: 0
|
||||||
|
Actor90: e1
|
||||||
|
Location: 64,49
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 96
|
||||||
|
SubCell: 2
|
||||||
|
Actor91: e3
|
||||||
|
Location: 66,44
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 160
|
||||||
|
SubCell: 4
|
||||||
|
Actor92: e3
|
||||||
|
Location: 63,49
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 160
|
||||||
|
SubCell: 4
|
||||||
|
Actor93: e1
|
||||||
|
Location: 58,46
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 160
|
||||||
|
SubCell: 2
|
||||||
|
Actor94: e1
|
||||||
|
Location: 60,48
|
||||||
|
Owner: Greece
|
||||||
|
SubCell: 2
|
||||||
|
Actor96: e3
|
||||||
|
Location: 41,45
|
||||||
|
Owner: Greece
|
||||||
|
SubCell: 4
|
||||||
|
Facing: 64
|
||||||
|
TurretFacing: 128
|
||||||
|
Actor97: e3
|
||||||
|
Location: 41,44
|
||||||
|
Owner: Greece
|
||||||
|
SubCell: 1
|
||||||
|
Facing: 96
|
||||||
|
TurretFacing: 160
|
||||||
|
Actor98: e3
|
||||||
|
Location: 40,45
|
||||||
|
Owner: Greece
|
||||||
|
SubCell: 4
|
||||||
|
Facing: 64
|
||||||
|
TurretFacing: 160
|
||||||
|
Actor99: e3
|
||||||
|
Location: 40,43
|
||||||
|
Owner: Greece
|
||||||
|
SubCell: 1
|
||||||
|
Facing: 96
|
||||||
|
TurretFacing: 160
|
||||||
|
Actor100: e1
|
||||||
|
Location: 39,45
|
||||||
|
Owner: Greece
|
||||||
|
Facing: 160
|
||||||
|
SubCell: 0
|
||||||
|
Actor101: e1
|
||||||
|
Location: 39,44
|
||||||
|
Owner: Greece
|
||||||
|
SubCell: 1
|
||||||
|
Facing: 96
|
||||||
|
TurretFacing: 192
|
||||||
|
Minelayer: mnly.at
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 67,45
|
||||||
|
Facing: 92
|
||||||
|
Actor166: pt
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 67,54
|
||||||
|
Facing: 92
|
||||||
|
TurretFacing: 92
|
||||||
|
Actor167: pt
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 67,59
|
||||||
|
Facing: 60
|
||||||
|
TurretFacing: 60
|
||||||
|
Actor168: pt
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 83,56
|
||||||
|
Facing: 28
|
||||||
|
TurretFacing: 28
|
||||||
|
Actor169: pt
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 83,51
|
||||||
|
Facing: 92
|
||||||
|
TurretFacing: 92
|
||||||
|
mcvtransport: lst
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 80,45
|
||||||
|
Facing: 92
|
||||||
|
Actor171: dd
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 91,51
|
||||||
|
Facing: 28
|
||||||
|
TurretFacing: 28
|
||||||
|
Actor172: dd
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 84,44
|
||||||
|
Facing: 92
|
||||||
|
TurretFacing: 92
|
||||||
|
Actor173: dd
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 96,44
|
||||||
|
Facing: 92
|
||||||
|
TurretFacing: 92
|
||||||
|
Actor174: pt
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 96,51
|
||||||
|
Facing: 92
|
||||||
|
TurretFacing: 92
|
||||||
|
Actor175: dd
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 101,49
|
||||||
|
Facing: 60
|
||||||
|
TurretFacing: 60
|
||||||
|
Actor176: pt
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 107,70
|
||||||
|
Facing: 188
|
||||||
|
TurretFacing: 188
|
||||||
|
Actor177: pt
|
||||||
|
Owner: GoodGuy
|
||||||
|
Location: 58,89
|
||||||
|
Facing: 60
|
||||||
|
TurretFacing: 60
|
||||||
|
Helper: proc
|
||||||
|
Owner: Greece
|
||||||
|
Location: 42,42
|
||||||
|
FreeActor: False
|
||||||
|
Actor181: mine
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 63,65
|
||||||
|
Actor182: mine
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 81,78
|
||||||
|
StartPoint: waypoint
|
||||||
|
Location: 20,80
|
||||||
|
Owner: Neutral
|
||||||
|
SovietBasePoint: waypoint
|
||||||
|
Location: 24,77
|
||||||
|
Owner: Neutral
|
||||||
|
MCVStartMovePoint: waypoint
|
||||||
|
Location: 28,76
|
||||||
|
Owner: Neutral
|
||||||
|
CrossroadPoint: waypoint
|
||||||
|
Location: 52,46
|
||||||
|
Owner: Neutral
|
||||||
|
GreeceBaseEPoint: waypoint
|
||||||
|
Location: 60,46
|
||||||
|
Owner: Neutral
|
||||||
|
NReinfPathPoint1: waypoint
|
||||||
|
Location: 107,68
|
||||||
|
Owner: Neutral
|
||||||
|
SReinfPathPoint1: waypoint
|
||||||
|
Location: 100,81
|
||||||
|
Owner: Neutral
|
||||||
|
SReinfPathPoint2: waypoint
|
||||||
|
Location: 83,90
|
||||||
|
Owner: Neutral
|
||||||
|
NearExpPoint: waypoint
|
||||||
|
Location: 94,49
|
||||||
|
Owner: Neutral
|
||||||
|
CoastGuardPoint: waypoint
|
||||||
|
Location: 96,56
|
||||||
|
Owner: Neutral
|
||||||
|
MCVDeploy: waypoint
|
||||||
|
Location: 96,60
|
||||||
|
Owner: Neutral
|
||||||
|
ReinfSouthPoint: waypoint
|
||||||
|
Location: 44,91
|
||||||
|
Owner: Neutral
|
||||||
|
WIslandPoint: waypoint
|
||||||
|
Location: 41,61
|
||||||
|
Owner: Neutral
|
||||||
|
NearDockPoint: waypoint
|
||||||
|
Location: 85,46
|
||||||
|
Owner: Neutral
|
||||||
|
SReinfPathPoint4: waypoint
|
||||||
|
Location: 58,88
|
||||||
|
Owner: Neutral
|
||||||
|
PatrolPoint1: waypoint
|
||||||
|
Location: 91,69
|
||||||
|
Owner: Neutral
|
||||||
|
PatrolPoint4: waypoint
|
||||||
|
Location: 73,70
|
||||||
|
Owner: Neutral
|
||||||
|
SReinfPathPoint3: waypoint
|
||||||
|
Location: 69,90
|
||||||
|
Owner: Neutral
|
||||||
|
PatrolPoint2: waypoint
|
||||||
|
Location: 89,80
|
||||||
|
Owner: Neutral
|
||||||
|
BetweenBasesPoint: waypoint
|
||||||
|
Location: 78,73
|
||||||
|
Owner: Neutral
|
||||||
|
PatrolPoint3: waypoint
|
||||||
|
Location: 78,80
|
||||||
|
Owner: Neutral
|
||||||
|
USSRExpansionPoint: waypoint
|
||||||
|
Location: 56,77
|
||||||
|
Owner: Neutral
|
||||||
|
PrepGGArmyPoint: waypoint
|
||||||
|
Location: 71,74
|
||||||
|
Owner: Neutral
|
||||||
|
ReinfNorthPoint: waypoint
|
||||||
|
Location: 81,42
|
||||||
|
Owner: Neutral
|
||||||
|
ReinfEastPoint: waypoint
|
||||||
|
Location: 109,75
|
||||||
|
Owner: Neutral
|
||||||
|
NWOrefieldPoint: waypoint
|
||||||
|
Location: 32,49
|
||||||
|
Owner: Neutral
|
||||||
|
AtUSSRBasePoint: waypoint
|
||||||
|
Location: 27,61
|
||||||
|
Owner: Neutral
|
||||||
|
DDAttackPoint: waypoint
|
||||||
|
Location: 40,78
|
||||||
|
Owner: Neutral
|
||||||
|
RunnerPoint: waypoint
|
||||||
|
Location: 28,50
|
||||||
|
Owner: Neutral
|
||||||
|
USSRlstPoint: waypoint
|
||||||
|
Location: 48,83
|
||||||
|
Owner: Neutral
|
||||||
|
CFBPoint: waypoint
|
||||||
|
Location: 42,90
|
||||||
|
Owner: Neutral
|
||||||
|
GreeceBasePoint: waypoint
|
||||||
|
Location: 69,46
|
||||||
|
Owner: Neutral
|
||||||
|
ReinfRoadPoint: waypoint
|
||||||
|
Location: 52,42
|
||||||
|
Owner: Neutral
|
||||||
|
NWIdlePoint: waypoint
|
||||||
|
Location: 38,42
|
||||||
|
Owner: Neutral
|
||||||
|
EIslandPoint: waypoint
|
||||||
|
Location: 51,58
|
||||||
|
Owner: Neutral
|
||||||
|
mcvGGLoadPoint: waypoint
|
||||||
|
Location: 77,45
|
||||||
|
Owner: Neutral
|
||||||
|
lstBeachPoint: waypoint
|
||||||
|
Location: 78,45
|
||||||
|
Owner: Neutral
|
||||||
|
GGUnloadPoint: waypoint
|
||||||
|
Location: 94,54
|
||||||
|
Owner: Neutral
|
||||||
|
ParaPoint: waypoint
|
||||||
|
Location: 29,75
|
||||||
|
Owner: Neutral
|
||||||
|
StartCamPoint: waypoint
|
||||||
|
Location: 21,80
|
||||||
|
Owner: Neutral
|
||||||
|
Smudges:
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
Player:
|
||||||
|
-ConquestVictoryConditions:
|
||||||
|
-EnemyWatcher:
|
||||||
|
MissionObjectives:
|
||||||
|
EarlyGameOver: true
|
||||||
|
World:
|
||||||
|
-CrateSpawner:
|
||||||
|
-SpawnMPUnits:
|
||||||
|
-MPStartLocations:
|
||||||
|
LuaScript:
|
||||||
|
Scripts: main.lua, AI.lua, reinforcements_teams.lua
|
||||||
|
ObjectivesPanel:
|
||||||
|
PanelName: MISSION_OBJECTIVES
|
||||||
|
^Infantry:
|
||||||
|
Tooltip:
|
||||||
|
GenericVisibility: Enemy
|
||||||
|
ShowOwnerRow: false
|
||||||
|
^Tank:
|
||||||
|
Tooltip:
|
||||||
|
GenericVisibility: Enemy
|
||||||
|
ShowOwnerRow: false
|
||||||
|
Demolishable:
|
||||||
|
^Vehicle:
|
||||||
|
Tooltip:
|
||||||
|
GenericVisibility: Enemy
|
||||||
|
ShowOwnerRow: false
|
||||||
|
Demolishable:
|
||||||
|
^Building:
|
||||||
|
Capturable:
|
||||||
|
CaptureThreshold: 0.25
|
||||||
|
Tooltip:
|
||||||
|
GenericVisibility: Enemy
|
||||||
|
ShowOwnerRow: false
|
||||||
|
^TechBuilding:
|
||||||
|
Capturable:
|
||||||
|
Type: ~disabled
|
||||||
|
^Wall:
|
||||||
|
Tooltip:
|
||||||
|
ShowOwnerRow: false
|
||||||
|
^Ship:
|
||||||
|
Tooltip:
|
||||||
|
GenericVisibility: Enemy
|
||||||
|
ShowOwnerRow: false
|
||||||
|
^Plane:
|
||||||
|
Tooltip:
|
||||||
|
GenericVisibility: Enemy
|
||||||
|
ShowOwnerRow: false
|
||||||
|
^Husk:
|
||||||
|
Tooltip:
|
||||||
|
GenericVisibility: Enemy, Ally, Neutral
|
||||||
|
GenericStancePrefix: false
|
||||||
|
ShowOwnerRow: false
|
||||||
|
^Crate:
|
||||||
|
Tooltip:
|
||||||
|
ShowOwnerRow: false
|
||||||
|
TSLA:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
SAM:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
HPAD:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
APWR:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
BRIK:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
E3:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~tent
|
||||||
|
E4:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
HIJACKER:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
SPY:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
MECH:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
MCV:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
FTRK:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
TRUK:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
APC:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
DOME.IGNORE:
|
||||||
|
Inherits: DOME
|
||||||
|
RenderBuilding:
|
||||||
|
Image: DOME
|
||||||
|
AutoTargetIgnore:
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
powerproxy.paratroopers:
|
||||||
|
ParatroopersPower:
|
||||||
|
DropItems: E1,E1,E1,E1,E1
|
||||||
|
|
||||||
|
Sequences:
|
||||||
|
|
||||||
|
VoxelSequences:
|
||||||
|
|
||||||
|
Weapons:
|
||||||
|
|
||||||
|
Voices:
|
||||||
|
|
||||||
|
Notifications:
|
||||||
|
|
||||||
|
Translations:
|
||||||
168
mods/ra/maps/soviet-05/reinforcements_teams.lua
Normal file
168
mods/ra/maps/soviet-05/reinforcements_teams.lua
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
SovietStartReinf = { "e2", "e2" }
|
||||||
|
SovietStartToBasePath = { StartPoint.Location, SovietBasePoint.Location }
|
||||||
|
SovietMCVReinf = { "mcv", "3tnk", "3tnk", "e1", "e1" }
|
||||||
|
SovExpansionPointGuard = { "2tnk", "2tnk", "e3", "e3", "e3" }
|
||||||
|
|
||||||
|
if Map.Difficulty == "Easy" then
|
||||||
|
ArmorReinfGreece = { "jeep", "1tnk", "1tnk" }
|
||||||
|
else
|
||||||
|
ArmorReinfGreece = { "jeep", "jeep", "1tnk", "1tnk", "1tnk" }
|
||||||
|
end
|
||||||
|
InfantryReinfGreece = { "e1", "e1", "e1", "e1", "e1" }
|
||||||
|
CrossroadsReinfPath = { ReinfRoadPoint.Location }
|
||||||
|
ArtyReinf = { "e3", "e3", "e3", "arty", "arty" }
|
||||||
|
CoastGuardReinf = { "e1", "e1", "e3", "e1", "e3" }
|
||||||
|
DDPatrol1 = { "dd", "dd", "dd" }
|
||||||
|
DDPatrol1Path = { EIslandPoint.Location, WIslandPoint.Location, DDAttackPoint.Location, SReinfPathPoint4.Location, DDAttackPoint.Location, WIslandPoint.Location, EIslandPoint.Location, NearDockPoint.Location }
|
||||||
|
DDPatrol2 = { "dd", "dd" }
|
||||||
|
DDPatrol2Path = { NReinfPathPoint1.Location, SReinfPathPoint1.Location, SReinfPathPoint2.Location, SReinfPathPoint1.Location, NReinfPathPoint1.Location, NearDockPoint.Location }
|
||||||
|
ShipArrivePath = { ReinfNorthPoint.Location, NearDockPoint.Location }
|
||||||
|
|
||||||
|
AlliedInfantryTypes = { "e1", "e3" }
|
||||||
|
AlliedTankTypes = { "jeep", "1tnk" }
|
||||||
|
AlliedAttackPath = { GreeceBaseEPoint.Location, CrossroadPoint.Location, NWOrefieldPoint.Location, AtUSSRBasePoint.Location }
|
||||||
|
AlliedCrossroadsToRadarPath = { ReinfRoadPoint.Location, CrossroadPoint.Location, GreeceBaseEPoint.Location, GreeceBasePoint.Location }
|
||||||
|
SouthReinfPath = { ReinfEastPoint.Location, SReinfPathPoint1.Location, SReinfPathPoint2.Location, SReinfPathPoint3.Location, SReinfPathPoint4.Location, USSRlstPoint.Location }
|
||||||
|
NorthReinfPath = { ReinfEastPoint.Location, NReinfPathPoint1.Location, GGUnloadPoint.Location }
|
||||||
|
GoodGuyOrefieldPatrolPath = { PatrolPoint1.Location, PatrolPoint2.Location, PatrolPoint3.Location, PatrolPoint4.Location }
|
||||||
|
|
||||||
|
Ships = { }
|
||||||
|
GreeceInfAttack = { }
|
||||||
|
GGInfAttack = { }
|
||||||
|
TankAttackGG = { }
|
||||||
|
|
||||||
|
ShipWaypoints = { EIslandPoint, WIslandPoint, DDAttackPoint }
|
||||||
|
InfantryWaypoints = { CrossroadPoint, NWOrefieldPoint, AtUSSRBasePoint, SovietBasePoint }
|
||||||
|
InfantryGGWaypoints = { PatrolPoint2, BetweenBasesPoint, PrepGGArmyPoint }
|
||||||
|
TanksGGWaypoints = { PatrolPoint2, BetweenBasesPoint, PrepGGArmyPoint }
|
||||||
|
|
||||||
|
Para = function()
|
||||||
|
local powerproxy = Actor.Create("powerproxy.paratroopers", false, { Owner = player })
|
||||||
|
local units = powerproxy.SendParatroopers(ParaPoint.CenterPosition, false, 28)
|
||||||
|
powerproxy.Destroy()
|
||||||
|
end
|
||||||
|
|
||||||
|
Para2 = function()
|
||||||
|
local powerproxy = Actor.Create("powerproxy.paratroopers", false, { Owner = player })
|
||||||
|
local units = powerproxy.SendParatroopers(USSRExpansionPoint.CenterPosition, false, 28)
|
||||||
|
powerproxy.Destroy()
|
||||||
|
end
|
||||||
|
|
||||||
|
ReinfInf = function()
|
||||||
|
Reinforcements.Reinforce(Greece, InfantryReinfGreece, CrossroadsReinfPath, 0, function(soldier)
|
||||||
|
soldier.Hunt()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
ReinfArmor = function()
|
||||||
|
RCheck = false
|
||||||
|
Reinforcements.Reinforce(Greece, ArmorReinfGreece, CrossroadsReinfPath, 0, function(soldier)
|
||||||
|
soldier.Hunt()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
IslandTroops1 = function()
|
||||||
|
local units = Reinforcements.ReinforceWithTransport(GoodGuy, "lst", CoastGuardReinf, { ReinfEastPoint.Location, NReinfPathPoint1.Location, GGUnloadPoint.Location }, { ReinfEastPoint.Location })[2]
|
||||||
|
Utils.Do(units, function(unit)
|
||||||
|
Trigger.OnIdle(unit, function(coastguard)
|
||||||
|
coastguard.AttackMove(CoastGuardPoint.Location)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
if not CheckForCYard() then
|
||||||
|
return
|
||||||
|
elseif Map.Difficulty == "Easy" then
|
||||||
|
return
|
||||||
|
else
|
||||||
|
Trigger.OnAllKilled(units, function()
|
||||||
|
if Map.Difficulty == "Hard" then
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(3), IslandTroops1)
|
||||||
|
else
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(5), IslandTroops1)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
IslandTroops2 = function()
|
||||||
|
local units = Reinforcements.ReinforceWithTransport(GoodGuy, "lst", ArmorReinfGreece, NorthReinfPath, { ReinfEastPoint.Location })[2]
|
||||||
|
Utils.Do(units, function(unit)
|
||||||
|
Trigger.OnIdle(unit, function(patrols)
|
||||||
|
patrols.Patrol(GoodGuyOrefieldPatrolPath, true, 150)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
if not CheckForCYard() then
|
||||||
|
return
|
||||||
|
elseif Map.Difficulty == "Easy" then
|
||||||
|
return
|
||||||
|
else
|
||||||
|
Trigger.OnAllKilled(unit, function()
|
||||||
|
if Map.Difficulty == "Hard" then
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(3), IslandTroops2)
|
||||||
|
else
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(5), IslandTroops2)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
IslandTroops3 = function()
|
||||||
|
local units = Reinforcements.ReinforceWithTransport(GoodGuy, "lst", SovExpansionPointGuard, SouthReinfPath, { ReinfEastPoint.Location })[2]
|
||||||
|
Utils.Do(units, function(unit)
|
||||||
|
Trigger.OnIdle(unit, function(guards)
|
||||||
|
guards.AttackMove(USSRExpansionPoint.Location)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
if not CheckForCYard() then
|
||||||
|
return
|
||||||
|
elseif Map.Difficulty == "Easy" then
|
||||||
|
return
|
||||||
|
else
|
||||||
|
Trigger.OnAllKilled(units, function()
|
||||||
|
if Map.Difficulty == "Hard" then
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(3), IslandTroops3)
|
||||||
|
else
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(5), IslandTroops3)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
BringDDPatrol1 = function()
|
||||||
|
local units = Reinforcements.Reinforce(Greece, DDPatrol1, ShipArrivePath, 0)
|
||||||
|
Utils.Do(units, function(unit)
|
||||||
|
Trigger.OnIdle(unit, function(patrols)
|
||||||
|
patrols.Patrol(DDPatrol1Path, true, 250)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
if not CheckForCYard() then
|
||||||
|
return
|
||||||
|
else
|
||||||
|
Trigger.OnAllKilled(units, function()
|
||||||
|
if Map.Difficulty == "Hard" then
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(4), BringDDPatrol1)
|
||||||
|
else
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(7), BringDDPatrol1)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
BringDDPatrol2 = function()
|
||||||
|
local units = Reinforcements.Reinforce(Greece, DDPatrol2, ShipArrivePath, 0)
|
||||||
|
Utils.Do(units, function(unit)
|
||||||
|
Trigger.OnIdle(unit, function(patrols)
|
||||||
|
patrols.Patrol(DDPatrol2Path, true, 250)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
if not CheckForCYard() then
|
||||||
|
return
|
||||||
|
else
|
||||||
|
Trigger.OnAllKilled(units, function()
|
||||||
|
if Map.Difficulty == "Hard" then
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(4), BringDDPatrol2)
|
||||||
|
else
|
||||||
|
Trigger.AfterDelay(DateTime.Minutes(7), BringDDPatrol2)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -6,4 +6,5 @@ Allied Campaign:
|
|||||||
./mods/ra/maps/allies-05a
|
./mods/ra/maps/allies-05a
|
||||||
Soviet Campaign:
|
Soviet Campaign:
|
||||||
./mods/ra/maps/soviet-01
|
./mods/ra/maps/soviet-01
|
||||||
|
./mods/ra/maps/soviet-05
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user