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 int LabClearRange = 5;
|
||||||
const string EinsteinName = "einstein";
|
const string EinsteinName = "einstein";
|
||||||
const string TanyaName = "e7";
|
const string TanyaName = "e7";
|
||||||
const string ChinookName = "tran";
|
|
||||||
const string SignalFlareName = "flare";
|
const string SignalFlareName = "flare";
|
||||||
|
|
||||||
void MissionFailed(string text)
|
void MissionFailed(string text)
|
||||||
|
|||||||
@@ -63,7 +63,10 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
Actor extractionLZEntryPoint;
|
Actor extractionLZEntryPoint;
|
||||||
Actor extractionLZ;
|
Actor extractionLZ;
|
||||||
Actor badgerEntryPoint;
|
Actor badgerEntryPoint;
|
||||||
Actor badgerDropPoint;
|
Actor badgerDropPoint1;
|
||||||
|
Actor badgerDropPoint2;
|
||||||
|
Actor badgerDropPoint3;
|
||||||
|
Actor parabombPoint;
|
||||||
Actor sovietRallyPoint;
|
Actor sovietRallyPoint;
|
||||||
Actor flamersEntryPoint;
|
Actor flamersEntryPoint;
|
||||||
Actor townPoint;
|
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" };
|
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 ReinforcementsCash = 2000;
|
||||||
|
|
||||||
const int ParatroopersTicks = 1500 * 10;
|
const int ParatroopersTicks = 1500 * 8;
|
||||||
static readonly string[] Paratroopers = { "e1", "e1", "e1", "e2", "3tnk" };
|
static readonly string[] Badger1Passengers = { "e1", "e1", "e1", "e2", "3tnk" };
|
||||||
const string BadgerName = "badr";
|
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" };
|
static readonly string[] Flamers = { "e4", "e4", "e4", "e4", "e4" };
|
||||||
const string ApcName = "apc";
|
const string ApcName = "apc";
|
||||||
|
|
||||||
const int HintPowerTicks = 1500 * 6;
|
|
||||||
|
|
||||||
const string ChinookName = "tran";
|
|
||||||
const string SignalFlareName = "flare";
|
const string SignalFlareName = "flare";
|
||||||
|
|
||||||
const int AlliedTownTransferRange = 15;
|
const int AlliedTownTransferRange = 15;
|
||||||
@@ -165,12 +168,18 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
reinforcementsTimer.Tick();
|
reinforcementsTimer.Tick();
|
||||||
if (world.FrameNumber == ParatroopersTicks)
|
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)
|
if (world.FrameNumber == FlamersTicks)
|
||||||
{
|
{
|
||||||
RushSovietFlamers();
|
RushSovietFlamers();
|
||||||
}
|
}
|
||||||
|
if (world.FrameNumber == ParabombTicks)
|
||||||
|
{
|
||||||
|
MissionUtils.Parabomb(world, soviets, badgerEntryPoint.Location, parabombPoint.Location);
|
||||||
|
}
|
||||||
if (world.FrameNumber == SovietVehicleAdditionsTicks)
|
if (world.FrameNumber == SovietVehicleAdditionsTicks)
|
||||||
{
|
{
|
||||||
sovietVehicles.AddRange(SovietVehicleAdditions);
|
sovietVehicles.AddRange(SovietVehicleAdditions);
|
||||||
@@ -334,27 +343,9 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
Ui.Root.AddChild(reinforcementsTimerWidget);
|
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()
|
void RushSovietFlamers()
|
||||||
{
|
{
|
||||||
var closestAlliedBuilding = ClosestAlliedBuilding(badgerDropPoint, 40);
|
var closestAlliedBuilding = ClosestAlliedBuilding(badgerDropPoint1, 40);
|
||||||
if (closestAlliedBuilding == null)
|
if (closestAlliedBuilding == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -447,7 +438,10 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
extractionLZ = actors["ExtractionLZ"];
|
extractionLZ = actors["ExtractionLZ"];
|
||||||
extractionLZEntryPoint = actors["ExtractionLZEntryPoint"];
|
extractionLZEntryPoint = actors["ExtractionLZEntryPoint"];
|
||||||
badgerEntryPoint = actors["BadgerEntryPoint"];
|
badgerEntryPoint = actors["BadgerEntryPoint"];
|
||||||
badgerDropPoint = actors["BadgerDropPoint"];
|
badgerDropPoint1 = actors["BadgerDropPoint1"];
|
||||||
|
badgerDropPoint2 = actors["BadgerDropPoint2"];
|
||||||
|
badgerDropPoint3 = actors["BadgerDropPoint3"];
|
||||||
|
parabombPoint = actors["ParabombPoint"];
|
||||||
sovietBarracks = actors["SovietBarracks"];
|
sovietBarracks = actors["SovietBarracks"];
|
||||||
sovietWarFactory = actors["SovietWarFactory"];
|
sovietWarFactory = actors["SovietWarFactory"];
|
||||||
sovietRallyPoint = actors["SovietRallyPoint"];
|
sovietRallyPoint = actors["SovietRallyPoint"];
|
||||||
|
|||||||
@@ -62,6 +62,39 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
return Pair.New(chinook, unit);
|
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)
|
public static bool AreaSecuredWithUnits(World world, Player player, PPos location, int range)
|
||||||
{
|
{
|
||||||
var units = world.FindAliveCombatantActorsInCircle(location, range).Where(a => a.HasTrait<IMove>());
|
var units = world.FindAliveCombatantActorsInCircle(location, range).Where(a => a.HasTrait<IMove>());
|
||||||
|
|||||||
@@ -1620,11 +1620,11 @@ Actors:
|
|||||||
Actor457: fenc
|
Actor457: fenc
|
||||||
Location: 42,93
|
Location: 42,93
|
||||||
Owner: Allies2
|
Owner: Allies2
|
||||||
BadgerDropPoint: waypoint
|
BadgerDropPoint1: waypoint
|
||||||
Location: 19,96
|
Location: 19,96
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
BadgerEntryPoint: waypoint
|
BadgerEntryPoint: waypoint
|
||||||
Location: 33,12
|
Location: 40,12
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Actor485: tc03
|
Actor485: tc03
|
||||||
Location: 41,101
|
Location: 41,101
|
||||||
@@ -2252,6 +2252,15 @@ Actors:
|
|||||||
Location: 38,90
|
Location: 38,90
|
||||||
Owner: Allies2
|
Owner: Allies2
|
||||||
Facing: 0
|
Facing: 0
|
||||||
|
BadgerDropPoint2: waypoint
|
||||||
|
Location: 34,106
|
||||||
|
Owner: Neutral
|
||||||
|
BadgerDropPoint3: waypoint
|
||||||
|
Location: 26,100
|
||||||
|
Owner: Neutral
|
||||||
|
ParabombPoint: waypoint
|
||||||
|
Location: 38,107
|
||||||
|
Owner: Neutral
|
||||||
|
|
||||||
Smudges:
|
Smudges:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user