Much better yak management. Map improvements.

This commit is contained in:
Scott_NZ
2012-11-11 23:23:32 +13:00
parent 93e951eb75
commit 1f8fd404e5
4 changed files with 317 additions and 318 deletions

View File

@@ -236,10 +236,10 @@ namespace OpenRA.Mods.RA.Missions
}
if (objectives[DestroySamSitesID].Status == ObjectiveStatus.InProgress)
{
if ((sam1.Destroyed || sam1.Owner != soviets) &&
(sam2.Destroyed || sam2.Owner != soviets) &&
(sam3.Destroyed || sam3.Owner != soviets) &&
(sam4.Destroyed || sam4.Owner != soviets))
if ((sam1.Destroyed || sam1.Owner != soviets)
&& (sam2.Destroyed || sam2.Owner != soviets)
&& (sam3.Destroyed || sam3.Owner != soviets)
&& (sam4.Destroyed || sam4.Owner != soviets))
{
objectives[DestroySamSitesID].Status = ObjectiveStatus.Completed;
objectives[ExtractEinsteinID].Status = ObjectiveStatus.InProgress;

View File

@@ -64,12 +64,14 @@ namespace OpenRA.Mods.RA.Missions
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 sovietAirfield1;
@@ -78,8 +80,9 @@ namespace OpenRA.Mods.RA.Missions
Actor sovietAirfield4;
static readonly string[] SovietVehicles = { "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "v2rl", "v2rl", "ftrk", "ftrk", "apc", "apc", "apc" };
const int SovietAttackGroupSize = 5;
const int YakTicks = 2000;
const int SovietAttackGroupSize = 3;
const int YakSpawnTicks = 2000;
const int MaxNumberYaks = 4;
int attackAtFrame;
int attackAtFrameIncrement;
@@ -127,7 +130,7 @@ namespace OpenRA.Mods.RA.Missions
}
if (world.FrameNumber == 1)
{
SpawnAlliedUnits();
SpawnAlliedMcvs();
evacuateWidget = new InfoWidget("", new float2(Game.viewport.Width * 0.35f, Game.viewport.Height * 0.9f));
Ui.Root.AddChild(evacuateWidget);
UpdateUnitsEvacuated();
@@ -138,11 +141,16 @@ namespace OpenRA.Mods.RA.Missions
attackAtFrame += attackAtFrameIncrement;
attackAtFrameIncrement = Math.Max(attackAtFrameIncrement - 5, 100);
}
if (world.FrameNumber % YakTicks == 1 && objectives[AirbaseID].Status != ObjectiveStatus.Completed)
if (world.FrameNumber % YakSpawnTicks == 0 && SovietAircraft().Count() < MaxNumberYaks)
{
AirStrafe(YakName);
SpawnSovietAircraft();
}
if (objectives[AirbaseID].Status != ObjectiveStatus.Completed)
{
ManageSovietAircraft();
}
ManageSovietUnits();
ManageSovietAircraft();
ManageSovietOre();
EvacuateAlliedUnits(exit1TopLeft.CenterLocation, exit1BottomRight.CenterLocation, exit1ExitPoint.Location);
EvacuateAlliedUnits(exit2TopLeft.CenterLocation, exit2BottomRight.CenterLocation, exit2ExitPoint.Location);
@@ -160,51 +168,72 @@ namespace OpenRA.Mods.RA.Missions
res.TakeCash(res.Cash);
}
void AirStrafe(string withActor)
void ManageSovietAircraft()
{
var spawnPoint = world.ChooseRandomEdgeCell();
var aircraft = world.Actors.Where(
a => a.HasTrait<AttackPlane>() && a.Trait<LimitedAmmo>().FullAmmo() && a.Trait<Plane>().Altitude == 0
&& a.Owner == soviets && a.IsIdle && a.IsInWorld);
if (aircraft.Count() < 4)
var enemies = world.Actors.Where(u => (u.Owner == allies1 || u.Owner == allies2) && ((u.HasTrait<Building>() && !u.HasTrait<Wall>()) || u.HasTrait<Mobile>()) && u.IsInWorld && !u.IsDead());
foreach (var a in SovietAircraft())
{
var a = world.CreateActor(withActor, new TypeDictionary
{
new LocationInit(spawnPoint),
new OwnerInit(soviets),
new AltitudeInit(Rules.Info[withActor].Traits.Get<PlaneInfo>().CruiseAltitude)
});
aircraft = aircraft.Concat(new[] { a });
}
foreach (var a in aircraft)
{
AirStrafe(a);
var plane = a.Trait<Plane>();
var ammo = a.Trait<LimitedAmmo>();
if ((plane.Altitude == 0 && ammo.FullAmmo()) || (plane.Altitude != 0 && ammo.HasAmmo()))
{
if (!a.IsIdle && a.GetCurrentActivity().GetType() != typeof(FlyAttack))
{
a.CancelActivity();
}
var enemy = enemies.OrderBy(u => (a.CenterLocation - u.CenterLocation).LengthSquared).FirstOrDefault();
if (enemy != null)
{
if (plane.Altitude == 0)
{
plane.UnReserve();
}
a.QueueActivity(new FlyAttack(Target.FromActor(enemy)));
}
}
else if (plane.Altitude != 0 && !LandIsQueued(a))
{
a.CancelActivity();
a.QueueActivity(new ReturnToBase(a, null));
a.QueueActivity(new ResupplyAircraft());
}
}
}
void AirStrafe(Actor self)
bool LandIsQueued(Actor actor)
{
var enemies = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == allies1 || u.Owner == allies2) && ((u.HasTrait<Building>() && !u.HasTrait<Wall>()) || u.HasTrait<Mobile>()));
var targetEnemy = enemies.OrderBy(u => (self.CenterLocation - u.CenterLocation).LengthSquared).FirstOrDefault();
if (targetEnemy != null && self.Trait<LimitedAmmo>().HasAmmo())
var a = actor.GetCurrentActivity();
for (;;)
{
self.QueueActivity(new FlyAttack(Target.FromActor(targetEnemy)));
self.QueueActivity(new CallFunc(() => AirStrafe(self)));
}
else
{
self.QueueActivity(new FlyOffMap());
self.QueueActivity(new RemoveSelf());
if (a == null) { return false; }
if (a.GetType() == typeof(ReturnToBase) || a.GetType() == typeof(Land)) { return true; }
a = a.NextActivity;
}
}
void SpawnSovietAircraft()
{
var spawnPoint = world.ChooseRandomEdgeCell();
world.CreateActor(YakName, new TypeDictionary
{
new LocationInit(spawnPoint),
new OwnerInit(soviets),
new AltitudeInit(Rules.Info[YakName].Traits.Get<PlaneInfo>().CruiseAltitude)
});
}
IEnumerable<Actor> SovietAircraft()
{
return world.Actors.Where(a => a.HasTrait<AttackPlane>() && a.Owner == soviets && a.IsInWorld && !a.IsDead());
}
void CheckSovietAirbase()
{
if (objectives[AirbaseID].Status != ObjectiveStatus.Completed &&
(sovietAirfield1.Destroyed || sovietAirfield1.Owner != soviets) &&
(sovietAirfield2.Destroyed || sovietAirfield2.Owner != soviets) &&
(sovietAirfield3.Destroyed || sovietAirfield3.Owner != soviets) &&
(sovietAirfield4.Destroyed || sovietAirfield4.Owner != soviets))
if (objectives[AirbaseID].Status != ObjectiveStatus.Completed
&& (sovietAirfield1.Destroyed || sovietAirfield1.Owner != soviets)
&& (sovietAirfield2.Destroyed || sovietAirfield2.Owner != soviets)
&& (sovietAirfield3.Destroyed || sovietAirfield3.Owner != soviets)
&& (sovietAirfield4.Destroyed || sovietAirfield4.Owner != soviets))
{
objectives[AirbaseID].Status = ObjectiveStatus.Completed;
OnObjectivesUpdated(true);
@@ -255,7 +284,7 @@ namespace OpenRA.Mods.RA.Missions
}
}
void SpawnAlliedUnits()
void SpawnAlliedMcvs()
{
var unit = world.CreateActor(McvName, new TypeDictionary
{
@@ -317,14 +346,14 @@ namespace OpenRA.Mods.RA.Missions
allies2 = w.Players.SingleOrDefault(p => p.InternalName == "Allies2");
if (allies2 != null)
{
attackAtFrame = 400;
attackAtFrameIncrement = 400;
attackAtFrame = 500;
attackAtFrameIncrement = 500;
}
else
{
allies2 = allies1;
attackAtFrame = 500;
attackAtFrameIncrement = 500;
attackAtFrame = 600;
attackAtFrameIncrement = 600;
}
allies = w.Players.Single(p => p.InternalName == "Allies");
soviets = w.Players.Single(p => p.InternalName == "Soviets");
@@ -344,13 +373,15 @@ namespace OpenRA.Mods.RA.Missions
sovietEntryPoint3 = actors["SovietEntryPoint3"];
sovietEntryPoint4 = actors["SovietEntryPoint4"];
sovietEntryPoint5 = actors["SovietEntryPoint5"];
sovietEntryPoints = new[] { sovietEntryPoint1, sovietEntryPoint2, sovietEntryPoint3, sovietEntryPoint4, sovietEntryPoint5 }.Select(p => p.Location).ToArray();
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"];
sovietRallyPoints = new[] { sovietRallyPoint1, sovietRallyPoint2, sovietRallyPoint3, sovietRallyPoint4, sovietRallyPoint5 }.Select(p => p.Location).ToArray();
sovietRallyPoint6 = actors["SovietRallyPoint6"];
sovietRallyPoints = new[] { sovietRallyPoint1, sovietRallyPoint2, sovietRallyPoint3, sovietRallyPoint4, sovietRallyPoint5, sovietRallyPoint6 }.Select(p => p.Location).ToArray();
sovietAirfield1 = actors["SovietAirfield1"];
sovietAirfield2 = actors["SovietAirfield2"];
sovietAirfield3 = actors["SovietAirfield3"];

Binary file not shown.

View File

@@ -114,8 +114,8 @@ Actors:
Actor53: tc03
Location: 138,53
Owner: Neutral
Actor2: tc04
Location: 53,43
Actor2: tc05
Location: 64,44
Owner: Neutral
Actor57: tc04
Location: 43,19
@@ -528,11 +528,8 @@ Actors:
Actor322: t07
Location: 112,65
Owner: Neutral
Actor321: t07
Location: 93,59
Owner: Neutral
Actor320: t07
Location: 95,51
Actor246: t06
Location: 94,64
Owner: Neutral
Actor303: t06
Location: 101,69
@@ -558,9 +555,6 @@ Actors:
Actor360: t11
Location: 122,76
Owner: Neutral
Actor173: oilb
Location: 146,46
Owner: Neutral
Actor187: tc04
Location: 99,27
Owner: Neutral
@@ -570,21 +564,12 @@ Actors:
Actor203: tc05
Location: 67,64
Owner: Neutral
Actor172: barl
Location: 74,60
Owner: Neutral
Actor295: t05
Location: 89,54
Owner: Neutral
Actor350: t10
Location: 87,22
Owner: Neutral
Actor17: proc
Location: 168,62
Owner: Soviets
Actor170: oilb
Location: 72,58
Owner: Neutral
Actor291: t05
Location: 91,33
Owner: Neutral
@@ -606,15 +591,9 @@ Actors:
Actor269: t03
Location: 84,37
Owner: Neutral
Actor256: t02
Location: 106,42
Owner: Neutral
Actor271: t03
Location: 79,57
Owner: Neutral
Actor352: t10
Location: 88,57
Owner: Neutral
SovietEntryPoint4: waypoint
Location: 115,16
Owner: Neutral
@@ -624,8 +603,8 @@ Actors:
Actor221: tc01
Location: 113,73
Owner: Neutral
Actor224: tc01
Location: 65,42
Actor215: t05
Location: 72,40
Owner: Neutral
Actor267: t02
Location: 123,62
@@ -636,9 +615,6 @@ Actors:
Actor220: tc01
Location: 117,40
Owner: Neutral
Actor218: tc01
Location: 89,63
Owner: Neutral
Actor158: tc01
Location: 23,35
Owner: Neutral
@@ -654,8 +630,8 @@ Actors:
Actor211: tc02
Location: 75,74
Owner: Neutral
Actor215: tc02
Location: 71,38
Actor213: tc04
Location: 55,43
Owner: Neutral
Actor214: tc02
Location: 79,47
@@ -663,9 +639,6 @@ Actors:
Actor38: t15
Location: 30,52
Owner: Neutral
Actor44: t01
Location: 55,56
Owner: Neutral
Actor407: t13
Location: 32,62
Owner: Neutral
@@ -741,9 +714,6 @@ Actors:
Actor55: t01
Location: 37,37
Owner: Neutral
Actor56: t01
Location: 94,41
Owner: Neutral
Actor760: t03
Location: 175,27
Owner: Neutral
@@ -777,9 +747,6 @@ Actors:
Actor780: t03
Location: 79,39
Owner: Neutral
Actor171: brl3
Location: 74,59
Owner: Neutral
Actor398: t05
Location: 32,64
Owner: Neutral
@@ -999,26 +966,8 @@ Actors:
Exit2ExitPoint: waypoint
Location: 16,29
Owner: Neutral
Actor174: oilb
Location: 143,46
Owner: Neutral
Actor169: oilb
Location: 72,54
Owner: Neutral
Actor175: brl3
Location: 148,47
Owner: Neutral
Actor176: barl
Location: 142,47
Owner: Neutral
Actor177: brl3
Location: 142,46
Owner: Neutral
Actor179: barl
Location: 145,48
Owner: Neutral
Actor180: barl
Location: 74,56
Actor177: oilb
Location: 86,52
Owner: Neutral
SovietEntryPoint3: waypoint
Location: 105,79
@@ -1030,19 +979,19 @@ Actors:
Location: 89,79
Owner: Neutral
SovietRallyPoint2: waypoint
Location: 94,33
Location: 93,20
Owner: Neutral
SovietRallyPoint1: waypoint
Location: 83,61
Location: 89,75
Owner: Neutral
SovietRallyPoint3: waypoint
Location: 112,49
Location: 105,75
Owner: Neutral
SovietRallyPoint4: waypoint
Location: 116,30
Location: 115,20
Owner: Neutral
SovietRallyPoint5: waypoint
Location: 131,63
Location: 130,75
Owner: Neutral
Actor152: brl3
Location: 157,66
@@ -1158,9 +1107,6 @@ Actors:
Actor244: e1
Location: 160,60
Owner: Soviets
Actor245: fenc
Location: 63,33
Owner: Soviets
Actor206: fenc
Location: 158,53
Owner: Soviets
@@ -1206,220 +1152,242 @@ Actors:
Actor202: fenc
Location: 147,69
Owner: Soviets
Actor258: fenc
Location: 63,34
Owner: Soviets
Actor259: fenc
Location: 63,35
Owner: Soviets
Actor260: fenc
Location: 63,36
Owner: Soviets
Actor261: fenc
Location: 64,36
Owner: Soviets
Actor262: fenc
Location: 64,37
Owner: Soviets
Actor263: fenc
Location: 65,37
Owner: Soviets
Actor265: fenc
Location: 66,37
Owner: Soviets
Actor266: fenc
Location: 66,38
Owner: Soviets
Actor270: fenc
Location: 66,39
Owner: Soviets
Actor272: fenc
Location: 66,40
Owner: Soviets
Actor275: fenc
Location: 66,41
Owner: Soviets
Actor276: fenc
Location: 65,41
Owner: Soviets
Actor277: fenc
Location: 64,41
Owner: Soviets
Actor281: fenc
Location: 64,42
Owner: Soviets
Actor282: ftur
Location: 68,38
Owner: Soviets
Actor285: e1
Location: 67,41
Owner: Soviets
Actor286: e1
Location: 68,35
Owner: Soviets
Actor288: e2
Location: 64,34
Owner: Soviets
Actor290: dog
Location: 67,42
Owner: Soviets
Actor292: e2
Location: 165,59
Owner: Soviets
Actor293: fenc
Location: 61,63
Owner: Soviets
Actor297: fenc
Location: 61,65
Owner: Soviets
Actor299: fenc
Location: 62,65
Owner: Soviets
Actor300: fenc
Location: 62,66
Owner: Soviets
Actor294: fenc
Location: 61,64
Owner: Soviets
Actor308: dog
Location: 61,67
Owner: Soviets
Actor304: fenc
Location: 62,70
Owner: Soviets
Actor305: fenc
Location: 62,71
Owner: Soviets
Actor306: fenc
Location: 62,72
Owner: Soviets
Actor301: ftur
Location: 64,66
Owner: Soviets
Actor309: e1
Location: 63,69
Owner: Soviets
Actor311: e1
Location: 62,67
Owner: Soviets
Actor313: ftur
Location: 130,29
Owner: Soviets
Actor318: v02
Location: 91,54
Actor232: t01
Location: 72,43
Owner: Neutral
Actor317: v01.sniper
Location: 96,54
Owner: Soviets
Actor316: e1
Location: 130,31
Owner: Soviets
Actor319: fenc
Location: 127,27
Owner: Soviets
Actor324: fenc
Location: 127,28
Owner: Soviets
Actor325: fenc
Location: 127,29
Owner: Soviets
Actor328: fenc
Location: 127,30
Owner: Soviets
Actor330: v04
Location: 101,54
Actor224: tc02
Location: 58,46
Owner: Neutral
Actor332: v05
Location: 102,51
Actor170: mine
Location: 114,55
Owner: Neutral
Actor334: v06
Location: 91,60
Owner: Neutral
Actor336: v04
Location: 87,56
Owner: Neutral
Actor337: v07
Location: 106,55
Owner: Neutral
Actor339: v09
Location: 92,53
Owner: Neutral
Actor340: v10
Location: 94,53
Owner: Neutral
Actor341: wood
Location: 100,49
Owner: Neutral
Actor342: wood
Location: 99,49
Owner: Neutral
Actor343: wood
Location: 98,49
Owner: Neutral
Actor344: wood
Location: 97,49
Owner: Neutral
Actor347: wood
Location: 96,49
Owner: Neutral
Actor348: wood
Location: 95,49
Owner: Neutral
Actor349: wood
Location: 94,49
Owner: Neutral
Actor351: wood
Location: 93,49
Owner: Neutral
Actor353: wood
Location: 92,49
Owner: Neutral
Actor355: wood
Location: 91,49
Owner: Neutral
Actor358: v17
Location: 91,62
Owner: Neutral
Actor357: tc05
Location: 88,48
Actor169: mine
Location: 113,57
Owner: Neutral
Allies2MovePoint: waypoint
Location: 167,38
Owner: Neutral
Actor359: powr
Location: 104,4
Owner: Soviets
Actor361: powr
Location: 106,4
Owner: Soviets
Actor362: powr
Location: 104,7
Owner: Soviets
Actor413: powr
Location: 106,7
Owner: Soviets
Actor414: e1
Location: 98,58
Owner: Soviets
Actor415: e1
Location: 90,56
Owner: Soviets
Actor416: dog
Location: 97,57
Owner: Soviets
Actor417: e1
Location: 98,52
Owner: Soviets
Actor3: silo
Location: 172,59
Owner: Soviets
Actor33: kenn
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
Actor176: brl3
Location: 84,51
Owner: Neutral
Actor172: t10
Location: 61,50
Owner: Neutral
Actor256: barl
Location: 88,56
Owner: Neutral
Actor255: barl
Location: 87,51
Owner: Neutral
Actor44: t11
Location: 57,54
Owner: Neutral
Actor249: t11
Location: 98,58
Owner: Neutral
Actor245: tc05
Location: 106,43
Owner: Neutral
Actor179: barl
Location: 84,52
Owner: Neutral
Actor236: brl3
Location: 87,55
Owner: Neutral
Actor258: brl3
Location: 88,51
Owner: Neutral
Actor212: oilb
Location: 86,56
Owner: Neutral
Actor174: brl3
Location: 84,55
Owner: Neutral
Actor175: barl
Location: 83,55
Owner: Neutral
Actor173: oilb
Location: 82,56
Owner: Neutral
Actor56: oilb
Location: 82,52
Owner: Neutral
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
Smudges:
Rules:
1TNK.evac:
Inherits: ^Tank
Valued:
Cost: 700
Tooltip:
Name: Light Tank
Health:
HP: 220
Armor:
Type: Heavy
Mobile:
Speed: 4
RevealsShroud:
Range: 4
Turreted:
ROT: 5
AttackTurreted:
PrimaryWeapon: 25mm
PrimaryRecoil: 2
PrimaryRecoilRecovery: 0.5
RenderUnitTurreted:
Image: 1TNK
AutoTarget:
Explodes:
Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall
LeavesHusk:
HuskActor: 1TNK.Husk
2TNK.evac:
Inherits: ^Tank
Valued:
Cost: 850
Tooltip:
Name: Medium Tank
Health:
HP: 450
Armor:
Type: Heavy
Mobile:
Speed: 4
Crushes: wall, atmine, crate, infantry
RevealsShroud:
Range: 5
Turreted:
ROT: 5
AttackTurreted:
PrimaryWeapon: 90mm
PrimaryRecoil: 3
PrimaryRecoilRecovery: 0.9
RenderUnitTurreted:
Image: 2TNK
AutoTarget:
Explodes:
Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall
LeavesHusk:
HuskActor: 2TNK.Husk
Selectable:
Bounds: 30,30
TRUK.evac:
Inherits: ^Vehicle
Valued:
Cost: 500
Tooltip:
Name: Supply Truck
Health:
HP: 110
Armor:
Type: Light
Mobile:
Speed: 4
RevealsShroud:
Range: 3
RenderUnit:
Image: TRUK
AttackMove:
JustMove: yes
JEEP.evac:
Inherits: ^Vehicle
Valued:
Cost: 500
Tooltip:
Name: Ranger
Health:
HP: 150
Armor:
Type: Light
Mobile:
Speed: 4
RevealsShroud:
Range: 8
Turreted:
ROT: 10
AttackTurreted:
PrimaryWeapon: M60mg
PrimaryOffset: 0,0,0,-2
WithMuzzleFlash:
RenderUnitTurreted:
Image: JEEP
AutoTarget:
Player:
-ConquestVictoryConditions:
World:
@@ -1468,9 +1436,6 @@ Rules:
MSLO:
Buildable:
Owner: None
GAP:
Buildable:
Owner: None
SPEN:
Buildable:
Owner: None
@@ -1492,9 +1457,6 @@ Rules:
SAM:
Buildable:
Owner: None
ATEK:
Buildable:
Owner: None
HPAD:
Buildable:
Owner: None
@@ -1531,6 +1493,12 @@ Rules:
CTNK:
Buildable:
Owner: None
MGG:
Buildable:
Queue: Vehicle
BuildPaletteOrder: 150
Prerequisites: atek
Owner: allies
Sequences: