diff --git a/OpenRA.sln b/OpenRA.sln index 469e1f50a9..7d5e41ea73 100644 --- a/OpenRA.sln +++ b/OpenRA.sln @@ -42,6 +42,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tiberian Dawn Lua scripts", mods\cnc\maps\funpark01\scj01ea.lua = mods\cnc\maps\funpark01\scj01ea.lua mods\cnc\maps\nod06a\nod06a.lua = mods\cnc\maps\nod06a\nod06a.lua mods\cnc\maps\nod06b\nod06b.lua = mods\cnc\maps\nod06b\nod06b.lua + mods\cnc\maps\nod06c\nod06c.lua = mods\cnc\maps\nod06c\nod06c.lua mods\cnc\maps\shellmap\shellmap.lua = mods\cnc\maps\shellmap\shellmap.lua EndProjectSection EndProject diff --git a/mods/cnc/maps/nod06a/map.yaml b/mods/cnc/maps/nod06a/map.yaml index 49fb0ada6b..42c6891745 100644 --- a/mods/cnc/maps/nod06a/map.yaml +++ b/mods/cnc/maps/nod06a/map.yaml @@ -592,7 +592,7 @@ Actors: UnitsRallyRight: waypoint Location: 27,20 Owner: Neutral - ChnEnrty: waypoint + ChnEntry: waypoint Location: 32,61 Owner: Neutral Obj2UnitsEntry: waypoint diff --git a/mods/cnc/maps/nod06a/nod06a.lua b/mods/cnc/maps/nod06a/nod06a.lua index bc2c817d0a..1b91adbb21 100644 --- a/mods/cnc/maps/nod06a/nod06a.lua +++ b/mods/cnc/maps/nod06a/nod06a.lua @@ -16,8 +16,8 @@ Chn1ActorTriggerActivator = { Chn1Activator1, Chn1Activator2, Chn1Activator3, Ch Chn2ActorTriggerActivator = { Chn2Activator1, Chn2Activator2, Chn2Activator3 } Obj2ActorTriggerActivator = { Chn1Activator1, Chn1Activator2, Chn1Activator3, Chn1Activator4, Chn1Activator5, Chn2Activator1, Chn2Activator2, Chn2Activator3, Atk3Activator } -Chn1Waypoints = { ChnEnrty.Location, waypoint5.Location } -Chn2Waypoints = { ChnEnrty.Location, waypoint6.Location } +Chn1Waypoints = { ChnEntry.Location, waypoint5.Location } +Chn2Waypoints = { ChnEntry.Location, waypoint6.Location } Gdi3Waypoints = { waypoint1, waypoint3, waypoint7, waypoint8, waypoint9 } Gdi4Waypoints = { waypoint4, waypoint10, waypoint9, waypoint11, waypoint9, waypoint10 } Gdi5Waypoints = { waypoint1, waypoint4 } @@ -166,7 +166,7 @@ WorldLoaded = function() Trigger.OnEnteredFootprint(Chn3CellTriggerActivator, function(a, id) if a.Owner == Nod then - Reinforcements.Reinforce(Nod, { 'tran' }, { ChnEnrty.Location, waypoint17.Location }, 11) + Reinforcements.Reinforce(Nod, { 'tran' }, { ChnEntry.Location, waypoint17.Location }, 11) Trigger.RemoveFootprintTrigger(id) end end) diff --git a/mods/cnc/maps/nod06c/map.bin b/mods/cnc/maps/nod06c/map.bin new file mode 100644 index 0000000000..7a7be1626d Binary files /dev/null and b/mods/cnc/maps/nod06c/map.bin differ diff --git a/mods/cnc/maps/nod06c/map.png b/mods/cnc/maps/nod06c/map.png new file mode 100644 index 0000000000..2dc43f016d Binary files /dev/null and b/mods/cnc/maps/nod06c/map.png differ diff --git a/mods/cnc/maps/nod06c/map.yaml b/mods/cnc/maps/nod06c/map.yaml new file mode 100644 index 0000000000..9ff8d542cf --- /dev/null +++ b/mods/cnc/maps/nod06c/map.yaml @@ -0,0 +1,636 @@ +MapFormat: 7 + +RequiresMod: cnc + +Title: Steal The Detonator (c) + +Description: GDI has imported a Nuclear Detonator in an attempt to sway a few local political leaders. Penetrate the base and steal the detonator. A chopper will be sent to meet you at a designated landing zone. Look for the landing flare once you have stolen the device. + +Author: Westwood Studios + +Tileset: DESERT + +MapSize: 64,64 + +Bounds: 15,16,44,42 + +Visibility: MissionSelector + +Type: Campaign + +Videos: + Briefing: nod6.vqa + GameStart: sundial.vqa + GameLost: banner.vqa + +Options: + Crates: False + Creeps: False + Fog: True + Shroud: True + AllyBuildRadius: False + FragileAlliances: False + StartingCash: 4000 + ConfigurableStartingUnits: False + ShortGame: False + +Players: + PlayerReference@GDI: + Name: GDI + Playable: False + Race: gdi + ColorRamp: 31,222,183 + Enemies: Nod + PlayerReference@Nod: + Name: Nod + Playable: True + AllowBots: False + Required: True + LockRace: True + Race: nod + LockColor: True + ColorRamp: 3,255,127 + LockSpawn: True + LockTeam: True + Enemies: GDI + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Race: gdi + +Actors: + Actor0: brik + Location: 31,33 + Owner: Neutral + Actor1: brik + Location: 30,33 + Owner: Neutral + Actor2: brik + Location: 29,33 + Owner: Neutral + Actor3: brik + Location: 28,33 + Owner: Neutral + Actor4: brik + Location: 27,33 + Owner: Neutral + Actor5: brik + Location: 26,33 + Owner: Neutral + Actor6: brik + Location: 25,33 + Owner: Neutral + Actor7: brik + Location: 21,33 + Owner: Neutral + Actor8: brik + Location: 20,33 + Owner: Neutral + Actor9: brik + Location: 19,33 + Owner: Neutral + Actor10: brik + Location: 18,33 + Owner: Neutral + Actor11: brik + Location: 17,33 + Owner: Neutral + Actor12: brik + Location: 31,32 + Owner: Neutral + Actor13: brik + Location: 26,32 + Owner: Neutral + Actor14: brik + Location: 25,32 + Owner: Neutral + Actor15: brik + Location: 21,32 + Owner: Neutral + Actor16: brik + Location: 20,32 + Owner: Neutral + Actor17: brik + Location: 17,32 + Owner: Neutral + Actor18: brik + Location: 31,31 + Owner: Neutral + Actor19: brik + Location: 18,31 + Owner: Neutral + Actor20: brik + Location: 17,31 + Owner: Neutral + Actor21: brik + Location: 31,30 + Owner: Neutral + Actor22: brik + Location: 30,30 + Owner: Neutral + Actor23: brik + Location: 18,30 + Owner: Neutral + Actor24: brik + Location: 17,30 + Owner: Neutral + Actor25: brik + Location: 31,29 + Owner: Neutral + Actor26: brik + Location: 30,29 + Owner: Neutral + Actor27: brik + Location: 31,24 + Owner: Neutral + Actor28: brik + Location: 30,24 + Owner: Neutral + Actor29: brik + Location: 31,23 + Owner: Neutral + Actor30: brik + Location: 30,23 + Owner: Neutral + Actor31: cycl + Location: 25,23 + Owner: Neutral + Actor32: cycl + Location: 23,23 + Owner: Neutral + Actor33: brik + Location: 31,22 + Owner: Neutral + Actor34: cycl + Location: 25,22 + Owner: Neutral + Actor35: cycl + Location: 23,22 + Owner: Neutral + Actor36: brik + Location: 31,21 + Owner: Neutral + Actor37: brik + Location: 30,21 + Owner: Neutral + Actor38: cycl + Location: 25,21 + Owner: Neutral + Actor39: cycl + Location: 24,21 + Owner: Neutral + Actor40: cycl + Location: 23,21 + Owner: Neutral + Actor41: brik + Location: 31,20 + Owner: Neutral + Actor42: brik + Location: 30,20 + Owner: Neutral + Actor43: t18 + Location: 19,56 + Owner: Neutral + Actor44: t08 + Location: 33,29 + Owner: Neutral + Actor45: t08 + Location: 32,23 + Owner: Neutral + Actor46: t18 + Location: 31,30 + Owner: Neutral + Actor47: t18 + Location: 29,33 + Owner: Neutral + Actor48: t18 + Location: 18,20 + Owner: Neutral + Actor49: t18 + Location: 50,44 + Owner: Neutral + Actor50: t18 + Location: 34,36 + Owner: Neutral + Actor51: rock5 + Location: 35,42 + Owner: Neutral + Actor52: rock4 + Location: 46,41 + Owner: Neutral + Actor53: rock6 + Location: 38,34 + Owner: Neutral + Actor54: t08 + Location: 47,52 + Owner: Neutral + Actor55: t08 + Location: 34,46 + Owner: Neutral + Actor56: t08 + Location: 46,35 + Owner: Neutral + Actor57: t18 + Location: 19,51 + Owner: Neutral + Actor59: proc + Location: 22,29 + Owner: GDI + Actor60: v30 + Location: 29,39 + Owner: GDI + Actor61: v35 + Location: 24,39 + Owner: GDI + Actor62: v34 + Location: 24,40 + Owner: GDI + Actor63: v36 + Location: 28,40 + Owner: GDI + Actor64: v23 + Location: 28,39 + Owner: GDI + Actor65: gtwr + Location: 32,29 + Owner: GDI + Actor66: nuke + Location: 20,29 + Owner: GDI + Actor67: nuke + Location: 21,27 + Owner: GDI + Actor68: hq + Location: 28,20 + Owner: GDI + Actor69: gtwr + Location: 32,24 + Owner: GDI + Actor72: jeep + Location: 37,40 + Owner: GDI + Facing: 96 + Actor73: jeep + Location: 47,18 + Owner: GDI + Facing: 160 + Actor74: mtnk + Location: 17,39 + Owner: GDI + Actor75: mtnk + Location: 16,39 + Owner: GDI + Actor76: mtnk + Location: 15,39 + Owner: GDI + Actor83: mtnk + Location: 39,27 + Owner: GDI + Facing: 96 + Actor85: jeep + Location: 29,30 + Owner: GDI + Facing: 224 + Actor86: e3 + Location: 35,36 + Owner: GDI + SubCell: 0 + Actor87: e1 + Location: 35,36 + Owner: GDI + SubCell: 4 + Actor88: e1 + Location: 35,36 + Owner: GDI + SubCell: 3 + Actor89: e1 + Location: 49,22 + Owner: GDI + Facing: 128 + SubCell: 1 + Actor92: e2 + Location: 16,25 + Owner: GDI + SubCell: 3 + Actor93: e2 + Location: 15,26 + Owner: GDI + SubCell: 2 + Actor96: e3 + Location: 36,25 + Owner: GDI + Facing: 96 + SubCell: 2 + Actor99: e1 + Location: 30,26 + Owner: GDI + Facing: 96 + SubCell: 4 + Actor100: e1 + Location: 48,21 + Owner: GDI + Facing: 160 + SubCell: 4 + Actor101: e3 + Location: 51,42 + Owner: GDI + Facing: 128 + SubCell: 2 + Actor102: e3 + Location: 52,42 + Owner: GDI + Facing: 128 + SubCell: 2 + Actor103: e1 + Location: 40,30 + Owner: GDI + Facing: 96 + SubCell: 2 + Actor104: e2 + Location: 47,35 + Owner: GDI + SubCell: 1 + Actor105: e2 + Location: 35,46 + Owner: GDI + Facing: 128 + SubCell: 1 + Actor114: e2 + Location: 43,29 + Owner: GDI + SubCell: 4 + Actor118: e3 + Location: 41,29 + Owner: GDI + SubCell: 0 + Actor119: e2 + Location: 27,31 + Owner: GDI + SubCell: 1 + Actor120: e2 + Location: 23,24 + Owner: GDI + Facing: 128 + SubCell: 4 + Actor121: e2 + Location: 25,24 + Owner: GDI + Facing: 128 + SubCell: 3 + Actor122: e2 + Location: 27,31 + Owner: GDI + SubCell: 2 + waypoint27: waypoint + Location: 17,50 + Owner: Neutral + waypoint26: waypoint + Location: 46,46 + Owner: Neutral + waypoint25: waypoint + Location: 17,49 + Owner: Neutral + waypoint10: waypoint + Location: 16,50 + Owner: Neutral + waypoint7: waypoint + Location: 31,26 + Owner: Neutral + waypoint6: waypoint + Location: 37,25 + Owner: Neutral + waypoint5: waypoint + Location: 42,42 + Owner: Neutral + waypoint4: waypoint + Location: 42,56 + Owner: Neutral + waypoint3: waypoint + Location: 55,56 + Owner: Neutral + waypoint2: waypoint + Location: 55,44 + Owner: Neutral + waypoint1: waypoint + Location: 55,32 + Owner: Neutral + waypoint0: waypoint + Location: 43,32 + Owner: Neutral + UnitsEntryLeft: waypoint + Location: 56,57 + Owner: Neutral + UnitsRallyLeft: waypoint + Location: 53,51 + Owner: Neutral + UnitsEntryMiddle: waypoint + Location: 57,57 + Owner: Neutral + UnitsRallyMiddle: waypoint + Location: 55,50 + Owner: Neutral + UnitsEntryRight: waypoint + Location: 58,57 + Owner: Neutral + UnitsRallyRight: waypoint + Location: 57,51 + Owner: Neutral + ChnEntry: waypoint + Location: 41,57 + Owner: Neutral + Atk2Actor1: e2 + Location: 44,29 + Owner: GDI + SubCell: 3 + Atk2Actor2: e1 + Location: 42,29 + Owner: GDI + Facing: 96 + SubCell: 2 + Atk2Actor3: e3 + Location: 41,29 + Owner: GDI + SubCell: 2 + Atk2Actor4: e1 + Location: 40,30 + Owner: GDI + Facing: 96 + SubCell: 1 + Atk2Actor5: e1 + Location: 43,29 + Owner: GDI + Facing: 96 + SubCell: 1 + Atk2Actor6: mtnk + Location: 42,30 + Owner: GDI + Facing: 96 + Detonator: CRATE.plain + Location: 24, 22 + Owner: GDI + Factory: weap + Location: 20,23 + Owner: GDI + Barracks: pyle + Location: 26,20 + Owner: GDI + Yard: fact + Location: 20,21 + Owner: GDI + +Smudges: + sc2 41,40 0: + sc4 43,39 0: + cr1 42,39 0: + cr1 43,36 0: + sc1 29,30 0: + sc1 28,30 0: + sc3 29,23 0: + sc4 19,21 0: + sc5 32,20 0: + +Rules: + Player: + -ConquestVictoryConditions: + MissionObjectives: + EarlyGameOver: true + World: + -CrateSpawner: + -SpawnMPUnits: + -MPStartLocations: + ObjectivesPanel: + PanelName: MISSION_OBJECTIVES + LuaScript: + Scripts: nod06c.lua + ^Vehicle: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Tank: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Infantry: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Plane: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Ship: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Building: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Bridge: + Invulnerable: + E2: + Buildable: + Prerequisites: ~pyle + NUK2: + Buildable: + Prerequisites: ~disabled + GUN: + Buildable: + Prerequisites: ~disabled + CYCL: + Buildable: + Prerequisites: ~disabled + FIX: + Buildable: + Prerequisites: ~disabled + HPAD: + Buildable: + Prerequisites: ~disabled + OBLI: + Buildable: + Prerequisites: ~disabled + BRIK: + Buildable: + Prerequisites: ~disabled + TMPL: + Buildable: + Prerequisites: ~disabled + FTNK: + Buildable: + Prerequisites: ~disabled + STNK: + Buildable: + Prerequisites: ~disabled + ARTY: + Buildable: + Prerequisites: ~disabled + E5: + Buildable: + Prerequisites: ~disabled + RMBO: + Buildable: + Prerequisites: ~disabled + MLRS: + Buildable: + Prerequisites: ~disabled + MCV: + Buildable: + Prerequisites: ~disabled + LST: + Buildable: + Prerequisites: ~disabled + C17: + Buildable: + Prerequisites: ~disabled + GTWR: + Buildable: + Prerequisites: ~disabled + ATWR: + Buildable: + Prerequisites: ~disabled + WEAP: + Buildable: + Prerequisites: ~disabled + EYE: + Buildable: + Prerequisites: ~disabled + E3: + Buildable: + Prerequisites: ~disabled + HARV: + Buildable: + Prerequisites: ~disabled + MTNK: + Buildable: + Prerequisites: ~disabled + HTNK: + Buildable: + Prerequisites: ~disabled + TRAN: + Buildable: + Prerequisites: ~disabled + ORCA: + Buildable: + Prerequisites: ~disabled + MSAM: + Buildable: + Prerequisites: ~disabled + HELI: + Buildable: + Prerequisites: ~disabled + FLARE: + Tooltip: + ShowOwnerRow: false + +Sequences: + +VoxelSequences: + +Weapons: + +Voices: + +Notifications: + +Translations: diff --git a/mods/cnc/maps/nod06c/nod06c.lua b/mods/cnc/maps/nod06c/nod06c.lua new file mode 100644 index 0000000000..5c93efee23 --- /dev/null +++ b/mods/cnc/maps/nod06c/nod06c.lua @@ -0,0 +1,168 @@ +NodStartUnitsVehicle = { 'bggy', 'bggy', 'ltnk', 'ltnk', 'ltnk', 'bike', 'bike'} +NodStartUnitsRight = { 'e1', 'e1', 'e1', 'e1' } +NodStartUnitsMiddle = { 'e6', 'e6', 'e6', 'e6', 'e3', 'e3' } +NodStartUnitsLeft = { 'e4', 'e4', 'e4', 'e4' } + +Win1CellTriggerActivator = { CPos.New(24,22) } +Win2CellTriggerActivator = { CPos.New(20,55), CPos.New(19,55), CPos.New(20,54), CPos.New(19,54), CPos.New(20,53), CPos.New(19,53), CPos.New(20,52), CPos.New(19,52) } +DzneCellTriggerActivator = { CPos.New(26,24), CPos.New(25,24), CPos.New(24,24), CPos.New(23,24), CPos.New(22,24), CPos.New(26,23), CPos.New(25,23), CPos.New(24,23), CPos.New(23,23), CPos.New(22,23), CPos.New(26,22), CPos.New(25,22), CPos.New(23,22), CPos.New(22,22), CPos.New(25,21), CPos.New(24,21), CPos.New(23,21), CPos.New(22,21), CPos.New(25,20), CPos.New(24,20), CPos.New(23,20), CPos.New(22,20) } +ChinCellTriggerActivator = { CPos.New(31,49), CPos.New(30,49), CPos.New(29,49), CPos.New(28,49), CPos.New(27,49), CPos.New(26,49), CPos.New(25,49), CPos.New(24,49), CPos.New(23,49), CPos.New(22,49), CPos.New(21,49), CPos.New(20,49), CPos.New(31,48), CPos.New(30,48), CPos.New(29,48), CPos.New(28,48), CPos.New(27,48), CPos.New(26,48), CPos.New(25,48), CPos.New(24,48), CPos.New(23,48), CPos.New(22,48), CPos.New(21,48), CPos.New(20,48), CPos.New(31,47), CPos.New(30,47), CPos.New(29,47), CPos.New(28,47), CPos.New(27,47), CPos.New(26,47), CPos.New(25,47), CPos.New(24,47), CPos.New(23,47), CPos.New(22,47), CPos.New(21,47), CPos.New(20,47) } + +Atk2ActorTriggerActivator = { Atk2Actor1, Atk2Actor2, Atk2Actor3, Atk2Actor4, Atk2Actor5, Atk2Actor6 } + +Gdi1Units = { 'e1', 'e1', 'e1', 'e2', 'e2' } +Gdi2Units = { 'e1', 'e1', 'e3', 'e3', 'e3' } +Gdi3Units = { 'jeep', 'jeep', 'e3', 'e3' } +Gdi4Units = { 'mtnk', 'e2', 'e2', 'e2', 'e2' } +Gdi5Units = { 'e1', 'e2', 'e2', 'e3', 'e3' } + +AllUnits = { Gdi1Units, Gdi2Units, Gdi3Units, Gdi4Units, Gdi5Units } +Grd1Waypoints = { waypoint0, waypoint1, waypoint2, waypoint3, waypoint4, waypoint5 } + +Atk1TriggerFunctionTime = DateTime.Seconds(3) +ProdTriggerFunctionTime = DateTime.Minutes(5) + +Atk1TriggerFunction = function() + for type, count in pairs({ ['e1'] = 2, ['e2'] = 3 }) do + MyActors = Utils.Take(count, GDI.GetActorsByType(type)) + Utils.Do(MyActors, function(actor) + MovementAndHunt(actor, Grd1Waypoints) + end) + end +end + +Atk2TriggerFunction = function() + for type, count in pairs({ ['e1'] = 2, ['e2'] = 3 , ['jeep'] = 1}) do + MyActors = Utils.Take(count, GDI.GetActorsByType(type)) + Utils.Do(MyActors, function(actor) + IdleHunt(actor) + end) + end +end + +ProdTriggerFunction = function() + local Units = AllUnits[DateTime.GameTime % #AllUnits + 1] + + Utils.Do(Units, function(UnitType) + if (UnitType == 'jeep' or UnitType == 'mtnk') and not Factory.IsDead and Factory.Owner == GDI then + Factory.Build({UnitType}) + elseif (UnitType == 'e1' or UnitType == 'e2' or UnitType == 'e3') and not Barracks.IsDead and Barracks.Owner == GDI then + Barracks.Build({UnitType}) + end + end) + + local list = GDI.GetGroundAttackers() + local counter = 1 + while counter <= 5 do + counter = counter + 1 + if counter <= #list then + IdleHunt(list[counter]) + end + end + + Trigger.AfterDelay(ProdTriggerFunctionTime, ProdTriggerFunction) +end + +MovementAndHunt = function(unit, waypoints) + if unit ~= nil then + Utils.Do(waypoints, function(waypoint) + unit.AttackMove(waypoint.Location) + end) + IdleHunt(unit) + end +end + +InsertNodUnits = function() + Camera.Position = UnitsRallyRight.CenterPosition + + Reinforcements.Reinforce(Nod, NodStartUnitsVehicle, { UnitsEntryMiddle.Location, UnitsRallyMiddle.Location }, 30) + Reinforcements.Reinforce(Nod, NodStartUnitsMiddle, { UnitsEntryMiddle.Location, UnitsRallyMiddle.Location }, 15) + Reinforcements.Reinforce(Nod, NodStartUnitsLeft, { UnitsEntryLeft.Location, UnitsRallyLeft.Location }, 15) + Reinforcements.Reinforce(Nod, NodStartUnitsRight, { UnitsEntryRight.Location, UnitsRallyRight.Location }, 15) +end + +WorldLoaded = function() + GDI = Player.GetPlayer("GDI") + Nod = Player.GetPlayer("Nod") + + 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("Steal the GDI Nuclear detonator") + NodObjective3 = Nod.AddSecondaryObjective("Infiltrate the barracks, weapon factory and \nthe construction yard") + GDIObjective = GDI.AddPrimaryObjective("Stop the Nod taskforce from escaping with the detonator") + + InsertNodUnits() + + Trigger.AfterDelay(Atk1TriggerFunctionTime, Atk1TriggerFunction) + + Trigger.OnAllKilled(Atk2ActorTriggerActivator, Atk2TriggerFunction) + + Trigger.OnEnteredFootprint(ChinCellTriggerActivator, function(a, id) + if a.Owner == Nod then + Reinforcements.Reinforce(Nod, { 'tran' }, { ChnEntry.Location, waypoint10.Location }, 11) + Trigger.RemoveFootprintTrigger(id) + end + end) + + Trigger.OnEnteredFootprint(DzneCellTriggerActivator, function(a, id) + if a.Owner == Nod then + Actor.Create('flare', true, { Owner = Nod, Location = waypoint10.Location }) + Trigger.RemoveFootprintTrigger(id) + end + end) + + Trigger.OnEnteredFootprint(Win1CellTriggerActivator, function(a, id) + if a.Owner == Nod then + NodObjective2 = Nod.AddPrimaryObjective("Move to the evacuation point") + Nod.MarkCompletedObjective(NodObjective1) + Trigger.RemoveFootprintTrigger(id) + end + end) + + Trigger.OnEnteredFootprint(Win2CellTriggerActivator, function(a, id) + if a.Owner == Nod and NodObjective1 then + Nod.MarkCompletedObjective(NodObjective2) + Trigger.RemoveFootprintTrigger(id) + end + end) + + Trigger.AfterDelay(ProdTriggerFunctionTime, ProdTriggerFunction) +end + +Tick = function() + if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then + GDI.MarkCompletedObjective(GDIObjective) + end + + if DateTime.GameTime % 5 == 0 and Barracks.Owner == Nod and Factory.Owner == Nod and Yard.Owner == Nod then + Nod.MarkCompletedObjective(NodObjective3) + end + + if DateTime.GameTime % 7 == 0 and not Nod.IsObjectiveCompleted(NodObjective3) and (Barracks.IsDead or Factory.IsDead or Yard.IsDead) then + Nod.MarkFailedObjective(NodObjective3) + end +end + +IdleHunt = function(unit) + if not unit.IsDead then + Trigger.OnIdle(unit, unit.Hunt) + end +end diff --git a/mods/cnc/missions.yaml b/mods/cnc/missions.yaml index 9b9f70e58f..f71cb252d4 100644 --- a/mods/cnc/missions.yaml +++ b/mods/cnc/missions.yaml @@ -19,6 +19,7 @@ Nod Campaign: ./mods/cnc/maps/nod05 ./mods/cnc/maps/nod06a ./mods/cnc/maps/nod06b + ./mods/cnc/maps/nod06c Funpark Campaign: ./mods/cnc/maps/funpark01