Add more patrols
This commit is contained in:
@@ -46,13 +46,57 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
Player soviets;
|
Player soviets;
|
||||||
World world;
|
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)
|
public void Tick(Actor self)
|
||||||
{
|
{
|
||||||
if (world.FrameNumber == 1)
|
if (world.FrameNumber == 1)
|
||||||
{
|
{
|
||||||
InsertSpies();
|
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()
|
void InsertSpies()
|
||||||
@@ -77,37 +121,12 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
lst.QueueActivity(new RemoveSelf());
|
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()
|
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>()))
|
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)
|
world.IssueOrder(new Order("SetUnitStance", actor, false)
|
||||||
@@ -116,7 +135,6 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void WorldLoaded(World w)
|
public void WorldLoaded(World w)
|
||||||
{
|
{
|
||||||
@@ -141,6 +159,30 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
actors["PatrolPoint14"].Location,
|
actors["PatrolPoint14"].Location,
|
||||||
actors["PatrolPoint15"].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();
|
SetupSubStances();
|
||||||
Game.MoveViewport(lstEntryPoint.Location.ToFloat2());
|
Game.MoveViewport(lstEntryPoint.Location.ToFloat2());
|
||||||
PlayMusic();
|
PlayMusic();
|
||||||
|
|||||||
@@ -504,18 +504,18 @@ Actors:
|
|||||||
Actor118: ftur
|
Actor118: ftur
|
||||||
Location: 98,40
|
Location: 98,40
|
||||||
Owner: Soviets
|
Owner: Soviets
|
||||||
Actor149: silo
|
Actor149: fact
|
||||||
Location: 95,27
|
Location: 95,25
|
||||||
Owner: Soviets
|
Owner: Soviets
|
||||||
|
Actor151: v01
|
||||||
|
Location: 89,50
|
||||||
|
Owner: Neutral
|
||||||
Actor150: silo
|
Actor150: silo
|
||||||
Location: 96,28
|
Location: 110,28
|
||||||
Owner: Soviets
|
|
||||||
Actor151: silo
|
|
||||||
Location: 97,27
|
|
||||||
Owner: Soviets
|
|
||||||
Actor152: silo
|
|
||||||
Location: 96,26
|
|
||||||
Owner: Soviets
|
Owner: Soviets
|
||||||
|
Actor152: v07
|
||||||
|
Location: 79,45
|
||||||
|
Owner: Neutral
|
||||||
Actor153: apwr
|
Actor153: apwr
|
||||||
Location: 97,16
|
Location: 97,16
|
||||||
Owner: Soviets
|
Owner: Soviets
|
||||||
@@ -741,7 +741,7 @@ Actors:
|
|||||||
Actor225: fenc
|
Actor225: fenc
|
||||||
Location: 95,36
|
Location: 95,36
|
||||||
Owner: Soviets
|
Owner: Soviets
|
||||||
Actor224: 4tnk.husk
|
Actor224: 4tnk
|
||||||
Location: 103,30
|
Location: 103,30
|
||||||
Owner: Soviets
|
Owner: Soviets
|
||||||
Actor223: 4tnk
|
Actor223: 4tnk
|
||||||
@@ -945,8 +945,8 @@ Actors:
|
|||||||
Actor295: t07
|
Actor295: t07
|
||||||
Location: 84,40
|
Location: 84,40
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Actor296: t06
|
PatrolPoint22: waypoint
|
||||||
Location: 91,49
|
Location: 92,49
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Actor297: v08
|
Actor297: v08
|
||||||
Location: 72,78
|
Location: 72,78
|
||||||
@@ -1302,6 +1302,117 @@ Actors:
|
|||||||
PatrolPoint14: waypoint
|
PatrolPoint14: waypoint
|
||||||
Location: 91,83
|
Location: 91,83
|
||||||
Owner: Neutral
|
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:
|
Smudges:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user