Extract Tiberian Dawn campaign translations.

This commit is contained in:
Matthias Mailänder
2022-09-11 20:24:39 +02:00
committed by Gustas
parent b62cf7ee9a
commit 621c85059e
73 changed files with 377 additions and 126 deletions

View File

@@ -0,0 +1,149 @@
## campaign
objective-failed = Objective failed
objective-completed = Objective completed
primary = Primary
secondary = Secondary
new-primary-objective = New primary objective
new-secondary-objective = New secondary objective
# cnc64gdi01
destroy-obelisk-sams = Destroy the SAM sites protecting the Obelisk.
destroy-obelisk = Destroy the Obelisk.
destroy-biotech = Destroy the biotech facility.
## gdi03, gdi05abc, gdi07 gdi08ab, gdi09
destroy-sams = Destroy the SAM sites to receive air support.
## funpark01
investigate-village = Investigate the nearby village for reports of
strange activity.
reach-village = Reach the village.
kill-creatures = Kill all creatures in the area.
## gdi01
establish-beachhead = Establish a beachhead.
## gdi01, gdi02, gdi03, gdi04c, gdi05abc, nod07a, nod08ab, nod09, nod10b
eliminate-nod = Eliminate all Nod forces in the area.
## gdi02, nod09
capture-refinery = Capture the Tiberium refinery.
## gdi02, gdi04c, gdi05abc
destroy-gdi = Destroy all GDI troops.
## gdi04ab
battlefield-control = Battlefield Control
apcs-left = APC squads in reserve: { $apcs }
retrieve-rods = Retrieve the crate with the stolen rods.
eliminate-reinforcements = Eliminate { $kills } Nod units for reinforcements.
## gdi04c
defend-bialystok = Defend the town of Białystok.
## gdi05abc
find-gdi-base = Find the GDI base.
## gdi06
destroy-nod-building = Destroy the Nod ********.
## gdi07
destroy-nod = Destroy remaining Nod structures and units.
construct-base = Construct all available buildings.
## gdi08a
repair-base-vehicles = Repair GDI base and vehicles.
## gdi08a, gdi09
destroy-nod-force = Destroy the Nod strike force.
## gdi08b
protect-mobius = Protect Dr. Mobius.
protect-hospital = Protect the Hospital.
keep-civilians-alive = Keep at least { $civilians } out of 14 Civilians alive.
destroy-nod-bases = Destroy the Nod bases.
## gdi08ab, gdi09, nod02ab, nod05, nod07c
kill-all-enemies = Kill all enemies!
## gdi09
destroy-nod-bunkers = Destroy the Nod bunkers to allow Carter's
convoy to pass through safely.
convoy-passed-partly = Part of Carter's convoy passed through!
## nod01
destroy-gdi-troops-area = Destroy all GDI troops in the area.
kill-nikoomba = Kill Nikoomba.
destroy-village = Destroy the village.
eliminate-nod-forces = Eliminate all Nod forces.
## nod02a
destroy-gdi-units = Destroy all GDI units.
## nod02ab
build-base = Build a base.
## nod02b, nod05
destroy-gdi-base = Destroy the GDI base.
## nod03ab
capture-prison = Capture the prison.
destroy-gdi-forces = Destroy all GDI forces.
## nod04a
destroy-village-kill-civilians = Destroy the village and kill all civilians.
kill-gdi-units = Kill all GDI units in the area.
## nod04b
protect-nod-supporters = Protect the civilians that support Nod.
kill-gdi-supporters = Kill all civilian GDI supporters.
## nod05, nod07ab, nod09
build-sams = Build { $sams } SAMs to fend off the GDI bombers.
## nod06abc
steal-nuclear-detonator = Steal the GDI nuclear detonator.
move-to-evacuation-point = Move to the evacuation point.
## nod06ab
destroy-gdi-supporter-houses = Destroy the houses of the GDI supporters
in the village.
## nod06c
infiltrate-barracks-factory-conyard = Infiltrate the barracks, weapon factory and
the construction yard.
## nod07a
find-nod-base = Find the Nod base.
## nod07ab, nod08ab, nod09
eliminate-gdi-forces = Eliminate all GDI forces in the area.
## nod07c
capture-gdi-helipad = Capture the GDI helipad.
dont-capture-or-destroy = Don't capture or destroy any other
GDI main building.
orca-wreak-havoc = Use the GDI orca to wreak havoc at the village.
distract-guards = Distract the guards by attacking the
main entrance with your vehicles.
## nod08ab
capture-gdi-outpost = Capture the GDI outpost.
## nod08ab, nod09
locate-nod-base = Locate the Nod base.
## nod09
secure-first-landing-zone = Secure the first landing zone.
secure-second-landing-zone = Secure the second landing zone.
## nod10a
kill-gdi-scientist = Kill the GDI scientist.
destroy-tech-center = Destroy the GDI R&D center.
## nod10b
destroy-capture-warfactory = Destroy or capture the Weapons Factory.
destroy-mammoth-tanks = Destroy the Mammoth tanks in the R&D base.
keep-commando-alive = Keep your Commando alive.

View File

@@ -38,9 +38,9 @@ WorldLoaded = function()
InitObjectives(GDI)
DestroySAMs = GDI.AddObjective("Destroy the SAM sites protecting the Obelisk.")
DestroyObelisk = GDI.AddObjective("Destroy the Obelisk.")
DestroyBiotechCenter = GDI.AddObjective("Destroy the biotech facility.")
DestroySAMs = AddPrimaryObjective(GDI, "destroy-obelisk-sams")
DestroyObelisk = AddPrimaryObjective(GDI, "destroy-obelisk")
DestroyBiotechCenter = AddPrimaryObjective(GDI, "destroy-biotech")
Trigger.OnAllKilled(SamSites, function()
AirSupport = Actor.Create("airstrike.proxy", true, { Owner = GDI })

View File

@@ -714,3 +714,5 @@ Actors:
Location: 26,14
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -413,3 +413,5 @@ Actors:
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -16,16 +16,16 @@ WorldLoaded = function()
Dinosaur = Player.GetPlayer("Dinosaur")
Civilian = Player.GetPlayer("Civilian")
InvestigateObj = Nod.AddObjective("Investigate the nearby village for reports of\nstrange activity.")
InvestigateObj = AddPrimaryObjective(Nod, "investigate-village")
InitObjectives(Nod)
ReachVillageObj = Nod.AddObjective("Reach the village.")
ReachVillageObj = AddPrimaryObjective(Nod, "reach-village")
Trigger.OnPlayerDiscovered(Civilian, function(_, discoverer)
if discoverer == Nod and not Nod.IsObjectiveCompleted(ReachVillageObj) then
if not Dinosaur.HasNoRequiredUnits() then
KillDinos = Nod.AddObjective("Kill all creatures in the area.")
KillDinos = AddPrimaryObjective(Nod, "kill-creatures")
end
Nod.MarkCompletedObjective(ReachVillageObj)

View File

@@ -32,8 +32,8 @@ WorldLoaded = function()
InitObjectives(GDI)
SecureAreaObjective = GDI.AddObjective("Eliminate all Nod forces in the area.")
BeachheadObjective = GDI.AddObjective("Establish a beachhead.", "Secondary", false)
SecureAreaObjective = AddPrimaryObjective(GDI, "eliminate-nod")
BeachheadObjective = AddSecondaryObjective(GDI, "establish-beachhead")
ReinforceWithLandingCraft(GDI, MCVReinforcements, lstStart.Location + CVec.New(2, 0), lstEnd.Location + CVec.New(2, 0), mcvTarget.Location)
Reinforce(InfantryReinforcements)

View File

@@ -236,3 +236,5 @@ Actors:
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -44,9 +44,9 @@ WorldLoaded = function()
InitObjectives(GDI)
NodObjective = Nod.AddObjective("Destroy all GDI troops.")
GDIObjective1 = GDI.AddObjective("Eliminate all Nod forces in the area.")
GDIObjective2 = GDI.AddObjective("Capture the Tiberium refinery.", "Secondary", false)
NodObjective = AddPrimaryObjective(Nod, "destroy-gdi")
GDIObjective1 = AddPrimaryObjective(GDI, "eliminate-nod")
GDIObjective2 = AddSecondaryObjective(GDI, "capture-refinery")
Trigger.OnCapture(NodRefinery, function() GDI.MarkCompletedObjective(GDIObjective2) end)
Trigger.OnKilled(NodRefinery, function() GDI.MarkFailedObjective(GDIObjective2) end)

View File

@@ -625,3 +625,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -60,8 +60,8 @@ WorldLoaded = function()
InitObjectives(GDI)
DestroyNod = GDI.AddObjective("Eliminate all Nod forces in the area.")
local airSupportObjective = GDI.AddObjective("Destroy the SAM sites to receive air support.", "Secondary", false)
DestroyNod = AddPrimaryObjective(GDI, "eliminate-nod")
local airSupportObjective = AddSecondaryObjective(GDI, "destroy-sams")
Trigger.OnAllKilled(SamSites, function()
GDI.MarkCompletedObjective(airSupportObjective)

View File

@@ -699,3 +699,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -54,7 +54,7 @@ SendGDIReinforcements = function()
if GDIReinforcementsLeft > 0 then
GDIReinforcementsLeft = GDIReinforcementsLeft - 1
Trigger.AfterDelay(DateTime.Seconds(5), function()
Media.DisplayMessage("APC squads in reserve: " .. GDIReinforcementsLeft, "Battlefield Control")
Media.DisplayMessage(UserInterface.Translate("apcs-left", { ["apcs"] = GDIReinforcementsLeft }), UserInterface.Translate("battlefield-control"))
SendGDIReinforcements()
end)
end
@@ -113,8 +113,9 @@ WorldLoaded = function()
InitObjectives(GDI)
GDIObjective = GDI.AddObjective("Retrieve the crate with the stolen rods.")
ReinforcementsObjective = GDI.AddObjective("Eliminate " .. KillsUntilReinforcements .. " Nod units for reinforcements.", "Secondary", false)
GDIObjective = AddPrimaryObjective(GDI, "retrieve-rods")
local eliminateReinforcements = UserInterface.Translate("eliminate-reinforcements", { ["kills"] = KillsUntilReinforcements })
ReinforcementsObjective = AddSecondaryObjective(GDI, eliminateReinforcements)
BuildNod()
Utils.Do(NodHelis, function(heli)

View File

@@ -451,3 +451,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -51,7 +51,7 @@ SendGDIReinforcements = function()
if GDIReinforcementsLeft > 0 then
GDIReinforcementsLeft = GDIReinforcementsLeft - 1
Trigger.AfterDelay(DateTime.Seconds(5), function()
Media.DisplayMessage("APC squads in reserve: " .. GDIReinforcementsLeft, "Battlefield Control")
Media.DisplayMessage(UserInterface.Translate("apcs-left", { ["apcs"] = GDIReinforcementsLeft }), UserInterface.Translate("battlefield-control"))
SendGDIReinforcements()
end)
end
@@ -104,8 +104,9 @@ WorldLoaded = function()
InitObjectives(GDI)
GDIObjective = GDI.AddObjective("Retrieve the crate with the stolen rods.")
ReinforcementsObjective = GDI.AddObjective("Eliminate " .. KillsUntilReinforcements .. " Nod units for reinforcements.", "Secondary", false)
GDIObjective = AddPrimaryObjective(GDI, "retrieve-rods")
local eliminateReinforcements = UserInterface.Translate("eliminate-reinforcements", { ["kills"] = KillsUntilReinforcements })
ReinforcementsObjective = AddSecondaryObjective(GDI, eliminateReinforcements)
SetupWorld()

View File

@@ -528,3 +528,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -73,9 +73,9 @@ WorldLoaded = function()
GDI.MarkFailedObjective(DefendTown)
end)
NodObjective = Nod.AddPrimaryObjective("Destroy all GDI troops.")
DefendTown = GDI.AddPrimaryObjective("Defend the town of Białystok.")
EliminateNod = GDI.AddPrimaryObjective("Eliminate all Nod forces in the area.")
NodObjective = AddPrimaryObjective(Nod, "destroy-gdi")
DefendTown = AddPrimaryObjective(GDI, "defend-bialystok")
EliminateNod = AddPrimaryObjective(GDI, "eliminate-nod")
Trigger.OnExitedFootprint(TownAttackTrigger, function(a, id)
if not TownAttackTriggered and a.Owner == GDI then

View File

@@ -745,3 +745,5 @@ Actors:
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -109,7 +109,7 @@ DiscoverGDIBase = function(actor, discoverer)
BaseDiscovered = true
EliminateNod = GDI.AddObjective("Eliminate all Nod forces in the area.")
EliminateNod = AddPrimaryObjective(GDI, "eliminate-nod")
GDI.MarkCompletedObjective(FindBase)
Attack()
@@ -168,9 +168,9 @@ WorldLoaded = function()
InitObjectives(GDI)
NodObjective = Nod.AddObjective("Destroy all GDI troops.")
FindBase = GDI.AddObjective("Find the GDI base.")
DestroySAMs = GDI.AddObjective("Destroy all SAM sites to receive air support.", "Secondary", false)
NodObjective = AddPrimaryObjective(Nod, "destroy-gdi")
FindBase = AddPrimaryObjective(GDI, "find-gdi-base")
DestroySAMs = AddSecondaryObjective(GDI, "destroy-sams")
SetupWorld()

View File

@@ -757,3 +757,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -75,7 +75,7 @@ DiscoverGDIBase = function(actor, discoverer)
BaseDiscovered = true
EliminateNod = GDI.AddObjective("Eliminate all Nod forces in the area.")
EliminateNod = AddPrimaryObjective(GDI, "eliminate-nod")
GDI.MarkCompletedObjective(FindBase)
end
@@ -115,9 +115,9 @@ WorldLoaded = function()
RepairNamedActors(Nod, RepairThreshold)
FindBase = GDI.AddObjective("Find the GDI base.")
DestroySAMs = GDI.AddObjective("Destroy all SAM sites to receive air support.", "Secondary", false)
NodObjective = Nod.AddObjective("Destroy all GDI troops.")
FindBase = AddPrimaryObjective(GDI, "find-gdi-base")
DestroySAMs = AddSecondaryObjective(GDI, "destroy-sams")
NodObjective = AddPrimaryObjective(Nod, "destroy-gdi")
Trigger.AfterDelay(Atk1Delay, Atk1TriggerFunction)
Trigger.AfterDelay(Atk2Delay, Atk2TriggerFunction)

View File

@@ -613,3 +613,5 @@ Actors:
Owner: Nod
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -72,7 +72,7 @@ DiscoverGDIBase = function(actor, discoverer)
BaseDiscovered = true
EliminateNod = GDI.AddObjective("Eliminate all Nod forces in the area.")
EliminateNod = AddPrimaryObjective(GDI, "eliminate-nod")
GDI.MarkCompletedObjective(FindBase)
end
@@ -108,9 +108,9 @@ WorldLoaded = function()
RepairNamedActors(Nod, RepairThreshold[Difficulty])
FindBase = GDI.AddObjective("Find the GDI base.")
DestroySAMs = GDI.AddObjective("Destroy all SAM sites to receive air support.", "Secondary", false)
NodObjective = Nod.AddObjective("Destroy all GDI troops.")
FindBase = AddPrimaryObjective(GDI, "find-gdi-base")
DestroySAMs = AddSecondaryObjective(GDI, "destroy-sams")
NodObjective = AddPrimaryObjective(Nod, "destroy-gdi")
Utils.Do(ActorRemovals[Difficulty], function(unit)
unit.Destroy()

View File

@@ -766,3 +766,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -99,7 +99,7 @@ WorldLoaded = function()
KillCounterHuntThreshold = 20
end
DestroyObjective = GDI.AddObjective("Destroy the Nod ********.")
DestroyObjective = AddPrimaryObjective(GDI, "destroy-nod-building")
Trigger.OnKilled(Airfield, function()
GDI.MarkCompletedObjective(DestroyObjective)

View File

@@ -1020,3 +1020,5 @@ Actors:
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Music: music.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -118,12 +118,12 @@ WorldLoaded = function()
InitObjectives(GDI)
DestroyNod = GDI.AddObjective("Destroy remaining Nod structures and units.")
ConstructBase = GDI.AddObjective("Construct all available buildings.", "Secondary", false)
DestroyNod = AddPrimaryObjective(GDI, "destroy-nod")
ConstructBase = AddSecondaryObjective(GDI, "construct-base")
SendReinforcements()
local destroySAMs = GDI.AddSecondaryObjective("Destroy the SAM sites to receive air support.")
local destroySAMs = AddSecondaryObjective(GDI, "destroy-sams")
Trigger.OnAllKilled(SamSites, function()
GDI.MarkCompletedObjective(destroySAMs)
Actor.Create("airstrike.proxy", true, { Owner = GDI })

View File

@@ -1028,3 +1028,5 @@ Actors:
Location: 14,46
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -96,13 +96,13 @@ WorldLoaded = function()
InitObjectives(GDI)
SecureArea = GDI.AddObjective("Destroy the Nod strike force.")
KillGDI = Nod.AddObjective("Kill all enemies!")
SecureArea = AddPrimaryObjective(GDI, "destroy-nod-force")
KillGDI = AddPrimaryObjective(Nod, "kill-all-enemies")
RepairAssets = GDI.AddObjective("Repair GDI base and vehicles.", "Secondary", false)
RepairAssets = AddSecondaryObjective(GDI, "repair-base-vehicles")
Trigger.AfterDelay(DateTime.Seconds(5), function() CheckRepairGDIAssetsObjective() end)
AirSupport = GDI.AddObjective("Destroy the SAM sites to receive air support.", "Secondary", false)
AirSupport = AddSecondaryObjective(GDI, "destroy-sams")
Trigger.OnAllKilled(SamSites, function()
GDI.MarkCompletedObjective(AirSupport)
Actor.Create("airstrike.proxy", true, { Owner = GDI })

View File

@@ -887,3 +887,5 @@ Actors:
Location: 5,42
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -105,18 +105,20 @@ WorldLoaded = function()
InitObjectives(GDI)
ProtectMoebius = GDI.AddObjective("Protect Dr. Mobius.")
ProtectMoebius = AddPrimaryObjective(GDI, "protect-mobius")
Trigger.OnKilled(DrMoebius, function()
GDI.MarkFailedObjective(ProtectMoebius)
end)
ProtectHospital = GDI.AddObjective("Protect the Hospital.")
ProtectHospital = AddPrimaryObjective(GDI, "protect-hospital")
Trigger.OnKilled(Hospital, function()
GDI.MarkFailedObjective(ProtectHospital)
end)
CiviliansKilledThreshold = CiviliansKilledThreshold[Difficulty]
ProtectCivilians = GDI.AddObjective("Keep at least " .. 14 - CiviliansKilledThreshold .. " out of 14 Civilians alive.")
local civilians = 14 - CiviliansKilledThreshold
local keepCiviliansAlive = UserInterface.Translate("keep-civilians-alive", { ["civilians"] = civilians })
ProtectCivilians = AddPrimaryObjective(GDI, keepCiviliansAlive)
Utils.Do(Civilians, function(civilian)
Trigger.OnKilled(civilian, function()
CivilianCasualties = CivilianCasualties + 1
@@ -126,11 +128,11 @@ WorldLoaded = function()
end)
end)
SecureArea = GDI.AddObjective("Destroy the Nod bases.")
SecureArea = AddPrimaryObjective(GDI, "destroy-nod-bases")
KillGDI = Nod.AddObjective("Kill all enemies!")
KillGDI = AddPrimaryObjective(Nod, "kill-all-enemies")
AirSupport = GDI.AddObjective("Destroy the SAM sites to receive air support.", "Secondary", false)
AirSupport = AddSecondaryObjective(GDI, "destroy-sams")
Trigger.OnAllKilled(SamSites, function()
GDI.MarkCompletedObjective(AirSupport)
Actor.Create("airstrike.proxy", true, { Owner = GDI })

View File

@@ -1062,3 +1062,5 @@ Actors:
Location: 57,24
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -109,7 +109,7 @@ WorldLoaded = function()
Camera.Position = DefaultCameraPosition.CenterPosition
DestroyBunkers = GDI.AddObjective("Destroy the Nod bunkers to allow Carter's\nconvoy to pass through safely.")
DestroyBunkers = AddPrimaryObjective(GDI, "destroy-nod-bunkers")
Trigger.OnAllKilled(NodBunkersNorth, function()
GDI.MarkCompletedObjective(DestroyBunkers)
Trigger.AfterDelay(DateTime.Seconds(1), SpawnGunboat)
@@ -123,17 +123,17 @@ WorldLoaded = function()
if a.Type == "boat" then
a.Stop()
a.Destroy()
Media.DisplayMessage("Part of Carter's convoy passed through!")
Media.DisplayMessage(UserInterface.Translate("convoy-passed-partly"))
Media.PlaySoundNotification(GDI, "Beepy6")
end
end)
SecureArea = GDI.AddObjective("Destroy the Nod strike force.")
KillGDI = Nod.AddObjective("Kill all enemies!")
SecureArea = AddPrimaryObjective(GDI, "destroy-nod-force")
KillGDI = AddPrimaryObjective(Nod, "kill-all-enemies")
Trigger.AfterDelay(DateTime.Seconds(5), SendGDIReinforcements)
AirSupport = GDI.AddObjective("Destroy the SAM sites to receive air support.", "Secondary", false)
AirSupport = AddSecondaryObjective(GDI, "destroy-sams")
Trigger.OnAllKilled(SamSites, function()
GDI.MarkCompletedObjective(AirSupport)
Actor.Create("airstrike.proxy", true, { Owner = GDI })

View File

@@ -783,3 +783,5 @@ Actors:
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -232,3 +232,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -41,10 +41,10 @@ WorldLoaded = function()
InitObjectives(Nod)
KillNikoomba = Nod.AddObjective("Kill Nikoomba.")
DestroyVillage = Nod.AddObjective("Destroy the village.")
DestroyGDI = Nod.AddObjective("Destroy all GDI troops in the area.", "Secondary", false)
GDIObjective = GDI.AddObjective("Eliminate all Nod forces.")
KillNikoomba = AddPrimaryObjective(Nod, "kill-nikoomba")
DestroyVillage = AddPrimaryObjective(Nod, "destroy-village")
DestroyGDI = AddSecondaryObjective(Nod, "destroy-gdi-troops-area")
GDIObjective = AddPrimaryObjective(GDI, "eliminate-nod-forces")
Trigger.OnKilled(Nikoomba, function()
Nod.MarkCompletedObjective(KillNikoomba)

View File

@@ -235,3 +235,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -31,9 +31,9 @@ WorldLoaded = function()
InitObjectives(Nod)
GDIObjective = GDI.AddObjective("Kill all enemies.")
BuildBase = Nod.AddObjective("Build a base.")
DestroyGDI = Nod.AddObjective("Destroy all GDI units.")
GDIObjective = AddPrimaryObjective(GDI, "kill-all-enemies")
BuildBase = AddPrimaryObjective(Nod, "build-base")
DestroyGDI = AddPrimaryObjective(Nod, "destroy-gdi-units")
Utils.Do({ Refinery, Yard }, function(actor)
Trigger.OnDamaged(actor, function()

View File

@@ -196,3 +196,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -38,9 +38,9 @@ WorldLoaded = function()
InitObjectives(Nod)
BuildBase = Nod.AddObjective("Build a base.")
DestroyGDI = Nod.AddObjective("Destroy the GDI base.")
GDIObjective = GDI.AddObjective("Kill all enemies.")
BuildBase = AddPrimaryObjective(Nod, "build-base")
DestroyGDI = AddPrimaryObjective(Nod, "destroy-gdi-base")
GDIObjective = AddPrimaryObjective(GDI, "kill-all-enemies")
Utils.Do(Guards, function(actor)
Trigger.OnDamaged(actor, function()

View File

@@ -435,3 +435,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -27,8 +27,8 @@ WorldLoaded = function()
InitObjectives(Nod)
CapturePrison = Nod.AddObjective("Capture the prison.")
DestroyGDI = Nod.AddObjective("Destroy all GDI forces.", "Secondary", false)
CapturePrison = AddPrimaryObjective(Nod, "capture-prison")
DestroyGDI = AddSecondaryObjective(Nod, "destroy-gdi-forces")
Trigger.OnCapture(TechCenter, function()
Trigger.AfterDelay(DateTime.Seconds(2), function()

View File

@@ -476,3 +476,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -41,8 +41,8 @@ WorldLoaded = function()
InitObjectives(Nod)
CapturePrison = Nod.AddObjective("Capture the prison.")
DestroyGDI = Nod.AddObjective("Destroy all GDI forces.", "Secondary", false)
CapturePrison = AddPrimaryObjective(Nod, "capture-prison")
DestroyGDI = AddSecondaryObjective(Nod, "destroy-gdi-forces")
Trigger.OnKilled(TechCenter, function()
Nod.MarkFailedObjective(CapturePrison)

View File

@@ -478,3 +478,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -106,8 +106,8 @@ WorldLoaded = function()
InitObjectives(Nod)
KillCivilians = Nod.AddObjective("Destroy the village and kill all civilians.")
KillGDI = Nod.AddObjective("Kill all GDI units in the area.", "Secondary", false)
KillCivilians = AddPrimaryObjective(Nod, "destroy-village-kill-civilians")
KillGDI = AddSecondaryObjective(Nod, "kill-gdi-units")
Camera.Position = CameraPoint.CenterPosition

View File

@@ -537,3 +537,5 @@ Actors:
SubCell: 2
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -73,7 +73,7 @@ CreateCivilians = function(actor, discoverer)
actor.Owner = Nod
end)
ProtectCivilians = Nod.AddPrimaryObjective("Protect the civilians that support Nod.")
ProtectCivilians = AddPrimaryObjective(Nod, "protect-nod-supporters")
Trigger.OnAllKilled(NodCiviliansActors, function()
Nod.MarkFailedObjective(ProtectCivilians)
end)
@@ -189,7 +189,7 @@ WorldLoaded = function()
end
end)
KillGDI = Nod.AddObjective("Kill all civilian GDI supporters.")
KillGDI = AddPrimaryObjective(Nod, "kill-gdi-supporters")
Media.PlaySpeechNotification(Nod, "Reinforce")
Reinforcements.Reinforce(Nod, NodUnitsBuggy, { UnitsEntryBuggy.Location, UnitsRallyBuggy.Location }, 11)

View File

@@ -376,3 +376,5 @@ Actors:
Owner: GDI
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -25,6 +25,8 @@ AllUnits = { GDI1Units, GDI2Units, GDI3Units, GDI4Units, GDI5Units, GDI6Units, G
AirstrikeDelay = DateTime.Minutes(1) + DateTime.Seconds(40)
SamSiteGoal = 3
DelyCellTriggerActivator = { CPos.New(29,30), CPos.New(28,30), CPos.New(27,30), CPos.New(26,30), CPos.New(25,30), CPos.New(24,30), CPos.New(23,30), CPos.New(22,30), CPos.New(21,30), CPos.New(29,29), CPos.New(28,29), CPos.New(27,29), CPos.New(26,29), CPos.New(25,29), CPos.New(24,29), CPos.New(23,29), CPos.New(22,29) }
DelzCellTriggerActivator = { CPos.New(29,27), CPos.New(28,27), CPos.New(27,27), CPos.New(26,27), CPos.New(25,27), CPos.New(24,27), CPos.New(29,26), CPos.New(28,26), CPos.New(27,26), CPos.New(26,26), CPos.New(25,26), CPos.New(24,26) }
Atk5CellTriggerActivator = { CPos.New(10,33), CPos.New(9,33), CPos.New(8,33), CPos.New(9,32), CPos.New(8,32), CPos.New(7,32), CPos.New(8,31), CPos.New(7,31), CPos.New(6,31) }
@@ -112,9 +114,10 @@ WorldLoaded = function()
InitObjectives(Nod)
BuildSAMObjective = Nod.AddObjective("Build 3 SAMs.")
DestroyGDI = Nod.AddObjective("Destroy the GDI base.")
GDIObjective = GDI.AddObjective("Kill all enemies.")
local localBuildSAMs = UserInterface.Translate("build-sams", { ["sams"] = SamSiteGoal })
BuildSAMObjective = AddPrimaryObjective(Nod, localBuildSAMs)
DestroyGDI = AddPrimaryObjective(Nod, "destroy-gdi-base")
GDIObjective = AddPrimaryObjective(GDI, "kill-all-enemies")
Trigger.AfterDelay(AirstrikeDelay, SendGDIAirstrike)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(30), SendGDI2Units)
@@ -195,5 +198,5 @@ end
CheckForSams = function(Nod)
local sams = Nod.GetActorsByType("sam")
return #sams >= 3
return #sams >= SamSiteGoal
end

View File

@@ -668,3 +668,5 @@ Actors:
Facing: 368
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -104,8 +104,8 @@ WorldLoaded = function()
InitObjectives(Nod)
StealDetonator = Nod.AddObjective("Steal the GDI nuclear detonator.")
DestroyVillage = Nod.AddObjective("Destroy the houses of the GDI supporters\nin the village.", "Secondary", false)
StealDetonator = AddPrimaryObjective(Nod, "steal-nuclear-detonator")
DestroyVillage = AddSecondaryObjective(Nod, "destroy-gdi-supporter-houses")
InsertNodUnits()
@@ -162,7 +162,7 @@ WorldLoaded = function()
Trigger.OnEnteredFootprint(DetonatorArea, function(a, id)
if a.Owner == Nod then
EvacuateObjective = Nod.AddObjective("Move to the evacuation point.")
EvacuateObjective = AddPrimaryObjective(Nod, "move-to-evacuation-point")
Nod.MarkCompletedObjective(StealDetonator)
Trigger.RemoveFootprintTrigger(id)
end

View File

@@ -598,3 +598,5 @@ Actors:
Facing: 368
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -93,8 +93,8 @@ WorldLoaded = function()
InitObjectives(Nod)
StealDetonator = Nod.AddObjective("Steal the GDI nuclear detonator.")
DestroyVillage = Nod.AddObjective("Destroy the houses of the GDI supporters\nin the village.", "Secondary", false)
StealDetonator = AddPrimaryObjective(Nod, "steal-nuclear-detonator")
DestroyVillage = AddSecondaryObjective(Nod, "destroy-gdi-supporter-houses")
InsertNodUnits()
@@ -120,7 +120,7 @@ WorldLoaded = function()
Trigger.OnEnteredFootprint(Win1CellTriggerActivator, function(a, id)
if a.Owner == Nod then
EvacuateObjective = Nod.AddObjective("Move to the evacuation point.")
EvacuateObjective = AddPrimaryObjective(Nod, "move-to-evacuation-point")
Nod.MarkCompletedObjective(StealDetonator)
Trigger.RemoveFootprintTrigger(id)
end

View File

@@ -466,3 +466,5 @@ Actors:
Owner: GDI
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -61,8 +61,8 @@ WorldLoaded = function()
InitObjectives(Nod)
NodObjective1 = Nod.AddObjective("Steal the GDI nuclear detonator.")
InfiltrateObjective = Nod.AddObjective("Infiltrate the barracks, weapon factory and\nthe construction yard.", "Secondary", false)
NodObjective1 = AddPrimaryObjective(Nod, "steal-nuclear-detonator")
InfiltrateObjective = AddSecondaryObjective(Nod, "infiltrate-barracks-factory-conyard")
InsertNodUnits()
@@ -95,7 +95,7 @@ WorldLoaded = function()
Trigger.OnEnteredFootprint(Win1CellTriggerActivator, function(a, id)
if a.Owner == Nod then
EvacuateObjective = Nod.AddObjective("Move to the evacuation point.")
EvacuateObjective = AddPrimaryObjective(Nod, "move-to-evacuation-point")
Nod.MarkCompletedObjective(NodObjective1)
Trigger.RemoveFootprintTrigger(id)
end

View File

@@ -599,3 +599,5 @@ Actors:
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -36,9 +36,11 @@ NodBase = { NodBuilding1, NodBuilding2, NodBuilding3, NodHarvester }
AbandonedBaseTrigger = { CPos.New(12, 42), CPos.New(11, 42), CPos.New(10, 42), CPos.New(13, 41), CPos.New(12, 41), CPos.New(11, 41), CPos.New(14, 40), CPos.New(13, 40), CPos.New(12, 40), CPos.New(6, 40), CPos.New(5, 40), CPos.New(4, 40), CPos.New(6, 39), CPos.New(5, 39), CPos.New(4, 39), CPos.New(6, 38), CPos.New(5, 38), CPos.New(4, 38) }
ReinforcementsTrigger = { CPos.New(35, 23), CPos.New(34, 23), CPos.New(35, 22), CPos.New(34, 22), CPos.New(35, 21), CPos.New(34, 21), CPos.New(35, 20), CPos.New(34, 20), CPos.New(35, 19), CPos.New(34, 19), CPos.New(35, 18), CPos.New(34, 18), CPos.New(35, 17), CPos.New(34, 17), CPos.New(35, 16), CPos.New(34, 16), CPos.New(35, 15), CPos.New(34, 15), CPos.New(35, 14), CPos.New(34, 14), CPos.New(35, 13), CPos.New(34, 13), CPos.New(35, 12), CPos.New(34, 12), CPos.New(47, 11), CPos.New(46, 11), CPos.New(57, 19), CPos.New(56, 19), CPos.New(55, 19), CPos.New(54, 19), CPos.New(53, 19), CPos.New(52, 19), CPos.New(51, 19), CPos.New(50, 19), CPos.New(49, 19), CPos.New(48, 19), CPos.New(47, 19), CPos.New(46, 19), CPos.New(57, 18), CPos.New(56, 18), CPos.New(55, 18), CPos.New(54, 18), CPos.New(53, 18), CPos.New(52, 18), CPos.New(51, 18), CPos.New(50, 18), CPos.New(49, 18), CPos.New(48, 18), CPos.New(47, 18), CPos.New(46, 18), CPos.New(47, 17), CPos.New(46, 17), CPos.New(47, 16), CPos.New(46, 16), CPos.New(47, 15), CPos.New(46, 15), CPos.New(47, 14), CPos.New(46, 14), CPos.New(47, 13), CPos.New(46, 13), CPos.New(47, 12), CPos.New(46, 12) }
SamSiteGoal = 3
CaptureStructures = function(actor)
for i = 1, #WhitelistedStructures do
structures = Nod.GetActorsByType(WhitelistedStructures[i])
local structures = Nod.GetActorsByType(WhitelistedStructures[i])
if #structures > 0 and not actor.IsDead and not structures[1].IsDead then
actor.Capture(structures[1])
return
@@ -48,7 +50,7 @@ end
CheckForSams = function()
local sams = Nod.GetActorsByType("sam")
return #sams >= 3
return #sams >= SamSiteGoal
end
InsertNodUnits = function()
@@ -171,10 +173,11 @@ WorldLoaded = function()
InitObjectives(Nod)
FindBase = Nod.AddObjective("Find the Nod base.")
EliminateGDI = Nod.AddObjective("Eliminate all GDI forces in the area.")
BuildSAMs = Nod.AddObjective("Build 3 SAMs to fend off the GDI bombers.", "Secondary", false)
GDIObjective = GDI.AddObjective("Eliminate all Nod forces in the area.")
FindBase = AddPrimaryObjective(Nod, "find-nod-base")
EliminateGDI = AddPrimaryObjective(Nod, "eliminate-gdi-forces")
local buildSAMs = UserInterface.Translate("build-sams", { ["sams"] = SamSiteGoal })
BuildSAMs = AddPrimaryObjective(Nod, buildSAMs)
GDIObjective = AddPrimaryObjective(GDI, "eliminate-nod")
Trigger.OnKilled(GDIProc, function()
Actor.Create("moneycrate", true, { Owner = GDI, Location = CPos.New(24, 54) })

View File

@@ -956,3 +956,5 @@ Actors:
Location: 12,5
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -43,6 +43,8 @@ Atk2 = { CPos.New(16, 52), CPos.New(15, 52), CPos.New(14, 52), CPos.New(13, 52),
Atk3 = { CPos.New(53, 58), CPos.New(52, 58), CPos.New(51, 58), CPos.New(53, 57), CPos.New(52, 57), CPos.New(51, 57), CPos.New(53, 56), CPos.New(52, 56), CPos.New(51, 56), CPos.New(53, 55), CPos.New(52, 55), CPos.New(51, 55) }
Atk4 = { CPos.New(54, 47), CPos.New(53, 47), CPos.New(52, 47), CPos.New(51, 47), CPos.New(43, 47), CPos.New(54, 46), CPos.New(53, 46), CPos.New(52, 46), CPos.New(51, 46), CPos.New(50, 46), CPos.New(43, 46), CPos.New(42, 46), CPos.New(41, 46), CPos.New(43, 45), CPos.New(42, 45), CPos.New(41, 45), CPos.New(43, 44), CPos.New(42, 44), CPos.New(41, 44), CPos.New(43, 43), CPos.New(42, 43), CPos.New(41, 43), CPos.New(43, 42) }
SamSiteGoal = 3
CaptureStructures = function(actor)
for i = 1, #WhitelistedStructures do
structures = Nod.GetActorsByType(WhitelistedStructures[i])
@@ -55,7 +57,7 @@ end
CheckForSams = function()
local sams = Nod.GetActorsByType("sam")
return #sams >= 3
return #sams >= SamSiteGoal
end
InsertNodUnits = function()
@@ -169,8 +171,9 @@ WorldLoaded = function()
InitObjectives(Nod)
EliminateGDI = Nod.AddObjective("Eliminate all GDI forces in the area.")
BuildSAMs = Nod.AddObjective("Build 3 SAMs to fend off the GDI bombers.", "Secondary", false)
EliminateGDI = AddPrimaryObjective(Nod, "eliminate-gdi-forces")
local buildSAMs = UserInterface.Translate("build-sams", { ["sams"] = SamSiteGoal })
BuildSAMs = AddSecondaryObjective(Nod, buildSAMs)
end
Tick = function()

View File

@@ -771,3 +771,5 @@ Actors:
Location: 50,27
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -141,11 +141,11 @@ WorldLoaded = function()
end
end)
CaptureHelipad = Nod.AddObjective("Capture the GDI helipad.")
NoCaptureObjective = Nod.AddObjective("Don't capture or destroy any other\nGDI main building.")
UseOrcaObjective = Nod.AddObjective("Use the GDI orca to wreak havoc at the village.")
DistractGuardsObjective = Nod.AddObjective("Distract the guards by attacking the\nmain entrance with your vehicles.", "Secondary", false)
GDIObjective = GDI.AddObjective("Kill all enemies.")
CaptureHelipad = AddPrimaryObjective(Nod, "capture-gdi-helipad")
NoCaptureObjective = AddPrimaryObjective(Nod, "dont-capture-or-destroy")
UseOrcaObjective = AddPrimaryObjective(Nod, "orca-wreak-havoc")
DistractGuardsObjective = AddSecondaryObjective(Nod, "distract-guards")
GDIObjective = AddPrimaryObjective(GDI, "kill-all-enemies")
end
Tick = function()

View File

@@ -613,3 +613,5 @@ Actors:
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -159,10 +159,10 @@ WorldLoaded = function()
InitObjectives(Nod)
LocateNodBase = Nod.AddObjective("Locate the Nod base.")
CaptureGDIOutpost = Nod.AddObjective("Capture the GDI outpost.")
EliminateGDI = Nod.AddObjective("Eliminate all GDI forces in the area.")
GDIObjective = GDI.AddObjective("Eliminate all Nod forces in the area.")
LocateNodBase = AddPrimaryObjective(Nod, "locate-nod-base")
CaptureGDIOutpost = AddPrimaryObjective(Nod, "capture-gdi-outpost")
EliminateGDI = AddPrimaryObjective(Nod, "eliminate-gdi-forces")
GDIObjective = AddPrimaryObjective(GDI, "eliminate-nod")
end
Tick = function()

View File

@@ -772,3 +772,5 @@ Actors:
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -154,10 +154,10 @@ WorldLoaded = function()
InitObjectives(Nod)
LocateNodBase = Nod.AddObjective("Locate the Nod base.")
CaptureGDIOutpost = Nod.AddObjective("Capture the GDI outpost.")
NodObjective3 = Nod.AddObjective("Eliminate all GDI forces in the area.")
GDIObjective = GDI.AddObjective("Eliminate all Nod forces in the area.")
LocateNodBase = AddPrimaryObjective(Nod, "locate-nod-base")
CaptureGDIOutpost = AddPrimaryObjective(Nod, "capture-gdi-outpost")
NodObjective3 = AddPrimaryObjective(Nod, "eliminate-gdi-forces")
GDIObjective = AddPrimaryObjective(GDI, "eliminate-nod")
end
Tick = function()

View File

@@ -885,3 +885,5 @@ Actors:
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -15,6 +15,8 @@ else
Rambo = "rmbo"
end
SamSiteGoal = 3
WaypointGroup1 = { waypoint0, waypoint3, waypoint2, waypoint4, waypoint5, waypoint7 }
WaypointGroup2 = { waypoint0, waypoint3, waypoint2, waypoint4, waypoint5, waypoint6 }
WaypointGroup3 = { waypoint0, waypoint8, waypoint9, waypoint10, waypoint11, waypoint12, waypoint6, waypoint13 }
@@ -48,7 +50,7 @@ AirstrikeDelay = DateTime.Minutes(2) + DateTime.Seconds(30)
CheckForSams = function(Nod)
local sams = Nod.GetActorsByType("sam")
return #sams >= 3
return #sams >= SamSiteGoal
end
SendGDIAirstrike = function(hq, delay)
@@ -189,13 +191,14 @@ WorldLoaded = function()
InitObjectives(Nod)
SecureFirstLanding = Nod.AddObjective("Secure the first landing zone.")
SecureSecondLanding = Nod.AddObjective("Secure the second landing zone.")
LocateNodBase = Nod.AddObjective("Locate the Nod base.")
CaptureRefinery = Nod.AddObjective("Capture the refinery.")
EliminateGDI = Nod.AddObjective("Eliminate all GDI forces in the area.")
BuildSAMs = Nod.AddObjective("Build 3 SAMs to fend off the GDI bombers.", "Secondary", false)
GDIObjective = GDI.AddObjective("Eliminate all Nod forces in the area.")
SecureFirstLanding = AddPrimaryObjective(Nod, "secure-first-landing-zone")
SecureSecondLanding = AddPrimaryObjective(Nod, "secure-second-landing-zone")
LocateNodBase = AddPrimaryObjective(Nod, "locate-nod-base")
CaptureRefinery = AddPrimaryObjective(Nod, "capture-refinery")
EliminateGDI = AddPrimaryObjective(Nod, "eliminate-gdi-forces")
local buildSAMs = UserInterface.Translate("build-sams", { ["sams"] = SamSiteGoal })
BuildSAMs = AddSecondaryObjective(Nod, buildSAMs)
GDIObjective = AddPrimaryObjective(GDI, "eliminate-nod")
end
Tick = function()

View File

@@ -1344,3 +1344,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -32,7 +32,7 @@ end
CreateScientist = function()
local scientist = Actor.Create("CHAN", true, { Owner = GDI, Location = ScientistLocation.Location })
KillScientistObjective = Nod.AddObjective("Kill the GDI scientist.")
KillScientistObjective = AddPrimaryObjective(Nod, "kill-gdi-scientist")
Nod.MarkCompletedObjective(DestroyTechCenterObjective)
Trigger.OnKilled(scientist, function()
@@ -54,7 +54,7 @@ WorldLoaded = function()
RepairBuilding(GDI, building, 0.75)
end)
DestroyTechCenterObjective = Nod.AddObjective("Destroy the GDI R&D center.")
DestroyTechCenterObjective = AddPrimaryObjective(Nod, "destroy-tech-center")
Actor.Create(Rambo, true, { Owner = Nod, Location = RamboLocation.Location })

View File

@@ -725,3 +725,5 @@ Actors:
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Translations: cnc|languages/lua/en.ftl

View File

@@ -52,10 +52,10 @@ WorldLoaded = function()
InitObjectives(Nod)
GDIObjective = GDI.AddPrimaryObjective("Eliminate all Nod forces in the area.")
WarFactoryObjective = Nod.AddPrimaryObjective("Destroy or capture the Weapons Factory.")
DestroyTanksObjective = Nod.AddPrimaryObjective("Destroy the Mammoth tanks in the R&D base.")
KeepRamboAliveObjective = Nod.AddObjective("Keep your Commando alive.", "Secondary", false)
GDIObjective = AddPrimaryObjective(Nod, "eliminate-nod")
WarFactoryObjective = AddPrimaryObjective(Nod, "destroy-capture-warfactory")
DestroyTanksObjective = AddPrimaryObjective(Nod, "destroy-mammoth-tanks")
KeepRamboAliveObjective = AddSecondaryObjective(Nod, "keep-commando-alive")
Trigger.OnKilledOrCaptured(WeaponsFactory, function()
Nod.MarkCompletedObjective(WarFactoryObjective)

View File

@@ -10,15 +10,11 @@
Difficulty = Map.LobbyOption("difficulty")
InitObjectives = function(player)
Trigger.OnObjectiveAdded(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
end)
Trigger.OnObjectiveCompleted(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
Media.DisplayMessage(p.GetObjectiveDescription(id), UserInterface.Translate("objective-completed"))
end)
Trigger.OnObjectiveFailed(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
Media.DisplayMessage(p.GetObjectiveDescription(id), UserInterface.Translate("objective-failed"))
end)
Trigger.OnPlayerLost(player, function()

View File

@@ -12,3 +12,23 @@ IdleHunt = function(actor)
Trigger.OnIdle(actor, actor.Hunt)
end
end
---Adds a new mandatory objective, translates it and announces it via in-game chat message.
---@param player player recipient of the objective
---@param description string key of the translation string
---@return number id used to query for the objective later
AddPrimaryObjective = function(player, description)
local translation = UserInterface.Translate(description)
Media.DisplayMessage(translation, UserInterface.Translate("new-primary-objective"))
return player.AddObjective(translation, UserInterface.Translate("primary"), true)
end
---Adds a new optional objective, translates it and announces it via in-game chat message.
---@param player player recipient of the objective
---@param description string key of the translation string
---@return number id used to query for the objective later
AddSecondaryObjective = function(player, description)
local translation = UserInterface.Translate(description)
Media.DisplayMessage(translation, UserInterface.Translate("new-secondary-objective"))
return player.AddObjective(translation, UserInterface.Translate("secondary"), false)
end