diff --git a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs index 53af151aec..70ff420876 100644 --- a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs +++ b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs @@ -22,6 +22,7 @@ namespace OpenRA.Mods.RA.Missions World world; Player allies; Player soviets; + Player neutral; List viewportTargets = new List(); int2 viewportTarget; @@ -31,6 +32,8 @@ namespace OpenRA.Mods.RA.Missions float div = 400; int waitTicks = 0; + int nextCivilianMove = 1; + Actor attackLocation; Actor coastRP1; Actor coastRP2; @@ -69,6 +72,17 @@ namespace OpenRA.Mods.RA.Missions u.QueueActivity(new AttackMove.AttackMoveActivity(u, new Move.Move(attackLocation.Location, 0))); } + if (world.FrameNumber == nextCivilianMove) + { + var civilians = world.Actors.Where(a => !a.IsDead() && a.IsInWorld && a.Owner == neutral && a.HasTrait()); + if (civilians.Any()) + { + var civilian = civilians.Random(world.SharedRandom); + civilian.Trait().Nudge(civilian, civilian, true); + nextCivilianMove += world.SharedRandom.Next(1, 75); + } + } + if (--waitTicks <= 0) { if (++mul <= div) @@ -96,6 +110,7 @@ namespace OpenRA.Mods.RA.Missions allies = w.Players.Single(p => p.InternalName == "Allies"); soviets = w.Players.Single(p => p.InternalName == "Soviets"); + neutral = w.Players.Single(p => p.InternalName == "Neutral"); mapActors = w.WorldActor.Trait().Actors;