Merge pull request #6837 from obrakmann/mission-polish
Another mission polish PR
This commit is contained in:
@@ -20,8 +20,9 @@ namespace OpenRA.Mods.RA
|
||||
{
|
||||
class CrateInfo : ITraitInfo, IOccupySpaceInfo, Requires<RenderSpritesInfo>
|
||||
{
|
||||
[Desc("Seconds")]
|
||||
public readonly int Lifetime = 5;
|
||||
[Desc("Length of time (in seconds) until the crate gets removed automatically. " +
|
||||
"A value of zero disables auto-removal.")]
|
||||
public readonly int Lifetime = 0;
|
||||
|
||||
[Desc("Allowed to land on.")]
|
||||
public readonly string[] TerrainTypes = { };
|
||||
@@ -57,26 +58,29 @@ namespace OpenRA.Mods.RA
|
||||
if (collected)
|
||||
return;
|
||||
|
||||
var shares = self.TraitsImplementing<CrateAction>()
|
||||
.Select(a => Pair.New(a, a.GetSelectionSharesOuter(crusher)));
|
||||
|
||||
var totalShares = shares.Sum(a => a.Second);
|
||||
var n = self.World.SharedRandom.Next(totalShares);
|
||||
var crateActions = self.TraitsImplementing<CrateAction>();
|
||||
|
||||
self.Destroy();
|
||||
collected = true;
|
||||
|
||||
if (crateActions.Any())
|
||||
{
|
||||
var shares = crateActions.Select(a => Pair.New(a, a.GetSelectionSharesOuter(crusher)));
|
||||
|
||||
var totalShares = shares.Sum(a => a.Second);
|
||||
var n = self.World.SharedRandom.Next(totalShares);
|
||||
|
||||
foreach (var s in shares)
|
||||
{
|
||||
if (n < s.Second)
|
||||
{
|
||||
s.First.Activate(crusher);
|
||||
return;
|
||||
}
|
||||
else
|
||||
} else
|
||||
n -= s.Second;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void OnLanded()
|
||||
{
|
||||
@@ -107,7 +111,7 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
public void Tick(Actor self)
|
||||
{
|
||||
if (++ticks >= info.Lifetime * 25)
|
||||
if (info.Lifetime != 0 && ++ticks >= info.Lifetime * 25)
|
||||
self.Destroy();
|
||||
}
|
||||
|
||||
|
||||
@@ -202,7 +202,8 @@ namespace OpenRA.Mods.RA.Scripting
|
||||
"The function will return true if production could be started, false otherwise. " +
|
||||
"If an actionFunc is given, it will be called as actionFunc(Actor[] actors) once " +
|
||||
"production of all actors has been completed. The actors array is guaranteed to " +
|
||||
"only contain alive actors.")]
|
||||
"only contain alive actors. Note: This function will fail to work when called " +
|
||||
"during the first tick")]
|
||||
public bool Build(string[] actorTypes, LuaFunction actionFunc = null)
|
||||
{
|
||||
var typeToQueueMap = new Dictionary<string, string>();
|
||||
|
||||
@@ -24,7 +24,7 @@ Type: Campaign
|
||||
|
||||
Options:
|
||||
Crates: False
|
||||
Fog: False
|
||||
Fog: True
|
||||
Shroud: True
|
||||
AllyBuildRadius: False
|
||||
FragileAlliances: False
|
||||
@@ -483,6 +483,8 @@ Rules:
|
||||
GenericVisibility: Enemy
|
||||
ShowOwnerRow: false
|
||||
^Infantry:
|
||||
SpawnViceroid:
|
||||
Probability: 0
|
||||
MustBeDestroyed:
|
||||
Tooltip:
|
||||
GenericVisibility: Enemy
|
||||
|
||||
@@ -24,7 +24,7 @@ Type: Campaign
|
||||
|
||||
Options:
|
||||
Crates: False
|
||||
Fog: False
|
||||
Fog: True
|
||||
Shroud: True
|
||||
AllyBuildRadius: False
|
||||
FragileAlliances: False
|
||||
@@ -765,6 +765,8 @@ Rules:
|
||||
GenericVisibility: Enemy
|
||||
ShowOwnerRow: false
|
||||
^Infantry:
|
||||
SpawnViceroid:
|
||||
Probability: 0
|
||||
MustBeDestroyed:
|
||||
Tooltip:
|
||||
GenericVisibility: Enemy
|
||||
|
||||
@@ -133,9 +133,14 @@ WorldLoaded = function()
|
||||
end)
|
||||
end)
|
||||
|
||||
|
||||
Media.PlayMovieFullscreen("bkground.vqa", function()
|
||||
Media.PlayMovieFullscreen("nitejump.vqa", function()
|
||||
gdiObjective = gdi.AddPrimaryObjective("Retrieve the crate with the stolen rods.")
|
||||
reinforcementsObjective = gdi.AddSecondaryObjective("Eliminate " .. KillsUntilReinforcements .. " Nod units for reinforcements.")
|
||||
nod.AddPrimaryObjective("Defend against the GDI forces.")
|
||||
end)
|
||||
end)
|
||||
|
||||
BuildNod1()
|
||||
Utils.Do(NodHelis, function(heli)
|
||||
@@ -161,6 +166,4 @@ WorldLoaded = function()
|
||||
end)
|
||||
|
||||
Camera.Position = Actor56.CenterPosition
|
||||
|
||||
Media.PlayMovieFullscreen("bkground.vqa", function() Media.PlayMovieFullscreen("nitejump.vqa") end)
|
||||
end
|
||||
|
||||
@@ -25,7 +25,7 @@ Type: Campaign
|
||||
Options:
|
||||
Cheats: False
|
||||
Crates: False
|
||||
Fog: False
|
||||
Fog: True
|
||||
Shroud: True
|
||||
AllyBuildRadius: False
|
||||
FragileAlliances: False
|
||||
@@ -545,7 +545,7 @@ Actors:
|
||||
GDIHeliLZ: waypoint
|
||||
Location: 27,58
|
||||
Owner: Neutral
|
||||
crate: CRATE
|
||||
crate: CRATE.plain
|
||||
Location: 25,58
|
||||
Owner: Neutral
|
||||
|
||||
@@ -575,11 +575,12 @@ Rules:
|
||||
GenericVisibility: Enemy
|
||||
ShowOwnerRow: false
|
||||
^Helicopter:
|
||||
MustBeDestroyed:
|
||||
Tooltip:
|
||||
GenericVisibility: Enemy
|
||||
ShowOwnerRow: false
|
||||
^Infantry:
|
||||
SpawnViceroid:
|
||||
Probability: 0
|
||||
MustBeDestroyed:
|
||||
Tooltip:
|
||||
GenericVisibility: Enemy
|
||||
@@ -604,17 +605,6 @@ Rules:
|
||||
GenericVisibility: Enemy, Ally, Neutral
|
||||
GenericStancePrefix: false
|
||||
ShowOwnerRow: false
|
||||
CRATE:
|
||||
Crate:
|
||||
Lifetime: 9999
|
||||
HealUnitsCrateAction:
|
||||
-RevealMapCrateAction:
|
||||
-GiveMcvCrateAction:
|
||||
-GiveCashCrateAction:
|
||||
-ExplodeCrateAction@fire:
|
||||
-GrantUpgradeCrateAction@cloak:
|
||||
-DuplicateUnitCrateAction:
|
||||
ScriptTriggers:
|
||||
|
||||
Sequences:
|
||||
|
||||
|
||||
@@ -138,9 +138,13 @@ WorldLoaded = function()
|
||||
end)
|
||||
end)
|
||||
|
||||
Media.PlayMovieFullscreen("bkground.vqa", function()
|
||||
Media.PlayMovieFullscreen("nitejump.vqa", function()
|
||||
gdiObjective = gdi.AddPrimaryObjective("Retrieve the crate with the stolen rods.")
|
||||
reinforcementsObjective = gdi.AddSecondaryObjective("Eliminate " .. KillsUntilReinforcements .. " Nod units for reinforcements.")
|
||||
nod.AddPrimaryObjective("Defend against the GDI forces.")
|
||||
end)
|
||||
end)
|
||||
|
||||
SetupWorld()
|
||||
|
||||
@@ -193,6 +197,4 @@ WorldLoaded = function()
|
||||
end)
|
||||
|
||||
Camera.Position = GDIReinforcementsWP1.CenterPosition
|
||||
|
||||
Media.PlayMovieFullscreen("bkground.vqa", function() Media.PlayMovieFullscreen("nitejump.vqa") end)
|
||||
end
|
||||
|
||||
@@ -24,7 +24,7 @@ Type: Campaign
|
||||
|
||||
Options:
|
||||
Crates: False
|
||||
Fog: False
|
||||
Fog: True
|
||||
Shroud: True
|
||||
AllyBuildRadius: False
|
||||
FragileAlliances: False
|
||||
@@ -594,7 +594,7 @@ Actors:
|
||||
GDIReinforcementsWP1: waypoint
|
||||
Location: 50,45
|
||||
Owner: Neutral
|
||||
crate: CRATE
|
||||
crate: CRATE.plain
|
||||
Location: 14,13
|
||||
Owner: Neutral
|
||||
HeliEntry: waypoint
|
||||
@@ -630,11 +630,12 @@ Rules:
|
||||
GenericVisibility: Enemy
|
||||
ShowOwnerRow: false
|
||||
^Helicopter:
|
||||
MustBeDestroyed:
|
||||
Tooltip:
|
||||
GenericVisibility: Enemy
|
||||
ShowOwnerRow: false
|
||||
^Infantry:
|
||||
SpawnViceroid:
|
||||
Probability: 0
|
||||
MustBeDestroyed:
|
||||
Tooltip:
|
||||
GenericVisibility: Enemy
|
||||
@@ -662,17 +663,6 @@ Rules:
|
||||
E3:
|
||||
AutoTarget:
|
||||
ScanRadius: 5
|
||||
CRATE:
|
||||
Crate:
|
||||
Lifetime: 9999
|
||||
HealUnitsCrateAction:
|
||||
-RevealMapCrateAction:
|
||||
-GiveMcvCrateAction:
|
||||
-GiveCashCrateAction:
|
||||
-ExplodeCrateAction@fire:
|
||||
-GrantUpgradeCrateAction@cloak:
|
||||
-DuplicateUnitCrateAction:
|
||||
ScriptTriggers:
|
||||
|
||||
Sequences:
|
||||
|
||||
|
||||
@@ -93,9 +93,13 @@ WorldLoaded = function()
|
||||
end)
|
||||
end)
|
||||
|
||||
Media.PlayMovieFullscreen("bkground.vqa", function()
|
||||
Media.PlayMovieFullscreen("nodsweep.vqa", function()
|
||||
nodObjective = nod.AddPrimaryObjective("Destroy all GDI troops")
|
||||
gdiObjective1 = player.AddPrimaryObjective("Defend the town of Bialystok")
|
||||
gdiObjective2 = player.AddPrimaryObjective("Eliminate all Nod forces in the area")
|
||||
end)
|
||||
end)
|
||||
|
||||
townAttackTrigger = false
|
||||
Trigger.OnExitedFootprint(TownAttackTrigger, function(a, id)
|
||||
@@ -125,8 +129,6 @@ WorldLoaded = function()
|
||||
end)
|
||||
|
||||
Camera.Position = Actor141.CenterPosition
|
||||
|
||||
Media.PlayMovieFullscreen("bkground.vqa", function() Media.PlayMovieFullscreen("nodsweep.vqa") end)
|
||||
end
|
||||
|
||||
Tick = function()
|
||||
|
||||
@@ -24,7 +24,7 @@ Type: Campaign
|
||||
|
||||
Options:
|
||||
Crates: False
|
||||
Fog: False
|
||||
Fog: True
|
||||
Shroud: True
|
||||
AllyBuildRadius: False
|
||||
FragileAlliances: False
|
||||
@@ -899,6 +899,8 @@ Rules:
|
||||
GenericVisibility: Enemy
|
||||
ShowOwnerRow: false
|
||||
^Infantry:
|
||||
SpawnViceroid:
|
||||
Probability: 0
|
||||
MustBeDestroyed:
|
||||
Tooltip:
|
||||
GenericVisibility: Enemy
|
||||
|
||||
@@ -24,7 +24,7 @@ Type: Campaign
|
||||
|
||||
Options:
|
||||
Crates: False
|
||||
Fog: False
|
||||
Fog: True
|
||||
Shroud: True
|
||||
AllyBuildRadius: False
|
||||
FragileAlliances: False
|
||||
|
||||
@@ -24,7 +24,7 @@ Type: Campaign
|
||||
|
||||
Options:
|
||||
Crates: False
|
||||
Fog: False
|
||||
Fog: True
|
||||
Shroud: True
|
||||
AllyBuildRadius: False
|
||||
FragileAlliances: False
|
||||
@@ -555,6 +555,8 @@ Rules:
|
||||
GenericVisibility: Enemy
|
||||
ShowOwnerRow: false
|
||||
^Infantry:
|
||||
SpawnViceroid:
|
||||
Probability: 0
|
||||
MustBeDestroyed:
|
||||
Tooltip:
|
||||
GenericVisibility: Enemy
|
||||
|
||||
@@ -43,9 +43,11 @@ WorldLoaded = function()
|
||||
end)
|
||||
end)
|
||||
|
||||
Media.PlayMovieFullscreen("dessweep.vqa", function()
|
||||
gdiObjective = enemy.AddPrimaryObjective("Eliminate all Nod forces in the area")
|
||||
nodObjective1 = player.AddPrimaryObjective("Capture the prison")
|
||||
nodObjective2 = player.AddSecondaryObjective("Destroy all GDI forces")
|
||||
end)
|
||||
|
||||
Trigger.OnCapture(TechCenter, function()
|
||||
Trigger.AfterDelay(DateTime.Seconds(2), function()
|
||||
|
||||
@@ -24,7 +24,7 @@ Type: Campaign
|
||||
|
||||
Options:
|
||||
Crates: False
|
||||
Fog: False
|
||||
Fog: True
|
||||
Shroud: True
|
||||
AllyBuildRadius: False
|
||||
FragileAlliances: False
|
||||
@@ -595,6 +595,8 @@ Rules:
|
||||
GenericVisibility: Enemy
|
||||
ShowOwnerRow: false
|
||||
^Helicopter:
|
||||
SpawnViceroid:
|
||||
Probability: 0
|
||||
MustBeDestroyed:
|
||||
Tooltip:
|
||||
GenericVisibility: Enemy
|
||||
|
||||
@@ -59,9 +59,11 @@ WorldLoaded = function()
|
||||
end)
|
||||
end)
|
||||
|
||||
Media.PlayMovieFullscreen("dessweep.vqa", function()
|
||||
gdiObjective = enemy.AddPrimaryObjective("Eliminate all Nod forces in the area")
|
||||
nodObjective1 = player.AddPrimaryObjective("Capture the prison")
|
||||
nodObjective2 = player.AddSecondaryObjective("Destroy all GDI forces")
|
||||
end)
|
||||
|
||||
Trigger.OnKilled(TechCenter, function() player.MarkFailedObjective(nodObjective1) end)
|
||||
Trigger.OnCapture(TechCenter, function()
|
||||
@@ -74,7 +76,6 @@ WorldLoaded = function()
|
||||
Trigger.AfterDelay(DateTime.Seconds(40), function() SendAttackWave(FirstAttackWaveUnits, FirstAttackWave) end)
|
||||
Trigger.AfterDelay(DateTime.Seconds(80), function() SendAttackWave(SecondAttackWaveUnits, SecondAttackWave) end)
|
||||
Trigger.AfterDelay(DateTime.Seconds(140), function() SendAttackWave(ThirdAttackWaveUnits, FirstAttackWave) end)
|
||||
|
||||
end
|
||||
|
||||
Tick = function()
|
||||
|
||||
@@ -646,4 +646,18 @@
|
||||
DestroyedSound: xplobig4.aud
|
||||
BodyOrientation:
|
||||
ScriptTriggers:
|
||||
^Crate:
|
||||
Tooltip:
|
||||
Name: Crate
|
||||
GenericName: Crate
|
||||
Crate:
|
||||
TerrainTypes: Clear, Rough, Road, Tiberium, BlueTiberium, Beach
|
||||
RenderSprites:
|
||||
Palette: effect
|
||||
WithCrateBody:
|
||||
XmasImages: xcratea, xcrateb, xcratec, xcrated
|
||||
Selectable:
|
||||
Selectable: false
|
||||
Bounds: 15,15,-1,-1
|
||||
BodyOrientation:
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
CRATE.plain:
|
||||
Inherits: ^Crate
|
||||
ScriptTriggers:
|
||||
|
||||
CRATE:
|
||||
Tooltip:
|
||||
Name: Crate
|
||||
Inherits: ^Crate
|
||||
Crate:
|
||||
Lifetime: 240
|
||||
TerrainTypes: Clear, Rough, Road, Tiberium, BlueTiberium, Beach
|
||||
GiveCashCrateAction:
|
||||
Amount: 1000
|
||||
SelectionShares: 20
|
||||
@@ -27,14 +29,6 @@ CRATE:
|
||||
SelectionShares: 0
|
||||
NoBaseSelectionShares: 120
|
||||
Units: mcv
|
||||
RenderSprites:
|
||||
Palette: effect
|
||||
WithCrateBody:
|
||||
XmasImages: xcratea, xcrateb, xcratec, xcrated
|
||||
Selectable:
|
||||
Selectable: false
|
||||
Bounds: 15,15,-1,-1
|
||||
BodyOrientation:
|
||||
|
||||
mpspawn:
|
||||
Immobile:
|
||||
|
||||
@@ -175,12 +175,16 @@ WorldLoaded = function()
|
||||
Trigger.OnPlayerLost(player, MissionFailed)
|
||||
Trigger.OnPlayerWon(player, MissionAccomplished)
|
||||
|
||||
Media.PlayMovieFullscreen("landing.vqa", function()
|
||||
FindEinsteinObjective = player.AddPrimaryObjective("Find Einstein.")
|
||||
SurviveObjective = player.AddPrimaryObjective("Tanya and Einstein must survive.")
|
||||
england.AddPrimaryObjective("Destroy the soviet base after a successful rescue.")
|
||||
CivilProtectionObjective = player.AddSecondaryObjective("Protect all civilians.")
|
||||
DefendObjective = ussr.AddPrimaryObjective("Kill Tanya and keep Einstein hostage.")
|
||||
|
||||
RunInitialActivities()
|
||||
end)
|
||||
|
||||
Trigger.OnKilled(Lab, LabDestroyed)
|
||||
Trigger.OnKilled(OilPump, OilPumpDestroyed)
|
||||
|
||||
@@ -193,13 +197,9 @@ WorldLoaded = function()
|
||||
civilianTeam = { Civilian1, Civilian2 }
|
||||
Trigger.OnAnyKilled(civilianTeam, CiviliansKilled)
|
||||
|
||||
RunInitialActivities()
|
||||
|
||||
SetUnitStances()
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(5), function() Actor.Create("camera", true, { Owner = player, Location = BaseCameraPoint.Location }) end)
|
||||
|
||||
Camera.Position = InsertionLZ.CenterPosition
|
||||
|
||||
Media.PlayMovieFullscreen("landing.vqa")
|
||||
end
|
||||
|
||||
@@ -109,9 +109,11 @@ WorldLoaded = function()
|
||||
Trigger.OnPlayerLost(player, MissionFailed)
|
||||
Trigger.OnPlayerWon(player, MissionAccomplished)
|
||||
|
||||
Media.PlayMovieFullscreen("mcv.vqa", function()
|
||||
ConquestObjective = player.AddPrimaryObjective("Secure the area.")
|
||||
ussr.AddPrimaryObjective("Defend your base.")
|
||||
ukraine.AddPrimaryObjective("Destroy the convoy.")
|
||||
end)
|
||||
|
||||
RunInitialActivities()
|
||||
|
||||
@@ -123,8 +125,6 @@ WorldLoaded = function()
|
||||
|
||||
Camera.Position = ReinforcementsEntryPoint.CenterPosition
|
||||
|
||||
Media.PlayMovieFullscreen("mcv.vqa")
|
||||
|
||||
ConvoyTimer(DateTime.Seconds(3), "TenMinutesRemaining")
|
||||
ConvoyTimer(DateTime.Minutes(5), "WarningFiveMinutesRemaining")
|
||||
ConvoyTimer(DateTime.Minutes(6), "WarningFourMinutesRemaining")
|
||||
|
||||
@@ -100,8 +100,6 @@ InitPlayers = function()
|
||||
ussr = Player.GetPlayer("USSR")
|
||||
|
||||
ussr.Cash = 10000
|
||||
|
||||
Media.PlayMovieFullscreen("brdgtilt.vqa")
|
||||
end
|
||||
|
||||
InitObjectives = function()
|
||||
@@ -263,8 +261,10 @@ end
|
||||
WorldLoaded = function()
|
||||
|
||||
InitPlayers()
|
||||
|
||||
Media.PlayMovieFullscreen("brdgtilt.vqa", function()
|
||||
InitObjectives()
|
||||
InitTriggers()
|
||||
|
||||
SendAlliedUnits()
|
||||
end)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user