Add 2 additional paradrop badgers to the paradrop attack, and a parabomb attack
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"];
|
||||
|
||||
@@ -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>());
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user