Merge pull request #6326 from obrakmann/nod01

Port nod01 to New Lua
This commit is contained in:
Paul Chote
2014-08-31 21:54:12 +12:00
2 changed files with 49 additions and 30 deletions

View File

@@ -310,8 +310,8 @@ Rules:
-CrateSpawner:
-SpawnMPUnits:
-MPStartLocations:
LuaScriptInterface:
LuaScripts: nod01.lua
LuaScript:
Scripts: nod01.lua
ObjectivesPanel:
PanelName: MISSION_OBJECTIVES
C10:

View File

@@ -1,47 +1,66 @@
RifleInfantryReinforcements = { "e1", "e1", }
RifleInfantryReinforcements = { "e1", "e1" }
RocketInfantryReinforcements = { "e3", "e3", "e3" }
MissionAccomplished = function()
Mission.MissionOver({ player }, nil, true)
end
MissionFailed = function()
Mission.MissionOver(nil, { player }, true)
Media.PlayMovieFullscreen("nodlose.vqa")
end
SendFirstInfantryReinforcements = function()
Media.PlaySpeechNotification("Reinforce")
Reinforcements.Reinforce(player, RifleInfantryReinforcements, StartSpawnPointRight.Location, StartRallyPoint.Location, 15)
Media.PlaySpeechNotification(nod, "Reinforce")
Reinforcements.Reinforce(nod, RifleInfantryReinforcements, { StartSpawnPointRight.Location, StartRallyPoint.Location }, 15)
end
SendSecondInfantryReinforcements = function()
Media.PlaySpeechNotification("Reinforce")
Reinforcements.Reinforce(player, RifleInfantryReinforcements, StartSpawnPointLeft.Location, StartRallyPoint.Location, 15)
Media.PlaySpeechNotification(nod, "Reinforce")
Reinforcements.Reinforce(nod, RifleInfantryReinforcements, { StartSpawnPointLeft.Location, StartRallyPoint.Location }, 15)
end
SendLastInfantryReinforcements = function()
Media.PlaySpeechNotification("Reinforce")
Reinforcements.Reinforce(player, RocketInfantryReinforcements, VillageSpawnPoint.Location, VillageRallyPoint.Location, 15)
Media.PlaySpeechNotification(nod, "Reinforce")
Reinforcements.Reinforce(nod, RocketInfantryReinforcements, { VillageSpawnPoint.Location, VillageRallyPoint.Location }, 15)
end
WorldLoaded = function()
player = OpenRA.GetPlayer("Nod")
enemy = OpenRA.GetPlayer("Villagers")
nod = Player.GetPlayer("Nod")
gdi = Player.GetPlayer("GDI")
villagers = Player.GetPlayer("Villagers")
NodObjective1 = nod.AddPrimaryObjective("Kill Nikoomba")
NodObjective2 = nod.AddPrimaryObjective("Destroy the village")
NodObjective3 = nod.AddSecondaryObjective("Destroy all GDI troops in the area")
GDIObjective1 = gdi.AddPrimaryObjective("Eliminate all Nod forces")
Trigger.OnObjectiveCompleted(nod, function() Media.DisplayMessage("Objective completed") end)
Trigger.OnObjectiveFailed(nod, function() Media.DisplayMessage("Objective failed") end)
Trigger.OnPlayerWon(nod, function()
Media.PlaySpeechNotification(nod, "Win")
end)
Trigger.OnPlayerLost(nod, function()
Media.PlaySpeechNotification(nod, "Lose")
Trigger.AfterDelay(Utils.Seconds(1), function()
Media.PlayMovieFullscreen("nodlose.vqa")
end)
end)
Trigger.OnKilled(Nikoomba, function()
nod.MarkCompletedObjective(NodObjective1)
Trigger.AfterDelay(Utils.Seconds(1), function()
SendLastInfantryReinforcements()
end)
end)
Trigger.AfterDelay(Utils.Seconds(30), SendFirstInfantryReinforcements)
Trigger.AfterDelay(Utils.Seconds(60), SendSecondInfantryReinforcements)
Media.PlayMovieFullscreen("nod1pre.vqa", function() Media.PlayMovieFullscreen("nod1.vqa") end)
Actor.OnKilled(Nikoomba, SendLastInfantryReinforcements)
OpenRA.RunAfterDelay(25 * 30, SendFirstInfantryReinforcements)
OpenRA.RunAfterDelay(25 * 60, SendSecondInfantryReinforcements)
end
Tick = function()
if Mission.RequiredUnitsAreDestroyed(player) then
MissionFailed()
if nod.HasNoRequiredUnits() then
gdi.MarkCompletedObjective(GDIObjective1)
end
if Mission.RequiredUnitsAreDestroyed(enemy) then
MissionAccomplished()
if villagers.HasNoRequiredUnits() then
nod.MarkCompletedObjective(NodObjective2)
end
end
if gdi.HasNoRequiredUnits() then
nod.MarkCompletedObjective(NodObjective3)
end
end