diff --git a/OpenRA.Mods.Common/Effects/Beacon.cs b/OpenRA.Mods.Common/Effects/Beacon.cs
index dd849486d5..4f1de0ac5c 100644
--- a/OpenRA.Mods.Common/Effects/Beacon.cs
+++ b/OpenRA.Mods.Common/Effects/Beacon.cs
@@ -55,7 +55,7 @@ namespace OpenRA.Mods.Common.Effects
}
if (duration > 0)
- owner.World.Add(new DelayedAction(duration, () => owner.World.Remove(this)));
+ owner.World.AddFrameEndTask(w => w.Add(new DelayedAction(duration, () => owner.World.Remove(this))));
}
// Support power beacons are expected to clean themselves up
diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
index 480cd2fdf8..0ca80cb6c1 100644
--- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
+++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
@@ -245,6 +245,7 @@
+
diff --git a/OpenRA.Mods.Common/Scripting/Global/UtilsGlobal.cs b/OpenRA.Mods.Common/Scripting/Global/UtilsGlobal.cs
index 50ca3e5add..b5177936cc 100644
--- a/OpenRA.Mods.Common/Scripting/Global/UtilsGlobal.cs
+++ b/OpenRA.Mods.Common/Scripting/Global/UtilsGlobal.cs
@@ -93,6 +93,12 @@ namespace OpenRA.Mods.Common.Scripting
return collection.Random(Context.World.SharedRandom).CopyReference();
}
+ [Desc("Returns the collection in a random order.")]
+ public LuaValue[] Shuffle(LuaValue[] collection)
+ {
+ return collection.Shuffle(Context.World.SharedRandom).ToArray();
+ }
+
[Desc("Expands the given footprint one step along the coordinate axes, and (if requested) diagonals.")]
public CPos[] ExpandFootprint(CPos[] footprint, bool allowDiagonal)
{
diff --git a/OpenRA.Mods.Common/Scripting/Properties/AirstrikeProperties.cs b/OpenRA.Mods.Common/Scripting/Properties/AirstrikeProperties.cs
index ccd5159c12..d4d1c38faa 100644
--- a/OpenRA.Mods.Common/Scripting/Properties/AirstrikeProperties.cs
+++ b/OpenRA.Mods.Common/Scripting/Properties/AirstrikeProperties.cs
@@ -32,5 +32,14 @@ namespace OpenRA.Mods.Common.Scripting
{
ap.SendAirstrike(Self, target, randomize, facing);
}
+
+ [Desc("Activate the actor's Airstrike Power.")]
+ public void SendAirstrikeFrom(CPos from, CPos to)
+ {
+ var i = Self.World.Map.CenterOfCell(from);
+ var j = Self.World.Map.CenterOfCell(to);
+
+ ap.SendAirstrike(Self, j, false, (i - j).Yaw.Facing);
+ }
}
}
\ No newline at end of file
diff --git a/OpenRA.Mods.Common/Scripting/Properties/MissionObjectiveProperties.cs b/OpenRA.Mods.Common/Scripting/Properties/MissionObjectiveProperties.cs
index 521aa3b5f3..7ce1dde2b3 100644
--- a/OpenRA.Mods.Common/Scripting/Properties/MissionObjectiveProperties.cs
+++ b/OpenRA.Mods.Common/Scripting/Properties/MissionObjectiveProperties.cs
@@ -12,11 +12,12 @@
using Eluant;
using OpenRA.Mods.Common.Traits;
using OpenRA.Scripting;
+using OpenRA.Traits;
namespace OpenRA.Mods.Common.Scripting
{
[ScriptPropertyGroup("MissionObjectives")]
- public class MissionObjectiveProperties : ScriptPlayerProperties
+ public class MissionObjectiveProperties : ScriptPlayerProperties, Requires
{
readonly MissionObjectives mo;
diff --git a/OpenRA.Mods.Common/Scripting/Properties/PlayerStatsProperties.cs b/OpenRA.Mods.Common/Scripting/Properties/PlayerStatsProperties.cs
new file mode 100644
index 0000000000..3e3b35e7f4
--- /dev/null
+++ b/OpenRA.Mods.Common/Scripting/Properties/PlayerStatsProperties.cs
@@ -0,0 +1,48 @@
+#region Copyright & License Information
+/*
+ * Copyright 2007-2016 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.
+ */
+#endregion
+
+using Eluant;
+using OpenRA.Mods.Common.Traits;
+using OpenRA.Scripting;
+using OpenRA.Traits;
+
+namespace OpenRA.Mods.Common.Scripting
+{
+ [ScriptPropertyGroup("Player")]
+ public class PlayerStatsProperties : ScriptPlayerProperties, Requires
+ {
+ readonly PlayerStatistics stats;
+
+ public PlayerStatsProperties(ScriptContext context, Player player)
+ : base(context, player)
+ {
+ stats = player.PlayerActor.Trait();
+ }
+
+ [Desc("The combined value of units killed by this player.")]
+ public int KillsCost { get { return stats.KillsCost; } }
+
+ [Desc("The combined value of all units lost by this player.")]
+ public int DeathsCost { get { return stats.DeathsCost; } }
+
+ [Desc("The total number of units killed by this player.")]
+ public int UnitsKilled { get { return stats.UnitsKilled; } }
+
+ [Desc("The total number of units lost by this player.")]
+ public int UnitsLost { get { return stats.UnitsDead; } }
+
+ [Desc("The total number of buildings killed by this player.")]
+ public int BuildingsKilled { get { return stats.BuildingsKilled; } }
+
+ [Desc("The total number of buildings lost by this player.")]
+ public int BuildingsLost { get { return stats.BuildingsDead; } }
+ }
+}
\ No newline at end of file
diff --git a/OpenRA.Mods.Common/Traits/Player/MissionObjectives.cs b/OpenRA.Mods.Common/Traits/Player/MissionObjectives.cs
index 074079546c..4def486404 100644
--- a/OpenRA.Mods.Common/Traits/Player/MissionObjectives.cs
+++ b/OpenRA.Mods.Common/Traits/Player/MissionObjectives.cs
@@ -214,8 +214,13 @@ namespace OpenRA.Mods.Common.Traits
}
if (Info.EarlyGameOver)
+ {
foreach (var p in enemies)
- p.PlayerActor.Trait().ForceDefeat(p);
+ {
+ p.WinState = WinState.Won;
+ p.World.OnPlayerWinStateChanged(p);
+ }
+ }
}
}
else
@@ -224,11 +229,13 @@ namespace OpenRA.Mods.Common.Traits
player.World.OnPlayerWinStateChanged(player);
if (Info.EarlyGameOver)
+ {
foreach (var p in enemies)
{
p.WinState = WinState.Won;
p.World.OnPlayerWinStateChanged(p);
}
+ }
}
CheckIfGameIsOver(player);
diff --git a/OpenRA.Mods.RA/Scripting/Properties/ParatroopersProperties.cs b/OpenRA.Mods.RA/Scripting/Properties/ParatroopersProperties.cs
index d46605832c..62db33c119 100644
--- a/OpenRA.Mods.RA/Scripting/Properties/ParatroopersProperties.cs
+++ b/OpenRA.Mods.RA/Scripting/Properties/ParatroopersProperties.cs
@@ -32,5 +32,14 @@ namespace OpenRA.Mods.RA.Scripting
{
return pp.SendParatroopers(Self, target, randomize, facing);
}
+
+ [Desc("Activate the actor's Paratroopers Power. Returns the dropped units.")]
+ public Actor[] SendParatroopersFrom(CPos from, CPos to)
+ {
+ var i = Self.World.Map.CenterOfCell(from);
+ var j = Self.World.Map.CenterOfCell(to);
+
+ return pp.SendParatroopers(Self, j, false, (i - j).Yaw.Facing);
+ }
}
}
\ No newline at end of file
diff --git a/OpenRA.sln b/OpenRA.sln
index 19812fda1a..bc518274b1 100644
--- a/OpenRA.sln
+++ b/OpenRA.sln
@@ -71,6 +71,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Red Alert Lua scripts", "Re
mods\ra\maps\fort-lonestar\fort-lonestar.lua = mods\ra\maps\fort-lonestar\fort-lonestar.lua
mods\ra\maps\intervention\intervention.lua = mods\ra\maps\intervention\intervention.lua
mods\ra\maps\monster-tank-madness\monster-tank-madness.lua = mods\ra\maps\monster-tank-madness\monster-tank-madness.lua
+ mods\ra\maps\evacuation\evacuation.lua = mods\ra\maps\evacuation\evacuation.lua
mods\ra\maps\soviet-01\soviet01.lua = mods\ra\maps\soviet-01\soviet01.lua
mods\ra\maps\soviet-02a\soviet02a.lua = mods\ra\maps\soviet-02a\soviet02a.lua
mods\ra\maps\soviet-02b\soviet02b.lua = mods\ra\maps\soviet-02b\soviet02b.lua
diff --git a/mods/ra/maps/evacuation/evacuation.lua b/mods/ra/maps/evacuation/evacuation.lua
new file mode 100644
index 0000000000..72634e0587
--- /dev/null
+++ b/mods/ra/maps/evacuation/evacuation.lua
@@ -0,0 +1,363 @@
+DeathThreshold =
+{
+ Easy = 200,
+ Normal = 100,
+}
+
+TanyaType = "e7"
+TanyaStance = "AttackAnything"
+if Map.Difficulty ~= "Easy" then
+ TanyaType = "e7.noautotarget"
+ TanyaStance = "HoldFire"
+end
+
+RepairTriggerThreshold =
+{
+ Easy = 50,
+ Normal = 75,
+}
+
+Sams = { Sam1, Sam2, Sam3, Sam4 }
+TownUnits =
+{
+ Einstein, Engineer,
+ TownUnit01, TownUnit02, TownUnit03, TownUnit04, TownUnit05, TownUnit06, TownUnit07,
+ TownUnit08, TownUnit09, TownUnit10, TownUnit11, TownUnit12, TownUnit13, TownUnit14,
+}
+
+ParabombDelay = DateTime.Seconds(30)
+ParatroopersDelay = DateTime.Minutes(5)
+Paratroopers =
+{
+ {
+ proxy = "powerproxy.paras1",
+ entry = BadgerEntryPoint1.Location,
+ drop = BadgerDropPoint1.Location,
+ },
+ {
+ proxy = "powerproxy.paras2",
+ entry = BadgerEntryPoint1.Location + CVec.New(3, 0),
+ drop = BadgerDropPoint2.Location,
+ },
+ {
+ proxy = "powerproxy.paras2",
+ entry = BadgerEntryPoint1.Location + CVec.New(6, 0),
+ drop = BadgerDropPoint3.Location,
+ },
+}
+
+AttackGroup = { }
+AttackGroupSize = 5
+SovietInfantry = { "e1", "e2", "e3" }
+SovietVehiclesUpgradeDelay = DateTime.Minutes(4)
+SovietVehicleType = "Normal"
+SovietVehicles =
+{
+ Normal = { "3tnk" },
+ Upgraded = { "3tnk", "v2rl" },
+}
+ProductionInterval =
+{
+ Easy = DateTime.Seconds(10),
+ Normal = DateTime.Seconds(2),
+}
+
+ReinforcementsDelay = DateTime.Minutes(16)
+ReinforcementsUnits = { "2tnk", "2tnk", "2tnk", "2tnk", "2tnk", "2tnk", "1tnk", "1tnk", "jeep", "e1",
+ "e1", "e1", "e1", "e3", "e3", "mcv", "truk", "truk", "truk", "truk", "truk", "truk" }
+
+SpawnAlliedReinforcements = function()
+ if allies2.IsLocalPlayer then
+ UserInterface.SetMissionText("")
+ Media.PlaySpeechNotification(allies2, "AlliedReinforcementsArrived")
+ end
+ Reinforcements.Reinforce(allies2, ReinforcementsUnits, { ReinforcementsEntryPoint.Location, Allies2BasePoint.Location })
+end
+
+Yak = nil
+YakAttack = function(yak)
+ local targets = Map.ActorsInCircle(YakAttackPoint.CenterPosition, WDist.FromCells(10), function(a)
+ return a.Owner == allies1 and not a.IsDead and a ~= Einstein and a ~= Tanya and a ~= Engineer
+ end)
+
+ if (#targets > 0) then
+ yak.Attack(Utils.Random(targets))
+ end
+ yak.Move(Map.ClosestEdgeCell(yak.Location))
+ yak.Destroy()
+ Trigger.OnRemovedFromWorld(Yak, function()
+ Yak = nil
+ end)
+end
+
+SovietTownAttack = function()
+ local units = Utils.Shuffle(Utils.Where(Map.ActorsWithTag("TownAttacker"), function(a) return not a.IsDead end))
+
+ Utils.Do(Utils.Take(5, units), function(unit)
+ unit.AttackMove(TownPoint.Location)
+ Trigger.OnIdle(unit, unit.Hunt)
+ end)
+end
+
+SendParabombs = function()
+ local proxy = Actor.Create("powerproxy.parabombs", false, { Owner = soviets })
+ proxy.SendAirstrikeFrom(BadgerEntryPoint2.Location, ParabombPoint1.Location)
+ proxy.SendAirstrikeFrom(BadgerEntryPoint2.Location + CVec.New(0, 3), ParabombPoint2.Location)
+ proxy.Destroy()
+end
+
+SendParatroopers = function()
+ Utils.Do(Paratroopers, function(para)
+ local proxy = Actor.Create(para.proxy, false, { Owner = soviets })
+ local units = proxy.SendParatroopersFrom(para.entry, para.drop)
+ proxy.Destroy()
+
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function(a)
+ if a.IsInWorld then
+ a.Hunt()
+ end
+ end)
+ end)
+ end)
+end
+
+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 SovietBarracks.IsDead or SovietBarracks.Owner ~= soviets then
+ return
+ end
+
+ soviets.Build({ Utils.Random(SovietInfantry) }, function(units)
+ table.insert(AttackGroup, units[1])
+ SendAttackGroup()
+ Trigger.AfterDelay(ProductionInterval[Map.Difficulty], ProduceInfantry)
+ end)
+end
+
+ProduceVehicles = function()
+ if SovietWarFactory.IsDead or SovietWarFactory.Owner ~= soviets then
+ return
+ end
+
+ soviets.Build({ Utils.Random(SovietVehicles[SovietVehicleType]) }, function(units)
+ table.insert(AttackGroup, units[1])
+ SendAttackGroup()
+ Trigger.AfterDelay(ProductionInterval[Map.Difficulty], ProduceVehicles)
+ end)
+end
+
+NumBaseBuildings = function()
+ local buildings = Map.ActorsInBox(AlliedBaseTopLeft.CenterPosition, AlliedBaseBottomRight.CenterPosition, function(a)
+ return not a.IsDead and a.Owner == allies2 and a.HasProperty("StartBuildingRepairs")
+ end)
+
+ return #buildings
+end
+
+Tick = function()
+ if DateTime.GameTime > 1 and DateTime.GameTime % 25 == 0 and NumBaseBuildings() == 0 then
+ allies2.MarkFailedObjective(objHoldPosition)
+ end
+
+ if not allies2.IsObjectiveCompleted(objCutSovietPower) and soviets.PowerState ~= "Normal" then
+ allies2.MarkCompletedObjective(objCutSovietPower)
+ end
+
+ if not allies2.IsObjectiveCompleted(objLimitLosses) and allies2.UnitsLost > DeathThreshold[Map.Difficulty] then
+ allies2.MarkFailedObjective(objLimitLosses)
+ end
+
+ if allies2.IsLocalPlayer and DateTime.GameTime <= ReinforcementsDelay then
+ UserInterface.SetMissionText("Allied reinforcements arrive in " .. Utils.FormatTime(ReinforcementsDelay - DateTime.GameTime))
+ else
+ UserInterface.SetMissionText("")
+ end
+end
+
+SetupSoviets = function()
+ soviets.Cash = 1000
+
+ if Map.Difficulty == "Easy" then
+ Utils.Do(Sams, function(sam)
+ local camera = Actor.Create("Camera.SAM", true, { Owner = allies1, Location = sam.Location })
+ Trigger.OnKilledOrCaptured(sam, function()
+ camera.Destroy()
+ end)
+ end)
+ end
+
+ local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == soviets and self.HasProperty("StartBuildingRepairs") end)
+ Utils.Do(buildings, function(actor)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == soviets and building.Health < (building.MaxHealth * RepairTriggerThreshold[Map.Difficulty] / 100) then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end)
+
+ SovietBarracks.IsPrimaryBuilding = true
+ SovietBarracks.RallyPoint = SovietRallyPoint.Location
+ SovietWarFactory.IsPrimaryBuilding = true
+ SovietWarFactory.RallyPoint = SovietRallyPoint.Location
+
+ Trigger.AfterDelay(SovietVehiclesUpgradeDelay, function() SovietVehicleType = "Upgraded" end)
+ Trigger.AfterDelay(0, function()
+ ProduceInfantry()
+ ProduceVehicles()
+ end)
+end
+
+SetupTriggers = function()
+ Trigger.OnKilled(Tanya, function()
+ allies1.MarkFailedObjective(objTanyaMustSurvive)
+ end)
+
+ Trigger.OnAllKilledOrCaptured(Sams, function()
+ allies1.MarkCompletedObjective(objDestroySamSites)
+ objExtractEinstein = allies1.AddPrimaryObjective("Wait for a helicopter at the LZ and extract Einstein.")
+ Actor.Create("flare", true, { Owner = allies1, Location = ExtractionLZ.Location + CVec.New(1, -1) })
+ Beacon.New(allies1, ExtractionLZ.CenterPosition)
+ Media.PlaySpeechNotification(allies1, "SignalFlareNorth")
+
+ ExtractionHeli = Reinforcements.ReinforceWithTransport(allies1, "tran", nil, { ExtractionLZEntryPoint.Location, ExtractionLZ.Location })[1]
+ Trigger.OnKilled(ExtractionHeli, function()
+ allies1.MarkFailedObjective(objExtractEinstein)
+ end)
+ Trigger.OnPassengerEntered(ExtractionHeli, function(heli, passenger)
+ if passenger == Einstein then
+ heli.Move(ExtractionLZEntryPoint.Location)
+ heli.Destroy()
+ Trigger.OnRemovedFromWorld(heli, function()
+ allies2.MarkCompletedObjective(objLimitLosses)
+ allies2.MarkCompletedObjective(objHoldPosition)
+ allies1.MarkCompletedObjective(objTanyaMustSurvive)
+ allies1.MarkCompletedObjective(objEinsteinSurvival)
+ allies1.MarkCompletedObjective(objExtractEinstein)
+ end)
+ end
+ end)
+ end)
+
+ Trigger.OnEnteredProximityTrigger(TownPoint.CenterPosition, WDist.FromCells(15), function(actor, trigger)
+ if actor.Owner == allies1 then
+ ReassignActors(TownUnits, neutral, allies1)
+ Utils.Do(TownUnits, function(a) a.Stance = "Defend" end)
+ allies1.MarkCompletedObjective(objFindEinstein)
+ objEinsteinSurvival = allies1.AddPrimaryObjective("Keep Einstein alive at all costs.")
+ Trigger.OnKilled(Einstein, function()
+ allies1.MarkFailedObjective(objEinsteinSurvival)
+ end)
+ Trigger.RemoveProximityTrigger(trigger)
+ SovietTownAttack()
+ end
+ end)
+
+ Trigger.OnEnteredProximityTrigger(YakAttackPoint.CenterPosition, WDist.FromCells(5), function(actor, trigger)
+ if not (Yak == nil or Yak.IsDead) or actor.Owner ~= allies1 then
+ return
+ end
+
+ Yak = Reinforcements.Reinforce(soviets, { "yak" }, { YakEntryPoint.Location, YakAttackPoint.Location + CVec.New(0, -10) }, 0, YakAttack)[1]
+ end)
+
+ Trigger.AfterDelay(ParabombDelay, SendParabombs)
+ Trigger.AfterDelay(ParatroopersDelay, SendParatroopers)
+ Trigger.AfterDelay(ReinforcementsDelay, SpawnAlliedReinforcements)
+end
+
+SpawnTanya = function()
+ Tanya = Actor.Create(TanyaType, true, { Owner = allies1, Location = TanyaLocation.Location })
+ Tanya.Stance = TanyaStance
+
+ if Map.Difficulty ~= "Easy" and allies1.IsLocalPlayer then
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya")
+ end)
+ end
+end
+
+ReassignActors = function(actors, from, to)
+ Utils.Do(actors, function(a)
+ if a.Owner == from then
+ a.Owner = to
+ a.Stance = "Defend"
+ end
+ end)
+end
+
+WorldLoaded = function()
+ neutral = Player.GetPlayer("Neutral")
+
+ -- Allies is the pre-set owner of units that get assigned to either the second player, if any, or the first player otherwise.
+ allies = Player.GetPlayer("Allies")
+
+ -- Allies1 is the player starting on the right, controlling Tanya
+ allies1 = Player.GetPlayer("Allies1")
+
+ -- Allies2 is the player starting on the left, defending the base
+ allies2 = Player.GetPlayer("Allies2")
+
+ soviets = Player.GetPlayer("Soviets")
+
+ Utils.Do({ allies1, allies2 }, function(player)
+ if player and player.IsLocalPlayer then
+ 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")
+ end)
+
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+ end
+ end)
+
+ if not allies2 or allies2.IsLocalPlayer then
+ Camera.Position = Allies2BasePoint.CenterPosition
+ else
+ Camera.Position = ChinookHusk.CenterPosition
+ end
+
+ if not allies2 then
+ allies2 = allies1
+ end
+
+ ReassignActors(Map.ActorsInWorld, allies, allies2)
+ SpawnTanya()
+
+ objTanyaMustSurvive = allies1.AddPrimaryObjective("Tanya must survive.")
+ objFindEinstein = allies1.AddPrimaryObjective("Find Einstein's crashed helicopter.")
+ objDestroySamSites = allies1.AddPrimaryObjective("Destroy the SAM sites.")
+
+ objHoldPosition = allies2.AddPrimaryObjective("Hold your position and protect the base.")
+ objLimitLosses = allies2.AddSecondaryObjective("Do not lose more than " .. DeathThreshold[Map.Difficulty] .. " units.")
+ objCutSovietPower = allies2.AddSecondaryObjective("Take out the Soviet power grid.")
+
+ SetupTriggers()
+ SetupSoviets()
+end
\ No newline at end of file
diff --git a/mods/ra/maps/evacuation/map.bin b/mods/ra/maps/evacuation/map.bin
new file mode 100644
index 0000000000..45e732c549
Binary files /dev/null and b/mods/ra/maps/evacuation/map.bin differ
diff --git a/mods/ra/maps/evacuation/map.png b/mods/ra/maps/evacuation/map.png
new file mode 100644
index 0000000000..29bfd56141
Binary files /dev/null and b/mods/ra/maps/evacuation/map.png differ
diff --git a/mods/ra/maps/evacuation/map.yaml b/mods/ra/maps/evacuation/map.yaml
new file mode 100644
index 0000000000..480e45284a
--- /dev/null
+++ b/mods/ra/maps/evacuation/map.yaml
@@ -0,0 +1,1757 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Evacuation
+
+Author: Scott_NZ
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 16,16,96,96
+
+Visibility: MissionSelector, Lobby
+
+Categories: Mission, Cooperative Mission
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Allies1:
+ Name: Allies1
+ AllowBots: False
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: ABB7E4
+ LockSpawn: True
+ LockTeam: True
+ Allies: Allies2, Allies
+ Enemies: Soviets
+ PlayerReference@Allies2:
+ Name: Allies2
+ AllowBots: False
+ Playable: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: A1EF8C
+ LockSpawn: True
+ LockTeam: True
+ Allies: Allies1, Allies
+ Enemies: Soviets
+ PlayerReference@Allies:
+ Name: Allies
+ Faction: allies
+ NonCombatant: True
+ Color: 5CC1A3
+ Allies: Allies1, Allies2
+ Enemies: Soviets
+ PlayerReference@Soviets:
+ Name: Soviets
+ Faction: soviet
+ Color: FE1100
+ Enemies: Allies1, Allies2, Allies
+
+Actors:
+ Actor1: v07
+ Location: 71,91
+ Owner: Neutral
+ Actor2: v04
+ Location: 77,90
+ Owner: Neutral
+ Actor3: v03
+ Location: 66,90
+ Owner: Neutral
+ Actor4: v02
+ Location: 73,94
+ Owner: Neutral
+ Actor5: v01
+ Location: 77,94
+ Owner: Neutral
+ Actor6: v07
+ Location: 77,87
+ Owner: Neutral
+ Actor7: v09
+ Location: 61,95
+ Owner: Neutral
+ Actor8: v08
+ Location: 60,91
+ Owner: Neutral
+ Actor15: t16
+ Location: 60,104
+ Owner: Neutral
+ Actor33: t06
+ Location: 59,95
+ Owner: Neutral
+ Actor11: wood
+ Location: 68,100
+ Owner: Neutral
+ Actor12: v05
+ Location: 72,87
+ Owner: Neutral
+ Actor20: t05
+ Location: 74,76
+ Owner: Neutral
+ Actor10: tc03
+ Location: 60,99
+ Owner: Neutral
+ Actor16: wood
+ Location: 67,100
+ Owner: Neutral
+ Actor17: wood
+ Location: 66,100
+ Owner: Neutral
+ Actor18: wood
+ Location: 66,99
+ Owner: Neutral
+ Actor19: wood
+ Location: 66,98
+ Owner: Neutral
+ Actor29: wood
+ Location: 65,96
+ Owner: Neutral
+ Actor13: t06
+ Location: 65,82
+ Owner: Neutral
+ Actor22: v08
+ Location: 83,94
+ Owner: Neutral
+ Actor23: v04
+ Location: 64,93
+ Owner: Neutral
+ Actor24: v04
+ Location: 83,91
+ Owner: Neutral
+ Actor25: tc04
+ Location: 93,86
+ Owner: Neutral
+ Actor26: v12
+ Location: 79,91
+ Owner: Neutral
+ Actor31: wood
+ Location: 63,96
+ Owner: Neutral
+ Actor30: wood
+ Location: 64,96
+ Owner: Neutral
+ Actor194: sbag
+ Location: 94,50
+ Owner: Soviets
+ Actor27: wood
+ Location: 66,97
+ Owner: Neutral
+ Actor14: tc05
+ Location: 59,101
+ Owner: Neutral
+ Actor28: wood
+ Location: 66,96
+ Owner: Neutral
+ Actor9: t12
+ Location: 59,98
+ Owner: Neutral
+ Actor34: t14
+ Location: 68,98
+ Owner: Neutral
+ Actor35: t11
+ Location: 71,89
+ Owner: Neutral
+ Actor36: t15
+ Location: 83,95
+ Owner: Neutral
+ Actor115: fenc
+ Location: 100,99
+ Owner: Soviets
+ Actor38: t14
+ Location: 89,97
+ Owner: Neutral
+ Actor39: t15
+ Location: 84,108
+ Owner: Neutral
+ Actor41: t01
+ Location: 71,80
+ Owner: Neutral
+ Actor43: t02
+ Location: 79,102
+ Owner: Neutral
+ Actor132: fenc
+ Location: 100,100
+ Owner: Soviets
+ Actor45: tc04
+ Location: 64,108
+ Owner: Neutral
+ Actor46: tc01
+ Location: 64,105
+ Owner: Neutral
+ Actor47: t07
+ Location: 77,107
+ Owner: Neutral
+ Actor48: t05
+ Location: 92,80
+ Owner: Neutral
+ Actor49: t03
+ Location: 87,88
+ Owner: Neutral
+ Actor50: t06
+ Location: 96,82
+ Owner: Neutral
+ Actor669: fenc
+ Location: 95,79
+ Owner: Soviets
+ Actor135: tc05
+ Location: 106,109
+ Owner: Neutral
+ Actor58: t06
+ Location: 85,105
+ Owner: Neutral
+ Actor125: e2
+ Location: 99,86
+ Owner: Soviets
+ Actor599: tc01
+ Location: 70,32
+ Owner: Neutral
+ Actor62: t12
+ Location: 96,79
+ Owner: Neutral
+ Actor66: t17
+ Location: 85,71
+ Owner: Neutral
+ Actor65: t14
+ Location: 89,70
+ Owner: Neutral
+ Actor87: t03
+ Location: 69,34
+ Owner: Neutral
+ Actor598: t08
+ Location: 71,31
+ Owner: Neutral
+ Actor154: e1
+ Location: 105,95
+ Owner: Soviets
+ Actor149: sbag
+ Location: 92,50
+ Owner: Soviets
+ Actor99: e1
+ Location: 82,72
+ Owner: Soviets
+ Actor75: t06
+ Location: 73,64
+ Owner: Neutral
+ Actor76: t14
+ Location: 71,71
+ Owner: Neutral
+ Actor77: tc04
+ Location: 93,96
+ Owner: Neutral
+ Actor95: fenc
+ Location: 83,71
+ Owner: Soviets
+ Actor642: t10
+ Location: 66,29
+ Owner: Neutral
+ Actor603: fenc
+ Location: 84,71
+ Owner: Soviets
+ Actor85: medi
+ Location: 110,86
+ Owner: Allies1
+ Actor88: t07
+ Location: 93,80
+ Owner: Neutral
+ Actor469: e2
+ Location: 97,20
+ Owner: Soviets
+ Actor438: fenc
+ Location: 88,19
+ Owner: Soviets
+ Actor56: e1
+ Location: 78,74
+ Owner: Soviets
+ Actor549: t16
+ Location: 111,50
+ Owner: Neutral
+ Actor242: fenc
+ Location: 88,50
+ Owner: Soviets
+ Actor104: t10
+ Location: 107,46
+ Owner: Neutral
+ Actor163: e2
+ Location: 109,96
+ Owner: Soviets
+ Actor90: t02
+ Location: 90,72
+ Owner: Neutral
+ Actor106: fenc
+ Location: 111,94
+ Owner: Soviets
+ Actor590: e1
+ Location: 102,97
+ Owner: Soviets
+ Actor64: e1
+ Location: 96,93
+ Owner: Soviets
+ Actor169: v2rl
+ Location: 53,20
+ Owner: Soviets
+ Actor122: e1
+ Location: 89,66
+ Owner: Soviets
+ Actor137: t01
+ Location: 111,92
+ Owner: Neutral
+ Actor98: fenc
+ Location: 109,93
+ Owner: Soviets
+ Actor105: fenc
+ Location: 110,94
+ Owner: Soviets
+ Actor146: t16
+ Location: 62,85
+ Owner: Neutral
+ Actor159: brl3
+ Location: 93,64
+ Owner: Soviets
+ Actor160: tc05
+ Location: 15,108
+ Owner: Neutral
+ Actor155: t05
+ Location: 110,40
+ Owner: Neutral
+ Actor157: tc05
+ Location: 91,36
+ Owner: Neutral
+ Actor330: oilb
+ Location: 65,31
+ Owner: Neutral
+ Actor114: fenc
+ Location: 100,98
+ Owner: Soviets
+ Actor136: t15
+ Location: 110,103
+ Owner: Neutral
+ Actor226: fenc
+ Location: 97,39
+ Owner: Soviets
+ Actor113: fenc
+ Location: 100,97
+ Owner: Soviets
+ Actor110: fenc
+ Location: 98,97
+ Owner: Soviets
+ Actor152: t01
+ Location: 109,39
+ Owner: Neutral
+ Actor439: fenc
+ Location: 88,18
+ Owner: Soviets
+ Actor127: fenc
+ Location: 109,101
+ Owner: Soviets
+ Actor153: t08
+ Location: 108,58
+ Owner: Neutral
+ Actor130: e1
+ Location: 100,77
+ Owner: Soviets
+ Actor118: fenc
+ Location: 109,102
+ Owner: Soviets
+ Actor158: t07
+ Location: 110,48
+ Owner: Neutral
+ Actor126: t03
+ Location: 107,79
+ Owner: Neutral
+ Actor143: dome
+ Location: 102,74
+ Owner: Soviets
+ Actor156: e1
+ Location: 98,72
+ Owner: Soviets
+ Actor142: e2
+ Location: 101,69
+ Owner: Soviets
+ Actor247: silo
+ Location: 39,33
+ Owner: Soviets
+ Actor61: tc05
+ Location: 87,109
+ Owner: Neutral
+ Actor174: t06
+ Location: 51,78
+ Owner: Neutral
+ Actor711: e1
+ Location: 74,36
+ Owner: Soviets
+ Actor306: apwr
+ Location: 54,65
+ Owner: Soviets
+ Actor134: tc03
+ Location: 110,107
+ Owner: Neutral
+ Actor215: tc01
+ Location: 16,62
+ Owner: Neutral
+ Actor188: t02
+ Location: 55,24
+ Owner: Neutral
+ Actor37: fenc
+ Location: 99,97
+ Owner: Soviets
+ Actor195: tc03
+ Location: 16,16
+ Owner: Neutral
+ Actor196: t17
+ Location: 21,15
+ Owner: Neutral
+ Actor198: tc03
+ Location: 18,106
+ Owner: Neutral
+ Actor200: tc01
+ Location: 19,110
+ Owner: Neutral
+ Actor203: t11
+ Location: 45,91
+ Owner: Neutral
+ Actor356: proc
+ Location: 26,90
+ Owner: Allies
+ FreeActor: False
+ Actor147: mine
+ Location: 20,98
+ Owner: Neutral
+ Actor459: tc01
+ Location: 41,99
+ Owner: Neutral
+ Actor216: tc05
+ Location: 23,45
+ Owner: Neutral
+ Actor217: t07
+ Location: 49,32
+ Owner: Neutral
+ Actor218: t16
+ Location: 55,34
+ Owner: Neutral
+ Actor53: e1
+ Location: 109,89
+ Owner: Allies1
+ Actor182: tc02
+ Location: 53,35
+ Owner: Neutral
+ Actor52: e1
+ Location: 106,88
+ Owner: Allies1
+ Actor239: t06
+ Location: 48,75
+ Owner: Neutral
+ Actor292: ftur
+ Location: 36,56
+ Owner: Soviets
+ Actor71: e1
+ Location: 86,102
+ Owner: Soviets
+ Actor44: t16
+ Location: 87,105
+ Owner: Neutral
+ Actor133: v04
+ Location: 83,101
+ Owner: Neutral
+ Actor259: tc01
+ Location: 110,109
+ Owner: Neutral
+ Actor140: t11
+ Location: 110,82
+ Owner: Neutral
+ Actor610: e2
+ Location: 101,79
+ Owner: Soviets
+ Actor109: fenc
+ Location: 111,95
+ Owner: Soviets
+ Actor70: dog
+ Location: 87,99
+ Owner: Soviets
+ Actor141: t13
+ Location: 104,85
+ Owner: Neutral
+ Actor236: 3tnk
+ Location: 91,45
+ Owner: Soviets
+ Actor254: tc02
+ Location: 89,34
+ Owner: Neutral
+ Actor138: tc01
+ Location: 104,82
+ Owner: Neutral
+ Actor164: e1
+ Location: 107,99
+ Owner: Soviets
+ Actor442: e2
+ Location: 91,19
+ Owner: Soviets
+ Actor251: fenc
+ Location: 63,41
+ Owner: Soviets
+ Actor199: t01
+ Location: 108,49
+ Owner: Neutral
+ Actor440: fenc
+ Location: 88,17
+ Owner: Soviets
+ Actor222: fenc
+ Location: 94,63
+ Owner: Soviets
+ Actor441: e1
+ Location: 89,19
+ Owner: Soviets
+ Actor287: fenc
+ Location: 93,63
+ Owner: Soviets
+ Actor93: fenc
+ Location: 96,65
+ Owner: Soviets
+ Actor223: e2
+ Location: 94,64
+ Owner: Soviets
+ Actor224: e2
+ Location: 92,67
+ Owner: Soviets
+ Actor437: fenc
+ Location: 98,21
+ Owner: Soviets
+ Actor21: fenc
+ Location: 97,47
+ Owner: Soviets
+ Actor227: fenc
+ Location: 96,39
+ Owner: Soviets
+ Actor208: oilb
+ Location: 105,43
+ Owner: Soviets
+ Actor231: fenc
+ Location: 94,38
+ Owner: Soviets
+ Actor201: oilb
+ Location: 105,40
+ Owner: Soviets
+ Actor210: powr
+ Location: 105,46
+ Owner: Soviets
+ Actor78: barr
+ Location: 101,40
+ Owner: Soviets
+ Actor151: fenc
+ Location: 97,45
+ Owner: Soviets
+ Actor235: tc05
+ Location: 106,51
+ Owner: Neutral
+ Actor74: fenc
+ Location: 97,46
+ Owner: Soviets
+ Actor234: tc03
+ Location: 107,54
+ Owner: Neutral
+ Actor219: fenc
+ Location: 97,41
+ Owner: Soviets
+ Actor221: fenc
+ Location: 97,40
+ Owner: Soviets
+ Actor228: fenc
+ Location: 95,39
+ Owner: Soviets
+ Actor248: barl
+ Location: 100,41
+ Owner: Soviets
+ Actor229: fenc
+ Location: 94,39
+ Owner: Soviets
+ Actor245: e1
+ Location: 101,43
+ Owner: Soviets
+ Actor249: brl3
+ Location: 100,40
+ Owner: Soviets
+ Actor250: brl3
+ Location: 101,39
+ Owner: Soviets
+ Actor258: e2
+ Location: 103,45
+ Owner: Soviets
+ Actor443: e1
+ Location: 97,105
+ Owner: Soviets
+ Actor260: e1
+ Location: 97,43
+ Owner: Soviets
+ Actor108: e1
+ Location: 99,47
+ Owner: Soviets
+ Actor266: e1
+ Location: 96,47
+ Owner: Soviets
+ Actor279: brl3
+ Location: 106,39
+ Owner: Soviets
+ Actor280: barl
+ Location: 106,42
+ Owner: Soviets
+ Actor331: e1
+ Location: 36,88
+ Owner: Soviets
+ Actor193: fenc
+ Location: 95,63
+ Owner: Soviets
+ Actor192: fenc
+ Location: 95,64
+ Owner: Soviets
+ Actor94: fenc
+ Location: 96,64
+ Owner: Soviets
+ Actor640: tc04
+ Location: 72,31
+ Owner: Neutral
+ Actor641: t02
+ Location: 71,29
+ Owner: Neutral
+ Actor181: mine
+ Location: 109,76
+ Owner: Neutral
+ Actor348: e3
+ Location: 87,48
+ Owner: Soviets
+ Actor244: fenc
+ Location: 86,50
+ Owner: Soviets
+ Actor246: fenc
+ Location: 85,50
+ Owner: Soviets
+ Actor243: fenc
+ Location: 87,50
+ Owner: Soviets
+ Actor284: fenc
+ Location: 85,49
+ Owner: Soviets
+ Actor366: e1
+ Location: 88,51
+ Owner: Soviets
+ Actor367: e1
+ Location: 92,51
+ Owner: Soviets
+ Actor368: e1
+ Location: 91,49
+ Owner: Soviets
+ Actor347: e3
+ Location: 86,49
+ Owner: Soviets
+ Actor370: e2
+ Location: 94,49
+ Owner: Soviets
+ Actor281: fenc
+ Location: 56,38
+ Owner: Soviets
+ Actor376: e1
+ Location: 107,89
+ Owner: Allies1
+ Actor377: e1
+ Location: 108,89
+ Owner: Allies1
+ Actor378: e1
+ Location: 110,88
+ Owner: Allies1
+ Actor327: t06
+ Location: 37,73
+ Owner: Neutral
+ Actor189: t13
+ Location: 88,57
+ Owner: Neutral
+ Actor328: t14
+ Location: 26,57
+ Owner: Neutral
+ Actor297: e1
+ Location: 33,25
+ Owner: Soviets
+ Actor124: mine
+ Location: 49,25
+ Owner: Neutral
+ Actor112: e1
+ Location: 98,87
+ Owner: Soviets
+ Actor428: e1
+ Location: 90,100
+ Owner: Soviets
+ Actor298: e2
+ Location: 33,23
+ Owner: Soviets
+ Actor510: e1
+ Location: 94,20
+ Owner: Soviets
+ Actor508: e1
+ Location: 79,19
+ Owner: Soviets
+ Actor57: cycl
+ Location: 74,16
+ Owner: Soviets
+ Actor511: sbag
+ Location: 96,19
+ Owner: Soviets
+ Actor515: tc05
+ Location: 108,17
+ Owner: Neutral
+ Actor516: t13
+ Location: 72,20
+ Owner: Neutral
+ Actor121: cycl
+ Location: 75,23
+ Owner: Soviets
+ Actor519: sbag
+ Location: 93,18
+ Owner: Soviets
+ Actor489: apwr
+ Location: 76,19
+ Owner: Soviets
+ Actor517: sbag
+ Location: 96,17
+ Owner: Soviets
+ Actor520: sbag
+ Location: 93,19
+ Owner: Soviets
+ Actor488: apwr
+ Location: 80,19
+ Owner: Soviets
+ Actor116: cycl
+ Location: 74,20
+ Owner: Soviets
+ Actor117: cycl
+ Location: 74,21
+ Owner: Soviets
+ Actor107: oilb
+ Location: 68,29
+ Owner: Neutral
+ Actor232: fenc
+ Location: 94,37
+ Owner: Soviets
+ Actor102: spen
+ Location: 101,35
+ Owner: Soviets
+ Actor487: apwr
+ Location: 80,16
+ Owner: Soviets
+ Actor523: t17
+ Location: 85,20
+ Owner: Neutral
+ Actor522: t05
+ Location: 90,16
+ Owner: Neutral
+ Actor119: cycl
+ Location: 74,22
+ Owner: Soviets
+ Actor120: cycl
+ Location: 74,23
+ Owner: Soviets
+ Actor518: sbag
+ Location: 94,17
+ Owner: Soviets
+ Actor521: sbag
+ Location: 93,17
+ Owner: Soviets
+ Actor237: tc04
+ Location: 99,53
+ Owner: Neutral
+ Actor139: cycl
+ Location: 77,23
+ Owner: Soviets
+ Actor123: cycl
+ Location: 76,23
+ Owner: Soviets
+ Actor504: e2
+ Location: 78,23
+ Owner: Soviets
+ Actor505: e1
+ Location: 84,18
+ Owner: Soviets
+ Actor289: sbag
+ Location: 95,17
+ Owner: Soviets
+ Actor512: sbag
+ Location: 96,18
+ Owner: Soviets
+ Actor486: apwr
+ Location: 76,16
+ Owner: Soviets
+ Actor514: tc03
+ Location: 104,20
+ Owner: Neutral
+ Actor307: apwr
+ Location: 54,59
+ Owner: Soviets
+ Actor91: cycl
+ Location: 74,17
+ Owner: Soviets
+ Actor103: cycl
+ Location: 74,18
+ Owner: Soviets
+ Actor111: cycl
+ Location: 74,19
+ Owner: Soviets
+ Actor413: e1
+ Location: 104,38
+ Owner: Soviets
+ Actor626: barl
+ Location: 80,72
+ Owner: Soviets
+ Actor419: e1
+ Location: 82,62
+ Owner: Soviets
+ Actor150: sbag
+ Location: 93,50
+ Owner: Soviets
+ Actor608: brl3
+ Location: 81,72
+ Owner: Soviets
+ Actor427: e1
+ Location: 76,71
+ Owner: Soviets
+ Actor429: e2
+ Location: 78,70
+ Owner: Soviets
+ Actor611: t05
+ Location: 81,65
+ Owner: Neutral
+ Actor336: fenc
+ Location: 90,20
+ Owner: Soviets
+ Actor422: fenc
+ Location: 96,21
+ Owner: Soviets
+ Actor335: fenc
+ Location: 89,20
+ Owner: Soviets
+ Actor436: fenc
+ Location: 97,21
+ Owner: Soviets
+ Actor421: fenc
+ Location: 91,20
+ Owner: Soviets
+ Actor334: fenc
+ Location: 88,20
+ Owner: Soviets
+ Actor295: e1
+ Location: 28,25
+ Owner: Soviets
+ Actor299: dog
+ Location: 31,23
+ Owner: Soviets
+ Actor170: weap
+ Location: 23,103
+ Owner: Allies
+ Actor460: t08
+ Location: 40,110
+ Owner: Neutral
+ Actor206: dome
+ Location: 35,99
+ Owner: Allies
+ Actor204: apwr
+ Location: 37,107
+ Owner: Allies
+ Actor92: powr
+ Location: 101,46
+ Owner: Soviets
+ Actor84: fenc
+ Location: 110,93
+ Owner: Soviets
+ Actor83: apwr
+ Location: 37,104
+ Owner: Allies
+ Actor162: mine
+ Location: 20,91
+ Owner: Neutral
+ Actor96: fenc
+ Location: 82,71
+ Owner: Soviets
+ Actor97: fenc
+ Location: 111,66
+ Owner: Soviets
+ Actor42: t07
+ Location: 92,110
+ Owner: Neutral
+ Actor558: v10
+ Location: 64,90
+ Owner: Neutral
+ Actor414: t13
+ Location: 74,43
+ Owner: Neutral
+ Actor361: silo
+ Location: 25,89
+ Owner: Allies
+ Actor446: spen
+ Location: 58,17
+ Owner: Soviets
+ Actor273: t13
+ Location: 45,38
+ Owner: Neutral
+ Actor253: gun
+ Location: 27,88
+ Owner: Allies
+ Actor534: 1tnk
+ Location: 37,90
+ Owner: Allies
+ Facing: 0
+ Actor398: 1tnk
+ Location: 36,90
+ Owner: Allies
+ Facing: 0
+ Actor485: tc03
+ Location: 41,101
+ Owner: Neutral
+ Actor495: tc02
+ Location: 40,102
+ Owner: Neutral
+ Actor51: t13
+ Location: 66,80
+ Owner: Neutral
+ Actor873: brl3
+ Location: 45,79
+ Owner: Neutral
+ Actor171: tsla
+ Location: 41,56
+ Owner: Soviets
+ Actor570: oilb
+ Location: 43,80
+ Owner: Neutral
+ Actor263: dome
+ Location: 61,45
+ Owner: Soviets
+ Actor584: tc04
+ Location: 52,70
+ Owner: Neutral
+ Actor586: tc01
+ Location: 45,70
+ Owner: Neutral
+ Actor587: t17
+ Location: 31,84
+ Owner: Neutral
+ Actor605: barl
+ Location: 91,68
+ Owner: Soviets
+ Actor498: barl
+ Location: 94,65
+ Owner: Soviets
+ Actor67: tc01
+ Location: 97,65
+ Owner: Neutral
+ Actor462: t02
+ Location: 65,89
+ Owner: Neutral
+ Actor529: fenc
+ Location: 107,102
+ Owner: Soviets
+ Actor535: fenc
+ Location: 101,100
+ Owner: Soviets
+ Actor211: e1
+ Location: 105,107
+ Owner: Soviets
+ Actor530: fenc
+ Location: 106,102
+ Owner: Soviets
+ Actor128: fenc
+ Location: 108,102
+ Owner: Soviets
+ Actor592: dog
+ Location: 108,97
+ Owner: Soviets
+ Actor604: brl3
+ Location: 90,67
+ Owner: Soviets
+ Actor720: fenc
+ Location: 110,66
+ Owner: Soviets
+ Actor556: e1
+ Location: 110,89
+ Owner: Allies1
+ Actor600: barl
+ Location: 92,68
+ Owner: Soviets
+ Actor647: fenc
+ Location: 84,72
+ Owner: Soviets
+ Actor532: e1
+ Location: 106,89
+ Owner: Allies1
+ Actor464: t05
+ Location: 64,82
+ Owner: Neutral
+ Actor463: tc04
+ Location: 60,83
+ Owner: Neutral
+ Actor609: e2
+ Location: 99,79
+ Owner: Soviets
+ Actor721: fenc
+ Location: 109,66
+ Owner: Soviets
+ Actor606: brl3
+ Location: 89,67
+ Owner: Soviets
+ Actor144: t01
+ Location: 98,107
+ Owner: Neutral
+ Actor129: e1
+ Location: 102,78
+ Owner: Soviets
+ Actor283: apwr
+ Location: 51,58
+ Owner: Soviets
+ Actor72: dog
+ Location: 81,71
+ Owner: Soviets
+ Actor617: truk
+ Location: 104,43
+ Owner: Soviets
+ Actor220: sbag
+ Location: 92,48
+ Owner: Soviets
+ Actor275: fenc
+ Location: 64,44
+ Owner: Soviets
+ Actor225: fenc
+ Location: 84,49
+ Owner: Soviets
+ Actor597: t16
+ Location: 82,67
+ Owner: Neutral
+ Actor596: tc01
+ Location: 83,65
+ Owner: Neutral
+ Actor559: tc02
+ Location: 84,66
+ Owner: Neutral
+ Actor418: tc04
+ Location: 81,68
+ Owner: Neutral
+ Actor32: tc05
+ Location: 83,67
+ Owner: Neutral
+ Actor496: 3tnk
+ Location: 86,20
+ Owner: Soviets
+ Actor646: fenc
+ Location: 84,70
+ Owner: Soviets
+ Actor649: fenc
+ Location: 86,70
+ Owner: Soviets
+ Actor648: fenc
+ Location: 85,70
+ Owner: Soviets
+ Actor100: e1
+ Location: 87,61
+ Owner: Soviets
+ Actor339: e1
+ Location: 80,59
+ Owner: Soviets
+ Actor589: dog
+ Location: 80,57
+ Owner: Soviets
+ Actor340: e1
+ Location: 77,58
+ Owner: Soviets
+ Actor55: wood
+ Location: 79,94
+ Owner: Neutral
+ Actor168: wood
+ Location: 79,95
+ Owner: Neutral
+ Actor172: wood
+ Location: 79,96
+ Owner: Neutral
+ Actor324: t05
+ Location: 64,63
+ Owner: Neutral
+ Actor265: tsla
+ Location: 61,64
+ Owner: Soviets
+ Actor257: proc
+ Location: 35,28
+ Owner: Soviets
+ Actor325: t12
+ Location: 48,52
+ Owner: Neutral
+ Actor661: tc03
+ Location: 54,16
+ Owner: Neutral
+ Actor326: t17
+ Location: 34,50
+ Owner: Neutral
+ Actor667: tc04
+ Location: 88,106
+ Owner: Neutral
+ Actor668: t16
+ Location: 80,106
+ Owner: Neutral
+ Actor670: fenc
+ Location: 95,78
+ Owner: Soviets
+ Actor671: fenc
+ Location: 94,78
+ Owner: Soviets
+ Actor672: fenc
+ Location: 93,78
+ Owner: Soviets
+ Actor69: e1
+ Location: 90,102
+ Owner: Soviets
+ Actor68: e2
+ Location: 92,102
+ Owner: Soviets
+ Actor63: e1
+ Location: 92,104
+ Owner: Soviets
+ Actor673: wood
+ Location: 82,97
+ Owner: Neutral
+ Actor674: wood
+ Location: 81,97
+ Owner: Neutral
+ Actor176: tsla
+ Location: 56,36
+ Owner: Soviets
+ Actor681: wood
+ Location: 70,100
+ Owner: Neutral
+ Actor680: wood
+ Location: 69,100
+ Owner: Neutral
+ Actor308: apwr
+ Location: 54,62
+ Owner: Soviets
+ Actor262: t06
+ Location: 20,51
+ Owner: Neutral
+ Actor676: wood
+ Location: 79,97
+ Owner: Neutral
+ Actor185: ftur
+ Location: 42,62
+ Owner: Soviets
+ Actor675: wood
+ Location: 80,97
+ Owner: Neutral
+ Actor686: brl3
+ Location: 82,73
+ Owner: Soviets
+ Actor148: proc
+ Location: 40,36
+ Owner: Soviets
+ Actor707: v18
+ Location: 68,97
+ Owner: Neutral
+ Actor612: t07
+ Location: 80,67
+ Owner: Neutral
+ Actor601: t11
+ Location: 74,72
+ Owner: Neutral
+ Actor627: t01
+ Location: 84,59
+ Owner: Neutral
+ Actor131: sbag
+ Location: 92,49
+ Owner: Soviets
+ Actor264: t10
+ Location: 17,45
+ Owner: Neutral
+ Actor177: hpad
+ Location: 45,44
+ Owner: Soviets
+ Actor179: tsla
+ Location: 25,52
+ Owner: Soviets
+ Actor180: ftur
+ Location: 32,25
+ Owner: Soviets
+ Actor700: tsla
+ Location: 55,17
+ Owner: Soviets
+ Actor183: ftur
+ Location: 22,40
+ Owner: Soviets
+ Actor708: v17
+ Location: 69,97
+ Owner: Neutral
+ Actor101: dog
+ Location: 98,74
+ Owner: Soviets
+ Actor715: e2
+ Location: 75,34
+ Owner: Soviets
+ Actor0: silo
+ Location: 94,72
+ Owner: Soviets
+ Actor602: fenc
+ Location: 99,80
+ Owner: Soviets
+ Actor346: fenc
+ Location: 100,80
+ Owner: Soviets
+ Actor166: fenc
+ Location: 101,80
+ Owner: Soviets
+ Actor54: ftur
+ Location: 97,77
+ Owner: Soviets
+ Actor725: fenc
+ Location: 75,74
+ Owner: Soviets
+ Actor724: fenc
+ Location: 76,74
+ Owner: Soviets
+ Actor726: fenc
+ Location: 74,74
+ Owner: Soviets
+ Actor727: fenc
+ Location: 73,74
+ Owner: Soviets
+ Actor728: fenc
+ Location: 72,74
+ Owner: Soviets
+ Actor729: fenc
+ Location: 72,73
+ Owner: Soviets
+ Actor730: fenc
+ Location: 72,72
+ Owner: Soviets
+ Actor40: tran.husk1
+ Location: 69,87
+ Owner: Neutral
+ Actor333: brl3
+ Location: 21,73
+ Owner: Neutral
+ Actor145: mine
+ Location: 44,29
+ Owner: Neutral
+ Actor270: e1
+ Location: 31,87
+ Owner: Soviets
+ Actor573: 2tnk
+ Location: 34,92
+ Owner: Allies
+ Facing: 0
+ Actor577: tc02
+ Location: 81,87
+ Owner: Neutral
+ Actor329: e1
+ Location: 41,87
+ Owner: Soviets
+ Actor574: 2tnk
+ Location: 35,92
+ Owner: Allies
+ Facing: 0
+ Actor578: v11
+ Location: 64,84
+ Owner: Neutral
+ Actor546: 1tnk
+ Location: 38,90
+ Owner: Allies
+ Facing: 0
+ Actor342: e1
+ Location: 99,38
+ Owner: Soviets
+ Actor286: e1
+ Location: 104,67
+ Owner: Soviets
+ Actor755: e1
+ Location: 107,70
+ Owner: Soviets
+ Actor756: e2
+ Location: 107,67
+ Owner: Soviets
+ Actor161: proc
+ Location: 108,69
+ Owner: Soviets
+ Actor285: powr
+ Location: 102,68
+ Owner: Soviets
+ Actor309: apwr
+ Location: 51,64
+ Owner: Soviets
+ Actor316: fact
+ Location: 59,61
+ Owner: Soviets
+ Actor323: t06
+ Location: 29,43
+ Owner: Neutral
+ Actor722: t14
+ Location: 67,52
+ Owner: Neutral
+ Actor763: tsla
+ Location: 79,24
+ Owner: Soviets
+ Actor764: e1
+ Location: 95,59
+ Owner: Soviets
+ Actor765: e1
+ Location: 98,56
+ Owner: Soviets
+ Actor207: fenc
+ Location: 61,39
+ Owner: Soviets
+ Actor767: dog
+ Location: 95,57
+ Owner: Soviets
+ Actor766: e1
+ Location: 93,56
+ Owner: Soviets
+ Actor205: fenc
+ Location: 60,39
+ Owner: Soviets
+ Actor187: afld
+ Location: 35,37
+ Owner: Soviets
+ Actor213: v2rl
+ Location: 52,44
+ Owner: Soviets
+ Actor272: t16
+ Location: 26,30
+ Owner: Neutral
+ Actor214: fenc
+ Location: 62,41
+ Owner: Soviets
+ Actor233: tc01
+ Location: 29,53
+ Owner: Neutral
+ Actor212: fenc
+ Location: 61,41
+ Owner: Soviets
+ Actor776: e1
+ Location: 74,69
+ Owner: Soviets
+ Actor230: tc03
+ Location: 16,55
+ Owner: Neutral
+ Actor167: fix
+ Location: 57,50
+ Owner: Soviets
+ Actor802: t06
+ Location: 22,64
+ Owner: Neutral
+ Actor165: mine
+ Location: 40,24
+ Owner: Neutral
+ Actor322: tsla
+ Location: 48,64
+ Owner: Soviets
+ Actor255: gun
+ Location: 42,91
+ Owner: Allies
+ Actor268: e1
+ Location: 33,90
+ Owner: Allies
+ Actor269: e1
+ Location: 34,90
+ Owner: Allies
+ Actor267: pbox
+ Location: 30,90
+ Owner: Allies
+ Actor882: barl
+ Location: 46,81
+ Owner: Neutral
+ Actor202: kenn
+ Location: 45,49
+ Owner: Soviets
+ Actor184: fenc
+ Location: 59,39
+ Owner: Soviets
+ Actor256: fenc
+ Location: 64,42
+ Owner: Soviets
+ Actor240: silo
+ Location: 38,34
+ Owner: Soviets
+ Actor173: ftur
+ Location: 66,44
+ Owner: Soviets
+ Actor305: ftur
+ Location: 46,21
+ Owner: Soviets
+ Actor261: tc01
+ Location: 42,77
+ Owner: Neutral
+ Actor778: t05
+ Location: 48,78
+ Owner: Neutral
+ Actor831: t15
+ Location: 47,82
+ Owner: Neutral
+ Actor865: t08
+ Location: 24,110
+ Owner: Neutral
+ Actor864: t01
+ Location: 33,109
+ Owner: Neutral
+ Actor862: t07
+ Location: 41,71
+ Owner: Neutral
+ Actor867: t01
+ Location: 16,68
+ Owner: Neutral
+ Actor883: barl
+ Location: 44,79
+ Owner: Neutral
+ Actor905: v01
+ Location: 20,74
+ Owner: Neutral
+ Actor209: fenc
+ Location: 61,40
+ Owner: Soviets
+ Actor276: fenc
+ Location: 65,44
+ Owner: Soviets
+ Actor197: tsla
+ Location: 55,44
+ Owner: Soviets
+ Actor277: fenc
+ Location: 57,39
+ Owner: Soviets
+ Actor288: apwr
+ Location: 51,61
+ Owner: Soviets
+ Actor278: fenc
+ Location: 56,39
+ Owner: Soviets
+ Actor274: fenc
+ Location: 64,43
+ Owner: Soviets
+ Actor252: fenc
+ Location: 64,41
+ Owner: Soviets
+ Actor906: v03
+ Location: 16,72
+ Owner: Neutral
+ Actor175: fenc
+ Location: 58,39
+ Owner: Soviets
+ Actor271: v2rl
+ Location: 29,33
+ Owner: Soviets
+ Facing: 0
+ Actor186: afld
+ Location: 53,40
+ Owner: Soviets
+ Actor238: silo
+ Location: 39,34
+ Owner: Soviets
+ Actor241: silo
+ Location: 38,33
+ Owner: Soviets
+ Actor178: e3
+ Location: 37,43
+ Owner: Soviets
+ Actor190: e3
+ Location: 35,35
+ Owner: Soviets
+ Actor191: e3
+ Location: 38,52
+ Owner: Soviets
+ Actor337: e3
+ Location: 37,53
+ Owner: Soviets
+ Actor338: e3
+ Location: 45,58
+ Owner: Soviets
+ Actor341: e3
+ Location: 54,50
+ Owner: Soviets
+ Actor343: e3
+ Location: 66,49
+ Owner: Soviets
+ Actor344: e3
+ Location: 62,60
+ Owner: Soviets
+ Actor345: e2
+ Location: 42,51
+ Owner: Soviets
+ Actor349: e2
+ Location: 55,55
+ Owner: Soviets
+ Actor350: e2
+ Location: 43,35
+ Owner: Soviets
+ Actor351: dog
+ Location: 43,55
+ Owner: Soviets
+ Actor352: dog
+ Location: 45,60
+ Owner: Soviets
+ Actor353: dog
+ Location: 41,42
+ Owner: Soviets
+ Actor354: dog
+ Location: 57,46
+ Owner: Soviets
+ Actor355: dog
+ Location: 40,31
+ Owner: Soviets
+ Actor357: 3tnk
+ Location: 43,59
+ Owner: Soviets
+ Facing: 90
+ Actor537: harv
+ Location: 25,94
+ Owner: Allies
+ Facing: 96
+ Actor358: 3tnk
+ Location: 38,55
+ Owner: Soviets
+ Facing: 110
+ Actor359: v2rl
+ Location: 44,53
+ Owner: Soviets
+ Actor282: tent
+ Location: 40,94
+ Owner: Allies
+ Actor290: pbox
+ Location: 39,92
+ Owner: Allies
+ Actor1000: camera
+ Location: 1,1
+ Owner: Soviets
+ ChinookHusk: tran.husk2
+ Location: 108,87
+ Owner: Neutral
+ Einstein: einstein
+ Location: 66,85
+ Owner: Neutral
+ TanyaLocation: waypoint
+ Location: 106,86
+ Owner: Allies1
+ Engineer: e6
+ Location: 68,86
+ Owner: Neutral
+ Sam1: sam
+ Location: 105,97
+ Owner: Soviets
+ Sam2: sam
+ Location: 91,65
+ Owner: Soviets
+ Sam3: sam
+ Location: 94,18
+ Owner: Soviets
+ Sam4: sam
+ Location: 31,37
+ Owner: Soviets
+ Allies2BasePoint: waypoint
+ Location: 34,96
+ Owner: Neutral
+ AlliedBaseBottomRight: waypoint
+ Location: 51,111
+ Owner: Neutral
+ AlliedBaseTopLeft: waypoint
+ Location: 16,84
+ Owner: Neutral
+ ReinforcementsEntryPoint: waypoint
+ Location: 31,111
+ Owner: Neutral
+ ExtractionLZEntryPoint: waypoint
+ Location: 9,9
+ Owner: Neutral
+ ExtractionLZ: waypoint
+ Location: 30,38
+ Owner: Neutral
+ TanksEntryPoint: waypoint
+ Location: 16,86
+ Owner: Neutral
+ SovietRallyPoint: waypoint
+ Location: 36,65
+ Owner: Neutral
+ TownPoint: waypoint
+ Location: 70,89
+ Owner: Neutral
+ SovietTownAttackPoint1: waypoint
+ Location: 72,110
+ Owner: Neutral
+ SovietTownAttackPoint2: waypoint
+ Location: 86,78
+ Owner: Neutral
+ BadgerEntryPoint1: waypoint
+ Location: 40,12
+ Owner: Neutral
+ BadgerEntryPoint2: waypoint
+ Location: 119,77
+ Owner: Neutral
+ BadgerDropPoint1: waypoint
+ Location: 19,96
+ Owner: Neutral
+ BadgerDropPoint2: waypoint
+ Location: 34,106
+ Owner: Neutral
+ BadgerDropPoint3: waypoint
+ Location: 26,100
+ Owner: Neutral
+ ParabombPoint1: waypoint
+ Location: 39,105
+ Owner: Neutral
+ ParabombPoint2: waypoint
+ Location: 39,108
+ Owner: Neutral
+ YakEntryPoint: waypoint
+ Location: 99,10
+ Owner: Neutral
+ YakAttackPoint: waypoint
+ Location: 78,62
+ Owner: Neutral
+ FlamersEntryPoint: waypoint
+ Location: 16,74
+ Owner: Neutral
+ SovietBarracks: barr
+ Location: 39,49
+ Owner: Soviets
+ SovietWarFactory: weap
+ Location: 51,47
+ Owner: Soviets
+ TownUnit01: e1
+ Location: 67,88
+ Owner: Neutral
+ TownUnit02: e1
+ Location: 69,89
+ Owner: Neutral
+ TownUnit03: e1
+ Location: 69,93
+ Owner: Neutral
+ TownUnit04: e1
+ Location: 73,85
+ Owner: Neutral
+ TownUnit05: e1
+ Location: 71,86
+ Owner: Neutral
+ TownUnit06: e1
+ Location: 68,91
+ Owner: Neutral
+ TownUnit07: e1
+ Location: 73,88
+ Owner: Neutral
+ TownUnit08: e1
+ Location: 70,86
+ Owner: Neutral
+ TownUnit09: e1
+ Location: 69,84
+ Owner: Neutral
+ TownUnit10: e1
+ Location: 73,90
+ Owner: Neutral
+ TownUnit11: e3
+ Location: 66,89
+ Owner: Neutral
+ TownUnit12: e3
+ Location: 66,87
+ Owner: Neutral
+ TownUnit13: e3
+ Location: 64,88
+ Owner: Neutral
+ TownUnit14: e1
+ Location: 70,88
+ Owner: Neutral
+ TownAttacker01: e1
+ Location: 73,83
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker02: e1
+ Location: 80,87
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker03: e2
+ Location: 104,101
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker04: e2
+ Location: 77,96
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker05: e1
+ Location: 71,99
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker06: e1
+ Location: 69,110
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker07: e1
+ Location: 74,109
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker08: e1
+ Location: 73,110
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker09: e1
+ Location: 71,109
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker10: e2
+ Location: 74,110
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker11: e2
+ Location: 70,109
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker12: e2
+ Location: 73,109
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker13: e1
+ Location: 72,109
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker14: e1
+ Location: 70,110
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker15: e1
+ Location: 82,77
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker16: e1
+ Location: 85,76
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker17: e1
+ Location: 89,79
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker18: e1
+ Location: 84,79
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker19: e1
+ Location: 89,80
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker20: e2
+ Location: 86,77
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker21: dog
+ Location: 87,79
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker22: 3tnk
+ Location: 84,77
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker23: e2
+ Location: 74,92
+ Owner: Soviets
+ ScriptTags: TownAttacker
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, rules.yaml
diff --git a/mods/ra/maps/evacuation/rules.yaml b/mods/ra/maps/evacuation/rules.yaml
new file mode 100644
index 0000000000..c64b72e243
--- /dev/null
+++ b/mods/ra/maps/evacuation/rules.yaml
@@ -0,0 +1,217 @@
+Player:
+ MissionObjectives:
+ Cooperative: True
+ PlayerResources:
+ DefaultCash: 5000
+ DeveloperMode:
+ Locked: True
+
+World:
+ MissionData:
+ Briefing: One of our outposts is under heavy attack by a nearby Soviet base. Einstein, Tanya and many of our forces have been evacuated via helicopters, but those were shot down on the other side of the river. Fortunately they survived the crash, but are now in enemy territory. Tanya and the rest of the surviving forces need to fight their way out of there. The air defenses must be eliminated before another Search & Rescue helicopter can arrive.\n\nMeanwhile, the forces remaining at the base need to fend off the Soviet attacks.\n
+ LuaScript:
+ Scripts: evacuation.lua
+ MapOptions:
+ TechLevelLocked: True
+ Difficulties: Easy, Normal
+ Difficulty: Normal
+
+^Tanks:
+ Demolishable:
+
+^Vehicles:
+ Demolishable:
+
+E1:
+ ScriptTags:
+
+E2:
+ ScriptTags:
+
+DOG:
+ ScriptTags:
+
+3TNK:
+ ScriptTags:
+
+TRAN.Husk1:
+ Burns:
+ Damage: 0
+
+TRAN.Husk2:
+ Burns:
+ Damage: 0
+
+E7:
+ Passenger:
+ Weight: 0
+ Buildable:
+ Prerequisites: ~disabled
+
+EINSTEIN:
+ Passenger:
+ Weight: 0
+
+V01:
+ SpawnActorOnDeath:
+ Actor: healcrate
+
+TRAN:
+ -Selectable:
+ Buildable:
+ Prerequisites: ~disabled
+ RevealsShroud:
+ Range: 0c0
+
+2TNK:
+ Buildable:
+ Prerequisites: ~vehicles.allies
+
+MECH:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+SYRD:
+ Buildable:
+ Prerequisites: ~disabled
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+ATEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: ~disabled
+
+HELI:
+ Buildable:
+ Prerequisites: ~disabled
+
+4TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+ARTY:
+ Buildable:
+ Prerequisites: ~disabled
+
+APC:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY.AP:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY.AT:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MRJ:
+ Buildable:
+ Prerequisites: ~disabled
+
+MGG:
+ Buildable:
+ Prerequisites: ~disabled
+
+TTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+QTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+DTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+CTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+STNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSUB:
+ Buildable:
+ Prerequisites: ~disabled
+
+CAMERA.Large:
+ Inherits: CAMERA
+ RevealsShroud:
+ Range: 1000c0
+
+Camera.SAM:
+ Inherits: CAMERA
+ RevealsShroud:
+ Range: 2c0
+
+powerproxy.paras1:
+ AlwaysVisible:
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E2,3TNK
+
+powerproxy.paras2:
+ AlwaysVisible:
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E2,E2
+