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 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"];

View File

@@ -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)

View File

@@ -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: