Initial commit: OpenRA game engine
Some checks failed
Continuous Integration / Linux (.NET 8.0) (push) Has been cancelled
Continuous Integration / Windows (.NET 8.0) (push) Has been cancelled

Fork from OpenRA/OpenRA with one-click launch script (start-ra.cmd)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
let5sne.win10
2026-01-10 21:46:54 +08:00
commit 9cf6ebb986
4065 changed files with 635973 additions and 0 deletions

View File

@@ -0,0 +1,219 @@
--[[
Copyright (c) The OpenRA Developers and Contributors
This file is part of OpenRA, which is free software. It is made
available to you under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version. For more
information, see COPYING.
]]
SovietsActivated = false
WTransWays =
{
{ WaterUnloadEntry1.Location, WaterUnload1.Location },
{ WaterUnloadEntry2.Location, WaterUnload2.Location }
}
WTransUnits =
{
hard = { { "3tnk", "3tnk", "3tnk", "v2rl", "v2rl" }, { "v2rl", "v2rl", "e4", "e4", "3tnk" } },
normal = { { "e1", "e1", "3tnk", "3tnk", "v2rl" }, { "e4", "e4", "e4", "e4", "v2rl" } },
easy = { { "e1", "e1", "e1", "e2", "e2" }, { "e2", "e2", "3tnk" } }
}
WTransDelays =
{
easy = DateTime.Seconds(240),
normal = DateTime.Seconds(180),
hard = DateTime.Seconds(140)
}
BuildDelays =
{
easy = DateTime.Seconds(90),
normal = DateTime.Seconds(60),
hard = DateTime.Seconds(30)
}
FirstAirDelays =
{
easy = DateTime.Seconds(180),
normal = DateTime.Seconds(120),
hard = DateTime.Seconds(90)
}
WaterAttackTypes =
{
easy = { "ss" },
normal = { "ss", "ss" },
hard = { "ss", "ss", "ss" }
}
VehicleTypes = { "v2rl", "3tnk", "3tnk", "3tnk", "3tnk", "harv" }
InfTypes =
{
{ "e1", "e1", "e1"},
{ "e2", "e1", "e1"},
{ "e2", "e2", "e1"},
{ "e4", "e4", "e1"}
}
AttackRallyPoints =
{
{ SovietOreAttackStart.Location, SovietOreAttack1.Location },
{ SovietBaseAttack.Location },
{ SovietOreAttack2.Location }
}
ImportantBuildings = { WeaponsFactory, Airfield, EastRadarDome, SovietConyard }
SovietAircraftType = { "yak" }
IdlingTanks = { tank1, tank2, tank3, tank4, tank5, tank6, tank7, tank8 }
IdlingNavalUnits = { }
PrepareTankDefenders = function()
Utils.Do(ImportantBuildings, function(a)
Trigger.OnDamaged(a, function()
Utils.Do(IdlingTanks, function(unit)
if not unit.IsDead then
unit.Hunt()
end
end)
end)
end)
end
InfantryWave = 0
ProduceInfantry = function()
if SovietBarracks.IsDead or SovietBarracks.Owner ~= USSR then
return
end
InfantryWave = InfantryWave + 1
local toBuild = Utils.Random(InfTypes)
USSR.Build(toBuild, function(units)
if InfantryWave == 2 and not AttackTnk1.IsDead then
units[#units + 1] = AttackTnk1
elseif InfantryWave == 4 and not AttackTnk2.IsDead then
units[#units + 1] = AttackTnk2
end
SendAttack(units, Utils.Random(AttackRallyPoints))
Trigger.AfterDelay(BuildDelays[Difficulty], ProduceInfantry)
end)
end
ProduceVehicles = function()
if WeaponsFactory.IsDead or WeaponsFactory.Owner ~= USSR then
return
end
USSR.Build(VehicleTypes, function(units)
Utils.Do(units, function(unit)
if unit.Type ~= "harv" then
IdlingTanks[#IdlingTanks + 1] = unit
end
end)
end)
end
ProduceNaval = function()
if not Greece.HasPrerequisites({ "syrd" }) then
Trigger.AfterDelay(DateTime.Seconds(60), ProduceNaval)
return
end
if SubPen.IsDead or SubPen.Owner ~= USSR then
return
end
USSR.Build(WaterAttackTypes[Difficulty], function(units)
Utils.Do(units, function(unit)
IdlingNavalUnits[#IdlingNavalUnits + 1] = unit
end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(40), ProduceNaval)
if #IdlingNavalUnits >= #WaterAttackTypes[Difficulty] then
Trigger.AfterDelay(DateTime.Seconds(20), function()
SendAttack(SetupNavalAttackGroup(), { Harbor.Location })
end)
end
end)
end
ProduceAircraft = function()
if Airfield.IsDead or Airfield.Owner ~= USSR then
return
end
USSR.Build(SovietAircraftType, function(units)
Utils.Do(units, function(yak)
InitializeAttackAircraft(yak, Greece)
Trigger.OnKilled(yak, function()
Trigger.AfterDelay(BuildDelays[Difficulty], ProduceAircraft)
end)
end)
end)
end
SendAttack = function(units, path)
Utils.Do(units, function(unit)
unit.Patrol(path, false)
IdleHunt(unit)
end)
end
SetupNavalAttackGroup = function()
local units = { }
for i = 1, 3 do
if #IdlingNavalUnits == 0 then
return units
end
local number = Utils.RandomInteger(1, #IdlingNavalUnits)
if IdlingNavalUnits[number] and not IdlingNavalUnits[number].IsDead then
units[i] = IdlingNavalUnits[number]
table.remove(IdlingNavalUnits, number)
end
end
return units
end
WTransWaves = function()
local way = Utils.Random(WTransWays)
local units = Utils.Random(WTransUnits[Difficulty])
local attackUnits = Reinforcements.ReinforceWithTransport(USSR, "lst", units , way, { way[2], way[1] })[2]
Utils.Do(attackUnits, function(a)
Trigger.OnAddedToWorld(a, function()
a.AttackMove(UnitBStopLocation.Location)
IdleHunt(a)
end)
end)
Trigger.AfterDelay(WTransDelays[Difficulty], WTransWaves)
end
ActivateAI = function()
if SovietsActivated then
return
end
SovietsActivated = true
WeaponsFactory.RallyPoint = WeaponMeetPoint.Location
SubPen.RallyPoint = SubMeetPoint.Location
PrepareTankDefenders()
ProduceInfantry()
Trigger.AfterDelay(DateTime.Minutes(1), ProduceVehicles)
Trigger.AfterDelay(FirstAirDelays[Difficulty], ProduceAircraft)
Trigger.OnProduction(Airfield, function()
if not YakCamera.IsInWorld then
return
end
-- This begins neutral to lessen its effect on ground attacks.
YakCamera.Owner = USSR
end)
Trigger.OnAnyKilled(USSR.GetActorsByType("ss"), ProduceNaval)
Trigger.AfterDelay(WTransDelays[Difficulty], WTransWaves)
end

View File

@@ -0,0 +1,301 @@
--[[
Copyright (c) The OpenRA Developers and Contributors
This file is part of OpenRA, which is free software. It is made
available to you under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version. For more
information, see COPYING.
]]
AlliedReinforcementsA = { "e1", "e1", "e1", "e1", "e1" }
AlliedReinforcementsB = { "e3", "e3", "e3", "e3", "e3" }
BadGuys = { BadGuy1, BadGuy2, BadGuy3 }
SovietDogPatrols =
{
{ Patrol_1_e1, Patrol_1_dog },
{ Patrol_2_e1, Patrol_2_dog },
{ Patrol_3_e1, Patrol_3_dog },
{ Patrol_4_e1, Patrol_4_dog }
}
SovietDogPatrolPaths =
{
{ Patrol6.Location, Patrol7.Location, Patrol8.Location, Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location },
{ Patrol8.Location, Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location },
{ Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location, Patrol8.Location },
{ Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location, Patrol8.Location, Patrol1.Location }
}
Mammoths = { Mammoth1, Mammoth2, Mammoth3 }
SovietMammothPaths =
{
{ TnkPatrol1.Location, TnkPatrol2.Location,TnkPatrol3.Location, TnkPatrol4.Location, TnkPatrol5.Location, TnkPatrol6.Location, TnkPatrol7.Location, TnkPatrol8.Location },
{ TnkPatrol5.Location, TnkPatrol6.Location, TnkPatrol7.Location, TnkPatrol8.Location, TnkPatrol1.Location, TnkPatrol2.Location, TnkPatrol3.Location, TnkPatrol4.Location },
{ TnkPatrol8.Location, TnkPatrol1.Location, TnkPatrol2.Location, TnkPatrol3.Location, TnkPatrol4.Location, TnkPatrol5.Location, TnkPatrol6.Location, TnkPatrol7.Location }
}
SovietSubPath = { SubPatrol3_1.Location, SubPatrol3_2.Location, SubPatrol3_3.Location }
ParadropWaypoints =
{
easy = { UnitBStopLocation },
normal = { UnitBStopLocation, UnitAStopLocation },
hard = { UnitBStopLocation, MCVStopLocation, UnitAStopLocation }
}
SovietTechLabs = { TechLab1, TechLab2, TechLab3 }
GroupPatrol = function(units, waypoints, delay)
local i = 1
local stop = false
Utils.Do(units, function(unit)
Trigger.OnIdle(unit, function()
if stop then
return
end
if unit.Location == waypoints[i] then
local bool = Utils.All(units, function(actor) return actor.IsIdle or actor.IsDead end)
if bool then
stop = true
i = i + 1
if i > #waypoints then
i = 1
end
Trigger.AfterDelay(delay, function() stop = false end)
end
else
unit.AttackMove(waypoints[i])
end
end)
end)
end
InitialSovietPatrols = function()
-- Dog Patrols
for i = 1, 4 do
GroupPatrol(SovietDogPatrols[i], SovietDogPatrolPaths[i], DateTime.Seconds(5))
end
-- Mammoth Patrols
for i = 1, 3 do
Trigger.AfterDelay(DateTime.Seconds(6 * (i - 1)), function()
Trigger.OnIdle(Mammoths[i], function()
Mammoths[i].Patrol(SovietMammothPaths[i])
end)
end)
end
-- Sub Patrols
Patrol1Sub.Patrol({ SubPatrol1_1.Location, SubPatrol1_2.Location })
Patrol2Sub.Patrol({ SubPatrol2_1.Location, SubPatrol2_2.Location })
Patrol3Sub.Patrol(SovietSubPath)
end
InitialAlliedReinforcements = function()
local camera = Actor.Create("Camera", true, { Owner = Greece, Location = DefaultCameraPosition.Location })
Trigger.AfterDelay(DateTime.Seconds(30), camera.Destroy)
Reinforcements.Reinforce(Greece, AlliedReinforcementsA, { AlliedEntry1.Location, UnitBStopLocation.Location }, 2)
Trigger.AfterDelay(DateTime.Seconds(2), function()
Reinforcements.Reinforce(Greece, AlliedReinforcementsB, { AlliedEntry2.Location, UnitAStopLocation.Location }, 2)
end)
Trigger.AfterDelay(DateTime.Seconds(5), function()
local mcv = Reinforcements.Reinforce(Greece, { "mcv" }, { AlliedEntry3.Location, MCVStopLocation.Location })[1]
Trigger.OnRemovedFromWorld(mcv, ActivateAI)
end)
end
CaptureRadarDome = function()
Trigger.OnKilled(RadarDome, function()
if Greece.IsObjectiveCompleted(CaptureRadarDomeObj) then
return
end
Greece.MarkFailedObjective(CaptureRadarDomeObj)
end)
Trigger.OnCapture(RadarDome, function()
Greece.MarkCompletedObjective(CaptureRadarDomeObj)
Utils.Do(SovietTechLabs, function(a)
if a.IsDead then
return
end
Beacon.New(Greece, a.CenterPosition)
if Difficulty ~= "hard" then
Actor.Create("TECH.CAM", true, { Owner = Greece, Location = a.Location + CVec.New(1, 1) })
end
end)
Media.DisplayMessage(UserInterface.GetFluentMessage("soviet-tech-centers-discovered"))
if Difficulty == "easy" then
Actor.Create("Camera", true, { Owner = Greece, Location = Weapcam.Location })
end
end)
end
InfiltrateTechCenter = function()
local infiltrated = false
local allKilled = false
Utils.Do(SovietTechLabs, function(a)
Trigger.OnInfiltrated(a, function()
if infiltrated then
return
end
infiltrated = true
InfiltrateTechCenterObj = InfiltrateTechCenterObj or AddPrimaryObjective(Greece, "infiltrate-tech-center-spy")
-- Let the infiltration speech play first.
Trigger.AfterDelay(38, function()
Media.PlaySpeechNotification(Greece, "SecondObjectiveMet")
DestroySovietsObj = AddPrimaryObjective(Greece, "destroy-soviet-buildings-units")
Greece.MarkCompletedObjective(InfiltrateTechCenterObj)
local proxy = Actor.Create("powerproxy.paratroopers", false, { Owner = USSR })
Utils.Do(ParadropWaypoints[Difficulty], function(waypoint)
local plane = proxy.TargetParatroopers(waypoint.CenterPosition, Angle.South)[1]
Trigger.OnPassengerExited(plane, function(_, passenger)
IdleHunt(passenger)
end)
end)
proxy.Destroy()
end)
end)
Trigger.OnCapture(a, function()
if not infiltrated then
Media.PlaySoundNotification(Greece, "AlertBleep")
Media.DisplayMessage(UserInterface.GetFluentMessage("do-not-capture-tech-centers"))
end
end)
end)
Trigger.OnAllKilled(SovietTechLabs, function()
allKilled = true
end)
Trigger.OnAllKilledOrCaptured(SovietTechLabs, function()
if infiltrated then
return
end
Trigger.AfterDelay(1, function()
FailTechCenter(allKilled)
end)
end)
end
FailTechCenter = function(killed)
local speechDelay = 0
if not killed then
-- Let the capture speech play first.
speechDelay = 36
end
Trigger.AfterDelay(speechDelay, function()
Media.PlaySpeechNotification(Greece, "ObjectiveNotMet")
end)
Trigger.AfterDelay(speechDelay + DateTime.Seconds(1), function()
InfiltrateTechCenterObj = InfiltrateTechCenterObj or AddPrimaryObjective(Greece, "infiltrate-tech-center-spy")
Greece.MarkFailedObjective(InfiltrateTechCenterObj)
end)
end
-- Check progress on the Naval Yard and smaller Soviet base.
-- If a Naval Yard is built, send a sub to investigate the coast.
-- Its death will trigger production of more subs, if that's not yet started.
CheckNavalObjective = function()
if not Greece.HasPrerequisites({ "syrd" } ) then
Trigger.AfterDelay(DateTime.Seconds(3), CheckNavalObjective)
return
end
local intact = IntactMiniBaseStructures()
if #intact == 0 then
MarkNavalObjective()
else
Trigger.OnAllKilledOrCaptured(intact, MarkNavalObjective)
end
if ScoutSub.IsDead then
return
end
local path = { SubPatrol1_1.Location, SubMeetPoint.Location, Harbor.Location }
ScoutSub.Patrol(path, false)
IdleHunt(ScoutSub)
end
MarkNavalObjective = function()
Trigger.AfterDelay(DateTime.Seconds(2), function()
InfiltrateTechCenterObj = InfiltrateTechCenterObj or AddPrimaryObjective(Greece, "infiltrate-tech-center-spy")
Greece.MarkCompletedObjective(NavalYardObj)
Media.PlaySpeechNotification(Greece, "FirstObjectiveMet")
end)
end
IntactMiniBaseStructures = function()
local base = { MiniBaseTower1, MiniBaseTower2, SovietBarracks }
return Utils.Where(base, function(structure)
return not structure.IsDead and structure.Owner == USSR
end)
end
Tick = function()
if DestroySovietsObj and USSR.HasNoRequiredUnits() then
Greece.MarkCompletedObjective(DestroySovietsObj)
end
if not Greece.HasNoRequiredUnits() then
return
end
Utils.Do({ NavalYardObj, InfiltrateTechCenterObj, DestroySovietsObj }, function(objective)
if Greece.IsObjectiveCompleted(objective) then
return
end
Greece.MarkFailedObjective(objective)
end)
end
WorldLoaded = function()
Greece = Player.GetPlayer("Greece")
USSR = Player.GetPlayer("USSR")
InitObjectives(Greece)
NavalYardObj = AddPrimaryObjective(Greece, "build-naval-yard-redeploy-mcv")
CaptureRadarDomeObj = AddSecondaryObjective(Greece, "capture-radar-shore")
Camera.Position = DefaultCameraPosition.CenterPosition
Utils.Do(BadGuys, function(a)
a.AttackMove(MCVStopLocation.Location)
end)
Trigger.AfterDelay(DateTime.Seconds(1), function()
InitialAlliedReinforcements()
InitialSovietPatrols()
end)
Trigger.OnEnteredProximityTrigger(SovietMiniBaseCam.CenterPosition, WDist.New(1024 * 6), function(a, id)
if a.Owner == Greece then
Trigger.RemoveProximityTrigger(id)
local cam = Actor.Create("Camera", true, { Owner = Greece, Location = SovietMiniBaseCam.Location })
Trigger.AfterDelay(DateTime.Seconds(15), cam.Destroy)
end
end)
CaptureRadarDome()
InfiltrateTechCenter()
Trigger.AfterDelay(DateTime.Minutes(2), CheckNavalObjective)
-- Prepare Soviet attacks if Greece still has an undeployed MCV.
Trigger.AfterDelay(DateTime.Seconds(30), ActivateAI)
end

Binary file not shown.

View File

@@ -0,0 +1,7 @@
## rules.yaml
briefing =
Priority one is to establish a base and get your spy into one of the Soviet Tech Centers across the gulf.
Data on the Iron Curtain is in there and we need it.
Once you get the data, complete your mission...
Wipe out everything.

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,829 @@
MapFormat: 12
RequiresMod: ra
Title: 06a: Cripple Iron Curtain Research
Author: Westwood Studios
Tileset: SNOW
MapSize: 128,128
Bounds: 3,61,94,54
Visibility: MissionSelector
Categories: Campaign
LockPreview: True
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: england
PlayerReference@USSR:
Name: USSR
Bot: campaign
Faction: soviet
Color: FF1400
Enemies: USSR, Greece
PlayerReference@Greece:
Name: Greece
AllowBots: False
Playable: True
Required: True
LockFaction: True
Faction: allies
LockColor: True
Color: ABB7E4
LockSpawn: True
LockTeam: True
Enemies: USSR
Actors:
YakCamera: camera
Owner: Neutral
Location: 19,66
Actor0: sbag
Location: 22,81
Owner: USSR
Actor1: sbag
Location: 23,81
Owner: USSR
Actor2: sbag
Location: 24,81
Owner: USSR
Actor3: sbag
Location: 22,82
Owner: USSR
Actor4: sbag
Location: 24,82
Owner: USSR
Actor5: sbag
Location: 22,83
Owner: USSR
Actor6: sbag
Location: 23,83
Owner: USSR
Actor7: sbag
Location: 24,83
Owner: USSR
Actor8: sbag
Location: 12,84
Owner: USSR
Actor9: sbag
Location: 13,84
Owner: USSR
Actor10: sbag
Location: 14,84
Owner: USSR
Actor11: sbag
Location: 12,85
Owner: USSR
Actor12: sbag
Location: 14,85
Owner: USSR
Actor13: sbag
Location: 12,86
Owner: USSR
Actor14: sbag
Location: 13,86
Owner: USSR
Actor15: sbag
Location: 14,86
Owner: USSR
Actor16: t08
Location: 88,68
Owner: Neutral
Actor17: t08
Location: 26,72
Owner: Neutral
Actor18: tc02
Location: 52,92
Owner: Neutral
Actor19: tc01
Location: 57,96
Owner: Neutral
Actor20: t15
Location: 3,76
Owner: Neutral
Actor21: tc05
Location: 11,74
Owner: Neutral
Actor22: t15
Location: 74,81
Owner: Neutral
Actor23: t08
Location: 77,85
Owner: Neutral
Actor24: tc05
Location: 94,106
Owner: Neutral
Actor25: tc03
Location: 84,94
Owner: Neutral
Actor26: t16
Location: 83,94
Owner: Neutral
Actor27: t08
Location: 85,96
Owner: Neutral
Actor28: tc01
Location: 62,105
Owner: Neutral
Actor29: tc01
Location: 89,98
Owner: Neutral
Actor30: tc02
Location: 85,100
Owner: Neutral
Actor31: tc03
Location: 87,99
Owner: Neutral
Actor32: t17
Location: 89,99
Owner: Neutral
Actor33: t16
Location: 85,99
Owner: Neutral
Actor34: t13
Location: 86,98
Owner: Neutral
Actor35: tc04
Location: 15,74
Owner: Neutral
Actor36: tc01
Location: 24,73
Owner: Neutral
Actor37: t17
Location: 27,71
Owner: Neutral
Actor38: t13
Location: 36,69
Owner: Neutral
Actor39: t12
Location: 34,70
Owner: Neutral
Actor40: t11
Location: 23,84
Owner: Neutral
Actor41: t08
Location: 9,78
Owner: Neutral
Actor42: t05
Location: 12,89
Owner: Neutral
Actor43: tc03
Location: 12,82
Owner: Neutral
Actor44: t17
Location: 5,82
Owner: Neutral
Actor45: tc02
Location: 9,95
Owner: Neutral
Actor46: tc03
Location: 7,94
Owner: Neutral
Actor47: tc05
Location: 9,109
Owner: Neutral
Actor48: tc04
Location: 3,100
Owner: Neutral
Actor49: tc02
Location: 3,110
Owner: Neutral
Actor50: tc01
Location: 6,105
Owner: Neutral
Actor51: t17
Location: 12,106
Owner: Neutral
Actor52: t16
Location: 8,107
Owner: Neutral
Actor53: t14
Location: 11,100
Owner: Neutral
Actor54: t01
Location: 29,102
Owner: Neutral
Actor55: t03
Location: 36,104
Owner: Neutral
Actor56: t06
Location: 25,104
Owner: Neutral
Actor57: t08
Location: 38,100
Owner: Neutral
Actor58: tc03
Location: 95,72
Owner: Neutral
Actor59: mine
Location: 5,68
Owner: Neutral
Actor60: mine
Location: 9,104
Owner: Neutral
Actor61: mine
Location: 5,113
Owner: Neutral
Actor70: kenn
Location: 91,94
Owner: USSR
Actor71: kenn
Location: 71,83
Owner: USSR
Actor74: kenn
Location: 77,101
Owner: USSR
MiniBaseTower1: ftur
Location: 16,82
Owner: USSR
MiniBaseTower2: ftur
Location: 19,82
Owner: USSR
Actor77: tsla
Location: 60,97
Owner: USSR
Actor78: apwr
Location: 79,108
Owner: USSR
Actor79: apwr
Location: 82,109
Owner: USSR
Actor81: apwr
Location: 82,106
Owner: USSR
Actor82: apwr
Location: 81,112
Owner: USSR
Actor83: silo
Location: 94,104
Owner: USSR
Actor84: silo
Location: 94,105
Owner: USSR
Actor85: silo
Location: 95,104
Owner: USSR
Actor86: silo
Location: 95,105
Owner: USSR
Actor87: silo
Location: 85,102
Owner: USSR
Actor88: silo
Location: 85,93
Owner: USSR
Actor89: apwr
Location: 87,101
Owner: USSR
Actor90: ftur
Location: 80,87
Owner: USSR
Actor105: jeep
Location: 19,64
Owner: Greece
Facing: 508
Actor109: e2
Location: 13,85
Owner: USSR
Facing: 892
SubCell: 2
Actor110: e2
Location: 23,82
Owner: USSR
Facing: 124
SubCell: 4
Actor111: e1
Location: 20,64
Owner: Greece
Facing: 636
SubCell: 2
Actor112: e1
Location: 19,65
Owner: Greece
Facing: 508
SubCell: 0
Actor113: e1
Location: 18,64
Owner: Greece
Facing: 508
SubCell: 1
Actor114: e1
Location: 23,82
Owner: USSR
SubCell: 2
Actor115: e1
Location: 13,85
Owner: USSR
Facing: 252
SubCell: 4
Actor117: dog
Location: 79,100
Owner: USSR
Facing: 764
SubCell: 0
Actor126: ss
Location: 59,102
Owner: USSR
Facing: 384
Actor130: ss
Location: 74,113
Owner: USSR
Facing: 256
Actor177: mine
Owner: Neutral
Location: 56,94
Actor178: mine
Owner: Neutral
Location: 64,108
Actor180: mine
Owner: Neutral
Location: 93,84
SovietConyard: fact
Location: 69,96
Owner: USSR
EastRadarDome: dome
Location: 90,109
Owner: USSR
harv: harv
Location: 82,94
Owner: USSR
Facing: 124
tank1: 3tnk
Location: 69,90
Owner: USSR
Facing: 380
tank2: 3tnk
Location: 93,102
Owner: USSR
Facing: 124
tank3: 3tnk
Location: 85,90
Owner: USSR
tank4: 3tnk
Location: 93,106
Owner: USSR
Facing: 252
tank5: 3tnk
Location: 73,100
Owner: USSR
Facing: 252
tank6: v2rl
Location: 80,90
Owner: USSR
Facing: 892
tank7: v2rl
Location: 70,91
Owner: USSR
Facing: 380
tank8: v2rl
Location: 74,101
Owner: USSR
Facing: 252
SubPatrol3_1: waypoint
Location: 48,114
Owner: Neutral
SubPatrol3_2: waypoint
Location: 48,98
Owner: Neutral
SubPatrol3_3: waypoint
Location: 79,71
Owner: Neutral
Patrol3Sub: ss
Location: 46,105
Owner: USSR
Facing: 256
ScoutSub: ss
Location: 77,71
Owner: USSR
Facing: 256
Patrol1Sub: ss
Location: 46,71
Owner: USSR
Facing: 512
Patrol2Sub: ss
Location: 52,85
Owner: USSR
Facing: 256
SubPatrol1_1: waypoint
Location: 42,71
Owner: Neutral
SubPatrol1_2: waypoint
Location: 58,84
Owner: Neutral
SubPatrol2_1: waypoint
Location: 56,87
Owner: Neutral
SubPatrol2_2: waypoint
Location: 40,74
Owner: Neutral
SubMeetPoint: waypoint
Location: 48,105
Owner: Neutral
SovietBaseAttack: waypoint
Location: 18,68
Owner: Neutral
Patrol1: waypoint
Location: 92,108
Owner: Neutral
Patrol2: waypoint
Location: 76,103
Owner: Neutral
Patrol3: waypoint
Location: 65,110
Owner: Neutral
Patrol4: waypoint
Location: 68,101
Owner: Neutral
Patrol5: waypoint
Location: 68,93
Owner: Neutral
Patrol6: waypoint
Location: 72,84
Owner: Neutral
Patrol7: waypoint
Location: 79,88
Owner: Neutral
Patrol8: waypoint
Location: 90,94
Owner: Neutral
TnkPatrol1: waypoint
Location: 52,100
Owner: Neutral
TnkPatrol2: waypoint
Location: 65,94
Owner: Neutral
TnkPatrol3: waypoint
Location: 65,78
Owner: Neutral
TnkPatrol4: waypoint
Location: 84,82
Owner: Neutral
TnkPatrol5: waypoint
Location: 79,92
Owner: Neutral
TnkPatrol6: waypoint
Location: 77,106
Owner: Neutral
TnkPatrol7: waypoint
Location: 61,107
Owner: Neutral
TnkPatrol8: waypoint
Location: 70,100
Owner: Neutral
Mammoth1: 4tnk
Location: 63,94
Owner: USSR
Facing: 252
Mammoth2: 4tnk
Location: 82,87
Owner: USSR
Facing: 892
Mammoth3: 4tnk
Location: 76,105
Owner: USSR
Facing: 124
AttackTnk1: 3tnk
Location: 18,85
Owner: USSR
Facing: 124
AttackTnk2: 3tnk
Location: 17,82
Owner: USSR
Facing: 892
BadGuy1: e1
Location: 20,69
Owner: USSR
SubCell: 4
BadGuy2: e1
Location: 19,70
Owner: USSR
SubCell: 0
BadGuy3: e1
Location: 24,67
Owner: USSR
Facing: 252
SubCell: 4
Patrol_1_e1: e1
Location: 71,84
Owner: USSR
SubCell: 5
Patrol_1_dog: dog
Location: 72,84
Owner: USSR
Facing: 252
SubCell: 1
Patrol_2_e1: e1
Location: 89,94
Owner: USSR
SubCell: 0
Patrol_2_dog: dog
Location: 89,93
Owner: USSR
Facing: 380
SubCell: 5
Patrol_3_e1: e1
Location: 92,108
Owner: USSR
SubCell: 1
Patrol_3_dog: dog
Location: 92,108
Owner: USSR
SubCell: 4
Patrol_4_e1: e1
Location: 76,102
Owner: USSR
SubCell: 5
Patrol_4_dog: dog
Location: 77,102
Owner: USSR
Facing: 380
SubCell: 5
WaterUnloadEntry1: waypoint
Location: 22,114
Owner: Neutral
WaterUnloadEntry2: waypoint
Location: 43,114
Owner: Neutral
WaterUnload1: waypoint
Location: 15,108
Owner: Neutral
WaterUnload2: waypoint
Location: 30,93
Owner: Neutral
SovietOreAttackStart: waypoint
Location: 5,73
Owner: Neutral
SovietOreAttack1: waypoint
Location: 3,65
Owner: Neutral
SovietOreAttack2: waypoint
Location: 36,67
Owner: Neutral
Harbor: waypoint
Location: 19,92
Owner: Neutral
UnitAStopLocation: waypoint
Location: 16,64
Owner: Neutral
MCVStopLocation: waypoint
Location: 23,64
Owner: Neutral
UnitBStopLocation: waypoint
Location: 19,63
Owner: Neutral
DefaultCameraPosition: waypoint
Location: 19,64
Owner: Neutral
SovietMiniBaseCam: waypoint
Location: 18,83
Owner: Neutral
Weapcam: waypoint
Location: 76,94
Owner: Neutral
AlliedEntry1: waypoint
Location: 19,61
Owner: Neutral
AlliedEntry2: waypoint
Location: 14,61
Owner: Neutral
AlliedEntry3: waypoint
Location: 23,61
Owner: Neutral
SubPen: spen
Location: 63,99
Owner: USSR
TechLab1: stek
Location: 93,93
Owner: USSR
TechLab2: stek
Location: 68,82
Owner: USSR
TechLab3: stek
Location: 93,108
Owner: USSR
SovietBarracks: barr
Location: 15,83
Owner: USSR
WeaponsFactory: weap
Location: 75,93
Owner: USSR
Airfield: afld
Location: 74,86
Owner: USSR
Refinery: proc
Location: 81,90
Owner: USSR
RadarDome: dome
Location: 20,83
Owner: USSR
WeaponMeetPoint: waypoint
Owner: Neutral
Location: 73,90
Actor179: fenc
Location: 14,81
Owner: USSR
Actor181: fenc
Location: 16,81
Owner: USSR
Actor182: fenc
Location: 19,81
Owner: USSR
Actor183: fenc
Location: 20,81
Owner: USSR
Actor184: fenc
Location: 21,81
Owner: USSR
Actor185: fenc
Location: 79,81
Owner: USSR
Actor186: fenc
Location: 80,81
Owner: USSR
Actor187: fenc
Location: 14,82
Owner: USSR
Actor188: fenc
Location: 67,82
Owner: USSR
Actor189: fenc
Location: 73,82
Owner: USSR
Actor190: fenc
Location: 14,83
Owner: USSR
Actor191: fenc
Location: 73,83
Owner: USSR
Actor192: fenc
Location: 22,84
Owner: USSR
Actor193: fenc
Location: 22,85
Owner: USSR
Actor194: fenc
Location: 73,85
Owner: USSR
Actor195: fenc
Location: 74,85
Owner: USSR
Actor196: fenc
Location: 75,85
Owner: USSR
Actor197: fenc
Location: 76,85
Owner: USSR
Actor198: fenc
Location: 73,86
Owner: USSR
Actor199: fenc
Location: 77,86
Owner: USSR
Actor200: fenc
Location: 14,87
Owner: USSR
Actor201: fenc
Location: 77,87
Owner: USSR
Actor202: fenc
Location: 14,88
Owner: USSR
Actor203: fenc
Location: 77,88
Owner: USSR
Actor204: fenc
Location: 80,89
Owner: USSR
Actor205: fenc
Location: 81,89
Owner: USSR
Actor206: fenc
Location: 82,89
Owner: USSR
Actor207: fenc
Location: 83,89
Owner: USSR
Actor208: fenc
Location: 84,89
Owner: USSR
Actor209: fenc
Location: 84,90
Owner: USSR
Actor210: fenc
Location: 84,91
Owner: USSR
Actor211: fenc
Location: 85,91
Owner: USSR
Actor212: fenc
Location: 62,95
Owner: USSR
Actor213: fenc
Location: 63,95
Owner: USSR
Actor214: fenc
Location: 64,95
Owner: USSR
Actor215: fenc
Location: 65,95
Owner: USSR
Actor216: fenc
Location: 66,95
Owner: USSR
Actor217: fenc
Location: 67,95
Owner: USSR
Actor218: fenc
Location: 62,96
Owner: USSR
Actor219: fenc
Location: 67,96
Owner: USSR
Actor220: fenc
Location: 68,96
Owner: USSR
Actor221: fenc
Location: 85,98
Owner: USSR
Actor222: fenc
Location: 86,98
Owner: USSR
Actor223: fenc
Location: 87,98
Owner: USSR
Actor224: fenc
Location: 88,98
Owner: USSR
Actor225: fenc
Location: 89,98
Owner: USSR
Actor226: fenc
Location: 90,98
Owner: USSR
Actor227: fenc
Location: 93,98
Owner: USSR
Actor228: fenc
Location: 84,99
Owner: USSR
Actor229: fenc
Location: 85,99
Owner: USSR
Actor230: fenc
Location: 77,100
Owner: USSR
Actor231: fenc
Location: 78,100
Owner: USSR
Actor232: fenc
Location: 80,100
Owner: USSR
Actor233: fenc
Location: 81,100
Owner: USSR
Actor234: fenc
Location: 78,101
Owner: USSR
Actor235: fenc
Location: 79,101
Owner: USSR
Actor236: fenc
Location: 80,101
Owner: USSR
Actor237: fenc
Location: 92,103
Owner: USSR
Actor238: fenc
Location: 93,103
Owner: USSR
Actor239: fenc
Location: 94,103
Owner: USSR
Actor240: fenc
Location: 95,103
Owner: USSR
Actor241: fenc
Location: 96,103
Owner: USSR
Actor242: fenc
Location: 96,104
Owner: USSR
Actor243: fenc
Location: 96,105
Owner: USSR
Actor244: fenc
Location: 15,81
Owner: USSR
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
FluentMessages: ra|fluent/lua.ftl, ra|fluent/campaign.ftl, map.ftl

View File

@@ -0,0 +1,94 @@
Player:
PlayerResources:
DefaultCash: 8500
World:
LuaScript:
Scripts: campaign.lua, utils.lua, allies06a.lua, allies06a-AI.lua
MissionData:
Briefing: briefing
BriefingVideo: ally6.vqa
WinVideo: allymorf.vqa
LossVideo: overrun.vqa
StartVideo: mcv.vqa
MapOptions:
TechLevel: medium
ScriptLobbyDropdown@difficulty:
ID: difficulty
Label: dropdown-difficulty.label
Description: dropdown-difficulty.description
Values:
easy: options-difficulty.easy
normal: options-difficulty.normal
hard: options-difficulty.hard
Default: normal
powerproxy.paratroopers:
ParatroopersPower:
DropItems: E1,E1,E1,E4,E4
TSLA:
Power:
Amount: -150
3TNK:
Buildable:
Prerequisites: ~vehicles.soviet
ARTY:
Buildable:
Prerequisites: ~disabled
FTRK:
Buildable:
Prerequisites: ~disabled
MCV:
Buildable:
Prerequisites: ~disabled
STEK:
Targetable:
TargetTypes: GroundActor, Structure, C4, DetonateAttack, SpyInfiltrate
TECH.CAM:
Inherits: CAMERA
RevealsShroud:
Range: 4c0
Type: CenterPosition
APWR:
Buildable:
Prerequisites: ~disabled
AFLD:
Buildable:
Prerequisites: ~disabled
HPAD:
Buildable:
Prerequisites: ~disabled
BRIK:
Buildable:
Prerequisites: ~disabled
MECH:
Buildable:
Prerequisites: ~disabled
THF:
Buildable:
Prerequisites: ~disabled
DD:
Buildable:
Prerequisites: ~disabled
CA:
Buildable:
Prerequisites: ~disabled
MSUB:
Buildable:
Prerequisites: ~disabled