From 856120f2b238bc0813f975f2562508622460e9fb Mon Sep 17 00:00:00 2001 From: ScottNZ Date: Sat, 8 Mar 2014 00:26:09 +1300 Subject: [PATCH 1/4] Remove hardcoded missions --- OpenRA.Mods.RA/Missions/Allies01Script.cs | 322 -- OpenRA.Mods.RA/Missions/Allies02Script.cs | 478 --- OpenRA.Mods.RA/Missions/Allies03Script.cs | 459 --- OpenRA.Mods.RA/Missions/Allies04Script.cs | 576 ---- OpenRA.Mods.RA/Missions/CountdownTimer.cs | 68 - OpenRA.Mods.RA/Missions/FortLonestarScript.cs | 379 --- OpenRA.Mods.RA/Missions/MissionUtils.cs | 253 -- OpenRA.Mods.RA/Missions/MissionWidgets.cs | 55 - .../Missions/MonsterTankMadnessScript.cs | 342 -- OpenRA.Mods.RA/Missions/Objective.cs | 52 - .../Missions/Soviet01ClassicScript.cs | 208 -- OpenRA.Mods.RA/Missions/Survival01Script.cs | 346 -- OpenRA.Mods.RA/Missions/Survival02Script.cs | 411 --- OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 14 - .../Scripting/LuaScriptInterface.cs | 22 +- .../Widgets/Logic/MissionObjectivesLogic.cs | 111 - mods/ra/maps/Fort-Lonestar/map.bin | Bin 46085 -> 0 bytes mods/ra/maps/Fort-Lonestar/map.yaml | 1249 -------- mods/ra/maps/Survival01/map.bin | Bin 30725 -> 0 bytes mods/ra/maps/Survival01/map.yaml | 1329 -------- mods/ra/maps/Survival02/map.bin | Bin 32005 -> 0 bytes mods/ra/maps/Survival02/map.yaml | 1149 ------- mods/ra/maps/allies-01/map.bin | Bin 15365 -> 0 bytes mods/ra/maps/allies-01/map.yaml | 446 --- mods/ra/maps/allies-02/map.bin | Bin 81925 -> 0 bytes mods/ra/maps/allies-02/map.yaml | 1947 ------------ mods/ra/maps/allies-03/map.bin | Bin 92165 -> 0 bytes mods/ra/maps/allies-03/map.yaml | 1580 ---------- mods/ra/maps/allies-04/map.bin | Bin 81925 -> 0 bytes mods/ra/maps/allies-04/map.yaml | 2004 ------------ mods/ra/maps/monster-tank-madness/map.bin | Bin 81925 -> 0 bytes mods/ra/maps/monster-tank-madness/map.yaml | 2777 ----------------- mods/ra/maps/soviet-01-classic/map.bin | Bin 81925 -> 0 bytes mods/ra/maps/soviet-01-classic/map.yaml | 953 ------ 34 files changed, 20 insertions(+), 17510 deletions(-) delete mode 100644 OpenRA.Mods.RA/Missions/Allies01Script.cs delete mode 100644 OpenRA.Mods.RA/Missions/Allies02Script.cs delete mode 100644 OpenRA.Mods.RA/Missions/Allies03Script.cs delete mode 100644 OpenRA.Mods.RA/Missions/Allies04Script.cs delete mode 100644 OpenRA.Mods.RA/Missions/CountdownTimer.cs delete mode 100644 OpenRA.Mods.RA/Missions/FortLonestarScript.cs delete mode 100644 OpenRA.Mods.RA/Missions/MissionUtils.cs delete mode 100644 OpenRA.Mods.RA/Missions/MissionWidgets.cs delete mode 100644 OpenRA.Mods.RA/Missions/MonsterTankMadnessScript.cs delete mode 100644 OpenRA.Mods.RA/Missions/Objective.cs delete mode 100644 OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs delete mode 100644 OpenRA.Mods.RA/Missions/Survival01Script.cs delete mode 100644 OpenRA.Mods.RA/Missions/Survival02Script.cs delete mode 100644 OpenRA.Mods.RA/Widgets/Logic/MissionObjectivesLogic.cs delete mode 100644 mods/ra/maps/Fort-Lonestar/map.bin delete mode 100644 mods/ra/maps/Fort-Lonestar/map.yaml delete mode 100644 mods/ra/maps/Survival01/map.bin delete mode 100644 mods/ra/maps/Survival01/map.yaml delete mode 100644 mods/ra/maps/Survival02/map.bin delete mode 100644 mods/ra/maps/Survival02/map.yaml delete mode 100644 mods/ra/maps/allies-01/map.bin delete mode 100644 mods/ra/maps/allies-01/map.yaml delete mode 100644 mods/ra/maps/allies-02/map.bin delete mode 100644 mods/ra/maps/allies-02/map.yaml delete mode 100644 mods/ra/maps/allies-03/map.bin delete mode 100644 mods/ra/maps/allies-03/map.yaml delete mode 100644 mods/ra/maps/allies-04/map.bin delete mode 100644 mods/ra/maps/allies-04/map.yaml delete mode 100644 mods/ra/maps/monster-tank-madness/map.bin delete mode 100644 mods/ra/maps/monster-tank-madness/map.yaml delete mode 100644 mods/ra/maps/soviet-01-classic/map.bin delete mode 100644 mods/ra/maps/soviet-01-classic/map.yaml diff --git a/OpenRA.Mods.RA/Missions/Allies01Script.cs b/OpenRA.Mods.RA/Missions/Allies01Script.cs deleted file mode 100644 index 868e46c3e5..0000000000 --- a/OpenRA.Mods.RA/Missions/Allies01Script.cs +++ /dev/null @@ -1,322 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 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. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using OpenRA.FileFormats; -using OpenRA.Graphics; -using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Air; -using OpenRA.Mods.RA.Move; -using OpenRA.Scripting; -using OpenRA.Traits; - -namespace OpenRA.Mods.RA.Missions -{ - class Allies01ScriptInfo : TraitInfo, Requires { } - - class Allies01Script : IHasObjectives, IWorldLoaded, ITick - { - public event Action OnObjectivesUpdated = notify => { }; - - public IEnumerable Objectives { get { return new[] { findEinstein, extractEinstein }; } } - - Objective findEinstein = new Objective(ObjectiveType.Primary, FindEinsteinText, ObjectiveStatus.InProgress); - Objective extractEinstein = new Objective(ObjectiveType.Primary, ExtractEinsteinText, ObjectiveStatus.Inactive); - - const string FindEinsteinText = "Find Einstein. Tanya and Einstein must survive."; - const string ExtractEinsteinText = "Wait for the helicopter and extract Einstein. Tanya and Einstein must survive."; - - Player allies; - Player soviets; - - Actor insertionLZ; - Actor extractionLZ; - Actor lab; - Actor insertionLZEntryPoint; - Actor extractionLZEntryPoint; - Actor chinookExitPoint; - Actor shipSpawnPoint; - Actor shipMovePoint; - Actor einstein; - Actor einsteinChinook; - Actor tanya; - Actor attackEntryPoint1; - Actor attackEntryPoint2; - - World world; - - static readonly string[] Taunts = { "laugh1.aud", "lefty1.aud", "cmon1.aud", "gotit1.aud" }; - - static readonly string[] Ships = { "ca", "ca", "ca", "ca" }; - static readonly string[] Patrol = { "e1", "dog", "e1" }; - - static readonly string[] AttackWave = { "e1", "e1", "e1", "e1", "e2", "e2", "e2", "e2", "dog" }; - static readonly string[] LastAttackWaveAddition = { "3tnk", "e1", "e1", "e1", "e1", "e2", "e2", "e2", "e2" }; - int currentAttackWaveFrameNumber; - int currentAttackWave; - const int EinsteinChinookAttackWave = 5; - - const int LabClearRange = 5; - const string EinsteinName = "einstein"; - const string TanyaName = "e7"; - const string SignalFlareName = "flare"; - - string difficulty; - - void MissionAccomplished(string text) - { - MissionUtils.CoopMissionAccomplished(world, text, allies); - } - - void MissionFailed(string text) - { - MissionUtils.CoopMissionFailed(world, text, allies); - } - - public void Tick(Actor self) - { - if (allies.WinState != WinState.Undefined) return; - - if (world.FrameNumber % 1000 == 0) - Sound.Play(Taunts[world.SharedRandom.Next(Taunts.Length)]); - - if (findEinstein.Status == ObjectiveStatus.InProgress) - { - if (AlliesControlLab()) - LabSecured(); - - if (lab.IsDead()) - { - findEinstein.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("Einstein was killed."); - } - } - if (extractEinstein.Status == ObjectiveStatus.InProgress) - { - if (difficulty != "Easy") - { - ManageSovietUnits(); - if (world.FrameNumber >= currentAttackWaveFrameNumber + 400) - { - SpawnSovietUnits(AttackWave); - currentAttackWave++; - currentAttackWaveFrameNumber = world.FrameNumber; - - if (currentAttackWave >= EinsteinChinookAttackWave) - SpawnSovietUnits(LastAttackWaveAddition); - - if (currentAttackWave == EinsteinChinookAttackWave) - ExtractEinsteinAtLZ(); - } - } - if (einsteinChinook != null) - { - if (einsteinChinook.IsDead()) - { - extractEinstein.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("The extraction helicopter was destroyed."); - } - else if (!world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait().Passengers.Contains(einstein)) - { - extractEinstein.Status = ObjectiveStatus.Completed; - OnObjectivesUpdated(true); - MissionAccomplished("Einstein was rescued"); - } - } - } - - if (tanya != null && tanya.IsDead()) - MissionFailed("Tanya was killed."); - - else if (einstein != null && einstein.IsDead()) - MissionFailed("Einstein was killed."); - - MissionUtils.CapOre(soviets); - } - - void LabSecured() - { - SpawnSignalFlare(); - Sound.Play("flaren1.aud"); - SpawnEinsteinAtLab(); - SendShips(); - lab.QueueActivity(new Transform(lab, "stek") { SkipMakeAnims = true }); - - findEinstein.Status = ObjectiveStatus.Completed; - extractEinstein.Status = ObjectiveStatus.InProgress; - OnObjectivesUpdated(true); - - currentAttackWaveFrameNumber = world.FrameNumber; - - if (difficulty == "Easy") - ExtractEinsteinAtLZ(); - else - { - var infantry = MissionUtils.FindQueues(world, soviets, "Infantry").FirstOrDefault(); - if (infantry != null) - infantry.ResolveOrder(infantry.self, Order.StartProduction(infantry.self, "e1", 5)); - } - } - - void SpawnSignalFlare() - { - world.CreateActor(SignalFlareName, new TypeDictionary { new OwnerInit(allies), new LocationInit(extractionLZ.Location) }); - } - - void SpawnSovietUnits(IEnumerable wave) - { - foreach (var unit in wave) - { - var spawnActor = world.SharedRandom.Next(2) == 0 ? attackEntryPoint1 : attackEntryPoint2; - world.CreateActor(unit, new TypeDictionary { new OwnerInit(soviets), new LocationInit(spawnActor.Location) }); - } - } - - void ManageSovietUnits() - { - foreach (var unit in world.Actors.Where(u => u.IsInWorld && u.Owner == soviets && !u.IsDead() && u.IsIdle - && u.HasTrait() && u.HasTrait())) - { - Activity innerActivity; - if (einstein != null) - { - if (einstein.IsInWorld) - innerActivity = new Move.Move(Target.FromActor(einstein), WRange.FromCells(3)); - - else - { - var container = world.UnitContaining(einstein); - - if (container != null && !container.HasTrait() && container.HasTrait()) - innerActivity = new Move.Move(Target.FromActor(container), WRange.FromCells(3)); - - else - innerActivity = new Move.Move(extractionLZ.Location, 3); - } - unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, innerActivity)); - } - } - } - - void SendPatrol() - { - for (int i = 0; i < Patrol.Length; i++) - world.CreateActor(Patrol[i], new TypeDictionary - { - new OwnerInit(soviets), - new LocationInit(insertionLZ.Location + new CVec(-1 + i, 10 + i * 2)) - }) - .QueueActivity(new Move.Move(insertionLZ.Location)); - } - - bool AlliesControlLab() - { - return MissionUtils.AreaSecuredWithUnits(world, allies, lab.CenterPosition, WRange.FromCells(LabClearRange)); - } - - void SpawnEinsteinAtLab() - { - einstein = world.CreateActor(EinsteinName, new TypeDictionary { new OwnerInit(allies), new LocationInit(lab.Location) }); - einstein.QueueActivity(new Move.Move(lab.Location - new CVec(0, 2))); - } - - void SendShips() - { - for (int i = 0; i < Ships.Length; i++) - world.CreateActor(Ships[i], new TypeDictionary - { - new OwnerInit(allies), - new LocationInit(shipSpawnPoint.Location + new CVec(i * 2, 0)) - }) - .QueueActivity(new Move.Move(shipMovePoint.Location + new CVec(i * 4, 0))); - } - - void ExtractEinsteinAtLZ() - { - einsteinChinook = MissionUtils.ExtractUnitWithChinook( - world, - allies, - einstein, - extractionLZEntryPoint.Location, - extractionLZ.Location, - chinookExitPoint.Location); - } - - void InsertTanyaAtLZ() - { - tanya = MissionUtils.InsertUnitWithChinook( - world, - allies, - TanyaName, - insertionLZEntryPoint.Location, - insertionLZ.Location, - chinookExitPoint.Location, - unit => - { - Sound.Play("laugh1.aud"); - unit.QueueActivity(new Move.Move(insertionLZ.Location - new CVec(1, 0))); - }).Second; - } - - void SetAlliedUnitsToDefensiveStance() - { - foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == allies && !a.IsDead() && a.HasTrait())) - actor.Trait().Stance = UnitStance.Defend; - } - - public void WorldLoaded(World w, WorldRenderer wr) - { - world = w; - - difficulty = w.LobbyInfo.GlobalSettings.Difficulty; - Game.Debug("{0} difficulty selected".F(difficulty)); - - allies = w.Players.Single(p => p.InternalName == "Allies"); - soviets = w.Players.Single(p => p.InternalName == "Soviets"); - - allies.PlayerActor.Trait().Cash = 0; - - var actors = w.WorldActor.Trait().Actors; - insertionLZ = actors["InsertionLZ"]; - extractionLZ = actors["ExtractionLZ"]; - lab = actors["Lab"]; - insertionLZEntryPoint = actors["InsertionLZEntryPoint"]; - chinookExitPoint = actors["ChinookExitPoint"]; - extractionLZEntryPoint = actors["ExtractionLZEntryPoint"]; - shipSpawnPoint = actors["ShipSpawnPoint"]; - shipMovePoint = actors["ShipMovePoint"]; - attackEntryPoint1 = actors["SovietAttackEntryPoint1"]; - attackEntryPoint2 = actors["SovietAttackEntryPoint2"]; - SetAlliedUnitsToDefensiveStance(); - - wr.Viewport.Center(insertionLZ.CenterPosition); - - if (w.LobbyInfo.IsSinglePlayer) - Media.PlayFMVFullscreen(w, "ally1.vqa", () => - Media.PlayFMVFullscreen(w, "landing.vqa", () => - { - InsertTanyaAtLZ(); - SendPatrol(); - MissionUtils.PlayMissionMusic(); - }) - ); - else - { - InsertTanyaAtLZ(); - SendPatrol(); - MissionUtils.PlayMissionMusic(); - } - } - } -} diff --git a/OpenRA.Mods.RA/Missions/Allies02Script.cs b/OpenRA.Mods.RA/Missions/Allies02Script.cs deleted file mode 100644 index ee017320c4..0000000000 --- a/OpenRA.Mods.RA/Missions/Allies02Script.cs +++ /dev/null @@ -1,478 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 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. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using OpenRA.FileFormats; -using OpenRA.Graphics; -using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Air; -using OpenRA.Mods.RA.Buildings; -using OpenRA.Mods.RA.Effects; -using OpenRA.Mods.RA.Move; -using OpenRA.Traits; -using OpenRA.Widgets; - -namespace OpenRA.Mods.RA.Missions -{ - class Allies02ScriptInfo : TraitInfo, Requires { } - - class Allies02Script : IHasObjectives, IWorldLoaded, ITick - { - public event Action OnObjectivesUpdated = notify => { }; - - public IEnumerable Objectives { get { return new[] { findEinstein, destroySamSites, extractEinstein, maintainPresence, fewDeaths }; } } - - Objective findEinstein = new Objective(ObjectiveType.Primary, FindEinsteinText, ObjectiveStatus.InProgress); - Objective destroySamSites = new Objective(ObjectiveType.Primary, DestroySamSitesText, ObjectiveStatus.InProgress); - Objective extractEinstein = new Objective(ObjectiveType.Primary, ExtractEinsteinText, ObjectiveStatus.Inactive); - Objective maintainPresence = new Objective(ObjectiveType.Primary, MaintainPresenceText, ObjectiveStatus.InProgress); - Objective fewDeaths = new Objective(ObjectiveType.Secondary, "", ObjectiveStatus.InProgress); - - const string FindEinsteinText = "Find Einstein's crashed helicopter. Tanya must survive."; - const string DestroySamSitesText = "Destroy the SAM sites. Tanya must survive."; - const string ExtractEinsteinText = "Wait for the helicopter and extract Einstein. Tanya and Einstein must survive."; - const string MaintainPresenceText = "Maintain an Allied presence in the area. Reinforcements will arrive soon."; - - const string FewDeathsTemplate = "Lose fewer than {0}/{1} units."; - - const int DeathsThreshold = 200; - - Actor sam1; - Actor sam2; - Actor sam3; - Actor sam4; - Actor[] sams; - Actor tanya; - Actor einstein; - Actor engineer; - - Actor chinookHusk; - Actor allies2BasePoint; - Actor reinforcementsEntryPoint; - Actor extractionLZEntryPoint; - Actor extractionLZ; - Actor badgerEntryPoint1; - Actor badgerEntryPoint2; - Actor badgerDropPoint1; - Actor badgerDropPoint2; - Actor badgerDropPoint3; - Actor parabombPoint1; - Actor parabombPoint2; - Actor sovietRallyPoint; - Actor townPoint; - Actor sovietTownAttackPoint1; - Actor sovietTownAttackPoint2; - Actor yakEntryPoint; - Actor yakAttackPoint; - Actor yak; - - Actor einsteinChinook; - - World world; - Player allies; - Player allies1; - Player allies2; - Player soviets; - - Actor sovietBarracks; - Actor sovietWarFactory; - - CountdownTimer reinforcementsTimer; - CountdownTimerWidget reinforcementsTimerWidget; - - CPos alliedBaseTopLeft; - CPos alliedBaseBottomRight; - - const string InfantryQueueName = "Infantry"; - const string VehicleQueueName = "Vehicle"; - static readonly string[] SovietInfantry = { "e1", "e2", "e3" }; - static readonly string[] SovietVehicles1 = { "3tnk" }; - static readonly string[] SovietVehicles2 = { "3tnk", "v2rl" }; - const int SovietVehiclesUpgradeTicks = 1500 * 4; - const int SovietGroupSize = 5; - - const int ReinforcementsTicks = 1500 * 16; - static readonly string[] Reinforcements = - { - "2tnk", "2tnk", "2tnk", "2tnk", "2tnk", "2tnk", - "1tnk", "1tnk", - "jeep", - "e1", "e1", "e1", "e1", - "e3", "e3", - "mcv", - "truk", "truk", "truk", "truk", "truk", "truk" - }; - int currentReinforcement = -1; - - const int ParabombTicks = 750; - - const int ParatroopersTicks = 1500 * 5; - static readonly string[] Badger1Passengers = { "e1", "e1", "e1", "e2", "3tnk" }; - static readonly string[] Badger2Passengers = { "e1", "e1", "e1", "e2", "e2" }; - static readonly string[] Badger3Passengers = { "e1", "e1", "e1", "e2", "e2" }; - - const string SignalFlareName = "flare"; - const string YakName = "yak"; - - const int AlliedTownTransferRange = 15; - const int SovietTownAttackGroupRange = 5; - const int SovietTownMoveNearEnough = 3; - - void MissionFailed(string text) - { - MissionUtils.CoopMissionFailed(world, text, allies1, allies2); - if (reinforcementsTimer != null) - reinforcementsTimerWidget.Visible = false; - } - - void MissionAccomplished(string text) - { - MissionUtils.CoopMissionAccomplished(world, text, allies1, allies2); - } - - public void Tick(Actor self) - { - if (allies1.WinState != WinState.Undefined) return; - - if (world.FrameNumber % 50 == 1 && chinookHusk.IsInWorld) - world.Add(new Smoke(world, chinookHusk.CenterPosition, "smoke_m")); - - if (world.FrameNumber == 1) - { - InitializeSovietFactories(); - StartReinforcementsTimer(); - } - - reinforcementsTimer.Tick(); - - if (world.FrameNumber == ParatroopersTicks) - { - MissionUtils.Paradrop(world, soviets, Badger1Passengers, badgerEntryPoint1.Location, badgerDropPoint1.Location); - MissionUtils.Paradrop(world, soviets, Badger2Passengers, badgerEntryPoint1.Location + new CVec(3, 0), badgerDropPoint2.Location); - MissionUtils.Paradrop(world, soviets, Badger3Passengers, badgerEntryPoint1.Location + new CVec(6, 0), badgerDropPoint3.Location); - } - if (world.FrameNumber == ParabombTicks) - { - MissionUtils.Parabomb(world, soviets, badgerEntryPoint2.Location, parabombPoint1.Location); - MissionUtils.Parabomb(world, soviets, badgerEntryPoint2.Location + new CVec(0, 3), parabombPoint2.Location); - } - - if (allies1 != allies2) - { - if (yak == null || (yak != null && !yak.IsDead() && (yak.GetCurrentActivity() is FlyCircle || yak.IsIdle))) - { - var alliedUnitsNearYakPoint = world.FindAliveCombatantActorsInCircle(yakAttackPoint.CenterPosition, WRange.FromCells(10)) - .Where(a => a.Owner != soviets && a.HasTrait() && a != tanya && a != einstein && a != engineer); - if (alliedUnitsNearYakPoint.Any()) - YakStrafe(alliedUnitsNearYakPoint); - } - } - - if (currentReinforcement > -1 && currentReinforcement < Reinforcements.Length && world.FrameNumber % 25 == 0) - SpawnAlliedUnit(Reinforcements[currentReinforcement++]); - - if (world.FrameNumber % 25 == 0) - { - BuildSovietUnits(); - ManageSovietUnits(); - } - - UpdateDeaths(); - - if (findEinstein.Status == ObjectiveStatus.InProgress) - { - if (AlliesNearTown()) - { - findEinstein.Status = ObjectiveStatus.Completed; - OnObjectivesUpdated(true); - TransferTownUnitsToAllies(); - SovietsAttackTown(); - } - } - if (destroySamSites.Status == ObjectiveStatus.InProgress) - { - if (sams.All(s => s.IsDead() || s.Owner != soviets)) - { - destroySamSites.Status = ObjectiveStatus.Completed; - extractEinstein.Status = ObjectiveStatus.InProgress; - - OnObjectivesUpdated(true); - - world.CreateActor(SignalFlareName, new TypeDictionary { new OwnerInit(allies1), new LocationInit(extractionLZ.Location) }); - Sound.Play("flaren1.aud"); - ExtractEinsteinAtLZ(); - } - } - if (extractEinstein.Status == ObjectiveStatus.InProgress && einsteinChinook != null) - { - if (einsteinChinook.IsDead()) - { - extractEinstein.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("The extraction helicopter was destroyed."); - } - else if (!world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait().Passengers.Contains(einstein)) - { - extractEinstein.Status = ObjectiveStatus.Completed; - maintainPresence.Status = ObjectiveStatus.Completed; - - if (fewDeaths.Status == ObjectiveStatus.InProgress) - fewDeaths.Status = ObjectiveStatus.Completed; - - OnObjectivesUpdated(true); - MissionAccomplished("Einstein was rescued."); - } - } - - if (tanya.IsDead()) - MissionFailed("Tanya was killed."); - - else if (einstein.IsDead()) - MissionFailed("Einstein was killed."); - - world.AddFrameEndTask(w => - { - if (!w.FindAliveCombatantActorsInBox(alliedBaseTopLeft, alliedBaseBottomRight) - .Any(a => (a.Owner == allies || a.Owner == allies2) && (a.HasTrait() && !a.HasTrait()) || a.HasTrait())) - { - maintainPresence.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("The Allied reinforcements have been defeated."); - } - }); - } - - void UpdateDeaths() - { - var unitDeaths = allies1.PlayerActor.Trait().UnitsDead + allies2.PlayerActor.Trait().UnitsDead; - fewDeaths.Text = FewDeathsTemplate.F(unitDeaths, DeathsThreshold); - OnObjectivesUpdated(false); - if (unitDeaths >= DeathsThreshold && fewDeaths.Status == ObjectiveStatus.InProgress) - { - fewDeaths.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - } - } - - void YakStrafe(IEnumerable candidates) - { - if (yak == null) - { - var altitude = Rules.Info[YakName].Traits.Get().CruiseAltitude; - yak = world.CreateActor(YakName, new TypeDictionary - { - new CenterPositionInit(yakEntryPoint.CenterPosition + new WVec(WRange.Zero, WRange.Zero, altitude)), - new OwnerInit(soviets), - new FacingInit(Traits.Util.GetFacing(yakAttackPoint.Location - yakEntryPoint.Location, 0)) - }); - } - - if (yak.Trait().HasAmmo()) - yak.QueueActivity(new FlyAttack(Target.FromActor(candidates.Random(world.SharedRandom)))); - - else - { - yak.QueueActivity(new FlyOffMap()); - yak.QueueActivity(new RemoveSelf()); - } - } - - void BuildSovietUnits() - { - if (!sovietBarracks.IsDead()) - BuildSovietUnit(InfantryQueueName, SovietInfantry.Random(world.SharedRandom)); - - if (!sovietWarFactory.IsDead()) - { - var vehicles = world.FrameNumber >= SovietVehiclesUpgradeTicks ? SovietVehicles2 : SovietVehicles1; - BuildSovietUnit(VehicleQueueName, vehicles.Random(world.SharedRandom)); - } - } - - void ManageSovietUnits() - { - var units = world.FindAliveCombatantActorsInCircle(sovietRallyPoint.CenterPosition, WRange.FromCells(10)) - .Where(u => u.IsIdle && u.HasTrait() && u.HasTrait() && u.Owner == soviets) - .Except(world.WorldActor.Trait().Actors.Values); - if (units.Count() >= SovietGroupSize) - { - foreach (var unit in units) - MissionUtils.AttackNearestLandActor(true, unit, allies2); - } - - var scatteredUnits = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && u.IsIdle - && u.HasTrait() && u.HasTrait() && u.Owner == soviets) - .Except(world.WorldActor.Trait().Actors.Values) - .Except(units); - - foreach (var unit in scatteredUnits) - MissionUtils.AttackNearestLandActor(true, unit, allies2); - } - - void SetupAlliedBase() - { - foreach (var actor in world.Actors.Where(a => a.Owner == allies && a != allies.PlayerActor)) - { - actor.ChangeOwner(allies2); - if (actor.Info.Name == "proc") - actor.QueueActivity(new Transform(actor, "proc") { SkipMakeAnims = true }); // for harv spawn - foreach (var c in actor.TraitsImplementing()) - c.OnCapture(actor, actor, allies, allies2); - } - } - - void InitializeSovietFactories() - { - var sbrp = sovietBarracks.Trait(); - var swrp = sovietWarFactory.Trait(); - sbrp.rallyPoint = swrp.rallyPoint = sovietRallyPoint.Location; - sbrp.nearEnough = swrp.nearEnough = 6; - sovietBarracks.Trait().SetPrimaryProducer(sovietBarracks, true); - sovietWarFactory.Trait().SetPrimaryProducer(sovietWarFactory, true); - } - - void BuildSovietUnit(string category, string unit) - { - MissionUtils.StartProduction(world, soviets, category, unit); - } - - void StartReinforcementsTimer() - { - Sound.Play("timergo1.aud"); - reinforcementsTimer = new CountdownTimer(ReinforcementsTicks, ReinforcementsTimerExpired, true); - reinforcementsTimerWidget = new CountdownTimerWidget(reinforcementsTimer, "Allied reinforcements arrive in: {0}"); - Ui.Root.AddChild(reinforcementsTimerWidget); - } - - void ReinforcementsTimerExpired(CountdownTimer countdownTimer) - { - reinforcementsTimerWidget.Visible = false; - currentReinforcement++; - Sound.Play("aarrivs1.aud"); - } - - void SpawnAlliedUnit(string unit) - { - world.CreateActor(unit, new TypeDictionary - { - new LocationInit(reinforcementsEntryPoint.Location), - new FacingInit(0), - new OwnerInit(allies2) - }) - .QueueActivity(new Move.Move(allies2BasePoint.Location)); - } - - void ExtractEinsteinAtLZ() - { - einsteinChinook = MissionUtils.ExtractUnitWithChinook( - world, - allies1, - einstein, - extractionLZEntryPoint.Location, - extractionLZ.Location, - extractionLZEntryPoint.Location); - } - - bool AlliesNearTown() - { - return world.FindAliveCombatantActorsInCircle(townPoint.CenterPosition, WRange.FromCells(AlliedTownTransferRange)) - .Any(a => a.Owner == allies1 && a.HasTrait()); - } - - void TransferTownUnitsToAllies() - { - foreach (var unit in world.FindAliveNonCombatantActorsInCircle(townPoint.CenterPosition, WRange.FromCells(AlliedTownTransferRange)) - .Where(a => a.HasTrait())) - unit.ChangeOwner(allies1); - } - - void SovietsAttackTown() - { - var sovietAttackUnits = world.FindAliveCombatantActorsInCircle(sovietTownAttackPoint1.CenterPosition, WRange.FromCells(SovietTownAttackGroupRange)) - .Union(world.FindAliveCombatantActorsInCircle(sovietTownAttackPoint2.CenterPosition, WRange.FromCells(SovietTownAttackGroupRange))) - .Union(world.FindAliveCombatantActorsInCircle(townPoint.CenterPosition, WRange.FromCells(AlliedTownTransferRange))) - .Where(a => a.HasTrait() && a.Owner == soviets); - - foreach (var unit in sovietAttackUnits) - unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Move.Move(townPoint.Location, SovietTownMoveNearEnough))); - } - - public void WorldLoaded(World w, WorldRenderer wr) - { - world = w; - - allies1 = w.Players.Single(p => p.InternalName == "Allies1"); - allies2 = w.Players.SingleOrDefault(p => p.InternalName == "Allies2"); - - allies1.PlayerActor.Trait().Cash = 5000; - if (allies2 == null) - allies2 = allies1; - else - allies2.PlayerActor.Trait().Cash = 5000; - - allies = w.Players.Single(p => p.InternalName == "Allies"); - soviets = w.Players.Single(p => p.InternalName == "Soviets"); - - soviets.PlayerActor.Trait().Cash = 1000; - - var actors = w.WorldActor.Trait().Actors; - sam1 = actors["SAM1"]; - sam2 = actors["SAM2"]; - sam3 = actors["SAM3"]; - sam4 = actors["SAM4"]; - sams = new[] { sam1, sam2, sam3, sam4 }; - tanya = actors["Tanya"]; - einstein = actors["Einstein"]; - engineer = actors["Engineer"]; - chinookHusk = actors["ChinookHusk"]; - allies2BasePoint = actors["Allies2BasePoint"]; - reinforcementsEntryPoint = actors["ReinforcementsEntryPoint"]; - extractionLZ = actors["ExtractionLZ"]; - extractionLZEntryPoint = actors["ExtractionLZEntryPoint"]; - - badgerEntryPoint1 = actors["BadgerEntryPoint1"]; - badgerEntryPoint2 = actors["BadgerEntryPoint2"]; - badgerDropPoint1 = actors["BadgerDropPoint1"]; - badgerDropPoint2 = actors["BadgerDropPoint2"]; - badgerDropPoint3 = actors["BadgerDropPoint3"]; - - parabombPoint1 = actors["ParabombPoint1"]; - parabombPoint2 = actors["ParabombPoint2"]; - sovietBarracks = actors["SovietBarracks"]; - sovietWarFactory = actors["SovietWarFactory"]; - sovietRallyPoint = actors["SovietRallyPoint"]; - townPoint = actors["TownPoint"]; - sovietTownAttackPoint1 = actors["SovietTownAttackPoint1"]; - sovietTownAttackPoint2 = actors["SovietTownAttackPoint2"]; - yakEntryPoint = actors["YakEntryPoint"]; - yakAttackPoint = actors["YakAttackPoint"]; - - alliedBaseTopLeft = actors["AlliedBaseTopLeft"].Location; - alliedBaseBottomRight = actors["AlliedBaseBottomRight"].Location; - - SetupAlliedBase(); - - var shroud = allies1.Shroud; - shroud.Explore(w, sam1.Location, WRange.FromCells(2)); - shroud.Explore(w, sam2.Location, WRange.FromCells(2)); - shroud.Explore(w, sam3.Location, WRange.FromCells(2)); - shroud.Explore(w, sam4.Location, WRange.FromCells(2)); - - if (w.LocalPlayer == null || w.LocalPlayer == allies1) - wr.Viewport.Center(chinookHusk.CenterPosition); - else - wr.Viewport.Center(allies2BasePoint.CenterPosition); - - MissionUtils.PlayMissionMusic(); - } - } -} diff --git a/OpenRA.Mods.RA/Missions/Allies03Script.cs b/OpenRA.Mods.RA/Missions/Allies03Script.cs deleted file mode 100644 index 501765bf88..0000000000 --- a/OpenRA.Mods.RA/Missions/Allies03Script.cs +++ /dev/null @@ -1,459 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 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. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using OpenRA.FileFormats; -using OpenRA.Graphics; -using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Air; -using OpenRA.Mods.RA.Buildings; -using OpenRA.Mods.RA.Move; -using OpenRA.Traits; -using OpenRA.Widgets; - -namespace OpenRA.Mods.RA.Missions -{ - class Allies03ScriptInfo : TraitInfo, Requires { } - - class Allies03Script : IHasObjectives, IWorldLoaded, ITick - { - public event Action OnObjectivesUpdated = notify => { }; - - public IEnumerable Objectives { get { return new[] { evacuateUnits, destroyAirbases, evacuateMgg }; } } - - Objective evacuateUnits = new Objective(ObjectiveType.Primary, EvacuateUnitsText, ObjectiveStatus.InProgress); - Objective destroyAirbases = new Objective(ObjectiveType.Secondary, DestroyAirbasesText, ObjectiveStatus.InProgress); - Objective evacuateMgg = new Objective(ObjectiveType.Secondary, EvacuateMggText, ObjectiveStatus.InProgress); - - const string EvacuateUnitsText = "Following the rescue of Einstein, the Allies are now being flanked from both sides." - + " Evacuate {0} units before the remaining Allied forces in the area are wiped out."; - const string DestroyAirbasesText = "Destroy the nearby Soviet airbases."; - const string EvacuateMggText = "Einstein has recently developed a technology which allows us to obscure units from the enemy." - + " Evacuate at least one prototype mobile gap generator intact."; - - const string ShortEvacuateTemplate = "{0}/{1} units evacuated"; - - int unitsEvacuatedThreshold; - int unitsEvacuated; - InfoWidget evacuateWidget; - - World world; - Player allies1; - Player allies2; - Player allies; - Player soviets; - - Actor exit1TopLeft; - Actor exit1BottomRight; - Actor exit1ExitPoint; - - Actor exit2TopLeft; - Actor exit2BottomRight; - Actor exit2ExitPoint; - - Actor sovietEntryPoint1; - Actor sovietEntryPoint2; - Actor sovietEntryPoint3; - Actor sovietEntryPoint4; - Actor sovietEntryPoint5; - Actor sovietEntryPoint6; - CPos[] sovietEntryPoints; - Actor sovietRallyPoint1; - Actor sovietRallyPoint2; - Actor sovietRallyPoint3; - Actor sovietRallyPoint4; - Actor sovietRallyPoint5; - Actor sovietRallyPoint6; - CPos[] sovietRallyPoints; - - Actor[] sovietAirfields; - - Rectangle paradropBox; - - const int ReinforcementsTicks1 = 1500 * 5; - static readonly string[] Reinforcements1 = { "mgg", "2tnk", "2tnk", "2tnk", "2tnk", "1tnk", "1tnk", "jeep", "jeep", "e1", "e1", "e1", "e1", "e3", "e3" }; - int currentReinforcement1; - - const int ReinforcementsTicks2 = 1500 * 10; - static readonly string[] Reinforcements2 = { "mgg", "2tnk", "2tnk", "2tnk", "2tnk", "truk", "truk", "truk", "truk", "truk", "truk", "1tnk", "1tnk", "jeep", "jeep" }; - int currentReinforcement2; - - static readonly string[] SovietUnits1 = { "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "v2rl", "v2rl", "ftrk", "apc", "e1", "e1", "e2", "e3", "e3", "e4" }; - static readonly string[] SovietUnits2 = { "4tnk", "4tnk", "4tnk", "4tnk", "3tnk", "3tnk", "3tnk", "3tnk", "v2rl", "v2rl", "ftrk", "apc", "e1", "e1", "e2", "e3", "e3", "e4" }; - int sovietUnits2Ticks; - const int SovietGroupSize = 5; - - int sovietParadropTicks; - const int ParadropIncrement = 200; - static readonly string[] ParadropTerrainTypes = { "Clear", "Road", "Rough", "Beach", "Ore" }; - static readonly string[] SovietParadroppers = { "e1", "e1", "e3", "e3", "e4" }; - int sovietParadrops; - int maxSovietYaks; - - int attackAtFrame; - int attackAtFrameIncrement; - int minAttackAtFrame; - - Actor allies1EntryPoint; - Actor allies1MovePoint; - - Actor allies2EntryPoint; - Actor allies2MovePoint; - - const string McvName = "mcv"; - const string YakName = "yak"; - - string difficulty; - - void MissionFailed(string text) - { - MissionUtils.CoopMissionFailed(world, text, allies1, allies2); - } - - void MissionAccomplished(string text) - { - MissionUtils.CoopMissionAccomplished(world, text, allies1, allies2); - } - - public void Tick(Actor self) - { - if (allies1.WinState != WinState.Undefined) return; - - if (world.FrameNumber == 1) - { - SpawnAlliedUnit(McvName); - evacuateWidget = new InfoWidget(""); - Ui.Root.AddChild(evacuateWidget); - UpdateUnitsEvacuated(); - } - if (world.FrameNumber == attackAtFrame) - { - SpawnSovietUnits(); - attackAtFrame += attackAtFrameIncrement; - attackAtFrameIncrement = Math.Max(attackAtFrameIncrement - 5, minAttackAtFrame); - } - - if (world.FrameNumber == ReinforcementsTicks1 || world.FrameNumber == ReinforcementsTicks2) - Sound.Play("reinfor1.aud"); - - if (world.FrameNumber % 25 == 0) - { - if (world.FrameNumber >= ReinforcementsTicks1 && currentReinforcement1 < Reinforcements1.Length) - SpawnAlliedUnit(Reinforcements1[currentReinforcement1++]); - - if (world.FrameNumber >= ReinforcementsTicks2 && currentReinforcement2 < Reinforcements2.Length) - SpawnAlliedUnit(Reinforcements2[currentReinforcement2++]); - } - - - if (sovietParadrops > 0) - { - if (world.FrameNumber == sovietParadropTicks) - Sound.Play("sovfapp1.aud"); - - if (world.FrameNumber >= sovietParadropTicks && world.FrameNumber % ParadropIncrement == 0) - { - CPos lz; - CPos entry; - do - { - var x = world.SharedRandom.Next(paradropBox.X, paradropBox.X + paradropBox.Width); - var y = world.SharedRandom.Next(paradropBox.Y, paradropBox.Y + paradropBox.Height); - entry = new CPos(0, y); - lz = new CPos(x, y); - } - while (!ParadropTerrainTypes.Contains(world.GetTerrainType(lz))); - MissionUtils.Paradrop(world, soviets, SovietParadroppers, entry, lz); - sovietParadrops--; - } - } - if (world.FrameNumber % 25 == 0) - ManageSovietUnits(); - - if (destroyAirbases.Status != ObjectiveStatus.Completed) - { - if (world.FrameNumber % 25 == 0) - BuildSovietAircraft(); - - ManageSovietAircraft(); - } - - EvacuateAlliedUnits(exit1TopLeft.Location, exit1BottomRight.Location, exit1ExitPoint.Location); - EvacuateAlliedUnits(exit2TopLeft.Location, exit2BottomRight.Location, exit2ExitPoint.Location); - - CheckSovietAirbases(); - - if (!world.Actors.Any(a => (a.Owner == allies1 || a.Owner == allies2) && a.IsInWorld && !a.IsDead() - && ((a.HasTrait() && !a.HasTrait()) || a.HasTrait()))) - { - evacuateUnits.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("The remaining Allied forces in the area have been wiped out."); - } - } - - Actor FirstUnshroudedOrDefault(IEnumerable actors, World world, int shroudRange) - { - return actors.FirstOrDefault(u => world.FindAliveCombatantActorsInCircle(u.CenterPosition, WRange.FromCells(shroudRange)).All(a => !a.HasTrait())); - } - - void ManageSovietAircraft() - { - var enemies = world.Actors - .Where(u => (u.Owner == allies1 || u.Owner == allies2) - && ((u.HasTrait() && !u.HasTrait()) || u.HasTrait()) && u.IsInWorld && !u.IsDead() - && (!u.HasTrait() || !u.Trait().Disguised || (u.Trait().Disguised && u.Trait().disguisedAsPlayer != soviets))); - - foreach (var aircraft in SovietAircraft()) - { - var pos = aircraft.CenterPosition; - var plane = aircraft.Trait(); - var ammo = aircraft.Trait(); - if ((pos.Z == 0 && ammo.FullAmmo()) || (pos.Z != 0 && ammo.HasAmmo())) - { - var enemy = FirstUnshroudedOrDefault(enemies.OrderBy(u => (aircraft.CenterPosition - u.CenterPosition).LengthSquared), world, 10); - if (enemy != null) - { - if (!aircraft.IsIdle && aircraft.GetCurrentActivity().GetType() != typeof(FlyAttack)) - aircraft.CancelActivity(); - - if (pos.Z == 0) - plane.UnReserve(); - - aircraft.QueueActivity(new FlyAttack(Target.FromActor(enemy))); - } - } - else if (pos.Z != 0 && !LandIsQueued(aircraft)) - { - aircraft.CancelActivity(); - aircraft.QueueActivity(new ReturnToBase(aircraft, null)); - aircraft.QueueActivity(new ResupplyAircraft()); - } - } - } - - bool LandIsQueued(Actor actor) - { - for (var a = actor.GetCurrentActivity(); a != null; a = a.NextActivity) - if (a is ReturnToBase || a is Land) return true; - return false; - } - - void BuildSovietAircraft() - { - var queue = MissionUtils.FindQueues(world, soviets, "Plane").FirstOrDefault(q => q.CurrentItem() == null); - if (queue == null || SovietAircraft().Count() >= maxSovietYaks) return; - - queue.ResolveOrder(queue.self, Order.StartProduction(queue.self, YakName, 1)); - } - - IEnumerable SovietAircraft() - { - return world.Actors.Where(a => a.HasTrait() && a.Owner == soviets && a.IsInWorld && !a.IsDead()); - } - - void CheckSovietAirbases() - { - if (destroyAirbases.Status != ObjectiveStatus.Completed && sovietAirfields.All(a => a.IsDead() || a.Owner != soviets)) - { - destroyAirbases.Status = ObjectiveStatus.Completed; - OnObjectivesUpdated(true); - } - } - - void SpawnSovietUnits() - { - var route = world.SharedRandom.Next(sovietEntryPoints.Length); - var spawnPoint = sovietEntryPoints[route]; - var rallyPoint = sovietRallyPoints[route]; - - IEnumerable units; - if (world.FrameNumber >= sovietUnits2Ticks) - units = SovietUnits2; - else - units = SovietUnits1; - - var unit = world.CreateActor(units.Random(world.SharedRandom), - new TypeDictionary - { - new LocationInit(spawnPoint), - new OwnerInit(soviets) - }); - unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Move.Move(rallyPoint, 3))); - } - - void AttackNearestAlliedActor(Actor self) - { - var enemies = world.Actors.Where(u => u.AppearsHostileTo(self) && (u.Owner == allies1 || u.Owner == allies2) - && ((u.HasTrait() && !u.HasTrait()) || u.HasTrait()) && u.IsInWorld && !u.IsDead()); - - var enemy = FirstUnshroudedOrDefault(enemies.OrderBy(u => (self.CenterPosition - u.CenterPosition).LengthSquared), world, 10); - if (enemy != null) - self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(enemy), WRange.FromCells(3)))); - } - - void ManageSovietUnits() - { - foreach (var rallyPoint in sovietRallyPoints) - { - var units = world.FindAliveCombatantActorsInCircle(rallyPoint.CenterPosition, WRange.FromCells(10)) - .Where(u => u.IsIdle && u.HasTrait() && u.HasTrait() && u.Owner == soviets); - if (units.Count() >= SovietGroupSize) - { - foreach (var unit in units) - AttackNearestAlliedActor(unit); - } - } - - var scatteredUnits = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && u.HasTrait() && u.IsIdle && u.Owner == soviets) - .Except(world.WorldActor.Trait().Actors.Values) - .Except(sovietRallyPoints.SelectMany(rp => world.FindAliveCombatantActorsInCircle(rp.CenterPosition, WRange.FromCells(10)))); - - foreach (var unit in scatteredUnits) - AttackNearestAlliedActor(unit); - } - - void SpawnAlliedUnit(string actor) - { - SpawnAndMove(actor, allies1, allies1EntryPoint.Location, allies1MovePoint.Location); - if (allies1 != allies2) - SpawnAndMove(actor, allies2, allies2EntryPoint.Location, allies2MovePoint.Location); - } - - Actor SpawnAndMove(string actor, Player owner, CPos entry, CPos to) - { - var unit = world.CreateActor(actor, new TypeDictionary - { - new OwnerInit(owner), - new LocationInit(entry), - new FacingInit(Traits.Util.GetFacing(to - entry, 0)) - }); - unit.QueueActivity(new Move.Move(to)); - return unit; - } - - void UpdateUnitsEvacuated() - { - evacuateWidget.Text = ShortEvacuateTemplate.F(unitsEvacuated, unitsEvacuatedThreshold); - if (evacuateUnits.Status == ObjectiveStatus.InProgress && unitsEvacuated >= unitsEvacuatedThreshold) - { - evacuateUnits.Status = ObjectiveStatus.Completed; - OnObjectivesUpdated(true); - MissionAccomplished("The remaining Allied forces in the area have evacuated."); - } - } - - void EvacuateAlliedUnits(CPos tl, CPos br, CPos exit) - { - var units = world.FindAliveCombatantActorsInBox(tl, br) - .Where(u => u.HasTrait() && !u.HasTrait() && (u.Owner == allies1 || u.Owner == allies2)); - - foreach (var unit in units) - { - unit.CancelActivity(); - unit.ChangeOwner(allies); - unitsEvacuated++; - - var createsShroud = unit.TraitOrDefault(); - if (createsShroud != null && evacuateMgg.Status == ObjectiveStatus.InProgress) - { - evacuateMgg.Status = ObjectiveStatus.Completed; - OnObjectivesUpdated(true); - } - - var cargo = unit.TraitOrDefault(); - if (cargo != null) - unitsEvacuated += cargo.Passengers.Count(); - - UpdateUnitsEvacuated(); - unit.QueueActivity(new Move.Move(exit)); - unit.QueueActivity(new RemoveSelf()); - } - } - - public void WorldLoaded(World w, WorldRenderer wr) - { - world = w; - - difficulty = w.LobbyInfo.GlobalSettings.Difficulty; - Game.Debug("{0} difficulty selected".F(difficulty)); - - allies1 = w.Players.Single(p => p.InternalName == "Allies1"); - allies2 = w.Players.SingleOrDefault(p => p.InternalName == "Allies2"); - - var res = allies1.PlayerActor.Trait(); - if (allies2 == null) - { - res.Cash = 10000; - allies2 = allies1; - } - else - { - res.Cash = 5000; - res = allies2.PlayerActor.Trait(); - res.Cash = 5000; - } - - attackAtFrame = attackAtFrameIncrement = difficulty == "Hard" || difficulty == "Normal" ? 500 : 600; - minAttackAtFrame = difficulty == "Hard" || difficulty == "Normal" ? 100 : 150; - unitsEvacuatedThreshold = difficulty == "Hard" ? 200 : difficulty == "Normal" ? 100 : 50; - maxSovietYaks = difficulty == "Hard" ? 4 : difficulty == "Normal" ? 2 : 0; - sovietParadrops = difficulty == "Hard" ? 40 : difficulty == "Normal" ? 20 : 0; - sovietParadropTicks = difficulty == "Hard" ? 1500 * 17 : 1500 * 20; - sovietUnits2Ticks = difficulty == "Hard" ? 1500 * 12 : 1500 * 15; - - evacuateUnits.Text = evacuateUnits.Text.F(unitsEvacuatedThreshold); - - allies = w.Players.Single(p => p.InternalName == "Allies"); - soviets = w.Players.Single(p => p.InternalName == "Soviets"); - - var actors = w.WorldActor.Trait().Actors; - exit1TopLeft = actors["Exit1TopLeft"]; - exit1BottomRight = actors["Exit1BottomRight"]; - exit1ExitPoint = actors["Exit1ExitPoint"]; - exit2TopLeft = actors["Exit2TopLeft"]; - exit2BottomRight = actors["Exit2BottomRight"]; - exit2ExitPoint = actors["Exit2ExitPoint"]; - allies1EntryPoint = actors["Allies1EntryPoint"]; - allies1MovePoint = actors["Allies1MovePoint"]; - allies2EntryPoint = actors["Allies2EntryPoint"]; - allies2MovePoint = actors["Allies2MovePoint"]; - sovietEntryPoint1 = actors["SovietEntryPoint1"]; - sovietEntryPoint2 = actors["SovietEntryPoint2"]; - sovietEntryPoint3 = actors["SovietEntryPoint3"]; - sovietEntryPoint4 = actors["SovietEntryPoint4"]; - sovietEntryPoint5 = actors["SovietEntryPoint5"]; - sovietEntryPoint6 = actors["SovietEntryPoint6"]; - sovietEntryPoints = new[] { sovietEntryPoint1, sovietEntryPoint2, sovietEntryPoint3, sovietEntryPoint4, sovietEntryPoint5, sovietEntryPoint6 }.Select(p => p.Location).ToArray(); - sovietRallyPoint1 = actors["SovietRallyPoint1"]; - sovietRallyPoint2 = actors["SovietRallyPoint2"]; - sovietRallyPoint3 = actors["SovietRallyPoint3"]; - sovietRallyPoint4 = actors["SovietRallyPoint4"]; - sovietRallyPoint5 = actors["SovietRallyPoint5"]; - sovietRallyPoint6 = actors["SovietRallyPoint6"]; - sovietRallyPoints = new[] { sovietRallyPoint1, sovietRallyPoint2, sovietRallyPoint3, sovietRallyPoint4, sovietRallyPoint5, sovietRallyPoint6 }.Select(p => p.Location).ToArray(); - sovietAirfields = actors.Values.Where(a => a.Owner == soviets && a.HasTrait() && a.Info.Traits.Get().Produces.Contains("Plane")).ToArray(); - var topLeft = actors["ParadropBoxTopLeft"]; - var bottomRight = actors["ParadropBoxBottomRight"]; - paradropBox = new Rectangle(topLeft.Location.X, topLeft.Location.Y, bottomRight.Location.X - topLeft.Location.X, bottomRight.Location.Y - topLeft.Location.Y); - - if (w.LocalPlayer == null || w.LocalPlayer == allies1) - wr.Viewport.Center(allies1EntryPoint.CenterPosition); - else - wr.Viewport.Center(allies2EntryPoint.CenterPosition); - - OnObjectivesUpdated(false); - MissionUtils.PlayMissionMusic(); - } - } -} diff --git a/OpenRA.Mods.RA/Missions/Allies04Script.cs b/OpenRA.Mods.RA/Missions/Allies04Script.cs deleted file mode 100644 index b5b2fb1b04..0000000000 --- a/OpenRA.Mods.RA/Missions/Allies04Script.cs +++ /dev/null @@ -1,576 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 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. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using OpenRA.FileFormats; -using OpenRA.Graphics; -using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Buildings; -using OpenRA.Mods.RA.Move; -using OpenRA.Mods.RA.Render; -using OpenRA.Traits; -using OpenRA.Widgets; - -namespace OpenRA.Mods.RA.Missions -{ - class Allies04ScriptInfo : TraitInfo, Requires { } - - class Allies04Script : IHasObjectives, IWorldLoaded, ITick - { - public event Action OnObjectivesUpdated = notify => { }; - - public IEnumerable Objectives { get { return new[] { infiltrateLab, destroyBase }; } } - - Objective infiltrateLab = new Objective(ObjectiveType.Primary, "", ObjectiveStatus.InProgress); - Objective destroyBase = new Objective(ObjectiveType.Primary, DestroyBaseText, ObjectiveStatus.Inactive); - - const string InfiltrateLabTemplate = "The Soviets are currently developing a new defensive system named the \"Iron Curtain\" at their main research laboratory." - + " Get our {0} into the laboratory undetected."; - - const string DestroyBaseText = "Secure the laboratory and destroy the rest of the Soviet base. Ensure that the laboratory is not destroyed."; - - Actor hijackTruck; - Actor baseGuard; - Actor baseGuardMovePos; - Actor baseGuardTruckPos; - Actor lab; - int baseGuardTicks = 100; - - Actor allies1Spy; - Actor allies2Spy; - bool allies1SpyInfiltratedLab; - bool allies2SpyInfiltratedLab; - int frameInfiltrated = -1; - - CountdownTimer destroyBaseTimer; - CountdownTimerWidget destroyBaseTimerWidget; - - Player allies1; - Player allies2; - Player soviets; - Player creeps; - World world; - WorldRenderer worldRenderer; - - List patrols; - CPos[] patrolPoints1; - CPos[] patrolPoints2; - CPos[] patrolPoints3; - CPos[] patrolPoints4; - CPos[] patrolPoints5; - - Actor reinforcementsEntryPoint; - Actor reinforcementsUnloadPoint; - - Actor spyReinforcementsEntryPoint; - Actor spyReinforcementsUnloadPoint; - Actor spyReinforcementsExitPoint; - - string difficulty; - int destroyBaseTicks; - - int nextCivilianMove = 1; - - Actor bridgeTank; - Actor bridgeAttackPoint; - Actor bridge; - bool attackingBridge; - - bool attackingTown = true; - Actor[] townAttackers; - - void MissionFailed(string text) - { - MissionUtils.CoopMissionFailed(world, text, allies1, allies2); - } - - void MissionAccomplished(string text) - { - MissionUtils.CoopMissionAccomplished(world, text, allies1, allies2); - } - - public void Tick(Actor self) - { - if (allies1.WinState != WinState.Undefined) return; - - if (world.FrameNumber == 1) - InsertSpies(); - - if (frameInfiltrated != -1) - { - if (world.FrameNumber == frameInfiltrated + 100) - { - Sound.Play("aarrivs1.aud"); - worldRenderer.Viewport.Center(reinforcementsUnloadPoint.CenterPosition); - world.AddFrameEndTask(w => SendReinforcements()); - } - if (world.FrameNumber == frameInfiltrated + 200) - { - Sound.Play("timergo1.aud"); - destroyBaseTimer = new CountdownTimer(destroyBaseTicks, OnDestroyBaseTimerExpired, true); - destroyBaseTimerWidget = new CountdownTimerWidget(destroyBaseTimer, "Secure lab in: {0}"); - Ui.Root.AddChild(destroyBaseTimerWidget); - } - - if (world.FrameNumber >= frameInfiltrated + 200) - destroyBaseTimer.Tick(); - - if (world.FrameNumber == frameInfiltrated + 1500 * 12 && !bridgeTank.IsDead() && bridgeTank.IsInWorld && !bridge.IsDead()) - { - bridgeTank.QueueActivity(new Attack(Target.FromPos(bridge.CenterPosition), WRange.FromCells(4))); - attackingBridge = true; - } - if (attackingBridge && bridge.IsDead()) - { - if (!bridgeTank.IsDead()) - bridgeTank.CancelActivity(); - attackingBridge = false; - } - - if (world.FrameNumber == frameInfiltrated + 1500 * 6) - foreach (var attacker in townAttackers.Where(a => !a.IsDead() && a.IsInWorld)) - { - attacker.CancelActivity(); - attacker.QueueActivity(new AttackMove.AttackMoveActivity(attacker, new Move.Move(reinforcementsUnloadPoint.Location + new CVec(10, -15), 3))); - } - } - - if (attackingTown) - { - foreach (var attacker in townAttackers.Where(u => u.IsIdle && !u.IsDead() && u.IsInWorld)) - { - var enemies = world.Actors.Where(u => u.Owner == creeps && u.HasTrait() - && ((u.HasTrait() && !u.HasTrait() && !u.HasTrait()) || u.HasTrait()) && !u.IsDead() && u.IsInWorld); - - var enemy = enemies.ClosestTo(attacker); - if (enemy != null) - attacker.QueueActivity(new AttackMove.AttackMoveActivity(attacker, new Attack(Target.FromActor(enemy), WRange.FromCells(3)))); - else - { - attackingTown = false; - break; - } - } - } - - foreach (var patrol in patrols) - patrol.DoPatrol(); - - MissionUtils.CapOre(soviets); - - BaseGuardTick(); - - if (world.FrameNumber == nextCivilianMove) - { - var civilians = world.Actors.Where(a => !a.IsDead() && a.IsInWorld && a.Owner == creeps && a.HasTrait()); - if (civilians.Any()) - { - var civilian = civilians.Random(world.SharedRandom); - civilian.Trait().Nudge(civilian, civilian, true); - nextCivilianMove += world.SharedRandom.Next(1, 75); - } - } - - world.AddFrameEndTask(w => - { - if ((allies1Spy.IsDead() && !allies1SpyInfiltratedLab) || (allies2Spy != null && allies2Spy.IsDead() && !allies2SpyInfiltratedLab)) - { - infiltrateLab.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("{0} spy was killed.".F(allies1 != allies2 ? "A" : "The")); - } - else if (lab.IsDead()) - { - if (infiltrateLab.Status == ObjectiveStatus.InProgress) - infiltrateLab.Status = ObjectiveStatus.Failed; - else if (destroyBase.Status == ObjectiveStatus.InProgress) - destroyBase.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("The Soviet research laboratory was destroyed."); - } - else if (!world.Actors.Any(a => (a.Owner == allies1 || a.Owner == allies2) && !a.IsDead() - && (a.HasTrait() && !a.HasTrait()) || a.HasTrait())) - { - destroyBase.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("The remaining Allied forces in the area have been wiped out."); - } - else if (SovietBaseDestroyed() && infiltrateLab.Status == ObjectiveStatus.Completed) - { - destroyBase.Status = ObjectiveStatus.Completed; - OnObjectivesUpdated(true); - MissionAccomplished("The Soviet research laboratory has been secured successfully."); - } - }); - } - - bool SovietBaseDestroyed() - { - return !world.Actors.Any(a => a.Owner == soviets && a.IsInWorld && !a.IsDead() - && a.HasTrait() && !a.HasTrait() && !a.HasTrait() && a != lab); - } - - void OnDestroyBaseTimerExpired(CountdownTimer t) - { - if (SovietBaseDestroyed() && infiltrateLab.Status == ObjectiveStatus.Completed) return; - destroyBase.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("The Soviet research laboratory was not secured in time."); - } - - void BaseGuardTick() - { - if (baseGuardTicks <= 0 || baseGuard.IsDead() || !baseGuard.IsInWorld) return; - - if (hijackTruck.Location == baseGuardTruckPos.Location) - { - if (--baseGuardTicks <= 0) - baseGuard.QueueActivity(new Move.Move(baseGuardMovePos.Location)); - } - else - baseGuardTicks = 100; - } - - void OnLabInfiltrated(Actor spy) - { - if (spy == allies1Spy) allies1SpyInfiltratedLab = true; - else if (spy == allies2Spy) allies2SpyInfiltratedLab = true; - - if (allies1SpyInfiltratedLab && (allies2SpyInfiltratedLab || allies2Spy == null)) - { - infiltrateLab.Status = ObjectiveStatus.Completed; - destroyBase.Status = ObjectiveStatus.InProgress; - OnObjectivesUpdated(true); - frameInfiltrated = world.FrameNumber; - - foreach (var actor in world.Actors.Where(a => !a.IsDead() && a.HasTrait())) - actor.QueueActivity(false, new Transform(actor, actor.Info.Traits.Get().ToActor) { SkipMakeAnims = true }); - } - } - - void SendReinforcements() - { - var lst = world.CreateActor("lst.unselectable", new TypeDictionary - { - new OwnerInit(allies1), - new LocationInit(reinforcementsEntryPoint.Location) - }); - lst.Trait().Load(lst, world.CreateActor(false, "mcv", new TypeDictionary { new OwnerInit(allies1) })); - if (allies1 != allies2) - lst.Trait().Load(lst, world.CreateActor(false, "mcv", new TypeDictionary { new OwnerInit(allies2) })); - - lst.QueueActivity(new Move.Move(reinforcementsUnloadPoint.Location)); - lst.QueueActivity(new Wait(10)); - - lst.QueueActivity(new CallFunc(() => - { - allies1.PlayerActor.Trait().GiveCash(allies1 == allies2 ? 5000 : 2500); - if (allies1 != allies2) - allies2.PlayerActor.Trait().GiveCash(2500); - })); - - lst.AddTrait(new TransformedAction(self => - { - self.QueueActivity(new Wait(10)); - self.QueueActivity(new Move.Move(reinforcementsEntryPoint.Location)); - self.QueueActivity(new RemoveSelf()); - })); - lst.QueueActivity(new UnloadCargo(lst, true)); - lst.QueueActivity(new Transform(lst, "lst.unselectable.nocargo") { SkipMakeAnims = true }); - } - - class Patrol - { - Actor[] actors; - CPos[] points; - int pointIndex; - World world; - - public Patrol(World world, string[] actorNames, Player owner, CPos[] points, int pointIndex) - { - this.world = world; - this.points = points; - this.pointIndex = pointIndex; - var td = new TypeDictionary { new OwnerInit(owner), new LocationInit(points[pointIndex]) }; - actors = actorNames.Select(a => world.CreateActor(a, td)).ToArray(); - } - - public void DoPatrol() - { - if (actors.Any(a => a.IsDead() || !a.IsIdle || !a.IsInWorld)) return; - - pointIndex = (pointIndex + 1) % points.Length; - foreach (var actor in actors.Where(a => !a.IsDead() && a.IsInWorld)) - { - actor.QueueActivity(new Wait(world.SharedRandom.Next(50, 75))); - actor.QueueActivity(new AttackMove.AttackMoveActivity(actor, new Move.Move(points[pointIndex], 0))); - } - } - } - - void InsertSpies() - { - var lst = world.CreateActor("lst.unselectable", new TypeDictionary - { - new OwnerInit(allies1), - new LocationInit(spyReinforcementsEntryPoint.Location) - }); - - allies1Spy = world.CreateActor(false, "spy.strong", new TypeDictionary { new OwnerInit(allies1) }); - lst.Trait().Load(lst, allies1Spy); - if (allies1 != allies2) - { - allies2Spy = world.CreateActor(false, "spy.strong", new TypeDictionary { new OwnerInit(allies2) }); - lst.Trait().Load(lst, allies2Spy); - } - - lst.AddTrait(new TransformedAction(self => - { - self.QueueActivity(new Wait(10)); - self.QueueActivity(new Move.Move(spyReinforcementsExitPoint.Location)); - self.QueueActivity(new RemoveSelf()); - })); - lst.QueueActivity(new Move.Move(spyReinforcementsUnloadPoint.Location)); - lst.QueueActivity(new Wait(10)); - lst.QueueActivity(new UnloadCargo(lst, true)); - lst.QueueActivity(new Transform(lst, "lst.unselectable.nocargo") { SkipMakeAnims = true }); - } - - void SetupSubStances() - { - foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == soviets && !a.IsDead() && a.HasTrait())) - actor.Trait().Stance = UnitStance.Defend; - } - - public void WorldLoaded(World w, WorldRenderer wr) - { - world = w; - worldRenderer = wr; - - difficulty = w.LobbyInfo.GlobalSettings.Difficulty; - Game.Debug("{0} difficulty selected".F(difficulty)); - - allies1 = w.Players.Single(p => p.InternalName == "Allies1"); - allies2 = w.Players.SingleOrDefault(p => p.InternalName == "Allies2"); - - allies1.PlayerActor.Trait().Cash = 0; - if (allies2 == null) - allies2 = allies1; - else - allies2.PlayerActor.Trait().Cash = 0; - - soviets = w.Players.Single(p => p.InternalName == "Soviets"); - creeps = w.Players.Single(p => p.InternalName == "Creeps"); - infiltrateLab.Text = InfiltrateLabTemplate.F(allies1 != allies2 ? "spies" : "spy"); - - destroyBaseTicks = difficulty == "Hard" ? 1500 * 25 : difficulty == "Normal" ? 1500 * 28 : 1500 * 31; - - var actors = w.WorldActor.Trait().Actors; - - spyReinforcementsEntryPoint = actors["SpyReinforcementsEntryPoint"]; - spyReinforcementsUnloadPoint = actors["SpyReinforcementsUnloadPoint"]; - spyReinforcementsExitPoint = actors["SpyReinforcementsExitPoint"]; - - hijackTruck = actors["HijackTruck"]; - baseGuard = actors["BaseGuard"]; - baseGuardMovePos = actors["BaseGuardMovePos"]; - baseGuardTruckPos = actors["BaseGuardTruckPos"]; - patrolPoints1 = new[] - { - actors["PatrolPoint11"].Location, - actors["PatrolPoint12"].Location, - actors["PatrolPoint13"].Location, - actors["PatrolPoint14"].Location, - actors["PatrolPoint15"].Location - }; - patrolPoints2 = patrolPoints1; - patrolPoints3 = new[] - { - actors["PatrolPoint21"].Location, - actors["PatrolPoint22"].Location, - actors["PatrolPoint23"].Location, - actors["PatrolPoint24"].Location, - actors["PatrolPoint25"].Location - }; - patrolPoints4 = new[] - { - actors["PatrolPoint31"].Location, - actors["PatrolPoint32"].Location, - actors["PatrolPoint33"].Location, - actors["PatrolPoint34"].Location - }; - patrolPoints5 = new[] - { - actors["PatrolPoint41"].Location, - actors["PatrolPoint42"].Location, - actors["PatrolPoint43"].Location, - actors["PatrolPoint44"].Location, - actors["PatrolPoint45"].Location - }; - - lab = actors["Lab"]; - lab.AddTrait(new InfiltrateAction(OnLabInfiltrated)); - lab.AddTrait(new TransformedAction(self => lab = self)); - - reinforcementsEntryPoint = actors["ReinforcementsEntryPoint"]; - reinforcementsUnloadPoint = actors["ReinforcementsUnloadPoint"]; - - patrols = new List - { - new Patrol(world, new[] { "e1", "e1", "e1", "e1", "e1" }, soviets, patrolPoints1, 0), - new Patrol(world, new[] { "e1", "dog.patrol", "dog.patrol" }, soviets, patrolPoints2, 2), - new Patrol(world, new[] { "e1", "dog.patrol", "dog.patrol" }, soviets, patrolPoints4, 0), - new Patrol(world, new[] { "e1", "dog.patrol", "dog.patrol" }, soviets, patrolPoints5, 0), - }; - if (difficulty == "Hard") - patrols.Add(new Patrol(world, new[] { "e1", "e1", "dog.patrol" }, soviets, patrolPoints3, 0)); - - bridgeTank = actors["BridgeTank"]; - bridgeAttackPoint = actors["BridgeAttackPoint"]; - bridge = world.Actors - .Where(a => a.HasTrait() && !a.IsDead()) - .OrderBy(a => (a.Location - bridgeAttackPoint.Location).LengthSquared) - .FirstOrDefault(); - - var ta1 = actors["TownAttacker1"]; - var ta2 = actors["TownAttacker2"]; - var ta3 = actors["TownAttacker3"]; - var ta4 = actors["TownAttacker4"]; - var ta5 = actors["TownAttacker5"]; - var ta6 = actors["TownAttacker6"]; - var ta7 = actors["TownAttacker7"]; - - townAttackers = new[] { ta1, ta2, ta3, ta4, ta5, ta6, ta7 }; - - OnObjectivesUpdated(false); - SetupSubStances(); - - worldRenderer.Viewport.Center(spyReinforcementsEntryPoint.CenterPosition); - MissionUtils.PlayMissionMusic(); - } - } - - class Allies04HijackableInfo : ITraitInfo, Requires - { - public object Create(ActorInitializer init) { return new Allies04Hijackable(init.self); } - } - - class Allies04Hijackable : IAcceptInfiltrator, INotifyPassengerExited - { - public Player OldOwner; - - void OnTruckHijacked(Actor spy) { } - - public Allies04Hijackable(Actor self) - { - OldOwner = self.Owner; - - self.AddTrait(new InfiltrateAction(OnTruckHijacked)); - } - - public void OnInfiltrate(Actor self, Actor spy) - { - if (self.Trait().IsEmpty(self)) - self.ChangeOwner(spy.Owner); - - self.Trait().Load(self, spy); - } - - public void PassengerExited(Actor self, Actor passenger) - { - if (self.Trait().IsEmpty(self)) - { - self.CancelActivity(); - self.ChangeOwner(OldOwner); - } - else if (self.Owner == passenger.Owner) - self.ChangeOwner(self.Trait().Passengers.First().Owner); - } - } - - class Allies04RenderHijackedInfo : RenderUnitInfo - { - public override object Create(ActorInitializer init) { return new Allies04RenderHijacked(init.self, this); } - } - - class Allies04RenderHijacked : RenderUnit - { - Allies04Hijackable hijackable; - Allies04RenderHijackedInfo info; - - public Allies04RenderHijacked(Actor self, Allies04RenderHijackedInfo info) - : base(self) - { - this.info = info; - hijackable = self.Trait(); - } - - protected override string PaletteName(Actor self) - { - return info.Palette ?? info.PlayerPalette + hijackable.OldOwner.InternalName; - } - } - - class Allies04TrivialBuildingInfo : TraitInfo { } - class Allies04TrivialBuilding { } - - class Allies04MaintainBuildingInfo : TraitInfo - { - public readonly string Player = null; - } - - class Allies04MaintainBuilding : INotifyDamageStateChanged - { - public void DamageStateChanged(Actor self, AttackInfo e) - { - if (self.Owner.InternalName != self.Info.Traits.Get().Player) return; - - if (self.HasTrait() && e.DamageState == DamageState.Critical && e.PreviousDamageState < DamageState.Critical) - self.Trait().Sell(self); - - else if (self.HasTrait() && e.DamageState > DamageState.Undamaged && e.PreviousDamageState == DamageState.Undamaged) - self.Trait().RepairBuilding(self, self.Owner); - } - } - - class Allies04TransformOnLabInfiltrateInfo : TraitInfo - { - [ActorReference] - public readonly string ToActor = null; - } - - class Allies04TransformOnLabInfiltrate { } - - class Allies04HazyPaletteEffectInfo : TraitInfo { } - - class Allies04HazyPaletteEffect : IPaletteModifier - { - static readonly string[] ExcludePalettes = { "cursor", "chrome", "colorpicker", "fog", "shroud" }; - - public void AdjustPalette(Dictionary palettes) - { - foreach (var pal in palettes) - { - if (ExcludePalettes.Contains(pal.Key)) - continue; - - for (var x = 0; x < 256; x++) - { - var from = pal.Value.GetColor(x); - var to = Color.FromArgb(from.A, Color.FromKnownColor(KnownColor.DarkOrange)); - pal.Value.SetColor(x, Exts.ColorLerp(0.15f, from, to)); - } - } - } - } -} diff --git a/OpenRA.Mods.RA/Missions/CountdownTimer.cs b/OpenRA.Mods.RA/Missions/CountdownTimer.cs deleted file mode 100644 index bfbd6ef054..0000000000 --- a/OpenRA.Mods.RA/Missions/CountdownTimer.cs +++ /dev/null @@ -1,68 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 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. For more information, - * see COPYING. - */ -#endregion - -using System; - -namespace OpenRA.Mods.RA.Missions -{ - public class CountdownTimer - { - public int TicksLeft; - - public event Action OnExpired = t => { }; - public event Action OnOneMinuteRemaining = t => { }; - public event Action OnTwoMinutesRemaining = t => { }; - public event Action OnThreeMinutesRemaining = t => { }; - public event Action OnFourMinutesRemaining = t => { }; - public event Action OnFiveMinutesRemaining = t => { }; - public event Action OnTenMinutesRemaining = t => { }; - public event Action OnTwentyMinutesRemaining = t => { }; - public event Action OnThirtyMinutesRemaining = t => { }; - public event Action OnFortyMinutesRemaining = t => { }; - - public CountdownTimer(int ticksLeft, Action onExpired, bool withNotifications) - { - TicksLeft = ticksLeft; - OnExpired += onExpired; - if (withNotifications) - { - OnOneMinuteRemaining += t => Sound.Play("1minr.aud"); - OnTwoMinutesRemaining += t => Sound.Play("2minr.aud"); - OnThreeMinutesRemaining += t => Sound.Play("3minr.aud"); - OnFourMinutesRemaining += t => Sound.Play("4minr.aud"); - OnFiveMinutesRemaining += t => Sound.Play("5minr.aud"); - OnTenMinutesRemaining += t => Sound.Play("10minr.aud"); - OnTwentyMinutesRemaining += t => Sound.Play("20minr.aud"); - OnThirtyMinutesRemaining += t => Sound.Play("30minr.aud"); - OnFortyMinutesRemaining += t => Sound.Play("40minr.aud"); - } - } - - public void Tick() - { - if (TicksLeft <= 0) return; - - TicksLeft--; - switch (TicksLeft) - { - case 1500 * 00: OnExpired(this); break; - case 1500 * 01: OnOneMinuteRemaining(this); break; - case 1500 * 02: OnTwoMinutesRemaining(this); break; - case 1500 * 03: OnThreeMinutesRemaining(this); break; - case 1500 * 04: OnFourMinutesRemaining(this); break; - case 1500 * 05: OnFiveMinutesRemaining(this); break; - case 1500 * 10: OnTenMinutesRemaining(this); break; - case 1500 * 20: OnTwentyMinutesRemaining(this); break; - case 1500 * 30: OnThirtyMinutesRemaining(this); break; - case 1500 * 40: OnFortyMinutesRemaining(this); break; - } - } - } -} diff --git a/OpenRA.Mods.RA/Missions/FortLonestarScript.cs b/OpenRA.Mods.RA/Missions/FortLonestarScript.cs deleted file mode 100644 index 51604bdc88..0000000000 --- a/OpenRA.Mods.RA/Missions/FortLonestarScript.cs +++ /dev/null @@ -1,379 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2013 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. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Drawing; -using System.Linq; -using OpenRA.FileFormats; -using OpenRA.Graphics; -using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Buildings; -using OpenRA.Mods.RA.Move; -using OpenRA.Traits; -using OpenRA.Widgets; - -namespace OpenRA.Mods.RA.Missions -{ - class FortLonestarScriptInfo : TraitInfo, Requires { } - - class FortLonestarScript : IWorldLoaded, ITick - { - Player multi0; - Player soviets; - - Actor entry1; - Actor entry2; - Actor entry3; - Actor entry4; - Actor entry5; - Actor entry6; - Actor entry7; - Actor entry8; - CPos[] sovietEntryPoints; - Actor paradrop1; - Actor paradrop2; - Actor paradrop3; - Actor paradrop4; - Actor patrol1; - Actor patrol2; - Actor patrol3; - Actor patrol4; - World world; - - int WaveNumber = 0; - InfoWidget evacuateWidget; - const string ShortEvacuateTemplate = "Wave {0}"; - static readonly string[] Patrol = { "e1", "e2", "e1" }; - static readonly string[] Infantry = { "e4", "e1", "e1", "e2", "e1", "e2" }; - static readonly string[] Vehicles = { "arty", "ftrk", "ftrk", "apc", "apc" }; - const string tank = "3tnk"; - const string v2 = "v2rl"; - const string boss = "4tnk"; - - const int TimerTicks = 1; - - int AttackSquad = 6; - int AttackSquadCount = 1; - int VehicleSquad = 2; - int VehicleSquadCount = 1; - - int patrolAttackFrame; - int patrolattackAtFrameIncrement; - int WaveAttackFrame; - int WaveAttackAtFrameIncrement; - int VehicleAttackFrame; - int VehicleAttackAtFrameIncrement; - - void MissionAccomplished(string text) - { - MissionUtils.CoopMissionAccomplished(world, text, multi0); - } - - void AttackNearestAlliedActor(Actor self) - { - var enemies = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == multi0) - && ((u.HasTrait() && !u.HasTrait()))); - - var targetEnemy = enemies.ClosestTo(self); - if (targetEnemy != null) - self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(targetEnemy), WRange.FromCells(6)))); - } - - void SendVehicles() - { - if (SpawnVehicles == true) - { - for (int i = 1; i <= VehicleSquadCount; i++) - { - var route = world.SharedRandom.Next(sovietEntryPoints.Length); - var spawnPoint = sovietEntryPoints[route]; - for (int r = 1; r <= VehicleSquad; r++) - { - var squad = world.CreateActor(Vehicles.Random(world.SharedRandom), - new TypeDictionary - { - new LocationInit(spawnPoint), - new OwnerInit(soviets) - }); - squad.QueueActivity(new AttackMove.AttackMoveActivity(squad, new Move.Move(paradrop1.Location, 3))); - } - } - } - } - - void SendWave() - { - if (SpawnWave == true) - { - for (int i = 1; i <= AttackSquadCount; i++) - { - world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == soviets) - && !u.HasTrait()); - var route = world.SharedRandom.Next(sovietEntryPoints.Length); - var spawnPoint = sovietEntryPoints[route]; - for (int r = 1; r < AttackSquad; r++) - { - var squad = world.CreateActor(Infantry.Random(world.SharedRandom), - new TypeDictionary - { - new LocationInit(spawnPoint), - new OwnerInit(soviets) - }); - squad.QueueActivity(new AttackMove.AttackMoveActivity(squad, new Move.Move(paradrop1.Location, 3))); - var scatteredUnits = world.FindAliveCombatantActorsInCircle(paradrop1.Location.CenterPosition, WRange.FromCells(15)) - .Where(unit => unit.IsIdle && unit.HasTrait() && unit.Owner == soviets); - foreach (var unit in scatteredUnits) - { - AttackNearestAlliedActor(unit); - } - } - } - } - } - - void SendPatrol(string[] squad, Player owner, CPos location, CPos move) - { - if (SpawnPatrol) - { - for (int i = 0; i < squad.Length; i++) - { - var actor = world.CreateActor(squad[i], new TypeDictionary - { - new OwnerInit(owner), - new LocationInit(location) - }); - actor.QueueActivity(new AttackMove.AttackMoveActivity(actor, new Move.Move(move, 3))); - AttackNearestAlliedActor(actor); - } - } - } - - void SendBoss(string unit) - { - var route = world.SharedRandom.Next(sovietEntryPoints.Length); - var spawnPoint = sovietEntryPoints[route]; - var actor = world.CreateActor(unit, new TypeDictionary - { - new OwnerInit(soviets), - new LocationInit(spawnPoint) - }); - if (multi0 != null) - { - AttackNearestAlliedActor(actor); - } - } - - void Wave(string text) - { - Game.AddChatLine(Color.Cyan, "Wave Sequence", text); - } - - public void Tick(Actor self) - { - if (multi0.WinState != WinState.Undefined) return; - - if (world.FrameNumber == patrolAttackFrame) - { - patrolAttackFrame += patrolattackAtFrameIncrement; - patrolattackAtFrameIncrement = Math.Max(patrolattackAtFrameIncrement - 5, 100); - SendPatrol(Patrol, soviets, patrol1.Location, paradrop1.Location); - SendPatrol(Patrol, soviets, patrol2.Location, paradrop2.Location); - SendPatrol(Patrol, soviets, patrol3.Location, paradrop3.Location); - SendPatrol(Patrol, soviets, patrol4.Location, paradrop4.Location); - } - if (world.FrameNumber == WaveAttackFrame) - { - WaveAttackFrame += WaveAttackAtFrameIncrement; - WaveAttackAtFrameIncrement = Math.Max(WaveAttackAtFrameIncrement - 5, 100); - SendWave(); - } - if (world.FrameNumber == VehicleAttackFrame) - { - VehicleAttackFrame += VehicleAttackAtFrameIncrement; - VehicleAttackAtFrameIncrement = Math.Max(VehicleAttackAtFrameIncrement - 5, 100); - SendVehicles(); - } - if (world.FrameNumber == TimerTicks) - { - evacuateWidget = new InfoWidget(""); - Ui.Root.AddChild(evacuateWidget); - WaveNumber++; - Wave("One Initializing"); - UpdateWaveSequence(); - } - if (world.FrameNumber == 1500 * 2) - { - WaveNumber++; - Wave("Two Initializing"); - SpawnPatrol = false; - AttackSquad = 7; - AttackSquadCount = 2; - UpdateWaveSequence(); - MissionUtils.Parabomb(world, soviets, entry1.Location, paradrop1.Location); - MissionUtils.Parabomb(world, soviets, entry1.Location, paradrop1.Location + new CVec(0, -2)); - } - if (world.FrameNumber == 1500 * 4) - { - WaveNumber++; - Wave("Three Initializing"); - UpdateWaveSequence(); - AttackSquad = 8; - } - if (world.FrameNumber == 1500 * 6) - { - WaveNumber++; - Wave("Four Initializing"); - UpdateWaveSequence(); - AttackSquad = 9; - MissionUtils.Parabomb(world, soviets, entry1.Location, paradrop1.Location); - MissionUtils.Parabomb(world, soviets, entry2.Location, paradrop3.Location); - AttackSquadCount = 3; - VehicleSquad = 3; - } - if (world.FrameNumber == 1500 * 8) - { - WaveNumber++; - Wave("Five Initializing"); - UpdateWaveSequence(); - AttackSquad = 10; - VehicleSquad = 4; - VehicleSquadCount = 2; - SendBoss(tank); - } - if (world.FrameNumber == 1500 * 11) - { - WaveNumber++; - Wave("Six Initializing"); - UpdateWaveSequence(); - AttackSquad = 11; - AttackSquadCount = 4; - MissionUtils.Parabomb(world, soviets, entry1.Location, paradrop1.Location); - MissionUtils.Parabomb(world, soviets, entry4.Location, paradrop1.Location); - MissionUtils.Parabomb(world, soviets, entry6.Location, paradrop3.Location); - MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop3.Location); - SendBoss(tank); - SendBoss(tank); - } - if (world.FrameNumber == 1500 * 14) - { - WaveNumber++; - Wave("Seven Initializing"); - UpdateWaveSequence(); - AttackSquad = 12; - VehicleSquad = 5; - VehicleSquadCount = 3; - SendBoss(v2); - } - if (world.FrameNumber == 1500 * 17) - { - SpawnVehicles = true; - WaveNumber++; - Wave("Eight Initializing"); - UpdateWaveSequence(); - AttackSquad = 13; - AttackSquadCount = 5; - MissionUtils.Parabomb(world, soviets, entry1.Location, paradrop1.Location); - MissionUtils.Parabomb(world, soviets, entry4.Location, paradrop1.Location); - MissionUtils.Parabomb(world, soviets, entry6.Location, paradrop3.Location); - MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop3.Location); - MissionUtils.Parabomb(world, soviets, entry2.Location, paradrop2.Location); - MissionUtils.Parabomb(world, soviets, entry3.Location, paradrop2.Location); - SendBoss(v2); - SendBoss(tank); - SendBoss(v2); - } - if (world.FrameNumber == 1500 * 21) - { - WaveNumber++; - Wave("Nine Initializing"); - UpdateWaveSequence(); - AttackSquad = 14; - VehicleSquad = 6; - VehicleSquadCount = 4; - SendBoss(v2); - SendBoss(tank); - SendBoss(tank); - } - if (world.FrameNumber == 1500 * 25) - { - WaveNumber++; - Wave("Ten Initializing"); - UpdateWaveSequence(); - AttackSquad = 15; - AttackSquadCount = 6; - for (int i = 0; i < 2; i++) - { - MissionUtils.Parabomb(world, soviets, entry1.Location, paradrop1.Location + new CVec(0, -2)); - MissionUtils.Parabomb(world, soviets, entry2.Location, paradrop3.Location + new CVec(0, -2)); - MissionUtils.Parabomb(world, soviets, entry4.Location, paradrop2.Location + new CVec(0, -2)); - MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop4.Location + new CVec(0, -2)); - MissionUtils.Parabomb(world, soviets, entry2.Location, paradrop1.Location + new CVec(0, 2)); - MissionUtils.Parabomb(world, soviets, entry4.Location, paradrop3.Location + new CVec(0, 2)); - MissionUtils.Parabomb(world, soviets, entry3.Location, paradrop2.Location + new CVec(0, 2)); - MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop4.Location + new CVec(0, 2)); - } - SendBoss(boss); - } - if (world.FrameNumber == 1500 * 30) - { - SpawnWave = false; - SpawnVehicles = false; - } - if (world.FrameNumber == 1500 * 31) - { - MissionAccomplished("You and your mates have Survived the Onslaught!"); - } - } - - void UpdateWaveSequence() - { - evacuateWidget.Text = ShortEvacuateTemplate.F(WaveNumber); - } - - bool SpawnPatrol = true; - - bool SpawnWave = true; - - bool SpawnVehicles = true; - - public void WorldLoaded(World w, WorldRenderer wr) - { - world = w; - soviets = w.Players.Single(p => p.InternalName == "Soviets"); - multi0 = w.Players.Single(p => p.InternalName == "Multi0"); - patrolAttackFrame = 750; - patrolattackAtFrameIncrement = 750; - WaveAttackFrame = 500; - WaveAttackAtFrameIncrement = 500; - VehicleAttackFrame = 2000; - VehicleAttackAtFrameIncrement = 2000; - var actors = w.WorldActor.Trait().Actors; - entry1 = actors["Entry1"]; - entry2 = actors["Entry2"]; - entry3 = actors["Entry3"]; - entry4 = actors["Entry4"]; - entry5 = actors["Entry5"]; - entry6 = actors["Entry6"]; - entry7 = actors["Entry7"]; - entry8 = actors["Entry8"]; - sovietEntryPoints = new[] { entry1, entry2, entry3, entry4, entry5, entry6, entry7, entry8 }.Select(p => p.Location).ToArray(); - paradrop1 = actors["Paradrop1"]; - paradrop2 = actors["Paradrop2"]; - paradrop3 = actors["Paradrop3"]; - paradrop4 = actors["Paradrop4"]; - patrol1 = actors["Patrol1"]; - patrol2 = actors["Patrol2"]; - patrol3 = actors["Patrol3"]; - patrol4 = actors["Patrol4"]; - MissionUtils.PlayMissionMusic(); - Game.AddChatLine(Color.Cyan, "Mission", "Defend Fort LoneStar At All costs!"); - } - } -} diff --git a/OpenRA.Mods.RA/Missions/MissionUtils.cs b/OpenRA.Mods.RA/Missions/MissionUtils.cs deleted file mode 100644 index bbbbf977b0..0000000000 --- a/OpenRA.Mods.RA/Missions/MissionUtils.cs +++ /dev/null @@ -1,253 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 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. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using OpenRA.FileFormats; -using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Air; -using OpenRA.Mods.RA.Buildings; -using OpenRA.Mods.RA.Move; -using OpenRA.Network; -using OpenRA.Traits; - -namespace OpenRA.Mods.RA.Missions -{ - public static class MissionUtils - { - public static IEnumerable FindAliveCombatantActorsInCircle(this World world, WPos location, WRange range) - { - return world.FindActorsInCircle(location, range) - .Where(u => u.IsInWorld && u != world.WorldActor && !u.IsDead() && !u.Owner.NonCombatant); - } - - public static IEnumerable FindAliveCombatantActorsInBox(this World world, CPos a, CPos b) - { - return world.FindActorsInBox(a, b) - .Where(u => u.IsInWorld && u != world.WorldActor && !u.IsDead() && !u.Owner.NonCombatant); - } - - public static IEnumerable FindAliveNonCombatantActorsInCircle(this World world, WPos location, WRange range) - { - return world.FindActorsInCircle(location, range) - .Where(u => u.IsInWorld && u != world.WorldActor && !u.IsDead() && u.Owner.NonCombatant); - } - - public static Actor ExtractUnitWithChinook(World world, Player owner, Actor unit, CPos entry, CPos lz, CPos exit) - { - var chinook = world.CreateActor("tran", new TypeDictionary { new OwnerInit(owner), new LocationInit(entry) }); - chinook.QueueActivity(new HeliFly(chinook, Target.FromCell(lz))); - chinook.QueueActivity(new Turn(0)); - chinook.QueueActivity(new HeliLand(true)); - chinook.QueueActivity(new WaitFor(() => chinook.Trait().Passengers.Contains(unit))); - chinook.QueueActivity(new Wait(150)); - chinook.QueueActivity(new HeliFly(chinook, Target.FromCell(exit))); - chinook.QueueActivity(new RemoveSelf()); - return chinook; - } - - public static Pair InsertUnitWithChinook(World world, Player owner, string unitName, CPos entry, CPos lz, CPos exit, Action afterUnload) - { - var unit = world.CreateActor(false, unitName, new TypeDictionary { new OwnerInit(owner) }); - var chinook = world.CreateActor("tran", new TypeDictionary { new OwnerInit(owner), new LocationInit(entry) }); - chinook.Trait().Load(chinook, unit); - chinook.QueueActivity(new HeliFly(chinook, Target.FromCell(lz))); - chinook.QueueActivity(new Turn(0)); - chinook.QueueActivity(new HeliLand(true)); - chinook.QueueActivity(new UnloadCargo(chinook, true)); - chinook.QueueActivity(new CallFunc(() => afterUnload(unit))); - chinook.QueueActivity(new Wait(150)); - chinook.QueueActivity(new HeliFly(chinook, Target.FromCell(exit))); - chinook.QueueActivity(new RemoveSelf()); - return Pair.New(chinook, unit); - } - - public static void Paradrop(World world, Player owner, IEnumerable units, CPos entry, CPos location) - { - var altitude = Rules.Info["badr"].Traits.Get().CruiseAltitude; - var badger = world.CreateActor("badr", new TypeDictionary - { - new CenterPositionInit(entry.CenterPosition + new WVec(WRange.Zero, WRange.Zero, altitude)), - new OwnerInit(owner), - new FacingInit(Util.GetFacing(location - entry, 0)) - }); - - badger.QueueActivity(new FlyAttack(Target.FromCell(location))); - badger.Trait().SetLZ(location); - var cargo = badger.Trait(); - foreach (var unit in units) - { - cargo.Load(badger, world.CreateActor(false, unit, new TypeDictionary { new OwnerInit(owner) })); - } - } - - public static void Parabomb(World world, Player owner, CPos entry, CPos location) - { - var altitude = Rules.Info["badr.bomber"].Traits.Get().CruiseAltitude; - var badger = world.CreateActor("badr.bomber", new TypeDictionary - { - new CenterPositionInit(entry.CenterPosition + new WVec(WRange.Zero, WRange.Zero, altitude)), - new OwnerInit(owner), - new FacingInit(Util.GetFacing(location - entry, 0)) - }); - - badger.Trait().SetTarget(location.CenterPosition); - badger.QueueActivity(new Fly(badger, Target.FromCell(location))); - badger.QueueActivity(new FlyOffMap()); - badger.QueueActivity(new RemoveSelf()); - } - - public static bool AreaSecuredWithUnits(World world, Player player, WPos location, WRange range) - { - var units = world.FindAliveCombatantActorsInCircle(location, range).Where(a => a.HasTrait()); - return units.Any() && units.All(a => a.Owner == player); - } - - public static IEnumerable FindQueues(World world, Player player, string category) - { - return world.ActorsWithTrait() - .Where(a => a.Actor.Owner == player && a.Trait.Info.Type == category) - .Select(a => a.Trait); - } - - public static void StartProduction(World world, Player player, string category, string item) - { - var queue = FindQueues(world, player, category).FirstOrDefault(q => q.CurrentItem() == null); - if (queue != null) - queue.ResolveOrder(queue.self, Order.StartProduction(queue.self, item, 1)); - } - - public static Actor UnitContaining(this World world, Actor actor) - { - return world.Actors.FirstOrDefault(a => a.HasTrait() && a.Trait().Passengers.Contains(actor)); - } - - public static void PlayMissionMusic() - { - if (!Rules.InstalledMusic.Any() || !Game.Settings.Sound.MapMusic) - return; - Game.ConnectionStateChanged += StopMusic; - PlayMusic(); - } - - static void PlayMusic() - { - var track = Rules.InstalledMusic.Random(Game.CosmeticRandom); - Sound.PlayMusicThen(track.Value, PlayMusic); - } - - static void StopMusic(OrderManager orderManager) - { - if (!orderManager.GameStarted) - { - Sound.StopMusic(); - Game.ConnectionStateChanged -= StopMusic; - } - } - - public static void CoopMissionAccomplished(World world, string text, params Player[] players) - { - if (players.First().WinState != WinState.Undefined) - return; - - foreach (var player in players) - player.WinState = WinState.Won; - - if (text != null) - Game.AddChatLine(Color.Blue, "Mission accomplished", text); - - Sound.Play("misnwon1.aud"); - } - - public static void CoopMissionFailed(World world, string text, params Player[] players) - { - if (players.First().WinState != WinState.Undefined) - return; - - foreach (var player in players) - { - player.WinState = WinState.Lost; - foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == player && !a.IsDead())) - { - actor.Kill(actor); - } - } - - if (text != null) - Game.AddChatLine(Color.Red, "Mission failed", text); - - Sound.Play("misnlst1.aud"); - } - - public static Actor CreateActor(this World world, bool addToWorld, string name, Player owner, CPos? location, int? facing) - { - var td = new TypeDictionary { new OwnerInit(owner) }; - if (location.HasValue) - td.Add(new LocationInit(location.Value)); - if (facing.HasValue) - td.Add(new FacingInit(facing.Value)); - return world.CreateActor(addToWorld, name, td); - } - - public static Actor CreateActor(this World world, string name, Player owner, CPos? location, int? facing) - { - return CreateActor(world, true, name, owner, location, facing); - } - - public static void CapOre(Player player) - { - var res = player.PlayerActor.Trait(); - if (res.Ore > res.OreCapacity * 0.8) - res.Ore = (int)(res.OreCapacity * 0.8); - } - - public static void AttackNearestLandActor(bool queued, Actor self, Player enemyPlayer) - { - var enemies = self.World.Actors.Where(u => u.AppearsHostileTo(self) && u.Owner == enemyPlayer - && ((u.HasTrait() && !u.HasTrait()) || (u.HasTrait() && !u.HasTrait())) && u.IsInWorld && !u.IsDead()); - - var enemy = enemies.ClosestTo(self); - if (enemy != null) - self.QueueActivity(queued, new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(enemy), WRange.FromCells(3)))); - } - } - - class TransformedAction : INotifyTransformed - { - Action a; - - public TransformedAction(Action a) - { - this.a = a; - } - - public void OnTransformed(Actor toActor) - { - a(toActor); - } - } - - class InfiltrateAction : IAcceptInfiltrator - { - Action a; - - public InfiltrateAction(Action a) - { - this.a = a; - } - - public void OnInfiltrate(Actor self, Actor spy) - { - a(spy); - } - } -} diff --git a/OpenRA.Mods.RA/Missions/MissionWidgets.cs b/OpenRA.Mods.RA/Missions/MissionWidgets.cs deleted file mode 100644 index 5da20131c9..0000000000 --- a/OpenRA.Mods.RA/Missions/MissionWidgets.cs +++ /dev/null @@ -1,55 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 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. For more information, - * see COPYING. - */ -#endregion - -using System.Drawing; -using OpenRA.Widgets; - -namespace OpenRA.Mods.RA.Missions -{ - public class CountdownTimerWidget : Widget - { - public CountdownTimer Timer; - public string Format; - - public CountdownTimerWidget(CountdownTimer timer, string format) - { - Timer = timer; - Format = format; - } - - public override void Draw() - { - if (!IsVisible()) return; - - // TODO: Don't hardcode the screen position - var font = Game.Renderer.Fonts["Bold"]; - var text = Format.F(WidgetUtils.FormatTime(Timer.TicksLeft)); - var pos = new float2(Game.Renderer.Resolution.Width * 0.5f - font.Measure(text).X / 2, Game.Renderer.Resolution.Height * 0.1f); - font.DrawTextWithContrast(text, pos, Timer.TicksLeft <= 25 * 60 && Game.LocalTick % 50 < 25 ? Color.Red : Color.White, Color.Black, 1); - } - } - - public class InfoWidget : Widget - { - public string Text; - - public InfoWidget(string text) { Text = text; } - - public override void Draw() - { - if (!IsVisible()) return; - - // TODO: Don't hardcode the screen position - var font = Game.Renderer.Fonts["Bold"]; - var pos = new float2(Game.Renderer.Resolution.Width * 0.5f - font.Measure(Text).X / 2, Game.Renderer.Resolution.Height * 0.1f); - font.DrawTextWithContrast(Text, pos, Color.White, Color.Black, 1); - } - } -} diff --git a/OpenRA.Mods.RA/Missions/MonsterTankMadnessScript.cs b/OpenRA.Mods.RA/Missions/MonsterTankMadnessScript.cs deleted file mode 100644 index bc1c5431b1..0000000000 --- a/OpenRA.Mods.RA/Missions/MonsterTankMadnessScript.cs +++ /dev/null @@ -1,342 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 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. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using OpenRA.Graphics; -using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Buildings; -using OpenRA.Mods.RA.Move; -using OpenRA.Traits; - -namespace OpenRA.Mods.RA.Missions -{ - class MonsterTankMadnessScriptInfo : ITraitInfo, Requires - { - public readonly string[] FirstStartUnits = null; - public readonly string[] SecondStartUnits = null; - public readonly string[] ThirdStartUnits = null; - public readonly string[] FirstBaseUnits = null; - public readonly string[] CivilianEvacuees = null; - - public object Create(ActorInitializer init) { return new MonsterTankMadnessScript(this); } - } - - class MonsterTankMadnessScript : IHasObjectives, IWorldLoaded, ITick - { - MonsterTankMadnessScriptInfo info; - - public MonsterTankMadnessScript(MonsterTankMadnessScriptInfo info) - { - this.info = info; - } - - public event Action OnObjectivesUpdated = notify => { }; - - public IEnumerable Objectives { get { return new[] { findOutpost, evacuateDemitri, infiltrateRadarDome }; } } - - Objective findOutpost = new Objective(ObjectiveType.Primary, FindOutpostText, ObjectiveStatus.InProgress); - Objective evacuateDemitri = new Objective(ObjectiveType.Primary, EvacuateDemitriText, ObjectiveStatus.InProgress); - Objective infiltrateRadarDome = new Objective(ObjectiveType.Primary, InfiltrateRadarDomeText, ObjectiveStatus.InProgress); - - const string FindOutpostText = "Find our outpost and start repairs on it."; - const string EvacuateDemitriText = "Find and evacuate Dr. Demitri. He is missing -- likely hiding in the village to the far south."; - const string InfiltrateRadarDomeText = "Reprogram the Super Tanks by sending a spy into the Soviet radar dome."; - - //const string Briefing = "Dr. Demitri, creator of a Soviet Super Tank, wants to defect." - // + " We planned to extract him while the Soviets were testing their new weapon, but something has gone wrong." - // + " The Super Tanks are out of control, and Demitri is missing -- likely hiding in the village to the far south." - // + " Find our outpost and start repairs on it, then find and evacuate Demitri." - // + " As for the tanks, we can reprogram them. Send a spy into the Soviet radar dome in the NE, turning the tanks on their creators."; - - World world; - - Player neutral; - Player greece; - Player ussr; - Player badGuy; - Player turkey; - - Actor startEntryPoint; - Actor startMovePoint; - Actor startBridgeEndPoint; - Actor alliedBaseTopLeft; - Actor alliedBaseBottomRight; - Actor alliedBaseEntryPoint; - Actor alliedBaseMovePoint; - - Actor demitriChurch; - Actor demitriChurchSpawnPoint; - Actor demitriTriggerAreaCenter; - Actor demitri; - Actor demitriLZ; - Actor demitriLZFlare; - Actor demitriChinook; - - Actor provingGroundsCameraPoint; - - Actor[] superTanks; - - Actor hospital; - Actor hospitalCivilianSpawnPoint; - Actor hospitalSuperTankPoint; - - Actor superTankDome; - - bool hospitalEvacuated; - bool superTanksDestroyed; - - int baseTransferredTick = -1; - int superTankDomeInfiltratedTick = -1; - - void MissionAccomplished(string text) - { - MissionUtils.CoopMissionAccomplished(world, text, greece); - } - - void MissionFailed(string text) - { - MissionUtils.CoopMissionFailed(world, text, greece); - } - - public void Tick(Actor self) - { - if (greece.WinState != WinState.Undefined) return; - - if (world.FrameNumber == 1) - SpawnAndMoveBridgeUnits(info.FirstStartUnits); - - else if (world.FrameNumber == 25 * 3) - SpawnAndMoveBridgeUnits(info.SecondStartUnits); - - else if (world.FrameNumber == 25 * 8) - SpawnAndMoveBridgeUnits(info.ThirdStartUnits); - - MissionUtils.CapOre(ussr); - - if (!hospitalEvacuated && !hospital.IsDead() && MissionUtils.AreaSecuredWithUnits(world, greece, hospital.CenterPosition, WRange.FromCells(5))) - { - EvacuateCivilians(); - hospitalEvacuated = true; - } - - if (baseTransferredTick == -1) - { - var actorsInBase = world.FindActorsInBox(alliedBaseTopLeft.Location, alliedBaseBottomRight.Location).Where(a => a != a.Owner.PlayerActor); - if (actorsInBase.Any(a => a.Owner == greece)) - { - SetupAlliedBase(actorsInBase); - baseTransferredTick = world.FrameNumber; - findOutpost.Status = ObjectiveStatus.Completed; - OnObjectivesUpdated(true); - } - } - else if (superTankDomeInfiltratedTick == -1) - { - if (world.FrameNumber == baseTransferredTick + 25 * 100) - foreach (var tank in superTanks.Where(t => !t.IsDead() && t.IsInWorld)) - tank.QueueActivity(false, new Move.Move(hospitalSuperTankPoint.Location, 2)); - - else if (world.FrameNumber == baseTransferredTick + 25 * 180) - foreach (var tank in superTanks.Where(t => !t.IsDead() && t.IsInWorld)) - tank.QueueActivity(false, new Move.Move(alliedBaseBottomRight.Location, 2)); - - else if (world.FrameNumber == baseTransferredTick + 25 * 280) - foreach (var tank in superTanks.Where(t => !t.IsDead() && t.IsInWorld)) - tank.QueueActivity(false, new Move.Move(demitriTriggerAreaCenter.Location, 2)); - - else if (world.FrameNumber == baseTransferredTick + 25 * 480) - foreach (var tank in superTanks.Where(t => !t.IsDead() && t.IsInWorld)) - tank.QueueActivity(false, new Move.Move(demitriLZ.Location, 4)); - } - else - { - if (world.FrameNumber % 25 == 0) - foreach (var tank in superTanks.Where(t => !t.IsDead() && t.IsInWorld && t.IsIdle)) - MissionUtils.AttackNearestLandActor(false, tank, ussr); - if (world.FrameNumber == superTankDomeInfiltratedTick + 25 * 180) - { - foreach (var actor in world.Actors.Where(a => !a.IsDead() && (a.Owner == ussr || a.Owner == badGuy))) - actor.Kill(actor); - } - if (world.FrameNumber == superTankDomeInfiltratedTick + 25 * 181) - { - foreach (var tank in superTanks.Where(t => !t.IsDead())) - tank.Kill(tank); - superTanksDestroyed = true; - } - } - if (evacuateDemitri.Status != ObjectiveStatus.Completed) - { - if (demitri == null) - { - if (demitriChurch.IsDead()) - { - evacuateDemitri.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("Dr. Demitri was killed."); - } - - else if (MissionUtils.AreaSecuredWithUnits(world, greece, demitriTriggerAreaCenter.CenterPosition, WRange.FromCells(3))) - { - demitri = world.CreateActor("demitri", greece, demitriChurchSpawnPoint.Location, null); - demitri.QueueActivity(new Move.Move(demitriTriggerAreaCenter.Location, 0)); - demitriLZFlare = world.CreateActor("flare", greece, demitriLZ.Location, null); - Sound.Play("flaren1.aud"); - var chinookEntry = new CPos(demitriLZ.Location.X, 0); - demitriChinook = MissionUtils.ExtractUnitWithChinook(world, greece, demitri, chinookEntry, demitriLZ.Location, chinookEntry); - } - } - else if (demitri.IsDead()) - { - evacuateDemitri.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("Dr. Demitri was killed."); - } - else if (demitriChinook != null && !demitriChinook.IsDead() && !world.Map.IsInMap(demitriChinook.Location) && demitriChinook.Trait().Passengers.Contains(demitri)) - { - demitriLZFlare.Destroy(); - SpawnAndMoveAlliedBaseUnits(info.FirstBaseUnits); - evacuateDemitri.Status = ObjectiveStatus.Completed; - OnObjectivesUpdated(true); - } - } - if (!world.Actors.Any(a => a.Owner == greece && a.IsInWorld && !a.IsDead() - && ((a.HasTrait() && !a.HasTrait()) || a.HasTrait() || a.HasTrait()))) - { - MissionFailed("The remaining Allied forces in the area have been wiped out."); - } - if (superTankDomeInfiltratedTick == -1 && superTankDome.IsDead()) - { - infiltrateRadarDome.Status = ObjectiveStatus.Failed; - OnObjectivesUpdated(true); - MissionFailed("The Soviet radar dome was destroyed."); - } - if (superTanksDestroyed && evacuateDemitri.Status == ObjectiveStatus.Completed) - { - MissionAccomplished("Dr. Demitri has been extracted and the super tanks have been dealt with."); - } - } - - void SetupAlliedBase(IEnumerable actors) - { - foreach (var actor in actors) - { - // hack hack hack - actor.ChangeOwner(greece); - if (actor.Info.Name == "pbox") - { - actor.AddTrait(new TransformedAction(s => s.Trait().Load(s, world.CreateActor(false, "e1", greece, null, null)))); - actor.QueueActivity(new Transform(actor, "hbox.e1") { SkipMakeAnims = true }); - } - else if (actor.Info.Name == "proc") - actor.QueueActivity(new Transform(actor, "proc") { SkipMakeAnims = true }); - foreach (var c in actor.TraitsImplementing()) - c.OnCapture(actor, actor, neutral, greece); - } - } - - void EvacuateCivilians() - { - foreach (var unit in info.CivilianEvacuees) - { - var actor = world.CreateActor(unit, neutral, hospitalCivilianSpawnPoint.Location, null); - actor.Trait().Nudge(actor, actor, true); - actor.QueueActivity(new Move.Move(alliedBaseEntryPoint.Location, 0)); - actor.QueueActivity(new RemoveSelf()); - } - } - - void SpawnAndMoveBridgeUnits(string[] units) - { - Sound.Play("reinfor1.aud"); - foreach (var unit in units) - world.CreateActor(unit, greece, startEntryPoint.Location, Traits.Util.GetFacing(startBridgeEndPoint.CenterPosition - startEntryPoint.CenterPosition, 0)) - .QueueActivity(new Move.Move(startMovePoint.Location, 0)); - } - - void SpawnAndMoveAlliedBaseUnits(string[] units) - { - Sound.Play("reinfor1.aud"); - foreach (var unit in units) - world.CreateActor(unit, greece, alliedBaseEntryPoint.Location, Traits.Util.GetFacing(alliedBaseMovePoint.CenterPosition - alliedBaseEntryPoint.CenterPosition, 0)) - .QueueActivity(new Move.Move(alliedBaseMovePoint.Location, 0)); - } - - void OnSuperTankDomeInfiltrated(Actor spy) - { - if (superTankDomeInfiltratedTick != -1) return; - - superTankDome.QueueActivity(new Transform(superTankDome, "dome") { SkipMakeAnims = true }); - - world.AddFrameEndTask(_ => - { - superTanks.Do(world.Remove); - turkey.Stances[greece] = turkey.Stances[neutral] = Stance.Ally; - greece.Stances[turkey] = neutral.Stances[turkey] = Stance.Ally; - greece.Shroud.ExploreAll(world); - superTanks.Do(world.Add); - }); - - foreach (var tank in superTanks.Where(t => !t.IsDead() && t.IsInWorld)) - MissionUtils.AttackNearestLandActor(false, tank, ussr); - - superTankDomeInfiltratedTick = world.FrameNumber; - - infiltrateRadarDome.Status = ObjectiveStatus.Completed; - OnObjectivesUpdated(true); - } - - public void WorldLoaded(World w, WorldRenderer wr) - { - world = w; - - neutral = w.Players.Single(p => p.InternalName == "Neutral"); - greece = w.Players.Single(p => p.InternalName == "Greece"); - ussr = w.Players.Single(p => p.InternalName == "USSR"); - badGuy = w.Players.Single(p => p.InternalName == "BadGuy"); - turkey = w.Players.Single(p => p.InternalName == "Turkey"); - - greece.PlayerActor.Trait().Cash = 0; - ussr.PlayerActor.Trait().Cash = 2000; - - var actors = w.WorldActor.Trait().Actors; - startEntryPoint = actors["StartEntryPoint"]; - startMovePoint = actors["StartMovePoint"]; - startBridgeEndPoint = actors["StartBridgeEndPoint"]; - alliedBaseTopLeft = actors["AlliedBaseTopLeft"]; - alliedBaseBottomRight = actors["AlliedBaseBottomRight"]; - alliedBaseEntryPoint = actors["AlliedBaseEntryPoint"]; - alliedBaseMovePoint = actors["AlliedBaseMovePoint"]; - - demitriChurch = actors["DemitriChurch"]; - demitriChurchSpawnPoint = actors["DemitriChurchSpawnPoint"]; - demitriTriggerAreaCenter = actors["DemitriTriggerAreaCenter"]; - demitriLZ = actors["DemitriLZ"]; - - hospital = actors["Hospital"]; - hospitalCivilianSpawnPoint = actors["HospitalCivilianSpawnPoint"]; - hospitalSuperTankPoint = actors["HospitalSuperTankPoint"]; - - superTanks = actors.Values.Where(a => a.Info.Name == "5tnk" && a.Owner == turkey).ToArray(); - - provingGroundsCameraPoint = actors["ProvingGroundsCameraPoint"]; - world.CreateActor("camera", greece, provingGroundsCameraPoint.Location, null); - - superTankDome = actors["SuperTankDome"]; - superTankDome.AddTrait(new InfiltrateAction(OnSuperTankDomeInfiltrated)); - superTankDome.AddTrait(new TransformedAction(self => superTankDome = self)); - - wr.Viewport.Center(startEntryPoint.CenterPosition); - MissionUtils.PlayMissionMusic(); - } - } -} diff --git a/OpenRA.Mods.RA/Missions/Objective.cs b/OpenRA.Mods.RA/Missions/Objective.cs deleted file mode 100644 index b0142c2205..0000000000 --- a/OpenRA.Mods.RA/Missions/Objective.cs +++ /dev/null @@ -1,52 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 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. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Collections.Generic; -using OpenRA.Traits; - -namespace OpenRA.Mods.RA.Missions -{ - public class Objective - { - public ObjectiveType Type; - public string Text; - public ObjectiveStatus Status; - - public Objective(ObjectiveType type, string text, ObjectiveStatus status) - { - Type = type; - Text = text; - Status = status; - } - } - - public enum ObjectiveType { Primary, Secondary } - public enum ObjectiveStatus { Inactive, InProgress, Completed, Failed } - - public interface IHasObjectives - { - event Action OnObjectivesUpdated; - IEnumerable Objectives { get; } - } - - public class MissionObjectivesPanelInfo : ITraitInfo - { - public string ObjectivesPanel = null; - public object Create(ActorInitializer init) { return new MissionObjectivesPanel(this); } - } - - public class MissionObjectivesPanel : IObjectivesPanel - { - MissionObjectivesPanelInfo info; - public MissionObjectivesPanel(MissionObjectivesPanelInfo info) { this.info = info; } - public string ObjectivesPanel { get { return info.ObjectivesPanel; } } - } -} diff --git a/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs b/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs deleted file mode 100644 index 775165c0dc..0000000000 --- a/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs +++ /dev/null @@ -1,208 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 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. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using OpenRA.FileFormats; -using OpenRA.Graphics; -using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Air; -using OpenRA.Mods.RA.Buildings; -using OpenRA.Mods.RA.Move; -using OpenRA.Scripting; -using OpenRA.Traits; - -namespace OpenRA.Mods.RA.Missions -{ - class Soviet01ClassicScriptInfo : TraitInfo, Requires { } - - class Soviet01ClassicScript : IHasObjectives, IWorldLoaded, ITick - { - public event Action OnObjectivesUpdated = notify => { }; - - public IEnumerable Objectives { get { return new[] { destroy }; } } - - Objective destroy = new Objective(ObjectiveType.Primary, DestroyText, ObjectiveStatus.InProgress); - - const string DestroyText = "A pitiful excuse for resistance has blockaded itself in this village." - + " Stalin has decided to make an example of them. Kill them all and destroy their homes." - + " You will have Yak aircraft to use in teaching these rebels a lesson."; - - World world; - - Player ussr; - Player france; - - Actor startJeep; - Actor startJeepMovePoint; - Actor church; - bool startJeepParadropped; - bool churchParadropped; - - Actor paradropPoint1; - Actor paradropEntryPoint1; - Actor paradropPoint2; - Actor paradropEntryPoint2; - - Actor airfield1; - Actor airfield2; - Actor airfield3; - Actor[] airfields; - - const string BadgerName = "badr"; - static readonly string[] Reinforcements = { "e1", "e1", "e1", "e2", "e2" }; - - void MissionAccomplished(string text) - { - MissionUtils.CoopMissionAccomplished(world, text, ussr); - } - - void MissionFailed(string text) - { - MissionUtils.CoopMissionFailed(world, text, ussr); - } - - public void Tick(Actor self) - { - if (ussr.WinState != WinState.Undefined) return; - - var unitsAndBuildings = world.Actors.Where(a => !a.IsDead() && a.IsInWorld && (a.HasTrait() || (a.HasTrait() && !a.HasTrait()))); - if (!unitsAndBuildings.Any(a => a.Owner == france)) - { - destroy.Status = ObjectiveStatus.Completed; - MissionAccomplished("We destroyed the resistance."); - } - else if (!unitsAndBuildings.Any(a => a.Owner == ussr)) - { - destroy.Status = ObjectiveStatus.Failed; - MissionFailed("We were destroyed by the resistance."); - } - if (!startJeepParadropped && startJeep.IsDead()) - { - Sound.Play("reinfor1.aud"); - MissionUtils.Paradrop(world, ussr, Reinforcements, paradropEntryPoint1.Location, paradropPoint1.Location); - startJeepParadropped = true; - } - if (!churchParadropped && church.IsDead()) - { - Sound.Play("reinfor1.aud"); - MissionUtils.Paradrop(world, ussr, Reinforcements, paradropEntryPoint2.Location, paradropPoint2.Location); - churchParadropped = true; - } - } - - void LandYaks() - { - foreach (var airfield in airfields) - { - var entry = airfield.Location - new CVec(10, 0); - var altitude = Rules.Info["yak"].Traits.Get().CruiseAltitude; - var yak = world.CreateActor("yak", new TypeDictionary - { - new CenterPositionInit(entry.CenterPosition + new WVec(WRange.Zero, WRange.Zero, altitude)), - new OwnerInit(ussr), - new FacingInit(Traits.Util.GetFacing(airfield.Location - entry, 0)) - }); - - while (yak.Trait().TakeAmmo()) { } - - yak.QueueActivity(new ReturnToBase(yak, airfield)); - yak.QueueActivity(new ResupplyAircraft()); - } - } - - void MoveJeep() - { - startJeep.QueueActivity(new Move.Move(startJeepMovePoint.Location, 0)); - startJeep.QueueActivity(new Turn(128)); - startJeep.QueueActivity(new CallFunc(() => - { - var bridge = world.Actors.Where(a => a.HasTrait()).ClosestTo(startJeep); - bridge.Trait().Demolish(bridge, startJeep); - })); - } - - public void WorldLoaded(World w, WorldRenderer wr) - { - world = w; - - ussr = w.Players.Single(p => p.InternalName == "USSR"); - france = w.Players.Single(p => p.InternalName == "France"); - - var actors = w.WorldActor.Trait().Actors; - startJeep = actors["StartJeep"]; - startJeepMovePoint = actors["StartJeepMovePoint"]; - paradropPoint1 = actors["ParadropPoint1"]; - paradropEntryPoint1 = actors["ParadropEntryPoint1"]; - paradropPoint2 = actors["ParadropPoint2"]; - paradropEntryPoint2 = actors["ParadropEntryPoint2"]; - church = actors["Church"]; - airfield1 = actors["Airfield1"]; - airfield2 = actors["Airfield2"]; - airfield3 = actors["Airfield3"]; - airfields = new[] { airfield1, airfield2, airfield3 }; - - wr.Viewport.Center(startJeep.CenterPosition); - - if (w.LobbyInfo.IsSinglePlayer) - { - Media.PlayFMVFullscreen(w, "soviet1.vqa", () => - { - LandYaks(); - MoveJeep(); - MissionUtils.PlayMissionMusic(); - }); - } - else - { - LandYaks(); - MoveJeep(); - MissionUtils.PlayMissionMusic(); - } - } - } - - class Soviet01ClassicContainsActorsInfo : ITraitInfo - { - public readonly string[] Actors = { }; - - public object Create(ActorInitializer init) { return new Soviet01ClassicContainsActors(this); } - } - - class Soviet01ClassicContainsActors : INotifyDamage - { - bool spawned; - Soviet01ClassicContainsActorsInfo info; - - public Soviet01ClassicContainsActors(Soviet01ClassicContainsActorsInfo info) - { - this.info = info; - } - - public void Damaged(Actor self, AttackInfo e) - { - if (spawned || self.IsDead()) - { - return; - } - foreach (var actor in info.Actors) - { - var unit = self.World.CreateActor(actor, new TypeDictionary - { - new OwnerInit(self.Owner), - new LocationInit(self.Location) - }); - unit.Trait().Nudge(unit, unit, true); - } - spawned = true; - } - } -} diff --git a/OpenRA.Mods.RA/Missions/Survival01Script.cs b/OpenRA.Mods.RA/Missions/Survival01Script.cs deleted file mode 100644 index 4d7b0e0d16..0000000000 --- a/OpenRA.Mods.RA/Missions/Survival01Script.cs +++ /dev/null @@ -1,346 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2013 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. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using OpenRA.FileFormats; -using OpenRA.Graphics; -using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Buildings; -using OpenRA.Mods.RA.Move; -using OpenRA.Traits; -using OpenRA.Widgets; - -namespace OpenRA.Mods.RA.Missions -{ - class Survival01ScriptInfo : TraitInfo, Requires { } - - class Survival01Script : IHasObjectives, IWorldLoaded, ITick - { - public event Action OnObjectivesUpdated = notify => { }; - - public IEnumerable Objectives { get { return new[] { maintainPresence, destroySoviets }; } } - - Objective maintainPresence = new Objective(ObjectiveType.Primary, MaintainPresenceText, ObjectiveStatus.InProgress); - Objective destroySoviets = new Objective(ObjectiveType.Primary, DestroySovietsText, ObjectiveStatus.Inactive); - - const string MaintainPresenceText = "Enforce your position and hold-out the onslaught until reinforcements arrive. We must not lose the base!"; - const string DestroySovietsText = "Take control of French reinforcements and dismantle the nearby Soviet base."; - - Player allies; - Player soviets; - - Actor sovietEntryPoint1; - Actor sovietEntryPoint2; - Actor sovietEntryPoint3; - Actor sovietEntryPoint4; - Actor sovietEntryPoint5; - CPos[] sovietEntryPoints; - Actor sovietRallyPoint1; - Actor sovietRallyPoint2; - Actor sovietRallyPoint3; - Actor sovietRallyPoint4; - Actor sovietRallyPoint5; - CPos[] sovietRallyPoints; - - Actor sovietinfantryentry1; - Actor sovietinfantryrally1; - - Actor badgerEntryPoint1; - Actor badgerEntryPoint2; - Actor paraDrop1; - Actor paraDrop2; - Actor sovietEntryPoint7; - - Actor alliesbase1; - Actor alliesbase2; - Actor alliesbase; - Actor sam1; - Actor sam2; - Actor barrack1; - World world; - - CountdownTimer survivalTimer; - CountdownTimerWidget survivalTimerWidget; - - int attackAtFrame; - int attackAtFrameIncrement; - int attackAtFrameInf; - int attackAtFrameIncrementInf; - - const int paradropTicks = 750; - static readonly string[] badger1Passengers = { "e1", "e1", "e1", "e2", "e2" }; - - const int factoryClearRange = 10; - static readonly string[] squad1 = { "e1", "e1" }; - static readonly string[] squad2 = { "e2", "e2" }; - static readonly string[] sovietVehicles = { "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "v2rl", "v2rl", "ftrk", "ftrk", "ftrk", "apc", "apc" }; - static readonly string[] sovietInfantry = { "e1", "e1", "e1", "e1", "e2", "e2", "e2", "e4", "e4", "e3", }; - static readonly string[] reinforcements = { "2tnk", "2tnk", "2tnk", "2tnk", "2tnk", "1tnk", "1tnk", "1tnk", "arty", "arty", "arty", "jeep", "jeep" }; - const int sovietAttackGroupSize = 5; - const int sovietInfantryGroupSize = 7; - - const int timerTicks = 1500 * 25; - bool spawningSovietUnits = true; - bool spawningInfantry = true; - string difficulty; - - void MissionAccomplished(string text) - { - MissionUtils.CoopMissionAccomplished(world, text, allies); - } - - public void Tick(Actor self) - { - if (allies.WinState != WinState.Undefined) - return; - - survivalTimer.Tick(); - - if (world.FrameNumber == attackAtFrame) - { - attackAtFrame += attackAtFrameIncrement; - attackAtFrameIncrement = Math.Max(attackAtFrameIncrement - 5, 100); - SpawnSovietUnits(); - ManageSovietUnits(); - MissionUtils.CapOre(soviets); - } - - if (world.FrameNumber == attackAtFrameInf) - { - attackAtFrameInf += attackAtFrameIncrementInf; - attackAtFrameIncrementInf = Math.Max(attackAtFrameIncrementInf - 5, 100); - SpawnSovietInfantry(); - } - - if (barrack1.Destroyed) - { - spawningInfantry = false; - } - - if (world.FrameNumber == paradropTicks) - { - MissionUtils.Paradrop(world, soviets, badger1Passengers, badgerEntryPoint1.Location, paraDrop1.Location); - MissionUtils.Paradrop(world, soviets, badger1Passengers, badgerEntryPoint2.Location, paraDrop2.Location); - } - - if (world.FrameNumber == paradropTicks * 2) - { - MissionUtils.Paradrop(world, soviets, badger1Passengers, badgerEntryPoint1.Location, alliesbase2.Location); - MissionUtils.Paradrop(world, soviets, badger1Passengers, badgerEntryPoint2.Location, alliesbase1.Location); - } - - if (world.FrameNumber == 1500 * 23) - { - attackAtFrame = 100; - attackAtFrameIncrement = 100; - } - - if (world.FrameNumber == 1500 * 25) - { - spawningSovietUnits = false; - spawningInfantry = false; - } - - if (destroySoviets.Status == ObjectiveStatus.InProgress) - { - if (barrack1.Destroyed) - { - destroySoviets.Status = ObjectiveStatus.Completed; - OnObjectivesUpdated(true); - MissionAccomplished("The French forces have survived and dismantled the soviet presence in the area!"); - } - } - } - - void SendSquad1() - { - for (int i = 0; i < squad1.Length; i++) - { - var actor = world.CreateActor(squad1[i], new TypeDictionary { new OwnerInit(soviets), new LocationInit(alliesbase1.Location + new CVec(-2 + i, -6 + i * 2)) }); - actor.QueueActivity(new Move.Move(alliesbase1.Location)); - } - } - - void SendSquad2() - { - for (int i = 0; i < squad2.Length; i++) - { - var actor = world.CreateActor(squad2[i], new TypeDictionary { new OwnerInit(soviets), new LocationInit(alliesbase2.Location + new CVec(-9 + i, -2 + i * 2)) }); - actor.QueueActivity(new Move.Move(alliesbase2.Location)); - } - } - - void SpawnSovietInfantry() - { - if (spawningInfantry) - { - var units = world.CreateActor((sovietInfantry).Random(world.SharedRandom), new TypeDictionary { new LocationInit(sovietinfantryentry1.Location), new OwnerInit(soviets) }); - units.QueueActivity(new Move.Move(sovietinfantryrally1.Location, 3)); - var unitsincircle = world.FindAliveCombatantActorsInCircle(sovietinfantryrally1.CenterPosition, WRange.FromCells(10)) - .Where(a => a.Owner == soviets && a.IsIdle && a.HasTrait()); - if (unitsincircle.Count() >= sovietInfantryGroupSize) - { - foreach (var scatteredunits in unitsincircle) - AttackNearestAlliedActor(scatteredunits); - } - } - } - - void SpawnSovietUnits() - { - if (spawningSovietUnits) - { - var route = world.SharedRandom.Next(sovietEntryPoints.Length); - var spawnPoint = sovietEntryPoints[route]; - var rallyPoint = sovietRallyPoints[route]; - var unit = world.CreateActor(sovietVehicles.Random(world.SharedRandom), - new TypeDictionary { new LocationInit(spawnPoint), new OwnerInit(soviets) }); - unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Move.Move(rallyPoint, 3))); - } - } - - void AttackNearestAlliedActor(Actor self) - { - var enemies = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == allies) - && ((u.HasTrait() && !u.HasTrait()) || u.HasTrait())); - - var targetEnemy = enemies.ClosestTo(self); - if (targetEnemy != null) - self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(targetEnemy), WRange.FromCells(3)))); - } - - void ManageSovietUnits() - { - foreach (var rallyPoint in sovietRallyPoints) - { - var units = world.FindAliveCombatantActorsInCircle(rallyPoint.CenterPosition, WRange.FromCells(4)) - .Where(u => u.IsIdle && u.HasTrait() && u.Owner == soviets); - if (units.Count() >= sovietAttackGroupSize) - { - foreach (var unit in units) - { - AttackNearestAlliedActor(unit); - } - } - } - var scatteredUnits = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && u.HasTrait() && u.IsIdle && u.Owner == soviets) - .Except(world.WorldActor.Trait().Actors.Values) - .Except(sovietRallyPoints.SelectMany(rp => world.FindAliveCombatantActorsInCircle(rp.CenterPosition, WRange.FromCells(4)))); - foreach (var unit in scatteredUnits) - { - AttackNearestAlliedActor(unit); - } - } - - void StartCountDownTimer() - { - Sound.Play("timergo1.aud"); - survivalTimer = new CountdownTimer(timerTicks, CountDownTimerExpired, true); - survivalTimerWidget = new CountdownTimerWidget(survivalTimer, "Survive: {0}"); - Ui.Root.AddChild(survivalTimerWidget); - } - - void SendReinforcements() - { - foreach (var unit in reinforcements) - { - var u = world.CreateActor(unit, new TypeDictionary - { - new LocationInit(sovietEntryPoint7.Location), - new FacingInit(0), - new OwnerInit(allies) - }); - u.QueueActivity(new Move.Move(alliesbase.Location)); - } - } - - void CountDownTimerExpired(CountdownTimer countDownTimer) - { - survivalTimerWidget.Visible = false; - SendReinforcements(); - maintainPresence.Status = ObjectiveStatus.Completed; - destroySoviets.Status = ObjectiveStatus.InProgress; - OnObjectivesUpdated(true); - } - - public void WorldLoaded(World w, WorldRenderer wr) - { - world = w; - - allies = w.Players.SingleOrDefault(p => p.InternalName == "Allies"); - if (allies != null) - { - attackAtFrameInf = 300; - attackAtFrameIncrementInf = 300; - attackAtFrame = 450; - attackAtFrameIncrement = 450; - } - - difficulty = w.LobbyInfo.GlobalSettings.Difficulty; - Game.Debug("{0} difficulty selected".F(difficulty)); - - switch (difficulty) - { - case "Hard": - attackAtFrameIncrement = 350; - attackAtFrameIncrementInf = 200; - break; - case "Normal": - attackAtFrameIncrement = 450; - attackAtFrameIncrementInf = 300; - break; - case "Easy": - attackAtFrameIncrement = 550; - attackAtFrameIncrementInf = 400; - break; - } - - soviets = w.Players.Single(p => p.InternalName == "Soviets"); - var actors = w.WorldActor.Trait().Actors; - sovietEntryPoint1 = actors["sovietEntryPoint1"]; - sovietEntryPoint2 = actors["sovietEntryPoint2"]; - sovietEntryPoint3 = actors["sovietEntryPoint3"]; - sovietEntryPoint4 = actors["sovietEntryPoint4"]; - sovietEntryPoint5 = actors["sovietEntryPoint5"]; - sovietEntryPoints = new[] { sovietEntryPoint1, sovietEntryPoint2, sovietEntryPoint3, sovietEntryPoint4, sovietEntryPoint5 }.Select(p => p.Location).ToArray(); - sovietRallyPoint1 = actors["sovietRallyPoint1"]; - sovietRallyPoint2 = actors["sovietRallyPoint2"]; - sovietRallyPoint3 = actors["sovietRallyPoint3"]; - sovietRallyPoint4 = actors["sovietRallyPoint4"]; - sovietRallyPoint5 = actors["sovietRallyPoint5"]; - sovietRallyPoints = new[] { sovietRallyPoint1, sovietRallyPoint2, sovietRallyPoint3, sovietRallyPoint4, sovietRallyPoint5 }.Select(p => p.Location).ToArray(); - alliesbase = actors["alliesbase"]; - alliesbase1 = actors["alliesbase1"]; - alliesbase2 = actors["alliesbase2"]; - badgerEntryPoint1 = actors["BadgerEntryPoint1"]; - badgerEntryPoint2 = actors["BadgerEntryPoint2"]; - sovietEntryPoint7 = actors["sovietEntryPoint7"]; - sovietinfantryentry1 = actors["SovietInfantryEntry1"]; - sovietinfantryrally1 = actors["SovietInfantryRally1"]; - paraDrop1 = actors["ParaDrop1"]; - paraDrop2 = actors["ParaDrop2"]; - barrack1 = actors["Barrack1"]; - sam1 = actors["Sam1"]; - sam2 = actors["Sam2"]; - - var shroud = allies.PlayerActor.Trait(); - shroud.Explore(w, sam1.Location, WRange.FromCells(4)); - shroud.Explore(w, sam2.Location, WRange.FromCells(4)); - - wr.Viewport.Center(alliesbase.CenterPosition); - StartCountDownTimer(); - SendSquad1(); - SendSquad2(); - MissionUtils.PlayMissionMusic(); - } - } -} diff --git a/OpenRA.Mods.RA/Missions/Survival02Script.cs b/OpenRA.Mods.RA/Missions/Survival02Script.cs deleted file mode 100644 index 7139793f37..0000000000 --- a/OpenRA.Mods.RA/Missions/Survival02Script.cs +++ /dev/null @@ -1,411 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2013 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. For more information, - * see COPYING. - */ -#endregion - -using System.Collections.Generic; -using System.Linq; -using System; -using System.Drawing; -using OpenRA.FileFormats; -using OpenRA.Graphics; -using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Move; -using OpenRA.Traits; -using OpenRA.Widgets; -using OpenRA.Mods.RA.Buildings; - -namespace OpenRA.Mods.RA.Missions -{ - class Survival02ScriptInfo : TraitInfo, Requires { } - - class Survival02Script : IHasObjectives, IWorldLoaded, ITick - { - public event Action OnObjectivesUpdated = notify => { }; - - public IEnumerable Objectives { get { return objectives.Values; } } - - Dictionary objectives = new Dictionary - { - { maintainPresenceID, new Objective(ObjectiveType.Primary, maintainPresence, ObjectiveStatus.InProgress) }, - { destroySovietsID, new Objective(ObjectiveType.Primary, destroySoviets, ObjectiveStatus.Inactive) }, - }; - const int destroySovietsID = 0; - const string destroySoviets = "Excellent work Commander! We have reinforced our position enough to initiate a counter-attack. Destroy the remaining Soviet forces in the area!"; - const int maintainPresenceID = 1; - const string maintainPresence = "Commander! The Soviets have rendered us useless... Reports indicate Soviet reinforcements are coming to finish us off... the situation looks bleak..."; - - Player allies; - Player soviets; - - Actor sovietEntry1; - Actor sovietEntry2; - Actor sovietEntry3; - CPos[] sovietentrypoints; - CPos[] newsovietentrypoints; - - Actor sovietrally; - Actor sovietrally1; - Actor sovietrally2; - Actor sovietrally3; - Actor sovietrally4; - Actor sovietrally5; - Actor sovietrally6; - Actor sovietrally8; - CPos[] sovietrallypoints; - CPos[] newsovietrallypoints; - - Actor sovietparadrop1; - Actor sovietparadrop2; - Actor sovietparadrop3; - Actor sovietparadropEntry; - - Actor alliesbase; - Actor factory; - Actor barrack1; - - Actor drum1; - Actor drum2; - Actor drum3; - Actor FranceEntry; - Actor FranceRally; - Actor FranceparaEntry1; - Actor FranceparaEntry2; - Actor FranceparaEntry3; - - World world; - WorldRenderer worldRenderer; - - CountdownTimer survivalTimer; - CountdownTimerWidget survivalTimerWidget; - - const int timerTicks = 1500 * 10; - const int attackTicks = 1500 * 1; - const int sovietAttackGroupSize = 7; - const int SovietGroupSize = 4; - - const string Camera = "Camera"; - const string InfantryQueueName = "Infantry"; - const string Flare = "flare"; - - static readonly string[] FrenchSquad = { "2tnk", "2tnk", "mcv" }; - static readonly string[] SovietInfantry = { "e1", "e4", "e2" }; - static readonly string[] SovietVehicles = { "3tnk", "3tnk", "v2rl" }; - static readonly string[] SovietTanks = { "3tnk", "3tnk", "3tnk" }; - static readonly string[] squad = { "e1", "e1", "e2", "e4", "e4" }; - static readonly string[] platoon = { "e1", "e1", "e2", "e4", "e4", "e1", "e1", "e2", "e4", "e4" }; - - int ProduceAtFrame; - int ProduceAtFrameIncrement; - int attackAtFrame; - int attackAtFrameIncrement; - - void MissionAccomplished(string text) - { - MissionUtils.CoopMissionAccomplished(world, text, allies); - } - - void MissionFailed(string text) - { - MissionUtils.CoopMissionFailed(world, text, allies); - } - - void Message(string text) - { - Game.AddChatLine(Color.Aqua, "Incoming Report", text); - } - - void SetSovietUnitsToDefensiveStance() - { - foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == soviets && !a.IsDead() && a.HasTrait())) - actor.Trait().Stance = UnitStance.Defend; - } - - Actor FirstUnshroudedOrDefault(IEnumerable actors, World world, int shroudRange) - { - return actors.FirstOrDefault(u => world.FindAliveCombatantActorsInCircle(u.CenterPosition, WRange.FromCells(shroudRange)).All(a => !a.HasTrait())); - } - - void AttackNearestAlliedActor(Actor self) - { - var enemies = world.Actors.Where(u => u.AppearsHostileTo(self) && (u.Owner == allies) - && ((u.HasTrait() && !u.HasTrait()) || u.HasTrait()) && u.IsInWorld && !u.IsDead()); - - var enemy = FirstUnshroudedOrDefault(enemies.OrderBy(u => (self.CenterPosition - u.CenterPosition).LengthSquared), world, 20); - if (enemy != null) - self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(enemy), WRange.FromCells(3)))); - } - - void SpawnAndAttack(string[] squad, Player owner, CPos location) - { - for (int i = 0; i < squad.Length; i++) - { - var actor = world.CreateActor(squad[i], new TypeDictionary { new OwnerInit(owner), new LocationInit(location) }); - AttackNearestAlliedActor(actor); - } - } - - void SpawnFlare(Player owner, Actor location) - { - world.CreateActor(Flare, new TypeDictionary { new OwnerInit(owner), new LocationInit(location.Location) }); - } - - void FinalAttack() - { - SpawnAndAttack(SovietTanks, soviets, sovietEntry1.Location); - SpawnAndAttack(SovietTanks, soviets, sovietEntry1.Location); - SpawnAndAttack(SovietTanks, soviets, sovietEntry2.Location); - SpawnAndAttack(platoon, soviets, sovietEntry1.Location); - SpawnAndAttack(platoon, soviets, sovietEntry2.Location); - } - - void FrenchReinforcements() - { - worldRenderer.Viewport.Center(sovietrally1.CenterPosition); - MissionUtils.Parabomb(world, allies, FranceparaEntry1.Location, drum3.Location); - MissionUtils.Parabomb(world, allies, FranceparaEntry3.Location, drum2.Location); - MissionUtils.Parabomb(world, allies, FranceparaEntry2.Location, drum1.Location); - for (int i = 0; i < FrenchSquad.Length; i++) - { - var actor = world.CreateActor(FrenchSquad[i], new TypeDictionary { new OwnerInit(allies), new LocationInit(FranceEntry.Location) }); - actor.QueueActivity(new Move.Move(FranceRally.Location)); - } - } - - public void Tick(Actor self) - { - if (allies.WinState != WinState.Undefined) - return; - - survivalTimer.Tick(); - if (allies != null) - { - ManageSovietUnits(); - } - - var unitsAndBuildings = world.Actors.Where(a => !a.IsDead() && a.IsInWorld && (a.HasTrait() || (a.HasTrait() && !a.HasTrait()))); - if (!unitsAndBuildings.Any(a => a.Owner == soviets)) - { - objectives[destroySovietsID].Status = ObjectiveStatus.Completed; - MissionAccomplished("We have destroyed the remaining Soviet presence!"); - } - - if (world.FrameNumber == ProduceAtFrame) - { - ProduceAtFrame += ProduceAtFrameIncrement; - ProduceAtFrameIncrement = Math.Max(ProduceAtFrameIncrement - 5, 100); - InitializeSovietFactories(barrack1, sovietrally.Location); - BuildSovietUnits(factory, barrack1); - } - if (world.FrameNumber == attackAtFrame) - { - attackAtFrame += attackAtFrameIncrement; - attackAtFrameIncrement = Math.Max(attackAtFrameIncrement - 5, 100); - ManageSovietVehicles(); - if (producing) - { - BuildSovietVehicles(sovietentrypoints, sovietrallypoints); - } - else - BuildSovietVehicles(newsovietentrypoints, newsovietrallypoints); - } - if (world.FrameNumber == attackTicks) - { - SpawnAndAttack(squad, soviets, sovietrally5.Location); - SpawnAndAttack(squad, soviets, sovietrally6.Location); - } - if (world.FrameNumber == attackTicks * 3) - { - SpawnFlare(soviets, sovietparadrop3); - MissionUtils.Paradrop(world, soviets, squad, sovietparadropEntry.Location, sovietparadrop3.Location); - SpawnAndAttack(squad, soviets, sovietrally2.Location); - SpawnAndAttack(platoon, soviets, sovietrally5.Location); - SpawnAndAttack(platoon, soviets, sovietrally6.Location); - } - if (world.FrameNumber == attackTicks * 5) - { - SpawnFlare(soviets, sovietparadrop2); - MissionUtils.Paradrop(world, soviets, squad, sovietparadropEntry.Location, sovietparadrop2.Location); - } - if (world.FrameNumber == attackTicks * 7) - { - SpawnFlare(soviets, sovietparadrop1); - MissionUtils.Paradrop(world, soviets, squad, sovietparadropEntry.Location, sovietparadrop1.Location); - } - if (world.FrameNumber == attackTicks * 10) - { - SpawnFlare(soviets, sovietparadrop1); - MissionUtils.Paradrop(world, soviets, squad, sovietparadropEntry.Location, sovietparadrop1.Location); - ManageSovietUnits(); - } - if (world.FrameNumber == attackTicks * 12) - { - Sound.Play("reinfor1.aud"); - FrenchReinforcements(); - } - } - - void StartCountDownTimer() - { - Sound.Play("timergo1.aud"); - survivalTimer = new CountdownTimer(timerTicks, CountDownTimerExpired, true); - survivalTimerWidget = new CountdownTimerWidget(survivalTimer, "Time Until Soviet Reinforcements Arrive: {0}"); - Ui.Root.AddChild(survivalTimerWidget); - } - - void CountDownTimerExpired(CountdownTimer countDownTimer) - { - survivalTimerWidget.Visible = false; - Message("The Soviet reinforcements are approuching!"); - BuildSovietVehicles(newsovietentrypoints, newsovietrallypoints); - FinalAttack(); - producing = false; - objectives[maintainPresenceID].Status = ObjectiveStatus.Completed; - objectives[destroySovietsID].Status = ObjectiveStatus.InProgress; - OnObjectivesUpdated(true); - } - - void InitializeSovietFactories(Actor tent, CPos rally) - { - if (tent.IsInWorld && !tent.IsDead()) - { - var sbrp = tent.Trait(); - sbrp.rallyPoint = rally; - sbrp.nearEnough = 6; - } - } - - void BuildSovietUnit(string category, string unit) - { - var queueTent = MissionUtils.FindQueues(world, soviets, category).FirstOrDefault(q => q.CurrentItem() == null); - if (queueTent == null) return; - queueTent.ResolveOrder(queueTent.self, Order.StartProduction(queueTent.self, unit, 1)); - } - - void BuildSovietUnits(Actor factory, Actor tent) - { - if (barrack1.IsInWorld && !barrack1.IsDead()) - { - BuildSovietUnit(InfantryQueueName, SovietInfantry.Random(world.SharedRandom)); - } - } - - void ManageSovietUnits() - { - var units = world.FindAliveCombatantActorsInCircle(sovietrally.CenterPosition, WRange.FromCells(3)) - .Where(u => u.IsIdle && u.HasTrait() && u.HasTrait() && u.Owner == soviets); - if (units.Count() >= sovietAttackGroupSize) - { - foreach (var unit in units) - { - var route = world.SharedRandom.Next(sovietrallypoints.Length); - unit.QueueActivity(new Move.Move(sovietrally3.Location)); - unit.QueueActivity(new Wait(300)); - unit.QueueActivity(new Move.Move(sovietrallypoints[route])); - AttackNearestAlliedActor(unit); - } - } - } - - void BuildSovietVehicles(CPos[] spawnpoints, CPos[] rallypoints) - { - var route = world.SharedRandom.Next(spawnpoints.Length); - var spawnPoint = spawnpoints[route]; - var rally = world.SharedRandom.Next(rallypoints.Length); - var rallyPoint = rallypoints[rally]; - var unit = world.CreateActor(SovietVehicles.Random(world.SharedRandom), - new TypeDictionary - { - new LocationInit(spawnPoint), - new OwnerInit(soviets) - }); - unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Move.Move(rallyPoint, 3))); - } - - void ManageSovietVehicles() - { - foreach (var rallyPoint in sovietrallypoints) - { - var units = world.FindAliveCombatantActorsInCircle(rallyPoint.CenterPosition, WRange.FromCells(10)) - .Where(u => u.IsIdle && u.HasTrait() && u.HasTrait() && u.Owner == soviets); - if (units.Count() >= SovietGroupSize) - { - foreach (var unit in units) - AttackNearestAlliedActor(unit); - } - } - - var scatteredUnits = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && u.HasTrait() && u.IsIdle && u.Owner == soviets) - .Except(world.WorldActor.Trait().Actors.Values) - .Except(sovietrallypoints.SelectMany(rp => world.FindAliveCombatantActorsInCircle(rp.CenterPosition, WRange.FromCells(10)))); - - foreach (var unit in scatteredUnits) - AttackNearestAlliedActor(unit); - } - - bool producing = true; - - public void WorldLoaded(World w, WorldRenderer wr) - { - world = w; - worldRenderer = wr; - - allies = w.Players.SingleOrDefault(p => p.InternalName == "Allies"); - if (allies != null) - { - ProduceAtFrame = 300; - ProduceAtFrameIncrement = 300; - attackAtFrame = 450; - attackAtFrameIncrement = 450; - } - soviets = w.Players.Single(p => p.InternalName == "Soviets"); - var actors = w.WorldActor.Trait().Actors; - sovietEntry1 = actors["SovietEntry1"]; - sovietEntry2 = actors["SovietEntry2"]; - sovietEntry3 = actors["SovietEntry3"]; - sovietentrypoints = new[] { sovietEntry1, sovietEntry2, sovietEntry3 }.Select(p => p.Location).ToArray(); - sovietrally = actors["SovietRally"]; - sovietrally1 = actors["SovietRally1"]; - sovietrally2 = actors["SovietRally2"]; - sovietrally3 = actors["SovietRally3"]; - sovietrally4 = actors["SovietRally4"]; - sovietrally5 = actors["SovietRally5"]; - sovietrally6 = actors["SovietRally6"]; - sovietrally8 = actors["SovietRally8"]; - sovietrallypoints = new[] { sovietrally2, sovietrally4, sovietrally5, sovietrally6 }.Select(p => p.Location).ToArray(); - alliesbase = actors["AlliesBase"]; - sovietparadropEntry = actors["SovietParaDropEntry"]; - sovietparadrop1 = actors["SovietParaDrop1"]; - sovietparadrop2 = actors["SovietParaDrop2"]; - sovietparadrop3 = actors["SovietParaDrop3"]; - barrack1 = actors["barrack1"]; - factory = actors["Factory"]; - drum1 = actors["drum1"]; - drum2 = actors["drum2"]; - drum3 = actors["drum3"]; - FranceEntry = actors["FranceEntry"]; - FranceRally = actors["FranceRally"]; - FranceparaEntry1 = actors["FranceparaEntry1"]; - FranceparaEntry2 = actors["FranceparaEntry2"]; - FranceparaEntry3 = actors["FranceparaEntry3"]; - newsovietentrypoints = new[] { sovietparadropEntry, sovietEntry3 }.Select(p => p.Location).ToArray(); - newsovietrallypoints = new[] { sovietrally3, sovietrally4, sovietrally8 }.Select(p => p.Location).ToArray(); - - worldRenderer.Viewport.Center(alliesbase.CenterPosition); - StartCountDownTimer(); - SetSovietUnitsToDefensiveStance(); - world.CreateActor(Camera, new TypeDictionary - { - new OwnerInit(allies), - new LocationInit(sovietrally1.Location), - }); - MissionUtils.PlayMissionMusic(); - } - } - -} diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 5f830fa235..02aa8caf19 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -261,22 +261,9 @@ - - - - - - - - - - - - - @@ -407,7 +394,6 @@ - diff --git a/OpenRA.Mods.RA/Scripting/LuaScriptInterface.cs b/OpenRA.Mods.RA/Scripting/LuaScriptInterface.cs index 93150f1faa..8530e855c0 100644 --- a/OpenRA.Mods.RA/Scripting/LuaScriptInterface.cs +++ b/OpenRA.Mods.RA/Scripting/LuaScriptInterface.cs @@ -17,7 +17,7 @@ using OpenRA.Effects; using OpenRA.FileFormats; using OpenRA.Mods.RA.Activities; using OpenRA.Mods.RA.Air; -using OpenRA.Mods.RA.Missions; +using OpenRA.Network; using OpenRA.Scripting; using OpenRA.Support; using OpenRA.Traits; @@ -245,7 +245,25 @@ namespace OpenRA.Mods.RA.Scripting [LuaGlobal] public void PlayRandomMusic() { - MissionUtils.PlayMissionMusic(); + if (!Rules.InstalledMusic.Any() || !Game.Settings.Sound.MapMusic) + return; + Game.ConnectionStateChanged += StopMusic; + PlayMusic(); + } + + void PlayMusic() + { + var track = Rules.InstalledMusic.Random(Game.CosmeticRandom); + Sound.PlayMusicThen(track.Value, PlayMusic); + } + + void StopMusic(OrderManager orderManager) + { + if (!orderManager.GameStarted) + { + Sound.StopMusic(); + Game.ConnectionStateChanged -= StopMusic; + } } [LuaGlobal] diff --git a/OpenRA.Mods.RA/Widgets/Logic/MissionObjectivesLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/MissionObjectivesLogic.cs deleted file mode 100644 index fd653e3988..0000000000 --- a/OpenRA.Mods.RA/Widgets/Logic/MissionObjectivesLogic.cs +++ /dev/null @@ -1,111 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2012 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. For more information, - * see COPYING. - */ -#endregion - -using System.Linq; -using OpenRA.Mods.RA.Missions; -using OpenRA.Network; -using OpenRA.Widgets; - -namespace OpenRA.Mods.RA.Widgets.Logic -{ - public class MissionObjectivesLogic - { - IHasObjectives objectives; - Widget primaryPanel; - Widget secondaryPanel; - Widget primaryTemplate; - Widget secondaryTemplate; - ButtonWidget objectivesButton; - - [ObjectCreator.UseCtor] - public MissionObjectivesLogic(World world, Widget widget) - { - var gameRoot = Ui.Root.Get("INGAME_ROOT"); - primaryPanel = widget.Get("PRIMARY_OBJECTIVES"); - secondaryPanel = widget.Get("SECONDARY_OBJECTIVES"); - primaryTemplate = primaryPanel.Get("PRIMARY_OBJECTIVE_TEMPLATE"); - secondaryTemplate = secondaryPanel.Get("SECONDARY_OBJECTIVE_TEMPLATE"); - - objectives = world.WorldActor.TraitsImplementing().First(); - - objectivesButton = gameRoot.Get("OBJECTIVES_BUTTON"); - objectivesButton.IsHighlighted = () => Game.LocalTick % 50 < 25 && objectivesButton.Highlighted; - objectivesButton.OnClick += () => objectivesButton.Highlighted = false; - - objectives.OnObjectivesUpdated += UpdateObjectives; - UpdateObjectives(true); - Game.ConnectionStateChanged += RemoveHandlers; - } - - public void RemoveHandlers(OrderManager orderManager) - { - if (!orderManager.GameStarted) - { - Game.ConnectionStateChanged -= RemoveHandlers; - objectives.OnObjectivesUpdated -= UpdateObjectives; - } - } - - public void UpdateObjectives(bool notify) - { - if (notify) - objectivesButton.Highlighted = true; - - primaryPanel.RemoveChildren(); - secondaryPanel.RemoveChildren(); - - foreach (var o in objectives.Objectives.Where(o => o.Status != ObjectiveStatus.Inactive)) - { - var objective = o; - - Widget widget; - LabelWidget objectiveText; - LabelWidget objectiveStatus; - - if (objective.Type == ObjectiveType.Primary) - { - widget = primaryTemplate.Clone(); - objectiveText = widget.Get("PRIMARY_OBJECTIVE"); - objectiveStatus = widget.Get("PRIMARY_STATUS"); - SetupWidget(widget, objectiveText, objectiveStatus, objective); - primaryPanel.AddChild(widget); - } - else - { - widget = secondaryTemplate.Clone(); - objectiveText = widget.Get("SECONDARY_OBJECTIVE"); - objectiveStatus = widget.Get("SECONDARY_STATUS"); - SetupWidget(widget, objectiveText, objectiveStatus, objective); - secondaryPanel.AddChild(widget); - } - } - } - - void SetupWidget(Widget widget, LabelWidget objectiveText, LabelWidget objectiveStatus, Objective objective) - { - var font = Game.Renderer.Fonts[objectiveText.Font]; - var text = WidgetUtils.WrapText(objective.Text, objectiveText.Bounds.Width, font); - widget.Bounds.Height = objectiveText.Bounds.Height = objectiveStatus.Bounds.Height = font.Measure(text).Y; - objectiveText.GetText = () => text; - objectiveStatus.GetText = () => GetObjectiveStatusText(objective.Status); - } - - static string GetObjectiveStatusText(ObjectiveStatus status) - { - switch (status) - { - case ObjectiveStatus.InProgress: return "In Progress"; - case ObjectiveStatus.Completed: return "Completed"; - case ObjectiveStatus.Failed: return "Failed"; - default: return ""; - } - } - } -} diff --git a/mods/ra/maps/Fort-Lonestar/map.bin b/mods/ra/maps/Fort-Lonestar/map.bin deleted file mode 100644 index f3a2b6011f71315df4b64140ca5c7835ef5e3ac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46085 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 Zfh3Rwl0Xtj0!bhVB!MK51pe;?{tI~FfLH(k diff --git a/mods/ra/maps/Fort-Lonestar/map.yaml b/mods/ra/maps/Fort-Lonestar/map.yaml deleted file mode 100644 index 183929ed0b..0000000000 --- a/mods/ra/maps/Fort-Lonestar/map.yaml +++ /dev/null @@ -1,1249 +0,0 @@ -Selectable: True - -MapFormat: 6 - -RequiresMod: ra - -Title: Fort Lonestar - -Description: Survive 11 Waves with 4 mates. - -Author: Nuke'm Bro. - -Tileset: TEMPERAT - -MapSize: 96,96 - -Bounds: 8,8,48,48 - -UseAsShellmap: False - -Type: Minigame - -Options: - Fog: True - Shroud: True - AllyBuildRadius: False - FragileAlliances: False - StartingCash: 50 - ConfigurableStartingUnits: False - -Players: - PlayerReference@Neutral: - Name: Neutral - OwnsWorld: True - NonCombatant: True - Race: allies - PlayerReference@Multi0: - Name: Multi0 - Playable: True - AllowBots: False - LockTeam: True - Allies: Multi1,Multi2,Multi3 - Enemies: Soviets - PlayerReference@Multi1: - Name: Multi1 - Playable: True - AllowBots: False - LockTeam: True - Allies: Multi0,Multi2,Multi3 - Enemies: Soviets - PlayerReference@Multi2: - Name: Multi2 - Playable: True - AllowBots: False - LockTeam: True - Allies: Multi0,Multi1,Multi3 - Enemies: Soviets - PlayerReference@Multi3: - Name: Multi3 - Playable: True - AllowBots: False - LockTeam: True - Allies: Multi0,Multi1,Multi2 - Enemies: Soviets - PlayerReference@Soviets: - Name: Soviets - Race: soviet - ColorRamp: 0,255,128 - Enemies: Multi0,Multi1,Multi2,Multi3 - -Actors: - Actor76: t11 - Location: 47,27 - Owner: Neutral - Actor47: t12 - Location: 55,24 - Owner: Neutral - Actor25: tc03 - Location: 54,49 - Owner: Neutral - Actor14: tc04 - Location: 24,7 - Owner: Neutral - Actor10: tc04 - Location: 38,53 - Owner: Neutral - Actor0: t14 - Location: 32,16 - Owner: Neutral - Actor75: tc04 - Location: 45,25 - Owner: Neutral - Actor72: tc01 - Location: 49,16 - Owner: Neutral - Actor58: t10 - Location: 22,54 - Owner: Neutral - Actor26: tc01 - Location: 54,41 - Owner: Neutral - Actor37: tc01 - Location: 54,21 - Owner: Neutral - Actor60: tc05 - Location: 7,16 - Owner: Neutral - Actor69: t17 - Location: 23,8 - Owner: Neutral - Actor4: tc04 - Location: 29,45 - Owner: Neutral - Actor6: t17 - Location: 33,43 - Owner: Neutral - Actor16: tc04 - Location: 53,16 - Owner: Neutral - Actor21: tc03 - Location: 8,14 - Owner: Neutral - Actor8: t14 - Location: 49,37 - Owner: Neutral - Actor29: tc01 - Location: 8,42 - Owner: Neutral - Actor49: t15 - Location: 54,47 - Owner: Neutral - Actor62: tc05 - Location: 6,43 - Owner: Neutral - Actor73: tc05 - Location: 16,34 - Owner: Neutral - Actor30: barr - Location: 36,26 - Owner: Multi0 - Actor84: brik - Location: 35,25 - Owner: Neutral - Actor32: tc01 - Location: 8,24 - Owner: Neutral - Actor59: tc05 - Location: 7,39 - Owner: Neutral - Actor5: tc01 - Location: 44,44 - Owner: Neutral - Actor67: brik - Location: 29,25 - Owner: Neutral - Actor41: brik - Location: 25,25 - Owner: Neutral - Actor56: brik - Location: 26,25 - Owner: Neutral - Actor85: brik - Location: 39,26 - Owner: Neutral - Actor81: brik - Location: 38,25 - Owner: Neutral - Actor65: brik - Location: 27,25 - Owner: Neutral - Actor66: brik - Location: 28,25 - Owner: Neutral - Actor51: t08 - Location: 55,46 - Owner: Neutral - Actor57: t12 - Location: 19,54 - Owner: Neutral - Actor54: t11 - Location: 26,54 - Owner: Neutral - Actor33: tc01 - Location: 21,7 - Owner: Neutral - Actor27: tc01 - Location: 42,54 - Owner: Neutral - Actor23: tc03 - Location: 16,54 - Owner: Neutral - Actor15: tc04 - Location: 38,8 - Owner: Neutral - Actor19: tc03 - Location: 18,7 - Owner: Neutral - Actor17: tc03 - Location: 54,26 - Owner: Neutral - Actor83: brik - Location: 36,25 - Owner: Neutral - Actor197: brik - Location: 39,37 - Owner: Neutral - Actor11: tc04 - Location: 20,53 - Owner: Neutral - Actor9: tc04 - Location: 53,37 - Owner: Neutral - Actor7: tc02 - Location: 44,36 - Owner: Neutral - Actor3: t15 - Location: 19,25 - Owner: Neutral - Actor1: t05 - Location: 29,16 - Owner: Neutral - Actor82: brik - Location: 37,25 - Owner: Neutral - Actor86: brik - Location: 39,27 - Owner: Neutral - Actor80: brik - Location: 39,25 - Owner: Neutral - Actor71: tc02 - Location: 15,40 - Owner: Neutral - Actor64: t06 - Location: 18,16 - Owner: Neutral - Actor63: t14 - Location: 8,22 - Owner: Neutral - Actor53: t08 - Location: 41,55 - Owner: Neutral - Actor61: tc05 - Location: 54,39 - Owner: Neutral - Actor48: t01 - Location: 54,23 - Owner: Neutral - Actor50: t17 - Location: 54,44 - Owner: Neutral - Actor36: tc01 - Location: 42,8 - Owner: Neutral - Actor52: t12 - Location: 44,53 - Owner: Neutral - Actor87: brik - Location: 39,28 - Owner: Neutral - Actor91: brik - Location: 37,39 - Owner: Neutral - Actor196: brik - Location: 39,38 - Owner: Neutral - Actor195: brik - Location: 39,39 - Owner: Neutral - Actor45: brik - Location: 25,28 - Owner: Neutral - Actor92: brik - Location: 39,29 - Owner: Neutral - Actor194: brik - Location: 38,39 - Owner: Neutral - Actor55: brik - Location: 25,39 - Owner: Neutral - Actor200: brik - Location: 28,39 - Owner: Neutral - Actor233: brik - Location: 29,39 - Owner: Neutral - Actor240: brik - Location: 39,35 - Owner: Neutral - Actor199: brik - Location: 27,39 - Owner: Neutral - Actor78: mpspawn - Location: 36,28 - Owner: Neutral - Actor28: tc01 - Location: 24,54 - Owner: Neutral - Actor22: tc03 - Location: 7,46 - Owner: Neutral - Actor24: tc03 - Location: 45,54 - Owner: Neutral - Actor18: tc03 - Location: 45,8 - Owner: Neutral - Actor12: tc04 - Location: 7,37 - Owner: Neutral - Actor13: tc04 - Location: 8,19 - Owner: Neutral - Actor2: tc04 - Location: 14,23 - Owner: Neutral - Actor74: t06 - Location: 19,36 - Owner: Neutral - Actor46: t11 - Location: 54,19 - Owner: Neutral - Actor42: t16 - Location: 53,19 - Owner: Neutral - Actor68: tc05 - Location: 35,7 - Owner: Neutral - Actor239: brik - Location: 39,36 - Owner: Neutral - Actor89: brik - Location: 35,39 - Owner: Neutral - Actor90: brik - Location: 36,39 - Owner: Neutral - Actor40: oilb - Location: 32,30 - Owner: Multi0 - Actor237: brik - Location: 25,35 - Owner: Neutral - Actor236: brik - Location: 25,36 - Owner: Neutral - Actor235: brik - Location: 25,37 - Owner: Neutral - Actor234: brik - Location: 25,38 - Owner: Neutral - Actor44: brik - Location: 25,27 - Owner: Neutral - Actor43: brik - Location: 25,26 - Owner: Neutral - Actor198: brik - Location: 26,39 - Owner: Neutral - Actor88: brik - Location: 25,29 - Owner: Neutral - Entry1: waypoint - Location: 8,8 - Owner: Neutral - Entry2: waypoint - Location: 31,8 - Owner: Neutral - Entry3: waypoint - Location: 55,8 - Owner: Neutral - Entry4: waypoint - Location: 55,32 - Owner: Neutral - Entry5: waypoint - Location: 55,55 - Owner: Neutral - Entry6: waypoint - Location: 32,55 - Owner: Neutral - Entry7: waypoint - Location: 8,55 - Owner: Neutral - Entry8: waypoint - Location: 8,32 - Owner: Neutral - Paradrop1: waypoint - Location: 32,28 - Owner: Neutral - Paradrop2: waypoint - Location: 27,32 - Owner: Neutral - Paradrop3: waypoint - Location: 32,36 - Owner: Neutral - Paradrop4: waypoint - Location: 36,32 - Owner: Neutral - Patrol3: waypoint - Location: 32,46 - Owner: Neutral - Patrol4: waypoint - Location: 46,32 - Owner: Neutral - Actor20: apwr - Location: 37,4 - Owner: Soviets - Patrol2: waypoint - Location: 17,32 - Owner: Neutral - Patrol1: waypoint - Location: 32,18 - Owner: Neutral - Actor34: sniper - Location: 9,26 - Owner: Soviets - Actor35: sniper - Location: 10,21 - Owner: Soviets - Actor38: sniper - Location: 26,9 - Owner: Soviets - Actor39: sniper - Location: 40,10 - Owner: Soviets - Actor77: sniper - Location: 53,21 - Owner: Soviets - Actor79: sniper - Location: 54,25 - Owner: Soviets - Actor93: sniper - Location: 53,40 - Owner: Soviets - Actor94: sniper - Location: 54,43 - Owner: Soviets - Actor95: sniper - Location: 54,46 - Owner: Soviets - Actor96: sniper - Location: 43,53 - Owner: Soviets - Actor97: sniper - Location: 8,36 - Owner: Soviets - Actor98: sniper - Location: 28,55 - Owner: Soviets - Actor100: barr - Location: 27,26 - Owner: Multi3 - Actor99: barr - Location: 27,36 - Owner: Multi2 - Actor31: barr - Location: 36,36 - Owner: Multi1 - Actor101: oilb - Location: 32,32 - Owner: Multi1 - Actor102: oilb - Location: 30,32 - Owner: Multi2 - Actor103: oilb - Location: 30,30 - Owner: Multi3 - Actor104: mpspawn - Location: 27,28 - Owner: Neutral - Actor105: mpspawn - Location: 27,38 - Owner: Neutral - Actor106: mpspawn - Location: 36,38 - Owner: Neutral - -Smudges: - -Rules: - World: - CrateSpawner: - Maximum: 1 - SpawnInterval: 100 - -SpawnMPUnits: - -MPStartLocations: - FortLonestarScript: - CRATE: - -LevelUpCrateAction: - -GiveMcvCrateAction: - -RevealMapCrateAction: - -HideMapCrateAction: - -ExplodeCrateAction@nuke: - -ExplodeCrateAction@boom: - -ExplodeCrateAction@fire: - -GiveUnitCrateAction@jeep: - -GiveUnitCrateAction@arty: - -GiveUnitCrateAction@v2rl: - -GiveUnitCrateAction@1tnk: - -GiveUnitCrateAction@2tnk: - -GiveUnitCrateAction@3tnk: - -GiveUnitCrateAction@4tnk: - SupportPowerCrateAction@parabombs: - SelectionShares: 30 - HealUnitsCrateAction: - SelectionShares: 30 - GiveCashCrateAction: - Amount: 400 - UseCashTick: yes - SelectionShares: 30 - GiveUnitCrateAction@e7: - Unit: e7 - SelectionShares: 10 - Player: - ClassicProductionQueue@Infantry: - Type: Infantry - BuildSpeed: 1 - LowPowerSlowdown: 3 - ClassicProductionQueue@Defense: - Type: Defense - BuildSpeed: .4 - LowPowerSlowdown: 3 - OILB: - Health: - HP: 3000 - Armor: - Type: Wood - Bib: - RevealsShroud: - Range: 3c0 - ExternalCapturable: - ExternalCapturableBar: - EngineerRepairable: - CashTrickler: - Period: 250 - Amount: 50 - BARR: - Buildable: - Owner: allies,soviet - Building: - Power: 0 - Health: - HP: 1000 - Production: - Produces: Defense,Infantry - -Sellable: - BaseProvider: - Range: 16 - FTUR: - Building: - Power: 0 - Owner: soviet - Valued: - Cost: 400 - PBOX: - Building: - Power: 0 - Owner: allies - Prerequisites: barr,oilb - Valued: - Cost: 400 - Health: - HP: 200 - Armor: - Type: Heavy - TransformOnPassenger@MEDI: - PassengerTypes: MEDI - OnEnter: pbox.MEDI - OnExit: pbox - SkipMakeAnims: true - PBOX.E1: - Buildable: - Queue: Defense - Prerequisites: barr - Owner: allies - PBOX.MEDI: - Inherits: PBOX - Tooltip: - Name: Pillbox (Medic) - RenderBuilding: - Image: PBOX - RenderRangeCircle: - AutoTarget: - AttackTurreted: - PrimaryWeapon: Heal - PrimaryLocalOffset: 0,-11,0,0,0 - HBOX.E1: - Inherits: HBOX - Buildable: - Queue: Defense - BuildPaletteOrder: 20 - Prerequisites: barr - Owner: None - HBOX: - Building: - Owner: None - GUN: - Buildable: - Queue: Defense - Prerequisites: barr - Owner: None - SAM: - Buildable: - Owner: None - SBAG: - Buildable: - Owner: None - MSLO: - Buildable: - Owner: None - GAP: - Buildable: - Owner: None - IRON: - Buildable: - Owner: None - PDOX: - Buildable: - Owner: None - SPEN: - Buildable: - Owner: allies - DOME: - Buildable: - Owner: allies - PROC: - Buildable: - Owner: allies - SILO: - Buildable: - Owner: allies - AGUN: - Buildable: - Owner: None - TSLA: - Buildable: - Owner: None - APWR: - Buildable: - Owner: allies - STEK: - Buildable: - Owner: allies - FIX: - Buildable: - Owner: allies - POWR: - Buildable: - Owner: allies - MIG: - Buildable: - Owner: allies - Prerequisites: barr,afld - Valued: - Cost: 2000 - YAK: - Buildable: - Owner: allies - Prerequisites: barr,afld - Valued: - Cost: 150 - TRAN: - Buildable: - Owner: allies - Prerequisites: barr,hpad - Valued: - Cost: 150 - HIND: - Buildable: - Owner: allies - Prerequisites: barr,hpad - Valued: - Cost: 200 - HELI: - Buildable: - Owner: allies - Prerequisites: barr,hpad - Valued: - Cost: 200 - HPAD: - Building: - Power: 0 - Buildable: - Owner: allies - Prerequisites: barr - Valued: - Cost: 200 - FENC: - Buildable: - Queue: Building - Owner: None - Prerequisites: barr - Valued: - Cost: 10 - AFLD: - Building: - Power: 0 - Buildable: - Owner: allies - Prerequisites: barr - Valued: - Cost: 200 - DOG: - Buildable: - Owner: soviet,allies - Prerequisites: barr,oilb - Valued: - Cost: 20 - E1: - Buildable: - Owner: soviet,allies - Prerequisites: barr,oilb - Valued: - Cost: 20 - E2: - Buildable: - Owner: soviet,allies - Prerequisites: barr,oilb - Valued: - Cost: 40 - Explodes: - Weapon: UnitExplodeSmall - Chance: 20 - E3: - Buildable: - Owner: soviet,allies - Prerequisites: barr,oilb - Valued: - Cost: 60 - E4: - Buildable: - Owner: soviet,allies - Prerequisites: barr,oilb - Valued: - Cost: 100 - E6: - Buildable: - Owner: soviet,allies - Prerequisites: barr - Valued: - Cost: 100 - E7: - Buildable: - Owner: soviet,allies - Prerequisites: barr,oilb - Valued: - Cost: 750 - 3TNK: - Inherits: ^Tank - Buildable: - Queue: Vehicle - BuildPaletteOrder: 40 - Prerequisites: fix - Owner: soviet - Hotkey: h - Valued: - Cost: 1150 - Health: - HP: 700 - Armor: - Type: Heavy - Mobile: - Speed: 71 - Crushes: wall, atmine, crate, infantry - RevealsShroud: - Range: 7c0 - Turreted: - ROT: 5 - Armament: - Weapon: VolkNapalm - Recoil: 200 - RecoilRecovery: 38 - LocalOffset: 0,85,0, 0,-85,0 - AttackTurreted: - RenderUnit: - WithTurret: - AutoTarget: - Explodes: - Weapon: UnitExplodeSmall - EmptyWeapon: UnitExplodeSmall - Chance: 100 - LeavesHusk: - HuskActor: 3TNK.Husk - Selectable: - Bounds: 30,30 - MECH: - Buildable: - Owner: None - MEDI: - Buildable: - Owner: soviet,allies - Prerequisites: barr,oilb - Valued: - Cost: 100 - SHOK: - Buildable: - Owner: soviet,allies - Prerequisites: barr,oilb - Valued: - Cost: 150 - SNIPER: - Inherits: ^Infantry - Valued: - Cost: 200 - Buildable: - Queue: Infantry - BuildPaletteOrder: 80 - Owner: soviet, allies - Prerequisites: barr,oilb - Hotkey: n - Selectable: - Bounds: 12,17,0,-6 - Mobile: - Speed: 56 - Health: - HP: 200 - Passenger: - PipType: Red - RevealsShroud: - Range: 6c0 - AutoTarget: - InitialStance: Defend - Armament: - Weapon: Sniper - SPY: - Inherits: ^Infantry - Buildable: - Queue: Infantry - BuildPaletteOrder: 60 - Prerequisites: barr,oilb - Owner: allies, soviet - Valued: - Cost: 300 - Selectable: - Voice: SpyVoice - Bounds: 12,17,0,-9 - Health: - HP: 25 - Mobile: - Speed: 56 - RevealsShroud: - Range: 5c0 - Passenger: - PipType: Yellow - TakeCover: - Spy: - -AutoTarget: - -RenderInfantry: - RenderSpy: - IdleAnimations: idle1,idle2 - AttackFrontal: - PrimaryWeapon: SilencedPPK - FTRK: - Inherits: ^Vehicle - Valued: - Cost: 600 - Health: - HP: 150 - Armor: - Type: Light - Mobile: - ROT: 10 - Speed: 128 - RevealsShroud: - Range: 4c0 - Turreted: - ROT: 5 - Offset: -298,0,298 - Armament: - Weapon: FLAK-23 - Recoil: 85 - AttackTurreted: - RenderUnit: - WithTurret: - AutoTarget: - Explodes: - Weapon: UnitExplodeSmall - EmptyWeapon: UnitExplodeSmall - Selectable: - Bounds: 28,28,0,0 - APC: - Inherits: ^Tank - Health: - HP: 400 - Armor: - Type: Heavy - Mobile: - Speed: 142 - RevealsShroud: - Range: 5c0 - Armament: - Weapon: M60mg - LocalOffset: 0,0,171 - AttackFrontal: - RenderUnit: - WithMuzzleFlash: - AutoTarget: - Cargo: - Types: Infantry - MaxWeight: 5 - PipCount: 5 - ARTY: - Inherits: ^Tank - Buildable: - Queue: Vehicle - BuildPaletteOrder: 80 - Prerequisites: dome - Owner: allies - Valued: - Cost: 600 - Tooltip: - Name: Artillery - Description: Long-range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft - Health: - HP: 75 - Armor: - Type: Light - Mobile: - ROT: 2 - Speed: 85 - RevealsShroud: - Range: 7c0 - AttackFrontal: - PrimaryWeapon: 155mm - SecondaryWeapon: 155mm - RenderUnit: - Explodes: - Weapon: UnitExplode - Chance: 50 - AutoTarget: - V2RL: - Inherits: ^Vehicle - Health: - HP: 100 - Armor: - Type: Light - Mobile: - Speed: 99 - RevealsShroud: - Range: 5c0 - Armament: - Weapon: SCUD - AttackFrontal: - RenderUnitReload: - AutoTarget: - Explodes: - Weapon: SCUD - EmptyWeapon: - 4TNK: - Inherits: ^Tank - Buildable: - Health: - HP: 2500 - Armor: - Type: Heavy - Mobile: - Speed: 56 - RevealsShroud: - Range: 14c0 - Turreted: - ROT: 1 - AttackTurreted: - PrimaryWeapon: 120mm - SecondaryWeapon: MammothTusk - PrimaryLocalOffset: -4,-5,0,0,0, 4,-5,0,0,0 - SecondaryLocalOffset: -7,2,0,0,25, 7,2,0,0,-25 - PrimaryRecoil: 8 - PrimaryRecoilRecovery: 0.7 - SecondaryRecoil: 2 - RenderUnit: - WithTurret: - AutoTarget: - Explodes: - Weapon: napalm - EmptyWeapon: napalm - LeavesHusk: - HuskActor: 4TNK.Husk - SelfHealing: - Step: 2 - Ticks: 1 - HealIfBelow: 40% - DamageCooldown: 150 - Selectable: - Bounds: 44,38,0,-4 - BRIK: - Inherits: ^Wall - Buildable: - Queue: Defense - BuildPaletteOrder: 1000 - Prerequisites: fact - Owner: None - Hotkey: w - Valued: - Cost: 100 - Health: - HP: 250 - Armor: - Type: Concrete - BADR.Bomber: - AttackBomber: - Armament: - Weapon: ParaBomb - Inherits: ^Plane - Health: - HP: 60 - Armor: - Type: Light - Plane: - ROT: 5 - Speed: 280 - LimitedAmmo: - Ammo: 30 - RenderUnit: - Image: mig - WithShadow: - IronCurtainable: - -Selectable: - -GainsExperience: - Tooltip: - Name: Mig Bomber - LeavesHusk: - HuskActor: BADR.Husk - -EjectOnDeath: - -GpsDot: - Contrail@1: - Offset: -598,-683,0 - Contrail@2: - Offset: -598,683,0 - SmokeTrailWhenDamaged: - Offset: -853,0,171 - Interval: 2 - BADR.Husk: - Inherits: ^PlaneHusk - Tooltip: - Name: Badger - RenderUnit: - Image: mig - WithShadow: - Plane: - ROT: 5 - Speed: 149 - SmokeTrailWhenDamaged: - Offset: -853,0,171 - Interval: 2 - MinDamage: Undamaged - -Sequences: - -VoxelSequences: - -Weapons: - 120mm: - ROF: 150 - Range: 10c0 - Report: CANNON1.AUD - Burst: 6 - Projectile: Bullet - Speed: 204 - High: true - Inaccuracy: 1c682 - Image: 120MM - ContrailLength: 50 - Warhead: - Spread: 256 - Versus: - None: 75% - Wood: 75% - Light: 75% - Concrete: 100% - Explosion: self_destruct - WaterExplosion: self_destruct - InfDeath: 4 - SmudgeType: Crater - Damage: 150 - MammothTusk: - ROF: 300 - Range: 10c0 - Report: MISSILE6.AUD - Burst: 2 - ValidTargets: Ground, Air - Projectile: Missile - Speed: 128 - Arm: 2 - High: true - Shadow: false - Trail: smokey - ContrailLength: 150 - Inaccuracy: 853 - Image: DRAGON - ROT: 10 - RangeLimit: 80 - Warhead: - Spread: 640 - Versus: - None: 125% - Wood: 110% - Light: 110% - Heavy: 100% - Concrete: 200% - Explosion: nuke - WaterExplosion: nuke - InfDeath: 3 - SmudgeType: Crater - Damage: 250 - VolkNapalm: - ROF: 40 - Range: 8c0 - Report: firebl3.aud - ValidTargets: Ground - Burst: 6 - BurstDelay: 1 - Projectile: Bullet - Speed: 426 - Image: 120MM - Inaccuracy: 2c512 - Trail: smokey - ContrailLength: 2 - Warhead: - Spread: 341 - Versus: - None: 90% - Wood: 170% - Light: 100% - Heavy: 100% - Concrete: 100% - Explosion: small_explosion - WaterExplosion: small_explosion - InfDeath: 4 - SmudgeType: Scorch - ImpactSound: firebl3 - Damage: 15 - ParaBomb: - ROF: 5 - Range: 5c0 - Report: CHUTE1.AUD - Projectile: GravityBomb - Image: BOMBLET - Warhead: - Spread: 426 - Versus: - None: 125% - Wood: 100% - Light: 60% - Concrete: 25% - Explosion: napalm - ImpactSound: firebl3.aud - WaterExplosion: napalm - InfDeath: 5 - SmudgeType: Crater - Damage: 200 - 155mm: - ROF: 10 - Range: 7c512 - Burst: 20 - MinRange: 3c0 - -Report: - Projectile: Bullet - Speed: 170 - Trail: fb4 - Image: fb3 - High: true - Angle: 62 - Inaccuracy: 1c682 - ContrailLength: 2 - Warhead: - Spread: 426 - Versus: - None: 80% - Wood: 100% - Light: 60% - Heavy: 75% - Concrete: 35% - Explosion: small_napalm - WaterExplosion: small_napalm - InfDeath: 5 - SmudgeType: Scorch - ImpactSound: firebl3.aud - Damage: 10 - FLAK-23: - ROF: 10 - Range: 8c0 - Report: AACANON3.AUD - ValidTargets: Air,Ground - Projectile: Bullet - Speed: 1c682 - High: true - Warhead: - Spread: 213 - Versus: - None: 35% - Wood: 30% - Light: 30% - Heavy: 40% - Concrete: 30% - Explosion: med_explosion - Damage: 25 - SCUD: - ROF: 280 - Range: 7c0 - MinRange: 3c0 - Report: MISSILE1.AUD - Projectile: Bullet - Speed: 170 - Arm: 10 - High: true - Shadow: false - Trail: smokey - Inaccuracy: 426 - Image: V2 - Angle: 62 - Warhead: - Spread: 853 - Versus: - None: 100% - Wood: 90% - Light: 80% - Heavy: 70% - Explosion: nuke - WaterExplosion: large_splash - InfDeath: 3 - SmudgeType: Crater - Damage: 500 - ImpactSound: kaboom1.aud - WaterImpactSound: kaboom1.aud - SilencedPPK: - ROF: 80 - Range: 2c512 - Report: silppk.aud - Projectile: Bullet - Speed: 1c682 - Warhead: - Spread: 128 - Versus: - Wood: 0% - Light: 0% - Heavy: 50% - Concrete: 0% - Explosion: piffs - InfDeath: 2 - Damage: 150 - -Voices: - -Notifications: - -Translations: diff --git a/mods/ra/maps/Survival01/map.bin b/mods/ra/maps/Survival01/map.bin deleted file mode 100644 index 942e6c2de72bd85c01ff8e69f4b095550e780057..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30725 zcmeI4OOGALk%dn^?yLJg^rX6JdeH<3NINeCk;~Z_S{s7)GxlNzBf)<|PeYJo$&vs8 zdP83LK}nR%h13M~CkFGf4a`p%*v4ppJ72`9tS*xG_RhYGxkNINl@%Fr;zU$dR#x4v z{$78lwf1Gtz@C9%ppMeis!EBTqbTDe&DUD4b+FcIt=U=?@?S=2*Q(cQ)*7!vhQrBP zqqU|tq#JR#$V-fYl<8cWYc$tEtvanxhtdD8^ry-ITpI&tUEJ9X*>=sM>VG;V)t{q* zFERW`lOrvT^dJBdDmd}t;7e6s22}hyOw1spjZ8RrBMN76$LWDD99DCU=Q>Q-m;h&2 z|EY2tqr-k50^W zizBU$^zf0sSCWUE!G*&wyKDhrpH~nL)X5Fu0ySc|j8TRlhO@J|7IQr?*CTUXDwwfo zTQqAoXfIMSsg&vD9vORK=Bbr2CKb z$dSHZn1oWG9{#S&8QSzj+Gh%Zw)w59-^N+`<6_B%J&nVqv{bXyIPn{;arS6w0Hb&0 z4AOS~dl|-d!wDQ$)`{jPdf-GyITipAOTtgTQvFpRgkdfL3N9F=1(3uAobnJ(`RcBh zs+MY(nk>7ysLz%v6TpXnHxk$8A8ngMkj~gDEsIeA+q#jP{GL@GIypDEP=W>QUJq@+PfxTw z(L*P?n0%T><`&QJr~*GBh#4tsCK);rqaWDdrw6;Z19&7k%V9H-CQ*|`80zg}-B1m~ zZQmf`R1V*W9}PGgGFb=#nbVwTcB0jZ9zKcr2fM~_P-b{=LO2M4M`+OO_T=}{@57t} z;iw@=4@2hb^ z!3hAS_kM<_$H2HKDD{6zuSaP3seX3ulW$@Q+RcEfz@+FqlkofE7YN!_x^i7)EUNk@S)3*Hyi)_Cr-4b|G`%uwMOI z`gM3Tno3hO)5ssVGE^EpRD-b>t|Kwd<=AVIqV!_Oa|z%wHEy=Q4i}JLPE}3SP9uM?YtmfzF4!H;_6@XcNPara zKu%x2-+_O0S+mRC9O9V-_st}W2d{se80Z8)G18k+u+ps8&5NpDRP(Q4kr?4ZTf9bi zK2<%9D3CvaFz=OyffqEW!=2JkJH)o(Uum+^Vx2|+z@RG8= z5IkUFLs@CM(sHGTaxD0p%gI3R6Mn9L=)@grGmM*yx1_g14Di+SYMzf% zK8xfyy#~N)p=zPgLbH-QV0NBR2h}8l*OP=Gmz33oZi?H8f40(UrH5Dg-Zkl(nrk5p zjNmO@rlw64xT42p{R3bp71;2R_UJ8DZ>f1#dRNUS(kGz=G3tnZdTq(+LgR%F7FsU! zKw`!P@}wi5c3DqG{{_Lnk!-+^@|Ese>B35vuBo~fP!YqfCl+#pHptOHgS1(c^$*Fz zrHx;l3bBu+k5#{`>Rq*;1ZGAtgtOskS#=;8%q(=ch*&(B_@Uj&V=o#fKlKj+JT5pz zH{z%BV5LV^`u??yzInFMGVRZXQ&p#GPosU-c}u#b=9b2Pkp2*CLpzM2B%o%yy(!)7+SnT3Ig0`w7aWD~h1>36 z8VAog_yLS91V{$#;tPk^C9xSu#_D?K8t#uyRi8#Z%}#_Fvbd${mfBkZ*y)EVYr_|M zD65;QZiW?PA|iuX)H!4D)OJLJX&fZz*+@Q}z5soB0vpUg;?TaBK!mTs>cz9eig@MONr;c!E+OO$U`&`$8Gox8v)9pFWCNij1WYg zU=cC2fo+jbxCqmUUv99j?$@QpTtBDkxp0sI1|+NXdX{r9O2&6S1wcN9EQ;qorp@x) z6y{O`jcxd$5sR20%7DSp!Qgrfr<@_#Se7ST#|!V!9GB`~T?$}^3|A4M0rJVlau?wF zrGEWNaml$HvII19~d}dH^H_n*CXyA0Qtz!Pbi&81{uinEbBV&%Q@DN zHXp1ah#-0Z@4EnCcm(L50)lpvf6sFh+Axi_bHF=8kiiPVNYa2Y-)FH4RKvzDZR80G zJ^0Hg8qr_oB@d?)*A_2GFNEWC;`>3#f7;xC`&C?*`FL^9a}xv6gMMt$-dKE{QnyiX zVNDqoKArYp#v`Z(KT6QXAs}f3CZY!Zk{cY_snH9nUWg%HV3wVSf z9CLtVI6*-M0BEMBhZ=1*L`~`EMpR)J8N2{Lg&zDx0}l@71XO5q{7p9XLh8}#UjW&kxAm#^2 zM}$+W3&7!)#=Kx_b?Ysj-@YJ!1KKzxcU!@oSapxw=~V&O%^1yBU9-%Sbyo zCI3GUTlzwyZ&ZI1HFgg;OmoY7H%WdPQGl5UL0KVVl%Cbgs$PzM+Vf|mXJU=yw;Rqz zfHgB|7WHs1CEll8QgbPg<6{gjiB0?7LNWjnLTCWSk-|jiAGl8(!GE?%GI&U5Ao48F zyh8S6QkUe%oyjw*o(cZ@HHI&-dZucocGm61#rlU3TvByO?WN4*LCVlIlwuT?$sA1xmy8Cg$x9r&1u6nx0kc2#1Wd3zi(ct?F$x&#HPhv$`o~0T*c_9NBkU+>r^65l?8k~04 zDTGtLb{Oj%=Ir<#)$gc%HbM|#Dhzudk!s5d0fo~t`5*kGo1@y>s&0#V(ywp(yRdhk zaurk$p1jN<2%%^*{vWA%N_tB5)6&xc7337iWC-pDtLZ-At9R7A6Uf@HkMm(QNOkcal*t&qIIg&(PXO4Uuj= z+Q(`=R@aZ!?fcUE;SS*OBCbJikGvmL}P0ET`m9Fulq}gDGzIV6W~2k5VVDgE;9mjdVk&+^}-vfd7cuWEEv)7(G?rgnpv zVu&_QZ2+JAgW2Reh3?t`0KadYrW&+ZF=-}>8Y|Se05I1l8B7zYfQ7fxX{;2i1C5a>SCa%p1sW0H6GmIZm74|DGKHI0PGn zpaC!_L8mFj1;9Jp4)o#evO*}&3kW+pqq3Yv6+`+joj9C(K{&XhF=SElmNxR#+wlAQ zr9SiH&8g@497x^nK$g3D7{c;*GboTp=sAV-3 z3&L_ogB+mtOFnob;+WowpR{>WdQ#1!wH~eOM{8c-`USMP3T^2N{G-a8)5dh0YfA^3 zFaa0=3Ip-lq=APa;E$J*G@RIjJ01LcLFnBT%pni#@Ve+h=VtsrlzyoC$#9{4w5}el z@nTe7K!X9~_)c;Dpc!mvLpi`!tSw8Rku+4><&XwO@#}Dq{K$vDgJ%Jpf(>f@SIA>) zv0k$if)&hhh(*da{M8TDJQ*&)o;h6jzWIvuiW+W|Nh~$+tO{U3X=cK*OieBb|DG%l+3;3+tta4Jh`|%mzGAHiM7;^*9zG>|X`Lh+$&l`{paEUQzpV>E{6z z1SOsOzm&k?=rn;;{~60z!=W18ee*Z zM_EusW19;xHpv7D4Tc}&vghy>)vsvu^T2>>6waaqkoE%oVl8*)^2}mb#5GhQWBk?6 zVmJjPU`E5N+`q+G1`V#E8vP6bHeR3yTX@I)*Y_{>$41=3KGWzl z3TNYv#$oR5Kqf95(#9GAlYA302$iqXCxz29q;iIKbnY@^^iZ)*P;hjB2 zhPJPWNR_g9rqigl@}C3I58zpOWPlbYAs86QTG8Kp(&;>OVq+R#FwIyDA&D&n!0dn` z;Injcc2)9(HEKK~oT@pE5U|}H&VH-r+dRanvc>=y0~sD-TMArZk(xWZSCXLO&;@L( zva16aAOXJPGc_ZOaw`EphlGIIj?h4unz0AYll~duRPAYbzwoW9Z^H$6KyqBxR9FYU zgT4(vzN4SIf7CU5)S!y?V6E$!0c;c;K|kOzN&^y%pCQQWgvQJ7=vRvYeQ@^elIe;k7TcNmc|^WDU1StzwZqOfKg*5C{6tI;02+< zD2~w2aC+#cjRxA(2Gb2GIq88sV*4S8;ns#2+R(FV)waRFHvF;3d{uf?^=r~=v1W^9 zbGaU&0-e+HZUwbafi^m+u?|8ka`$l?*N6*Z)b!*j@hybE<-kVk}DSb3&Q0a(i@Ta zxWg#GW5p44AQ+1nnj^mDTN;GX(Erj0c>)Ul`U#Dm5NXp~2`~B|yLpFs8~7eMdH{g( z>8H}Cs>@;$(?$gt?`_gB;Q1S>-r#I}?_sAng)n%Sh;W&p03PA!EZ@>#g#sHHzF?I@ z?obD9O!W`3d++x_Yz8L(Y!61`T>fnZ4kH^sRrP6nzzn2FgXETQbGCou0Jb>w3+WeO zy?@LE43Yq5LxZ^pcNj&_aPt!+i~hF^=_B&sKWuehtB3Pj0%P{ZX6$NGw&TYHg(Sh; zVvzRGh+n|N5de*;!=3jBbtei6*{3o}?X=2c9jaYy59WXoXllS6*U;NLQ!)-f8j znzy>Y&0iPhn;`FsyFQu{#pfCRS#96SVXv z=9o*JIe1#X)V;_9Jb)Kvp9*0PE0#B{7H#(}x@iYFu)VP#d*j>rM<*t1dR4A6PfABc4aJlfFUR3U*W%Ym&(l5!hm#n?XuAdlD7<1z(-A8warV&SG1XEUkj z@4uxXrl9pcLvWHL&~vcm*TJ15+=92`XE;1y1q=Z0KU(AZqL2?j+A0B=~rDTGTxB7>FT zHxlT962X{z`rkh2L2y0p#8r+1A7Mc z4D1=$Gq7i1&%mC6Jp+3N{>ltg)nD1bx$61rbZlqs?q5~!(*L@_{to@G*v#4;|NL3S z@PB8)5AI>0*%bh|hk_mQ--P$O%YXiwBLwV*|G4b&o%ru20n>J1$iGzjx6eT4-G={x z;BRldvxx85-)a5_3p*nqqrap4cL?Hd!|vw#>+HuhxU>AT;T_(7ckKDz{GNe51A7Mc z4D1=$Gq7i1&%mC6Jp+3N_6+P9*fX$aV9&swfz1rWuJKOaTd`@lOZ!;g;l3$*raRoV z#`mzl!)?>B9T~X0e>;9}7!in9H#_^cTkAxBm(F+W@9qkK{d{x1v+(Z??-}?jFz|me CEkq*# diff --git a/mods/ra/maps/Survival01/map.yaml b/mods/ra/maps/Survival01/map.yaml deleted file mode 100644 index 9739b49cae..0000000000 --- a/mods/ra/maps/Survival01/map.yaml +++ /dev/null @@ -1,1329 +0,0 @@ -Selectable: True - -MapFormat: 6 - -RequiresMod: ra - -Title: Survivial01 - -Description: Survive! - -Author: Nuke'm Bro. - -Tileset: TEMPERAT - -MapSize: 96,64 - -Bounds: 4,4,88,56 - -UseAsShellmap: False - -Type: Minigame - -Options: - Crates: False - Fog: True - Shroud: True - AllyBuildRadius: False - FragileAlliances: False - StartingCash: 5000 - ConfigurableStartingUnits: False - Difficulties: Easy,Normal,Hard - -Players: - PlayerReference@Neutral: - Name: Neutral - OwnsWorld: True - NonCombatant: True - Race: allies - PlayerReference@Creeps: - Name: Creeps - NonCombatant: True - Race: allies - PlayerReference@Allies: - Name: Allies - Playable: True - AllowBots: False - Required: True - LockRace: True - Race: allies - LockColor: True - ColorRamp: 115,240,130 - LockSpawn: True - LockTeam: True - Enemies: Soviets - PlayerReference@Soviets: - Name: Soviets - Race: soviet - ColorRamp: 0,255,128 - Enemies: Allies - -Actors: - Actor113: fenc - Location: 46,54 - Owner: Allies - Actor115: fenc - Location: 46,55 - Owner: Allies - Actor88: brik - Location: 48,54 - Owner: Allies - Actor84: hpad - Location: 66,47 - Owner: Allies - Actor5: brik - Location: 72,55 - Owner: Allies - Actor4: brik - Location: 72,54 - Owner: Allies - Actor6: brik - Location: 72,53 - Owner: Allies - Actor77: brik - Location: 67,57 - Owner: Allies - Actor8: brik - Location: 72,52 - Owner: Allies - Actor9: brik - Location: 72,51 - Owner: Allies - Actor13: brik - Location: 75,50 - Owner: Allies - Actor12: brik - Location: 75,51 - Owner: Allies - Actor11: brik - Location: 74,51 - Owner: Allies - Actor10: brik - Location: 73,51 - Owner: Allies - Actor14: brik - Location: 75,49 - Owner: Allies - Actor15: brik - Location: 75,48 - Owner: Allies - Actor16: brik - Location: 76,48 - Owner: Allies - Actor17: brik - Location: 76,47 - Owner: Allies - Actor18: brik - Location: 75,47 - Owner: Allies - Actor19: brik - Location: 75,41 - Owner: Allies - Actor20: brik - Location: 75,42 - Owner: Allies - Actor21: brik - Location: 76,42 - Owner: Allies - Actor22: brik - Location: 76,41 - Owner: Allies - Actor23: brik - Location: 74,41 - Owner: Allies - Actor24: brik - Location: 73,41 - Owner: Allies - Actor25: brik - Location: 72,41 - Owner: Allies - Actor26: brik - Location: 71,41 - Owner: Allies - Actor27: brik - Location: 71,40 - Owner: Allies - Actor28: brik - Location: 70,40 - Owner: Allies - Actor29: brik - Location: 70,41 - Owner: Allies - Actor30: brik - Location: 61,40 - Owner: Allies - Actor31: brik - Location: 61,41 - Owner: Allies - Actor83: hpad - Location: 57,48 - Owner: Allies - Actor33: brik - Location: 60,40 - Owner: Allies - Actor1: brik - Location: 57,56 - Owner: Allies - Actor35: brik - Location: 59,40 - Owner: Allies - Actor36: brik - Location: 58,40 - Owner: Allies - Actor37: brik - Location: 57,40 - Owner: Allies - Actor38: brik - Location: 57,41 - Owner: Allies - Actor39: brik - Location: 56,41 - Owner: Allies - Actor40: brik - Location: 55,41 - Owner: Allies - Actor41: brik - Location: 54,41 - Owner: Allies - Actor42: brik - Location: 53,41 - Owner: Allies - Actor43: brik - Location: 53,42 - Owner: Allies - Actor44: brik - Location: 52,42 - Owner: Allies - Actor45: brik - Location: 51,42 - Owner: Allies - Actor46: brik - Location: 50,42 - Owner: Allies - Actor47: brik - Location: 49,42 - Owner: Allies - Actor48: brik - Location: 48,42 - Owner: Allies - Actor49: brik - Location: 48,43 - Owner: Allies - Actor50: brik - Location: 49,43 - Owner: Allies - Actor51: brik - Location: 48,52 - Owner: Allies - Actor52: brik - Location: 48,51 - Owner: Allies - Actor53: brik - Location: 48,50 - Owner: Allies - Actor54: brik - Location: 48,49 - Owner: Allies - Actor55: brik - Location: 48,48 - Owner: Allies - Actor71: brik - Location: 64,56 - Owner: Allies - Actor58: brik - Location: 46,47 - Owner: Allies - Actor57: brik - Location: 46,48 - Owner: Allies - Actor56: brik - Location: 47,48 - Owner: Allies - Actor59: brik - Location: 47,47 - Owner: Allies - Actor72: brik - Location: 64,57 - Owner: Allies - Actor65: brik - Location: 51,57 - Owner: Allies - Actor66: brik - Location: 50,57 - Owner: Allies - Actor61: brik - Location: 55,57 - Owner: Allies - Actor2: brik - Location: 57,57 - Owner: Allies - Actor34: brik - Location: 56,57 - Owner: Allies - Actor62: brik - Location: 54,57 - Owner: Allies - Actor74: brik - Location: 63,56 - Owner: Allies - Actor79: brik - Location: 65,57 - Owner: Allies - Actor80: apwr - Location: 68,53 - Owner: Allies - Actor81: powr - Location: 65,53 - Owner: Allies - Actor63: brik - Location: 53,57 - Owner: Allies - Actor64: brik - Location: 52,57 - Owner: Allies - Actor68: brik - Location: 72,57 - Owner: Allies - Actor73: brik - Location: 63,57 - Owner: Allies - Actor69: brik - Location: 71,57 - Owner: Allies - Actor76: brik - Location: 68,57 - Owner: Allies - Actor78: brik - Location: 66,57 - Owner: Allies - Actor75: brik - Location: 69,57 - Owner: Allies - Actor70: brik - Location: 70,57 - Owner: Allies - Actor7: brik - Location: 72,56 - Owner: Allies - Actor60: brik - Location: 56,56 - Owner: Allies - Actor 408: weap - Location: 53,46 - Owner: Allies - Actor32: tent - Location: 62,47 - Owner: Allies - Actor0: brik - Location: 48,53 - Owner: Allies - Actor111: proc - Location: 43,55 - Owner: Allies - Actor112: fenc - Location: 45,54 - Owner: Allies - Actor116: fenc - Location: 46,56 - Owner: Allies - Actor89: fenc - Location: 65,46 - Owner: Allies - Actor90: fenc - Location: 66,46 - Owner: Allies - Actor91: fenc - Location: 67,46 - Owner: Allies - Actor92: fenc - Location: 68,46 - Owner: Allies - Actor93: fenc - Location: 68,47 - Owner: Allies - Actor94: fenc - Location: 68,48 - Owner: Allies - Actor95: fenc - Location: 68,49 - Owner: Allies - Actor96: fenc - Location: 57,47 - Owner: Allies - Actor97: fenc - Location: 58,47 - Owner: Allies - Actor98: fenc - Location: 59,47 - Owner: Allies - Actor99: fenc - Location: 59,48 - Owner: Allies - Actor100: fenc - Location: 59,49 - Owner: Allies - Actor101: fix - Location: 50,52 - Owner: Allies - Actor102: dome - Location: 55,53 - Owner: Allies - Actor103: powr - Location: 58,41 - Owner: Allies - Actor104: apwr - Location: 71,47 - Owner: Allies - Actor105: fact - Location: 59,51 - Owner: Allies - Actor106: powr - Location: 55,42 - Owner: Allies - Actor107: gun - Location: 64,42 - Owner: Allies - Actor108: pbox.e1 - Location: 67,42 - Owner: Allies - Actor109: pbox.e1 - Location: 74,45 - Owner: Allies - Actor110: gun - Location: 50,45 - Owner: Allies - Actor114: fenc - Location: 44,54 - Owner: Allies - Actor118: fenc - Location: 42,57 - Owner: Allies - Actor117: fenc - Location: 46,57 - Owner: Allies - Actor67: brik - Location: 49,57 - Owner: Allies - Actor82: brik - Location: 48,57 - Owner: Allies - Actor85: brik - Location: 48,56 - Owner: Allies - Actor87: brik - Location: 48,55 - Owner: Allies - Actor86: brik - Location: 49,56 - Owner: Allies - Actor119: fenc - Location: 42,56 - Owner: Allies - Actor120: mine - Location: 30,58 - Owner: Neutral - Actor121: oilb - Location: 43,38 - Owner: Neutral - Actor122: oilb - Location: 36,37 - Owner: Neutral - Actor124: oilb - Location: 88,46 - Owner: Allies - Actor123: oilb - Location: 80,46 - Owner: Allies - Actor130: fenc - Location: 88,48 - Owner: Neutral - Actor129: fenc - Location: 89,48 - Owner: Neutral - Actor125: fenc - Location: 90,45 - Owner: Neutral - Actor127: fenc - Location: 90,47 - Owner: Neutral - Actor126: fenc - Location: 90,46 - Owner: Neutral - Actor128: fenc - Location: 90,48 - Owner: Neutral - Actor131: fenc - Location: 87,48 - Owner: Neutral - Actor141: fenc - Location: 78,11 - Owner: Soviets - Actor403: sam - Location: 76,11 - Owner: Soviets - Actor134: afld - Location: 86,5 - Owner: Soviets - Actor133: afld - Location: 80,6 - Owner: Soviets - Actor132: afld - Location: 75,5 - Owner: Soviets - Actor160: fenc - Location: 77,4 - Owner: Soviets - Actor159: fenc - Location: 76,4 - Owner: Soviets - Actor162: fenc - Location: 74,4 - Owner: Soviets - Actor161: fenc - Location: 78,4 - Owner: Soviets - Actor136: fenc - Location: 75,11 - Owner: Soviets - Actor137: fenc - Location: 75,10 - Owner: Soviets - Actor138: fenc - Location: 76,10 - Owner: Soviets - Actor139: fenc - Location: 77,10 - Owner: Soviets - Actor140: fenc - Location: 78,10 - Owner: Soviets - Actor143: barl - Location: 79,6 - Owner: Soviets - Actor144: brl3 - Location: 74,5 - Owner: Soviets - Actor145: brl3 - Location: 75,7 - Owner: Soviets - Actor146: barl - Location: 74,6 - Owner: Soviets - Actor147: barl - Location: 80,5 - Owner: Soviets - Actor148: brl3 - Location: 84,6 - Owner: Soviets - Actor149: brl3 - Location: 85,5 - Owner: Soviets - Actor150: brl3 - Location: 83,6 - Owner: Soviets - Actor151: barl - Location: 84,5 - Owner: Soviets - Actor142: brl3 - Location: 79,5 - Owner: Soviets - Actor152: barl - Location: 82,6 - Owner: Soviets - Actor153: barl - Location: 84,7 - Owner: Soviets - Actor154: barl - Location: 85,6 - Owner: Soviets - Actor155: barl - Location: 89,5 - Owner: Soviets - Actor171: fenc - Location: 87,4 - Owner: Soviets - Actor172: fenc - Location: 88,4 - Owner: Soviets - Actor156: brl3 - Location: 90,5 - Owner: Soviets - Actor170: fenc - Location: 86,4 - Owner: Soviets - Actor169: fenc - Location: 85,4 - Owner: Soviets - Actor158: fenc - Location: 75,4 - Owner: Soviets - Actor168: fenc - Location: 84,4 - Owner: Soviets - Actor157: barl - Location: 90,6 - Owner: Soviets - Actor167: fenc - Location: 83,4 - Owner: Soviets - Actor166: fenc - Location: 82,4 - Owner: Soviets - Actor165: fenc - Location: 81,4 - Owner: Soviets - Actor164: fenc - Location: 80,4 - Owner: Soviets - Actor163: fenc - Location: 79,4 - Owner: Soviets - Actor173: fenc - Location: 89,4 - Owner: Soviets - Actor174: fenc - Location: 90,4 - Owner: Soviets - Actor175: fenc - Location: 91,4 - Owner: Soviets - Actor176: fenc - Location: 91,5 - Owner: Soviets - Actor177: fenc - Location: 91,6 - Owner: Soviets - Actor178: fenc - Location: 91,7 - Owner: Soviets - Actor179: fenc - Location: 91,8 - Owner: Soviets - Actor180: fenc - Location: 90,8 - Owner: Soviets - Actor181: fenc - Location: 90,7 - Owner: Soviets - Actor183: proc - Location: 81,11 - Owner: Soviets - Actor187: t11 - Location: 69,10 - Owner: Neutral - Actor186: t16 - Location: 58,6 - Owner: Neutral - Actor185: tc04 - Location: 57,8 - Owner: Neutral - Actor184: mine - Location: 85,22 - Owner: Neutral - Actor188: tc01 - Location: 69,6 - Owner: Neutral - Actor189: t12 - Location: 62,13 - Owner: Neutral - Actor193: fenc - Location: 75,16 - Owner: Soviets - Actor194: fenc - Location: 75,15 - Owner: Soviets - Actor191: fenc - Location: 74,15 - Owner: Soviets - Actor192: fenc - Location: 74,16 - Owner: Soviets - Actor195: ftur - Location: 78,17 - Owner: Soviets - Actor190: fenc - Location: 74,14 - Owner: Soviets - Actor198: apwr - Location: 88,12 - Owner: Soviets - Actor196: silo - Location: 84,13 - Owner: Soviets - Actor197: silo - Location: 84,12 - Owner: Soviets - Actor199: e1 - Location: 79,15 - Owner: Soviets - Actor200: e2 - Location: 81,17 - Owner: Soviets - Actor201: v2rl - Location: 76,15 - Owner: Soviets - Actor202: tc04 - Location: 4,15 - Owner: Soviets - Actor203: tc01 - Location: 7,17 - Owner: Soviets - Actor204: t15 - Location: 9,16 - Owner: Neutral - Actor205: tc05 - Location: 4,26 - Owner: Neutral - Actor206: tc02 - Location: 5,24 - Owner: Neutral - Actor207: tc04 - Location: 7,25 - Owner: Neutral - Actor208: tc03 - Location: 40,21 - Owner: Neutral - Sam1: sam - Location: 62,27 - Owner: Soviets - Actor210: tc04 - Location: 34,22 - Owner: Neutral - Actor211: tc02 - Location: 32,33 - Owner: Neutral - Actor212: t16 - Location: 35,33 - Owner: Neutral - Actor213: t11 - Location: 49,37 - Owner: Neutral - Actor214: tc04 - Location: 82,39 - Owner: Neutral - Actor215: tc01 - Location: 89,39 - Owner: Neutral - Actor216: tc05 - Location: 85,39 - Owner: Neutral - Actor217: t16 - Location: 80,41 - Owner: Neutral - Actor218: fenc - Location: 79,48 - Owner: Neutral - Actor219: fenc - Location: 80,48 - Owner: Neutral - Actor220: fenc - Location: 81,48 - Owner: Neutral - Actor221: fenc - Location: 82,48 - Owner: Neutral - Actor222: fenc - Location: 82,47 - Owner: Neutral - Actor223: tc02 - Location: 21,41 - Owner: Neutral - Actor224: tc04 - Location: 35,43 - Owner: Neutral - Actor225: tc02 - Location: 38,44 - Owner: Neutral - Actor226: t16 - Location: 38,42 - Owner: Neutral - Actor227: t13 - Location: 44,33 - Owner: Neutral - Actor228: t02 - Location: 39,31 - Owner: Neutral - Actor229: tc04 - Location: 54,13 - Owner: Neutral - Actor230: t07 - Location: 47,12 - Owner: Neutral - Actor235: brik - Location: 12,18 - Owner: Neutral - Actor267: brik - Location: 33,17 - Owner: Neutral - Actor237: brik - Location: 11,19 - Owner: Neutral - Actor231: brik - Location: 11,16 - Owner: Neutral - Actor238: brik - Location: 12,19 - Owner: Neutral - Actor232: brik - Location: 11,17 - Owner: Neutral - Actor243: ftur - Location: 23,16 - Owner: Soviets - Actor244: ftur - Location: 29,13 - Owner: Soviets - Actor307: v2rl - Location: 31,9 - Owner: Soviets - Actor306: v2rl - Location: 31,18 - Owner: Soviets - Actor241: dome - Location: 14,16 - Owner: Soviets - Actor239: apwr - Location: 24,5 - Owner: Soviets - Actor234: brik - Location: 12,16 - Owner: Neutral - Actor233: brik - Location: 12,17 - Owner: Neutral - Actor236: brik - Location: 11,18 - Owner: Neutral - Actor293: brik - Location: 25,4 - Owner: Neutral - Actor291: brik - Location: 26,4 - Owner: Neutral - Actor295: brik - Location: 23,4 - Owner: Neutral - Actor294: brik - Location: 24,4 - Owner: Neutral - Actor290: brik - Location: 27,4 - Owner: Neutral - Actor289: brik - Location: 28,4 - Owner: Neutral - Actor288: brik - Location: 29,4 - Owner: Neutral - Actor287: brik - Location: 30,4 - Owner: Neutral - Actor286: brik - Location: 31,4 - Owner: Neutral - Actor285: brik - Location: 32,5 - Owner: Neutral - Actor284: brik - Location: 32,4 - Owner: Neutral - Actor283: brik - Location: 33,4 - Owner: Neutral - Actor261: brik - Location: 29,19 - Owner: Neutral - Actor262: brik - Location: 30,19 - Owner: Neutral - Actor260: brik - Location: 28,19 - Owner: Neutral - Actor265: brik - Location: 32,18 - Owner: Neutral - Actor259: brik - Location: 27,19 - Owner: Neutral - Sam2: sam - Location: 17,31 - Owner: Soviets - Actor264: brik - Location: 32,19 - Owner: Neutral - Actor246: brik - Location: 14,19 - Owner: Neutral - Actor242: brik - Location: 13,19 - Owner: Neutral - Actor263: brik - Location: 31,19 - Owner: Neutral - Actor266: brik - Location: 33,18 - Owner: Neutral - Actor247: brik - Location: 15,19 - Owner: Neutral - Actor248: brik - Location: 16,19 - Owner: Neutral - Actor249: brik - Location: 17,19 - Owner: Neutral - Actor251: brik - Location: 19,19 - Owner: Neutral - Actor250: brik - Location: 18,19 - Owner: Neutral - Actor254: brik - Location: 19,18 - Owner: Neutral - Actor253: brik - Location: 20,18 - Owner: Neutral - Actor252: brik - Location: 20,19 - Owner: Neutral - Actor281: brik - Location: 33,6 - Owner: Neutral - Actor277: brik - Location: 33,9 - Owner: Neutral - Actor276: brik - Location: 32,10 - Owner: Neutral - Actor270: brik - Location: 33,15 - Owner: Neutral - Actor278: brik - Location: 33,8 - Owner: Neutral - Actor275: brik - Location: 33,10 - Owner: Neutral - Actor274: brik - Location: 33,11 - Owner: Neutral - Actor273: brik - Location: 32,15 - Owner: Neutral - Actor271: brik - Location: 32,16 - Owner: Neutral - Actor282: brik - Location: 33,5 - Owner: Neutral - Actor272: brik - Location: 32,11 - Owner: Neutral - Actor279: brik - Location: 33,7 - Owner: Neutral - Actor269: brik - Location: 33,16 - Owner: Neutral - Actor268: brik - Location: 33,19 - Owner: Neutral - Actor420: weap - Location: 22,12 - Owner: Soviets - Actor240: apwr - Location: 16,13 - Owner: Soviets - Actor258: brik - Location: 26,18 - Owner: Neutral - Actor255: brik - Location: 25,18 - Owner: Neutral - Actor256: brik - Location: 25,19 - Owner: Neutral - Actor257: brik - Location: 26,19 - Owner: Neutral - Actor309: e1 - Location: 52,44 - Owner: Allies - Barrack1: barr - Location: 28,7 - Owner: Soviets - Actor305: v2rl - Location: 17,18 - Owner: Soviets - Actor304: e3 - Location: 17,17 - Owner: Soviets - Actor303: e1 - Location: 29,15 - Owner: Soviets - Actor300: e1 - Location: 25,16 - Owner: Soviets - Actor301: e2 - Location: 21,17 - Owner: Soviets - Actor302: e3 - Location: 28,10 - Owner: Soviets - sovietRallyPoint3: waypoint - Location: 37,13 - Owner: Neutral - sovietRallyPoint2: waypoint - Location: 23,21 - Owner: Neutral - Actor404: sam - Location: 29,17 - Owner: Soviets - sovietRallyPoint1: waypoint - Location: 23,39 - Owner: Neutral - Actor310: e1 - Location: 50,47 - Owner: Allies - Actor311: e1 - Location: 62,43 - Owner: Allies - Actor312: e1 - Location: 64,44 - Owner: Allies - Actor313: e3 - Location: 66,44 - Owner: Allies - Actor314: e1 - Location: 69,43 - Owner: Allies - Actor315: e1 - Location: 73,43 - Owner: Allies - Actor316: jeep - Location: 54,49 - Owner: Allies - Actor317: 1tnk - Location: 69,45 - Owner: Allies - Actor318: 1tnk - Location: 52,46 - Owner: Allies - sovietEntryPoint1: waypoint - Location: 4,31 - Owner: Neutral - sovietEntryPoint2: waypoint - Location: 4,21 - Owner: Neutral - sovietEntryPoint3: waypoint - Location: 37,4 - Owner: Neutral - sovietEntryPoint4: waypoint - Location: 65,4 - Owner: Neutral - sovietEntryPoint5: waypoint - Location: 91,19 - Owner: Neutral - sovietEntryPoint7: waypoint - Location: 91,43 - Owner: Neutral - alliesEntryPoint: waypoint - Location: 60,59 - Owner: Neutral - Actor296: tc02 - Location: 73,32 - Owner: Neutral - Actor298: tc01 - Location: 77,34 - Owner: Neutral - Actor299: tc04 - Location: 83,35 - Owner: Neutral - Actor308: tc01 - Location: 86,35 - Owner: Neutral - Actor319: t07 - Location: 90,27 - Owner: Neutral - Actor320: tc01 - Location: 80,26 - Owner: Neutral - alliesbase1: waypoint - Location: 66,45 - Owner: Neutral - alliesbase2: waypoint - Location: 51,46 - Owner: Neutral - alliesbase3: waypoint - Location: 72,45 - Owner: Neutral - alliesbase: waypoint - Location: 60,48 - Owner: Neutral - sovietRallyPoint4: waypoint - Location: 65,13 - Owner: Neutral - sovietRallyPoint5: waypoint - Location: 80,19 - Owner: Neutral - Actor321: brik - Location: 60,41 - Owner: Allies - BadgerEntryPoint1: waypoint - Location: 1,54 - Owner: Neutral - BadgerEntryPoint2: waypoint - Location: 1,47 - Owner: Neutral - ParaDrop1: waypoint - Location: 54,51 - Owner: Neutral - ParaDrop2: waypoint - Location: 67,51 - Owner: Neutral - ParaBomb1: waypoint - Location: 69,54 - Owner: Neutral - ParaBomb2: waypoint - Location: 72,48 - Owner: Neutral - Actor135: e1 - Location: 63,39 - Owner: Soviets - Actor209: e2 - Location: 65,40 - Owner: Soviets - Actor280: e1 - Location: 68,40 - Owner: Soviets - Actor292: e1 - Location: 76,44 - Owner: Soviets - Actor322: e2 - Location: 78,46 - Owner: Soviets - Actor323: e1 - Location: 46,44 - Owner: Soviets - Actor324: e3 - Location: 45,46 - Owner: Soviets - Actor325: e3 - Location: 66,39 - Owner: Soviets - Actor326: v2rl - Location: 61,37 - Owner: Soviets - Actor327: brl3 - Location: 79,47 - Owner: Allies - Actor328: barl - Location: 79,46 - Owner: Allies - Actor329: brl3 - Location: 87,45 - Owner: Allies - Actor330: barl - Location: 87,46 - Owner: Allies - Actor331: barl - Location: 88,45 - Owner: Allies - Actor332: oilb - Location: 74,53 - Owner: Allies - Actor333: fenc - Location: 73,55 - Owner: Allies - Actor334: fenc - Location: 74,55 - Owner: Allies - Actor335: fenc - Location: 75,55 - Owner: Allies - Actor336: fenc - Location: 75,52 - Owner: Allies - Actor337: fenc - Location: 76,52 - Owner: Allies - Actor338: fenc - Location: 74,52 - Owner: Allies - Actor339: brl3 - Location: 73,53 - Owner: Allies - Actor340: barl - Location: 73,52 - Owner: Allies - Actor3: spef - Location: 13,9 - Owner: Soviets - Factory: waypoint - Location: 23,13 - Owner: Neutral - Actor297: brik - Location: 22,4 - Owner: Neutral - Actor341: brik - Location: 21,4 - Owner: Neutral - Actor342: brik - Location: 21,5 - Owner: Neutral - Actor343: brik - Location: 22,5 - Owner: Neutral - SovietInfantryEntry1: waypoint - Location: 28,9 - Owner: Neutral - SovietInfantryRally1: waypoint - Location: 23,26 - Owner: Neutral - Actor346: t15 - Location: 57,24 - Owner: Neutral - Actor1000: camera.large - Location: 1,1 - Owner: Soviets - -Smudges: - -Rules: - World: - -CrateSpawner: - -SpawnMPUnits: - -MPStartLocations: - Survival01Script: - MissionObjectivesPanel: - ObjectivesPanel: MISSION_OBJECTIVES - TENT: - ProvidesCustomPrerequisite: - Prerequisite: barracks - GUN: - Valued: - Cost: 1000 - BARR: - ProvidesCustomPrerequisite: - Prerequisite: barracks - Buildable: - Owner: None - MEDI: - Buildable: - Prerequisites: barracks - SPY: - Buildable: - Prerequisites: barracks, dome - MIG: - Buildable: - Owner: None - YAK: - Buildable: - Owner: None - HELI: - Buildable: - Owner: None - SS: - Buildable: - Owner: None - MSUB: - Buildable: - Owner: None - DD: - Buildable: - Owner: None - CA: - Buildable: - Owner: None - PT: - Buildable: - Owner: None - MSLO: - Buildable: - Owner: None - GAP: - Buildable: - Owner: None - SPEN: - Buildable: - Owner: None - SYRD: - Buildable: - Owner: None - IRON: - Buildable: - Owner: None - PDOX: - Buildable: - Owner: None - TSLA: - Buildable: - Owner: None - AGUN: - Buildable: - Owner: None - FTUR: - Buildable: - Owner: None - SAM: - Buildable: - Owner: None - ATEK: - Buildable: - Owner: None - AFLD: - Buildable: - Owner: None - STEK: - Buildable: - Owner: None - 4TNK: - Buildable: - Owner: None - MCV: - Buildable: - Owner: None - APC: - Buildable: - Owner: None - MNLY.AP: - Buildable: - Owner: None - MNLY.AT: - Buildable: - Owner: None - TTNK: - Buildable: - Owner: None - FTRK: - Buildable: - Owner: None - CTNK: - Buildable: - Owner: None - DOME: - Buildable: - Owner: None - BRIK: - Buildable: - Owner: None - MRJ: - Buildable: - Owner: None - CAMERA.Large: - Inherits: CAMERA - RevealsShroud: - Range: 1000c0 - -Sequences: - -VoxelSequences: - -Weapons: - -Voices: - -Notifications: - -Translations: diff --git a/mods/ra/maps/Survival02/map.bin b/mods/ra/maps/Survival02/map.bin deleted file mode 100644 index 13fdf929d5a7d1a50321276a5b4c3d3ce7005169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32005 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 diff --git a/mods/ra/maps/allies-01/map.yaml b/mods/ra/maps/allies-01/map.yaml deleted file mode 100644 index 812dcfdb25..0000000000 --- a/mods/ra/maps/allies-01/map.yaml +++ /dev/null @@ -1,446 +0,0 @@ -Selectable: True - -MapFormat: 6 - -RequiresMod: ra - -Title: Allies 01 - -Description: Allies' first mission - -Author: Scott_NZ - -Tileset: SNOW - -MapSize: 48,64 - -Bounds: 8,8,32,38 - -UseAsShellmap: False - -Type: Campaign - -Options: - Crates: False - Fog: True - Shroud: True - AllyBuildRadius: False - FragileAlliances: False - StartingCash: 5000 - ConfigurableStartingUnits: False - Difficulties: Easy,Normal - -Players: - PlayerReference@Neutral: - Name: Neutral - OwnsWorld: True - NonCombatant: True - Race: allies - PlayerReference@Creeps: - Name: Creeps - NonCombatant: True - Race: allies - PlayerReference@Allies: - Name: Allies - Playable: True - AllowBots: False - Required: True - LockRace: True - Race: allies - LockColor: True - ColorRamp: 161,134,200 - LockSpawn: True - LockTeam: True - Allies: Creeps - Enemies: Soviets - PlayerReference@Soviets: - Name: Soviets - Race: soviet - ColorRamp: 3,255,127 - Enemies: Allies,Creeps - -Actors: - Actor1: tc01 - Location: 13,9 - Owner: Neutral - Actor10: oilb - Location: 17,19 - Owner: Soviets - Actor3: t13 - Location: 17,13 - Owner: Neutral - Actor5: t16 - Location: 25,9 - Owner: Neutral - Actor4: t17 - Location: 17,10 - Owner: Neutral - Actor8: brl3 - Location: 19,21 - Owner: Soviets - Actor7: barl - Location: 19,20 - Owner: Soviets - Actor2: brl3 - Location: 19,19 - Owner: Soviets - Actor6: brl3 - Location: 20,19 - Owner: Soviets - Actor71: t01 - Location: 33,31 - Owner: Neutral - Actor11: powr - Location: 20,20 - Owner: Soviets - Actor12: powr - Location: 24,20 - Owner: Soviets - Actor13: powr - Location: 26,20 - Owner: Soviets - Actor14: t08 - Location: 25,13 - Owner: Neutral - Actor15: fenc - Location: 27,18 - Owner: Soviets - Actor16: fenc - Location: 28,18 - Owner: Soviets - Actor17: fenc - Location: 27,17 - Owner: Soviets - Actor18: jeep - Location: 21,13 - Owner: Allies - Actor19: jeep - Location: 22,13 - Owner: Allies - Actor20: jeep - Location: 23,13 - Owner: Allies - Actor22: e2 - Location: 21,19 - Owner: Soviets - Actor23: e1 - Location: 17,23 - Owner: Soviets - Actor28: e1 - Location: 23,12 - Owner: Allies - Actor26: e1 - Location: 22,12 - Owner: Allies - Actor25: e1 - Location: 21,12 - Owner: Allies - Actor65: fenc - Location: 33,33 - Owner: Soviets - Actor31: mine - Location: 33,14 - Owner: Neutral - Actor32: tc03 - Location: 28,13 - Owner: Neutral - Actor33: v04 - Location: 35,8 - Owner: Neutral - Actor34: tsla - Location: 30,22 - Owner: Soviets - Actor35: proc - Location: 32,21 - Owner: Soviets - Actor37: e1 - Location: 23,24 - Owner: Soviets - Actor0: e2 - Location: 22,27 - Owner: Soviets - Actor21: e2 - Location: 20,27 - Owner: Soviets - Actor40: weap - Location: 24,25 - Owner: Soviets - Actor41: fact - Location: 28,25 - Owner: Soviets - Actor42: barr - Location: 20,28 - Owner: Soviets - Actor43: silo - Location: 18,28 - Owner: Soviets - Actor44: dome - Location: 26,28 - Owner: Soviets - Actor45: t12 - Location: 15,19 - Owner: Neutral - Actor46: t12 - Location: 15,25 - Owner: Neutral - Actor47: fenc - Location: 14,27 - Owner: Soviets - Actor48: fenc - Location: 14,28 - Owner: Soviets - Actor49: fenc - Location: 14,29 - Owner: Soviets - Actor50: fenc - Location: 14,30 - Owner: Soviets - Actor51: tsla - Location: 19,30 - Owner: Soviets - Actor52: tsla - Location: 26,30 - Owner: Soviets - Actor53: fenc - Location: 14,31 - Owner: Soviets - Actor54: fenc - Location: 15,31 - Owner: Soviets - Actor55: fenc - Location: 16,31 - Owner: Soviets - Actor56: fenc - Location: 17,31 - Owner: Soviets - Actor57: fenc - Location: 17,32 - Owner: Soviets - Actor70: fenc - Location: 35,33 - Owner: Soviets - Actor59: e1 - Location: 23,31 - Owner: Soviets - Actor60: e1 - Location: 21,31 - Owner: Soviets - Actor61: powr - Location: 34,30 - Owner: Soviets - Actor58: powr - Location: 36,27 - Owner: Soviets - Actor64: t05 - Location: 32,27 - Owner: Neutral - Actor62: powr - Location: 36,30 - Owner: Soviets - Actor63: fenc - Location: 32,33 - Owner: Soviets - Actor30: powr - Location: 34,27 - Owner: Soviets - Actor67: fenc - Location: 34,33 - Owner: Soviets - Actor68: c1 - Location: 28,16 - Owner: Creeps - Actor69: c2 - Location: 30,17 - Owner: Creeps - Actor72: e1 - Location: 35,29 - Owner: Soviets - Actor66: e1 - Location: 31,29 - Owner: Soviets - Actor9: barl - Location: 18,21 - Owner: Soviets - Actor74: tc02 - Location: 11,23 - Owner: Neutral - Actor73: tc03 - Location: 37,22 - Owner: Neutral - Actor75: t02 - Location: 29,31 - Owner: Neutral - Actor76: t02 - Location: 12,34 - Owner: Neutral - Actor79: fenc - Location: 14,21 - Owner: Soviets - Actor78: fenc - Location: 14,22 - Owner: Soviets - Actor77: fenc - Location: 14,23 - Owner: Soviets - Actor85: 3tnk - Location: 17,25 - Owner: Soviets - Facing: 0 - Actor92: wood - Location: 34,9 - Owner: Neutral - Actor94: c1 - Location: 19,24 - Owner: Soviets - Actor95: c2 - Location: 31,23 - Owner: Soviets - InsertionLZ: waypoint - Location: 22,10 - Owner: Neutral - Lab: stek.autotargetignore - Location: 20,24 - Owner: Soviets - Actor24: e2 - Location: 27,24 - Owner: Soviets - ShipSpawnPoint: waypoint - Location: 23,45 - Owner: Neutral - ShipMovePoint: waypoint - Location: 23,40 - Owner: Neutral - InsertionLZEntryPoint: waypoint - Location: 22,4 - Owner: Neutral - Actor27: e2 - Location: 27,27 - Owner: Soviets - ChinookExitPoint: waypoint - Location: 55,11 - Owner: Neutral - ExtractionLZEntryPoint: waypoint - Location: 31,48 - Owner: Neutral - SovietAttackEntryPoint2: waypoint - Location: 39,11 - Owner: Neutral - ExtractionLZ: waypoint - Location: 13,12 - Owner: Neutral - Actor36: e1 - Location: 20,12 - Owner: Allies - Actor38: e1 - Location: 24,12 - Owner: Allies - Actor39: e3 - Location: 21,11 - Owner: Allies - Actor80: e3 - Location: 22,11 - Owner: Allies - Actor81: e3 - Location: 23,11 - Owner: Allies - SovietAttackEntryPoint1: waypoint - Location: 8,30 - Owner: Neutral - Actor29: kenn - Location: 23,28 - Owner: Soviets - Actor1000: camera.large - Location: 1,1 - Owner: Soviets - -Smudges: - -Rules: - Player: - -ConquestVictoryConditions: - World: - -CrateSpawner: - -SpawnMPUnits: - -MPStartLocations: - Allies01Script: - MissionObjectivesPanel: - ObjectivesPanel: MISSION_OBJECTIVES - TRAN: - -Selectable: - RevealsShroud: - Range: 0c0 - E7: - AutoTarget: - InitialStance: Defend - Passenger: - Weight: 0 - EINSTEIN: - Passenger: - Weight: 0 - STEK.AutoTargetIgnore: - Inherits: STEK - RenderBuilding: - Image: STEK - Tooltip: - Icon: STEK - AutoTargetIgnore: - ^Vehicle: - GivesBounty: - Percentage: 0 - ^Tank: - GivesBounty: - Percentage: 0 - ^Infantry: - GivesBounty: - Percentage: 0 - ^Ship: - GivesBounty: - Percentage: 0 - ^Plane: - GivesBounty: - Percentage: 0 - ^Building: - GivesBounty: - Percentage: 0 - CAMERA.Large: - Inherits: CAMERA - RevealsShroud: - Range: 1000c0 - -Sequences: - -VoxelSequences: - -Weapons: - 8Inch: - ROF: 200 - Range: 25c0 - Burst: 2 - Report: TURRET1.AUD - Projectile: Bullet - Speed: 512 - High: true - Angle: 62 - Inaccuracy: 4c170 - Image: 120MM - ContrailLength: 10 - Warhead: - Spread: 213 - Versus: - None: 60% - Wood: 75% - Light: 60% - Heavy: 25% - Explosion: large_explosion - WaterExplosion: large_splash - InfDeath: 2 - SmudgeType: Crater - Damage: 500 - ImpactSound: kaboom12.aud - WaterImpactSound: splash9.aud - -Voices: - -Notifications: - -Translations: diff --git a/mods/ra/maps/allies-02/map.bin b/mods/ra/maps/allies-02/map.bin deleted file mode 100644 index d6e179289570e1893ac9b8b5dfa8a7f86fadba5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81925 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 diff --git a/mods/ra/maps/allies-02/map.yaml b/mods/ra/maps/allies-02/map.yaml deleted file mode 100644 index d904a22c3a..0000000000 --- a/mods/ra/maps/allies-02/map.yaml +++ /dev/null @@ -1,1947 +0,0 @@ -Selectable: True - -MapFormat: 6 - -RequiresMod: ra - -Title: Allies 02 - -Description: Allies' second mission - -Author: Scott_NZ - -Tileset: SNOW - -MapSize: 128,128 - -Bounds: 16,16,96,96 - -UseAsShellmap: False - -Type: Campaign - -Options: - Crates: False - Fog: True - Shroud: True - AllyBuildRadius: False - FragileAlliances: False - StartingCash: 5000 - ConfigurableStartingUnits: False - -Players: - PlayerReference@Neutral: - Name: Neutral - OwnsWorld: True - NonCombatant: True - Race: allies - PlayerReference@Allies1: - Name: Allies1 - Playable: True - AllowBots: False - Required: True - LockRace: True - Race: allies - LockColor: True - ColorRamp: 161,134,200 - LockSpawn: True - LockTeam: True - Allies: Allies2,Allies - Enemies: Soviets - PlayerReference@Allies2: - Name: Allies2 - Playable: True - AllowBots: False - LockRace: True - Race: allies - LockColor: True - ColorRamp: 76,196,190 - LockSpawn: True - LockTeam: True - Allies: Allies1,Allies - Enemies: Soviets - PlayerReference@Allies: - Name: Allies - Race: allies - ColorRamp: 115,115,143 - Allies: Allies1,Allies2 - Enemies: Soviets - PlayerReference@Soviets: - Name: Soviets - Race: soviet - ColorRamp: 3,255,127 - 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 - Engineer: e6 - Location: 68,86 - 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 - Actor82: e2 - Location: 73,109 - Owner: Soviets - Actor81: e2 - Location: 70,109 - Owner: Soviets - Actor86: e2 - Location: 74,110 - Owner: Soviets - 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 - ChinookHusk: tran.husk2 - Location: 108,87 - Owner: Allies1 - Actor95: fenc - Location: 83,71 - Owner: Soviets - Actor642: t10 - Location: 66,29 - Owner: Neutral - Actor603: fenc - Location: 84,71 - Owner: Soviets - Einstein: einstein - Location: 66,85 - Owner: Neutral - Actor85: medi - Location: 110,86 - Owner: Allies1 - SAM1: sam - Location: 105,97 - Owner: Soviets - Tanya: e7 - Location: 106,86 - Owner: Allies1 - Actor60: e2 - Location: 77,96 - Owner: Soviets - Actor59: e2 - Location: 74,92 - Owner: Soviets - Actor89: e1 - Location: 71,99 - Owner: Soviets - 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 - Actor73: e1 - Location: 72,109 - 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 - Actor80: e1 - Location: 70,110 - 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 - SAM2: sam - Location: 91,65 - Owner: Soviets - 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 - SAM3: sam - Location: 94,18 - 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 - SAM4: sam - Location: 31,37 - 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 - ReinforcementsEntryPoint: waypoint - Location: 31,111 - Owner: Neutral - Actor96: fenc - Location: 82,71 - Owner: Soviets - Actor97: fenc - Location: 111,66 - Owner: Soviets - Actor79: e1 - Location: 80,87 - Owner: Soviets - Actor42: t07 - Location: 92,110 - Owner: Neutral - Actor558: v10 - Location: 64,90 - Owner: Neutral - ExtractionLZ: waypoint - Location: 30,38 - Owner: Neutral - ExtractionLZEntryPoint: waypoint - Location: 9,9 - 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 - BadgerDropPoint1: waypoint - Location: 19,96 - Owner: Neutral - BadgerEntryPoint1: waypoint - Location: 40,12 - Owner: Neutral - Actor485: tc03 - Location: 41,101 - Owner: Neutral - Actor495: tc02 - Location: 40,102 - Owner: Neutral - Actor51: t13 - Location: 66,80 - Owner: Neutral - Allies2BasePoint: waypoint - Location: 34,96 - Owner: Neutral - FlamersEntryPoint: waypoint - Location: 16,74 - 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 - SovietRallyPoint: waypoint - Location: 36,65 - 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 - Actor588: e1 - Location: 69,93 - Owner: Neutral - Actor535: fenc - Location: 101,100 - Owner: Soviets - Actor524: e1 - Location: 69,89 - Owner: Neutral - Actor513: e1 - Location: 67,88 - Owner: Neutral - Actor211: e1 - Location: 105,107 - Owner: Soviets - Actor530: fenc - Location: 106,102 - Owner: Soviets - Actor591: e2 - Location: 104,101 - Owner: Soviets - Actor128: fenc - Location: 108,102 - Owner: Soviets - Actor592: dog - Location: 108,97 - Owner: Soviets - Actor525: e1 - Location: 70,88 - Owner: Neutral - 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 - SovietTownAttackPoint1: waypoint - Location: 72,110 - Owner: Neutral - Actor464: t05 - Location: 64,82 - Owner: Neutral - Actor463: tc04 - Location: 60,83 - Owner: Neutral - Actor714: e1 - Location: 73,90 - 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 - Actor594: e1 - Location: 73,88 - Owner: Neutral - Actor595: e1 - Location: 73,83 - Owner: Soviets - SovietTownAttackPoint2: waypoint - Location: 86,78 - 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 - TownPoint: waypoint - Location: 70,89 - Owner: Neutral - Actor688: e1 - Location: 70,86 - Owner: Neutral - Actor689: e1 - Location: 69,84 - Owner: Neutral - Actor687: e1 - Location: 82,77 - Owner: Soviets - Actor690: e1 - Location: 85,76 - Owner: Soviets - Actor692: e1 - Location: 89,79 - Owner: Soviets - Actor695: e1 - Location: 84,79 - Owner: Soviets - Actor697: e1 - Location: 89,80 - Owner: Soviets - Actor699: e2 - Location: 86,77 - Owner: Soviets - Actor148: proc - Location: 40,36 - Owner: Soviets - Actor701: e1 - Location: 69,110 - Owner: Soviets - Actor702: e1 - Location: 74,109 - Owner: Soviets - Actor704: e1 - Location: 73,110 - Owner: Soviets - Actor705: e1 - Location: 71,109 - Owner: Soviets - Actor694: dog - Location: 87,79 - Owner: Soviets - Actor712: e1 - Location: 71,86 - Owner: Neutral - Actor713: e1 - Location: 68,91 - Owner: Neutral - Actor593: e1 - Location: 73,85 - Owner: Neutral - Actor707: v18 - Location: 68,97 - Owner: Neutral - Actor716: e3 - Location: 66,89 - Owner: Neutral - Actor717: e3 - Location: 66,87 - Owner: Neutral - Actor718: e3 - Location: 64,88 - 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 - Actor639: 3tnk - Location: 84,77 - Owner: Soviets - SovietBarracks: barr - Location: 39,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: Allies1 - 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 - BadgerDropPoint2: waypoint - Location: 34,106 - Owner: Neutral - BadgerDropPoint3: waypoint - Location: 26,100 - Owner: Neutral - TanksEntryPoint: waypoint - Location: 16,86 - Owner: Neutral - 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 - YakAttackPoint: waypoint - Location: 78,62 - Owner: Neutral - YakEntryPoint: waypoint - Location: 99,10 - Owner: Neutral - Actor323: t06 - Location: 29,43 - Owner: Neutral - BadgerEntryPoint2: waypoint - Location: 119,77 - Owner: Neutral - ParabombPoint1: waypoint - Location: 39,105 - Owner: Neutral - ParabombPoint2: waypoint - Location: 39,108 - 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.e1 - 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 - SovietWarFactory: weap - Location: 51,47 - 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 - 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.e1 - Location: 39,92 - Owner: Allies - AlliedBaseBottomRight: waypoint - Location: 51,111 - Owner: Neutral - AlliedBaseTopLeft: waypoint - Location: 16,84 - Owner: Neutral - Actor1000: camera.large - Location: 1,1 - Owner: Soviets - -Smudges: - -Rules: - Player: - -ConquestVictoryConditions: - World: - -CrateSpawner: - -SpawnMPUnits: - -MPStartLocations: - Allies02Script: - MissionObjectivesPanel: - ObjectivesPanel: MISSION_OBJECTIVES - TRAN.Husk1: - Burns: - Damage: 0 - TRAN.Husk2: - Burns: - Damage: 0 - E7: - AutoTarget: - InitialStance: Defend - Passenger: - Weight: 0 - Buildable: - Owner: None - EINSTEIN: - Passenger: - Weight: 0 - V01: - ContainsCrate: - TRAN: - -Selectable: - Buildable: - Owner: None - RevealsShroud: - Range: 0c0 - TENT: - ProvidesCustomPrerequisite: - Prerequisite: barracks - BARR: - ProvidesCustomPrerequisite: - Prerequisite: barracks - Buildable: - Owner: None - MEDI: - Buildable: - Prerequisites: barracks - SPY: - Buildable: - Prerequisites: barracks, dome - MIG: - Buildable: - Owner: None - YAK: - Buildable: - Owner: None - HELI: - Buildable: - Owner: None - HIND: - Buildable: - Owner: None - SS: - Buildable: - Owner: None - MSUB: - Buildable: - Owner: None - DD: - Buildable: - Owner: None - CA: - Buildable: - Owner: None - PT: - Buildable: - Owner: None - MSLO: - Buildable: - Owner: None - GAP: - Buildable: - Owner: None - SPEN: - Buildable: - Owner: None - SYRD: - Buildable: - Owner: None - IRON: - Buildable: - Owner: None - PDOX: - Buildable: - Owner: None - TSLA: - Buildable: - Owner: None - AGUN: - Buildable: - Owner: None - FTUR: - Buildable: - Owner: None - SAM: - Buildable: - Owner: None - ATEK: - Buildable: - Owner: None - HPAD: - Buildable: - Owner: None - AFLD: - Buildable: - Owner: None - STEK: - Buildable: - Owner: None - 4TNK: - Buildable: - Owner: None - MCV: - Buildable: - Owner: None - ARTY: - Buildable: - Owner: None - APC: - Buildable: - Owner: None - MNLY.AP: - Buildable: - Owner: None - MNLY.AT: - Buildable: - Owner: None - TRUK: - Buildable: - Owner: None - TTNK: - Buildable: - Owner: None - FTRK: - Buildable: - Owner: None - CTNK: - Buildable: - Owner: None - MGG: - Buildable: - Owner: None - MRJ: - Buildable: - Owner: None - CRATE: - GiveCashCrateAction: - SelectionShares: 0 - LevelUpCrateAction: - SelectionShares: 0 - ExplodeCrateAction@fire: - SelectionShares: 0 - ExplodeCrateAction@boom: - SelectionShares: 0 - ExplodeCrateAction@nuke: - SelectionShares: 0 - HideMapCrateAction: - SelectionShares: 0 - HealUnitsCrateAction: - SelectionShares: 10000 - RevealMapCrateAction: - SelectionShares: 0 - SupportPowerCrateAction@parabombs: - SelectionShares: 0 - GiveMcvCrateAction: - SelectionShares: 0 - GiveUnitCrateAction@jeep: - SelectionShares: 0 - GiveUnitCrateAction@arty: - SelectionShares: 0 - GiveUnitCrateAction@v2rl: - SelectionShares: 0 - GiveUnitCrateAction@1tnk: - SelectionShares: 0 - GiveUnitCrateAction@2tnk: - SelectionShares: 0 - GiveUnitCrateAction@3tnk: - SelectionShares: 0 - GiveUnitCrateAction@4tnk: - SelectionShares: 0 - CAMERA.Large: - Inherits: CAMERA - RevealsShroud: - Range: 1000c0 - -Sequences: - -VoxelSequences: - -Weapons: - -Voices: - -Notifications: - -Translations: diff --git a/mods/ra/maps/allies-03/map.bin b/mods/ra/maps/allies-03/map.bin deleted file mode 100644 index 89ef1b5ec884b467ff073f2d671d5ab4c3ad2ca6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92165 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 UED9_NED9_NED9_NTxJFSFBcRNx&QzG diff --git a/mods/ra/maps/allies-03/map.yaml b/mods/ra/maps/allies-03/map.yaml deleted file mode 100644 index 41f5342ce3..0000000000 --- a/mods/ra/maps/allies-03/map.yaml +++ /dev/null @@ -1,1580 +0,0 @@ -Selectable: True - -MapFormat: 6 - -RequiresMod: ra - -Title: Allies 03 - -Description: Allies' third mission - -Author: Scott_NZ - -Tileset: SNOW - -MapSize: 192,96 - -Bounds: 16,16,160,64 - -UseAsShellmap: False - -Type: Campaign - -Options: - Crates: False - Fog: True - Shroud: True - AllyBuildRadius: False - FragileAlliances: False - StartingCash: 5000 - ConfigurableStartingUnits: False - Difficulties: Easy,Normal,Hard - -Players: - PlayerReference@Neutral: - Name: Neutral - OwnsWorld: True - NonCombatant: True - Race: allies - PlayerReference@Allies1: - Name: Allies1 - Playable: True - AllowBots: False - Required: True - LockRace: True - Race: allies - LockColor: True - ColorRamp: 161,134,200 - LockSpawn: True - LockTeam: True - Allies: Allies2,Allies - Enemies: Soviets - PlayerReference@Allies2: - Name: Allies2 - Playable: True - AllowBots: False - LockRace: True - Race: allies - LockColor: True - ColorRamp: 76,196,190 - LockSpawn: True - LockTeam: True - Allies: Allies1,Allies - Enemies: Soviets - PlayerReference@Allies: - Name: Allies - Race: allies - ColorRamp: 115,115,143 - Allies: Allies1,Allies2 - Enemies: Soviets - PlayerReference@Soviets: - Name: Soviets - Race: soviet - ColorRamp: 3,255,127 - Enemies: Allies1,Allies2,Allies - -Actors: - Actor239: dog - Location: 169,60 - Owner: Soviets - Actor12: t08 - Location: 163,57 - Owner: Neutral - Actor14: t14 - Location: 148,59 - Owner: Neutral - Actor25: t07 - Location: 142,77 - Owner: Neutral - Actor29: t07 - Location: 165,78 - Owner: Neutral - Actor21: mine - Location: 169,71 - Owner: Neutral - Actor23: t08 - Location: 124,40 - Owner: Neutral - Actor10: tc04 - Location: 43,67 - Owner: Neutral - Actor28: t02 - Location: 151,51 - Owner: Neutral - Actor34: t17 - Location: 148,52 - Owner: Neutral - Actor36: tc04 - Location: 172,46 - Owner: Neutral - Actor37: t02 - Location: 169,46 - Owner: Neutral - Actor39: t02 - Location: 148,45 - Owner: Neutral - Actor42: t10 - Location: 151,47 - Owner: Neutral - Actor9: tc04 - Location: 33,41 - Owner: Neutral - Actor52: t05 - Location: 163,47 - Owner: Neutral - Actor53: tc03 - Location: 138,53 - Owner: Neutral - SovietAirfield5: afld - Location: 62,47 - Owner: Soviets - Actor57: tc04 - Location: 43,19 - Owner: Neutral - Actor58: tc04 - Location: 56,18 - Owner: Neutral - Actor59: tc04 - Location: 69,28 - Owner: Neutral - Actor60: tc05 - Location: 63,19 - Owner: Neutral - Actor61: tc05 - Location: 48,19 - Owner: Neutral - Actor62: tc05 - Location: 37,18 - Owner: Neutral - Actor63: tc05 - Location: 78,14 - Owner: Neutral - Actor64: tc03 - Location: 70,19 - Owner: Neutral - Actor65: tc03 - Location: 55,26 - Owner: Neutral - Actor66: tc03 - Location: 45,24 - Owner: Neutral - Actor67: tc03 - Location: 38,23 - Owner: Neutral - Actor68: tc02 - Location: 39,21 - Owner: Neutral - Actor69: tc02 - Location: 42,16 - Owner: Neutral - Actor70: tc02 - Location: 50,16 - Owner: Neutral - Actor71: tc02 - Location: 51,22 - Owner: Neutral - Actor72: tc02 - Location: 64,29 - Owner: Neutral - Actor73: tc02 - Location: 67,24 - Owner: Neutral - Actor74: tc02 - Location: 74,17 - Owner: Neutral - Actor75: tc01 - Location: 61,16 - Owner: Neutral - Actor76: tc01 - Location: 57,22 - Owner: Neutral - Actor77: tc01 - Location: 48,23 - Owner: Neutral - Actor78: tc01 - Location: 38,26 - Owner: Neutral - Actor79: t05 - Location: 38,20 - Owner: Neutral - Actor80: t05 - Location: 42,17 - Owner: Neutral - Actor81: t05 - Location: 47,20 - Owner: Neutral - Actor82: t05 - Location: 53,25 - Owner: Neutral - Actor83: t05 - Location: 57,16 - Owner: Neutral - Actor84: t05 - Location: 56,22 - Owner: Neutral - Actor85: t05 - Location: 64,27 - Owner: Neutral - Actor86: t05 - Location: 70,22 - Owner: Neutral - Actor87: t05 - Location: 68,15 - Owner: Neutral - Actor88: t05 - Location: 81,18 - Owner: Neutral - Actor89: t16 - Location: 79,18 - Owner: Neutral - Actor90: t16 - Location: 68,16 - Owner: Neutral - Actor91: t16 - Location: 67,22 - Owner: Neutral - Actor92: t16 - Location: 53,16 - Owner: Neutral - Actor93: t16 - Location: 51,23 - Owner: Neutral - Actor94: t16 - Location: 47,16 - Owner: Neutral - Actor95: t16 - Location: 42,27 - Owner: Neutral - Actor96: t16 - Location: 38,16 - Owner: Neutral - Actor97: t16 - Location: 34,20 - Owner: Neutral - Actor98: t02 - Location: 54,19 - Owner: Neutral - Actor99: t02 - Location: 64,24 - Owner: Neutral - Actor100: t02 - Location: 48,26 - Owner: Neutral - Actor101: t02 - Location: 42,18 - Owner: Neutral - Actor102: t02 - Location: 37,16 - Owner: Neutral - Actor103: t06 - Location: 42,24 - Owner: Neutral - Actor104: t06 - Location: 45,21 - Owner: Neutral - Actor105: t06 - Location: 58,16 - Owner: Neutral - Actor106: t06 - Location: 59,28 - Owner: Neutral - Actor107: t06 - Location: 63,24 - Owner: Neutral - Actor108: t06 - Location: 67,29 - Owner: Neutral - Actor109: t10 - Location: 66,17 - Owner: Neutral - Actor110: t10 - Location: 65,28 - Owner: Neutral - Actor111: t10 - Location: 54,22 - Owner: Neutral - Actor112: t11 - Location: 40,23 - Owner: Neutral - Actor113: t11 - Location: 52,26 - Owner: Neutral - Actor114: t11 - Location: 69,20 - Owner: Neutral - Actor115: t12 - Location: 68,30 - Owner: Neutral - Actor116: t12 - Location: 60,20 - Owner: Neutral - Actor117: t17 - Location: 44,17 - Owner: Neutral - Actor118: t17 - Location: 36,19 - Owner: Neutral - Actor119: t08 - Location: 52,20 - Owner: Neutral - Actor120: t08 - Location: 70,27 - Owner: Neutral - Actor121: t08 - Location: 48,16 - Owner: Neutral - Actor123: tc03 - Location: 17,25 - Owner: Neutral - Exit1BottomRight: waypoint - Location: 25,50 - Owner: Neutral - Exit1BottomLeft: waypoint - Location: 16,50 - Owner: Neutral - SovietAirfield4: afld - Location: 151,67 - Owner: Soviets - Actor127: t05 - Location: 17,21 - Owner: Neutral - Exit1TopLeft: waypoint - Location: 16,44 - Owner: Neutral - Actor48: fenc - Location: 29,27 - Owner: Allies - Actor130: t02 - Location: 28,16 - Owner: Neutral - Actor131: t06 - Location: 48,32 - Owner: Neutral - Actor132: t02 - Location: 30,35 - Owner: Neutral - Actor133: t03 - Location: 28,34 - Owner: Neutral - Actor134: t17 - Location: 55,31 - Owner: Neutral - Actor135: t03 - Location: 60,37 - Owner: Neutral - Actor136: t11 - Location: 64,38 - Owner: Neutral - Actor137: t10 - Location: 65,33 - Owner: Neutral - Actor140: tc05 - Location: 163,42 - Owner: Neutral - Actor51: t01 - Location: 48,62 - Owner: Neutral - Actor142: t05 - Location: 175,43 - Owner: Neutral - Actor143: t02 - Location: 173,41 - Owner: Neutral - Actor20: mine - Location: 158,26 - Owner: Neutral - Actor147: t10 - Location: 139,41 - Owner: Neutral - Actor148: t13 - Location: 129,40 - Owner: Neutral - Actor149: t17 - Location: 134,47 - Owner: Neutral - Actor156: t05 - Location: 139,44 - Owner: Neutral - Actor150: t05 - Location: 146,37 - Owner: Neutral - Actor162: t06 - Location: 126,37 - Owner: Neutral - Actor178: t16 - Location: 137,77 - Owner: Neutral - Actor370: tc02 - Location: 25,65 - Owner: Neutral - Actor165: tc03 - Location: 157,77 - Owner: Neutral - Actor181: t13 - Location: 137,71 - Owner: Neutral - Actor182: t16 - Location: 135,57 - Owner: Neutral - Actor184: tc01 - Location: 124,38 - Owner: Neutral - Actor363: t12 - Location: 81,50 - Owner: Neutral - Actor345: t08 - Location: 90,23 - Owner: Neutral - Actor364: t12 - Location: 83,27 - Owner: Neutral - Actor346: t08 - Location: 107,28 - Owner: Neutral - Actor153: apwr - Location: 55,43 - Owner: Soviets - Actor298: t06 - Location: 72,50 - Owner: Neutral - Actor30: t01 - Location: 173,61 - Owner: Neutral - Actor224: ftur - Location: 66,60 - Owner: Soviets - Actor203: t16 - Location: 54,41 - Owner: Neutral - Actor338: tc04 - Location: 28,76 - Owner: Neutral - Actor1: tc02 - Location: 95,73 - Owner: Neutral - Actor333: t07 - Location: 133,36 - Owner: Neutral - Actor238: t01 - Location: 111,60 - Owner: Neutral - Actor283: t05 - Location: 102,59 - Owner: Neutral - SovietAirfield6: afld - Location: 62,53 - Owner: Soviets - Actor284: t05 - Location: 82,70 - Owner: Neutral - Actor369: tc02 - Location: 30,60 - Owner: Neutral - Actor289: t05 - Location: 71,33 - Owner: Neutral - Actor157: tc05 - Location: 23,39 - Owner: Neutral - Actor226: tc01 - Location: 98,24 - Owner: Neutral - Actor194: tc05 - Location: 103,62 - Owner: Neutral - Actor371: tc02 - Location: 37,77 - Owner: Neutral - Actor367: tc03 - Location: 35,71 - Owner: Neutral - Actor236: ftur - Location: 62,61 - Owner: Soviets - Actor302: t06 - Location: 71,73 - Owner: Neutral - Actor329: t07 - Location: 97,28 - Owner: Neutral - Actor331: t07 - Location: 124,48 - Owner: Neutral - Actor296: t05 - Location: 63,63 - Owner: Neutral - Actor155: tc04 - Location: 18,37 - Owner: Neutral - Actor279: t03 - Location: 72,32 - Owner: Neutral - Actor274: t03 - Location: 71,78 - Owner: Neutral - Actor280: t03 - Location: 121,19 - Owner: Neutral - Actor315: t06 - Location: 88,17 - Owner: Neutral - Actor312: t06 - Location: 110,24 - Owner: Neutral - Actor314: t06 - Location: 125,20 - Owner: Neutral - Actor307: t06 - Location: 119,50 - Owner: Neutral - Actor310: t06 - Location: 80,41 - Owner: Neutral - Actor323: t07 - Location: 113,76 - Owner: Neutral - Actor322: t07 - Location: 112,65 - Owner: Neutral - Actor246: t06 - Location: 94,64 - Owner: Neutral - Actor303: t06 - Location: 101,69 - Owner: Neutral - Actor234: t01 - Location: 79,77 - Owner: Neutral - Actor354: t11 - Location: 73,71 - Owner: Neutral - Actor212: barr - Location: 69,57 - Owner: Soviets - Actor365: tc04 - Location: 18,56 - Owner: Neutral - Actor196: t06 - Location: 129,52 - Owner: Neutral - Actor356: t11 - Location: 119,43 - Owner: Neutral - Actor360: t11 - Location: 122,76 - Owner: Neutral - Actor187: tc04 - Location: 99,27 - Owner: Neutral - Actor186: tc04 - Location: 79,34 - Owner: Neutral - Actor179: tc05 - Location: 59,43 - Owner: Neutral - Actor350: t10 - Location: 87,22 - Owner: Neutral - Actor17: proc - Location: 168,62 - Owner: Soviets - Actor291: t05 - Location: 91,33 - Owner: Neutral - Actor254: t02 - Location: 72,63 - Owner: Neutral - Actor43: t05 - Location: 58,62 - Owner: Neutral - Actor257: t02 - Location: 119,53 - Owner: Neutral - Actor8: e1 - Location: 26,46 - Owner: Allies - Actor264: t02 - Location: 127,17 - Owner: Neutral - Actor269: t03 - Location: 84,37 - Owner: Neutral - Actor271: t03 - Location: 79,57 - Owner: Neutral - SovietEntryPoint4: waypoint - Location: 115,16 - Owner: Neutral - Actor278: t03 - Location: 122,33 - Owner: Neutral - Actor221: tc01 - Location: 113,73 - Owner: Neutral - Actor215: t05 - Location: 72,40 - Owner: Neutral - Actor267: t02 - Location: 123,62 - Owner: Neutral - Actor253: t02 - Location: 118,77 - Owner: Neutral - Actor220: tc01 - Location: 117,40 - Owner: Neutral - Actor158: tc01 - Location: 23,35 - Owner: Neutral - Actor160: t06 - Location: 21,40 - Owner: Neutral - Actor164: t16 - Location: 18,41 - Owner: Neutral - Actor163: t05 - Location: 20,35 - Owner: Neutral - Actor211: tc02 - Location: 75,74 - Owner: Neutral - Actor174: apwr - Location: 58,45 - Owner: Soviets - Actor214: tc02 - Location: 79,47 - Owner: Neutral - Actor38: t15 - Location: 30,52 - Owner: Neutral - Actor407: t13 - Location: 32,62 - Owner: Neutral - Actor139: t01 - Location: 111,35 - Owner: Neutral - Actor410: t15 - Location: 17,55 - Owner: Neutral - Actor141: t14 - Location: 36,56 - Owner: Neutral - Actor386: t07 - Location: 30,62 - Owner: Neutral - Actor2: tc05 - Location: 153,77 - Owner: Neutral - Actor54: t01 - Location: 56,76 - Owner: Neutral - Actor391: t06 - Location: 25,75 - Owner: Neutral - Actor403: t01 - Location: 34,74 - Owner: Neutral - Actor402: t02 - Location: 21,65 - Owner: Neutral - Actor175: tc01 - Location: 62,44 - Owner: Neutral - Actor375: tc01 - Location: 20,61 - Owner: Neutral - Actor712: t07 - Location: 170,34 - Owner: Neutral - Actor0: mine - Location: 160,27 - Owner: Neutral - Actor385: t07 - Location: 17,58 - Owner: Neutral - Actor401: t02 - Location: 30,74 - Owner: Neutral - Actor400: t05 - Location: 32,69 - Owner: Neutral - Actor382: t16 - Location: 27,60 - Owner: Neutral - Actor374: tc01 - Location: 34,68 - Owner: Neutral - Actor376: tc01 - Location: 16,65 - Owner: Neutral - Actor409: t15 - Location: 24,67 - Owner: Neutral - Actor405: t03 - Location: 24,58 - Owner: Neutral - Actor373: tc01 - Location: 25,68 - Owner: Neutral - Actor406: t13 - Location: 35,72 - Owner: Neutral - Actor55: t01 - Location: 37,37 - Owner: Neutral - Actor760: t03 - Location: 175,27 - Owner: Neutral - Actor399: t05 - Location: 22,68 - Owner: Neutral - Actor408: t14 - Location: 20,59 - Owner: Neutral - Actor390: t07 - Location: 18,72 - Owner: Neutral - Actor767: t10 - Location: 158,15 - Owner: Neutral - Actor381: t16 - Location: 23,65 - Owner: Neutral - Actor775: t02 - Location: 171,15 - Owner: Neutral - Actor392: t06 - Location: 31,70 - Owner: Neutral - Actor366: tc03 - Location: 17,68 - Owner: Neutral - Actor368: tc03 - Location: 25,56 - Owner: Neutral - Actor780: t03 - Location: 79,39 - Owner: Neutral - Actor398: t05 - Location: 32,64 - Owner: Neutral - Actor796: t02 - Location: 154,40 - Owner: Neutral - SovietAirfield3: afld - Location: 154,67 - Owner: Soviets - Actor383: t16 - Location: 22,52 - Owner: Neutral - Actor372: tc02 - Location: 20,77 - Owner: Neutral - Exit1TopRight: waypoint - Location: 25,44 - Owner: Neutral - SovietEntryPoint5: waypoint - Location: 130,79 - Owner: Neutral - Actor804: t13 - Location: 125,68 - Owner: Neutral - SovietAirfield8: afld - Location: 62,51 - Owner: Soviets - Actor268: t03 - Location: 95,23 - Owner: Neutral - Actor812: tc03 - Location: 133,25 - Owner: Neutral - Actor818: t16 - Location: 138,15 - Owner: Neutral - Actor819: t16 - Location: 139,29 - Owner: Neutral - Actor820: t02 - Location: 147,16 - Owner: Neutral - Actor396: t05 - Location: 27,70 - Owner: Neutral - Actor387: t07 - Location: 22,63 - Owner: Neutral - Actor393: t06 - Location: 25,61 - Owner: Neutral - Actor32: t05 - Location: 42,40 - Owner: Neutral - Actor378: t16 - Location: 26,73 - Owner: Neutral - Actor31: t05 - Location: 53,51 - Owner: Neutral - Actor395: t06 - Location: 35,78 - Owner: Neutral - Actor826: t01 - Location: 136,15 - Owner: Neutral - Actor827: t01 - Location: 142,24 - Owner: Neutral - Actor829: t03 - Location: 146,15 - Owner: Neutral - Actor379: t16 - Location: 37,74 - Owner: Neutral - Actor411: t15 - Location: 31,77 - Owner: Neutral - Actor397: t05 - Location: 21,58 - Owner: Neutral - Actor394: t06 - Location: 18,52 - Owner: Neutral - Actor13: tc02 - Location: 38,61 - Owner: Neutral - Actor27: t05 - Location: 41,55 - Owner: Neutral - Actor377: t16 - Location: 16,78 - Owner: Neutral - Actor380: t16 - Location: 31,66 - Owner: Neutral - Actor845: t14 - Location: 136,21 - Owner: Neutral - Actor16: tc02 - Location: 52,39 - Owner: Neutral - Actor404: t03 - Location: 24,71 - Owner: Neutral - Actor389: t07 - Location: 25,71 - Owner: Neutral - Actor388: t07 - Location: 37,68 - Owner: Neutral - Actor412: t15 - Location: 28,73 - Owner: Neutral - Actor384: t07 - Location: 22,67 - Owner: Neutral - Actor26: t05 - Location: 45,72 - Owner: Neutral - Actor856: t16 - Location: 133,23 - Owner: Neutral - Actor15: tc04 - Location: 144,73 - Owner: Neutral - Actor861: t16 - Location: 128,62 - Owner: Neutral - Exit1ExitPoint: waypoint - Location: 16,47 - Owner: Neutral - Actor7: e1 - Location: 27,50 - Owner: Allies - Actor5: gun - Location: 28,51 - Owner: Allies - Actor6: gun - Location: 28,44 - Owner: Allies - Actor47: powr - Location: 3,37 - Owner: Allies - Actor45: 2tnk - Location: 28,28 - Owner: Allies - Actor35: gun - Location: 29,29 - Owner: Allies - Actor24: gun - Location: 25,30 - Owner: Allies - Actor41: e1 - Location: 30,28 - Owner: Allies - Actor4: jeep - Location: 27,45 - Owner: Allies - Actor40: e1 - Location: 24,30 - Owner: Allies - Actor46: powr - Location: 1,37 - Owner: Allies - Actor49: fenc - Location: 28,27 - Owner: Allies - Actor50: fenc - Location: 27,27 - Owner: Allies - Actor122: fenc - Location: 30,27 - Owner: Allies - Actor124: fenc - Location: 31,27 - Owner: Allies - Actor125: fenc - Location: 32,27 - Owner: Allies - Actor126: fenc - Location: 32,25 - Owner: Allies - Actor128: fenc - Location: 32,26 - Owner: Allies - Actor129: fenc - Location: 33,25 - Owner: Allies - Actor145: fenc - Location: 34,25 - Owner: Allies - Actor146: fenc - Location: 35,25 - Owner: Allies - Allies1MovePoint: waypoint - Location: 149,24 - Owner: Neutral - Allies1EntryPoint: waypoint - Location: 149,16 - Owner: Neutral - Allies2EntryPoint: waypoint - Location: 175,38 - Owner: Neutral - Exit2TopRight: waypoint - Location: 35,16 - Owner: Neutral - Exit2BottomLeft: waypoint - Location: 16,30 - Owner: Neutral - Exit2BottomRight: waypoint - Location: 35,30 - Owner: Neutral - Exit2TopLeft: waypoint - Location: 16,16 - Owner: Neutral - Exit2ExitPoint: waypoint - Location: 16,29 - Owner: Neutral - Actor255: ftur - Location: 68,45 - Owner: Soviets - SovietEntryPoint3: waypoint - Location: 105,79 - Owner: Neutral - SovietEntryPoint2: waypoint - Location: 93,16 - Owner: Neutral - SovietEntryPoint1: waypoint - Location: 89,79 - Owner: Neutral - SovietRallyPoint2: waypoint - Location: 93,20 - Owner: Neutral - SovietRallyPoint1: waypoint - Location: 89,75 - Owner: Neutral - SovietRallyPoint3: waypoint - Location: 105,75 - Owner: Neutral - SovietRallyPoint4: waypoint - Location: 115,20 - Owner: Neutral - SovietRallyPoint5: waypoint - Location: 130,75 - Owner: Neutral - Actor152: brl3 - Location: 157,66 - Owner: Soviets - Actor151: barl - Location: 159,58 - Owner: Soviets - Actor138: brl3 - Location: 154,58 - Owner: Soviets - Actor144: brl3 - Location: 159,59 - Owner: Soviets - Actor19: oilb - Location: 154,59 - Owner: Soviets - Actor22: oilb - Location: 157,57 - Owner: Soviets - Actor154: oilb - Location: 169,18 - Owner: Neutral - Actor159: oilb - Location: 172,22 - Owner: Neutral - Actor166: brl3 - Location: 171,18 - Owner: Neutral - Actor167: barl - Location: 173,24 - Owner: Neutral - Actor168: powr - Location: 1,34 - Owner: Allies - Actor183: powr - Location: 3,34 - Owner: Allies - Actor185: apwr - Location: 154,72 - Owner: Soviets - Actor190: ftur - Location: 160,53 - Owner: Soviets - Actor227: e3 - Location: 157,54 - Owner: Soviets - Actor225: e3 - Location: 148,68 - Owner: Soviets - Actor223: e1 - Location: 163,55 - Owner: Soviets - Actor209: fenc - Location: 156,52 - Owner: Soviets - Actor200: e1 - Location: 171,61 - Owner: Soviets - Actor201: e2 - Location: 165,64 - Owner: Soviets - Actor222: e2 - Location: 154,53 - Owner: Soviets - Actor216: fenc - Location: 154,52 - Owner: Soviets - Actor217: fenc - Location: 153,52 - Owner: Soviets - Actor219: fenc - Location: 152,52 - Owner: Soviets - Actor210: fenc - Location: 155,52 - Owner: Soviets - Actor188: brl3 - Location: 160,54 - Owner: Soviets - Actor189: ftur - Location: 147,64 - Owner: Soviets - Actor191: barl - Location: 160,55 - Owner: Soviets - SovietAirfield1: afld - Location: 151,69 - Owner: Soviets - SovietAirfield2: afld - Location: 154,69 - Owner: Soviets - Actor228: e3 - Location: 158,66 - Owner: Soviets - Actor241: barl - Location: 157,67 - Owner: Soviets - Actor242: barr - Location: 159,61 - Owner: Soviets - Actor56: tc01 - Location: 145,71 - Owner: Neutral - Actor237: dog - Location: 151,62 - Owner: Soviets - Actor11: e1 - Location: 149,64 - Owner: Soviets - Actor192: fenc - Location: 147,65 - Owner: Soviets - Actor244: e1 - Location: 160,60 - Owner: Soviets - Actor206: fenc - Location: 158,53 - Owner: Soviets - Actor18: apwr - Location: 149,72 - Owner: Soviets - Actor230: 3tnk - Location: 157,60 - Owner: Soviets - Actor231: kenn - Location: 162,59 - Owner: Soviets - Actor235: waypoint - Location: 147,51 - Owner: Neutral - Actor205: fenc - Location: 159,53 - Owner: Soviets - Actor207: fenc - Location: 158,52 - Owner: Soviets - Actor208: fenc - Location: 157,52 - Owner: Soviets - Actor204: fenc - Location: 147,70 - Owner: Soviets - Actor193: fenc - Location: 147,66 - Owner: Soviets - Actor195: fenc - Location: 147,67 - Owner: Soviets - Actor197: fenc - Location: 146,67 - Owner: Soviets - Actor199: fenc - Location: 146,69 - Owner: Soviets - Actor198: fenc - Location: 146,68 - Owner: Soviets - Actor202: fenc - Location: 147,69 - Owner: Soviets - Actor292: e2 - Location: 165,59 - Owner: Soviets - Actor232: t01 - Location: 72,43 - Owner: Neutral - Actor176: tc05 - Location: 69,46 - Owner: Neutral - Actor170: mine - Location: 114,55 - Owner: Neutral - Actor169: mine - Location: 113,57 - Owner: Neutral - Allies2MovePoint: waypoint - Location: 167,38 - Owner: Neutral - Actor3: silo - Location: 172,59 - Owner: Soviets - Actor33: fact - Location: 162,67 - Owner: Soviets - SovietEntryPoint6: waypoint - Location: 53,79 - Owner: Neutral - SovietRallyPoint6: waypoint - Location: 53,75 - Owner: Neutral - Actor171: mine - Location: 168,73 - Owner: Neutral - Actor248: ftur - Location: 64,44 - Owner: Soviets - SovietAirfield7: afld - Location: 62,49 - Owner: Soviets - Actor256: ftur - Location: 74,57 - Owner: Soviets - Actor273: brik - Location: 72,61 - Owner: Soviets - Actor44: t11 - Location: 57,54 - Owner: Neutral - Actor249: t11 - Location: 98,58 - Owner: Neutral - Actor245: tc05 - Location: 106,43 - Owner: Neutral - Actor233: ftur - Location: 75,54 - Owner: Soviets - Actor287: brik - Location: 72,60 - Owner: Soviets - Actor258: brik - Location: 71,61 - Owner: Soviets - Actor293: brik - Location: 70,61 - Owner: Soviets - Actor177: tc04 - Location: 59,50 - Owner: Neutral - Actor294: brik - Location: 72,59 - Owner: Soviets - Actor213: tsla - Location: 71,59 - Owner: Soviets - Actor295: brik - Location: 73,59 - Owner: Soviets - Actor180: v01.sniper - Location: 100,29 - Owner: Soviets - Actor218: v03 - Location: 90,30 - Owner: Neutral - Actor243: v02 - Location: 95,30 - Owner: Neutral - Actor247: v04 - Location: 102,30 - Owner: Neutral - Actor250: v07 - Location: 104,33 - Owner: Neutral - Actor252: v13 - Location: 101,33 - Owner: Neutral - Actor251: truk - Location: 105,30 - Owner: Neutral - Actor259: v18 - Location: 105,28 - Owner: Neutral - Actor260: v09 - Location: 110,30 - Owner: Neutral - Actor261: v08 - Location: 109,33 - Owner: Neutral - Actor262: v17 - Location: 104,28 - Owner: Neutral - Actor263: e1 - Location: 108,34 - Owner: Soviets - Actor265: e1 - Location: 97,30 - Owner: Soviets - Actor266: e1 - Location: 92,34 - Owner: Soviets - Actor270: e2 - Location: 102,33 - Owner: Soviets - Actor272: e3 - Location: 94,30 - Owner: Soviets - Actor275: e3 - Location: 100,31 - Owner: Soviets - Actor276: 3tnk - Location: 107,30 - Owner: Soviets - Actor277: dome - Location: 165,56 - Owner: Soviets - Actor281: ftur - Location: 166,51 - Owner: Soviets - Actor282: ftur - Location: 147,58 - Owner: Soviets - Actor286: t12 - Location: 154,65 - Owner: Neutral - Actor285: t05 - Location: 148,76 - Owner: Neutral - Actor288: tc02 - Location: 168,51 - Owner: Neutral - Actor240: mine - Location: 159,27 - Owner: Neutral - Actor290: mine - Location: 159,26 - Owner: Neutral - Actor297: brik - Location: 69,61 - Owner: Soviets - Actor299: brik - Location: 73,58 - Owner: Soviets - Actor300: brik - Location: 69,60 - Owner: Soviets - Actor301: brik - Location: 68,60 - Owner: Soviets - Actor304: e1 - Location: 63,59 - Owner: Soviets - Actor305: e1 - Location: 71,56 - Owner: Soviets - Actor306: e1 - Location: 66,46 - Owner: Soviets - Actor308: e2 - Location: 63,57 - Owner: Soviets - Actor309: e2 - Location: 69,51 - Owner: Soviets - Actor311: e1 - Location: 68,58 - Owner: Soviets - Actor313: e1 - Location: 63,46 - Owner: Soviets - Actor316: oilb - Location: 91,50 - Owner: Soviets - Actor317: oilb - Location: 91,53 - Owner: Soviets - Actor318: oilb - Location: 94,50 - Owner: Soviets - Actor319: oilb - Location: 94,53 - Owner: Soviets - Actor320: sbag - Location: 91,56 - Owner: Soviets - Actor321: sbag - Location: 93,56 - Owner: Soviets - Actor324: sbag - Location: 94,56 - Owner: Soviets - Actor325: sbag - Location: 95,56 - Owner: Soviets - Actor326: sbag - Location: 96,56 - Owner: Soviets - Actor327: sbag - Location: 92,56 - Owner: Soviets - Actor328: sbag - Location: 97,56 - Owner: Soviets - Actor330: sbag - Location: 97,55 - Owner: Soviets - Actor332: sbag - Location: 97,54 - Owner: Soviets - Actor334: sbag - Location: 97,53 - Owner: Soviets - Actor335: sbag - Location: 97,52 - Owner: Soviets - Actor336: sbag - Location: 97,51 - Owner: Soviets - Actor337: sbag - Location: 97,50 - Owner: Soviets - Actor339: e1 - Location: 96,49 - Owner: Soviets - Actor340: e1 - Location: 93,47 - Owner: Soviets - Actor341: e1 - Location: 89,56 - Owner: Soviets - Actor342: e2 - Location: 88,55 - Owner: Soviets - Actor343: apc - Location: 91,48 - Owner: Soviets - Actor344: 3tnk - Location: 67,52 - Owner: Soviets - Actor161: brl3 - Location: 93,50 - Owner: Soviets - Actor172: barl - Location: 90,55 - Owner: Soviets - ParadropBoxBottomRight: waypoint - Location: 170,72 - Owner: Neutral - ParadropBoxTopLeft: waypoint - Location: 78,27 - Owner: Neutral - Actor1000: camera.large - Location: 1,1 - Owner: Soviets - -Smudges: - -Rules: - Player: - -ConquestVictoryConditions: - World: - -CrateSpawner: - -SpawnMPUnits: - -MPStartLocations: - Allies03Script: - MissionObjectivesPanel: - ObjectivesPanel: MISSION_OBJECTIVES - YAK: - Buildable: - Owner: soviet, allies - E7: - Buildable: - Owner: None - TRAN: - Buildable: - Owner: None - BARR: - Buildable: - Owner: None - MIG: - Buildable: - Owner: None - HELI: - Buildable: - Owner: None - HIND: - Buildable: - Owner: None - SS: - Buildable: - Owner: None - ARTY: - Buildable: - Owner: None - AGUN: - Buildable: - Owner: None - MSUB: - Buildable: - Owner: None - DD: - Buildable: - Owner: None - CA: - Buildable: - Owner: None - PT: - Buildable: - Owner: None - MSLO: - Buildable: - Owner: None - SPEN: - Buildable: - Owner: None - SYRD: - Buildable: - Owner: None - IRON: - Buildable: - Owner: None - PDOX: - Buildable: - Owner: None - TSLA: - Buildable: - Owner: None - FTUR: - Buildable: - Owner: None - SAM: - Buildable: - Owner: None - HPAD: - Buildable: - Owner: None - AFLD: - Buildable: - Owner: None - ATEK: - Buildable: - Owner: None - STEK: - Buildable: - Owner: None - 4TNK: - Buildable: - Owner: None - MCV: - Buildable: - Owner: None - APC: - Buildable: - Owner: None - MNLY.AP: - Buildable: - Owner: None - MNLY.AT: - Buildable: - Owner: None - TRUK: - Buildable: - Owner: None - TTNK: - Buildable: - Owner: None - FTRK: - Buildable: - Owner: None - CTNK: - Buildable: - Owner: None - MRJ: - Buildable: - Owner: None - MGG: - Buildable: - Owner: None - CreatesShroud: - Range: 6c0 - GAP: - Buildable: - Owner: None - CAMERA.Large: - Inherits: CAMERA - RevealsShroud: - Range: 1000c0 - -Sequences: - -VoxelSequences: - -Weapons: - -Voices: - -Notifications: - -Translations: diff --git a/mods/ra/maps/allies-04/map.bin b/mods/ra/maps/allies-04/map.bin deleted file mode 100644 index ea6cf8e118bc138a11c08b6056b99b59e7cd9785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81925 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 YATSUZ2n+-U0t118z(8Oiu$RDp0~{aYfB*mh diff --git a/mods/ra/maps/allies-04/map.yaml b/mods/ra/maps/allies-04/map.yaml deleted file mode 100644 index b57b929b5e..0000000000 --- a/mods/ra/maps/allies-04/map.yaml +++ /dev/null @@ -1,2004 +0,0 @@ -Selectable: True - -MapFormat: 6 - -RequiresMod: ra - -Title: Allies 04 - -Description: Allies' fourth mission - -Author: Scott_NZ - -Tileset: TEMPERAT - -MapSize: 128,128 - -Bounds: 16,16,96,96 - -UseAsShellmap: False - -Type: Campaign - -Options: - Crates: False - Fog: True - Shroud: True - AllyBuildRadius: False - FragileAlliances: False - StartingCash: 5000 - ConfigurableStartingUnits: False - Difficulties: Easy,Normal,Hard - -Players: - PlayerReference@Neutral: - Name: Neutral - OwnsWorld: True - NonCombatant: True - Race: allies - PlayerReference@Creeps: - Name: Creeps - NonCombatant: True - Race: allies - Enemies: Soviets - PlayerReference@Allies1: - Name: Allies1 - Playable: True - AllowBots: False - Required: True - LockRace: True - Race: allies - LockColor: True - ColorRamp: 161,134,200 - LockSpawn: True - LockTeam: True - Allies: Allies2,Allies - Enemies: Soviets - PlayerReference@Allies2: - Name: Allies2 - Playable: True - AllowBots: False - LockRace: True - Race: allies - LockColor: True - ColorRamp: 76,196,190 - LockSpawn: True - LockTeam: True - Allies: Allies1,Allies - Enemies: Soviets - PlayerReference@Allies: - Name: Allies - Race: allies - ColorRamp: 115,115,143 - Allies: Allies1,Allies2 - Enemies: Soviets - PlayerReference@Soviets: - Name: Soviets - Race: soviet - ColorRamp: 3,255,127 - Enemies: Allies1,Allies2,Allies,Creeps - -Actors: - Actor2: v07 - Location: 58,83 - Owner: Creeps - Actor1: v05 - Location: 54,89 - Owner: Creeps - Actor56: t01 - Location: 68,97 - Owner: Neutral - Actor5: v03 - Location: 66,84 - Owner: Creeps - Actor25: t16 - Location: 69,64 - Owner: Neutral - Actor68: t08 - Location: 65,93 - Owner: Neutral - Actor26: tc04 - Location: 69,61 - Owner: Neutral - Actor27: t02 - Location: 68,63 - Owner: Neutral - Actor28: t07 - Location: 67,78 - Owner: Neutral - Actor30: t08 - Location: 81,88 - Owner: Neutral - Actor31: t14 - Location: 84,88 - Owner: Neutral - Actor33: t10 - Location: 73,83 - Owner: Neutral - Actor8: v07 - Location: 66,95 - Owner: Creeps - Actor0: v04 - Location: 58,90 - Owner: Creeps - Actor41: t12 - Location: 73,69 - Owner: Neutral - Actor44: t13 - Location: 83,78 - Owner: Neutral - Actor47: v01 - Location: 70,84 - Owner: Creeps - Actor10: v02 - Location: 73,90 - Owner: Creeps - Actor236: sbag - Location: 66,36 - Owner: Soviets - Actor233: sbag - Location: 66,35 - Owner: Soviets - Actor235: sbag - Location: 68,35 - Owner: Soviets - Actor234: sbag - Location: 67,35 - Owner: Soviets - Actor222: hpad - Location: 56,36 - Owner: Soviets - Actor57: t07 - Location: 74,64 - Owner: Neutral - Actor49: tc02 - Location: 63,79 - Owner: Neutral - Actor75: t17 - Location: 84,95 - Owner: Neutral - Actor48: t14 - Location: 63,90 - Owner: Neutral - Actor66: tc03 - Location: 87,89 - Owner: Neutral - Actor77: mine - Location: 96,85 - Owner: Neutral - Actor78: tc04 - Location: 103,78 - Owner: Neutral - Actor80: t07 - Location: 81,81 - Owner: Neutral - Actor81: t06 - Location: 111,82 - Owner: Neutral - Actor82: t03 - Location: 110,76 - Owner: Neutral - Actor84: tc02 - Location: 94,75 - Owner: Neutral - Actor9: v01 - Location: 64,94 - Owner: Creeps - Actor53: powr - Location: 86,65 - Owner: Soviets - Actor113: tc05 - Location: 86,59 - Owner: Neutral - Actor51: barr - Location: 93,70 - Owner: Soviets - Lab: miss - Location: 34,30 - Owner: Soviets - Actor45: brik - Location: 39,34 - Owner: Soviets - Actor43: brik - Location: 39,33 - Owner: Soviets - Actor42: brik - Location: 39,32 - Owner: Soviets - Actor39: brik - Location: 39,31 - Owner: Soviets - Actor38: brik - Location: 39,30 - Owner: Soviets - Actor34: brik - Location: 38,28 - Owner: Soviets - Actor36: brik - Location: 39,29 - Owner: Soviets - Actor494: e4 - Location: 98,38 - Owner: Soviets - Actor495: e4 - Location: 48,34 - Owner: Soviets - Actor58: brik - Location: 32,28 - Owner: Soviets - Actor35: brik - Location: 39,28 - Owner: Soviets - Actor110: e1 - Location: 33,28 - Owner: Soviets - Actor60: apwr - Location: 44,46 - Owner: Soviets - Actor22: brik - Location: 32,34 - Owner: Soviets - Actor95: brik - Location: 32,29 - Owner: Soviets - Actor97: brik - Location: 32,30 - Owner: Soviets - Actor98: brik - Location: 32,31 - Owner: Soviets - Actor100: brik - Location: 32,33 - Owner: Soviets - Actor263: 3tnk - Location: 37,35 - Owner: Soviets - Actor138: e2 - Location: 39,37 - Owner: Soviets - Actor99: brik - Location: 32,32 - Owner: Soviets - Actor106: hpad - Location: 34,42 - Owner: Soviets - Actor21: brik - Location: 33,34 - Owner: Soviets - Actor14: brik - Location: 32,35 - Owner: Soviets - Actor55: brik - Location: 32,26 - Owner: Soviets - Actor40: apwr - Location: 44,43 - Owner: Soviets - Actor69: barr - Location: 60,33 - Owner: Soviets - Actor96: barr - Location: 107,36 - Owner: Soviets - Actor94: barr - Location: 39,41 - Owner: Soviets - Actor102: ftur - Location: 46,39 - Owner: Soviets - Actor4: brik - Location: 38,34 - Owner: Soviets - Actor121: e1 - Location: 100,21 - Owner: Soviets - Actor59: sam - Location: 47,60 - Owner: Soviets - TurretFacing: 160 - Actor61: apwr - Location: 45,49 - Owner: Soviets - Actor62: apwr - Location: 46,52 - Owner: Soviets - Actor29: brik - Location: 35,26 - Owner: Soviets - Actor87: tsla - Location: 31,61 - Owner: Soviets - Actor76: ftur - Location: 78,22 - Owner: Soviets - Actor83: ftur - Location: 67,34 - Owner: Soviets - Actor73: spen - Location: 31,82 - Owner: Soviets - Actor37: dome - Location: 44,57 - Owner: Soviets - Actor65: sam - Location: 50,37 - Owner: Soviets - TurretFacing: 192 - Actor70: spen - Location: 39,71 - Owner: Soviets - Actor71: spen - Location: 25,68 - Owner: Soviets - Actor64: sam - Location: 28,43 - Owner: Soviets - TurretFacing: 48 - Actor72: spen - Location: 23,76 - Owner: Soviets - Actor88: tsla - Location: 49,25 - Owner: Soviets - Actor67: fact - Location: 42,52 - Owner: Soviets - Actor85: kenn - Location: 58,32 - Owner: Soviets - Actor86: tsla - Location: 49,32 - Owner: Soviets - Actor89: tsla - Location: 37,65 - Owner: Soviets - Actor90: tsla - Location: 40,37 - Owner: Soviets - Actor91: tsla - Location: 43,49 - Owner: Soviets - Actor103: afld - Location: 34,51 - Owner: Soviets - Actor20: fcom - Location: 39,50 - Owner: Soviets - Actor18: afld - Location: 34,45 - Owner: Soviets - Actor79: afld - Location: 34,47 - Owner: Soviets - Actor74: ftur - Location: 31,36 - Owner: Soviets - Actor32: brik - Location: 34,26 - Owner: Soviets - Actor104: tsla - Location: 28,80 - Owner: Soviets - Actor493: e4 - Location: 102,24 - Owner: Soviets - Actor274: e3 - Location: 34,41 - Owner: Soviets - Actor452: e4 - Location: 34,32 - Owner: Soviets - Actor112: fenc - Location: 96,39 - Owner: Soviets - Actor15: brik - Location: 33,35 - Owner: Soviets - Actor105: tsla - Location: 71,33 - Owner: Soviets - Actor126: e1 - Location: 109,22 - Owner: Soviets - Actor107: hpad - Location: 36,42 - Owner: Soviets - Actor129: kenn - Location: 110,37 - Owner: Soviets - Actor108: stek - Location: 38,55 - Owner: Soviets - Actor7: brik - Location: 38,35 - Owner: Soviets - Actor46: brik - Location: 33,26 - Owner: Soviets - Actor6: brik - Location: 39,35 - Owner: Soviets - Actor117: fenc - Location: 98,39 - Owner: Soviets - Actor116: fenc - Location: 97,39 - Owner: Soviets - Actor111: fenc - Location: 95,37 - Owner: Soviets - Actor16: fenc - Location: 95,38 - Owner: Soviets - Actor13: fenc - Location: 95,39 - Owner: Soviets - Actor120: e1 - Location: 107,41 - Owner: Soviets - Actor119: e1 - Location: 99,41 - Owner: Soviets - Actor279: dog - Location: 101,38 - Owner: Soviets - Actor151: fenc - Location: 111,39 - Owner: Soviets - Actor125: fenc - Location: 110,39 - Owner: Soviets - Actor124: fenc - Location: 109,39 - Owner: Soviets - Actor127: fenc - Location: 99,39 - Owner: Soviets - Actor148: e1 - Location: 92,20 - Owner: Soviets - Actor128: ftur - Location: 42,61 - Owner: Soviets - Actor93: afld - Location: 34,49 - Owner: Soviets - Actor101: kenn - Location: 41,47 - Owner: Soviets - Actor133: apwr - Location: 97,16 - Owner: Soviets - Actor131: apwr - Location: 107,16 - Owner: Soviets - Actor132: apwr - Location: 107,19 - Owner: Soviets - Actor130: apwr - Location: 101,16 - Owner: Soviets - Actor134: proc - Location: 106,30 - Owner: Soviets - Actor135: fix - Location: 102,25 - Owner: Soviets - Actor136: dome - Location: 107,25 - Owner: Soviets - HijackFactory: weap - Location: 98,32 - Owner: Soviets - Actor12: sam - Location: 34,27 - Owner: Soviets - Actor297: v08 - Location: 68,95 - Owner: Creeps - Actor142: fenc - Location: 91,16 - Owner: Soviets - Actor141: fenc - Location: 91,17 - Owner: Soviets - Actor140: fenc - Location: 91,18 - Owner: Soviets - Actor139: fenc - Location: 91,19 - Owner: Soviets - Actor145: ftur - Location: 90,23 - Owner: Soviets - Actor146: ftur - Location: 90,19 - Owner: Soviets - Actor147: e1 - Location: 92,23 - Owner: Soviets - Actor118: ftur - Location: 99,40 - Owner: Soviets - Actor149: fact - Location: 95,25 - Owner: Soviets - Actor304: 3tnk - Location: 106,38 - Owner: Soviets - Facing: 96 - Actor488: t02 - Location: 110,28 - Owner: Neutral - Actor123: fenc - Location: 108,39 - Owner: Soviets - Actor153: apwr - Location: 101,19 - Owner: Soviets - Actor154: apwr - Location: 93,16 - Owner: Soviets - Actor155: powr - Location: 45,41 - Owner: Soviets - Actor156: apwr - Location: 47,55 - Owner: Soviets - Actor157: tc02 - Location: 27,46 - Owner: Neutral - Actor158: t12 - Location: 26,46 - Owner: Neutral - Actor159: tc05 - Location: 23,45 - Owner: Neutral - Actor160: tc04 - Location: 23,43 - Owner: Neutral - Actor161: e1 - Location: 22,42 - Owner: Soviets - Actor162: t12 - Location: 22,39 - Owner: Neutral - Actor163: t03 - Location: 24,36 - Owner: Neutral - Actor164: t01 - Location: 23,38 - Owner: Neutral - Actor165: t15 - Location: 23,36 - Owner: Neutral - Actor166: tc05 - Location: 22,33 - Owner: Neutral - Actor167: t02 - Location: 25,31 - Owner: Neutral - Actor168: t03 - Location: 26,26 - Owner: Neutral - Actor169: tc04 - Location: 28,19 - Owner: Neutral - Actor170: t11 - Location: 25,28 - Owner: Neutral - Actor171: tc02 - Location: 23,30 - Owner: Neutral - Actor172: tc05 - Location: 26,24 - Owner: Neutral - Actor173: t01 - Location: 28,21 - Owner: Neutral - Actor174: t03 - Location: 31,20 - Owner: Neutral - Actor63: apwr - Location: 32,53 - Owner: Soviets - Actor176: tc02 - Location: 50,62 - Owner: Neutral - Actor177: tc01 - Location: 52,51 - Owner: Neutral - Actor178: t17 - Location: 51,44 - Owner: Neutral - Actor179: t07 - Location: 30,39 - Owner: Neutral - Actor175: sam - Location: 30,58 - Owner: Soviets - TurretFacing: 96 - Actor181: t12 - Location: 27,54 - Owner: Neutral - Actor182: t08 - Location: 28,56 - Owner: Neutral - Actor183: t06 - Location: 47,25 - Owner: Neutral - Actor184: t05 - Location: 41,26 - Owner: Neutral - Actor185: tc02 - Location: 43,22 - Owner: Neutral - Actor186: tc05 - Location: 49,20 - Owner: Neutral - Actor187: t15 - Location: 44,19 - Owner: Neutral - Actor188: tc05 - Location: 46,21 - Owner: Neutral - Actor189: tc04 - Location: 41,20 - Owner: Neutral - Actor190: t03 - Location: 37,20 - Owner: Neutral - Actor191: tc04 - Location: 54,38 - Owner: Neutral - Actor192: tc05 - Location: 59,38 - Owner: Neutral - Actor193: tc02 - Location: 49,45 - Owner: Neutral - Actor194: t03 - Location: 54,40 - Owner: Neutral - Actor195: t03 - Location: 35,72 - Owner: Neutral - Actor196: tc01 - Location: 30,71 - Owner: Neutral - Actor197: t08 - Location: 27,79 - Owner: Neutral - Actor198: t15 - Location: 52,57 - Owner: Neutral - Actor199: tc01 - Location: 49,34 - Owner: Neutral - Actor200: t11 - Location: 28,28 - Owner: Neutral - Actor201: t07 - Location: 38,64 - Owner: Neutral - Actor202: t06 - Location: 50,54 - Owner: Neutral - Actor203: t12 - Location: 60,31 - Owner: Neutral - Actor204: tc02 - Location: 74,16 - Owner: Neutral - Actor205: t07 - Location: 69,19 - Owner: Neutral - Actor206: tc04 - Location: 87,16 - Owner: Neutral - Actor207: tc05 - Location: 84,16 - Owner: Neutral - Actor208: tc03 - Location: 82,18 - Owner: Neutral - Actor209: t16 - Location: 84,18 - Owner: Neutral - Actor210: tc02 - Location: 82,15 - Owner: Neutral - Actor211: t02 - Location: 74,18 - Owner: Neutral - Actor212: t01 - Location: 92,29 - Owner: Neutral - Actor213: t16 - Location: 102,22 - Owner: Neutral - Actor214: silo - Location: 109,29 - Owner: Soviets - Actor215: t01 - Location: 96,36 - Owner: Neutral - Actor216: mine - Location: 103,57 - Owner: Neutral - Actor218: fenc - Location: 81,65 - Owner: Soviets - Actor219: fenc - Location: 81,66 - Owner: Soviets - Actor220: fenc - Location: 81,67 - Owner: Soviets - Actor221: 4tnk - Location: 39,46 - Owner: Soviets - Facing: 0 - Actor228: brik - Location: 102,34 - Owner: Soviets - Actor514: brik - Location: 103,34 - Owner: Soviets - Actor227: e1 - Location: 98,28 - Owner: Soviets - Actor226: fenc - Location: 95,35 - Owner: Soviets - Actor225: fenc - Location: 95,36 - Owner: Soviets - Actor224: 4tnk - Location: 103,30 - Owner: Soviets - Actor144: 4tnk - Location: 42,58 - Owner: Soviets - Actor52: hpad - Location: 83,65 - Owner: Soviets - Actor387: powr - Location: 89,64 - Owner: Soviets - Actor231: e1 - Location: 104,40 - Owner: Soviets - Actor238: sbag - Location: 65,37 - Owner: Soviets - Actor237: sbag - Location: 66,37 - Owner: Soviets - Actor229: v2rl - Location: 96,19 - Owner: Soviets - Facing: 64 - Actor137: e1 - Location: 66,34 - Owner: Soviets - Actor50: fenc - Location: 81,68 - Owner: Soviets - Actor242: ftur - Location: 90,74 - Owner: Soviets - Actor241: fenc - Location: 93,74 - Owner: Soviets - Actor240: fenc - Location: 94,74 - Owner: Soviets - Actor239: fenc - Location: 95,74 - Owner: Soviets - Actor232: fenc - Location: 96,74 - Owner: Soviets - Actor244: sbag - Location: 64,37 - Owner: Soviets - Actor245: e3 - Location: 67,36 - Owner: Soviets - Actor246: e3 - Location: 63,38 - Owner: Soviets - Actor247: e1 - Location: 69,34 - Owner: Soviets - Actor248: e1 - Location: 57,35 - Owner: Soviets - Actor249: e1 - Location: 59,33 - Owner: Soviets - Actor250: e1 - Location: 47,31 - Owner: Soviets - Actor251: e1 - Location: 42,38 - Owner: Soviets - Actor252: e1 - Location: 46,38 - Owner: Soviets - Actor253: e1 - Location: 49,27 - Owner: Soviets - Actor254: e1 - Location: 37,64 - Owner: Soviets - Actor255: e1 - Location: 32,63 - Owner: Soviets - Actor256: e1 - Location: 40,58 - Owner: Soviets - Actor257: e1 - Location: 44,61 - Owner: Soviets - Actor322: v2rl - Location: 36,57 - Owner: Soviets - Actor259: e1 - Location: 43,48 - Owner: Soviets - Actor260: e1 - Location: 37,45 - Owner: Soviets - Actor261: e1 - Location: 31,40 - Owner: Soviets - Actor262: e1 - Location: 37,31 - Owner: Soviets - Actor17: brik - Location: 37,28 - Owner: Soviets - Actor264: v2rl - Location: 50,36 - Owner: Soviets - Facing: 192 - Actor266: 3tnk - Location: 88,70 - Owner: Soviets - Actor268: dog - Location: 64,34 - Owner: Soviets - Actor269: dog - Location: 44,38 - Owner: Soviets - Actor180: apwr - Location: 31,59 - Owner: Soviets - Actor270: dog - Location: 43,60 - Owner: Soviets - Actor265: 3tnk - Location: 90,46 - Owner: Soviets - Actor271: dog - Location: 37,40 - Owner: Soviets - Actor122: fenc - Location: 107,39 - Owner: Soviets - Actor152: ftur - Location: 107,40 - Owner: Soviets - Actor275: tc02 - Location: 74,48 - Owner: Neutral - Actor276: t03 - Location: 91,43 - Owner: Neutral - Actor277: dog.patrol - Location: 37,32 - Owner: Soviets - Actor272: 3tnk - Location: 102,37 - Owner: Soviets - Facing: 160 - Actor280: t16 - Location: 87,41 - Owner: Neutral - Actor281: tc02 - Location: 85,42 - Owner: Neutral - Actor282: t02 - Location: 85,48 - Owner: Neutral - Actor283: t13 - Location: 72,54 - Owner: Neutral - Actor284: t03 - Location: 84,56 - Owner: Neutral - Actor285: tc02 - Location: 109,52 - Owner: Neutral - Actor286: t03 - Location: 110,61 - Owner: Neutral - Actor287: t07 - Location: 100,62 - Owner: Neutral - Actor288: t06 - Location: 91,53 - Owner: Neutral - Actor289: t13 - Location: 81,47 - Owner: Neutral - Actor290: t12 - Location: 110,42 - Owner: Neutral - Actor291: t02 - Location: 102,49 - Owner: Neutral - Actor292: tc04 - Location: 87,38 - Owner: Neutral - Actor293: t02 - Location: 86,40 - Owner: Neutral - Actor294: t11 - Location: 89,42 - Owner: Neutral - Actor295: t07 - Location: 84,40 - Owner: Neutral - PatrolPoint22: waypoint - Location: 92,49 - Owner: Neutral - Actor515: wood - Location: 66,100 - Owner: Neutral - Actor298: t01 - Location: 90,61 - Owner: Neutral - Actor299: t13 - Location: 108,66 - Owner: Neutral - Actor300: dog - Location: 41,49 - Owner: Soviets - Actor338: ss - Location: 57,64 - Owner: Soviets - Actor301: mine - Location: 101,55 - Owner: Neutral - Actor337: ss - Location: 19,80 - Owner: Soviets - Actor316: ss - Location: 32,92 - Owner: Soviets - Actor336: ss - Location: 46,80 - Owner: Soviets - Actor308: tc02 - Location: 78,104 - Owner: Neutral - Actor309: t15 - Location: 72,101 - Owner: Neutral - Actor310: oilb - Location: 77,17 - Owner: Soviets - Actor307: tc02 - Location: 82,97 - Owner: Neutral - Actor311: oilb - Location: 32,76 - Owner: Soviets - Actor114: c1 - Location: 69,84 - Owner: Creeps - Actor217: c3 - Location: 63,96 - Owner: Creeps - Actor54: c1 - Location: 67,99 - Owner: Creeps - Actor302: tsla - Location: 103,34 - Owner: Soviets - Actor317: e2 - Location: 106,26 - Owner: Soviets - Actor318: e2 - Location: 94,20 - Owner: Soviets - Actor319: e3 - Location: 97,29 - Owner: Soviets - Actor320: e3 - Location: 109,27 - Owner: Soviets - Actor321: e3 - Location: 48,36 - Owner: Soviets - Actor267: dog - Location: 35,61 - Owner: Soviets - Actor323: e3 - Location: 30,43 - Owner: Soviets - Actor324: e3 - Location: 38,30 - Owner: Soviets - Actor325: e2 - Location: 32,36 - Owner: Soviets - Actor326: e2 - Location: 62,35 - Owner: Soviets - Actor327: e2 - Location: 37,48 - Owner: Soviets - Actor329: e2 - Location: 46,28 - Owner: Soviets - Actor330: e2 - Location: 35,67 - Owner: Soviets - Actor331: e1 - Location: 27,78 - Owner: Soviets - Actor332: e2 - Location: 29,79 - Owner: Soviets - Actor333: e1 - Location: 75,22 - Owner: Soviets - Actor334: e2 - Location: 101,29 - Owner: Soviets - Actor335: e2 - Location: 77,20 - Owner: Soviets - SpyReinforcementsExitPoint: waypoint - Location: 48,111 - Owner: Neutral - Actor305: ss - Location: 19,101 - Owner: Soviets - Actor258: apwr - Location: 32,56 - Owner: Soviets - Actor340: v09 - Location: 72,86 - Owner: Creeps - Actor339: e1 - Location: 21,35 - Owner: Soviets - Actor342: v05 - Location: 68,88 - Owner: Creeps - Actor341: e1 - Location: 24,27 - Owner: Soviets - Actor344: v08 - Location: 65,99 - Owner: Creeps - Actor345: v16 - Location: 59,97 - Owner: Neutral - Actor346: v18 - Location: 60,97 - Owner: Neutral - Actor347: v17 - Location: 61,97 - Owner: Neutral - Actor348: v06 - Location: 60,96 - Owner: Creeps - Actor349: v14 - Location: 66,83 - Owner: Neutral - Actor351: t11 - Location: 62,100 - Owner: Neutral - Actor352: tc04 - Location: 55,94 - Owner: Neutral - Actor353: tc03 - Location: 56,96 - Owner: Neutral - Actor354: t12 - Location: 68,99 - Owner: Neutral - Actor355: tc01 - Location: 66,93 - Owner: Neutral - Actor356: tc02 - Location: 66,89 - Owner: Neutral - Actor357: t10 - Location: 60,88 - Owner: Neutral - Actor358: t14 - Location: 59,87 - Owner: Neutral - Actor359: tc04 - Location: 58,88 - Owner: Neutral - Actor360: tc02 - Location: 58,80 - Owner: Neutral - Actor361: tc01 - Location: 79,92 - Owner: Neutral - Actor362: t07 - Location: 77,89 - Owner: Neutral - Actor363: t02 - Location: 77,84 - Owner: Neutral - Actor364: t01 - Location: 73,91 - Owner: Neutral - Actor273: v10 - Location: 58,86 - Owner: Creeps - Actor343: e1 - Location: 28,49 - Owner: Soviets - Actor367: e1 - Location: 27,60 - Owner: Soviets - Actor368: t02 - Location: 75,92 - Owner: Neutral - Actor369: tc03 - Location: 75,84 - Owner: Neutral - Actor370: t16 - Location: 99,98 - Owner: Neutral - Actor371: t02 - Location: 110,92 - Owner: Neutral - Actor372: t08 - Location: 89,96 - Owner: Neutral - Actor373: tc03 - Location: 94,100 - Owner: Neutral - Actor374: wood - Location: 67,100 - Owner: Neutral - Actor375: e1 - Location: 89,47 - Owner: Soviets - Actor376: e1 - Location: 91,46 - Owner: Soviets - Actor377: dog - Location: 91,48 - Owner: Soviets - Actor378: t10 - Location: 81,74 - Owner: Neutral - Actor379: tc02 - Location: 100,75 - Owner: Neutral - Actor380: tc05 - Location: 99,72 - Owner: Neutral - Actor381: tc04 - Location: 103,74 - Owner: Neutral - Actor382: tc03 - Location: 104,72 - Owner: Neutral - Actor383: tc02 - Location: 109,65 - Owner: Neutral - Actor384: t07 - Location: 103,65 - Owner: Neutral - Actor385: t06 - Location: 91,64 - Owner: Neutral - Actor386: t05 - Location: 100,68 - Owner: Neutral - Actor243: ftur - Location: 81,69 - Owner: Soviets - Actor223: e3 - Location: 39,53 - Owner: Soviets - Actor278: ftur - Location: 37,58 - Owner: Soviets - Actor391: ftur - Location: 94,66 - Owner: Soviets - Actor392: e1 - Location: 83,69 - Owner: Soviets - Actor393: e1 - Location: 90,76 - Owner: Soviets - Actor394: e1 - Location: 92,67 - Owner: Soviets - Actor395: e2 - Location: 88,67 - Owner: Soviets - Actor396: e2 - Location: 85,75 - Owner: Soviets - Actor397: e1 - Location: 96,72 - Owner: Soviets - Actor398: e1 - Location: 89,71 - Owner: Soviets - Actor399: tsla - Location: 94,22 - Owner: Soviets - Actor400: e1 - Location: 49,66 - Owner: Soviets - Actor401: tsla - Location: 31,42 - Owner: Soviets - Actor402: ftur - Location: 26,40 - Owner: Soviets - Actor328: v2rl - Location: 27,37 - Owner: Soviets - Facing: 64 - Actor366: powr - Location: 35,54 - Owner: Soviets - Actor403: powr - Location: 56,31 - Owner: Soviets - SpyReinforcementsEntryPoint: waypoint - Location: 16,107 - Owner: Neutral - Actor404: ss - Location: 80,33 - Owner: Soviets - Actor405: ss - Location: 65,47 - Owner: Soviets - Actor406: ss - Location: 20,56 - Owner: Soviets - Actor312: t17 - Location: 88,100 - Owner: Neutral - PatrolPoint13: waypoint - Location: 81,86 - Owner: Neutral - PatrolPoint12: waypoint - Location: 74,78 - Owner: Neutral - PatrolPoint11: waypoint - Location: 77,70 - Owner: Neutral - PatrolPoint15: waypoint - Location: 88,73 - Owner: Neutral - PatrolPoint14: waypoint - Location: 91,83 - Owner: Neutral - PatrolPoint21: waypoint - Location: 105,45 - Owner: Neutral - PatrolPoint23: waypoint - Location: 78,53 - Owner: Neutral - PatrolPoint24: waypoint - Location: 92,56 - Owner: Neutral - PatrolPoint25: waypoint - Location: 106,53 - Owner: Neutral - Actor409: e1 - Location: 76,59 - Owner: Soviets - Actor410: v2rl - Location: 74,59 - Owner: Soviets - Actor3: dog - Location: 74,52 - Owner: Soviets - Actor416: dog - Location: 82,73 - Owner: Soviets - Actor413: sbag - Location: 75,60 - Owner: Soviets - Actor414: sbag - Location: 74,60 - Owner: Soviets - Actor412: proc - Location: 84,68 - Owner: Soviets - Actor472: brl3 - Location: 77,101 - Owner: Soviets - Actor417: sbag - Location: 73,60 - Owner: Soviets - Actor296: kenn - Location: 90,68 - Owner: Soviets - Actor303: e2 - Location: 100,38 - Owner: Soviets - Actor408: dog - Location: 108,42 - Owner: Soviets - Actor418: dog - Location: 109,74 - Owner: Soviets - Actor419: e1 - Location: 108,75 - Owner: Soviets - Actor420: e1 - Location: 110,75 - Owner: Soviets - Actor421: sbag - Location: 108,73 - Owner: Soviets - Actor422: sbag - Location: 109,73 - Owner: Soviets - Actor423: sbag - Location: 110,73 - Owner: Soviets - Actor424: sbag - Location: 111,73 - Owner: Soviets - PatrolPoint43: waypoint - Location: 109,51 - Owner: Neutral - PatrolPoint42: waypoint - Location: 109,44 - Owner: Neutral - PatrolPoint41: waypoint - Location: 102,41 - Owner: Neutral - PatrolPoint45: waypoint - Location: 93,42 - Owner: Neutral - PatrolPoint44: waypoint - Location: 96,53 - Owner: Neutral - Actor425: dog - Location: 79,22 - Owner: Soviets - Actor426: dog - Location: 93,19 - Owner: Soviets - Actor427: dog - Location: 104,24 - Owner: Soviets - HijackTruck: truk.hijackable - Location: 99,34 - Owner: Soviets - Facing: 160 - BaseGuard: e1 - Location: 63,36 - Owner: Soviets - Actor429: cycl - Location: 63,33 - Owner: Soviets - Actor428: cycl - Location: 63,34 - Owner: Soviets - Actor230: cycl - Location: 63,35 - Owner: Soviets - Actor430: sbag - Location: 68,34 - Owner: Soviets - Actor431: sbag - Location: 68,33 - Owner: Soviets - Actor432: cycl - Location: 63,32 - Owner: Soviets - Actor433: sbag - Location: 63,37 - Owner: Soviets - BaseGuardMovePos: waypoint - Location: 62,37 - Owner: Neutral - BaseGuardTruckPos: waypoint - Location: 64,36 - Owner: Neutral - Actor411: e2 - Location: 73,53 - Owner: Soviets - Actor434: e1 - Location: 94,54 - Owner: Soviets - Actor435: dog - Location: 95,54 - Owner: Soviets - Actor436: e1 - Location: 82,44 - Owner: Soviets - Actor437: e1 - Location: 80,43 - Owner: Soviets - Actor438: dog - Location: 81,43 - Owner: Soviets - Actor439: e1 - Location: 109,48 - Owner: Soviets - Actor440: dog - Location: 108,48 - Owner: Soviets - Actor441: 3tnk - Location: 108,47 - Owner: Soviets - Actor442: brl3 - Location: 82,65 - Owner: Soviets - Actor443: brl3 - Location: 82,66 - Owner: Soviets - Actor444: barl - Location: 83,67 - Owner: Soviets - Actor445: brl3 - Location: 88,65 - Owner: Soviets - Actor446: barl - Location: 89,66 - Owner: Soviets - Actor447: barl - Location: 87,67 - Owner: Soviets - Actor448: brl3 - Location: 89,67 - Owner: Soviets - Actor450: barl - Location: 109,28 - Owner: Soviets - Actor449: brl3 - Location: 107,27 - Owner: Soviets - Actor454: e2 - Location: 38,32 - Owner: Soviets - Actor451: barl - Location: 108,29 - Owner: Soviets - Actor453: brl3 - Location: 38,31 - Owner: Soviets - Actor11: truk - Location: 36,32 - Owner: Soviets - Actor455: silo - Location: 82,67 - Owner: Soviets - Actor456: e1 - Location: 85,66 - Owner: Soviets - Actor457: t06 - Location: 101,92 - Owner: Neutral - Actor115: c2 - Location: 56,89 - Owner: Creeps - Actor459: e1 - Location: 79,102 - Owner: Soviets - Actor460: sbag - Location: 80,103 - Owner: Soviets - Actor462: hpad - Location: 75,100 - Owner: Soviets - Actor463: sbag - Location: 79,103 - Owner: Soviets - Actor464: sbag - Location: 78,103 - Owner: Soviets - Actor465: sbag - Location: 77,103 - Owner: Soviets - Actor466: sbag - Location: 76,103 - Owner: Soviets - Actor467: sbag - Location: 76,102 - Owner: Soviets - Actor468: sbag - Location: 75,102 - Owner: Soviets - Actor469: sbag - Location: 74,102 - Owner: Soviets - Actor470: sbag - Location: 74,101 - Owner: Soviets - Actor471: powr - Location: 79,98 - Owner: Soviets - Actor415: sam - Location: 77,102 - Owner: Soviets - TurretFacing: 128 - Actor475: brl3 - Location: 79,97 - Owner: Soviets - Actor407: ftur - Location: 76,98 - Owner: Soviets - Actor473: barl - Location: 78,98 - Owner: Soviets - Actor461: e2 - Location: 78,97 - Owner: Soviets - Actor481: fenc - Location: 82,99 - Owner: Soviets - Actor482: fenc - Location: 82,100 - Owner: Soviets - Actor483: fenc - Location: 81,99 - Owner: Soviets - Actor484: fenc - Location: 81,98 - Owner: Soviets - ReinforcementsEntryPoint: waypoint - Location: 92,111 - Owner: Neutral - ReinforcementsUnloadPoint: waypoint - Location: 92,103 - Owner: Neutral - Actor474: mine - Location: 95,86 - Owner: Neutral - Actor480: fenc - Location: 87,74 - Owner: Soviets - Actor485: fenc - Location: 86,74 - Owner: Soviets - Actor486: fenc - Location: 85,74 - Owner: Soviets - Actor487: fenc - Location: 84,74 - Owner: Soviets - Actor313: c3 - Location: 65,86 - Owner: Creeps - Actor314: c4 - Location: 72,91 - Owner: Creeps - Actor315: c4 - Location: 58,92 - Owner: Creeps - Actor458: c8 - Location: 68,94 - Owner: Creeps - Actor476: c9 - Location: 59,98 - Owner: Creeps - Actor477: c10 - Location: 57,82 - Owner: Creeps - Actor478: c7 - Location: 69,89 - Owner: Creeps - Actor479: c6 - Location: 73,89 - Owner: Creeps - Actor150: silo - Location: 109,31 - Owner: Soviets - Actor489: silo - Location: 110,30 - Owner: Soviets - Actor490: silo - Location: 108,30 - Owner: Soviets - Actor306: e2 - Location: 43,56 - Owner: Soviets - Actor365: e3 - Location: 40,54 - Owner: Soviets - Actor388: e1 - Location: 38,50 - Owner: Soviets - Actor389: e1 - Location: 48,58 - Owner: Soviets - Actor390: e2 - Location: 42,43 - Owner: Soviets - Actor491: e1 - Location: 42,41 - Owner: Soviets - Actor492: e1 - Location: 35,35 - Owner: Soviets - BridgeTank: 3tnk - Location: 76,20 - Owner: Soviets - BridgeAttackPoint: waypoint - Location: 74,25 - Owner: Neutral - Actor19: brik - Location: 37,27 - Owner: Soviets - Actor23: brik - Location: 37,26 - Owner: Soviets - Actor24: brik - Location: 36,26 - Owner: Soviets - Actor109: brik - Location: 32,27 - Owner: Soviets - Actor496: e4 - Location: 57,38 - Owner: Soviets - Actor497: e4 - Location: 38,60 - Owner: Soviets - Actor498: apc - Location: 78,99 - Owner: Soviets - Actor499: 3tnk - Location: 106,23 - Owner: Soviets - Actor500: sbag - Location: 44,30 - Owner: Soviets - Actor501: sbag - Location: 44,31 - Owner: Soviets - Actor502: sbag - Location: 44,32 - Owner: Soviets - Actor503: sbag - Location: 44,33 - Owner: Soviets - Actor504: sbag - Location: 43,30 - Owner: Soviets - Actor505: e1 - Location: 43,32 - Owner: Soviets - Actor506: e3 - Location: 43,31 - Owner: Soviets - Actor507: brik - Location: 104,36 - Owner: Soviets - Actor508: brik - Location: 104,35 - Owner: Soviets - Actor509: brik - Location: 104,34 - Owner: Soviets - Actor510: brik - Location: 102,35 - Owner: Soviets - Actor511: brik - Location: 102,36 - Owner: Soviets - Actor512: brik - Location: 103,36 - Owner: Soviets - Actor513: e1 - Location: 110,34 - Owner: Soviets - PatrolPoint31: waypoint - Location: 79,71 - Owner: Neutral - PatrolPoint32: waypoint - Location: 78,46 - Owner: Neutral - PatrolPoint33: waypoint - Location: 100,48 - Owner: Neutral - PatrolPoint34: waypoint - Location: 92,70 - Owner: Neutral - Actor516: wood - Location: 65,100 - Owner: Neutral - Actor143: v11 - Location: 72,95 - Owner: Creeps - Actor517: wood - Location: 64,100 - Owner: Neutral - Actor518: wood - Location: 63,100 - Owner: Neutral - Actor519: wood - Location: 63,99 - Owner: Neutral - Actor520: wood - Location: 63,98 - Owner: Neutral - Actor521: v18 - Location: 59,96 - Owner: Neutral - TownAttacker6: e4 - Location: 70,97 - Owner: Soviets - TownAttacker4: e4 - Location: 70,91 - Owner: Soviets - TownAttacker1: e4 - Location: 70,82 - Owner: Soviets - TownAttacker2: e1 - Location: 70,87 - Owner: Soviets - TownAttacker5: e1 - Location: 70,93 - Owner: Soviets - TownAttacker3: 3tnk - Location: 74,87 - Owner: Soviets - TownAttacker7: 3tnk - Location: 73,97 - Owner: Soviets - SpyReinforcementsUnloadPoint: waypoint - Location: 52,94 - Owner: Neutral - Actor522: ss - Location: 43,100 - Owner: Soviets - Actor92: hosp - Location: 57,78 - Owner: Creeps - Actor523: v02 - Location: 56,87 - Owner: Creeps - Actor524: v03 - Location: 60,90 - Owner: Creeps - Actor525: c1 - Location: 55,90 - Owner: Creeps - Actor526: c9 - Location: 60,94 - Owner: Creeps - Actor527: v11 - Location: 59,94 - Owner: Creeps - Actor528: brl3 - Location: 60,95 - Owner: Neutral - Actor529: barl - Location: 59,95 - Owner: Neutral - Actor530: brl3 - Location: 58,94 - Owner: Neutral - Actor533: brl3 - Location: 54,88 - Owner: Neutral - Actor1000: camera.large - Location: 1,1 - Owner: Soviets - -Smudges: - -Rules: - Player: - -ConquestVictoryConditions: - World: - -CrateSpawner: - -SpawnMPUnits: - -MPStartLocations: - Allies04Script: - Allies04HazyPaletteEffect: - MissionObjectivesPanel: - ObjectivesPanel: MISSION_OBJECTIVES - ^Building: - Allies04MaintainBuilding: - Player: Soviets - MISS: - AutoTargetIgnore: - Allies04TransformOnLabInfiltrate: - ToActor: MISS - Infiltratable: - Type: Lab - LST.Unselectable: - Inherits: LST - Buildable: - Owner: None - RenderLandingCraft: - Image: LST - -Selectable: - LST.Unselectable.NoCargo: - Inherits: LST.Unselectable - Cargo: - MaxWeight: 0 - PipCount: 0 - SPY.Strong: - Inherits: SPY - Buildable: - Owner: None - RenderSpy: - Image: SPY - Health: - HP: 100 - RevealsShroud: - Range: 6c0 - Spy: - Infiltrates: - Types: Lab, Truck - DOG.Patrol: - Inherits: DOG - Buildable: - Owner: None - Mobile: - Speed: 56 - RenderInfantry: - Image: DOG - TRUK.Hijackable: - Inherits: TRUK - Buildable: - Owner: None - Cargo: - Types: Infantry - MaxWeight: 5 - PipCount: 5 - AutoTargetIgnore: - Infiltratable: - Type: Truck - Allies04Hijackable: - Allies04RenderHijacked: - Image: TRUK - -SupplyTruck: - -RenderUnit: - Selectable: - Voice: SpyVoice - RevealsShroud: - Range: 6c0 - BARL: - Allies04TrivialBuilding: - BRL3: - Allies04TrivialBuilding: - OILB: - Allies04TrivialBuilding: - E7: - Buildable: - Owner: None - TRAN: - Buildable: - Owner: None - BARR: - Buildable: - Owner: None - MIG: - Buildable: - Owner: None - HELI: - Buildable: - Owner: None - SS: - Buildable: - Owner: None - ARTY: - Buildable: - Owner: None - AGUN: - Buildable: - Owner: None - MSUB: - Buildable: - Owner: None - CA: - Buildable: - Owner: None - MSLO: - Buildable: - Owner: None - SPEN: - Buildable: - Owner: None - IRON: - Buildable: - Owner: None - PDOX: - Buildable: - Owner: None - TSLA: - Buildable: - Owner: None - FTUR: - Buildable: - Owner: None - SAM: - Buildable: - Owner: None - HPAD: - Buildable: - Owner: None - AFLD: - Buildable: - Owner: None - ATEK: - Buildable: - Owner: None - STEK: - Buildable: - Owner: None - 4TNK: - Buildable: - Owner: None - MCV: - Buildable: - Owner: None - APC: - Buildable: - Owner: None - MNLY.AP: - Buildable: - Owner: None - MNLY.AT: - Buildable: - Owner: None - TTNK: - Buildable: - Owner: None - FTRK: - Buildable: - Owner: None - CTNK: - Buildable: - Owner: None - MGG: - Buildable: - Owner: None - MRJ: - Buildable: - Owner: None - GAP: - Buildable: - Owner: None - CAMERA.Large: - Inherits: CAMERA - RevealsShroud: - Range: 1000c0 - -Sequences: - truk: - unload: - Start: 0 - Facings: 32 - -VoxelSequences: - -Weapons: - -Voices: - -Notifications: - -Translations: diff --git a/mods/ra/maps/monster-tank-madness/map.bin b/mods/ra/maps/monster-tank-madness/map.bin deleted file mode 100644 index 00599aec5ee9c97da50b4b30b768e2afc5f8d603..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81925 zcmeI*+mB~Qb?EW6f4^UMPtQ#E^z@uF8Ob@0WXZ?TSVHh%8!222=9&QEeh2Y-j(JBy z#FH1qB}iOMAP^aBF5w~tBtVb{3;FUCDgVVe2@jSm@nrdF&S%xywR_LtL!v1BI%M{^ z*wn6FwQ8;JT2;ID?bpL!#$U$u>q}Y)ECdz;3xS2eLSP}V5LgH-1Qr4dfrY?AU?H#& zSO_cx76J=_-wA;s;y-8lb)>!j7TtbN?;#&V9K_}z&aiQnX;s_V?rO?U8P(+5?h77G zIaRr;{r_rKovHFo8SsA{!>?m!67qtXQuz0l|8NjH2eIE!469hLBDZB}+s%9x;?pxH zh11a~GfDV2W_n*^ztw7j|LfSD2gVEKv*GV4e`+7Z?m?VAh{J<8zA5+{(kYlHK1#+p zq0@N5QSbtVHwv62-<+Al|8?wjr>6ohl+WhBzx-*wAJTe1BW;5G+cP&Dt?_bG+ZQaH z#>j8U+yr0E7fi2@czvv27xB6rm0OPgGuN+QyncP>`t^hB*N5xZ&$ayKa}l45)#qY! z{rY}Ohu5zkUB6B@)l^nZxlmE4)!FOU&$r#f{TTLRv!9Wcw#@Bq5sr4A7aFva;6IKy zj`eZu&N90fPpS`j@Yh@;pXrJQtA9|EJx>?)j-d_%+=V)dek7q#>CP4Fq8$$KN- z8>^!IniyV_F`vv|pM^O5P8Nj!nph0c!;lLuNsmN466?Q<_`945#kug7U>E9`mm}mI zQr|8Ya1-T;8V(~4V|^IA&16=K_HiIoe(nqT7sv48jC?NGIgT?^<|u}v*g1;*qc~{% zg=o$auZ?)^jd5Ef-w?waV*R2RUKHz_;FkyW_1+lXdjo9>!(IlS3VfY{eBt{M-;dQd zBEAu;M`Cy+Hh&kif|qM-5te9cXxO4%d4~)HzEC2i6Ayz6Hixly7-!owo)L?DbBBPR zQWoA3n>*sn9YHKjbU_+N=k_R8N3nYpXOH6W)e*1mar@dBUVC%gQiisA-}}T6&%~yd znpQhbxV_&Tac_y$TXIG9*2!~0#m}j@Ko}o=KZfte`WrEPBi4_k3#cTpfu*f+ zVYiZ!n(ECq%FBxK2wxZ-j$S&9ox?bD80QY-kkvP(HVVdh>5kaBBlhnI%t_NDhUEn^ zOPWz|;ngv``Xp|Z<0fo0!A&d8p~Lg&nHZjloo8ad;J0b2*0<}o#PF7|We8O(ern)z zw|-9rzD{?iQ|*Hh4`z6jb;VPKvR5H96&5QxGrZ<}9QY+gwGx?w`y%d(^?fI^(8+|~ z0#fh~cVztU-Vt1;33{3nRWly>%5{pcLOMu#*J-&%*DC0jBV?4zfWLYscAtr}v&c_h z8-s7owE9lOcVhMJh;N^)GplPloJzXbPqnKDV|Xyb0|z$B)CjG}hox+1GTY@u<;K?Oa`uMievU zPX)eCk3Jjm*$jr`2ZIZ!B*NKSbBl6(vRVs2M_FAoxPakB4@P`IgGCb(cJGUw`{GPZ z9q))XffG$dayGQ^fs^rAb3WGdlS`SPz4>gk2Q)TfdP3NL(O*nDEx z|HN?EPC7N{a;2olH$}WDR$qVl6+80d>G<|o-5xu)hvsZ2lPH}^l~G8Vw)!Ic;=M848=HG$ z@2(i`ip^cIcTWuW#O9vSgKBEK^C!Ut74Yfh`MJIpKi`e`Zmjz1x_W16=}E};)B4jf zd^&8IjHE;>D%m0+4rQ2T>&%rWuP;P=Ay%J{_ z%VPDi*tBTOQE(;Vk23KTlX+H060b@6)ljFL&im>d-y5rYW9QyDb62eHik-XS%ssKX zCwA^h4_1@p-v=7_b)u<3XXP_4e!d&Sck}9o%!)MfH9tlEBKEM)hYUwP2Xc>p1mw|3 zl6CU>LJVJs_2*;wd~CiL@x@p@9K*x0`BDsD>g8XK_;OCLn6U2fWih-g)-P+fe~S$M zS7P_dxbo)$96;br3fQf2q!1;6v95{bf5zGF!Ql^2JZQ*hn**l?T1`9iZ7qJ9XUSxs z?fOR%KT0KQIB!4lt49Hkf6a#!V?LE?5@5TO4k|uhi}>0|_59~E)OWrZ!xv-yaJm4c zw57_woB>ubMwE2!l@YHT=l@!e-7EwLCB;qBp zeo5@UHR7$YdS}EtWA*-s_h&ESKj*r(&FQEXKiy5bWBc%NXc=ZSaR-~0{bPgc}eWOHHNpw`kgVnGuH2KC-+Xi9Fa}> zl`owOzRb}tV)cu>-r?WsS4Z1Vm;P76AO0%A;!hvSz{qxa=BI6XTUQx)PVK z#2>a+8e-0II@Oj0B?OYscj>;?7Ux>q6!7HS);U#P`EmZK8=fDD_(-fi5b=R=^30BY z9`W;xCBpT^>8Hhi-LHQco+LjS@zD$n5YVF=0-ueD0})x2RZr%WTOru}lU z8_s#d^CK~QB-S5@;R9(G^;mlF^B8`fu~b$Vcc;Mr(TGP+7Q;36FMTwIk7i&12(m3D z>AX`{F0F8=ubjRgZN2Sjg7#cg~E9Pi!S(|rSYEGM-Llat?#)mhCL=H71P4uf%D%FV~W1!Zq z<*(LI@^#2$!vAaCzaH~BThe|S~99dTQ%Zi}7U@?x2WW+7Iu{$U)p z6=|o%U%!G4fee@ioYfeXI~2+nRm@eZJnJ-6bGPQD$08m}bNH(qI-VoyPD{;cGmK)g zh5(-Uum3b>JRK3sce)^10_yPoh}q;nHmpg$p5)dOu?J#!AT}S4_;7lY2QzY>i+C>9 z&&BTZ5zoi^`J8_){4Djn^mMGB&fOYoIyx=>w1u4}HE+ly)fRzNatMDc{;0X zHv_5WrN?4;EH-sU{*C9DIlgYhnAlr9=c4g_5$}uDyCU9|Way*5DMHr*`20dOmiZ&-rKfXR-5ite(yhXLK_`ecRLGPYsADKsTB&q$VPHCO{`CEG3ml zVn&oobyQnTrfTx)Bcq(-M6#0O4@G<^Ru9GSP;4HGz4wey#4?x-1nFHl1a|5+!rNnb z`|OrNRWM}A1+z)MrYwB{PD8u2;sOIx*XO3k0n^Q*ZX+vHC}))uPl10Q^0cKq1uBGa zE3n1ct_npPOwN+$EJsMKM*s^%*uOgtuIBS5E}-6N@jn^z?}*_YH%`L+h6yDrq>CiGgfxZif>3#EYwRTC zHs>%(1r51LI`^@NkHzZa5g*Uc-S5`|#XqUmSdi)YIwb6K+OJd#&c4Vgx6*`4Iuaz@ zVOv8l!A^HAn#^$o5qNi;y*m!C#&9)uug1BnL1$)eJJp(bvQB0`3HKW&z#>@z#waia z7)u$BzmoDoRg;HBl98ZLj?aaU#qhCMe>{edXXvi$bWjS2&$$lsyhHQ*3ANyy7CB85 z@~H%!3}tNTro>daJG<#rZmlu3zB|s{9T%>~>T2v=jq_LIVtbmreg3&-u3IJbChFWH z{mMv4GlvU=7VFNx&{Ig$5!ALS^G;61wF3Odh=0t0zgRQRgX1ekn>roTqW!h)mBP6i zRZ_~#?dK0yP)Z&D~{mQ6jm5MI>^A(!;Q^;?RuQRb73WkG&24|i9#~7{+@yU>Ot_>IZ zD@MjUdPk)|T|mv%c%e%wGNI;TY{dilUHHl+hNs^MRbDAWQ&QeqV3w9^KH-PC73 z(5ARzTJwVKIQ2~n)IV;YiOu=^j`Lp0%XqHm=@rSfIBEQArNMSaN#|!zVHgNSGWxSP zE|8IAz&8d^fkimS$doPug)tE3jFf1LNIw>bpPRXo>o^NQqJoKUHs0?NQN z1a7oAr})xa}7Bq-PaerxxQ^K$i-Dl(YmT^{AKRJMgx-!ziY$h+OYr0*uOSh zx;9+-r&#@c41b@iAV&+nv0xW5yO<-OEy6gL5QG6#rMC)jgm7 z{H18@O>fh&_r^6phL`>+hJPB#0|;HpX_7U!OAW$n=BYWy)W-$36p$2RTf4UEa~4rD zs_~#YG$gYMCm$IdBmaUt&HOF?>vZ5MPllZB4S{;4glukqZr>(YcocT zdIqwK$&5Plm58sT&JH2GJA0e%_{KGV#iWMtLN`GpN77sg3FTiTp$1b;e%BH2R4Wxo za8yabmr+w8HL5vjy3-edg1;p1lwA{lE~rcFnJ@AhZJYdSK7Zuon->;&QK#P3$*6cX zcK%|BK4ZYbSVkH0WqtZ46TyBh zN9#4+erbj+;kFVcz)JGPjqn;x#40R(6v``cNFI5a!cGm^7UA-yqe4REs-~~f(3U&6 zCcBt!2cg}t*ZgBUu76rNvFdLv(Vvo1(MT`MzhZkf&ODpnXR#eI)fiIrDi4K}=Jyl9 zQ7uR70=ZwBX@#nWB9QRPR^@X%9NKl^;?yI(`YCFm)g-`B|ZkK<}0IWFwWW$$_*Vt89Ve9U)f>#0P) z`;BL!YYYVmIT<0{3#9P^r*Hwzr5p9=qtLFJ@)iF|rsocI{goF2^TUn+SR1_X88fYSd2GSATd|>_jkpNrLu(dP$73C=Q>`85f1ggoY~F7K#w zeE;|+Pcm;)O$x8aTlMs($oGdVC4?MZ*pdJyyt<$ysw&7-1^o3T*|in_>T9S1-Df%CIKYo+0K5>?r<*WZVvs&&FmpUb6^H5_`z8*BC6APDTLZNcYF0Vx$R zWNJ{1uW>f`b^0T7e3Po4{uKH8ny)S&>YKj)H5s-wrRajrcBSI17djXM%4;~-DlrT- zku=HOx&&@kOl$rz82UnpknNDKUUXMI9<}!&bAp}LX{G0UwDyt&*l&%(&gu#_mKF!* zgCq8)u-u>9-saon-`}L7jPLvM`^x&7uPz_zo4zlPUy}(Hssc`?jE;28xpWpbdZdPA zSDq$yjv!eRnp~JBz;zro1;jrca?6}%nmpm#eEmDl{)CGz!GI3@;ROmDQ|PLrs9|I4D~t>`f((7|+Pt65sXy72Cr}eI zVH6SsB3yYq^)!ehqr;zO{=EOtM!`5EZI?eiE7kWP zbY?=H1v=7AJ-nMw(JctoJXdpd&C*|N-vZZj7>SXW(q2%d02e%6@1OrHA~mG!1WxtpD}&rPy<1@?$(&P(T{~u zkH`H<5KZ)pvn_y-Ix3Mv2PKq|r-^Y#B@*zjtz8{yONb`ir`md&_NT~4UcRjaCi15> z|Ii%sOFdR8&m79zmVxpLSq%ll$6310kA1FISp`uyz7f&Rm`cv|YYGy;(HvFIl~Pm# zRkY97lb}|DUd47zHR<%$goM&TMj>~oKu9^!A-zbN%Tq}!%KL)A%%5{hn`cgzzTF+l zr9AW2SZKXdU^|Jz2+)%YDz3yBKDG+kSh(aFYdgJv!c6tqC{u>RVz+$Z(0;$Ba5P=h zM5$1jqNkjfNf`bn;&1Xfn!H2B*;eK90+;-7k?k?E+)+ET-LXZm(E zIX6d4z+q4R-52SFZILhkvWxOeo?^Aa#?fNVSPo(iM}R-g(oiUz+(b^**Sv^1r`MWF z2_SkQ2Oo0Cv?~!JkMrK&1Q(P;HCJD?(m@w84jE9Iq_cV})yS;w6w-$p>dPo(l+5`$ z@3-(C&$BJsb08G_Dj+Y}RZg;0>eHh|ITb4vO+foduePl-x%8NyJZL^^@5AGKOE~cJGOZ zCu03XI)YIJ0V{~0yY#maf16jMOfxhfEjSLT$#C|{t2}~gYbqrG5{S0?YO1CLE4x_b zDC>{UbV`mUD%)yBlsYQg>anQGSG5u@50|zjzZ$A6vp3!InS#G%Mqd>9@=oQqLw@Sz zC$auXi2v0ub9?5A7@mmD6XUmOY_BO=9Kz1JB3vAhRIWtAr`(}X6DX$jKliENC<*c^ zpo*9+XdIzL@*YdQM}aL5md72{L_^KVta62R^~gsKQ4(jOD8oBSBuAC&cf9Y>n44tA zX@3^;;(t6ZoCg02W2Vu(B5L=E*m)wq&|wZN4l%8wSBd=O6xPX?vFfWMp;v~>?6x(P zLsAj5#fnT+ZIM)sTeG|#pFP?>vHw=S2S_D7s-PwbHCQxP&JhZ!r<@w9IZCF=RiT8_ zWWUxweZooF743cUF$suZNG}}tr)&_vJ^y{a7`qh(hG(4 zTf@PjN_uffQb%_QpJILeGhJ#;XMu4nGPhM$HYVP7$(#4cmOl($8|p=nK(erzZ(QH~);=+y4sljB3@v(35MLRvyNMHlKQ zq*eJ{+ZtlZNx->WQzkg1T6tey9Uk%PXD7GQd*qKN+_qbjPp*IJXp>Cfb`l$*V^{GM zSM-mkV&|!xf_$yK^V3-UG@nb_Wf2rimS?*>^0p*sP6)i&su{lN>whI=N=OR+s*jK4 zp?^Mf?#^|H5H+cxRr#^Tjd=9}8Vgzxs6@tAAvI*qPq)+Cgp)zuRz9%H zz@8@sg{?fjur2cCU;0y9z6@a(>+qCnmMEi`!}fXDm-&Dzv{jAagb*b|&T(J=tDulw z)tnP~P@R1@J^DlE+@0T9>i6*ggi%y$O98$p7wCwyO7m$5=u`>C9MYY;C`z%cg!GPX&^-Qdx6(GBdWDSQ*|SSw?rvQLawurq%en zh-lZTb{_LR>@)Jq3#}I&Z6npg^#00IBCVHms=PmBFOQU)L?9cPhI3(LyNraPG&vNI z{kHxu6v}II){8{u+5RIKEG6@7zyGg`3$x!*tVo#m%h5VQn=fdU^?MW%%kNToN2e6? z*gbCnHM}*+=bY10VL!F`ryi!yKg6z=bE>>QWJegfky4|FEvuE-;)BNK$?;5j(3ebS zXV=u5UU>2Gh{t37c<;qe+r`Re{O>8yXM_xbA$)5|#y^@p>=Uq}3P-kjuxihR~#Qjx4Y z5!IRWXYB_@YRNQRQ_l+@kKysyJRW;bk3WJ@VyEA6A`?>aR0vyOiTNOKU&>U=$DW!rPiroSgV3ukF}D_^xy2I z&&577(~6}^Y&qhnU7E3Rzt7}6A{s$Msm8u&lvjwDh6<1SMcL@MMro(t|F4=_5o@az zH|b8-@Nz`)(Gl!+RdW<`l^wEc%QYv1s3!kz*A!_v3Z{Y3^5a=xYw&ecVbHx$v5_Yx zC2wwjuz+c^nVC`eK(X`V_V*5Io|(<$u)u`|R)7>Pd=h)Z;weM@@F`GA3MPRU`~83D z6bj&)?e)k_wj?OgN@cs{6g8FWPDctQc{)fX+)+RMTA#Cxvwb`5rlnJA5Kd?PQ)964 zPX$_ro|$=5`-25+>38OlsYwGINZB~fGkqp!tV0MmDmW`&F0kb|CF<<7HK#gCingOW z{mBBakqoTJ$5W4L$|y08$|*czw;Z8_5G8;sA+stgRFbn+zyEKZnS#HDc}7}`{M?-& zG&w|VBemY=ik)cqruGL5L|VTy4+|6+GKzK7t01h2h1CkxK>!>XH4&)jEnBixf6%M~ z>?BBz9`q**n)9Hx%BvSHBS+V&>4k$FgDyS${A}G|4d)}R5Xfkam6%=z09u>!Egx* z9MF(a0Xh}zR-B7fceclytNosvqfl3K0x`F%6@TebiOj`m4PTck?~dW!vA*#Klt@rn zleja^`=bDL319ELHL&wJe+>8;`Tq>_PfkQsvYp<{oGpIvgu)g~%*CXzhf7I?9Fi5! z06K&=Ah0Os6s=^`yx4E9DpXCOaiJl%I$CvjnGh8uU7W8qeA6vsqXkLKe?aMKTqfbp z*ts+I?~H@D=FfTMFM7RywxVtgGuo#ZQ_>2R}3#?u^x)v3qBny)*p%DLf~(Q)ZlJ3j4IJniGockgr}E@G&GV$Ij(AdpRz= zG~%VPereviyx5l|_*5`wVW(Qa#jsdKtenCfQh7nSR;X&Onyuz`m4ojP38a-H0Ow_g zcIWp1>wZ)ZSrD7#xx4ck!L0-TC1lcYZ?BAQWEH-}8$ZYISwA2TW zeE|c$At3(G7414&pP=m%dsiuUuu6w?cw$(y?z+O58E8lVjFh+%Rv<+$Sah1K?xVg8xDDT zUB{VqocEv;WvbQOHQB1L&zg+>>Lp3O z)k%Hiw?n>qDdzRDTQRSf`TL9I<{a@X_%FMGCx5AsI?kwzw#<`-oMw3ik!brFkj@4SLiT0T3^{cN@conw#ReqDdwlx3L z!|q~!?S;S>2O)U$Bzn(|r`Qk7MhYX7xs_MesjM6_>4oyuh+4+9{&h01Cv#YH~Hi< zvw9AELYG*2waip%(6WB_(Ikz)qFQcJXFgI?8+&OotMW;mE}R5~soQq=_l4!Z;_m53 z`F^`rb7}h#`?201f8>7zSf+Jj)69QwK0#^w+x7WRess35{8tR=Kg##ps@)`QKZgC- z?8jaU%Q2|_qw>gaGfIC)e(ZM@ejC+)N7uVC?8audlkX8eMr=d(ACNCs{yWrLnk)ns z0t~)i_2n%D zK*TqT^Zy%%6&(5BEiwn@z-Mia`qArcB(#!SVGc;k>mLev7HspM8PQm{73?2v_kXN! zI~fpd@0Pm9(pCX^2As`*Ju+^MILO%N_lkiW2Uz5Pw}$m)vHA+Qiw2rL8^0tMK9U~A&J6pF26-nns`LLW?C6fq9F>l$ zKB~bn=~$et^4QsETciFj(l6q!*+$&5j@_2<3w7ehXs6;|jsntr78 zD0aXI%=v5rFk+Emqbb;)kWQ#Ns&rJnqZ%GlI;P$!=~S2iR$Cg)Wyqk$g4|f&R=TbF zhSCl7t{eVl0#g^H3#u*zt8lhQ;r1|`&H#r^Gu1S6O#@8W&Yw^^5uT3;`bRZ&Ow}>< zPbr-W-^OZ89B#xGn2+nR+Dy|7ng;$%f&O*-|7QNP7nCjpJ>0%bf#KuU7TJNDEls1Q z0ps?j=`U$&DI6Q4q&SiZcL%w>`d2)kr(uZduymM5@r1YqqwK(%zi$2m-g$+2`xo4K zUOFFepoF8&KUS6bBR(k4EJv~fbE>x__)jmzapuJ|UX8+x9YpQ9E8u?+karwbI*d(Y z25~*++lJMC^%U6Pf&KGJ=K~s4w>(yQ9Q#B`d>f|)GUy_zE~#45U`aDep-y-*sJCrA z$P>61{h9tCo`C-|FdQ>wYs`Y!;aB~2!yoW=_jt$8j)_0$__9;aR6o;TOOa%enyNMR*CNhVt0|okW3ZZvhR?LZ zuHi|gld8M?hX{fMAy$xQ8_DNCgEKRWa6JEm^h(vM_#ne?34EmVQSd2#%NAk5V`sZU z3`fQ7t21H@R}--q8Haxs_SR}si_)Tci{a-b1h8c;Ft)rOs3R|Zsrsb`KZFpGO__g7 zV66Cs9`LhP1piWq;luE+&xkR#ns%(FKX9ZK_J{>I^UR{sqWX)PUJU+Z{yYRDB0>H4 zBM{HMRC=l2%OXeSKQ{fxieF{{j*7#>5OkOTh8&zz6A_p=lWu}*s;-5f>$4cu=hEka3nd}8 zLKr=nZVRzyZb8+8h6}-sQ}x$MUt_E&X-RVMd`v)xf$d;9rR6kOi5zMBzXLM2Y|n)- zHbvHOes*~HMC;ErrE99M zC?P2`-zv(k(_-YZtM%L52;~-R(elLecl1p31Sce@<&hb_Oj~BS^tsZvVe75 z>3FPXwX0gCpF`PoT8ysj3h|%$BJ_kn%oZ!`e5&ecJgQ_klwjk97*>u_nu%~k)seUi z{>+F;=f9r+2me^WIaIrwPh6cXQbP-(EyPA@_Iin%BolP<+wvbzfj(CHSoKAvi|XB! zZU)KirK`EDv>eRwaIAp%LG*~i`J-`hOX*fOmBwZ5 zl5|P+_>oP2&jkLuo&p7DL<9c$Er^gBJe*t|uBfDIu6?{snO zPhzIbm4yF+(gXFL$H-=ixWL7|&a5#VFiNq-B~_PV`Y_9eBkN2m|NKHoz#p|hX%_%| zYxfoe+#-$1)ho7$qUox1H9Q=E6kL(;Kj7C!S(NZ(3TKL30>_|JHlDzZSON3#{L+yq zB{Qcc)cLdjmvuv4$Q*ws6Cd7wSGwCpPZCZVn17O@d)d@im97$(bF1x%^aQq{OC!hx z1!6?34q(S_3XHlCOr`mQ(m_=Rqywt=OZ($#lW2u*-4OWe?_}PQ?x?z}bhnG1B@t!m zmhL51==#<8^YDq%laMA%hCk!v_%`O?2qUWCjg|#|gz|$*2UQ%MP!C-aWdop8v07U%Uul%-p`mt*~ETpIY*6Ahk3Y6?JrXA|T_`P>wm`>kcUY?ri4 z)h_i8sJ~y;{s;$?#sAIUcWd$3G7ECwxGJ$2&u45ri?`1{iCKW=W3n8nV_krXpsWs1 zEHHT0Io`JIEDQOxOZ6`GD=Cjit2_#U;;|j8z*1uIUnCaOe|we-9>&NO85pB3d)w2$sx3pVTrIg2n>i=6@Zk*NVrIfsk7#0~noB5}Q5d}74FSaO-9qLqWYHOf62t2>QWc}9cJ_&83F3c7}e-3M;@wrsKLX~|4j1Dh8Xpl_DXwO|HlfH5;nnR z0!8Zi7nSSli}Hnk`ZAV`+g1C_zkaCU!_fckAtMuvj^v#yYI{w4mG-v&PY9S?{g0IX z4Wmds|Dtj|FUr$r;L6fu7|Vj%+v6>i@#nmO|ESR3Bkc+Q5BQU;Klz1(mSK6@p?$-A z9A-3mVqx*QQfV@bWTY@}-$EI`<&FH?LVJ(Wp74L-??mfQc{6|9b$P@5h4f-$O Date: Sat, 8 Mar 2014 00:26:31 +1300 Subject: [PATCH 2/4] Update CHANGELOG for removal of hardcoded missions --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 35fc8d7ab1..0bf73eea5e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -47,6 +47,7 @@ NEW: Added a desert variation of the Allied Barracks by Kilkakon. Added a desert variation of the Missile Silo by Kilkakon. Removed the temperate shellmap and improved the design and performance of the desert shellmap. + Removed the hardcoded missions. These will be later reimplemented. Tiberian Dawn: Chinook rotors now counter-rotate. Commando can now plant C4 on bridges. From 9720b7a966cce97d01587ff3a94557de1ac50ec2 Mon Sep 17 00:00:00 2001 From: ScottNZ Date: Sat, 8 Mar 2014 00:31:20 +1300 Subject: [PATCH 3/4] Remove some RA maps --- mods/ra/maps/battle-lake.oramap | Bin 15341 -> 0 bytes mods/ra/maps/crossing-the-river.oramap | Bin 4866 -> 0 bytes mods/ra/maps/doughnut-hole/map.bin | Bin 81925 -> 0 bytes mods/ra/maps/doughnut-hole/map.yaml | 864 --------- mods/ra/maps/ice-woods/map.bin | Bin 81925 -> 0 bytes mods/ra/maps/ice-woods/map.yaml | 2156 --------------------- mods/ra/maps/koth-island-hoppers/map.bin | Bin 81925 -> 0 bytes mods/ra/maps/koth-island-hoppers/map.yaml | 186 -- mods/ra/maps/mad-scramble.oramap | Bin 12238 -> 0 bytes mods/ra/maps/nishnekolymsk.oramap | Bin 43063 -> 0 bytes mods/ra/maps/strip-mine.oramap | Bin 10684 -> 0 bytes 11 files changed, 3206 deletions(-) delete mode 100644 mods/ra/maps/battle-lake.oramap delete mode 100644 mods/ra/maps/crossing-the-river.oramap delete mode 100644 mods/ra/maps/doughnut-hole/map.bin delete mode 100644 mods/ra/maps/doughnut-hole/map.yaml delete mode 100644 mods/ra/maps/ice-woods/map.bin delete mode 100644 mods/ra/maps/ice-woods/map.yaml delete mode 100644 mods/ra/maps/koth-island-hoppers/map.bin delete mode 100644 mods/ra/maps/koth-island-hoppers/map.yaml delete mode 100644 mods/ra/maps/mad-scramble.oramap delete mode 100644 mods/ra/maps/nishnekolymsk.oramap delete mode 100644 mods/ra/maps/strip-mine.oramap diff --git a/mods/ra/maps/battle-lake.oramap b/mods/ra/maps/battle-lake.oramap deleted file mode 100644 index ae894f3cee0357798812bb12f4c2b45cfb4b880e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15341 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 sWC&?TjHI5xT+-T>wiXFuT5%SPLp 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 TYDi0Wf>0f+>+v%TdJ_EuyaAIL diff --git a/mods/ra/maps/doughnut-hole/map.bin b/mods/ra/maps/doughnut-hole/map.bin deleted file mode 100644 index 9138c6249e329db3c6d1d118e7fe1f8d5eb6e72d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81925 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 Q2KEf>8Q3%MFf;J~0g4%j;{X5v diff --git a/mods/ra/maps/doughnut-hole/map.yaml b/mods/ra/maps/doughnut-hole/map.yaml deleted file mode 100644 index c1621bcd5b..0000000000 --- a/mods/ra/maps/doughnut-hole/map.yaml +++ /dev/null @@ -1,864 +0,0 @@ -Selectable: True - -MapFormat: 6 - -RequiresMod: ra - -Title: Doughnut Hole - -Description: v1.1 (Edit by Petrenko) - -Author: RAGEQUIT - -Tileset: TEMPERAT - -MapSize: 128,128 - -Bounds: 16,16,96,96 - -UseAsShellmap: False - -Type: Conquest - -Options: - -Players: - PlayerReference@Neutral: - Name: Neutral - OwnsWorld: True - NonCombatant: True - Race: allies - PlayerReference@Multi0: - Name: Multi0 - Playable: True - StartingUnitsClass: custom - AllowBots: False - Race: Random - Enemies: Creeps - PlayerReference@Multi1: - Name: Multi1 - Playable: True - StartingUnitsClass: custom - AllowBots: False - Race: Random - Enemies: Creeps - PlayerReference@Multi2: - Name: Multi2 - Playable: True - StartingUnitsClass: custom - AllowBots: False - Race: Random - Enemies: Creeps - PlayerReference@Multi3: - Name: Multi3 - Playable: True - StartingUnitsClass: custom - AllowBots: False - Race: Random - Enemies: Creeps - PlayerReference@Creeps: - Name: Creeps - NonCombatant: True - Race: Random - Enemies: Multi0,Multi1,Multi2,Multi3 - -Actors: - Actor0: t11 - Location: 31,77 - Owner: Neutral - Actor1: tc04 - Location: 29,75 - Owner: Neutral - Actor2: tc04 - Location: 28,72 - Owner: Neutral - Actor3: tc04 - Location: 28,69 - Owner: Neutral - Actor4: tc04 - Location: 29,67 - Owner: Neutral - Actor5: tc01 - Location: 30,65 - Owner: Neutral - Actor6: tc01 - Location: 31,79 - Owner: Neutral - Actor7: t17 - Location: 32,81 - Owner: Neutral - Actor8: t17 - Location: 30,81 - Owner: Neutral - Actor9: t10 - Location: 30,63 - Owner: Neutral - Actor10: t10 - Location: 26,73 - Owner: Neutral - Actor11: t10 - Location: 28,78 - Owner: Neutral - Actor12: t10 - Location: 98,70 - Owner: Neutral - Actor13: t10 - Location: 51,63 - Owner: Neutral - Actor14: t10 - Location: 73,71 - Owner: Neutral - Actor22: cycl - Location: 59,67 - Owner: Neutral - Actor21: cycl - Location: 59,66 - Owner: Neutral - Actor20: cycl - Location: 59,65 - Owner: Neutral - Actor19: cycl - Location: 59,64 - Owner: Neutral - Actor38: cycl - Location: 60,64 - Owner: Neutral - Actor37: cycl - Location: 61,64 - Owner: Neutral - Actor36: cycl - Location: 62,64 - Owner: Neutral - Actor35: cycl - Location: 63,64 - Owner: Neutral - Actor34: cycl - Location: 64,64 - Owner: Neutral - Actor33: cycl - Location: 65,64 - Owner: Neutral - Actor32: cycl - Location: 65,65 - Owner: Neutral - Actor31: cycl - Location: 65,66 - Owner: Neutral - Actor30: cycl - Location: 65,67 - Owner: Neutral - Actor29: cycl - Location: 65,68 - Owner: Neutral - Actor28: cycl - Location: 64,68 - Owner: Neutral - Actor23: cycl - Location: 59,68 - Owner: Neutral - Actor27: cycl - Location: 63,68 - Owner: Neutral - Actor24: cycl - Location: 60,68 - Owner: Neutral - Actor25: cycl - Location: 61,68 - Owner: Neutral - Actor26: cycl - Location: 62,68 - Owner: Neutral - Actor39: mslo - Location: 60,65 - Owner: Neutral - Actor40: mslo - Location: 60,67 - Owner: Neutral - Actor41: mslo - Location: 63,65 - Owner: Neutral - Actor42: mslo - Location: 63,67 - Owner: Neutral - Actor43: agun - Location: 62,65 - Owner: Neutral - Actor44: oilb - Location: 57,64 - Owner: Neutral - Actor45: oilb - Location: 57,66 - Owner: Neutral - Actor46: oilb - Location: 66,64 - Owner: Neutral - Actor47: oilb - Location: 66,66 - Owner: Neutral - Actor48: tc02 - Location: 69,63 - Owner: Neutral - Actor49: tc04 - Location: 57,55 - Owner: Neutral - Actor50: tc05 - Location: 66,71 - Owner: Neutral - Actor51: v02 - Location: 54,69 - Owner: Neutral - Actor52: tc05 - Location: 52,61 - Owner: Neutral - Actor53: tc05 - Location: 57,71 - Owner: Neutral - Actor54: tc05 - Location: 75,67 - Owner: Neutral - Actor55: t01 - Location: 76,59 - Owner: Neutral - Actor56: t01 - Location: 78,64 - Owner: Neutral - Actor57: t01 - Location: 71,60 - Owner: Neutral - Actor227: tc02 - Location: 61,56 - Owner: Neutral - Actor59: tc02 - Location: 65,55 - Owner: Neutral - Actor60: t01 - Location: 48,64 - Owner: Neutral - Actor61: t01 - Location: 54,73 - Owner: Neutral - Actor62: t01 - Location: 64,79 - Owner: Neutral - Actor63: t01 - Location: 72,75 - Owner: Neutral - Actor64: tc04 - Location: 101,109 - Owner: Neutral - Actor65: tc04 - Location: 102,106 - Owner: Neutral - Actor66: tc04 - Location: 104,108 - Owner: Neutral - Actor67: tc04 - Location: 105,105 - Owner: Neutral - Actor68: tc04 - Location: 102,104 - Owner: Neutral - Actor69: tc04 - Location: 99,108 - Owner: Neutral - Actor70: tc04 - Location: 96,109 - Owner: Neutral - Actor71: tc04 - Location: 107,109 - Owner: Neutral - Actor72: tc03 - Location: 107,107 - Owner: Neutral - Actor73: tc03 - Location: 108,105 - Owner: Neutral - Actor74: tc03 - Location: 106,103 - Owner: Neutral - Actor75: tc02 - Location: 104,102 - Owner: Neutral - Actor76: tc02 - Location: 106,100 - Owner: Neutral - Actor77: tc02 - Location: 109,99 - Owner: Neutral - Actor78: tc02 - Location: 109,102 - Owner: Neutral - Actor79: mine - Location: 95,103 - Owner: Neutral - Actor80: t06 - Location: 87,29 - Owner: Neutral - Actor81: t06 - Location: 92,28 - Owner: Neutral - Actor82: t06 - Location: 97,37 - Owner: Neutral - Actor83: t06 - Location: 94,31 - Owner: Neutral - Actor84: t10 - Location: 81,35 - Owner: Neutral - Actor85: t10 - Location: 90,41 - Owner: Neutral - Actor86: t10 - Location: 105,42 - Owner: Neutral - Actor87: mine - Location: 104,28 - Owner: Neutral - Actor88: t15 - Location: 58,17 - Owner: Neutral - Actor89: t15 - Location: 67,25 - Owner: Neutral - Actor90: t15 - Location: 75,22 - Owner: Neutral - Actor91: tc04 - Location: 60,16 - Owner: Neutral - Actor92: tc04 - Location: 62,18 - Owner: Neutral - Actor93: tc04 - Location: 63,16 - Owner: Neutral - Actor94: tc04 - Location: 65,18 - Owner: Neutral - Actor95: tc04 - Location: 66,16 - Owner: Neutral - Actor96: tc03 - Location: 68,17 - Owner: Neutral - Actor97: tc03 - Location: 70,16 - Owner: Neutral - Actor98: tc03 - Location: 69,18 - Owner: Neutral - Actor99: tc03 - Location: 72,16 - Owner: Neutral - Actor100: v10 - Location: 74,16 - Owner: Neutral - Actor101: t11 - Location: 74,17 - Owner: Neutral - Actor102: t11 - Location: 75,16 - Owner: Neutral - Actor103: t01 - Location: 77,16 - Owner: Neutral - Actor104: t01 - Location: 83,21 - Owner: Neutral - Actor105: t01 - Location: 81,20 - Owner: Neutral - Actor106: t01 - Location: 87,16 - Owner: Neutral - Actor107: t01 - Location: 82,16 - Owner: Neutral - Actor108: t12 - Location: 84,16 - Owner: Neutral - Actor109: t12 - Location: 92,18 - Owner: Neutral - Actor110: t12 - Location: 95,15 - Owner: Neutral - Actor111: t12 - Location: 68,33 - Owner: Neutral - Actor112: t12 - Location: 65,38 - Owner: Neutral - Actor113: t12 - Location: 65,32 - Owner: Neutral - Actor114: t12 - Location: 74,29 - Owner: Neutral - Actor115: tc03 - Location: 16,16 - Owner: Neutral - Actor116: tc03 - Location: 16,18 - Owner: Neutral - Actor117: tc03 - Location: 18,16 - Owner: Neutral - Actor118: tc03 - Location: 16,21 - Owner: Neutral - Actor119: tc03 - Location: 18,18 - Owner: Neutral - Actor120: tc03 - Location: 16,24 - Owner: Neutral - Actor121: tc04 - Location: 18,22 - Owner: Neutral - Actor122: tc04 - Location: 19,19 - Owner: Neutral - Actor123: tc04 - Location: 20,16 - Owner: Neutral - Actor124: tc04 - Location: 23,16 - Owner: Neutral - Actor125: tc04 - Location: 22,19 - Owner: Neutral - Actor126: mine - Location: 31,34 - Owner: Neutral - Actor127: t16 - Location: 31,38 - Owner: Neutral - Actor128: t16 - Location: 37,37 - Owner: Neutral - Actor129: t16 - Location: 46,41 - Owner: Neutral - Actor130: t16 - Location: 54,32 - Owner: Neutral - Actor131: t16 - Location: 47,23 - Owner: Neutral - Actor132: tc04 - Location: 17,45 - Owner: Neutral - Actor133: tc04 - Location: 16,52 - Owner: Neutral - Actor134: tc04 - Location: 18,55 - Owner: Neutral - Actor135: tc04 - Location: 15,56 - Owner: Neutral - Actor136: tc04 - Location: 17,58 - Owner: Neutral - Actor137: tc04 - Location: 15,61 - Owner: Neutral - Actor138: tc04 - Location: 39,41 - Owner: Neutral - Actor139: tc04 - Location: 28,41 - Owner: Neutral - Actor140: tc04 - Location: 35,20 - Owner: Neutral - Actor141: tc04 - Location: 35,15 - Owner: Neutral - Actor142: tc04 - Location: 32,15 - Owner: Neutral - Actor143: tc04 - Location: 26,15 - Owner: Neutral - Actor144: tc04 - Location: 43,15 - Owner: Neutral - Actor145: t13 - Location: 30,104 - Owner: Neutral - Actor146: tc04 - Location: 31,103 - Owner: Neutral - Actor147: v11 - Location: 21,108 - Owner: Neutral - Actor148: tc04 - Location: 17,109 - Owner: Neutral - Actor149: tc04 - Location: 16,106 - Owner: Neutral - Actor150: tc04 - Location: 19,106 - Owner: Neutral - Actor151: tc04 - Location: 20,109 - Owner: Neutral - Actor152: tc04 - Location: 23,109 - Owner: Neutral - Actor153: v14 - Location: 22,107 - Owner: Neutral - Actor154: v14 - Location: 23,107 - Owner: Neutral - Actor155: t01 - Location: 22,104 - Owner: Neutral - Actor156: t03 - Location: 25,107 - Owner: Neutral - Actor157: tc03 - Location: 26,110 - Owner: Neutral - Actor158: t03 - Location: 62,90 - Owner: Neutral - Actor159: tc03 - Location: 28,105 - Owner: Neutral - Actor160: oilb - Location: 60,91 - Owner: Neutral - Actor161: oilb - Location: 50,48 - Owner: Neutral - Actor162: tc02 - Location: 28,110 - Owner: Neutral - Actor163: mine - Location: 32,97 - Owner: Neutral - Actor164: brik - Location: 100,66 - Owner: Neutral - Actor165: brik - Location: 101,66 - Owner: Neutral - Actor166: brik - Location: 102,66 - Owner: Neutral - Actor167: brik - Location: 103,66 - Owner: Neutral - Actor168: brik - Location: 104,66 - Owner: Neutral - Actor169: brik - Location: 105,66 - Owner: Neutral - Actor170: brik - Location: 103,76 - Owner: Neutral - Actor171: brik - Location: 104,76 - Owner: Neutral - Actor172: brik - Location: 106,76 - Owner: Neutral - Actor173: brik - Location: 105,76 - Owner: Neutral - Actor174: brik - Location: 107,76 - Owner: Neutral - Actor175: brik - Location: 108,76 - Owner: Neutral - Actor176: brik - Location: 109,76 - Owner: Neutral - Actor177: brik - Location: 110,76 - Owner: Neutral - Actor178: brik - Location: 111,76 - Owner: Neutral - Actor179: v06 - Location: 107,69 - Owner: Neutral - Actor180: v10 - Location: 107,73 - Owner: Neutral - Actor181: v09 - Location: 103,69 - Owner: Neutral - Actor182: t01 - Location: 104,67 - Owner: Neutral - Actor183: t01 - Location: 102,71 - Owner: Neutral - Actor184: t01 - Location: 107,74 - Owner: Neutral - Actor185: t01 - Location: 109,72 - Owner: Neutral - Actor186: t10 - Location: 108,66 - Owner: Neutral - Actor187: t10 - Location: 109,70 - Owner: Neutral - Actor188: v14 - Location: 100,69 - Owner: Neutral - Actor189: v14 - Location: 101,69 - Owner: Neutral - Actor190: v14 - Location: 109,69 - Owner: Neutral - Actor191: v14 - Location: 110,69 - Owner: Neutral - Actor15: mpspawn - Location: 48,59 - Owner: Neutral - Actor16: mpspawn - Location: 52,80 - Owner: Neutral - Actor17: mpspawn - Location: 80,76 - Owner: Neutral - Actor18: mpspawn - Location: 74,51 - Owner: Neutral - Actor200: mine - Location: 104,71 - Owner: Neutral - Actor201: mine - Location: 22,69 - Owner: Neutral - Actor202: e1 - Location: 56,63 - Owner: Creeps - Actor203: e1 - Location: 56,66 - Owner: Creeps - Actor204: e1 - Location: 56,69 - Owner: Creeps - Actor205: e1 - Location: 62,69 - Owner: Creeps - Actor206: e1 - Location: 62,63 - Owner: Creeps - Actor207: e1 - Location: 68,63 - Owner: Creeps - Actor208: e1 - Location: 68,66 - Owner: Creeps - Actor209: e1 - Location: 68,69 - Owner: Creeps - Actor210: e1 - Location: 65,69 - Owner: Creeps - Actor211: e1 - Location: 59,69 - Owner: Creeps - Actor212: e1 - Location: 59,63 - Owner: Creeps - Actor213: e1 - Location: 65,63 - Owner: Creeps - Actor214: tc02 - Location: 61,76 - Owner: Neutral - Actor215: tc02 - Location: 49,72 - Owner: Neutral - Actor216: tc02 - Location: 49,65 - Owner: Neutral - Actor217: tc04 - Location: 72,58 - Owner: Neutral - Actor218: tc04 - Location: 75,61 - Owner: Neutral - Actor219: tc04 - Location: 78,61 - Owner: Neutral - Actor220: tc04 - Location: 72,62 - Owner: Neutral - Actor221: tc04 - Location: 72,66 - Owner: Neutral - Actor222: tc04 - Location: 70,69 - Owner: Neutral - Actor223: tc04 - Location: 77,69 - Owner: Neutral - Actor224: tc02 - Location: 64,52 - Owner: Neutral - Actor225: tc04 - Location: 64,59 - Owner: Neutral - Actor226: tc04 - Location: 59,59 - Owner: Neutral - Actor58: tc02 - Location: 58,53 - Owner: Neutral - Actor228: tc03 - Location: 73,60 - Owner: Neutral - Actor229: tc03 - Location: 76,57 - Owner: Neutral - Actor230: tc03 - Location: 78,58 - Owner: Neutral - Actor231: t10 - Location: 79,59 - Owner: Neutral - Actor232: t10 - Location: 54,71 - Owner: Neutral - Actor233: t10 - Location: 48,67 - Owner: Neutral - Actor234: t10 - Location: 49,70 - Owner: Neutral - Actor235: tc04 - Location: 55,73 - Owner: Neutral - Actor236: tc04 - Location: 64,76 - Owner: Neutral - Actor237: tc04 - Location: 66,79 - Owner: Neutral - Actor238: tc04 - Location: 68,76 - Owner: Neutral - Actor239: tc04 - Location: 53,66 - Owner: Neutral - Actor240: tc05 - Location: 60,51 - Owner: Neutral - Actor241: tc05 - Location: 59,79 - Owner: Neutral - Actor242: tc05 - Location: 45,68 - Owner: Neutral - Actor243: t06 - Location: 61,74 - Owner: Neutral - Actor244: brl3 - Location: 62,59 - Owner: Neutral - Actor245: brl3 - Location: 53,65 - Owner: Neutral - Actor246: brl3 - Location: 56,71 - Owner: Neutral - Actor247: brl3 - Location: 62,73 - Owner: Neutral - Actor248: brl3 - Location: 64,72 - Owner: Neutral - Actor249: brl3 - Location: 69,71 - Owner: Neutral - Actor250: brl3 - Location: 73,69 - Owner: Neutral - Actor251: brl3 - Location: 79,67 - Owner: Neutral - Actor252: brl3 - Location: 79,65 - Owner: Neutral - Actor253: brl3 - Location: 62,54 - Owner: Neutral - Actor254: brl3 - Location: 70,59 - Owner: Neutral - Actor255: brl3 - Location: 70,80 - Owner: Neutral - Actor256: brl3 - Location: 71,81 - Owner: Neutral - Actor257: brl3 - Location: 69,81 - Owner: Neutral - Actor258: brl3 - Location: 46,67 - Owner: Neutral - Actor259: brl3 - Location: 47,66 - Owner: Neutral - Actor260: brl3 - Location: 60,78 - Owner: Neutral - Actor261: brl3 - Location: 61,78 - Owner: Neutral - Actor262: oilb - Location: 91,67 - Owner: Neutral - Actor263: oilb - Location: 78,41 - Owner: Neutral - -Smudges: - -Rules: - MSLO: - Valued: - Cost: 50000 - CustomSellValue: - Value: 1000 - NukePower: - AllowMultiple: yes - World: - MPStartUnits@custom: - Class: custom - Races: soviet, allies - BaseActor: mcv - SupportActors: lst - InnerSupportRadius: 3 - OuterSupportRadius: 4 - -Sequences: - -VoxelSequences: - -Weapons: - -Voices: - -Notifications: - -Translations: diff --git a/mods/ra/maps/ice-woods/map.bin b/mods/ra/maps/ice-woods/map.bin deleted file mode 100644 index e3a1f53a471ec828b18e3f8eae8ba28f47b8611b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81925 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

^TtekhGOs0q)_yTm18$ zy~-V-b5xv@aZc7=U9RGCRp+ZXUxN#z3shdD;vx+$RB@rID^*;n>H!rG1mH*kGGGhO zm>+Usu>fTOEe==SuD1tVUhH-gY&LSQj1YkhlPI-$M8y#ej)Vc*#g@Ii@|ys^xKV=} zHNH;8bsBtJ`gnj(f+dpOXY+^g1ePEOpKyf+u^B*yXL}aUnT7MtD>9(OuJMOAAYv9G zHvYXqdV|V0Xprnbn%cKXZwvb;4KGk}fvSr_1xNv76f7QB^>~P5J4ZC|vFsQpiB}|K z1T;qyP#v`gT-4rl{LDt~iNPC1C<`5KMn^O}5_G_g>b9;=%PYSL@XH%Dyit?uR9>gy z$5nhhFsC3nDM*b=KUDFA zc7*%Wrl6(|*6IRby;KL1pb^pd%hq5xY{oD;PuX+ z22X3;j^UqI@p)CAz_CV*`K>B%)i6(~Arbag&o;RD_oVNs+?KXg<`tRnl-x0+QeXrP zFyspO!^bpvNaaHs-lX!TxK18X`G|&(1b_=at}~-J>caj35O}%4iQu0rbU>RMYlJJ$ zaW1N0J4D(Q9IlF+bRK`|9U#*|V{%Oskb3*k$$Y2uP8E+zkE(iBdRpbvAp(2GV%u07 zb4Q-}X-vRmL8sa36UJ;AUHp40zNczi#df{_5Xz+W?2k;%#jape{(|&{Fw3paNuN{s zTj{r!SNbDs`AlVt{M{u?Y0-BX;1KB{+WQ*#Bii5@00G! z4TKBY3*6PYS7N)hr@mXh5aA;CMgYXt2)x{bbD4VY;NK2$)J}DnI+%kk*+O5=pX{6` zC=v6J19lw4%5s^ zr)$l9s|mmb^p;5Fle5W2h9@4Ogni})i#h*+eW7k`r;Eni@xlAL+YN-hzz*2fRKjhg z9jT~gj&dLd)C7m6{}te1;l*bo0VaCEm;u}dj7ftb{(>&x7VxFHvxcOyd^{%HIt2bof_FU@;wp_?Yxa2r6u@P#|Q80 zZZ{AKhgDDYv^BL;M?^DwoYjh8u)tm(zzEOH(ivL8R)+A@yOg83qYGhgPedD~1 zA0@$w#s~`th>vkn5oqwx_*AW_o;s4x>xg53EF#n%XEmi(7@8xu!gjY$N}mk;Nnyzu zcIpLlsy6tI7T|$wi&slm2TQySjo5zLy^HSgXTG=T94oW>f%^2m+Jq zKTFFQxe4HTy=>vhTOYN{J$d8;YVrUGUJnI=FoFX<&-qE!P3;)1qsP#}$78zr11aEX zY`FnyXtHb+M^-o8SBwTU)r)g`VU+wVN zJ^t*#Z#pV8!S#Ks3#5xxUaW!p{|M*_pWFl>Y&~J+$=kcq5%q6}j1C1r4JOFT4T$;1 zT3}o6q^Z%Ew}X$zbn^#N7E+%F=u8UAOZMNE9(n6Z$wT5NF^77|%+FvrJLCG*DzD~e zoU~oa9f`F(1fUcegjA;qJHdX!gfN3<2Bzr(U993_RTpdM{(m#!lly65khc80{ndg% zKHMZ36)J!%hQ|#R)yLTHOy4W0H@i;h7tOk+bHS(H5(Wq~xWEWau22I*s(|36VfaP$ zXy3^V1Tb#>tMsq6ZQy`##g(1|J1Qr+BhhSupbF~h6nuyyMQuVzmuFx$_DXxx5a8|7 z+re;3=Rf-YO!zz=?QGLe!+9sR{JT}~DTW%=;N1Mz8;Z82?cBq^GkwgVUgnrCIjVcq zmMk;jJY_@>gMv&Dm$B*EhRH)}j$MOf-QC?e2bE_(Fcnxrm57Ys1R^wRo$_-tN7QBr zKy}9ee=u)O?yqJ?Slz2)Z;JnKSMhfEoa$kf4@amBRm&!RHH(S@FCEusy2E zJ$#C+<&KjL8yt)VGzk;|@4YJc7DQf+GF)f@{2|VjC(HJookNTi_U$$G(nflMnn+EH zOfAGBuGCm}ep;qQHYgx(w<+5^>RxR6Lb?CL6zz30|waS~6ki`$-kTxqO zYCNh+N?9_18FLUrQUD}jf&5&}ohWFcK`R&4Y_|8{WiII()%x=r`#RYD{6x4#wtIz-qFmbc%m7(}))|jzIs@{U5;h{Qt5i-mQX+ zNxg5-=I0?&?ly!OXKw;nej+bdYzoaijHvZAcoNMl*b*NldZge7wcAPfy zW&<{&q_dDJ&WptSkC=aB{N?$7PrM(=i?D72+-BMQYRiu^!W?`iHQ&VG37BI}mId%Z z3_>y`}pSxzT}m*Z7a~2y`>wlzXMU(fNtR7qoCid$;Fw;zd|D0eKXFL8C2qVa5U521ycM6^Kqt%a|(<9P*kVOXRUdB$+oNBlzME(gBM98;2%H(bv5` zEv$b`#m7`Rzn}aj7S_GCzLeYU*;i}8aAzZuIe|li43nsAlsP9J!iK#7#Q`|HHLGC9 z0RLvrhXd&^82lE09U&-OplJw#`RT$>o8!z=&Wxl33-wmRQEqdQ0>8$(z~2i89L0^( zxZWa?Z5xrXH=;BMEIp;Ua}ytxKAQ9AEhS(DCIMy+AoV%Ew%^S+A^?tI<0-J@xW~`v zO=S(@4!9&dIMl#%vk{ac-Nv6*pC=61=$%{7|ARbU$$H^nVjK1r5!-fBP&C9TCy|G}${d;?#kq-(s`zNwe|t*_$UFb+`$*<_ z-tWK=sHxomQUs9siI#Z+_^{W^Hk&5312u2S!^f{Y!F~+z_x^vh4_C|Xv3yYapvudn z%WC5f6%;WLh_S#S6^9}-1E{e4xdv<6-aU)SA?DJPnzQPJc6C5HpuvIYK-w~GqTtV= z36jrE@Q?&<4Ie?03W#3<=ywVD6X$1rj{_Eu=^oxj{zz=!@&>Kh=)V zYyl!$xAt$gKUq)S*1Lc{sN#dFE>m$?wtPE+#{!2!1*1b+YkhQM!0$}T#7$o|6T|< zr0S5yhqTnTe0PWDyPa4Rt{w8uTQwR12kd`zK#K>$wlPbLlZTvJnL9V}3$f26w)(jF z_HZN56ah}O1?JgWNM;;udh!&vs!>zxVJmuIHp4ebZ;B?MZiwHS4!r!G3PSo5 z^}&;YxwS31vu7lY>b2?HFE6m_p9Q=Tb=y6hkEr;_Z0jrvBE!nR$1Fii6wJpQc*C~A zus*f`tJ#D=82r42JrIb2FarU1ffz155h{p-Cz)F$qTeohm`2k5On>_&_Z~6M&7ak$fskv| z?%{kS3N~A3!DQ77J##T9wn3shOd4u zPk2t|SZYsS6D22VqIc(0z}$C@f5iWm+1HyEJb$$)E!Lypz#m7rqBR!Yu@*eOK8>4< zr2CEj_Ddc#VVQt4U>~@x+7ovPA28t+;*UKX+p*9Si)Htw6@k0!g&vBmW!T%RsCF)} zB?Exl9ojbU-~+H>Gia*S;BNe50L~JOKR)cT9jYL^En4sr7&e3D)RUsi(z1rj_2Ii1 z3*Z8+laE_AW(Uvxvr}(4JC2NvnVQ1|mPT6kKJfO$oqa7CDn-ZxRx3LedH{h>Rmb4k z^L2Mgcg?npwkO#_#i?r0gA@NG?2i++NEZU8>R^uy&7MQr3p5g?+?~j-)G7Wx|HUFj zI6`tyxZ?A(sUtL9Sk`D+OQ{PK_|pp_y)*3yrGaa&1@E7odSkmz1Z_{q+sNH%&rq+} zz~;BE0UENStmw6xLT+&D@1lEF)AMzA%@&#g4M<0~q_5`Y!#F$yTb^@8A}FH>Gz)Ql za-|}Nca}43?e-C}HA6FscL;vMIllDU8U@2u$kJ*N2FqGr*2c2_B88w(!SfpaeW4eG zh}NmM`aHWQ1~gC0Z`i;bPx4%`{RKmf8#~DT`8$xdd?xhHjJF%_N{8`V2f#sT z$u{#qeHaG|C;k|GAmtvpKsX#BU+t3h0kq^1&cB$uK-ASW{$b~N=AXLQ48XU2X4?{Q z$z`o9$Mr9lbv!C~KGNvM2-32Upl{2!uW=u4lDiQ6T%7kivUQ8U z!@fN?1s{DqHYdd2Q>e`{K4wA`+FI6Ymi0gX5XN6VukrI*_V%+JA~Bk*UYG=81*y6|Z7a9zDd zQDrnLmxYj0F|2?hF$&y7M4%y z9RF57r`|=7yC{o~rgg)Zew5INj#p_h1=!z^@eszt;*Mw+fW`U-j znsXP?_++{2G1RuSt@7@ABn9mDHADvX&|p#%O0mA!m>qG_6XQATH)EF3FK4HsRw|9E z+1Em1`Ykc-e-N7qxNQ&gRzQH0s}E?Mm8bJ)oUL%Ciru+eU-*v=yZRX_O{K2|*EEPf>Y_hNo!KgjqUK4m%#JI{15zG;NBgy~8%Y z-HJu+{0R+W(LyUo@)H$s<@32-xm$Oi6RhYaxqb~+8@Vk&W#JATr}}$Sjm3gb(~*d=STMPImWs19I7{QxRGg;4Y0(N0f+7m# zYb?-^JT!jFI~l^{kfPoo?Koq!?H#uHb}VXpN{&UdH8pp5=4XCJwW)+9*Cz-6CT$q7 z7EaXgL@k_1*r8zxdnSeY68=ax`}9F-blQU#kVju#<6obAZ!EUyNTiRf8bG$k;{wC8 zG&xP>X&RoUi5JB(_;`Bg;`ux@ermQrKugN%%xnXd(YALa0WmpDQEkh2e#atf%~8v3 zhqadcXyqAI&j=L|{HbW=+_ZDxZ^9}fNS>(jM2$|wgkm7$1_el|k$d7l*R4GHgPCFf z^~6+Sj10k8r>PZ1>5nZm9f>r4hXGhhDu^h=4DjmfrPrtBnAb|LRkZX4-~4ZwmmHm4~;hTZIRkcMs@654DJrh5>4CVW7?ct(R~ z0?(BXNFPx7KIwglnPd+HpX$VT%h!4_A^7K>vbX?fQ(Z*(Jk_~M_(IuvFfS1NT;-3XAH|jL z)6Tw9>z>t*(-#|#V&|M@4g}e!+DT*%gYseK=PG_4!C~V^s(z$l`bsSZjNl9IS)p9M*l;9oD|H{q zn7fUz{W}&p3O(97iJw9Q&NbL8?M;pe?C$oQ5cm&H2<^ZOi6+3!87e~&Jm;nv`NE`a zp7EC#zw97gG(Ju`4!~n4C+8L+ z%MC$neUDz_N#jeUOG6`A*Z7~qyXj+q1}Y%cM`?_C-A2S$);AoBQWRQyG;gR&dPJ2J zFZM>lHo`oT3Uq?X6Er*_!U+7p3|Alpc8njDQ7?%z2p;fq4=HSe&ZqnTJUIsOpUHo0 z1C++OBeybEG1g$5hPv)yrq9748m2{GI(4T*oLCc_9~zg(sW?u9;}A0rRh4@*-lLU0 z+S;T4;Ys65Ra~mUd!+ZM%(?&~FszRlq;>&(AWpEV@+Zv)shL>ziVpz(i}WuM!_ni$ zdD3|*y$hcUoM1+2epPNa#d zNj=CyoRG^Mp0h&*_{+#+gkP&_4UKEZKV3Rq)#)1TQME@4d$hJk|J@o)J;QJ!MhYbB zA}^zi+TZqJaVIqv;EcHf8XvYAdc`MUQeKk21paR6-Lr0wk@vRY7>{_GG_^zoF(%S+ za|d~@(8NhmO=Ix5A!+R1Z=NvhHvTiIo6G=6LB9M+7z&K1&0Orcwi6pIpP;F~ z0z@;NCmSh9`?cXY;q%i6LX+(^AU8Kg22wn!!B6_CHI>vs9^R57o8yvkwq7#Yrr8jL z0*Rk>K=ZofMd=HfSEkjm9Cp_3NQWHnk?skTLmfVGQ-AH#%f7csx2eo|Vi!=?_}?t{ zeB$P`M-d?pD}AST%7%wg+IC_?1^oIeKy@1(UCK509z7>~z6w4N`ey0PDqFfJZHj(= zLHc~?h3UhstvrEVLf)ua3*0x_sg;uQ7;tmNXJBVvf;B;}OXe?R)(1;J-}*M-J?XFO zCj4#WbTwnP)62fMr9Z)$^DHtJ?jC>t1wh&zx?9V$@AQTW+S^VTNXA&QZlg8%+pvu^ zG>$fF`TT%=_+}MvezA|W`uPRv^Pv}}54X1UWxZsLfN-M@KK&YB-)*a`tx(%}n_wMt z@?qpV()Sp>rg=wfA|2kBc30ZYZ*Tpn**pqh9ltq*8()Oz8vi__f=f~tA%*WGr|HLn-bKOqoNoK8h_t*r~AZBw-GTV9uH>&rQ<5o>|yIylOh$EX|DI7v{Q)?n zJH37=9WP3~g|%ke$!sh+9neNwy7~3uh)Ajbh7zN5Zp>|IwnNM7QhuH_NRb5tXf4>_ zFG~k-IDMR2sEIRV%&l=EC;b^5kX99EM1=Yquz3dsT!Eq6T+~F*hYmjvc|s?r{RoQ@Jgc|afpRGT9=YbM* z7Uq2)6UF4Xq9FQvbnwtJ*cfQ%2K3jkI4tQVi(LAD= z{g+sQy#WYaTzc13#48d-&>#@;YQ?%Rw(fzrXXTJSuTxBAtF60?IkkXTQgj`ZP;}Jg zMHUw^@x;u6hq~J;w(}9BI{r`VO%Yjyt^!fZ-7sLs#=&E%_{KFJ(M*3m+idU%1LoVa z@%hts^msAfC(H)aHeJWq`LIt0;+1`Ys!8NWS$q*l_vP)=E|TMUv@8i^3Ia8WNDeq~ zi;Dp@M0f=ew7@Hfhu-t53eVR~+%6VF-5^Loj)TRXB~Nju!I$SnyF%WYy(fPeHOI!S z$MQVbgRSYWXI1do+cb-gM6d)7qqYUwZnGU?(v}@q=3;C+?6*Tr@&bH;1YCScDS9am z%Px}RIb_iqQQi1M-^|Q?GR`Wi5e{tmwv~4k!q|$5XD@&Pk&ry=_Jwc5K)q77bqvP8 z_oy;IHfC$V^I&QEDqMDS0g;W(BT zr?ZuIcg4+JyN!8gNNG#gwq8Fs0>-%=VcMOaY`RIhG|Q2~0+OP&k#X2br;TmPlODC7I)yX#;5QGJzh&=@<26WzP( zUqYY^58&7}2d{UhFBHH~aQJ!mdBDutQzQrr*mY4LV-T{xdZiD~4%Pl~2@yW>9P=31 zwz*vUALlY_>*f8QB!78Dj%n_QKY=}M5I2Fs(T>DMHc>w28vg%5X?c-8d0=1=XdKOd zmOdyRZOTW7%OrX7Q1`@+E|<0Lj}EIHP>Hw;0>maqDemiNb@VE$F$nL1_ABe3eLi7e z6guMal_z;y59mMo;Ml;?wfrnP9`%Ow zzsAm=q;&GEm)z%hWyi>u2jI(>B_i+3FZJ@cI`+AfR4<|0)DEY7uNDkmt{iT8UoBC? za=f(OMAH4MuI07o1uGPE**ZLD?d1?A5?vXL_M&IM*BK9W~?H@v($ z4PaMF)$5!;VA%ib5!i(Y#NVOq|LtxBcDoJqy}sRT|Go4*0zCpf0{=M#(q5olJ#VmE zcY%ey)O$eaMeoLrbjX~}-*OK3Kj%Gv&ZR7UNRaM!83Nw*pH83$0=v-s69Vb$Kj{SW zF4KRq``8DYz5~VoyH5Vv1Cr(MKJ!m|K;);b52j z%l018f0v0qCvM#b-qje)0n-2I5$F-<5$F-<5$F-<5$F-<5$F-<5$F-<5$F-<5$F-< Z5$F-<5$F-<5$F-<5$F-<5!j^&{67Rh7li-- diff --git a/mods/ra/maps/ice-woods/map.yaml b/mods/ra/maps/ice-woods/map.yaml deleted file mode 100644 index 9df38c35ee..0000000000 --- a/mods/ra/maps/ice-woods/map.yaml +++ /dev/null @@ -1,2156 +0,0 @@ -Selectable: True - -MapFormat: 6 - -RequiresMod: ra - -Title: Ice Woods - -Description: Small 1vs1 map with some secrets defended by creeps. - -Author: Tirili - -Tileset: SNOW - -MapSize: 128,128 - -Bounds: 16,16,96,96 - -UseAsShellmap: False - -Type: Conquest - -Options: - -Players: - PlayerReference@Neutral: - Name: Neutral - OwnsWorld: True - NonCombatant: True - Race: allies - PlayerReference@Multi0: - Name: Multi0 - Playable: True - Race: Random - Enemies: Creeps - PlayerReference@Multi1: - Name: Multi1 - Playable: True - Race: Random - Enemies: Creeps - PlayerReference@Creeps: - Name: Creeps - NonCombatant: True - Race: allies - Enemies: Multi0,Multi1 - -Actors: - Actor13: brik - Location: 96,34 - Owner: Neutral - Actor14: brik - Location: 96,35 - Owner: Neutral - Actor16: brik - Location: 97,35 - Owner: Neutral - Actor18: brik - Location: 101,35 - Owner: Neutral - Actor83: t16 - Location: 102,35 - Owner: Neutral - Actor23: brik - Location: 101,34 - Owner: Neutral - Actor19: brik - Location: 100,35 - Owner: Neutral - Actor17: brik - Location: 97,34 - Owner: Neutral - Actor12: tc01 - Location: 106,97 - Owner: Neutral - Actor20: brik - Location: 100,34 - Owner: Neutral - Actor21: spen - Location: 98,28 - Owner: Creeps - Actor22: ss - Location: 96,29 - Owner: Creeps - Actor84: t06 - Location: 72,49 - Owner: Neutral - Actor5: mpspawn - Location: 75,94 - Owner: Neutral - Actor25: tc03 - Location: 87,43 - Owner: Neutral - Actor26: mine - Location: 100,18 - Owner: Neutral - Actor27: hpad - Location: 106,24 - Owner: Creeps - Actor28: mine - Location: 108,19 - Owner: Neutral - Actor0: mine - Location: 104,18 - Owner: Neutral - Actor30: mine - Location: 108,24 - Owner: Neutral - Actor31: mine - Location: 110,27 - Owner: Neutral - Actor32: mine - Location: 105,25 - Owner: Neutral - Actor24: mine - Location: 102,20 - Owner: Neutral - Actor6: mpspawn - Location: 36,52 - Owner: Neutral - Actor1: mine - Location: 107,21 - Owner: Neutral - Actor2: mine - Location: 99,22 - Owner: Neutral - Actor3: t12 - Location: 106,34 - Owner: Neutral - Actor4: v11 - Location: 106,36 - Owner: Neutral - Actor7: t06 - Location: 105,54 - Owner: Neutral - Actor8: t05 - Location: 108,56 - Owner: Neutral - Actor15: t07 - Location: 105,56 - Owner: Neutral - Actor11: t01 - Location: 106,57 - Owner: Neutral - Actor29: t10 - Location: 103,44 - Owner: Neutral - Actor33: brl3 - Location: 104,44 - Owner: Neutral - Actor34: brl3 - Location: 106,44 - Owner: Neutral - Actor35: barl - Location: 107,43 - Owner: Neutral - Actor36: brl3 - Location: 105,43 - Owner: Neutral - Actor37: weap - Location: 105,40 - Owner: Creeps - Actor38: 4tnk - Location: 103,40 - Owner: Creeps - Actor39: t17 - Location: 95,34 - Owner: Neutral - Actor40: t06 - Location: 106,46 - Owner: Neutral - Actor41: t07 - Location: 107,44 - Owner: Neutral - Actor42: c2 - Location: 104,42 - Owner: Creeps - Actor43: c1 - Location: 106,43 - Owner: Creeps - Actor44: SAM.Creeps - Location: 110,52 - Owner: Creeps - Actor46: ftur - Location: 110,61 - Owner: Creeps - Actor45: t17 - Location: 105,49 - Owner: Neutral - Actor47: silo - Location: 111,55 - Owner: Creeps - Actor50: tc03 - Location: 110,53 - Owner: Neutral - Actor49: t08 - Location: 111,56 - Owner: Neutral - Actor48: tc02 - Location: 111,57 - Owner: Neutral - Actor51: t13 - Location: 109,50 - Owner: Neutral - Actor52: STEK.Creeps - Location: 97,17 - Owner: Creeps - Actor53: proc - Location: 94,17 - Owner: Creeps - Actor54: powr - Location: 90,25 - Owner: Creeps - Actor55: pbox - Location: 88,28 - Owner: Creeps - Actor56: pbox - Location: 84,27 - Owner: Creeps - Actor57: brik - Location: 88,27 - Owner: Neutral - Actor58: brik - Location: 89,27 - Owner: Neutral - Actor59: brik - Location: 90,27 - Owner: Neutral - Actor60: brik - Location: 91,27 - Owner: Neutral - Actor61: brik - Location: 92,27 - Owner: Neutral - Actor62: brik - Location: 92,28 - Owner: Neutral - Actor63: brik - Location: 91,28 - Owner: Neutral - Actor64: brik - Location: 88,26 - Owner: Neutral - Actor65: t05 - Location: 92,23 - Owner: Neutral - Actor66: brik - Location: 84,26 - Owner: Neutral - Actor67: brik - Location: 84,25 - Owner: Neutral - Actor68: brik - Location: 83,25 - Owner: Neutral - Actor69: brik - Location: 83,26 - Owner: Neutral - Actor75: tc04 - Location: 60,31 - Owner: Neutral - Actor76: t10 - Location: 65,31 - Owner: Neutral - Actor74: t11 - Location: 54,29 - Owner: Neutral - Actor72: tc02 - Location: 46,32 - Owner: Neutral - Actor71: tc04 - Location: 47,30 - Owner: Neutral - Actor70: tc05 - Location: 47,28 - Owner: Neutral - Actor73: tc05 - Location: 56,30 - Owner: Neutral - Actor77: tc04 - Location: 67,31 - Owner: Neutral - Actor78: tc04 - Location: 52,31 - Owner: Neutral - Actor79: t08 - Location: 61,29 - Owner: Neutral - Actor80: t01 - Location: 62,28 - Owner: Neutral - Actor81: t12 - Location: 63,33 - Owner: Neutral - Actor9: t08 - Location: 63,46 - Owner: Neutral - Actor82: t15 - Location: 69,50 - Owner: Neutral - Actor10: t12 - Location: 61,47 - Owner: Neutral - Actor85: t06 - Location: 75,17 - Owner: Neutral - Actor86: tc02 - Location: 76,17 - Owner: Neutral - Actor87: c1 - Location: 78,18 - Owner: Creeps - Actor88: tc02 - Location: 86,20 - Owner: Neutral - Actor89: v12 - Location: 86,19 - Owner: Neutral - Actor90: tc04 - Location: 89,14 - Owner: Neutral - Actor91: tc05 - Location: 86,14 - Owner: Neutral - Actor92: PDOX.Creeps - Location: 92,18 - Owner: Creeps - Actor93: c1 - Location: 93,20 - Owner: Creeps - Actor94: c2 - Location: 91,19 - Owner: Creeps - Actor95: tc03 - Location: 68,73 - Owner: Neutral - Actor96: TSLA.Creeps - Location: 87,23 - Owner: Creeps - Actor99: powr - Location: 108,20 - Owner: Creeps - Actor98: hbox - Location: 98,37 - Owner: Creeps - Actor97: hbox - Location: 95,36 - Owner: Creeps - Actor100: powr - Location: 108,31 - Owner: Creeps - Actor101: fcom - Location: 101,18 - Owner: Neutral - Actor102: barr - Location: 105,20 - Owner: Neutral - Actor103: e1 - Location: 89,25 - Owner: Creeps - Actor104: e1 - Location: 98,33 - Owner: Creeps - Actor105: e1 - Location: 97,33 - Owner: Creeps - Actor106: e1 - Location: 107,32 - Owner: Creeps - Actor107: tc01 - Location: 106,26 - Owner: Neutral - Actor108: e1 - Location: 108,25 - Owner: Creeps - Actor109: c2 - Location: 105,24 - Owner: Creeps - Actor110: dog - Location: 106,19 - Owner: Creeps - Actor111: e2 - Location: 105,18 - Owner: Creeps - Actor112: e6 - Location: 98,20 - Owner: Creeps - Actor113: v2rl - Location: 97,22 - Owner: Creeps - Actor114: mnly.ap - Location: 96,22 - Owner: Creeps - Actor115: apc - Location: 104,21 - Owner: Creeps - Actor116: e1 - Location: 107,20 - Owner: Creeps - Actor117: e1 - Location: 109,22 - Owner: Creeps - Actor118: e1 - Location: 91,31 - Owner: Creeps - Actor119: SAM.Creeps - Location: 92,22 - Owner: Creeps - Actor120: SAM.Creeps - Location: 99,32 - Owner: Creeps - Actor121: tran - Location: 103,24 - Owner: Creeps - Actor122: brl3 - Location: 92,26 - Owner: Neutral - Actor123: brl3 - Location: 110,26 - Owner: Neutral - Actor124: brl3 - Location: 110,25 - Owner: Neutral - Actor125: e3 - Location: 102,24 - Owner: Creeps - Actor126: spy - Location: 103,19 - Owner: Creeps - Actor127: c1 - Location: 97,19 - Owner: Creeps - Actor128: SAM.Creeps - Location: 88,69 - Owner: Creeps - Actor129: c1 - Location: 82,75 - Owner: Neutral - Actor130: SAM.Creeps - Location: 57,79 - Owner: Creeps - Actor131: SAM.Creeps - Location: 55,57 - Owner: Creeps - Actor132: SAM.Creeps - Location: 53,40 - Owner: Creeps - Actor133: SAM.Creeps - Location: 66,39 - Owner: Creeps - Actor134: SAM.Creeps - Location: 82,47 - Owner: Creeps - Actor135: tc02 - Location: 62,35 - Owner: Neutral - Actor136: tc04 - Location: 61,39 - Owner: Neutral - Actor137: t07 - Location: 61,41 - Owner: Neutral - Actor138: tc01 - Location: 62,36 - Owner: Neutral - Actor139: t02 - Location: 63,37 - Owner: Neutral - Actor140: tc01 - Location: 61,37 - Owner: Neutral - Actor141: tc04 - Location: 53,35 - Owner: Neutral - Actor142: t06 - Location: 56,36 - Owner: Neutral - Actor143: tc02 - Location: 55,37 - Owner: Neutral - Actor144: t05 - Location: 57,36 - Owner: Neutral - Actor145: t10 - Location: 60,35 - Owner: Neutral - Actor146: tc05 - Location: 58,36 - Owner: Neutral - Actor147: t02 - Location: 57,37 - Owner: Neutral - Actor148: tc04 - Location: 58,37 - Owner: Neutral - Actor233: t07 - Location: 50,37 - Owner: Neutral - Actor150: tc03 - Location: 77,22 - Owner: Neutral - Actor151: mine - Location: 68,60 - Owner: Neutral - Actor157: mine - Location: 77,52 - Owner: Neutral - Actor154: mine - Location: 72,61 - Owner: Neutral - Actor152: mine - Location: 70,63 - Owner: Neutral - Actor155: mine - Location: 64,69 - Owner: Neutral - Actor156: mine - Location: 66,70 - Owner: Neutral - Actor153: mine - Location: 72,55 - Owner: Neutral - Actor158: mine - Location: 63,56 - Owner: Neutral - Actor159: mine - Location: 65,54 - Owner: Neutral - Actor160: mine - Location: 63,51 - Owner: Neutral - Actor161: mine - Location: 65,49 - Owner: Neutral - Actor162: mine - Location: 71,47 - Owner: Neutral - Actor163: mine - Location: 75,53 - Owner: Neutral - Actor166: TSLA.Creeps - Location: 18,105 - Owner: Creeps - Actor164: PDOX.Creeps - Location: 19,107 - Owner: Creeps - Actor172: TSLA.Creeps - Location: 21,105 - Owner: Creeps - Actor167: mine - Location: 70,68 - Owner: Neutral - Actor168: v06 - Location: 74,56 - Owner: Neutral - Actor169: mine - Location: 68,77 - Owner: Neutral - Actor170: t14 - Location: 69,68 - Owner: Neutral - Actor171: t06 - Location: 73,69 - Owner: Neutral - Actor165: t06 - Location: 74,65 - Owner: Neutral - Actor173: tc04 - Location: 78,56 - Owner: Neutral - Actor174: v04 - Location: 71,62 - Owner: Neutral - Actor175: t16 - Location: 64,66 - Owner: Neutral - Actor176: tc03 - Location: 59,65 - Owner: Neutral - Actor177: tc02 - Location: 61,63 - Owner: Neutral - Actor178: v05 - Location: 68,75 - Owner: Neutral - Actor179: v11 - Location: 76,63 - Owner: Neutral - Actor180: t08 - Location: 77,63 - Owner: Neutral - Actor181: tc01 - Location: 68,57 - Owner: Neutral - Actor182: t01 - Location: 67,68 - Owner: Neutral - Actor183: tc04 - Location: 73,57 - Owner: Neutral - Actor184: v17 - Location: 76,60 - Owner: Neutral - Actor185: tc01 - Location: 61,56 - Owner: Neutral - Actor186: t13 - Location: 62,49 - Owner: Neutral - Actor187: t10 - Location: 66,46 - Owner: Neutral - Actor188: t16 - Location: 56,41 - Owner: Neutral - Actor189: t16 - Location: 49,41 - Owner: Neutral - Actor190: t07 - Location: 48,45 - Owner: Neutral - Actor191: t06 - Location: 48,42 - Owner: Neutral - Actor192: t13 - Location: 50,38 - Owner: Neutral - Actor193: tc02 - Location: 50,48 - Owner: Neutral - Actor194: tc04 - Location: 57,39 - Owner: Neutral - Actor195: tc01 - Location: 68,36 - Owner: Neutral - Actor196: t07 - Location: 66,35 - Owner: Neutral - Actor197: t02 - Location: 70,36 - Owner: Neutral - Actor198: t05 - Location: 72,38 - Owner: Neutral - Actor199: t06 - Location: 51,44 - Owner: Neutral - Actor200: t05 - Location: 51,40 - Owner: Neutral - Actor201: t07 - Location: 52,39 - Owner: Neutral - Actor202: tc04 - Location: 55,42 - Owner: Neutral - Actor203: tc01 - Location: 54,40 - Owner: Neutral - Actor204: tc01 - Location: 67,39 - Owner: Neutral - Actor205: tc03 - Location: 68,41 - Owner: Neutral - Actor206: v01 - Location: 70,41 - Owner: Neutral - Actor207: t06 - Location: 67,40 - Owner: Neutral - Actor208: t16 - Location: 67,41 - Owner: Neutral - Actor209: t01 - Location: 65,38 - Owner: Neutral - Actor210: t16 - Location: 65,37 - Owner: Neutral - Actor211: t14 - Location: 64,38 - Owner: Neutral - Actor212: t16 - Location: 65,39 - Owner: Neutral - Actor213: t16 - Location: 54,38 - Owner: Neutral - Actor214: t01 - Location: 56,45 - Owner: Neutral - Actor215: t02 - Location: 58,44 - Owner: Neutral - Actor216: tc04 - Location: 57,45 - Owner: Neutral - Actor217: t15 - Location: 56,46 - Owner: Neutral - Actor218: tc03 - Location: 59,48 - Owner: Neutral - Actor219: tc02 - Location: 58,49 - Owner: Neutral - Actor220: tc01 - Location: 59,50 - Owner: Neutral - Actor221: tc05 - Location: 57,50 - Owner: Neutral - Actor222: t17 - Location: 60,51 - Owner: Neutral - Actor223: tc02 - Location: 52,53 - Owner: Neutral - Actor224: tc01 - Location: 48,56 - Owner: Neutral - Actor225: tc02 - Location: 46,57 - Owner: Neutral - Actor226: t15 - Location: 56,57 - Owner: Neutral - Actor227: t06 - Location: 53,51 - Owner: Neutral - Actor228: t15 - Location: 49,47 - Owner: Neutral - Actor229: tc03 - Location: 61,44 - Owner: Neutral - Actor230: t06 - Location: 56,39 - Owner: Neutral - Actor231: t02 - Location: 76,22 - Owner: Neutral - Actor232: t15 - Location: 76,21 - Owner: Neutral - Actor149: DOME.Creeps - Location: 79,22 - Owner: Creeps - Actor234: tc01 - Location: 56,53 - Owner: Neutral - Actor235: tc03 - Location: 55,55 - Owner: Neutral - Actor236: t07 - Location: 55,51 - Owner: Neutral - Actor237: t06 - Location: 54,48 - Owner: Neutral - Actor238: t01 - Location: 52,45 - Owner: Neutral - Actor239: t16 - Location: 65,44 - Owner: Neutral - Actor241: cycl - Location: 21,108 - Owner: Neutral - Actor240: cycl - Location: 18,108 - Owner: Neutral - Actor243: cycl - Location: 19,106 - Owner: Neutral - Actor242: cycl - Location: 18,107 - Owner: Neutral - Actor244: cycl - Location: 20,106 - Owner: Neutral - Actor247: cycl - Location: 19,109 - Owner: Neutral - Actor246: cycl - Location: 18,109 - Owner: Neutral - Actor245: cycl - Location: 21,107 - Owner: Neutral - Actor248: cycl - Location: 20,109 - Owner: Neutral - Actor249: cycl - Location: 21,109 - Owner: Neutral - Actor250: t07 - Location: 33,94 - Owner: Neutral - Actor251: t06 - Location: 31,96 - Owner: Neutral - Actor252: t10 - Location: 25,95 - Owner: Neutral - Actor253: t01 - Location: 30,91 - Owner: Neutral - Actor254: t02 - Location: 32,91 - Owner: Neutral - Actor255: t08 - Location: 25,91 - Owner: Neutral - Actor256: mine - Location: 51,94 - Owner: Neutral - Actor257: mine - Location: 40,100 - Owner: Neutral - Actor258: mine - Location: 28,82 - Owner: Neutral - Actor259: mine - Location: 38,76 - Owner: Neutral - Actor260: t07 - Location: 78,49 - Owner: Neutral - Actor261: t14 - Location: 78,54 - Owner: Neutral - Actor262: t05 - Location: 76,46 - Owner: Neutral - Actor263: t06 - Location: 77,43 - Owner: Neutral - Actor264: tc05 - Location: 85,43 - Owner: Neutral - Actor265: t07 - Location: 85,44 - Owner: Neutral - Actor266: t12 - Location: 83,43 - Owner: Neutral - Actor267: tc01 - Location: 81,45 - Owner: Neutral - Actor268: tc05 - Location: 79,46 - Owner: Neutral - Actor269: t13 - Location: 82,48 - Owner: Neutral - Actor270: tc03 - Location: 80,50 - Owner: Neutral - Actor271: t16 - Location: 80,49 - Owner: Neutral - Actor272: t07 - Location: 79,47 - Owner: Neutral - Actor274: tc02 - Location: 80,51 - Owner: Neutral - Actor275: tc04 - Location: 81,67 - Owner: Neutral - Actor276: t15 - Location: 79,68 - Owner: Neutral - Actor277: t07 - Location: 83,70 - Owner: Neutral - Actor278: tc02 - Location: 84,69 - Owner: Neutral - Actor279: tc04 - Location: 87,66 - Owner: Neutral - Actor280: t15 - Location: 89,69 - Owner: Neutral - Actor281: tc01 - Location: 87,69 - Owner: Neutral - Actor283: t13 - Location: 85,70 - Owner: Neutral - Actor284: tc02 - Location: 83,60 - Owner: Neutral - Actor285: tc03 - Location: 85,65 - Owner: Neutral - Actor286: t14 - Location: 80,60 - Owner: Neutral - Actor287: t06 - Location: 77,57 - Owner: Neutral - Actor288: tc05 - Location: 81,56 - Owner: Neutral - Actor289: t16 - Location: 84,52 - Owner: Neutral - Actor290: tc01 - Location: 85,52 - Owner: Neutral - Actor291: t16 - Location: 83,61 - Owner: Neutral - Actor292: t06 - Location: 84,62 - Owner: Neutral - Actor293: t08 - Location: 84,64 - Owner: Neutral - Actor294: t14 - Location: 55,48 - Owner: Neutral - Actor295: t01 - Location: 74,40 - Owner: Neutral - Actor296: t13 - Location: 75,39 - Owner: Neutral - Actor297: tc02 - Location: 75,40 - Owner: Neutral - Actor298: tc04 - Location: 80,38 - Owner: Neutral - Actor299: tc05 - Location: 83,36 - Owner: Neutral - Actor300: t07 - Location: 82,53 - Owner: Neutral - Actor301: t07 - Location: 83,54 - Owner: Neutral - Actor302: tc04 - Location: 85,49 - Owner: Neutral - Actor303: t08 - Location: 86,46 - Owner: Neutral - Actor304: t07 - Location: 88,51 - Owner: Neutral - Actor305: tc01 - Location: 87,54 - Owner: Neutral - Actor306: t05 - Location: 90,62 - Owner: Neutral - Actor307: t05 - Location: 86,56 - Owner: Neutral - Actor308: t13 - Location: 87,57 - Owner: Neutral - Actor309: tc05 - Location: 90,65 - Owner: Neutral - Actor310: tc04 - Location: 94,59 - Owner: Neutral - Actor311: tc02 - Location: 93,55 - Owner: Neutral - Actor312: t12 - Location: 92,54 - Owner: Neutral - Actor313: t11 - Location: 90,57 - Owner: Neutral - Actor314: t08 - Location: 90,59 - Owner: Neutral - Actor315: t01 - Location: 94,44 - Owner: Neutral - Actor316: tc03 - Location: 95,46 - Owner: Neutral - Actor317: v12 - Location: 93,45 - Owner: Neutral - Actor318: v12 - Location: 59,43 - Owner: Neutral - Actor319: t07 - Location: 58,42 - Owner: Neutral - Actor320: tc02 - Location: 63,41 - Owner: Neutral - Actor321: t05 - Location: 52,49 - Owner: Neutral - Actor322: t05 - Location: 81,63 - Owner: Neutral - Actor323: tc02 - Location: 91,72 - Owner: Neutral - Actor324: t13 - Location: 87,73 - Owner: Neutral - Actor325: t15 - Location: 86,74 - Owner: Neutral - Actor326: t16 - Location: 88,76 - Owner: Neutral - Actor327: t12 - Location: 88,75 - Owner: Neutral - Actor328: t15 - Location: 86,76 - Owner: Neutral - Actor329: v01 - Location: 85,77 - Owner: Neutral - Actor330: tc04 - Location: 80,80 - Owner: Neutral - Actor331: tc05 - Location: 78,81 - Owner: Neutral - Actor332: tc01 - Location: 78,82 - Owner: Neutral - Actor333: tc03 - Location: 74,81 - Owner: Neutral - Actor334: tc02 - Location: 76,81 - Owner: Neutral - Actor335: t12 - Location: 79,80 - Owner: Neutral - Actor336: t05 - Location: 79,75 - Owner: Neutral - Actor337: t12 - Location: 81,73 - Owner: Neutral - Actor338: tc01 - Location: 75,71 - Owner: Neutral - Actor339: t16 - Location: 76,70 - Owner: Neutral - Actor340: t12 - Location: 77,69 - Owner: Neutral - Actor341: tc02 - Location: 72,75 - Owner: Neutral - Actor342: t10 - Location: 71,76 - Owner: Neutral - Actor343: t08 - Location: 74,78 - Owner: Neutral - Actor344: tc02 - Location: 75,76 - Owner: Neutral - Actor345: t15 - Location: 76,78 - Owner: Neutral - Actor346: t12 - Location: 53,42 - Owner: Neutral - Actor347: tc04 - Location: 47,50 - Owner: Neutral - Actor348: t07 - Location: 45,47 - Owner: Neutral - Actor349: tc03 - Location: 45,44 - Owner: Neutral - Actor350: tc01 - Location: 44,42 - Owner: Neutral - Actor351: tc02 - Location: 46,40 - Owner: Neutral - Actor352: t12 - Location: 42,45 - Owner: Neutral - Actor353: t05 - Location: 67,84 - Owner: Neutral - Actor354: tc02 - Location: 64,89 - Owner: Neutral - Actor355: tc05 - Location: 61,89 - Owner: Neutral - Actor356: t16 - Location: 60,90 - Owner: Neutral - Actor357: t03 - Location: 64,91 - Owner: Neutral - Actor358: t08 - Location: 66,87 - Owner: Neutral - Actor359: t06 - Location: 66,85 - Owner: Neutral - Actor360: tc04 - Location: 63,83 - Owner: Neutral - Actor361: t14 - Location: 64,85 - Owner: Neutral - Actor362: t06 - Location: 63,86 - Owner: Neutral - Actor363: tc02 - Location: 63,81 - Owner: Neutral - Actor364: tc01 - Location: 65,80 - Owner: Neutral - Actor365: t13 - Location: 69,78 - Owner: Neutral - Actor366: t05 - Location: 68,78 - Owner: Neutral - Actor367: t05 - Location: 60,81 - Owner: Neutral - Actor368: t06 - Location: 59,82 - Owner: Neutral - Actor369: tc02 - Location: 60,82 - Owner: Neutral - Actor370: t01 - Location: 61,85 - Owner: Neutral - Actor371: v07 - Location: 60,87 - Owner: Neutral - Actor372: t02 - Location: 62,87 - Owner: Neutral - Actor373: tc03 - Location: 58,77 - Owner: Neutral - Actor374: tc04 - Location: 60,77 - Owner: Neutral - Actor375: tc05 - Location: 61,71 - Owner: Neutral - Actor376: t07 - Location: 60,73 - Owner: Neutral - Actor377: t05 - Location: 61,74 - Owner: Neutral - Actor378: t16 - Location: 63,73 - Owner: Neutral - Actor379: t08 - Location: 59,79 - Owner: Neutral - Actor380: t13 - Location: 56,79 - Owner: Neutral - Actor381: tc01 - Location: 57,73 - Owner: Neutral - Actor382: t16 - Location: 58,69 - Owner: Neutral - Actor383: t01 - Location: 58,66 - Owner: Neutral - Actor273: t02 - Location: 61,58 - Owner: Neutral - Actor385: t06 - Location: 62,60 - Owner: Neutral - Actor386: t01 - Location: 72,79 - Owner: Neutral - Actor387: t08 - Location: 80,71 - Owner: Neutral - Actor388: t08 - Location: 83,46 - Owner: Neutral - Actor389: t05 - Location: 66,75 - Owner: Neutral - Actor390: t13 - Location: 66,76 - Owner: Neutral - Actor391: t07 - Location: 64,59 - Owner: Neutral - Actor392: t10 - Location: 70,61 - Owner: Neutral - Actor393: tc04 - Location: 41,61 - Owner: Neutral - Actor394: tc04 - Location: 37,62 - Owner: Neutral - Actor395: t10 - Location: 40,63 - Owner: Neutral - Actor396: t01 - Location: 40,62 - Owner: Neutral - Actor397: t02 - Location: 39,63 - Owner: Neutral - Actor398: t05 - Location: 42,64 - Owner: Neutral - Actor399: t13 - Location: 44,62 - Owner: Neutral - Actor400: tc03 - Location: 46,62 - Owner: Neutral - Actor401: tc05 - Location: 48,64 - Owner: Neutral - Actor402: tc02 - Location: 56,61 - Owner: Neutral - Actor403: t01 - Location: 51,61 - Owner: Neutral - Actor404: t16 - Location: 48,60 - Owner: Neutral - Actor405: t13 - Location: 48,59 - Owner: Neutral - Actor406: t12 - Location: 46,60 - Owner: Neutral - Actor407: t05 - Location: 51,57 - Owner: Neutral - Actor408: t08 - Location: 55,58 - Owner: Neutral - Actor409: t08 - Location: 56,67 - Owner: Neutral - Actor410: t02 - Location: 56,63 - Owner: Neutral - Actor411: t14 - Location: 57,64 - Owner: Neutral - Actor412: tc04 - Location: 53,70 - Owner: Neutral - Actor413: tc01 - Location: 55,67 - Owner: Neutral - Actor414: t15 - Location: 56,69 - Owner: Neutral - Actor415: t05 - Location: 51,73 - Owner: Neutral - Actor416: t07 - Location: 51,79 - Owner: Neutral - Actor417: t06 - Location: 52,81 - Owner: Neutral - Actor418: t14 - Location: 50,85 - Owner: Neutral - Actor419: t15 - Location: 41,89 - Owner: Neutral - Actor420: t12 - Location: 33,87 - Owner: Neutral - Actor421: t05 - Location: 36,84 - Owner: Neutral - Actor422: t08 - Location: 39,85 - Owner: Neutral - Actor423: t08 - Location: 38,88 - Owner: Neutral - Actor424: t06 - Location: 44,79 - Owner: Neutral - Actor425: tc02 - Location: 45,77 - Owner: Neutral - Actor426: t16 - Location: 48,99 - Owner: Neutral - Actor427: t07 - Location: 88,47 - Owner: Neutral - Actor428: t08 - Location: 90,49 - Owner: Neutral - Actor429: t15 - Location: 97,70 - Owner: Neutral - Actor430: t16 - Location: 98,69 - Owner: Neutral - Actor431: t06 - Location: 91,77 - Owner: Neutral - Actor432: tc04 - Location: 94,80 - Owner: Neutral - Actor433: t05 - Location: 96,78 - Owner: Neutral - Actor434: t12 - Location: 87,80 - Owner: Neutral - Actor435: t14 - Location: 89,83 - Owner: Neutral - Actor436: tc04 - Location: 105,105 - Owner: Neutral - Actor437: tc02 - Location: 102,105 - Owner: Neutral - Actor438: t16 - Location: 101,106 - Owner: Neutral - Actor439: t08 - Location: 101,105 - Owner: Neutral - Actor440: t05 - Location: 105,102 - Owner: Neutral - Actor441: t03 - Location: 106,103 - Owner: Neutral - Actor442: t07 - Location: 68,91 - Owner: Neutral - Actor443: t13 - Location: 69,87 - Owner: Neutral - Actor444: t08 - Location: 78,102 - Owner: Neutral - Actor445: tc04 - Location: 72,98 - Owner: Neutral - Actor446: tc02 - Location: 74,85 - Owner: Neutral - Actor447: tc03 - Location: 25,74 - Owner: Neutral - Actor448: tc05 - Location: 26,71 - Owner: Neutral - Actor449: t07 - Location: 94,22 - Owner: Neutral - Actor450: e1 - Location: 105,22 - Owner: Creeps - Actor451: t07 - Location: 100,16 - Owner: Neutral - Actor452: t07 - Location: 90,20 - Owner: Neutral - Actor453: t13 - Location: 93,16 - Owner: Neutral - Actor454: t11 - Location: 100,22 - Owner: Neutral - Actor455: t05 - Location: 98,31 - Owner: Neutral - Actor456: tc03 - Location: 101,31 - Owner: Neutral - Actor457: t12 - Location: 99,30 - Owner: Neutral - Actor458: t14 - Location: 91,29 - Owner: Neutral - Actor459: t07 - Location: 89,30 - Owner: Neutral - Actor460: t16 - Location: 81,28 - Owner: Neutral - Actor461: tc04 - Location: 78,25 - Owner: Neutral - Actor462: tc05 - Location: 72,23 - Owner: Neutral - Actor463: tc02 - Location: 65,21 - Owner: Neutral - Actor464: t14 - Location: 63,22 - Owner: Neutral - Actor465: tc04 - Location: 59,15 - Owner: Neutral - Actor466: t01 - Location: 54,15 - Owner: Neutral - Actor467: t02 - Location: 56,15 - Owner: Neutral - Actor468: tc01 - Location: 65,15 - Owner: Neutral - Actor469: ftur - Location: 47,16 - Owner: Creeps - Actor470: tc02 - Location: 57,15 - Owner: Neutral - Actor471: t06 - Location: 54,19 - Owner: Neutral - Actor472: t13 - Location: 58,20 - Owner: Neutral - Actor473: t08 - Location: 61,19 - Owner: Neutral - Actor474: t15 - Location: 69,17 - Owner: Neutral - Actor475: t07 - Location: 48,20 - Owner: Neutral - Actor476: tc02 - Location: 38,17 - Owner: Neutral - Actor477: tc04 - Location: 34,21 - Owner: Neutral - Actor478: tc02 - Location: 32,21 - Owner: Neutral - Actor479: tc01 - Location: 34,18 - Owner: Neutral - Actor480: tc01 - Location: 24,20 - Owner: Neutral - Actor481: t16 - Location: 27,19 - Owner: Neutral - Actor482: t07 - Location: 27,16 - Owner: Neutral - Actor483: tc02 - Location: 20,15 - Owner: Neutral - Actor484: tc04 - Location: 15,15 - Owner: Neutral - Actor485: tc01 - Location: 18,15 - Owner: Neutral - Actor486: t16 - Location: 16,17 - Owner: Neutral - Actor487: t06 - Location: 16,23 - Owner: Neutral - Actor488: tc03 - Location: 16,24 - Owner: Neutral - Actor489: tc01 - Location: 15,25 - Owner: Neutral - Actor490: t14 - Location: 35,15 - Owner: Neutral - Actor491: t16 - Location: 48,16 - Owner: Neutral - Actor492: tc02 - Location: 15,31 - Owner: Neutral - Actor493: tc04 - Location: 15,32 - Owner: Neutral - Actor494: tc05 - Location: 15,34 - Owner: Neutral - Actor495: t14 - Location: 18,28 - Owner: Neutral - Actor496: tc01 - Location: 19,29 - Owner: Neutral - Actor497: t16 - Location: 22,27 - Owner: Neutral - Actor498: t05 - Location: 18,23 - Owner: Neutral - Actor499: t17 - Location: 18,19 - Owner: Neutral - Actor500: t14 - Location: 21,32 - Owner: Neutral - Actor501: tc03 - Location: 21,39 - Owner: Neutral - Actor502: tc05 - Location: 18,42 - Owner: Neutral - Actor503: tc02 - Location: 15,46 - Owner: Neutral - Actor504: t06 - Location: 24,35 - Owner: Neutral - Actor505: t15 - Location: 27,27 - Owner: Neutral - Actor506: tc05 - Location: 27,42 - Owner: Neutral - Actor507: tc02 - Location: 25,43 - Owner: Neutral - Actor508: t14 - Location: 26,45 - Owner: Neutral - Actor509: tc02 - Location: 25,53 - Owner: Neutral - Actor510: t02 - Location: 23,48 - Owner: Neutral - Actor511: tc03 - Location: 22,51 - Owner: Neutral - Actor512: t14 - Location: 21,49 - Owner: Neutral - Actor513: t16 - Location: 20,53 - Owner: Neutral - Actor514: t05 - Location: 17,51 - Owner: Neutral - Actor515: tc02 - Location: 16,58 - Owner: Neutral - Actor516: MSLO.Creeps - Location: 16,60 - Owner: Creeps - Actor517: tc05 - Location: 18,59 - Owner: Neutral - Actor518: tc04 - Location: 17,60 - Owner: Neutral - Actor519: tc03 - Location: 15,61 - Owner: Neutral - Actor520: tc01 - Location: 16,62 - Owner: Neutral - Actor521: tc03 - Location: 20,61 - Owner: Neutral - Actor522: t14 - Location: 18,62 - Owner: Neutral - Actor523: t07 - Location: 28,56 - Owner: Neutral - Actor524: t15 - Location: 30,55 - Owner: Neutral - Actor525: t06 - Location: 29,52 - Owner: Neutral - Actor526: t01 - Location: 39,25 - Owner: Neutral - Actor527: t03 - Location: 39,22 - Owner: Neutral - Actor528: tc03 - Location: 15,95 - Owner: Neutral - Actor529: t07 - Location: 24,61 - Owner: Neutral - Actor530: tc02 - Location: 15,96 - Owner: Neutral - Actor531: tc04 - Location: 15,97 - Owner: Neutral - Actor532: t14 - Location: 15,54 - Owner: Neutral - Actor533: t01 - Location: 17,70 - Owner: Neutral - Actor534: t10 - Location: 17,67 - Owner: Neutral - Actor535: tc01 - Location: 17,79 - Owner: Neutral - Actor536: tc04 - Location: 19,78 - Owner: Neutral - Actor537: tc02 - Location: 18,81 - Owner: Neutral - Actor538: t14 - Location: 17,82 - Owner: Neutral - Actor539: t08 - Location: 16,83 - Owner: Neutral - Actor540: t17 - Location: 16,75 - Owner: Neutral - Actor541: tc04 - Location: 25,104 - Owner: Neutral - Actor542: t16 - Location: 20,64 - Owner: Neutral - Actor543: tc04 - Location: 22,63 - Owner: Neutral - Actor544: t16 - Location: 19,56 - Owner: Neutral - Actor545: t01 - Location: 18,54 - Owner: Neutral - Actor546: t15 - Location: 22,58 - Owner: Neutral - Actor547: t06 - Location: 17,88 - Owner: Neutral - Actor548: t11 - Location: 22,92 - Owner: Neutral - Actor549: t14 - Location: 18,97 - Owner: Neutral - Actor550: t08 - Location: 20,91 - Owner: Neutral - Actor551: tc05 - Location: 28,105 - Owner: Neutral - Actor552: tc04 - Location: 29,107 - Owner: Neutral - Actor553: tc05 - Location: 31,110 - Owner: Neutral - Actor554: tc02 - Location: 27,106 - Owner: Neutral - Actor555: tc01 - Location: 25,107 - Owner: Neutral - Actor556: t14 - Location: 24,106 - Owner: Neutral - Actor557: tc04 - Location: 26,108 - Owner: Neutral - Actor558: t11 - Location: 29,109 - Owner: Neutral - Actor559: t08 - Location: 25,109 - Owner: Neutral - Actor560: tc04 - Location: 27,111 - Owner: Neutral - Actor561: tc02 - Location: 24,110 - Owner: Neutral - Actor562: tc05 - Location: 22,110 - Owner: Neutral - Actor563: t16 - Location: 26,110 - Owner: Neutral - Actor564: t05 - Location: 28,109 - Owner: Neutral - Actor565: t07 - Location: 26,106 - Owner: Neutral - Actor567: tc01 - Location: 32,107 - Owner: Neutral - Actor566: t05 - Location: 28,103 - Owner: Neutral - Actor568: t06 - Location: 30,110 - Owner: Neutral - Actor569: tc04 - Location: 34,108 - Owner: Neutral - Actor570: t10 - Location: 37,108 - Owner: Neutral - Actor571: t16 - Location: 37,109 - Owner: Neutral - Actor572: tc01 - Location: 35,110 - Owner: Neutral - Actor573: t13 - Location: 32,108 - Owner: Neutral - Actor574: tc05 - Location: 39,107 - Owner: Neutral - Actor575: tc04 - Location: 39,108 - Owner: Neutral - Actor576: tc03 - Location: 37,110 - Owner: Neutral - Actor577: tc01 - Location: 40,110 - Owner: Neutral - Actor578: tc03 - Location: 58,106 - Owner: Neutral - Actor579: t14 - Location: 55,107 - Owner: Neutral - Actor580: tc04 - Location: 54,108 - Owner: Neutral - Actor581: tc05 - Location: 51,108 - Owner: Neutral - Actor582: tc03 - Location: 49,108 - Owner: Neutral - Actor583: tc04 - Location: 46,108 - Owner: Neutral - Actor584: tc02 - Location: 42,109 - Owner: Neutral - Actor585: tc01 - Location: 49,109 - Owner: Neutral - Actor586: t15 - Location: 48,110 - Owner: Neutral - Actor587: tc03 - Location: 46,111 - Owner: Neutral - Actor588: tc01 - Location: 44,109 - Owner: Neutral - Actor589: tc02 - Location: 51,110 - Owner: Neutral - Actor590: t01 - Location: 42,110 - Owner: Neutral - Actor591: t05 - Location: 44,110 - Owner: Neutral - Actor592: t12 - Location: 32,109 - Owner: Neutral - Actor593: t16 - Location: 43,111 - Owner: Neutral - Actor594: t01 - Location: 31,103 - Owner: Neutral - Actor595: t14 - Location: 38,105 - Owner: Neutral - Actor596: t07 - Location: 52,104 - Owner: Neutral - Actor597: tc04 - Location: 61,108 - Owner: Neutral - Actor384: t05 - Location: 58,110 - Owner: Neutral - Actor599: t14 - Location: 65,110 - Owner: Neutral - Actor600: tc01 - Location: 63,110 - Owner: Neutral - Actor601: t01 - Location: 67,110 - Owner: Neutral - Actor602: tc02 - Location: 69,110 - Owner: Neutral - Actor603: tc04 - Location: 72,109 - Owner: Neutral - Actor604: t16 - Location: 71,109 - Owner: Neutral - Actor605: tc04 - Location: 86,109 - Owner: Neutral - Actor606: tc05 - Location: 89,108 - Owner: Neutral - Actor607: tc03 - Location: 82,108 - Owner: Neutral - Actor608: t02 - Location: 81,107 - Owner: Neutral - Actor609: tc01 - Location: 84,110 - Owner: Neutral - Actor610: t16 - Location: 84,108 - Owner: Neutral - Actor611: tc03 - Location: 78,110 - Owner: Neutral - Actor612: t13 - Location: 76,110 - Owner: Neutral - Actor613: t08 - Location: 69,103 - Owner: Neutral - Actor614: t13 - Location: 64,102 - Owner: Neutral - Actor615: t16 - Location: 65,100 - Owner: Neutral - Actor616: t12 - Location: 67,106 - Owner: Neutral - Actor617: tc03 - Location: 94,110 - Owner: Neutral - Actor618: t16 - Location: 94,109 - Owner: Neutral - Actor619: t14 - Location: 92,110 - Owner: Neutral - Actor620: t07 - Location: 81,110 - Owner: Neutral - Actor621: t01 - Location: 89,110 - Owner: Neutral - Actor622: t07 - Location: 19,102 - Owner: Neutral - Actor623: t02 - Location: 18,101 - Owner: Neutral - Actor624: t12 - Location: 20,101 - Owner: Neutral - Actor625: tc05 - Location: 76,104 - Owner: Neutral - Actor626: t01 - Location: 76,105 - Owner: Neutral - Actor627: t02 - Location: 86,104 - Owner: Neutral - Actor628: t13 - Location: 89,103 - Owner: Neutral - Actor629: tc02 - Location: 93,103 - Owner: Neutral - Actor630: t12 - Location: 93,106 - Owner: Neutral - Actor631: tc01 - Location: 98,105 - Owner: Neutral - Actor632: tc03 - Location: 97,104 - Owner: Neutral - Actor633: t14 - Location: 95,104 - Owner: Neutral - Actor634: t06 - Location: 65,104 - Owner: Neutral - Actor635: t01 - Location: 92,91 - Owner: Neutral - Actor636: tc05 - Location: 99,99 - Owner: Neutral - Actor637: t12 - Location: 84,95 - Owner: Neutral - Actor638: t07 - Location: 81,90 - Owner: Neutral - Actor639: t14 - Location: 99,108 - Owner: Neutral - Actor640: t16 - Location: 109,109 - Owner: Neutral - Actor641: tc04 - Location: 107,94 - Owner: Neutral - Actor642: tc05 - Location: 109,95 - Owner: Neutral - Actor643: t16 - Location: 110,97 - Owner: Neutral - Actor644: t02 - Location: 110,93 - Owner: Neutral - Actor645: t15 - Location: 111,99 - Owner: Neutral - Actor646: t12 - Location: 110,103 - Owner: Neutral - Actor647: t14 - Location: 102,94 - Owner: Neutral - Actor648: t10 - Location: 108,90 - Owner: Neutral - Actor649: t05 - Location: 104,89 - Owner: Neutral - Actor650: t07 - Location: 102,90 - Owner: Neutral - Actor651: t08 - Location: 104,100 - Owner: Neutral - Actor652: tc05 - Location: 103,81 - Owner: Neutral - Actor653: tc02 - Location: 103,78 - Owner: Neutral - Actor654: t12 - Location: 105,80 - Owner: Neutral - Actor655: t05 - Location: 103,79 - Owner: Neutral - Actor656: t16 - Location: 101,87 - Owner: Neutral - Actor657: tc02 - Location: 111,86 - Owner: Neutral - Actor658: tc01 - Location: 111,83 - Owner: Neutral - Actor659: tc01 - Location: 108,76 - Owner: Neutral - Actor660: t10 - Location: 107,73 - Owner: Neutral - Actor661: v12 - Location: 104,72 - Owner: Neutral - Actor662: t03 - Location: 104,70 - Owner: Neutral - Actor663: t05 - Location: 103,70 - Owner: Neutral - Actor664: t08 - Location: 107,62 - Owner: Neutral - Actor665: t13 - Location: 107,64 - Owner: Neutral - Actor666: t16 - Location: 104,62 - Owner: Neutral - Actor667: t07 - Location: 107,83 - Owner: Neutral - Actor668: tc02 - Location: 106,87 - Owner: Neutral - Actor669: t13 - Location: 106,85 - Owner: Neutral - Actor670: t07 - Location: 111,76 - Owner: Neutral - Actor671: t02 - Location: 107,68 - Owner: Neutral - Actor672: t01 - Location: 104,75 - Owner: Neutral - Actor673: t16 - Location: 107,36 - Owner: Neutral - Actor674: t08 - Location: 109,43 - Owner: Neutral - Actor282: MSLO.Creeps - Location: 61,111 - Owner: Creeps - Actor598: tc02 - Location: 59,109 - Owner: Neutral - Actor675: t06 - Location: 68,110 - Owner: Neutral - Actor676: brik - Location: 89,26 - Owner: Neutral - Actor677: v16 - Location: 76,61 - Owner: Neutral - Actor678: mine - Location: 21,95 - Owner: Neutral - Actor679: mine - Location: 30,35 - Owner: Neutral - Actor680: mine - Location: 93,97 - Owner: Neutral - Actor681: dog - Location: 63,50 - Owner: Neutral - -Smudges: - -Rules: - SAM.Creeps: - Inherits: SAM - Building: - Power: 0 - -Buildable: - -RequiresPower: - RenderBuildingTurreted: - Image: SAM - TSLA.Creeps: - Inherits: TSLA - Building: - -Buildable: - -RequiresPower: - Power: 0 - RenderBuildingCharge: - Image: TSLA - DOME.Creeps: - Inherits: DOME - Building: - Power: 0 - -Buildable: - -RequiresPower: - RenderBuilding: - Image: DOME - MSLO.Creeps: - Inherits: MSLO - Building: - Power: 0 - -Buildable: - -RequiresPower: - RenderBuilding: - Image: MSLO - PDOX.Creeps: - Inherits: PDOX - Building: - Power: 0 - -Buildable: - -RequiresPower: - RenderBuilding: - Image: PDOX - STEK.Creeps: - Inherits: STEK - Building: - Power: 0 - -Buildable: - RenderBuilding: - Image: STEK - -Sequences: - -VoxelSequences: - -Weapons: - -Voices: - -Notifications: - -Translations: diff --git a/mods/ra/maps/koth-island-hoppers/map.bin b/mods/ra/maps/koth-island-hoppers/map.bin deleted file mode 100644 index c09a2ffb1d729f1182329ea674593d17530c9527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81925 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 diff --git a/mods/ra/maps/koth-island-hoppers/map.yaml b/mods/ra/maps/koth-island-hoppers/map.yaml deleted file mode 100644 index 1a08bece6b..0000000000 --- a/mods/ra/maps/koth-island-hoppers/map.yaml +++ /dev/null @@ -1,186 +0,0 @@ -Selectable: True - -MapFormat: 6 - -RequiresMod: ra - -Title: Island Hoppers - -Description: Island Hoppers, Modified for King of the Hill - -Author: Westwood Studios - -Tileset: SNOW - -MapSize: 128,128 - -Bounds: 11,19,96,96 - -UseAsShellmap: False - -Type: KotH - -Options: - -Players: - PlayerReference@Neutral: - Name: Neutral - OwnsWorld: True - NonCombatant: True - Race: allies - PlayerReference@Multi0: - Name: Multi0 - Playable: True - Race: Random - Enemies: Creeps - PlayerReference@Multi1: - Name: Multi1 - Playable: True - Race: Random - Enemies: Creeps - PlayerReference@Multi2: - Name: Multi2 - Playable: True - Race: Random - Enemies: Creeps - PlayerReference@Multi3: - Name: Multi3 - Playable: True - Race: Random - Enemies: Creeps - PlayerReference@Creeps: - Name: Creeps - NonCombatant: True - Race: Random - Enemies: Multi0,Multi1,Multi2,Multi3 - -Actors: - Actor0: miss - Location: 60,81 - Owner: Neutral - Actor1: miss - Location: 60,44 - Owner: Neutral - Actor2: t08 - Location: 59,76 - Owner: Neutral - Actor3: tc05 - Location: 53,99 - Owner: Neutral - Actor4: tc05 - Location: 18,68 - Owner: Neutral - Actor5: tc05 - Location: 59,34 - Owner: Neutral - Actor6: tc04 - Location: 98,68 - Owner: Neutral - Actor7: tc04 - Location: 39,24 - Owner: Neutral - Actor8: tc04 - Location: 80,105 - Owner: Neutral - Actor9: tc03 - Location: 41,105 - Owner: Neutral - Actor10: tc02 - Location: 18,80 - Owner: Neutral - Actor11: tc02 - Location: 57,23 - Owner: Neutral - Actor12: tc01 - Location: 98,81 - Owner: Neutral - Actor13: t17 - Location: 97,50 - Owner: Neutral - Actor14: t16 - Location: 67,101 - Owner: Neutral - Actor15: t15 - Location: 31,103 - Owner: Neutral - Actor16: t14 - Location: 21,48 - Owner: Neutral - Actor17: t11 - Location: 62,26 - Owner: Neutral - Actor18: t10 - Location: 93,66 - Owner: Neutral - Actor19: mine - Location: 44,59 - Owner: Neutral - Actor20: mine - Location: 87,48 - Owner: Neutral - Actor21: mine - Location: 84,89 - Owner: Neutral - Actor22: mine - Location: 45,86 - Owner: Neutral - Actor23: mine - Location: 70,26 - Owner: Neutral - Actor24: mine - Location: 66,103 - Owner: Neutral - Actor25: mine - Location: 46,102 - Owner: Neutral - Actor26: mine - Location: 50,31 - Owner: Neutral - spawn0: mpspawn - Location: 41,53 - Owner: Neutral - spawn1: mpspawn - Location: 79,84 - Owner: Neutral - spawn2: mpspawn - Location: 81,50 - Owner: Neutral - spawn3: mpspawn - Location: 40,84 - Owner: Neutral - -Smudges: - -Rules: - MISS: - ProximityCapturable: - MustBeClear: true - StrategicPoint: - Critical: false - Tooltip: - Name: Strategic Point - Building: - BaseNormal: false - RevealsShroud: - Range: 20c0 - Invulnerable: - -Selectable: - -TargetableBuilding: - Player: - StrategicVictoryConditions: - TicksToHold: 3000 - ResetOnHoldLost: true - RatioRequired: 1 - CriticalRatioRequired: 1 - -Sequences: - -VoxelSequences: - -Weapons: - -Voices: - -Notifications: - -Translations: diff --git a/mods/ra/maps/mad-scramble.oramap b/mods/ra/maps/mad-scramble.oramap deleted file mode 100644 index cfb4997b0e9d1065c40265ce7f595cee763c2b9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12238 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 E7aueN$N&HU diff --git a/mods/ra/maps/nishnekolymsk.oramap b/mods/ra/maps/nishnekolymsk.oramap deleted file mode 100644 index e58cf9c219c9e351e4fd5cff661ab98e919c18ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43063 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 O>R)#LS2vaXr}tl>sX*rd diff --git a/mods/ra/maps/strip-mine.oramap b/mods/ra/maps/strip-mine.oramap deleted file mode 100644 index 22befac689e7a24c3b30fc16e849d0d8c2c30ef8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10684 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 q=;r@g|2s Date: Sat, 8 Mar 2014 00:32:38 +1300 Subject: [PATCH 4/4] Update CHANGELOG for removed maps --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 0bf73eea5e..e05dd40ce9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -48,6 +48,7 @@ NEW: Added a desert variation of the Missile Silo by Kilkakon. Removed the temperate shellmap and improved the design and performance of the desert shellmap. Removed the hardcoded missions. These will be later reimplemented. + Removed maps: Battle Lake, Crossing the River, Doughnut Hole, Ice Woods, Island Hoppers (KOTH), Mad Scramble, Nishnekolymsk, Strip Mine Tiberian Dawn: Chinook rotors now counter-rotate. Commando can now plant C4 on bridges.