Files
OpenRA/mods/cnc/maps/nod01/nod01.lua
2015-07-12 17:27:11 +02:00

89 lines
3.1 KiB
Lua

InitialForcesA = { "bggy", "e1", "e1", "e1", "e1" }
InitialForcesB = { "e1", "e1", "bggy", "e1", "e1" }
RifleInfantryReinforcements = { "e1", "e1" }
RocketInfantryReinforcements = { "e3", "e3", "e3", "e3", "e3" }
SendInitialForces = function()
Media.PlaySpeechNotification(nod, "Reinforce")
Reinforcements.Reinforce(nod, InitialForcesA, { StartSpawnPointLeft.Location, StartRallyPoint.Location }, 5)
Reinforcements.Reinforce(nod, InitialForcesB, { StartSpawnPointRight.Location, StartRallyPoint.Location }, 10)
end
SendFirstInfantryReinforcements = function()
Media.PlaySpeechNotification(nod, "Reinforce")
Reinforcements.Reinforce(nod, RifleInfantryReinforcements, { StartSpawnPointRight.Location, StartRallyPoint.Location }, 15)
end
SendSecondInfantryReinforcements = function()
Media.PlaySpeechNotification(nod, "Reinforce")
Reinforcements.Reinforce(nod, RifleInfantryReinforcements, { StartSpawnPointLeft.Location, StartRallyPoint.Location }, 15)
end
SendLastInfantryReinforcements = function()
Media.PlaySpeechNotification(nod, "Reinforce")
-- Move the units properly into the map before they start attacking
local forces = Reinforcements.Reinforce(nod, RocketInfantryReinforcements, { VillageSpawnPoint.Location, VillageRallyPoint.Location }, 8)
Utils.Do(forces, function(a)
a.Stance = "Defend"
a.CallFunc(function() a.Stance = "AttackAnything" end)
end)
end
WorldLoaded = function()
nod = Player.GetPlayer("Nod")
gdi = Player.GetPlayer("GDI")
villagers = Player.GetPlayer("Villagers")
Trigger.OnObjectiveAdded(nod, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
end)
Trigger.OnObjectiveCompleted(nod, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
end)
Trigger.OnObjectiveFailed(nod, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
end)
Trigger.OnPlayerWon(nod, function()
Media.PlaySpeechNotification(nod, "Win")
end)
Trigger.OnPlayerLost(nod, function()
Media.PlaySpeechNotification(nod, "Lose")
end)
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.OnKilled(Nikoomba, function()
nod.MarkCompletedObjective(NodObjective1)
Trigger.AfterDelay(DateTime.Seconds(1), function()
SendLastInfantryReinforcements()
end)
end)
Camera.Position = StartRallyPoint.CenterPosition
SendInitialForces()
Trigger.AfterDelay(DateTime.Seconds(30), SendFirstInfantryReinforcements)
Trigger.AfterDelay(DateTime.Seconds(60), SendSecondInfantryReinforcements)
end
Tick = function()
if DateTime.GameTime > 2 then
if nod.HasNoRequiredUnits() then
gdi.MarkCompletedObjective(GDIObjective1)
end
if villagers.HasNoRequiredUnits() then
nod.MarkCompletedObjective(NodObjective2)
end
if gdi.HasNoRequiredUnits() then
nod.MarkCompletedObjective(NodObjective3)
end
end
end