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,226 @@
--[[
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.
]]
WTransWays =
{
{ WaterUnloadEntry1.Location, WaterUnload1.Location },
{ WaterUnloadEntry2.Location, WaterUnload2.Location },
{ WaterUnloadEntry3.Location, WaterUnload3.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 = 4,
normal = 3,
hard = 1
}
BuildDelays =
{
easy = 90,
normal = 60,
hard = 30
}
WaterAttacks =
{
easy = 1,
normal = 2,
hard = 3
}
WaterAttackTypes =
{
easy = { "ss" },
normal = { "ss", "ss" },
hard = { "ss", "ss", "ss" }
}
VehicleTypes = { "v2rl", "3tnk", "3tnk", "3tnk", "3tnk", "harv" }
InfTypes =
{
{ "e1", "e1", "e1", "e1", "e1"},
{ "e2", "e2", "e1", "e1", "e1"},
{ "e4", "e4", "e4", "e1", "e1"}
}
AttackRallyPoints =
{
{ SovietSideAttack1.Location, SovietBaseAttack.Location },
{ SovietBaseAttack.Location },
{ SovietSideAttack2.Location, SovietBaseAttack.Location }
}
ImportantBuildings = { WarFactory, Airfield1, Airfield2, Radar2, Refinery, SovietConyard }
SovietAircraftType = { "yak" }
Yaks = { }
IdlingUnits = { }
IdlingTanks = { tank1, tank2, tank3, tank4, tank5, tank6, tank7 }
IdlingNavalUnits = { }
InitialiseAttack = function()
Utils.Do(ImportantBuildings, function(a)
Trigger.OnDamaged(a, function()
Utils.Do(IdlingTanks, function(unit)
if not unit.IsDead then
IdleHunt(unit)
end
end)
end)
Trigger.OnCapture(a, function()
Utils.Do(IdlingTanks, function(unit)
if not unit.IsDead then
IdleHunt(unit)
end
end)
end)
end)
end
Attack = 0
ProduceInfantry = function()
if SovietBarracks.IsDead or SovietBarracks.Owner ~= USSR then
return
end
Attack = Attack + 1
local toBuild = Utils.Random(InfTypes)
USSR.Build(toBuild, function(units)
if Attack == 2 and not AttackTank1.IsDead then
units[#units + 1] = AttackTank1
elseif Attack == 4 and not AttackTank2.IsDead then
units[#units + 1] = AttackTank2
end
SendAttack(units, Utils.Random(AttackRallyPoints))
Trigger.AfterDelay(DateTime.Seconds(BuildDelays), ProduceInfantry)
end)
end
ProduceVehicles = function()
if WarFactory.IsDead or WarFactory.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 SubPen.IsDead or SubPen.Owner ~= USSR then
return
end
if not ShouldProduce and #Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == Greece and self.Type == "syrd" end) < 1 then
Trigger.AfterDelay(DateTime.Minutes(1), ProduceNaval)
return
end
ShouldProduce = true
USSR.Build(WaterAttackTypes, function(units)
Utils.Do(units, function(unit)
IdlingNavalUnits[#IdlingNavalUnits + 1] = unit
end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(40), ProduceNaval)
if #IdlingNavalUnits >= WaterAttacks then
Trigger.AfterDelay(DateTime.Seconds(20), function()
SendAttack(SetupNavalAttackGroup(), { SubPatrol1_2.Location })
end)
end
end)
end
ProduceAircraft = function()
if (Airfield1.IsDead or Airfield1.Owner ~= USSR) and (Airfield2.IsDead or Airfield2.Owner ~= USSR) then
return
end
USSR.Build(SovietAircraftType, function(units)
local yak = units[1]
Yaks[#Yaks + 1] = yak
Trigger.OnKilled(yak, ProduceAircraft)
local alive = Utils.Where(Yaks, function(y) return not y.IsDead end)
if #alive < 2 then
Trigger.AfterDelay(DateTime.Seconds(BuildDelays / 2), ProduceAircraft)
end
InitializeAttackAircraft(yak, Greece)
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 = 0, 3 do
if #IdlingNavalUnits == 0 then
return units
end
local number = Utils.RandomInteger(1, #IdlingNavalUnits + 1)
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)
local attackUnits = Reinforcements.ReinforceWithTransport(USSR, "lst", units , way, { way[2], way[1] })[2]
Utils.Do(attackUnits, function(a)
Trigger.OnAddedToWorld(a, function()
a.AttackMove(SovietBaseAttack.Location)
IdleHunt(a)
end)
end)
Trigger.AfterDelay(DateTime.Minutes(WTransDelays), WTransWaves)
end
ActivateAI = function()
WaterAttackTypes = WaterAttackTypes[Difficulty]
WaterAttacks = WaterAttacks[Difficulty]
WTransUnits = WTransUnits[Difficulty]
WTransDelays = WTransDelays[Difficulty]
BuildDelays = BuildDelays[Difficulty]
InitialiseAttack()
Trigger.AfterDelay(DateTime.Seconds(40), ProduceInfantry)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(10), ProduceAircraft)
Trigger.AfterDelay(DateTime.Minutes(2) + DateTime.Seconds(10), ProduceVehicles)
WarFactory.RallyPoint = WeaponMeetPoint.Location
Trigger.AfterDelay(DateTime.Minutes(4) + DateTime.Seconds(10), ProduceNaval)
Trigger.AfterDelay(DateTime.Minutes(WTransDelays + 1) + DateTime.Seconds(30), WTransWaves)
end

View File

@@ -0,0 +1,243 @@
--[[
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 = { "e1", "e1", "e3", "e3", "e3" }
AlliedBoatReinforcements = { "pt", "pt" }
BadGuys = { BadGuy1, BadGuy2, BadGuy3, BadGuy4 }
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 },
{ TnkPatrol5.Location, TnkPatrol6.Location, TnkPatrol1.Location, TnkPatrol2.Location, TnkPatrol3.Location, TnkPatrol4.Location },
{ TnkPatrol6.Location, TnkPatrol1.Location, TnkPatrol2.Location, TnkPatrol3.Location, TnkPatrol4.Location, TnkPatrol5.Location }
}
SubPaths = {
{ SubPatrol1_1.Location, SubPatrol1_2.Location },
{ SubPatrol2_1.Location, SubPatrol2_2.Location },
{ SubPatrol3_1.Location, SubPatrol3_2.Location },
{ SubPatrol4_1.Location, SubPatrol4_2.Location },
{ SubPatrol5_1.Location, SubPatrol5_2.Location }
}
ParadropWaypoints =
{
easy = { UnitBStopLocation },
normal = { UnitBStopLocation, UnitAStopLocation },
hard = { UnitBStopLocation, UnitCStopLocation, UnitAStopLocation }
}
SovietTechLabs = { TechLab1, TechLab2 }
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 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
BeachDog.Patrol({ BeachPatrol1.Location, BeachPatrol2.Location, BeachPatrol3.Location })
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(SubPaths[1])
Patrol2Sub.Patrol(SubPaths[2])
Patrol3Sub.Patrol(SubPaths[3])
Patrol4Sub.Patrol(SubPaths[4])
Patrol5Sub.Patrol(SubPaths[5])
end
InitialAlliedReinforcements = function()
local camera = Actor.Create("Camera", true, { Owner = Greece, Location = DefaultCameraPosition.Location })
Trigger.AfterDelay(DateTime.Seconds(30), camera.Destroy)
Trigger.AfterDelay(DateTime.Seconds(1), function()
Reinforcements.Reinforce(Greece, AlliedReinforcementsA, { AlliedEntry3.Location, UnitCStopLocation.Location }, 2)
Reinforcements.Reinforce(Greece, AlliedReinforcementsB, { AlliedEntry2.Location, UnitAStopLocation.Location }, 2)
end)
Trigger.AfterDelay(DateTime.Seconds(3), function()
Reinforcements.Reinforce(Greece, { "mcv" }, { AlliedEntry1.Location, UnitBStopLocation.Location })
Reinforcements.Reinforce(Greece, AlliedBoatReinforcements, { AlliedBoatEntry.Location, AlliedBoatStop.Location })
end)
end
CaptureRadarDome = function()
Trigger.OnKilled(RadarDome, function()
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()
Utils.Do(SovietTechLabs, function(a)
Trigger.OnInfiltrated(a, function()
if Infiltrated then
return
end
Infiltrated = true
DestroySovietsObj = AddPrimaryObjective(Greece, "destroy-soviet-buildings-units")
Greece.MarkCompletedObjective(InfiltrateTechCenterObj)
end)
Trigger.OnCapture(a, function()
if not Infiltrated then
Media.DisplayMessage(UserInterface.GetFluentMessage("do-not-capture-tech-centers"))
end
end)
end)
Trigger.OnAllKilledOrCaptured(SovietTechLabs, function()
if not Greece.IsObjectiveCompleted(InfiltrateTechCenterObj) then
Greece.MarkFailedObjective(InfiltrateTechCenterObj)
end
end)
end
Tick = function()
if Greece.HasNoRequiredUnits() then
Greece.MarkFailedObjective(InfiltrateTechCenterObj)
end
if DestroySovietsObj and USSR.HasNoRequiredUnits() then
Greece.MarkCompletedObjective(DestroySovietsObj)
end
end
WorldLoaded = function()
Greece = Player.GetPlayer("Greece")
USSR = Player.GetPlayer("USSR")
InitObjectives(Greece)
InfiltrateTechCenterObj = AddPrimaryObjective(Greece, "infiltrate-tech-center-spy")
CaptureRadarDomeObj = AddSecondaryObjective(Greece, "capture-radar-shore")
Camera.Position = DefaultCameraPosition.CenterPosition
if Difficulty == "easy" then
Trigger.OnEnteredProximityTrigger(SovietDefenseCam.CenterPosition, WDist.New(1024 * 7), function(a, id)
if a.Owner == Greece then
Trigger.RemoveProximityTrigger(id)
local cam1 = Actor.Create("TECH.CAM", true, { Owner = Greece, Location = SovietDefenseCam.Location })
Trigger.AfterDelay(DateTime.Seconds(15), cam1.Destroy)
if not DefenseFlame1.IsDead then
local cam2 = Actor.Create("TECH.CAM", true, { Owner = Greece, Location = DefenseFlame1.Location })
Trigger.AfterDelay(DateTime.Seconds(15), cam2.Destroy)
end
if not DefenseFlame2.IsDead then
local cam3 = Actor.Create("TECH.CAM", true, { Owner = Greece, Location = DefenseFlame2.Location })
Trigger.AfterDelay(DateTime.Seconds(15), cam3.Destroy)
end
end
end)
end
if Difficulty ~= "hard" then
Trigger.OnKilled(DefBrl1, function(a, b)
if not DefenseFlame1.IsDead then
DefenseFlame1.Kill()
end
end)
Trigger.OnKilled(DefBrl2, function(a, b)
if not DefenseFlame2.IsDead then
DefenseFlame2.Kill()
end
end)
end
Utils.Do(BadGuys, function(a)
a.AttackMove(UnitCStopLocation.Location)
end)
InitialAlliedReinforcements()
Trigger.AfterDelay(DateTime.Seconds(1), function()
InitialSovietPatrols()
end)
Trigger.OnEnteredProximityTrigger(SovietMiniBaseCam.CenterPosition, WDist.New(1024 * 14), 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(0, 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,848 @@
MapFormat: 12
RequiresMod: ra
Title: 06b: Cripple Iron Curtain Research
Author: Westwood Studios
Tileset: SNOW
MapSize: 128,128
Bounds: 20,34,83,78
Visibility: MissionSelector
Categories: Campaign
LockPreview: True
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: england
PlayerReference@Creeps:
Name: Creeps
NonCombatant: True
Faction: england
PlayerReference@USSR:
Name: USSR
Bot: campaign
Faction: soviet
Color: FF1400
Enemies: Greece
PlayerReference@Greece:
Name: Greece
AllowBots: False
Playable: True
Required: True
LockFaction: True
Faction: allies
LockColor: True
Color: E2E6F6
LockSpawn: True
LockTeam: True
Enemies: USSR
Actors:
Actor245: sbag
Owner: Neutral
Location: 69,83
Actor0: sbag
Location: 69,80
Owner: Neutral
Actor1: sbag
Location: 70,80
Owner: Neutral
Actor2: sbag
Location: 71,80
Owner: Neutral
Actor3: sbag
Location: 72,80
Owner: Neutral
Actor4: sbag
Location: 73,80
Owner: Neutral
Actor5: sbag
Location: 74,80
Owner: Neutral
Actor6: sbag
Location: 75,80
Owner: Neutral
Actor7: sbag
Location: 76,80
Owner: Neutral
Actor8: sbag
Location: 77,80
Owner: Neutral
Actor9: sbag
Location: 69,81
Owner: Neutral
Actor10: sbag
Location: 75,81
Owner: Neutral
Actor11: sbag
Location: 77,81
Owner: Neutral
Actor12: sbag
Location: 69,82
Owner: Neutral
Actor13: sbag
Location: 75,82
Owner: Neutral
Actor14: sbag
Location: 76,82
Owner: Neutral
Actor15: sbag
Location: 77,82
Owner: Neutral
Actor17: sbag
Location: 69,84
Owner: Neutral
Actor18: sbag
Location: 85,84
Owner: Neutral
Actor19: sbag
Location: 86,84
Owner: Neutral
Actor20: sbag
Location: 87,84
Owner: Neutral
Actor21: sbag
Location: 85,85
Owner: Neutral
Actor22: sbag
Location: 87,85
Owner: Neutral
Actor23: sbag
Location: 85,86
Owner: Neutral
Actor24: sbag
Location: 86,86
Owner: Neutral
Actor25: sbag
Location: 87,86
Owner: Neutral
Actor26: sbag
Location: 87,87
Owner: Neutral
Actor27: sbag
Location: 87,88
Owner: Neutral
Actor28: sbag
Location: 87,89
Owner: Neutral
Actor29: sbag
Location: 69,90
Owner: Neutral
Actor30: sbag
Location: 87,90
Owner: Neutral
Actor31: sbag
Location: 69,91
Owner: Neutral
Actor32: sbag
Location: 87,91
Owner: Neutral
Actor33: sbag
Location: 69,92
Owner: Neutral
Actor34: sbag
Location: 74,92
Owner: Neutral
Actor35: sbag
Location: 75,92
Owner: Neutral
Actor36: sbag
Location: 76,92
Owner: Neutral
Actor37: sbag
Location: 81,92
Owner: Neutral
Actor38: sbag
Location: 82,92
Owner: Neutral
Actor39: sbag
Location: 83,92
Owner: Neutral
Actor40: sbag
Location: 87,92
Owner: Neutral
Actor41: sbag
Location: 69,93
Owner: Neutral
Actor42: sbag
Location: 74,93
Owner: Neutral
Actor43: sbag
Location: 76,93
Owner: Neutral
Actor44: sbag
Location: 81,93
Owner: Neutral
Actor45: sbag
Location: 83,93
Owner: Neutral
Actor46: sbag
Location: 87,93
Owner: Neutral
Actor47: sbag
Location: 69,94
Owner: Neutral
Actor48: sbag
Location: 70,94
Owner: Neutral
Actor49: sbag
Location: 71,94
Owner: Neutral
Actor50: sbag
Location: 72,94
Owner: Neutral
Actor51: sbag
Location: 73,94
Owner: Neutral
Actor52: sbag
Location: 74,94
Owner: Neutral
Actor53: sbag
Location: 75,94
Owner: Neutral
Actor54: sbag
Location: 76,94
Owner: Neutral
Actor55: sbag
Location: 81,94
Owner: Neutral
Actor56: sbag
Location: 82,94
Owner: Neutral
Actor57: sbag
Location: 83,94
Owner: Neutral
Actor58: sbag
Location: 84,94
Owner: Neutral
Actor59: sbag
Location: 85,94
Owner: Neutral
Actor60: sbag
Location: 86,94
Owner: Neutral
Actor61: sbag
Location: 87,94
Owner: Neutral
Actor62: tc05
Location: 54,109
Owner: Neutral
Actor63: tc02
Location: 46,103
Owner: Neutral
Actor64: t08
Location: 43,103
Owner: Neutral
Actor65: t08
Location: 46,109
Owner: Neutral
Actor66: t01
Location: 52,102
Owner: Neutral
Actor67: t11
Location: 72,94
Owner: Neutral
Actor68: tc05
Location: 89,89
Owner: Neutral
Actor69: tc04
Location: 84,95
Owner: Neutral
Actor70: tc03
Location: 78,97
Owner: Neutral
Actor71: tc01
Location: 73,97
Owner: Neutral
Actor72: t17
Location: 76,95
Owner: Neutral
Actor73: t16
Location: 77,102
Owner: Neutral
Actor74: tc02
Location: 76,40
Owner: Neutral
Actor75: tc05
Location: 72,47
Owner: Neutral
Actor76: tc04
Location: 72,45
Owner: Neutral
Actor77: t08
Location: 75,49
Owner: Neutral
Actor78: t08
Location: 75,40
Owner: Neutral
Actor79: tc02
Location: 39,34
Owner: Neutral
Actor80: t08
Location: 38,36
Owner: Neutral
Actor81: tc05
Location: 93,43
Owner: Neutral
Actor82: tc03
Location: 93,42
Owner: Neutral
Actor83: tc01
Location: 91,45
Owner: Neutral
Actor84: t08
Location: 93,45
Owner: Neutral
Actor85: tc02
Location: 42,38
Owner: Neutral
Actor86: tc04
Location: 42,41
Owner: Neutral
Actor87: tc05
Location: 46,39
Owner: Neutral
Actor88: t17
Location: 46,42
Owner: Neutral
Actor89: tc01
Location: 51,104
Owner: Neutral
Actor90: t17
Location: 47,106
Owner: Neutral
Actor91: t16
Location: 53,107
Owner: Neutral
Actor92: t08
Location: 50,109
Owner: Neutral
Actor93: t08
Location: 51,106
Owner: Neutral
Actor94: t08
Location: 87,95
Owner: Neutral
Actor95: tc04
Location: 88,93
Owner: Neutral
Actor96: tc05
Location: 88,95
Owner: Neutral
Actor97: t01
Location: 36,110
Owner: Neutral
Actor98: t07
Location: 38,110
Owner: Neutral
Actor99: t07
Location: 34,100
Owner: Neutral
Actor100: t08
Location: 33,105
Owner: Neutral
Actor101: mine
Location: 42,108
Owner: Neutral
Actor102: mine
Location: 77,105
Owner: Neutral
Actor103: mine
Location: 84,104
Owner: Neutral
Actor104: mine
Location: 31,108
Owner: Neutral
Actor106: ftur
Location: 69,89
Owner: USSR
Actor107: ftur
Location: 69,85
Owner: USSR
Actor108: powr
Location: 80,87
Owner: USSR
Actor109: powr
Location: 78,85
Owner: USSR
Actor114: ftur
Location: 57,45
Owner: USSR
Actor115: ftur
Location: 62,45
Owner: USSR
Actor118: silo
Location: 68,35
Owner: USSR
Actor119: silo
Location: 71,34
Owner: USSR
Actor120: silo
Location: 67,34
Owner: USSR
Actor121: silo
Location: 72,35
Owner: USSR
Actor124: apwr
Location: 81,46
Owner: USSR
Actor125: apwr
Location: 58,59
Owner: USSR
Actor126: apwr
Location: 75,46
Owner: USSR
Actor127: apwr
Location: 78,46
Owner: USSR
Actor128: apwr
Location: 50,59
Owner: USSR
Actor131: kenn
Location: 52,45
Owner: USSR
Actor132: kenn
Location: 75,41
Owner: USSR
Actor133: tsla
Location: 77,64
Owner: USSR
Actor134: tsla
Location: 33,44
Owner: USSR
Actor135: tsla
Location: 72,60
Owner: USSR
Actor136: kenn
Location: 72,50
Owner: USSR
Actor137: brl3
Location: 52,91
Owner: USSR
Actor138: barl
Location: 52,90
Owner: USSR
Actor139: brl3
Location: 47,90
Owner: USSR
Actor140: barl
Location: 46,91
Owner: USSR
Actor143: barl
Location: 52,92
Owner: USSR
Actor146: barl
Location: 46,90
Owner: USSR
Actor148: 3tnk
Location: 49,91
Owner: USSR
Facing: 508
Actor158: harv
Location: 78,37
Owner: USSR
Facing: 892
Actor161: v2rl
Location: 85,55
Owner: USSR
Facing: 252
Actor165: e1
Location: 75,93
Owner: USSR
SubCell: 3
Actor166: e1
Location: 82,93
Owner: USSR
SubCell: 3
Actor167: e1
Location: 86,85
Owner: USSR
SubCell: 2
Actor168: e1
Location: 76,81
Owner: USSR
SubCell: 1
Actor169: e2
Location: 75,93
Owner: USSR
SubCell: 2
Actor170: e2
Location: 82,93
Owner: USSR
SubCell: 2
Actor171: e2
Location: 86,85
Owner: USSR
SubCell: 3
Actor172: e2
Location: 76,81
Owner: USSR
SubCell: 3
Actor182: e1
Location: 54,105
Owner: Greece
SubCell: 1
Actor183: e1
Location: 53,106
Owner: Greece
Facing: 124
SubCell: 2
Actor184: e1
Location: 55,105
Owner: Greece
Facing: 892
SubCell: 4
Actor186: ss
Location: 67,62
Owner: USSR
Facing: 508
Actor236: mine
Owner: Neutral
Location: 88,35
Actor237: mine
Owner: Neutral
Location: 40,52
Actor238: mine
Owner: Neutral
Location: 28,36
Actor244: camera
Owner: USSR
Location: 49,107
SovietBaseAttack: waypoint
Owner: Neutral
Location: 49,87
SovietSideAttack1: waypoint
Owner: Neutral
Location: 66,93
SovietSideAttack2: waypoint
Owner: Neutral
Location: 66,82
AttackTank1: 3tnk
Location: 71,87
Owner: USSR
Facing: 252
AttackTank2: 3tnk
Location: 80,84
Owner: USSR
Facing: 380
AlliedEntry1: waypoint
Location: 49,111
Owner: Neutral
AlliedEntry2: waypoint
Location: 46,111
Owner: Neutral
AlliedEntry3: waypoint
Location: 52,111
Owner: Neutral
AlliedBoatEntry: waypoint
Location: 60,111
Owner: Neutral
UnitAStopLocation: waypoint
Location: 49,108
Owner: Neutral
UnitBStopLocation: waypoint
Location: 47,108
Owner: Neutral
UnitCStopLocation: waypoint
Location: 51,108
Owner: Neutral
AlliedBoatStop: waypoint
Location: 60,108
Owner: Neutral
WaterUnload1: waypoint
Location: 79,109
Owner: Neutral
WaterUnload2: waypoint
Location: 26,107
Owner: Neutral
WaterUnload3: waypoint
Location: 83,82
Owner: Neutral
WaterUnloadEntry1: waypoint
Location: 102,108
Owner: Neutral
WaterUnloadEntry2: waypoint
Owner: Neutral
Location: 20,68
WaterUnloadEntry3: waypoint
Location: 102,53
Owner: Neutral
DefaultCameraPosition: waypoint
Location: 54,107
Owner: Neutral
SovietMiniBaseCam: waypoint
Location: 77,87
Owner: Neutral
SovietDefenseCam: waypoint
Owner: Neutral
Location: 49,91
Weapcam: waypoint
Owner: Neutral
Location: 53,47
TechLab1: stek
Location: 54,57
Owner: USSR
TechLab2: stek
Location: 90,42
Owner: USSR
Airfield1: afld
Location: 60,48
Owner: USSR
Airfield2: afld
Location: 58,41
Owner: USSR
WarFactory: weap
Location: 52,46
Owner: USSR
WeaponMeetPoint: waypoint
Owner: Neutral
Location: 65,46
SovietConyard: fact
Location: 70,54
Owner: USSR
Refinery: proc
Location: 68,35
Owner: USSR
RadarDome: dome
Location: 75,86
Owner: USSR
Radar2: dome
Location: 59,44
Owner: USSR
SovietBarracks: barr
Location: 73,83
Owner: USSR
SubPen: spen
Location: 72,62
Owner: USSR
BadGuy1: e1
Location: 48,95
Owner: USSR
Facing: 380
SubCell: 4
BadGuy2: e1
Location: 50,98
Owner: USSR
Facing: 380
SubCell: 1
BadGuy3: e1
Location: 50,96
Owner: USSR
Facing: 380
SubCell: 1
BadGuy4: e1
Location: 48,97
Owner: USSR
Facing: 380
SubCell: 4
Patrol1Sub: ss
Location: 96,58
Owner: USSR
Facing: 508
SubPatrol1_1: waypoint
Location: 96,58
Owner: Neutral
SubPatrol1_2: waypoint
Location: 86,77
Owner: Neutral
Patrol2Sub: ss
Location: 39,70
Owner: USSR
Facing: 380
SubPatrol2_1: waypoint
Location: 42,63
Owner: Neutral
SubPatrol2_2: waypoint
Location: 22,72
Owner: Neutral
Patrol3Sub: ss
Location: 22,64
Owner: USSR
Facing: 764
SubPatrol3_1: waypoint
Location: 41,75
Owner: Neutral
SubPatrol3_2: waypoint
Location: 22,64
Owner: Neutral
Patrol4Sub: ss
Location: 79,51
Owner: USSR
Facing: 764
SubPatrol4_1: waypoint
Location: 79,51
Owner: Neutral
SubPatrol4_2: waypoint
Location: 102,51
Owner: Neutral
Patrol5Sub: ss
Owner: USSR
Location: 94,75
Facing: 500
SubPatrol5_1: waypoint
Location: 94,94
Owner: Neutral
SubPatrol5_2: waypoint
Location: 94,75
Owner: Neutral
Mammoth1: 4tnk
Location: 69,43
Owner: USSR
Facing: 252
Mammoth2: 4tnk
Location: 43,40
Owner: USSR
Facing: 252
Mammoth3: 4tnk
Location: 54,37
Owner: USSR
Facing: 252
TnkPatrol1: waypoint
Location: 69,43
Owner: Neutral
TnkPatrol2: waypoint
Location: 69,55
Owner: Neutral
TnkPatrol3: waypoint
Location: 56,55
Owner: Neutral
TnkPatrol4: waypoint
Location: 41,44
Owner: Neutral
TnkPatrol5: waypoint
Location: 42,37
Owner: Neutral
TnkPatrol6: waypoint
Location: 62,37
Owner: Neutral
DefenseFlame1: ftur
Location: 51,91
Owner: USSR
DefenseFlame2: ftur
Location: 47,91
Owner: USSR
DefBrl1: brl3
Location: 51,90
Owner: USSR
DefBrl2: brl3
Location: 46,89
Owner: USSR
Patrol_1_e1: e1
Location: 40,44
Owner: USSR
Facing: 252
SubCell: 1
Patrol_1_dog: dog
Location: 40,43
Owner: USSR
Facing: 252
SubCell: 1
Patrol_2_e1: e1
Location: 41,37
Owner: USSR
Facing: 252
SubCell: 1
Patrol_2_dog: dog
Location: 41,37
Owner: USSR
Facing: 252
SubCell: 3
Patrol_3_e1: e1
Location: 84,43
Owner: USSR
Facing: 252
SubCell: 2
Patrol_3_dog: dog
Location: 86,43
Owner: USSR
Facing: 252
SubCell: 0
Patrol_4_e1: e1
Location: 67,51
Owner: USSR
Facing: 380
SubCell: 1
Patrol_4_dog: dog
Location: 66,50
Owner: USSR
Facing: 380
SubCell: 3
Patrol1: waypoint
Location: 85,43
Owner: Neutral
Patrol2: waypoint
Location: 66,50
Owner: Neutral
Patrol3: waypoint
Location: 53,55
Owner: Neutral
Patrol4: waypoint
Location: 46,49
Owner: Neutral
Patrol5: waypoint
Location: 40,44
Owner: Neutral
Patrol6: waypoint
Location: 41,37
Owner: Neutral
Patrol7: waypoint
Location: 54,37
Owner: Neutral
Patrol8: waypoint
Location: 71,43
Owner: Neutral
tank1: 3tnk
Location: 81,56
Owner: USSR
Facing: 380
tank2: 3tnk
Location: 77,54
Owner: USSR
Facing: 380
tank3: 3tnk
Location: 64,43
Owner: USSR
Facing: 636
tank4: 3tnk
Location: 45,43
Owner: USSR
Facing: 508
tank5: 3tnk
Location: 51,56
Owner: USSR
tank6: v2rl
Location: 46,41
Owner: USSR
Facing: 380
tank7: v2rl
Location: 62,42
Owner: USSR
Facing: 636
BeachDog: dog
Location: 75,54
Owner: USSR
Facing: 380
SubCell: 1
BeachPatrol1: waypoint
Owner: Neutral
Location: 68,59
BeachPatrol2: waypoint
Owner: Neutral
Location: 75,54
BeachPatrol3: waypoint
Location: 77,58
Owner: Neutral
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,90 @@
Player:
PlayerResources:
DefaultCash: 5000
World:
LuaScript:
Scripts: campaign.lua, utils.lua, allies06b.lua, allies06b-AI.lua
MissionData:
BriefingVideo: ally6.vqa
WinVideo: allymorf.vqa
LossVideo: overrun.vqa
StartVideo: mcv.vqa
Briefing: briefing
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
3TNK:
Buildable:
Prerequisites: ~vehicles.soviet
ARTY:
Buildable:
Prerequisites: ~disabled
FTRK:
Buildable:
Prerequisites: ~disabled
MCV:
Buildable:
Prerequisites: ~disabled
TECH.CAM:
Inherits: CAMERA
RevealsShroud:
Range: 4c0
Type: CenterPosition
STEK:
Targetable:
TargetTypes: GroundActor, Structure, C4, DetonateAttack, SpyInfiltrate
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