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 parabombPoint;
Actor sovietRallyPoint; Actor sovietRallyPoint;
Actor flamersEntryPoint; Actor flamersEntryPoint;
Actor tanksEntryPoint;
Actor townPoint; Actor townPoint;
Actor sovietTownAttackPoint1; Actor sovietTownAttackPoint1;
Actor sovietTownAttackPoint2; Actor sovietTownAttackPoint2;
@@ -110,6 +111,9 @@ namespace OpenRA.Mods.RA.Missions
static readonly string[] Flamers = { "e4", "e4", "e4", "e4", "e4" }; static readonly string[] Flamers = { "e4", "e4", "e4", "e4", "e4" };
const string ApcName = "apc"; 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 string SignalFlareName = "flare";
const int AlliedTownTransferRange = 15; const int AlliedTownTransferRange = 15;
@@ -176,6 +180,10 @@ namespace OpenRA.Mods.RA.Missions
{ {
RushSovietFlamers(); RushSovietFlamers();
} }
if (world.FrameNumber == TanksTicks)
{
RushSovietTanks();
}
if (world.FrameNumber == ParabombTicks) if (world.FrameNumber == ParabombTicks)
{ {
MissionUtils.Parabomb(world, soviets, badgerEntryPoint.Location, parabombPoint.Location); MissionUtils.Parabomb(world, soviets, badgerEntryPoint.Location, parabombPoint.Location);
@@ -217,12 +225,14 @@ namespace OpenRA.Mods.RA.Missions
if (einsteinChinook.Destroyed) if (einsteinChinook.Destroyed)
{ {
objectives[ExtractEinsteinID].Status = ObjectiveStatus.Failed; objectives[ExtractEinsteinID].Status = ObjectiveStatus.Failed;
objectives[MaintainPresenceID].Status = ObjectiveStatus.Failed;
ObjectivesUpdated(); ObjectivesUpdated();
MissionFailed("The extraction helicopter was destroyed."); MissionFailed("The extraction helicopter was destroyed.");
} }
else if (!world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait<Cargo>().Passengers.Contains(einstein)) else if (!world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait<Cargo>().Passengers.Contains(einstein))
{ {
objectives[ExtractEinsteinID].Status = ObjectiveStatus.Completed; objectives[ExtractEinsteinID].Status = ObjectiveStatus.Completed;
objectives[MaintainPresenceID].Status = ObjectiveStatus.Completed;
ObjectivesUpdated(); ObjectivesUpdated();
MissionAccomplished("Einstein was rescued."); MissionAccomplished("Einstein was rescued.");
} }
@@ -286,7 +296,7 @@ namespace OpenRA.Mods.RA.Missions
foreach (var unit in idleSovietUnitsAtRP) foreach (var unit in idleSovietUnitsAtRP)
{ {
unit.Trait<Mobile>().Nudge(unit, unit, true); 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); var closestAlliedBuilding = ClosestAlliedBuilding(unit, 40);
if (closestAlliedBuilding != null) 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); 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() void RushSovietFlamers()
{ {
var closestAlliedBuilding = ClosestAlliedBuilding(badgerDropPoint1, 40); var closestAlliedBuilding = ClosestAlliedBuilding(badgerDropPoint1, 40);
@@ -446,6 +474,7 @@ namespace OpenRA.Mods.RA.Missions
sovietWarFactory = actors["SovietWarFactory"]; sovietWarFactory = actors["SovietWarFactory"];
sovietRallyPoint = actors["SovietRallyPoint"]; sovietRallyPoint = actors["SovietRallyPoint"];
flamersEntryPoint = actors["FlamersEntryPoint"]; flamersEntryPoint = actors["FlamersEntryPoint"];
tanksEntryPoint = actors["TanksEntryPoint"];
townPoint = actors["TownPoint"]; townPoint = actors["TownPoint"];
sovietTownAttackPoint1 = actors["SovietTownAttackPoint1"]; sovietTownAttackPoint1 = actors["SovietTownAttackPoint1"];
sovietTownAttackPoint2 = actors["SovietTownAttackPoint2"]; sovietTownAttackPoint2 = actors["SovietTownAttackPoint2"];

View File

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