Tank wave at 11 minutes, just before the reinforcements arrive

This commit is contained in:
Scott_NZ
2012-09-30 16:32:29 +13:00
parent 07c2330245
commit 37479b3cfd
2 changed files with 34 additions and 2 deletions

View File

@@ -69,6 +69,7 @@ namespace OpenRA.Mods.RA.Missions
Actor parabombPoint;
Actor sovietRallyPoint;
Actor flamersEntryPoint;
Actor tanksEntryPoint;
Actor townPoint;
Actor sovietTownAttackPoint1;
Actor sovietTownAttackPoint2;
@@ -110,6 +111,9 @@ namespace OpenRA.Mods.RA.Missions
static readonly string[] Flamers = { "e4", "e4", "e4", "e4", "e4" };
const string ApcName = "apc";
const int TanksTicks = 1500 * 11;
static readonly string[] Tanks = { "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk" };
const string SignalFlareName = "flare";
const int AlliedTownTransferRange = 15;
@@ -176,6 +180,10 @@ namespace OpenRA.Mods.RA.Missions
{
RushSovietFlamers();
}
if (world.FrameNumber == TanksTicks)
{
RushSovietTanks();
}
if (world.FrameNumber == ParabombTicks)
{
MissionUtils.Parabomb(world, soviets, badgerEntryPoint.Location, parabombPoint.Location);
@@ -217,12 +225,14 @@ namespace OpenRA.Mods.RA.Missions
if (einsteinChinook.Destroyed)
{
objectives[ExtractEinsteinID].Status = ObjectiveStatus.Failed;
objectives[MaintainPresenceID].Status = ObjectiveStatus.Failed;
ObjectivesUpdated();
MissionFailed("The extraction helicopter was destroyed.");
}
else if (!world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait<Cargo>().Passengers.Contains(einstein))
{
objectives[ExtractEinsteinID].Status = ObjectiveStatus.Completed;
objectives[MaintainPresenceID].Status = ObjectiveStatus.Completed;
ObjectivesUpdated();
MissionAccomplished("Einstein was rescued.");
}
@@ -286,7 +296,7 @@ namespace OpenRA.Mods.RA.Missions
foreach (var unit in idleSovietUnitsAtRP)
{
unit.Trait<Mobile>().Nudge(unit, unit, true);
unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Move.Move(closestAlliedBuilding.Location, 3)));
unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Attack(Target.FromActor(closestAlliedBuilding), 3)));
}
}
}
@@ -297,7 +307,7 @@ namespace OpenRA.Mods.RA.Missions
var closestAlliedBuilding = ClosestAlliedBuilding(unit, 40);
if (closestAlliedBuilding != null)
{
unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Move.Move(closestAlliedBuilding.Location, 3)));
unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Attack(Target.FromActor(closestAlliedBuilding), 3)));
}
}
}
@@ -343,6 +353,24 @@ namespace OpenRA.Mods.RA.Missions
Ui.Root.AddChild(reinforcementsTimerWidget);
}
void RushSovietTanks()
{
var closestAlliedBuilding = ClosestAlliedBuilding(badgerDropPoint1, 40);
if (closestAlliedBuilding == null)
{
return;
}
foreach (var tank in Tanks)
{
var unit = world.CreateActor(tank, new TypeDictionary
{
new OwnerInit(soviets),
new LocationInit(tanksEntryPoint.Location)
});
unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Attack(Target.FromActor(closestAlliedBuilding), 3)));
}
}
void RushSovietFlamers()
{
var closestAlliedBuilding = ClosestAlliedBuilding(badgerDropPoint1, 40);
@@ -446,6 +474,7 @@ namespace OpenRA.Mods.RA.Missions
sovietWarFactory = actors["SovietWarFactory"];
sovietRallyPoint = actors["SovietRallyPoint"];
flamersEntryPoint = actors["FlamersEntryPoint"];
tanksEntryPoint = actors["TanksEntryPoint"];
townPoint = actors["TownPoint"];
sovietTownAttackPoint1 = actors["SovietTownAttackPoint1"];
sovietTownAttackPoint2 = actors["SovietTownAttackPoint2"];

View File

@@ -2261,6 +2261,9 @@ Actors:
ParabombPoint: waypoint
Location: 38,107
Owner: Neutral
TanksEntryPoint: waypoint
Location: 16,86
Owner: Neutral
Smudges: