Add 2 additional paradrop badgers to the paradrop attack, and a parabomb attack

This commit is contained in:
Scott_NZ
2012-09-29 22:58:42 +12:00
parent 0c6daf191c
commit 07c2330245
4 changed files with 67 additions and 32 deletions

View File

@@ -75,7 +75,6 @@ namespace OpenRA.Mods.RA.Missions
const int LabClearRange = 5;
const string EinsteinName = "einstein";
const string TanyaName = "e7";
const string ChinookName = "tran";
const string SignalFlareName = "flare";
void MissionFailed(string text)

View File

@@ -63,7 +63,10 @@ namespace OpenRA.Mods.RA.Missions
Actor extractionLZEntryPoint;
Actor extractionLZ;
Actor badgerEntryPoint;
Actor badgerDropPoint;
Actor badgerDropPoint1;
Actor badgerDropPoint2;
Actor badgerDropPoint3;
Actor parabombPoint;
Actor sovietRallyPoint;
Actor flamersEntryPoint;
Actor townPoint;
@@ -96,17 +99,17 @@ namespace OpenRA.Mods.RA.Missions
static readonly string[] Reinforcements = { "2tnk", "2tnk", "2tnk", "2tnk", "2tnk", "2tnk", "1tnk", "1tnk", "jeep", "e1", "e1", "e1", "e1", "e3", "e3", "mcv" };
const int ReinforcementsCash = 2000;
const int ParatroopersTicks = 1500 * 10;
static readonly string[] Paratroopers = { "e1", "e1", "e1", "e2", "3tnk" };
const string BadgerName = "badr";
const int ParatroopersTicks = 1500 * 8;
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 int FlamersTicks = 1500 * 7;
const int ParabombTicks = 1500 * 5;
const int FlamersTicks = 1500 * 2;
static readonly string[] Flamers = { "e4", "e4", "e4", "e4", "e4" };
const string ApcName = "apc";
const int HintPowerTicks = 1500 * 6;
const string ChinookName = "tran";
const string SignalFlareName = "flare";
const int AlliedTownTransferRange = 15;
@@ -165,12 +168,18 @@ namespace OpenRA.Mods.RA.Missions
reinforcementsTimer.Tick();
if (world.FrameNumber == ParatroopersTicks)
{
ParadropSovietUnits();
MissionUtils.Paradrop(world, soviets, Badger1Passengers, badgerEntryPoint.Location, badgerDropPoint1.Location);
MissionUtils.Paradrop(world, soviets, Badger2Passengers, badgerEntryPoint.Location, badgerDropPoint2.Location);
MissionUtils.Paradrop(world, soviets, Badger3Passengers, badgerEntryPoint.Location, badgerDropPoint3.Location);
}
if (world.FrameNumber == FlamersTicks)
{
RushSovietFlamers();
}
if (world.FrameNumber == ParabombTicks)
{
MissionUtils.Parabomb(world, soviets, badgerEntryPoint.Location, parabombPoint.Location);
}
if (world.FrameNumber == SovietVehicleAdditionsTicks)
{
sovietVehicles.AddRange(SovietVehicleAdditions);
@@ -334,27 +343,9 @@ namespace OpenRA.Mods.RA.Missions
Ui.Root.AddChild(reinforcementsTimerWidget);
}
void ParadropSovietUnits()
{
var badger = world.CreateActor(BadgerName, new TypeDictionary
{
new LocationInit(badgerEntryPoint.Location),
new OwnerInit(soviets),
new FacingInit(Util.GetFacing(badgerDropPoint.Location - badgerEntryPoint.Location, 0)),
new AltitudeInit(Rules.Info[BadgerName].Traits.Get<PlaneInfo>().CruiseAltitude),
});
badger.QueueActivity(new FlyAttack(Target.FromCell(badgerDropPoint.Location)));
badger.Trait<ParaDrop>().SetLZ(badgerDropPoint.Location);
var cargo = badger.Trait<Cargo>();
foreach (var unit in Paratroopers)
{
cargo.Load(badger, world.CreateActor(false, unit, new TypeDictionary { new OwnerInit(soviets) }));
}
}
void RushSovietFlamers()
{
var closestAlliedBuilding = ClosestAlliedBuilding(badgerDropPoint, 40);
var closestAlliedBuilding = ClosestAlliedBuilding(badgerDropPoint1, 40);
if (closestAlliedBuilding == null)
{
return;
@@ -447,7 +438,10 @@ namespace OpenRA.Mods.RA.Missions
extractionLZ = actors["ExtractionLZ"];
extractionLZEntryPoint = actors["ExtractionLZEntryPoint"];
badgerEntryPoint = actors["BadgerEntryPoint"];
badgerDropPoint = actors["BadgerDropPoint"];
badgerDropPoint1 = actors["BadgerDropPoint1"];
badgerDropPoint2 = actors["BadgerDropPoint2"];
badgerDropPoint3 = actors["BadgerDropPoint3"];
parabombPoint = actors["ParabombPoint"];
sovietBarracks = actors["SovietBarracks"];
sovietWarFactory = actors["SovietWarFactory"];
sovietRallyPoint = actors["SovietRallyPoint"];

View File

@@ -62,6 +62,39 @@ namespace OpenRA.Mods.RA.Missions
return Pair.New(chinook, unit);
}
public static void Paradrop(World world, Player owner, IEnumerable<string> units, CPos entry, CPos location)
{
var badger = world.CreateActor("badr", new TypeDictionary
{
new LocationInit(entry),
new OwnerInit(owner),
new FacingInit(Util.GetFacing(location - entry, 0)),
new AltitudeInit(Rules.Info["badr"].Traits.Get<PlaneInfo>().CruiseAltitude),
});
badger.QueueActivity(new FlyAttack(Target.FromCell(location)));
badger.Trait<ParaDrop>().SetLZ(location);
var cargo = badger.Trait<Cargo>();
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 badger = world.CreateActor("badr.bomber", new TypeDictionary
{
new LocationInit(entry),
new OwnerInit(owner),
new FacingInit(Util.GetFacing(location - entry, 0)),
new AltitudeInit(Rules.Info["badr.bomber"].Traits.Get<PlaneInfo>().CruiseAltitude),
});
badger.Trait<CarpetBomb>().SetTarget(location);
badger.QueueActivity(Fly.ToCell(location));
badger.QueueActivity(new FlyOffMap());
badger.QueueActivity(new RemoveSelf());
}
public static bool AreaSecuredWithUnits(World world, Player player, PPos location, int range)
{
var units = world.FindAliveCombatantActorsInCircle(location, range).Where(a => a.HasTrait<IMove>());

View File

@@ -1620,11 +1620,11 @@ Actors:
Actor457: fenc
Location: 42,93
Owner: Allies2
BadgerDropPoint: waypoint
BadgerDropPoint1: waypoint
Location: 19,96
Owner: Neutral
BadgerEntryPoint: waypoint
Location: 33,12
Location: 40,12
Owner: Neutral
Actor485: tc03
Location: 41,101
@@ -2252,6 +2252,15 @@ Actors:
Location: 38,90
Owner: Allies2
Facing: 0
BadgerDropPoint2: waypoint
Location: 34,106
Owner: Neutral
BadgerDropPoint3: waypoint
Location: 26,100
Owner: Neutral
ParabombPoint: waypoint
Location: 38,107
Owner: Neutral
Smudges: