Move the sam site around to make a new outpost on the top left, add engineer rescue

This commit is contained in:
Scott_NZ
2012-08-11 19:49:57 +12:00
parent 9ccfb2c322
commit 60fb45c909
4 changed files with 105 additions and 158 deletions

View File

@@ -46,8 +46,8 @@ namespace OpenRA.Mods.RA.Missions
Actor einsteinChinook;
Actor tanya;
Actor attackEntryPoint1;
Actor attackEntryPoint2;
Actor attackEntryPoint2;
World world;
static readonly string[] taunts = { "laugh1.aud", "lefty1.aud", "cmon1.aud", "gotit1.aud" };
@@ -124,7 +124,7 @@ namespace OpenRA.Mods.RA.Missions
{
SpawnSignalFlare();
Sound.Play("flaren1.aud");
SpawnEinsteinAtLab(); // spawn Einstein once the area is clear
SpawnEinsteinAtLab();
SendShips();
currentObjective++;
DisplayObjective();
@@ -152,7 +152,7 @@ namespace OpenRA.Mods.RA.Missions
FlyEinsteinFromExtractionLZ();
}
}
if (einsteinChinook != null && !world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait<Cargo>().Passengers.Contains(einstein))
if (einsteinChinook != null && !einsteinChinook.IsDead() && !world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait<Cargo>().Passengers.Contains(einstein))
{
MissionAccomplished("Einstein was rescued.");
}
@@ -263,8 +263,8 @@ namespace OpenRA.Mods.RA.Missions
chinook.QueueActivity(new RemoveSelf());
}
public void WorldLoaded(World w)
{
public void WorldLoaded(World w)
{
world = w;
allies = w.Players.Single(p => p.InternalName == "Allies");
soviets = w.Players.Single(p => p.InternalName == "Soviets");

View File

@@ -9,6 +9,7 @@
#endregion
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.FileFormats;
@@ -37,13 +38,15 @@ namespace OpenRA.Mods.RA.Missions
Actor sam4;
Actor tanya;
Actor einstein;
Actor engineer;
Actor engineerMiss;
Actor chinookHusk;
Actor allies2BasePoint;
Actor reinforcementsEntryPoint;
Actor extractionLZEntryPoint;
Actor extractionLZ;
Actor extractionLZExitPoint;
Actor einsteinChinook;
@@ -56,6 +59,8 @@ namespace OpenRA.Mods.RA.Missions
static readonly string[] reinforcements = { "1tnk", "1tnk", "jeep", "mcv" };
const string ChinookName = "tran";
const string SignalFlareName = "flare";
const string EngineerName = "e6";
const int EngineerMissClearRange = 5;
void DisplayObjective()
{
@@ -95,20 +100,25 @@ namespace OpenRA.Mods.RA.Missions
{
StartReinforcementsTimer();
}
if (!engineerMiss.Destroyed && engineer == null && AlliesControlMiss())
{
SpawnEngineerAtMiss();
engineerMiss.QueueActivity(new Demolish(engineerMiss, 0));
}
if (currentObjective == 0)
{
if (sam1.Destroyed && sam2.Destroyed && sam3.Destroyed && sam4.Destroyed)
{
currentObjective++;
DisplayObjective();
Sound.Play("flaren1.aud");
SpawnSignalFlare();
Game.RunAfterDelay(150, StartChinookTimer);
Sound.Play("flaren1.aud");
Game.RunAfterDelay(25 * 10, StartChinookTimer);
}
}
else if (currentObjective == 1)
{
if (einsteinChinook != null && !world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait<Cargo>().Passengers.Contains(einstein))
if (einsteinChinook != null && !einsteinChinook.IsDead() && !world.Map.IsInMap(einsteinChinook.Location) && einsteinChinook.Trait<Cargo>().Passengers.Contains(einstein))
{
MissionAccomplished("Einstein was rescued.");
}
@@ -185,10 +195,28 @@ namespace OpenRA.Mods.RA.Missions
einsteinChinook.QueueActivity(new HeliLand(true));
einsteinChinook.QueueActivity(new WaitFor(() => einsteinChinook.Trait<Cargo>().Passengers.Contains(einstein)));
einsteinChinook.QueueActivity(new Wait(150));
einsteinChinook.QueueActivity(new HeliFly(extractionLZExitPoint.CenterLocation));
einsteinChinook.QueueActivity(new HeliFly(extractionLZEntryPoint.CenterLocation));
einsteinChinook.QueueActivity(new RemoveSelf());
}
IEnumerable<Actor> UnitsNearActor(Actor actor, int range)
{
return world.FindUnitsInCircle(actor.CenterLocation, Game.CellSize * range)
.Where(a => a.IsInWorld && a != world.WorldActor && !a.Destroyed && a.HasTrait<IMove>() && !a.Owner.NonCombatant);
}
bool AlliesControlMiss()
{
var units = UnitsNearActor(engineerMiss, EngineerMissClearRange);
return units.Any() && units.All(a => a.Owner == allies1);
}
void SpawnEngineerAtMiss()
{
engineer = world.CreateActor(EngineerName, new TypeDictionary { new OwnerInit(allies1), new LocationInit(engineerMiss.Location) });
engineer.QueueActivity(new Move.Move(engineerMiss.Location + new CVec(5, 0)));
}
public void WorldLoaded(World w)
{
world = w;
@@ -207,7 +235,7 @@ namespace OpenRA.Mods.RA.Missions
reinforcementsEntryPoint = actors["ReinforcementsEntryPoint"];
extractionLZ = actors["ExtractionLZ"];
extractionLZEntryPoint = actors["ExtractionLZEntryPoint"];
extractionLZExitPoint = actors["ExtractionLZExitPoint"];
engineerMiss = actors["EngineerMiss"];
w.WorldActor.Trait<Shroud>().Explore(w, sam1.Location, 2);
w.WorldActor.Trait<Shroud>().Explore(w, sam2.Location, 2);
w.WorldActor.Trait<Shroud>().Explore(w, sam3.Location, 2);

Binary file not shown.

View File

@@ -353,9 +353,6 @@ Actors:
Actor118: fenc
Location: 109,99
Owner: Soviets
Actor190: fenc
Location: 35,18
Owner: Soviets
Actor125: t01
Location: 99,82
Owner: Neutral
@@ -491,9 +488,6 @@ Actors:
Actor191: t14
Location: 33,51
Owner: Neutral
Actor257: fenc
Location: 27,25
Owner: Soviets
Actor73: fenc
Location: 104,92
Owner: Soviets
@@ -626,8 +620,8 @@ Actors:
Actor134: tc03
Location: 100,101
Owner: Neutral
Actor57: miss
Location: 95,106
EngineerMiss: miss
Location: 95,107
Owner: Soviets
Actor140: t11
Location: 110,82
@@ -647,9 +641,6 @@ Actors:
Actor141: t13
Location: 104,85
Owner: Neutral
Actor111: proc
Location: 45,49
Owner: Soviets
Actor236: 3tnk
Location: 79,38
Owner: Soviets
@@ -665,9 +656,6 @@ Actors:
Actor164: e1
Location: 107,99
Owner: Soviets
Actor394: fenc
Location: 26,17
Owner: Soviets
Actor103: brik
Location: 43,42
Owner: Soviets
@@ -776,14 +764,11 @@ Actors:
Actor296: e1
Location: 55,55
Owner: Soviets
Actor380: sbag
Location: 51,55
Actor220: fenc
Location: 35,25
Owner: Soviets
Actor297: fenc
Location: 29,25
Owner: Soviets
Actor411: e1
Location: 41,55
Actor111: apwr
Location: 42,58
Owner: Soviets
Actor302: brik
Location: 58,48
@@ -797,11 +782,11 @@ Actors:
Actor455: brik
Location: 44,64
Owner: Soviets
Actor400: sbag
Location: 50,57
Actor197: fenc
Location: 30,27
Owner: Soviets
Actor396: sbag
Location: 50,55
Actor257: fenc
Location: 35,24
Owner: Soviets
Actor199: t01
Location: 108,49
@@ -926,8 +911,8 @@ Actors:
Actor524: brik
Location: 55,69
Owner: Soviets
Actor308: e1
Location: 54,59
Actor205: fenc
Location: 30,26
Owner: Soviets
Actor309: e2
Location: 59,62
@@ -947,44 +932,14 @@ Actors:
Actor532: brik
Location: 30,49
Owner: Soviets
Actor300: fenc
Location: 32,25
Owner: Soviets
Actor298: fenc
Location: 30,25
Owner: Soviets
Actor301: fenc
Location: 33,25
Owner: Soviets
Actor382: fenc
Location: 34,17
Owner: Soviets
Actor383: fenc
Location: 33,17
Owner: Soviets
Actor384: fenc
Location: 32,17
Owner: Soviets
Actor385: fenc
Location: 31,17
Owner: Soviets
Actor386: fenc
Location: 30,17
Owner: Soviets
Actor387: fenc
Location: 29,17
Owner: Soviets
Actor388: fenc
Location: 28,17
Owner: Soviets
Actor317: fenc
Location: 35,23
Owner: Soviets
Actor393: fenc
Location: 27,17
Owner: Soviets
Actor395: fenc
Location: 26,18
Actor301: tc04
Location: 27,33
Owner: Neutral
Actor308: t12
Location: 26,25
Owner: Neutral
Actor300: v08
Location: 27,23
Owner: Soviets
Actor401: brik
Location: 50,72
@@ -992,9 +947,9 @@ Actors:
Actor54: barr
Location: 74,82
Owner: Soviets
Actor316: fenc
Location: 35,24
Owner: Soviets
Actor311: t10
Location: 33,20
Owner: Neutral
Actor331: t03
Location: 97,49
Owner: Neutral
@@ -1169,33 +1124,18 @@ Actors:
Actor454: brik
Location: 45,64
Owner: Soviets
Actor323: apwr
Location: 31,18
Owner: Soviets
Actor453: brik
Location: 46,64
Owner: Soviets
Actor402: tsla
Location: 51,71
Owner: Soviets
Actor398: sbag
Location: 49,56
Actor297: e1
Location: 33,25
Owner: Soviets
Actor403: ftur
Location: 46,69
Owner: Soviets
Actor205: fenc
Location: 26,24
Owner: Soviets
Actor322: apwr
Location: 31,21
Owner: Soviets
Actor202: fenc
Location: 26,23
Owner: Soviets
Actor324: apwr
Location: 28,18
Owner: Soviets
Actor405: brik
Location: 37,41
Owner: Soviets
@@ -1211,9 +1151,6 @@ Actors:
Actor124: mine
Location: 49,25
Owner: Neutral
Actor321: apwr
Location: 28,21
Owner: Soviets
Actor207: e2
Location: 33,55
Owner: Soviets
@@ -1238,12 +1175,6 @@ Actors:
Actor444: brik
Location: 62,58
Owner: Soviets
Actor220: fenc
Location: 26,25
Owner: Soviets
Actor0: silo
Location: 46,43
Owner: Soviets
Actor166: e1
Location: 98,84
Owner: Soviets
@@ -1265,8 +1196,8 @@ Actors:
Actor425: brik
Location: 55,73
Owner: Soviets
Actor399: sbag
Location: 49,57
Actor298: e2
Location: 33,23
Owner: Soviets
Actor471: tsla
Location: 40,40
@@ -1280,26 +1211,14 @@ Actors:
Actor364: brik
Location: 29,48
Owner: Soviets
Actor299: fenc
Location: 31,25
Owner: Soviets
Actor311: fenc
Location: 34,25
Owner: Soviets
Actor499: brik
Location: 59,67
Owner: Soviets
Actor197: fenc
Location: 35,17
Owner: Soviets
Actor117: fenc
Location: 26,19
Owner: Soviets
Actor466: brik
Location: 62,59
Owner: Soviets
Actor389: fix
Location: 44,57
Actor57: fix
Location: 48,49
Owner: Soviets
Actor390: dog
Location: 60,55
@@ -1415,11 +1334,8 @@ Actors:
Actor514: tc03
Location: 104,20
Owner: Neutral
Actor295: fenc
Location: 28,25
Owner: Soviets
Actor397: sbag
Location: 49,55
Actor190: fenc
Location: 31,27
Owner: Soviets
Actor526: fenc
Location: 76,23
@@ -1472,9 +1388,6 @@ Actors:
Actor535: dog
Location: 21,70
Owner: Soviets
Actor315: fenc
Location: 35,25
Owner: Soviets
Actor283: brik
Location: 52,73
Owner: Soviets
@@ -1511,9 +1424,6 @@ Actors:
Actor445: apwr
Location: 29,54
Owner: Soviets
Actor450: silo
Location: 47,43
Owner: Soviets
Actor447: tsla
Location: 27,61
Owner: Soviets
@@ -1523,26 +1433,23 @@ Actors:
Actor449: e1
Location: 28,65
Owner: Soviets
Actor446: silo
Location: 46,44
Owner: Soviets
Actor451: silo
Location: 47,44
Owner: Soviets
Actor326: sbag
Location: 52,55
Owner: Soviets
Actor319: sbag
Location: 51,57
Actor0: proc
Location: 45,42
Owner: Soviets
SAM4: sam
Location: 50,56
Location: 31,24
Owner: Soviets
Actor320: sbag
Location: 52,57
Actor202: fenc
Location: 29,26
Owner: Soviets
Actor325: sbag
Location: 52,56
Actor295: e1
Location: 28,25
Owner: Soviets
Actor78: tsla
Location: 45,49
Owner: Soviets
Actor299: dog
Location: 29,23
Owner: Soviets
Actor452: tent
Location: 33,92
@@ -1607,9 +1514,6 @@ Actors:
Actor478: brl3
Location: 38,95
Owner: Allies2
Actor169: fenc
Location: 35,19
Owner: Soviets
Actor479: brik
Location: 62,60
Owner: Soviets
@@ -1730,8 +1634,8 @@ Actors:
Actor552: ftur
Location: 31,73
Owner: Soviets
Actor554: tsla
Location: 45,55
Actor389: apwr
Location: 42,55
Owner: Soviets
Actor555: ftur
Location: 17,71
@@ -1752,14 +1656,29 @@ Actors:
Location: 67,92
Owner: Soviets
ExtractionLZ: waypoint
Location: 53,31
Location: 30,24
Owner: Neutral
ExtractionLZEntryPoint: waypoint
Location: 9,9
Owner: Neutral
ExtractionLZExitPoint: waypoint
Location: 60,10
Owner: Neutral
Actor214: apwr
Location: 45,58
Owner: Soviets
Actor411: apwr
Location: 45,55
Owner: Soviets
Actor557: silo
Location: 39,49
Owner: Soviets
Actor560: silo
Location: 38,49
Owner: Soviets
Actor561: silo
Location: 38,50
Owner: Soviets
Actor562: silo
Location: 39,50
Owner: Soviets
Smudges: