Add more patrols
This commit is contained in:
@@ -46,13 +46,57 @@ namespace OpenRA.Mods.RA.Missions
|
||||
Player soviets;
|
||||
World world;
|
||||
|
||||
static readonly string[] DogPatrol = { "e1", "dog.patrol", "dog.patrol" };
|
||||
static readonly string[] InfantryPatrol = { "e1", "e1", "e1", "e1", "e1" };
|
||||
|
||||
Actor[] patrol1;
|
||||
CPos[] patrolPoints1;
|
||||
int currentPatrolPoint1;
|
||||
Actor[] patrol2;
|
||||
CPos[] patrolPoints2;
|
||||
int currentPatrolPoint2 = 3;
|
||||
Actor[] patrol3;
|
||||
CPos[] patrolPoints3;
|
||||
int currentPatrolPoint3;
|
||||
Actor[] patrol4;
|
||||
CPos[] patrolPoints4;
|
||||
int currentPatrolPoint4;
|
||||
Actor[] patrol5;
|
||||
CPos[] patrolPoints5;
|
||||
int currentPatrolPoint5;
|
||||
|
||||
public void Tick(Actor self)
|
||||
{
|
||||
if (world.FrameNumber == 1)
|
||||
{
|
||||
InsertSpies();
|
||||
}
|
||||
PatrolTick();
|
||||
PatrolTick(ref patrol1, ref currentPatrolPoint1, soviets, DogPatrol, patrolPoints1);
|
||||
PatrolTick(ref patrol2, ref currentPatrolPoint2, soviets, InfantryPatrol, patrolPoints2);
|
||||
PatrolTick(ref patrol3, ref currentPatrolPoint3, soviets, DogPatrol, patrolPoints3);
|
||||
PatrolTick(ref patrol4, ref currentPatrolPoint4, soviets, DogPatrol, patrolPoints4);
|
||||
PatrolTick(ref patrol5, ref currentPatrolPoint5, soviets, DogPatrol, patrolPoints5);
|
||||
}
|
||||
|
||||
void PatrolTick(ref Actor[] patrolActors, ref int currentPoint, Player owner, string[] actorNames, CPos[] points)
|
||||
{
|
||||
if (patrolActors == null)
|
||||
{
|
||||
var td = new TypeDictionary { new OwnerInit(owner), new LocationInit(points[currentPoint]) };
|
||||
patrolActors = actorNames.Select(f => world.CreateActor(f, td)).ToArray();
|
||||
}
|
||||
var leader = patrolActors[0];
|
||||
if (!leader.IsDead() && leader.IsIdle && leader.IsInWorld)
|
||||
{
|
||||
currentPoint = (currentPoint + 1) % points.Length;
|
||||
leader.QueueActivity(new AttackMove.AttackMoveActivity(leader, new Move.Move(points[currentPoint], 0)));
|
||||
leader.QueueActivity(new Wait(50));
|
||||
foreach (var follower in patrolActors.Skip(1))
|
||||
{
|
||||
follower.QueueActivity(new Wait(world.SharedRandom.Next(0, 25)));
|
||||
follower.QueueActivity(new AttackMove.AttackMoveActivity(follower, new Move.Move(points[currentPoint], 0)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void InsertSpies()
|
||||
@@ -77,37 +121,12 @@ namespace OpenRA.Mods.RA.Missions
|
||||
lst.QueueActivity(new RemoveSelf());
|
||||
}
|
||||
|
||||
static readonly string[] DogPatrol = { "e1", "dog.patrol", "dog.patrol" };
|
||||
|
||||
IEnumerable<Actor> patrol1;
|
||||
CPos[] patrolPoints1;
|
||||
int currentPatrolPoint1;
|
||||
|
||||
void PatrolTick()
|
||||
{
|
||||
if (patrol1 == null)
|
||||
{
|
||||
var td = new TypeDictionary { new OwnerInit(soviets), new LocationInit(patrolPoints1.First()) };
|
||||
patrol1 = DogPatrol.Select(f => world.CreateActor(f, td)).ToArray();
|
||||
}
|
||||
var leader = patrol1.First();
|
||||
if (!leader.IsDead() && leader.IsIdle && leader.IsInWorld)
|
||||
{
|
||||
currentPatrolPoint1 = (currentPatrolPoint1 + 1) % patrolPoints1.Count();
|
||||
leader.QueueActivity(new AttackMove.AttackMoveActivity(leader, new Move.Move(patrolPoints1[currentPatrolPoint1])));
|
||||
leader.QueueActivity(new Wait(50));
|
||||
foreach (var follower in patrol1.Skip(1))
|
||||
{
|
||||
follower.QueueActivity(new Wait(world.SharedRandom.Next(0, 25)));
|
||||
follower.QueueActivity(new AttackMove.AttackMoveActivity(follower, new Move.Move(patrolPoints1[currentPatrolPoint1])));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SetupSubStances()
|
||||
{
|
||||
if (Game.IsHost)
|
||||
if (!Game.IsHost)
|
||||
{
|
||||
return;
|
||||
}
|
||||
foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == soviets && !a.IsDead() && a.HasTrait<TargetableSubmarine>()))
|
||||
{
|
||||
world.IssueOrder(new Order("SetUnitStance", actor, false)
|
||||
@@ -116,7 +135,6 @@ namespace OpenRA.Mods.RA.Missions
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void WorldLoaded(World w)
|
||||
{
|
||||
@@ -141,6 +159,30 @@ namespace OpenRA.Mods.RA.Missions
|
||||
actors["PatrolPoint14"].Location,
|
||||
actors["PatrolPoint15"].Location
|
||||
};
|
||||
patrolPoints2 = patrolPoints1;
|
||||
patrolPoints3 = new[]
|
||||
{
|
||||
actors["PatrolPoint21"].Location,
|
||||
actors["PatrolPoint22"].Location,
|
||||
actors["PatrolPoint23"].Location,
|
||||
actors["PatrolPoint24"].Location,
|
||||
actors["PatrolPoint25"].Location
|
||||
};
|
||||
patrolPoints4 = new[]
|
||||
{
|
||||
actors["PatrolPoint31"].Location,
|
||||
actors["PatrolPoint32"].Location,
|
||||
actors["PatrolPoint33"].Location,
|
||||
actors["PatrolPoint34"].Location
|
||||
};
|
||||
patrolPoints5 = new[]
|
||||
{
|
||||
actors["PatrolPoint41"].Location,
|
||||
actors["PatrolPoint42"].Location,
|
||||
actors["PatrolPoint43"].Location,
|
||||
actors["PatrolPoint44"].Location,
|
||||
actors["PatrolPoint45"].Location
|
||||
};
|
||||
SetupSubStances();
|
||||
Game.MoveViewport(lstEntryPoint.Location.ToFloat2());
|
||||
PlayMusic();
|
||||
|
||||
@@ -504,18 +504,18 @@ Actors:
|
||||
Actor118: ftur
|
||||
Location: 98,40
|
||||
Owner: Soviets
|
||||
Actor149: silo
|
||||
Location: 95,27
|
||||
Actor149: fact
|
||||
Location: 95,25
|
||||
Owner: Soviets
|
||||
Actor151: v01
|
||||
Location: 89,50
|
||||
Owner: Neutral
|
||||
Actor150: silo
|
||||
Location: 96,28
|
||||
Owner: Soviets
|
||||
Actor151: silo
|
||||
Location: 97,27
|
||||
Owner: Soviets
|
||||
Actor152: silo
|
||||
Location: 96,26
|
||||
Location: 110,28
|
||||
Owner: Soviets
|
||||
Actor152: v07
|
||||
Location: 79,45
|
||||
Owner: Neutral
|
||||
Actor153: apwr
|
||||
Location: 97,16
|
||||
Owner: Soviets
|
||||
@@ -741,7 +741,7 @@ Actors:
|
||||
Actor225: fenc
|
||||
Location: 95,36
|
||||
Owner: Soviets
|
||||
Actor224: 4tnk.husk
|
||||
Actor224: 4tnk
|
||||
Location: 103,30
|
||||
Owner: Soviets
|
||||
Actor223: 4tnk
|
||||
@@ -945,8 +945,8 @@ Actors:
|
||||
Actor295: t07
|
||||
Location: 84,40
|
||||
Owner: Neutral
|
||||
Actor296: t06
|
||||
Location: 91,49
|
||||
PatrolPoint22: waypoint
|
||||
Location: 92,49
|
||||
Owner: Neutral
|
||||
Actor297: v08
|
||||
Location: 72,78
|
||||
@@ -1302,6 +1302,117 @@ Actors:
|
||||
PatrolPoint14: waypoint
|
||||
Location: 91,83
|
||||
Owner: Neutral
|
||||
PatrolPoint21: waypoint
|
||||
Location: 105,45
|
||||
Owner: Neutral
|
||||
PatrolPoint23: waypoint
|
||||
Location: 78,53
|
||||
Owner: Neutral
|
||||
PatrolPoint24: waypoint
|
||||
Location: 92,56
|
||||
Owner: Neutral
|
||||
PatrolPoint25: waypoint
|
||||
Location: 106,53
|
||||
Owner: Neutral
|
||||
Actor409: e1
|
||||
Location: 76,59
|
||||
Owner: Soviets
|
||||
Actor410: e1
|
||||
Location: 78,59
|
||||
Owner: Soviets
|
||||
Actor411: dog
|
||||
Location: 75,58
|
||||
Owner: Soviets
|
||||
Actor412: sbag
|
||||
Location: 76,60
|
||||
Owner: Soviets
|
||||
Actor413: sbag
|
||||
Location: 75,60
|
||||
Owner: Soviets
|
||||
Actor414: sbag
|
||||
Location: 74,60
|
||||
Owner: Soviets
|
||||
Actor415: sbag
|
||||
Location: 78,60
|
||||
Owner: Soviets
|
||||
Actor416: sbag
|
||||
Location: 79,60
|
||||
Owner: Soviets
|
||||
Actor417: sbag
|
||||
Location: 73,60
|
||||
Owner: Soviets
|
||||
PatrolPoint31: waypoint
|
||||
Location: 83,101
|
||||
Owner: Neutral
|
||||
PatrolPoint32: waypoint
|
||||
Location: 71,96
|
||||
Owner: Neutral
|
||||
PatrolPoint33: waypoint
|
||||
Location: 71,87
|
||||
Owner: Neutral
|
||||
PatrolPoint34: waypoint
|
||||
Location: 92,85
|
||||
Owner: Neutral
|
||||
Actor296: kenn
|
||||
Location: 90,68
|
||||
Owner: Soviets
|
||||
Actor303: v10
|
||||
Location: 97,47
|
||||
Owner: Neutral
|
||||
Actor304: v08
|
||||
Location: 78,45
|
||||
Owner: Neutral
|
||||
Actor306: v04
|
||||
Location: 87,50
|
||||
Owner: Neutral
|
||||
Actor408: dog
|
||||
Location: 108,42
|
||||
Owner: Soviets
|
||||
Actor418: dog
|
||||
Location: 109,74
|
||||
Owner: Soviets
|
||||
Actor419: e1
|
||||
Location: 108,75
|
||||
Owner: Soviets
|
||||
Actor420: e1
|
||||
Location: 110,75
|
||||
Owner: Soviets
|
||||
Actor421: sbag
|
||||
Location: 108,73
|
||||
Owner: Soviets
|
||||
Actor422: sbag
|
||||
Location: 109,73
|
||||
Owner: Soviets
|
||||
Actor423: sbag
|
||||
Location: 110,73
|
||||
Owner: Soviets
|
||||
Actor424: sbag
|
||||
Location: 111,73
|
||||
Owner: Soviets
|
||||
PatrolPoint43: waypoint
|
||||
Location: 109,51
|
||||
Owner: Neutral
|
||||
PatrolPoint42: waypoint
|
||||
Location: 109,44
|
||||
Owner: Neutral
|
||||
PatrolPoint41: waypoint
|
||||
Location: 102,41
|
||||
Owner: Neutral
|
||||
PatrolPoint45: waypoint
|
||||
Location: 93,42
|
||||
Owner: Neutral
|
||||
PatrolPoint44: waypoint
|
||||
Location: 96,53
|
||||
Owner: Neutral
|
||||
Actor425: dog
|
||||
Location: 79,22
|
||||
Owner: Soviets
|
||||
Actor426: dog
|
||||
Location: 93,19
|
||||
Owner: Soviets
|
||||
Actor427: dog
|
||||
Location: 104,24
|
||||
Owner: Soviets
|
||||
|
||||
Smudges:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user