Add more airfields to destroy in Allies 03, and have reinforcements in Allies 02 and Allies 03 come in gradually.
This commit is contained in:
@@ -117,6 +117,7 @@ namespace OpenRA.Mods.RA.Missions
|
||||
"mcv",
|
||||
"truk", "truk", "truk", "truk", "truk", "truk"
|
||||
};
|
||||
int currentReinforcement = -1;
|
||||
|
||||
const int ParabombTicks = 750;
|
||||
|
||||
@@ -217,6 +218,10 @@ namespace OpenRA.Mods.RA.Missions
|
||||
YakStrafe(alliedUnitsNearYakPoint);
|
||||
}
|
||||
}
|
||||
if (currentReinforcement > -1 && currentReinforcement < Reinforcements.Length && world.FrameNumber % 25 == 0)
|
||||
{
|
||||
SpawnAlliedUnit(Reinforcements[currentReinforcement++]);
|
||||
}
|
||||
if (world.FrameNumber % 25 == 0)
|
||||
{
|
||||
BuildSovietUnits();
|
||||
@@ -419,22 +424,19 @@ namespace OpenRA.Mods.RA.Missions
|
||||
void ReinforcementsTimerExpired(CountdownTimer countdownTimer)
|
||||
{
|
||||
reinforcementsTimerWidget.Visible = false;
|
||||
SendReinforcements();
|
||||
currentReinforcement++;
|
||||
Sound.Play("aarrivs1.aud");
|
||||
}
|
||||
|
||||
void SendReinforcements()
|
||||
void SpawnAlliedUnit(string unit)
|
||||
{
|
||||
foreach (var unit in Reinforcements)
|
||||
var u = world.CreateActor(unit, new TypeDictionary
|
||||
{
|
||||
var u = world.CreateActor(unit, new TypeDictionary
|
||||
{
|
||||
new LocationInit(reinforcementsEntryPoint.Location),
|
||||
new FacingInit(0),
|
||||
new OwnerInit(allies2)
|
||||
});
|
||||
u.QueueActivity(new Move.Move(allies2BasePoint.Location));
|
||||
}
|
||||
new LocationInit(reinforcementsEntryPoint.Location),
|
||||
new FacingInit(0),
|
||||
new OwnerInit(allies2)
|
||||
});
|
||||
u.QueueActivity(new Move.Move(allies2BasePoint.Location));
|
||||
}
|
||||
|
||||
void RushSovietUnits()
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace OpenRA.Mods.RA.Missions
|
||||
Dictionary<int, Objective> objectives = new Dictionary<int, Objective>
|
||||
{
|
||||
{ EvacuateID, new Objective(ObjectiveType.Primary, "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.", ObjectiveStatus.InProgress) },
|
||||
{ AirbaseID, new Objective(ObjectiveType.Secondary, "Destroy the nearby Soviet airbase.", ObjectiveStatus.InProgress) }
|
||||
{ AirbaseID, new Objective(ObjectiveType.Secondary, "Destroy the nearby Soviet airbases.", ObjectiveStatus.InProgress) }
|
||||
};
|
||||
|
||||
const int EvacuateID = 0;
|
||||
@@ -74,19 +74,16 @@ namespace OpenRA.Mods.RA.Missions
|
||||
Actor sovietRallyPoint6;
|
||||
CPos[] sovietRallyPoints;
|
||||
|
||||
Actor sovietAirfield1;
|
||||
Actor sovietAirfield2;
|
||||
Actor sovietAirfield3;
|
||||
Actor sovietAirfield4;
|
||||
Actor[] sovietAirfields;
|
||||
|
||||
static readonly string[] SovietVehicles1 = { "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "v2rl", "v2rl", "ftrk", "ftrk", "apc", "apc", "apc" };
|
||||
static readonly string[] SovietVehicles2 = { "4tnk", "4tnk", "4tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "v2rl", "v2rl", "ftrk", "apc" };
|
||||
const int SovietVehicles2Ticks = 1500 * 20;
|
||||
const int SovietGroupSize = 3;
|
||||
const int MaxNumberYaks = 4;
|
||||
|
||||
const int ReinforcementsTicks = 1500 * 4;
|
||||
static readonly string[] Reinforcements = { MggName, MggName, "2tnk", "2tnk", "2tnk", "2tnk", "1tnk", "1tnk", "jeep", "jeep", "e1", "e1", "e1", "e1", "e3", "e3" };
|
||||
static readonly string[] Reinforcements = { "mgg", "mgg", "2tnk", "2tnk", "2tnk", "2tnk", "1tnk", "1tnk", "jeep", "jeep", "e1", "e1", "e1", "e1", "e3", "e3" };
|
||||
int currentReinforcement;
|
||||
|
||||
int attackAtFrame;
|
||||
int attackAtFrameIncrement;
|
||||
@@ -100,7 +97,6 @@ namespace OpenRA.Mods.RA.Missions
|
||||
|
||||
const string McvName = "mcv";
|
||||
const string YakName = "yak";
|
||||
const string MggName = "mgg";
|
||||
|
||||
void MissionFailed(string text)
|
||||
{
|
||||
@@ -136,7 +132,7 @@ namespace OpenRA.Mods.RA.Missions
|
||||
}
|
||||
if (world.FrameNumber == 1)
|
||||
{
|
||||
SpawnAlliedUnitForPlayers(McvName);
|
||||
SpawnAlliedUnit(McvName);
|
||||
evacuateWidget = new InfoWidget("", new float2(Game.viewport.Width * 0.35f, Game.viewport.Height * 0.9f));
|
||||
Ui.Root.AddChild(evacuateWidget);
|
||||
UpdateUnitsEvacuated();
|
||||
@@ -147,10 +143,16 @@ namespace OpenRA.Mods.RA.Missions
|
||||
attackAtFrame += attackAtFrameIncrement;
|
||||
attackAtFrameIncrement = Math.Max(attackAtFrameIncrement - 5, minAttackAtFrame);
|
||||
}
|
||||
if (world.FrameNumber == ReinforcementsTicks)
|
||||
if (world.FrameNumber >= ReinforcementsTicks && currentReinforcement < Reinforcements.Length)
|
||||
{
|
||||
Sound.Play("reinfor1.aud");
|
||||
SpawnReinforcements();
|
||||
if (world.FrameNumber == ReinforcementsTicks)
|
||||
{
|
||||
Sound.Play("reinfor1.aud");
|
||||
}
|
||||
if (world.FrameNumber % 25 == 0)
|
||||
{
|
||||
SpawnAlliedUnit(Reinforcements[currentReinforcement++]);
|
||||
}
|
||||
}
|
||||
if (world.FrameNumber % 25 == 0)
|
||||
{
|
||||
@@ -229,7 +231,7 @@ namespace OpenRA.Mods.RA.Missions
|
||||
void BuildSovietAircraft()
|
||||
{
|
||||
var queue = MissionUtils.FindQueues(world, soviets, "Plane").FirstOrDefault(q => q.CurrentItem() == null);
|
||||
if (queue == null || SovietAircraft().Count() >= MaxNumberYaks)
|
||||
if (queue == null || SovietAircraft().Count() >= sovietAirfields.Length)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -246,11 +248,7 @@ namespace OpenRA.Mods.RA.Missions
|
||||
|
||||
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 && sovietAirfields.All(a => a.IsDead() || a.Owner != soviets))
|
||||
{
|
||||
objectives[AirbaseID].Status = ObjectiveStatus.Completed;
|
||||
OnObjectivesUpdated(true);
|
||||
@@ -311,15 +309,7 @@ namespace OpenRA.Mods.RA.Missions
|
||||
}
|
||||
}
|
||||
|
||||
void SpawnReinforcements()
|
||||
{
|
||||
foreach (var unit in Reinforcements)
|
||||
{
|
||||
SpawnAlliedUnitForPlayers(unit);
|
||||
}
|
||||
}
|
||||
|
||||
void SpawnAlliedUnitForPlayers(string actor)
|
||||
void SpawnAlliedUnit(string actor)
|
||||
{
|
||||
var unit = world.CreateActor(actor, new TypeDictionary
|
||||
{
|
||||
@@ -426,10 +416,7 @@ namespace OpenRA.Mods.RA.Missions
|
||||
sovietRallyPoint5 = actors["SovietRallyPoint5"];
|
||||
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"];
|
||||
sovietAirfield4 = actors["SovietAirfield4"];
|
||||
sovietAirfields = actors.Values.Where(a => a.Owner == soviets && a.HasTrait<Production>() && a.Info.Traits.Get<ProductionInfo>().Produces.Contains("Plane")).ToArray();
|
||||
if (w.LocalPlayer == null || w.LocalPlayer == allies1)
|
||||
{
|
||||
Game.MoveViewport(allies1EntryPoint.Location.ToFloat2());
|
||||
|
||||
Binary file not shown.
@@ -114,9 +114,9 @@ Actors:
|
||||
Actor53: tc03
|
||||
Location: 138,53
|
||||
Owner: Neutral
|
||||
Actor2: tc05
|
||||
Location: 64,44
|
||||
Owner: Neutral
|
||||
SovietAirfield5: afld
|
||||
Location: 62,47
|
||||
Owner: Soviets
|
||||
Actor57: tc04
|
||||
Location: 43,19
|
||||
Owner: Neutral
|
||||
@@ -420,20 +420,20 @@ Actors:
|
||||
Actor346: t08
|
||||
Location: 107,28
|
||||
Owner: Neutral
|
||||
Actor327: t07
|
||||
Location: 68,39
|
||||
Owner: Neutral
|
||||
Actor153: apwr
|
||||
Location: 55,43
|
||||
Owner: Soviets
|
||||
Actor298: t06
|
||||
Location: 72,50
|
||||
Owner: Neutral
|
||||
Actor30: t01
|
||||
Location: 173,61
|
||||
Owner: Neutral
|
||||
Actor233: tc01
|
||||
Location: 64,55
|
||||
Owner: Neutral
|
||||
Actor326: t07
|
||||
Location: 69,57
|
||||
Actor224: ftur
|
||||
Location: 66,60
|
||||
Owner: Soviets
|
||||
Actor203: t16
|
||||
Location: 54,41
|
||||
Owner: Neutral
|
||||
Actor338: tc04
|
||||
Location: 28,76
|
||||
@@ -450,9 +450,9 @@ Actors:
|
||||
Actor283: t05
|
||||
Location: 102,59
|
||||
Owner: Neutral
|
||||
Actor287: t05
|
||||
Location: 70,47
|
||||
Owner: Neutral
|
||||
SovietAirfield6: afld
|
||||
Location: 62,53
|
||||
Owner: Soviets
|
||||
Actor284: t05
|
||||
Location: 82,70
|
||||
Owner: Neutral
|
||||
@@ -477,9 +477,9 @@ Actors:
|
||||
Actor367: tc03
|
||||
Location: 35,71
|
||||
Owner: Neutral
|
||||
Actor273: t03
|
||||
Actor236: ftur
|
||||
Location: 62,61
|
||||
Owner: Neutral
|
||||
Owner: Soviets
|
||||
Actor302: t06
|
||||
Location: 71,73
|
||||
Owner: Neutral
|
||||
@@ -537,9 +537,9 @@ Actors:
|
||||
Actor354: t11
|
||||
Location: 73,71
|
||||
Owner: Neutral
|
||||
Actor335: t07
|
||||
Location: 67,62
|
||||
Owner: Neutral
|
||||
Actor212: barr
|
||||
Location: 69,57
|
||||
Owner: Soviets
|
||||
Actor365: tc04
|
||||
Location: 18,56
|
||||
Owner: Neutral
|
||||
@@ -558,8 +558,8 @@ Actors:
|
||||
Actor186: tc04
|
||||
Location: 79,34
|
||||
Owner: Neutral
|
||||
Actor203: tc05
|
||||
Location: 67,64
|
||||
Actor179: tc05
|
||||
Location: 59,43
|
||||
Owner: Neutral
|
||||
Actor350: t10
|
||||
Location: 87,22
|
||||
@@ -627,9 +627,9 @@ Actors:
|
||||
Actor211: tc02
|
||||
Location: 75,74
|
||||
Owner: Neutral
|
||||
Actor213: tc04
|
||||
Location: 55,43
|
||||
Owner: Neutral
|
||||
Actor174: apwr
|
||||
Location: 58,45
|
||||
Owner: Soviets
|
||||
Actor214: tc02
|
||||
Location: 79,47
|
||||
Owner: Neutral
|
||||
@@ -651,9 +651,9 @@ Actors:
|
||||
Actor386: t07
|
||||
Location: 30,62
|
||||
Owner: Neutral
|
||||
Actor161: apwr
|
||||
Location: 154,75
|
||||
Owner: Soviets
|
||||
Actor2: tc05
|
||||
Location: 153,77
|
||||
Owner: Neutral
|
||||
Actor54: t01
|
||||
Location: 56,76
|
||||
Owner: Neutral
|
||||
@@ -666,8 +666,8 @@ Actors:
|
||||
Actor402: t02
|
||||
Location: 21,65
|
||||
Owner: Neutral
|
||||
Actor153: t14
|
||||
Location: 59,45
|
||||
Actor175: tc01
|
||||
Location: 62,44
|
||||
Owner: Neutral
|
||||
Actor375: tc01
|
||||
Location: 20,61
|
||||
@@ -768,9 +768,9 @@ Actors:
|
||||
Actor804: t13
|
||||
Location: 125,68
|
||||
Owner: Neutral
|
||||
Actor248: t01
|
||||
Location: 67,47
|
||||
Owner: Neutral
|
||||
SovietAirfield8: afld
|
||||
Location: 62,51
|
||||
Owner: Soviets
|
||||
Actor268: t03
|
||||
Location: 95,23
|
||||
Owner: Neutral
|
||||
@@ -963,9 +963,9 @@ Actors:
|
||||
Exit2ExitPoint: waypoint
|
||||
Location: 16,29
|
||||
Owner: Neutral
|
||||
Actor177: oilb
|
||||
Location: 86,52
|
||||
Owner: Neutral
|
||||
Actor255: ftur
|
||||
Location: 68,45
|
||||
Owner: Soviets
|
||||
SovietEntryPoint3: waypoint
|
||||
Location: 105,79
|
||||
Owner: Neutral
|
||||
@@ -1089,9 +1089,9 @@ Actors:
|
||||
Actor242: barr
|
||||
Location: 159,61
|
||||
Owner: Soviets
|
||||
Actor229: apwr
|
||||
Location: 150,75
|
||||
Owner: Soviets
|
||||
Actor56: tc01
|
||||
Location: 145,71
|
||||
Owner: Neutral
|
||||
Actor237: dog
|
||||
Location: 151,62
|
||||
Owner: Soviets
|
||||
@@ -1108,7 +1108,7 @@ Actors:
|
||||
Location: 158,53
|
||||
Owner: Soviets
|
||||
Actor18: apwr
|
||||
Location: 150,72
|
||||
Location: 149,72
|
||||
Owner: Soviets
|
||||
Actor230: 3tnk
|
||||
Location: 157,60
|
||||
@@ -1155,8 +1155,8 @@ Actors:
|
||||
Actor232: t01
|
||||
Location: 72,43
|
||||
Owner: Neutral
|
||||
Actor224: tc02
|
||||
Location: 58,46
|
||||
Actor176: tc05
|
||||
Location: 69,46
|
||||
Owner: Neutral
|
||||
Actor170: mine
|
||||
Location: 114,55
|
||||
@@ -1182,18 +1182,18 @@ Actors:
|
||||
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
|
||||
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
|
||||
@@ -1203,30 +1203,30 @@ Actors:
|
||||
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
|
||||
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
|
||||
@@ -1305,6 +1305,114 @@ Actors:
|
||||
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
|
||||
|
||||
Smudges:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user