Add Allies08a

This commit is contained in:
Smittytron
2018-09-01 22:30:09 -05:00
committed by abcdefg30
parent e038b86742
commit 831ec0aeda
7 changed files with 1544 additions and 0 deletions

View File

@@ -0,0 +1,242 @@
--[[
Copyright 2007-2018 The OpenRA Developers (see AUTHORS)
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.
]]
AttackGroup = { }
AttackGroupSize = 10
SovietInfantry = { "e1", "e2", "e4" }
SovietVehicles = { "3tnk", "3tnk", "v2rl" }
SovietAircraftType = { "mig" }
Migs = { }
IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
GroundWavesUpgradeDelay = DateTime.Minutes(12)
GroundAttackUnitType = "Normal"
GroundAttackUnits =
{
Normal = { {"4tnk", "3tnk", "e2", "e2", "e2" }, { "3tnk", "v2rl", "e4", "e4", "e4" } },
Upgraded = { {"4tnk", "3tnk", "ftrk", "apc", "apc", "e1", "e1", "e1", "e1", "e1", "e2", "e2", "e2" }, { "3tnk", "v2rl", "ftrk", "apc", "apc", "e1", "e1", "e1", "e1", "e1", "e4", "e4", "e4" } }
}
GroundAttackPaths =
{
{ SovEntry1.Location, ParaLZ3.Location, AttackChrono.Location },
{ SovEntry2.Location, ParaLZ5.Location, AttackChrono.Location },
{ SovEntry3.Location, ParaLZ5.Location, AttackChrono.Location }
}
GroundWavesDelays =
{
easy = 4,
normal = 3,
hard = 2
}
WTransUnits = { { "4tnk", "3tnk", "e2", "e2", "e2" }, { "3tnk", "v2rl", "e4", "e4", "e4" } }
WTransWays =
{
{ DDEntry.Location, WaterLanding1.Location },
{ WaterEntry2.Location, WaterLanding2.Location },
{ WaterEntry2.Location, WaterLanding3.Location }
}
WTransDelays =
{
easy = 5,
normal = 4,
hard = 3
}
ParadropLZs = { ParaLZ1.CenterPosition, ParaLZ2.CenterPosition, ParaLZ3.CenterPosition, ParaLZ4.CenterPosition, ParaLZ5.CenterPosition }
ParadropDelays =
{
easy = 3,
normal = 2,
hard = 1
}
BombDelays =
{
easy = 4,
normal = 3,
hard = 2
}
ProductionInterval =
{
easy = DateTime.Seconds(20),
normal = DateTime.Seconds(10),
hard = DateTime.Seconds(5)
}
SendAttackGroup = function()
if #AttackGroup < AttackGroupSize then
return
end
Utils.Do(AttackGroup, function(unit)
if not unit.IsDead then
Trigger.OnIdle(unit, unit.Hunt)
end
end)
AttackGroup = { }
end
ProduceInfantry = function()
if USSRRax.IsDead or USSRRax.Owner ~= ussr then
return
end
ussr.Build({ Utils.Random(SovietInfantry) }, function(units)
table.insert(AttackGroup, units[1])
SendAttackGroup()
Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceInfantry)
end)
end
ProduceVehicles = function()
if USSRWarFactory.IsDead or USSRWarFactory.Owner ~= ussr then
return
end
ussr.Build({ Utils.Random(SovietVehicles) }, function(units)
table.insert(AttackGroup, units[1])
SendAttackGroup()
Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceVehicles)
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 mig = units[1]
Migs[#Migs + 1] = mig
Trigger.OnKilled(mig, ProduceAircraft)
local alive = Utils.Where(Migs, function(y) return not y.IsDead end)
if #alive < 2 then
Trigger.AfterDelay(DateTime.Seconds(ProductionInterval[Map.LobbyOption("difficulty")] / 2), ProduceAircraft)
end
TargetAndAttack(mig)
end)
end
TargetAndAttack = function(mig, target)
if not target or target.IsDead or (not target.IsInWorld) then
local enemies = Utils.Where(greece.GetActors(), function(actor)
return actor.HasProperty("Health") and actor.Type ~= "brik"
end)
if #enemies > 0 then
target = Utils.Random(enemies)
end
end
if target and mig.AmmoCount() > 0 and mig.CanTarget(target) then
mig.Attack(target)
else
mig.ReturnToBase()
end
mig.CallFunc(function()
TargetAndAttack(mig, target)
end)
end
GroundWaves = function()
local path = Utils.Random(GroundAttackPaths)
local units = Reinforcements.Reinforce(ussr, Utils.Random(GroundAttackUnits[GroundAttackUnitType]), { path[1] })
local lastWaypoint = path[#path]
Utils.Do(units, function(unit)
Trigger.OnAddedToWorld(unit, function()
unit.Patrol(path)
Trigger.OnIdle(unit, function()
unit.AttackMove(lastWaypoint)
end)
end)
end)
Trigger.AfterDelay(DateTime.Minutes(GroundWavesDelays), GroundWaves)
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(AttackChrono.Location)
IdleHunt(a)
end)
end)
Trigger.AfterDelay(DateTime.Minutes(WTransDelays), WTransWaves)
end
Paradrop = function()
local units = PowerProxy.SendParatroopers(Utils.Random(ParadropLZs))
Utils.Do(units, function(unit)
Trigger.OnAddedToWorld(unit, IdleHunt)
end)
Trigger.AfterDelay(DateTime.Minutes(ParadropDelays), Paradrop)
end
SendParabombs = function()
local airfield = Airfield1
if Airfield1.IsDead or Airfield1.Owner ~= ussr then
if Airfield2.IsDead or Airfield2.Owner ~= ussr then
return
end
airfield = Airfield2
end
local targets = Utils.Where(greece.GetActors(), function(actor)
return
actor.HasProperty("Sell") and
actor.Type ~= "brik" and
actor.Type ~= "sbag" or
actor.Type == "pdox" or
actor.Type == "atek"
end)
if #targets > 0 then
airfield.SendAirstrike(Utils.Random(targets).CenterPosition, true, 0)
end
Trigger.AfterDelay(DateTime.Minutes(BombDelays), SendParabombs)
end
ActivateAI = function()
local difficulty = Map.LobbyOption("difficulty")
GroundWavesDelays = GroundWavesDelays[difficulty]
WTransDelays = WTransDelays[difficulty]
ParadropDelays = ParadropDelays[difficulty]
BombDelays = BombDelays[difficulty]
local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == ussr and self.HasProperty("StartBuildingRepairs") end)
Utils.Do(buildings, function(actor)
Trigger.OnDamaged(actor, function(building)
if building.Owner == ussr and building.Health < building.MaxHealth * 3/4 then
building.StartBuildingRepairs()
end
end)
end)
ProduceInfantry()
ProduceVehicles()
ProduceAircraft()
Trigger.AfterDelay(DateTime.Minutes(GroundWavesDelays), GroundWaves)
Trigger.AfterDelay(DateTime.Minutes(WTransDelays), WTransWaves)
Trigger.AfterDelay(DateTime.Minutes(ParadropDelays), Paradrop)
Trigger.AfterDelay(DateTime.Minutes(BombDelays), SendParabombs)
Trigger.AfterDelay(GroundWavesUpgradeDelay, function() GroundAttackUnitType = "Upgraded" end)
end

View File

@@ -0,0 +1,192 @@
--[[
Copyright 2007-2018 The OpenRA Developers (see AUTHORS)
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.
]]
AlliedBoatReinforcements = { "dd", "dd" }
TimerTicks = DateTime.Minutes(21)
ObjectiveBuildings = { Chronosphere, AlliedTechCenter }
ScientistTypes = { "chan", "chan", "chan", "chan" }
ScientistDiscoveryFootprint = { CPos.New(28, 83), CPos.New(29, 83) }
ScientistEvacuationFootprint = { CPos.New(29, 60), CPos.New(29, 61), CPos.New(29, 62), CPos.New(29, 63), CPos.New(29, 64), CPos.New(29, 65), CPos.New(29, 66) }
InitialAlliedReinforcements = function()
Trigger.AfterDelay(DateTime.Seconds(2), function()
Media.PlaySpeechNotification(greece, "ReinforcementsArrived")
Reinforcements.Reinforce(greece, { "mcv" }, { MCVEntry.Location, MCVStop.Location })
Reinforcements.Reinforce(greece, AlliedBoatReinforcements, { DDEntry.Location, DDStop.Location })
end)
end
CreateScientists = function()
scientists = Reinforcements.Reinforce(greece, ScientistTypes, { ScientistsExit.Location })
Utils.Do(scientists, function(s)
s.Move(s.Location + CVec.New(0, 1))
s.Scatter()
end)
local flare = Actor.Create("flare", true, { Owner = greece, Location = DefaultCameraPosition.Location + CVec.New(-1, 0) })
Trigger.AfterDelay(DateTime.Seconds(2), function() Media.PlaySpeechNotification(player, "SignalFlareNorth") end)
Trigger.OnAnyKilled(scientists, function()
Media.PlaySpeechNotification(greece, "ObjectiveNotMet")
greece.MarkFailedObjective(EvacuateScientists)
end)
-- Add the footprint trigger in a frame end task (delay 0) to avoid crashes
local left = #scientists
Trigger.AfterDelay(0, function()
local changeOwnerTrigger = Trigger.OnEnteredFootprint(ScientistEvacuationFootprint, function(a, id)
if a.Owner == greece and a.Type == "chan" then
a.Owner = germany
a.Stop()
a.Move(MCVEntry.Location)
-- Constantly try to reach the exit (and thus avoid getting stuck if the path was blocked)
Trigger.OnIdle(a, function()
a.Move(MCVEntry.Location)
end)
end
end)
-- Use a cell trigger to destroy the scientists preventing the player from causing glitchs by blocking the path
Trigger.OnEnteredFootprint({ MCVEntry.Location }, function(a, id)
if a.Owner == germany then
a.Stop()
a.Destroy()
left = left - 1
if left == 0 then
Trigger.RemoveFootprintTrigger(id)
Trigger.RemoveFootprintTrigger(changeOwnerTrigger)
flare.Destroy()
if not greece.IsObjectiveCompleted(EvacuateScientists) and not greece.IsObjectiveFailed(EvacuateScientists) then
Media.PlaySpeechNotification(greece, "ObjectiveMet")
greece.MarkCompletedObjective(EvacuateScientists)
end
end
end
end)
end)
end
FinishTimer = function()
for i = 0, 5 do
local c = TimerColor
if i % 2 == 0 then
c = HSLColor.White
end
Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("The experiment is a success!", c) end)
end
Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end)
end
DefendChronosphereCompleted = function()
local cells = Utils.ExpandFootprint({ ChronoshiftLocation.Location }, false)
local units = { }
for i = 1, #cells do
local unit = Actor.Create("2tnk", true, { Owner = greece, Facing = 0 })
units[unit] = cells[i]
end
Chronosphere.Chronoshift(units)
Trigger.AfterDelay(DateTime.Seconds(3), function()
greece.MarkCompletedObjective(DefendChronosphere)
greece.MarkCompletedObjective(KeepBasePowered)
end)
end
ticked = TimerTicks
Tick = function()
ussr.Cash = 5000
if ussr.HasNoRequiredUnits() then
greece.MarkCompletedObjective(DefendChronosphere)
greece.MarkCompletedObjective(KeepBasePowered)
end
if greece.HasNoRequiredUnits() then
ussr.MarkCompletedObjective(BeatAllies)
end
if ticked > 0 then
UserInterface.SetMissionText("Chronosphere experiment completes in " .. Utils.FormatTime(ticked), TimerColor)
ticked = ticked - 1
elseif ticked == 0 and (greece.PowerState ~= "Normal") then
greece.MarkFailedObjective(KeepBasePowered)
elseif ticked == 0 then
DefendChronosphereCompleted()
ticked = ticked - 1
end
end
WorldLoaded = function()
greece = Player.GetPlayer("Greece")
ussr = Player.GetPlayer("USSR")
germany = Player.GetPlayer("Germany")
DefendChronosphere = greece.AddPrimaryObjective("Defend the Chronosphere and the Tech Center\nat all costs.")
KeepBasePowered = greece.AddPrimaryObjective("The Chronosphere must have power when the\ntimer runs out.")
EvacuateScientists = greece.AddSecondaryObjective("Evacuate all scientists from the island to\nthe west.")
BeatAllies = ussr.AddPrimaryObjective("Defeat the Allied forces.")
Trigger.OnObjectiveCompleted(greece, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
end)
Trigger.OnObjectiveFailed(greece, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
end)
Trigger.OnPlayerLost(greece, function()
Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.PlaySpeechNotification(greece, "MissionFailed")
end)
end)
Trigger.OnPlayerWon(greece, function()
Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.PlaySpeechNotification(greece, "MissionAccomplished")
end)
end)
Trigger.AfterDelay(DateTime.Minutes(1), function()
Media.PlaySpeechNotification(greece, "TwentyMinutesRemaining")
end)
Trigger.AfterDelay(DateTime.Minutes(11), function()
Media.PlaySpeechNotification(greece, "TenMinutesRemaining")
end)
Trigger.AfterDelay(DateTime.Minutes(16), function()
Media.PlaySpeechNotification(greece, "WarningFiveMinutesRemaining")
end)
Trigger.AfterDelay(DateTime.Minutes(18), function()
Media.PlaySpeechNotification(greece, "WarningThreeMinutesRemaining")
end)
Trigger.AfterDelay(DateTime.Minutes(20), function()
Media.PlaySpeechNotification(greece, "WarningOneMinuteRemaining")
end)
PowerProxy = Actor.Create("powerproxy.paratroopers", false, { Owner = ussr })
Camera.Position = DefaultCameraPosition.CenterPosition
TimerColor = greece.Color
Trigger.OnAnyKilled(ObjectiveBuildings, function()
greece.MarkFailedObjective(DefendChronosphere)
end)
Trigger.OnEnteredFootprint(ScientistDiscoveryFootprint, function(a, id)
if a.Owner == greece and not scientistsTriggered then
scientistsTriggered = true
Trigger.RemoveFootprintTrigger(id)
CreateScientists()
end
end)
InitialAlliedReinforcements()
ActivateAI()
end

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,988 @@
MapFormat: 11
RequiresMod: ra
Title: 08a: Protect the Chronosphere
Author: Westwood Studios
Tileset: SNOW
MapSize: 128,128
Bounds: 23,57,87,54
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
Faction: soviet
Color: FF1400
Enemies: Greece, Germany
PlayerReference@Germany:
Name: Germany
Faction: allies
Color: 505050
Enemies: USSR
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:
Actor0: brik
Location: 48,89
Owner: Greece
Actor1: brik
Location: 49,89
Owner: Greece
Actor2: brik
Location: 50,89
Owner: Greece
Actor3: brik
Location: 51,89
Owner: Greece
Actor4: brik
Location: 52,89
Owner: Greece
Actor5: brik
Location: 53,89
Owner: Greece
Actor6: brik
Location: 54,89
Owner: Greece
Actor7: brik
Location: 55,89
Owner: Greece
Actor8: brik
Location: 60,89
Owner: Greece
Actor9: brik
Location: 61,89
Owner: Greece
Actor10: brik
Location: 62,89
Owner: Greece
Actor11: brik
Location: 63,89
Owner: Greece
Actor12: brik
Location: 64,89
Owner: Greece
Actor13: brik
Location: 65,89
Owner: Greece
Actor14: brik
Location: 66,89
Owner: Greece
Actor15: brik
Location: 67,89
Owner: Greece
Actor16: brik
Location: 68,89
Owner: Greece
Actor17: brik
Location: 69,89
Owner: Greece
Actor18: brik
Location: 70,89
Owner: Greece
Actor19: brik
Location: 48,90
Owner: Greece
Actor20: brik
Location: 49,90
Owner: Greece
Actor21: brik
Location: 54,90
Owner: Greece
Actor22: brik
Location: 55,90
Owner: Greece
Actor23: brik
Location: 60,90
Owner: Greece
Actor24: brik
Location: 61,90
Owner: Greece
Actor25: brik
Location: 70,90
Owner: Greece
Actor26: brik
Location: 48,91
Owner: Greece
Actor27: brik
Location: 49,91
Owner: Greece
Actor28: brik
Location: 70,91
Owner: Greece
Actor29: brik
Location: 70,92
Owner: Greece
Actor30: brik
Location: 70,93
Owner: Greece
Actor31: brik
Location: 48,94
Owner: Greece
Actor32: brik
Location: 49,94
Owner: Greece
Actor33: brik
Location: 70,94
Owner: Greece
Actor34: brik
Location: 48,95
Owner: Greece
Actor35: brik
Location: 49,95
Owner: Greece
Actor36: brik
Location: 70,95
Owner: Greece
Actor37: brik
Location: 49,96
Owner: Greece
Actor38: brik
Location: 70,96
Owner: Greece
Actor39: brik
Location: 49,97
Owner: Greece
Actor40: brik
Location: 70,97
Owner: Greece
Actor41: brik
Location: 46,98
Owner: Greece
Actor42: brik
Location: 47,98
Owner: Greece
Actor43: brik
Location: 48,98
Owner: Greece
Actor44: brik
Location: 49,98
Owner: Greece
Actor45: brik
Location: 56,98
Owner: Greece
Actor46: brik
Location: 57,98
Owner: Greece
Actor47: brik
Location: 60,98
Owner: Greece
Actor48: brik
Location: 61,98
Owner: Greece
Actor49: brik
Location: 70,98
Owner: Greece
Actor50: brik
Location: 71,98
Owner: Greece
Actor51: brik
Location: 46,99
Owner: Greece
Actor52: brik
Location: 56,99
Owner: Greece
Actor53: brik
Location: 57,99
Owner: Greece
Actor54: brik
Location: 60,99
Owner: Greece
Actor55: brik
Location: 61,99
Owner: Greece
Actor56: brik
Location: 70,99
Owner: Greece
Actor57: brik
Location: 71,99
Owner: Greece
Actor58: brik
Location: 46,100
Owner: Greece
Actor59: brik
Location: 56,100
Owner: Greece
Actor60: brik
Location: 61,100
Owner: Greece
Actor61: brik
Location: 35,101
Owner: Greece
Actor62: brik
Location: 36,101
Owner: Greece
Actor63: brik
Location: 37,101
Owner: Greece
Actor64: brik
Location: 38,101
Owner: Greece
Actor65: brik
Location: 39,101
Owner: Greece
Actor66: brik
Location: 40,101
Owner: Greece
Actor67: brik
Location: 41,101
Owner: Greece
Actor68: brik
Location: 42,101
Owner: Greece
Actor69: brik
Location: 43,101
Owner: Greece
Actor70: brik
Location: 44,101
Owner: Greece
Actor71: brik
Location: 45,101
Owner: Greece
Actor72: brik
Location: 46,101
Owner: Greece
Actor73: brik
Location: 56,101
Owner: Greece
Actor74: brik
Location: 61,101
Owner: Greece
Actor75: brik
Location: 35,102
Owner: Greece
Actor76: brik
Location: 56,102
Owner: Greece
Actor77: brik
Location: 61,102
Owner: Greece
Actor78: brik
Location: 35,103
Owner: Greece
Actor79: brik
Location: 36,103
Owner: Greece
Actor80: brik
Location: 56,103
Owner: Greece
Actor81: brik
Location: 61,103
Owner: Greece
Actor82: brik
Location: 35,104
Owner: Greece
Actor83: brik
Location: 36,104
Owner: Greece
Actor84: brik
Location: 55,104
Owner: Greece
Actor85: brik
Location: 56,104
Owner: Greece
Actor86: brik
Location: 57,104
Owner: Greece
Actor87: brik
Location: 58,104
Owner: Greece
Actor88: brik
Location: 59,104
Owner: Greece
Actor89: brik
Location: 60,104
Owner: Greece
Actor90: brik
Location: 61,104
Owner: Greece
Actor91: brik
Location: 62,104
Owner: Greece
Actor92: brik
Location: 70,104
Owner: Greece
Actor93: brik
Location: 71,104
Owner: Greece
Actor94: brik
Location: 55,105
Owner: Greece
Actor95: brik
Location: 56,105
Owner: Greece
Actor96: brik
Location: 61,105
Owner: Greece
Actor97: brik
Location: 62,105
Owner: Greece
Actor98: brik
Location: 70,105
Owner: Greece
Actor99: brik
Location: 71,105
Owner: Greece
Actor100: brik
Location: 35,108
Owner: Greece
Actor101: brik
Location: 36,108
Owner: Greece
Actor102: brik
Location: 35,109
Owner: Greece
Actor103: brik
Location: 36,109
Owner: Greece
Actor104: brik
Location: 35,110
Owner: Greece
Actor105: t08
Location: 93,72
Owner: Neutral
Actor106: t15
Location: 82,69
Owner: Neutral
Actor107: tc05
Location: 80,71
Owner: Neutral
Actor108: tc04
Location: 88,71
Owner: Neutral
Actor109: tc03
Location: 89,70
Owner: Neutral
Actor110: tc02
Location: 86,73
Owner: Neutral
Actor111: tc02
Location: 64,63
Owner: Neutral
Actor113: tc02
Location: 70,57
Owner: Neutral
Actor114: tc04
Location: 70,60
Owner: Neutral
Actor116: tc04
Location: 93,73
Owner: Neutral
Actor117: tc05
Location: 90,72
Owner: Neutral
Actor118: tc04
Location: 81,105
Owner: Neutral
Actor119: t13
Location: 83,103
Owner: Neutral
Actor120: t06
Location: 88,105
Owner: Neutral
Actor121: t07
Location: 85,104
Owner: Neutral
Actor122: t10
Location: 85,106
Owner: Neutral
Actor123: t06
Location: 87,104
Owner: Neutral
Actor124: t05
Location: 54,87
Owner: Neutral
Actor125: t01
Location: 56,81
Owner: Neutral
Actor126: t01
Location: 61,83
Owner: Neutral
Actor127: t08
Location: 53,88
Owner: Neutral
Actor128: t08
Location: 68,87
Owner: Neutral
Actor129: t12
Location: 82,83
Owner: Neutral
Actor130: t12
Location: 69,84
Owner: Neutral
Actor131: tc04
Location: 62,84
Owner: Neutral
Actor132: tc05
Location: 82,87
Owner: Neutral
Actor133: tc05
Location: 40,61
Owner: Neutral
Actor134: t11
Location: 54,58
Owner: Neutral
Actor144: t02
Location: 53,80
Owner: Neutral
Actor145: t02
Location: 55,74
Owner: Neutral
Actor146: t15
Location: 57,75
Owner: Neutral
Actor147: tc01
Location: 46,78
Owner: Neutral
Actor148: tc01
Location: 49,87
Owner: Neutral
Actor149: tc03
Location: 54,81
Owner: Neutral
Actor150: tc04
Location: 54,76
Owner: Neutral
Actor151: t15
Location: 103,105
Owner: Neutral
Actor153: tc01
Location: 88,107
Owner: Neutral
Actor154: tc04
Location: 105,106
Owner: Neutral
Actor155: tc05
Location: 106,99
Owner: Neutral
Actor156: tc04
Location: 51,86
Owner: Neutral
Actor157: t16
Location: 34,109
Owner: Neutral
Actor158: tc04
Location: 36,64
Owner: Neutral
Actor159: tc03
Location: 33,57
Owner: Neutral
Actor160: tc02
Location: 43,66
Owner: Neutral
Actor161: tc01
Location: 52,60
Owner: Neutral
Actor162: t17
Location: 51,57
Owner: Neutral
Actor163: t16
Location: 47,62
Owner: Neutral
Actor164: t15
Location: 48,62
Owner: Neutral
Actor165: t14
Location: 63,59
Owner: Neutral
Actor166: tc03
Location: 100,57
Owner: Neutral
Actor167: tc01
Location: 80,59
Owner: Neutral
Actor168: tc05
Location: 81,57
Owner: Neutral
Actor169: tc04
Location: 66,71
Owner: Neutral
Actor170: tc03
Location: 60,66
Owner: Neutral
Actor171: tc02
Location: 60,70
Owner: Neutral
Actor172: tc05
Location: 97,80
Owner: Neutral
Actor173: tc01
Location: 97,77
Owner: Neutral
Actor174: t17
Location: 101,77
Owner: Neutral
Actor175: t16
Location: 94,80
Owner: Neutral
Actor176: t13
Location: 98,85
Owner: Neutral
Actor177: t07
Location: 23,76
Owner: Neutral
Actor178: t08
Location: 30,88
Owner: Neutral
Actor179: t14
Location: 24,89
Owner: Neutral
Actor180: tc05
Location: 23,84
Owner: Neutral
Actor181: tc04
Location: 29,80
Owner: Neutral
Actor182: tc02
Location: 47,96
Owner: Neutral
Actor183: t17
Location: 34,102
Owner: Neutral
Actor184: tc02
Location: 74,83
Owner: Neutral
Actor185: tc01
Location: 78,93
Owner: Neutral
Actor186: t08
Location: 71,97
Owner: Neutral
Actor187: t01
Location: 45,96
Owner: Neutral
Actor188: t02
Location: 45,98
Owner: Neutral
Actor189: t03
Location: 45,97
Owner: Neutral
Actor190: t06
Location: 44,97
Owner: Neutral
Actor191: t07
Location: 44,98
Owner: Neutral
Actor192: t10
Location: 42,97
Owner: Neutral
Actor193: tc03
Location: 41,99
Owner: Neutral
Actor194: t12
Location: 46,96
Owner: Neutral
Actor195: t17
Location: 43,98
Owner: Neutral
Actor196: t10
Location: 58,105
Owner: Neutral
Actor197: t12
Location: 70,105
Owner: Neutral
Actor198: t02
Location: 72,109
Owner: Neutral
Actor199: t03
Location: 69,109
Owner: Neutral
Actor200: t06
Location: 69,108
Owner: Neutral
Actor201: t07
Location: 70,108
Owner: Neutral
Actor202: t08
Location: 71,110
Owner: Neutral
Actor203: t10
Location: 68,107
Owner: Neutral
Actor204: t01
Location: 71,108
Owner: Neutral
AAGun1: agun
Location: 62,101
Owner: Greece
AAGun2: agun
Location: 55,101
Owner: Greece
Dome: dome
Location: 67,93
Owner: Greece
Health: 97
Apwr1: apwr
Location: 37,108
Owner: Greece
Apwr2: apwr
Location: 43,102
Owner: Greece
Apwr3: apwr
Location: 40,102
Owner: Greece
AlliedTechCenter: atek
Location: 58,95
Owner: Greece
Health: 99
Chronosphere: pdox
Location: 58,102
Owner: Greece
Health: 99
Gap1: gap
Location: 59,101
Owner: Greece
Health: 97
Gap2: gap
Location: 57,103
Owner: Greece
Health: 97
Gap3: gap
Location: 58,101
Owner: Greece
Health: 97
Gap4: gap
Location: 60,103
Owner: Greece
Health: 97
Gun1: gun
Location: 56,89
Owner: Greece
Health: 99
Gun2: gun
Location: 59,89
Owner: Greece
Health: 99
Gun3: gun
Location: 71,100
Owner: Greece
Health: 99
Facing: 191
Gun4: gun
Location: 71,103
Owner: Greece
Health: 99
Facing: 191
OreRef: proc
Location: 62,90
Owner: Greece
Health: 99
Apwr4: apwr
Location: 40,108
Owner: Greece
Apwr5: apwr
Location: 37,102
Owner: Greece
Apwr6: apwr
Location: 43,108
Owner: Greece
ServiceDepot: fix
Location: 51,90
Owner: Greece
Actor226: fact
Location: 88,62
Owner: USSR
Actor227: powr
Location: 89,57
Owner: USSR
Actor228: powr
Location: 91,57
Owner: USSR
Actor229: proc
Location: 98,59
Owner: USSR
Actor230: silo
Location: 98,57
Owner: USSR
Actor231: silo
Location: 99,57
Owner: USSR
USSRWarFactory: weap
Location: 92,64
Owner: USSR
Actor233: proc
Location: 93,58
Owner: USSR
Actor234: apwr
Location: 104,64
Owner: USSR
Actor235: apwr
Location: 100,65
Owner: USSR
USSRRax: barr
Location: 86,60
Owner: USSR
Actor237: tsla
Location: 83,65
Owner: USSR
Actor238: apwr
Location: 99,68
Owner: USSR
Actor239: apwr
Location: 103,67
Owner: USSR
Actor240: ftur
Location: 81,62
Owner: USSR
Actor241: ftur
Location: 85,67
Owner: USSR
Actor242: silo
Location: 99,58
Owner: USSR
Actor243: silo
Location: 99,58
Owner: USSR
Actor244: silo
Location: 98,58
Owner: USSR
Actor245: stek
Location: 91,68
Owner: USSR
Tent: tent
Location: 68,97
Owner: Greece
Actor247: dome
Location: 26,79
Owner: Germany
Health: 26
Silo1: silo
Location: 64,90
Owner: Greece
Silo2: silo
Location: 66,90
Owner: Greece
Silo3: silo
Location: 65,91
Owner: Greece
Silo4: silo
Location: 67,91
Owner: Greece
Airfield1: afld.ukraine
Location: 102,58
Owner: USSR
Airfield2: afld
Location: 106,57
Owner: USSR
Actor254: v2rl
Location: 56,69
Owner: USSR
Actor255: v2rl
Location: 52,69
Owner: USSR
Actor256: 3tnk
Location: 54,65
Owner: USSR
Actor257: 3tnk
Location: 54,63
Owner: USSR
Actor258: 3tnk
Location: 56,66
Owner: USSR
Actor259: 3tnk
Location: 56,64
Owner: USSR
Facing: 31
Actor260: 3tnk
Location: 52,66
Owner: USSR
Actor261: 2tnk
Location: 28,60
Owner: Greece
Facing: 159
Actor262: 2tnk
Location: 28,66
Owner: Greece
Facing: 191
Actor263: 2tnk
Location: 28,64
Owner: Greece
Facing: 191
Actor264: 2tnk
Location: 30,66
Owner: Greece
Facing: 223
Actor265: 1tnk
Location: 30,64
Owner: Greece
Facing: 191
Actor266: 1tnk
Location: 29,62
Owner: Greece
Facing: 191
Actor267: mnly
Location: 27,61
Owner: Greece
Facing: 191
Actor268: mnly
Location: 26,60
Owner: Greece
Facing: 191
Actor269: jeep
Location: 32,61
Owner: Greece
Facing: 223
Actor270: arty
Location: 24,66
Owner: Greece
Facing: 223
Actor271: arty
Location: 25,67
Owner: Greece
Facing: 223
Actor272: harv
Location: 65,95
Owner: Greece
Facing: 95
Actor273: e1
Location: 58,98
Owner: Greece
Facing: 31
SubCell: 4
Actor274: e1
Location: 59,98
Owner: Greece
Facing: 223
SubCell: 4
Actor275: e1
Location: 55,102
Owner: Greece
Facing: 31
SubCell: 0
Actor276: e1
Location: 62,102
Owner: Greece
Facing: 223
SubCell: 4
Actor277: e1
Location: 62,99
Owner: Greece
SubCell: 4
Actor278: e1
Location: 55,91
Owner: Greece
Facing: 191
SubCell: 0
Actor279: e1
Location: 54,103
Owner: Greece
SubCell: 4
Actor280: e1
Location: 55,99
Owner: Greece
Facing: 31
SubCell: 0
Actor281: e1
Location: 61,91
Owner: Greece
Facing: 31
SubCell: 0
Actor282: e1
Location: 63,104
Owner: Greece
SubCell: 2
Actor283: e1
Location: 57,101
Owner: Greece
SubCell: 1
Actor284: e1
Location: 60,101
Owner: Greece
SubCell: 1
MCVEntry: waypoint
Location: 23,64
Owner: Neutral
MCVStop: waypoint
Location: 26,64
Owner: Neutral
DDStop: waypoint
Location: 30,71
Owner: Neutral
waypoint6: waypoint
Location: 41,109
Owner: Neutral
waypoint9: waypoint
Location: 89,63
Owner: Neutral
DDEntry: waypoint
Location: 23,71
Owner: Neutral
WaterEntry2: waypoint
Location: 23,99
Owner: Neutral
ParaLZ1: waypoint
Location: 29,106
Owner: Neutral
ParaLZ2: waypoint
Owner: Neutral
Location: 47,84
ParaLZ3: waypoint
Location: 66,77
Owner: Neutral
ParaLZ4: waypoint
Owner: Neutral
Location: 77,88
ParaLZ5: waypoint
Location: 91,95
Owner: Neutral
SovEntry3: waypoint
Location: 109,110
Owner: Neutral
SovEntry1: waypoint
Location: 86,57
Owner: Neutral
WaterLanding1: waypoint
Location: 51,71
Owner: Neutral
WaterLanding2: waypoint
Location: 45,93
Owner: Neutral
SovEntry2: waypoint
Location: 109,72
Owner: Neutral
WaterLanding3: waypoint
Location: 25,101
Owner: Neutral
DefaultCameraPosition: waypoint
Location: 29,63
Owner: Neutral
ScientistsExit: waypoint
Owner: Neutral
Location: 26,80
AttackChrono: waypoint
Owner: Neutral
Location: 59,103
ChronoshiftLocation: waypoint
Owner: Neutral
Location: 58,86
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml

View File

@@ -0,0 +1,121 @@
Player:
PlayerResources:
DefaultCash: 15000
World:
LuaScript:
Scripts: allies08a.lua, allies08a-AI.lua
MissionData:
Briefing: Our latest technology, the Chronosphere, is housed in this research station. The timer represents the appointed time for the completion of a vital experiment. The Soviets have learned of this and are moving in. \n\nProtect the Chronosphere and the Advanced-Tech research center. Make sure the base is fully powered at the appointed time. If not, all will be lost!
BriefingVideo: ally8.vqa
WinVideo: crontest.vqa
LossVideo: cronfail.vqa
StartVideo: aagun.vqa
ScriptLobbyDropdown@difficulty:
ID: difficulty
Label: Difficulty
Values:
easy: Easy
normal: Normal
hard: Hard
Default: easy
powerproxy.paratroopers:
ParatroopersPower:
DropItems: E1,E1,E1,E2,E2
MCV:
Buildable:
Prerequisites: ~disabled
TRUK:
Buildable:
Prerequisites: ~disabled
FTRK:
Buildable:
Prerequisites: ~disabled
APC:
Buildable:
Prerequisites: ~disabled
MRJ:
Buildable:
Prerequisites: ~disabled
3TNK:
Buildable:
Prerequisites: ~vehicles.soviet
V2RL:
Buildable:
Prerequisites: ~vehicles.soviet
4TNK:
Buildable:
Prerequisites: ~vehicles.soviet
QTNK:
Buildable:
Prerequisites: ~disabled
HPAD:
Buildable:
Prerequisites: ~disabled
AFLD.Ukraine:
-AirstrikePower@spyplane:
CHAN:
Infiltrates:
Types: Mission Objectives
ATEK:
Buildable:
Prerequisites: ~disabled
GpsPower:
ChargeInterval: 15000
Targetable:
TargetTypes: Ground, C4, DetonateAttack, Structure, Mission Objectives
-Sellable:
PDOX:
Inherits@IDISABLE: ^DisableOnLowPower
Buildable:
Prerequisites: ~disabled
ChronoshiftPower@chronoshift:
Prerequisites: ~disabled
-Sellable:
IRON:
Buildable:
Prerequisites: ~disabled
MSLO:
Buildable:
Prerequisites: ~disabled
MECH:
Buildable:
Prerequisites: ~disabled
HIJACKER:
Buildable:
Prerequisites: ~disabled
E7:
Buildable:
Prerequisites: ~disabled
E7.noautotarget:
Buildable:
Prerequisites: ~disabled
CA:
Buildable:
Prerequisites: ~disabled
MSUB:
Buildable:
Prerequisites: ~disabled

View File

@@ -8,6 +8,7 @@ Allied Campaign:
./mods/ra/maps/allies-06a
./mods/ra/maps/allies-06b
./mods/ra/maps/allies-07
./mods/ra/maps/allies-08a
Soviet Campaign:
./mods/ra/maps/soviet-01
./mods/ra/maps/soviet-02a