Have the parabomber come from a different direction. Have the Soviet tanks go straight for the enemy base structures.
This commit is contained in:
@@ -63,7 +63,8 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
Actor reinforcementsEntryPoint;
|
Actor reinforcementsEntryPoint;
|
||||||
Actor extractionLZEntryPoint;
|
Actor extractionLZEntryPoint;
|
||||||
Actor extractionLZ;
|
Actor extractionLZ;
|
||||||
Actor badgerEntryPoint;
|
Actor badgerEntryPoint1;
|
||||||
|
Actor badgerEntryPoint2;
|
||||||
Actor badgerDropPoint1;
|
Actor badgerDropPoint1;
|
||||||
Actor badgerDropPoint2;
|
Actor badgerDropPoint2;
|
||||||
Actor badgerDropPoint3;
|
Actor badgerDropPoint3;
|
||||||
@@ -184,9 +185,9 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
reinforcementsTimer.Tick();
|
reinforcementsTimer.Tick();
|
||||||
if (world.FrameNumber == ParatroopersTicks)
|
if (world.FrameNumber == ParatroopersTicks)
|
||||||
{
|
{
|
||||||
MissionUtils.Paradrop(world, soviets, Badger1Passengers, badgerEntryPoint.Location, badgerDropPoint1.Location);
|
MissionUtils.Paradrop(world, soviets, Badger1Passengers, badgerEntryPoint1.Location, badgerDropPoint1.Location);
|
||||||
MissionUtils.Paradrop(world, soviets, Badger2Passengers, badgerEntryPoint.Location, badgerDropPoint2.Location);
|
MissionUtils.Paradrop(world, soviets, Badger2Passengers, badgerEntryPoint1.Location, badgerDropPoint2.Location);
|
||||||
MissionUtils.Paradrop(world, soviets, Badger3Passengers, badgerEntryPoint.Location, badgerDropPoint3.Location);
|
MissionUtils.Paradrop(world, soviets, Badger3Passengers, badgerEntryPoint1.Location, badgerDropPoint3.Location);
|
||||||
}
|
}
|
||||||
if (world.FrameNumber == FlamersTicks)
|
if (world.FrameNumber == FlamersTicks)
|
||||||
{
|
{
|
||||||
@@ -198,7 +199,7 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
}
|
}
|
||||||
if (world.FrameNumber == ParabombTicks)
|
if (world.FrameNumber == ParabombTicks)
|
||||||
{
|
{
|
||||||
MissionUtils.Parabomb(world, soviets, badgerEntryPoint.Location, parabombPoint.Location);
|
MissionUtils.Parabomb(world, soviets, badgerEntryPoint2.Location, parabombPoint.Location);
|
||||||
}
|
}
|
||||||
if (world.FrameNumber == SovietVehicleAdditionsTicks)
|
if (world.FrameNumber == SovietVehicleAdditionsTicks)
|
||||||
{
|
{
|
||||||
@@ -361,6 +362,11 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
return MissionUtils.ClosestPlayerBuilding(world, allies2, actor.CenterLocation, range);
|
return MissionUtils.ClosestPlayerBuilding(world, allies2, actor.CenterLocation, range);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IEnumerable<Actor> ClosestAlliedBuildings(Actor actor, int range)
|
||||||
|
{
|
||||||
|
return MissionUtils.ClosestPlayerBuildings(world, allies2, actor.CenterLocation, range);
|
||||||
|
}
|
||||||
|
|
||||||
void InitializeSovietFactories()
|
void InitializeSovietFactories()
|
||||||
{
|
{
|
||||||
var sbrp = sovietBarracks.Trait<RallyPoint>();
|
var sbrp = sovietBarracks.Trait<RallyPoint>();
|
||||||
@@ -399,8 +405,8 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
|
|
||||||
void RushSovietTanks()
|
void RushSovietTanks()
|
||||||
{
|
{
|
||||||
var closestAlliedBuilding = ClosestAlliedBuilding(badgerDropPoint1, 40);
|
var closestAlliedBuildings = ClosestAlliedBuildings(badgerDropPoint1, 40);
|
||||||
if (closestAlliedBuilding == null)
|
if (!closestAlliedBuildings.Any())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -411,7 +417,10 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
new OwnerInit(soviets),
|
new OwnerInit(soviets),
|
||||||
new LocationInit(tanksEntryPoint.Location)
|
new LocationInit(tanksEntryPoint.Location)
|
||||||
});
|
});
|
||||||
unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Attack(Target.FromActor(closestAlliedBuilding), 3)));
|
foreach (var building in closestAlliedBuildings)
|
||||||
|
{
|
||||||
|
unit.QueueActivity(new Attack(Target.FromActor(building), 3));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -508,7 +517,8 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
reinforcementsEntryPoint = actors["ReinforcementsEntryPoint"];
|
reinforcementsEntryPoint = actors["ReinforcementsEntryPoint"];
|
||||||
extractionLZ = actors["ExtractionLZ"];
|
extractionLZ = actors["ExtractionLZ"];
|
||||||
extractionLZEntryPoint = actors["ExtractionLZEntryPoint"];
|
extractionLZEntryPoint = actors["ExtractionLZEntryPoint"];
|
||||||
badgerEntryPoint = actors["BadgerEntryPoint"];
|
badgerEntryPoint1 = actors["BadgerEntryPoint1"];
|
||||||
|
badgerEntryPoint2 = actors["BadgerEntryPoint2"];
|
||||||
badgerDropPoint1 = actors["BadgerDropPoint1"];
|
badgerDropPoint1 = actors["BadgerDropPoint1"];
|
||||||
badgerDropPoint2 = actors["BadgerDropPoint2"];
|
badgerDropPoint2 = actors["BadgerDropPoint2"];
|
||||||
badgerDropPoint3 = actors["BadgerDropPoint3"];
|
badgerDropPoint3 = actors["BadgerDropPoint3"];
|
||||||
|
|||||||
@@ -102,19 +102,27 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Actor ClosestPlayerUnit(World world, Player player, PPos location, int range)
|
public static Actor ClosestPlayerUnit(World world, Player player, PPos location, int range)
|
||||||
|
{
|
||||||
|
return ClosestPlayerUnits(world, player, location, range).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<Actor> ClosestPlayerUnits(World world, Player player, PPos location, int range)
|
||||||
{
|
{
|
||||||
return world.FindAliveCombatantActorsInCircle(location, range)
|
return world.FindAliveCombatantActorsInCircle(location, range)
|
||||||
.Where(a => a.Owner == player && a.HasTrait<IMove>())
|
.Where(a => a.Owner == player && a.HasTrait<IMove>())
|
||||||
.OrderBy(a => (location - a.CenterLocation).LengthSquared)
|
.OrderBy(a => (location - a.CenterLocation).LengthSquared);
|
||||||
.FirstOrDefault();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Actor ClosestPlayerBuilding(World world, Player player, PPos location, int range)
|
public static Actor ClosestPlayerBuilding(World world, Player player, PPos location, int range)
|
||||||
|
{
|
||||||
|
return ClosestPlayerBuildings(world, player, location, range).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<Actor> ClosestPlayerBuildings(World world, Player player, PPos location, int range)
|
||||||
{
|
{
|
||||||
return world.FindAliveCombatantActorsInCircle(location, range)
|
return world.FindAliveCombatantActorsInCircle(location, range)
|
||||||
.Where(a => a.Owner == player && a.HasTrait<Building>() && !a.HasTrait<Wall>())
|
.Where(a => a.Owner == player && a.HasTrait<Building>() && !a.HasTrait<Wall>())
|
||||||
.OrderBy(a => (location - a.CenterLocation).LengthSquared)
|
.OrderBy(a => (location - a.CenterLocation).LengthSquared);
|
||||||
.FirstOrDefault();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerable<ProductionQueue> FindQueues(World world, Player player, string category)
|
public static IEnumerable<ProductionQueue> FindQueues(World world, Player player, string category)
|
||||||
|
|||||||
@@ -1590,7 +1590,7 @@ Actors:
|
|||||||
BadgerDropPoint1: waypoint
|
BadgerDropPoint1: waypoint
|
||||||
Location: 19,96
|
Location: 19,96
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
BadgerEntryPoint: waypoint
|
BadgerEntryPoint1: waypoint
|
||||||
Location: 40,12
|
Location: 40,12
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Actor485: tc03
|
Actor485: tc03
|
||||||
@@ -2398,6 +2398,9 @@ Actors:
|
|||||||
Actor467: dog
|
Actor467: dog
|
||||||
Location: 49,22
|
Location: 49,22
|
||||||
Owner: Soviets
|
Owner: Soviets
|
||||||
|
BadgerEntryPoint2: waypoint
|
||||||
|
Location: 119,77
|
||||||
|
Owner: Neutral
|
||||||
|
|
||||||
Smudges:
|
Smudges:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user