Have the parabomber come from a different direction. Have the Soviet tanks go straight for the enemy base structures.

This commit is contained in:
Scott_NZ
2012-10-04 23:59:33 +13:00
parent 328dce26ba
commit bf4829205c
3 changed files with 35 additions and 14 deletions

View File

@@ -63,7 +63,8 @@ namespace OpenRA.Mods.RA.Missions
Actor reinforcementsEntryPoint;
Actor extractionLZEntryPoint;
Actor extractionLZ;
Actor badgerEntryPoint;
Actor badgerEntryPoint1;
Actor badgerEntryPoint2;
Actor badgerDropPoint1;
Actor badgerDropPoint2;
Actor badgerDropPoint3;
@@ -184,9 +185,9 @@ namespace OpenRA.Mods.RA.Missions
reinforcementsTimer.Tick();
if (world.FrameNumber == ParatroopersTicks)
{
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);
MissionUtils.Paradrop(world, soviets, Badger1Passengers, badgerEntryPoint1.Location, badgerDropPoint1.Location);
MissionUtils.Paradrop(world, soviets, Badger2Passengers, badgerEntryPoint1.Location, badgerDropPoint2.Location);
MissionUtils.Paradrop(world, soviets, Badger3Passengers, badgerEntryPoint1.Location, badgerDropPoint3.Location);
}
if (world.FrameNumber == FlamersTicks)
{
@@ -198,7 +199,7 @@ namespace OpenRA.Mods.RA.Missions
}
if (world.FrameNumber == ParabombTicks)
{
MissionUtils.Parabomb(world, soviets, badgerEntryPoint.Location, parabombPoint.Location);
MissionUtils.Parabomb(world, soviets, badgerEntryPoint2.Location, parabombPoint.Location);
}
if (world.FrameNumber == SovietVehicleAdditionsTicks)
{
@@ -361,6 +362,11 @@ namespace OpenRA.Mods.RA.Missions
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()
{
var sbrp = sovietBarracks.Trait<RallyPoint>();
@@ -399,8 +405,8 @@ namespace OpenRA.Mods.RA.Missions
void RushSovietTanks()
{
var closestAlliedBuilding = ClosestAlliedBuilding(badgerDropPoint1, 40);
if (closestAlliedBuilding == null)
var closestAlliedBuildings = ClosestAlliedBuildings(badgerDropPoint1, 40);
if (!closestAlliedBuildings.Any())
{
return;
}
@@ -411,7 +417,10 @@ namespace OpenRA.Mods.RA.Missions
new OwnerInit(soviets),
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"];
extractionLZ = actors["ExtractionLZ"];
extractionLZEntryPoint = actors["ExtractionLZEntryPoint"];
badgerEntryPoint = actors["BadgerEntryPoint"];
badgerEntryPoint1 = actors["BadgerEntryPoint1"];
badgerEntryPoint2 = actors["BadgerEntryPoint2"];
badgerDropPoint1 = actors["BadgerDropPoint1"];
badgerDropPoint2 = actors["BadgerDropPoint2"];
badgerDropPoint3 = actors["BadgerDropPoint3"];

View File

@@ -102,19 +102,27 @@ namespace OpenRA.Mods.RA.Missions
}
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)
.Where(a => a.Owner == player && a.HasTrait<IMove>())
.OrderBy(a => (location - a.CenterLocation).LengthSquared)
.FirstOrDefault();
.OrderBy(a => (location - a.CenterLocation).LengthSquared);
}
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)
.Where(a => a.Owner == player && a.HasTrait<Building>() && !a.HasTrait<Wall>())
.OrderBy(a => (location - a.CenterLocation).LengthSquared)
.FirstOrDefault();
.OrderBy(a => (location - a.CenterLocation).LengthSquared);
}
public static IEnumerable<ProductionQueue> FindQueues(World world, Player player, string category)

View File

@@ -1590,7 +1590,7 @@ Actors:
BadgerDropPoint1: waypoint
Location: 19,96
Owner: Neutral
BadgerEntryPoint: waypoint
BadgerEntryPoint1: waypoint
Location: 40,12
Owner: Neutral
Actor485: tc03
@@ -2398,6 +2398,9 @@ Actors:
Actor467: dog
Location: 49,22
Owner: Soviets
BadgerEntryPoint2: waypoint
Location: 119,77
Owner: Neutral
Smudges: