From da3d177c6056fde8189fd3f63155182a1b9ee625 Mon Sep 17 00:00:00 2001 From: Alexander Boll Date: Tue, 5 May 2015 20:36:15 +0200 Subject: [PATCH] added mission 6a nod --- OpenRA.sln | 1 + mods/cnc/audio/notifications.yaml | 7 +- mods/cnc/maps/nod06a/map.bin | Bin 0 -> 20497 bytes mods/cnc/maps/nod06a/map.png | Bin 0 -> 39693 bytes mods/cnc/maps/nod06a/map.yaml | 728 ++++++++++++++++++++++++++++++ mods/cnc/maps/nod06a/nod06a.lua | 215 +++++++++ mods/cnc/missions.yaml | 2 + mods/cnc/rules/misc.yaml | 15 +- mods/cnc/sequences/misc.yaml | 11 + 9 files changed, 977 insertions(+), 2 deletions(-) create mode 100644 mods/cnc/maps/nod06a/map.bin create mode 100644 mods/cnc/maps/nod06a/map.png create mode 100644 mods/cnc/maps/nod06a/map.yaml create mode 100644 mods/cnc/maps/nod06a/nod06a.lua diff --git a/OpenRA.sln b/OpenRA.sln index 5587c5b745..cc441d80f8 100644 --- a/OpenRA.sln +++ b/OpenRA.sln @@ -40,6 +40,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tiberian Dawn Lua scripts", mods\cnc\maps\nod04b\nod04b.lua = mods\cnc\maps\nod04b\nod04b.lua mods\cnc\maps\nod05\nod05.lua = mods\cnc\maps\nod05\nod05.lua 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\shellmap\shellmap.lua = mods\cnc\maps\shellmap\shellmap.lua EndProjectSection EndProject diff --git a/mods/cnc/audio/notifications.yaml b/mods/cnc/audio/notifications.yaml index 378ded87f3..01f0844fec 100644 --- a/mods/cnc/audio/notifications.yaml +++ b/mods/cnc/audio/notifications.yaml @@ -43,4 +43,9 @@ Sounds: TabClick: button ClickSound: button ClickDisabledSound: scold2 - Beacon: bleep2 \ No newline at end of file + Beacon: bleep2 + SignalFlare: flare1 + SignalFlareEast: flaree1 + SignalFlareNorth: flaren1 + SignalFlareSouth: flares1 + SignalFlareWest: flarew1 \ No newline at end of file diff --git a/mods/cnc/maps/nod06a/map.bin b/mods/cnc/maps/nod06a/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..06818329b5de392276d98f50d614d18f5fe07152 GIT binary patch literal 20497 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 N7-$%182EoP@Ly~==b``r literal 0 HcmV?d00001 diff --git a/mods/cnc/maps/nod06a/map.png b/mods/cnc/maps/nod06a/map.png new file mode 100644 index 0000000000000000000000000000000000000000..d7466e25f2fc1cd864950a6efaacae95fa9333be GIT binary patch literal 39693 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 literal 0 HcmV?d00001 diff --git a/mods/cnc/maps/nod06a/map.yaml b/mods/cnc/maps/nod06a/map.yaml new file mode 100644 index 0000000000..49fb0ada6b --- /dev/null +++ b/mods/cnc/maps/nod06a/map.yaml @@ -0,0 +1,728 @@ +MapFormat: 7 + +RequiresMod: cnc + +Title: Steal The Detonator (a) + +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: 16,17,46,45 + +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: 0 + ConfigurableStartingUnits: False + ShortGame: False + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Race: gdi + Enemies: GDI, Nod + 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 + +Actors: + Actor0: sbag + Location: 61,46 + Owner: GDI + Actor1: sbag + Location: 60,46 + Owner: GDI + Actor2: sbag + Location: 59,46 + Owner: GDI + Actor3: sbag + Location: 57,46 + Owner: GDI + Actor4: sbag + Location: 56,46 + Owner: GDI + Actor5: sbag + Location: 55,46 + Owner: GDI + Actor6: sbag + Location: 54,46 + Owner: GDI + Actor7: sbag + Location: 53,46 + Owner: GDI + Actor8: sbag + Location: 52,46 + Owner: GDI + Actor9: sbag + Location: 61,45 + Owner: GDI + Actor10: sbag + Location: 59,45 + Owner: GDI + Actor11: sbag + Location: 57,45 + Owner: GDI + Actor12: sbag + Location: 52,45 + Owner: GDI + Actor13: sbag + Location: 61,44 + Owner: GDI + Actor14: cycl + Location: 60,44 + Owner: Neutral + Actor15: cycl + Location: 59,44 + Owner: Neutral + Actor16: cycl + Location: 58,44 + Owner: Neutral + Actor17: sbag + Location: 61,43 + Owner: Neutral + Actor18: cycl + Location: 60,43 + Owner: Neutral + Actor19: cycl + Location: 58,43 + Owner: Neutral + Actor20: sbag + Location: 50,43 + Owner: GDI + Actor21: sbag + Location: 49,43 + Owner: GDI + Actor22: sbag + Location: 61,42 + Owner: GDI + Actor23: cycl + Location: 60,42 + Owner: Neutral + Actor24: cycl + Location: 59,42 + Owner: Neutral + Actor25: cycl + Location: 58,42 + Owner: Neutral + Actor26: sbag + Location: 49,42 + Owner: GDI + Actor27: sbag + Location: 61,41 + Owner: GDI + Actor28: sbag + Location: 49,41 + Owner: GDI + Actor29: sbag + Location: 61,40 + Owner: GDI + Actor30: sbag + Location: 49,40 + Owner: GDI + Actor31: sbag + Location: 61,39 + Owner: GDI + Actor32: sbag + Location: 49,39 + Owner: GDI + Actor33: sbag + Location: 61,38 + Owner: GDI + Actor34: sbag + Location: 49,38 + Owner: GDI + Actor35: sbag + Location: 61,37 + Owner: GDI + Actor36: sbag + Location: 49,37 + Owner: GDI + Actor37: sbag + Location: 61,36 + Owner: GDI + Actor38: sbag + Location: 49,36 + Owner: GDI + Actor39: sbag + Location: 61,35 + Owner: GDI + Actor40: sbag + Location: 49,35 + Owner: GDI + Actor41: sbag + Location: 61,34 + Owner: GDI + Actor42: sbag + Location: 49,34 + Owner: GDI + Actor43: sbag + Location: 61,33 + Owner: GDI + Actor44: sbag + Location: 49,33 + Owner: GDI + Actor45: sbag + Location: 61,32 + Owner: GDI + Actor46: sbag + Location: 49,32 + Owner: GDI + Actor47: sbag + Location: 61,31 + Owner: GDI + Actor48: sbag + Location: 60,31 + Owner: GDI + Actor49: sbag + Location: 59,31 + Owner: GDI + Actor50: sbag + Location: 58,31 + Owner: GDI + Actor51: sbag + Location: 57,31 + Owner: GDI + Actor52: sbag + Location: 56,31 + Owner: GDI + Actor53: sbag + Location: 55,31 + Owner: GDI + Actor54: sbag + Location: 54,31 + Owner: GDI + Actor55: sbag + Location: 53,31 + Owner: GDI + Actor56: sbag + Location: 52,31 + Owner: GDI + Actor57: sbag + Location: 51,31 + Owner: GDI + Actor58: sbag + Location: 50,31 + Owner: GDI + Actor59: sbag + Location: 49,31 + Owner: GDI + Actor60: t08 + Location: 46,23 + Owner: Neutral + Actor61: t18 + Location: 46,21 + Owner: Neutral + Actor62: t18 + Location: 49,19 + Owner: Neutral + Actor63: t18 + Location: 47,53 + Owner: Neutral + Actor64: t08 + Location: 25,30 + Owner: Neutral + Actor65: t08 + Location: 24,30 + Owner: Neutral + Actor66: rock6 + Location: 24,55 + Owner: Neutral + Actor67: rock1 + Location: 16,31 + Owner: Neutral + Actor68: t08 + Location: 29,42 + Owner: Neutral + Actor69: t08 + Location: 30,43 + Owner: Neutral + Actor70: t08 + Location: 31,36 + Owner: Neutral + Actor71: t08 + Location: 31,58 + Owner: Neutral + Actor72: t08 + Location: 30,58 + Owner: Neutral + Actor73: t08 + Location: 36,51 + Owner: Neutral + Actor74: t08 + Location: 37,46 + Owner: Neutral + Actor75: t08 + Location: 39,51 + Owner: Neutral + Actor76: t08 + Location: 52,53 + Owner: Neutral + Actor77: t08 + Location: 16,60 + Owner: Neutral + Actor78: t08 + Location: 19,57 + Owner: Neutral + Actor79: t08 + Location: 18,51 + Owner: Neutral + Actor80: t08 + Location: 17,50 + Owner: Neutral + Actor81: t08 + Location: 16,50 + Owner: Neutral + Actor82: t08 + Location: 23,33 + Owner: Neutral + Actor83: t08 + Location: 50,17 + Owner: Neutral + Actor84: t08 + Location: 38,17 + Owner: Neutral + Actor85: t08 + Location: 42,18 + Owner: Neutral + Actor86: t08 + Location: 43,24 + Owner: Neutral + Actor87: t08 + Location: 43,23 + Owner: Neutral + Actor88: t08 + Location: 42,23 + Owner: Neutral + Actor89: t08 + Location: 35,20 + Owner: Neutral + Actor90: t08 + Location: 30,22 + Owner: Neutral + Actor91: t08 + Location: 17,19 + Owner: Neutral + Actor92: t08 + Location: 16,19 + Owner: Neutral + Actor93: t08 + Location: 57,22 + Owner: Neutral + Actor94: t08 + Location: 52,50 + Owner: Neutral + Actor95: t08 + Location: 53,28 + Owner: Neutral + Actor96: t08 + Location: 54,23 + Owner: Neutral + Actor97: t08 + Location: 55,23 + Owner: Neutral + Actor99: v35 + Location: 36,19 + Owner: Neutral + Actor100: v34 + Location: 34,20 + Owner: Neutral + Actor101: v33 + Location: 34,19 + Owner: Neutral + Actor102: v31 + Location: 36,24 + Owner: Neutral + Actor103: v30 + Location: 41,17 + Owner: Neutral + Actor111: v23 + Location: 44,24 + Owner: Neutral + Actor113: v21 + Location: 44,23 + Owner: Neutral + Actor114: v20 + Location: 45,21 + Owner: Neutral + Actor117: fact + Location: 50,32 + Owner: GDI + Actor119: nuke + Location: 55,32 + Owner: GDI + Actor120: nuke + Location: 53,32 + Owner: GDI + Actor121: proc + Location: 50,35 + Owner: GDI + Actor122: silo + Location: 53,35 + Owner: GDI + Actor123: pyle + Location: 55,35 + Owner: GDI + Actor124: silo + Location: 53,37 + Owner: GDI + Actor125: jeep + Location: 59,25 + Owner: GDI + Facing: 160 + Actor126: jeep + Location: 50,42 + Owner: GDI + Facing: 128 + Actor127: mtnk + Location: 53,45 + Owner: GDI + Facing: 160 + Actor128: mtnk + Location: 59,38 + Owner: GDI + Actor129: mtnk + Location: 60,39 + Owner: GDI + Actor130: jeep + Location: 60,36 + Owner: GDI + Actor131: mtnk + Location: 59,36 + Owner: GDI + Actor134: mtnk + Location: 38,38 + Owner: GDI + Facing: 160 + Actor135: jeep + Location: 60,37 + Owner: GDI + Actor139: mtnk + Location: 28,33 + Owner: GDI + Facing: 224 + Actor140: e2 + Location: 24,29 + Owner: GDI + Facing: 224 + SubCell: 1 + Actor141: e2 + Location: 24,28 + Owner: GDI + Facing: 224 + SubCell: 3 + Actor142: e1 + Location: 58,38 + Owner: GDI + SubCell: 3 + Actor143: e2 + Location: 38,46 + Owner: GDI + SubCell: 1 + Actor144: e2 + Location: 38,46 + Owner: GDI + SubCell: 2 + Actor146: e1 + Location: 57,39 + Owner: GDI + SubCell: 2 + Actor147: e1 + Location: 57,38 + Owner: GDI + SubCell: 4 + Actor148: e1 + Location: 57,39 + Owner: GDI + SubCell: 1 + Actor149: e1 + Location: 57,38 + Owner: GDI + SubCell: 3 + Actor150: e2 + Location: 57,37 + Owner: GDI + SubCell: 1 + Actor151: e2 + Location: 57,37 + Owner: GDI + SubCell: 2 + Actor152: e2 + Location: 57,37 + Owner: GDI + SubCell: 3 + Actor153: e2 + Location: 57,37 + Owner: GDI + SubCell: 4 + Actor154: c3 + Location: 40,22 + Owner: Neutral + Facing: 192 + SubCell: 4 + Actor155: c5 + Location: 40,19 + Owner: Neutral + Facing: 96 + SubCell: 1 + Actor156: c6 + Location: 39,21 + Owner: Neutral + Facing: 96 + SubCell: 0 + Actor157: e1 + Location: 30,57 + Owner: GDI + SubCell: 4 + Actor158: e2 + Location: 32,58 + Owner: GDI + SubCell: 1 + Actor159: e2 + Location: 39,52 + Owner: GDI + SubCell: 0 + Actor160: e2 + Location: 40,51 + Owner: GDI + SubCell: 1 + waypoint27: waypoint + Location: 54,58 + Owner: Neutral + waypoint26: waypoint + Location: 16,17 + Owner: Neutral + waypoint25: waypoint + Location: 56,56 + Owner: Neutral + waypoint17: waypoint + Location: 55,57 + Owner: Neutral + waypoint16: waypoint + Location: 58,51 + Owner: Neutral + waypoint15: waypoint + Location: 59,30 + Owner: Neutral + waypoint14: waypoint + Location: 61,19 + Owner: Neutral + waypoint13: waypoint + Location: 49,18 + Owner: Neutral + waypoint11: waypoint + Location: 20,21 + Owner: Neutral + waypoint10: waypoint + Location: 31,41 + Owner: Neutral + waypoint9: waypoint + Location: 19,36 + Owner: Neutral + waypoint8: waypoint + Location: 20,54 + Owner: Neutral + waypoint7: waypoint + Location: 40,57 + Owner: Neutral + waypoint6: waypoint + Location: 36,29 + Owner: Neutral + waypoint5: waypoint + Location: 40,29 + Owner: Neutral + waypoint4: waypoint + Location: 44,44 + Owner: Neutral + waypoint3: waypoint + Location: 44,47 + Owner: Neutral + waypoint2: waypoint + Location: 59,39 + Owner: Neutral + waypoint1: waypoint + Location: 51,43 + Owner: Neutral + waypoint0: waypoint + Location: 56,39 + Owner: Neutral + UnitsEntryLeft: waypoint + Location: 20,17 + Owner: Neutral + UnitsRallyLeft: waypoint + Location: 20,20 + Owner: Neutral + UnitsEntryRight: waypoint + Location: 27,17 + Owner: Neutral + UnitsRallyRight: waypoint + Location: 27,20 + Owner: Neutral + ChnEnrty: waypoint + Location: 32,61 + Owner: Neutral + Obj2UnitsEntry: waypoint + Location: 48,17 + Owner: Neutral + Guard1: e2 + Location: 18,31 + Owner: GDI + SubCell: 0 + Guard2: e2 + Location: 17,31 + Owner: GDI + SubCell: 1 + Guard3: e2 + Location: 18,32 + Owner: GDI + SubCell: 2 + Atk1Activator1: gtwr + Location: 48,43 + Owner: GDI + Atk1Activator2: e1 + Location: 50,46 + Owner: GDI + Facing: 224 + SubCell: 4 + Atk2Activator1: gtwr + Location: 51,46 + Owner: GDI + Atk2Activator2: e1 + Location: 48,44 + Owner: GDI + Facing: 160 + SubCell: 4 + Atk3Activator: v25 + Location: 41,19 + Owner: GDI + Chn1Activator1: v29 + Location: 42,22 + Owner: GDI + Chn1Activator2: v27 + Location: 35,23 + Owner: GDI + Chn1Activator3: v26 + Location: 37,20 + Owner: GDI + Chn1Activator4: v24 + Location: 41,23 + Owner: GDI + Chn1Activator5: v22 + Location: 41,21 + Owner: GDI + Chn2Activator1: v27 + Location: 34,23 + Owner: GDI + Chn2Activator2: v30 + Location: 35,22 + Owner: GDI + Chn2Activator3: v27 + Location: 36,23 + Owner: GDI + Detonator: CRATE.plain + Location: 59, 43 + Owner: GDI + Radar: hq + Location: 57,32 + Owner: GDI + +Smudges: + +Rules: + Player: + -ConquestVictoryConditions: + MissionObjectives: + EarlyGameOver: true + EnemyWatcher: + World: + -CrateSpawner: + -SpawnMPUnits: + -MPStartLocations: + ObjectivesPanel: + PanelName: MISSION_OBJECTIVES + LuaScript: + Scripts: nod06a.lua + ^Vehicle: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Tank: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Infantry: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + AnnounceOnSeen: + ^Plane: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Ship: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Building: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Husk: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^CivBuildingHusk: + Tooltip: + ShowOwnerRow: false + HARV: + Harvester: + SearchFromProcRadius: 64 + FLARE: + Tooltip: + ShowOwnerRow: false + +Sequences: + +VoxelSequences: + +Weapons: + +Voices: + +Notifications: + +Translations: diff --git a/mods/cnc/maps/nod06a/nod06a.lua b/mods/cnc/maps/nod06a/nod06a.lua new file mode 100644 index 0000000000..f786a1b5a8 --- /dev/null +++ b/mods/cnc/maps/nod06a/nod06a.lua @@ -0,0 +1,215 @@ +NodStartUnitsRight = { 'ltnk', 'bike', 'e1', 'e1', 'e3', 'e3' } +NodStartUnitsLeft = { 'ltnk', 'ltnk', 'bggy', 'e1', 'e1', 'e1', 'e1', 'e3', 'e3', 'e3', 'e3' } +Chn1Units = { 'e1', 'e1', 'e1', 'e1', 'e1' } +Chn2Units = { 'e2', 'e2', 'e2', 'e2', 'e2' } +Obj2Units = { 'ltnk', 'bike', 'e1', 'e1', 'e1' } + +Chn3CellTriggerActivator = { CPos.New(49,58), CPos.New(48,58), CPos.New(49,57), CPos.New(48,57), CPos.New(49,56), CPos.New(48,56), CPos.New(49,55), CPos.New(48,55) } +DzneCellTriggerActivator = { CPos.New(61,45), CPos.New(60,45), CPos.New(59,45), CPos.New(58,45), CPos.New(57,45), CPos.New(61,44), CPos.New(60,44), CPos.New(59,44), CPos.New(58,44), CPos.New(57,44), CPos.New(61,43), CPos.New(60,43), CPos.New(58,43), CPos.New(57,43), CPos.New(61,42), CPos.New(60,42), CPos.New(59,42), CPos.New(58,42), CPos.New(57,42), CPos.New(61,41), CPos.New(60,41), CPos.New(59,41), CPos.New(58,41), CPos.New(57,41) } +Win1CellTriggerActivator = { CPos.New(59,43) } +Win2CellTriggerActivator = { CPos.New(54,58), CPos.New(53,58), CPos.New(52,58), CPos.New(54,57), CPos.New(53,57), CPos.New(52,57), CPos.New(54,56), CPos.New(53,56), CPos.New(52,56), CPos.New(54,55), CPos.New(53,55), CPos.New(52,55) } + +Grd2ActorTriggerActivator = { Guard1, Guard2, Guard3 } +Atk1ActorTriggerActivator = { Atk1Activator1, Atk1Activator2 } +Atk2ActorTriggerActivator = { Atk2Activator1, Atk2Activator2 } +Chn1ActorTriggerActivator = { Chn1Activator1, Chn1Activator2, Chn1Activator3, Chn1Activator4, Chn1Activator5 } +Chn2ActorTriggerActivator = { Chn2Activator1, Chn2Activator2, Chn2Activator3 } +Obj2ActorTriggerActivator = { Chn1Activator1, Chn1Activator2, Chn1Activator3, Chn1Activator4, Chn1Activator5, Chn2Activator1, Chn2Activator2, Chn2Activator3, Atk3Activator } + +Chn1Waypoints = { ChnEnrty.Location, waypoint5.Location } +Chn2Waypoints = { ChnEnrty.Location, waypoint6.Location } +Gdi3Waypoints = { waypoint1, waypoint3, waypoint7, waypoint8, waypoint9 } +Gdi4Waypoints = { waypoint4, waypoint10, waypoint9, waypoint11, waypoint9, waypoint10 } +Gdi5Waypoints = { waypoint1, waypoint4 } +Gdi6Waypoints = { waypoint2, waypoints3 } + +Grd1TriggerFunctionTime = DateTime.Seconds(3) + +Grd1TriggerFunction = function() + MyActors = Utils.Take(2, GDI.GetActorsByType('mtnk')) + Utils.Do(MyActors, function(actor) + MovementAndHunt(actor, Gdi3Waypoints) + end) +end + +Grd2TriggerFunction = function() + if not Grd2Switch then + for type, count in pairs({ ['e1'] = 2, ['e2'] = 1, ['jeep'] = 1 }) do + MyActors = Utils.Take(count, GDI.GetActorsByType(type)) + Utils.Do(MyActors, function(actor) + MovementAndHunt(actor, Gdi4Waypoints) + end) + end + Grd2Swicth = true + end +end + +Atk1TriggerFunction = function() + if not Atk1Switch then + for type, count in pairs({ ['e1'] = 3, ['e2'] = 3, ['jeep'] = 1 }) do + MyActors = Utils.Take(count, GDI.GetActorsByType(type)) + Utils.Do(MyActors, function(actor) + MovementAndHunt(actor, Gdi5Waypoints) + end) + end + Atk1Switch = true + end +end + +Atk2TriggerFunction = function() + if not Atk2Switch then + for type, count in pairs({ ['mtnk'] = 1, ['jeep'] = 1 }) do + MyActors = Utils.Take(count, GDI.GetActorsByType(type)) + Utils.Do(MyActors, function(actor) + MovementAndHunt(actor, Gdi6Waypoints) + end) + end + Atk2Switch = true + end +end + +Atk3TriggerFunction = function() + if not Atk3Switch then + Atk3Switch = true + if not Radar.IsDead then + local targets = Nod.GetGroundAttackers() + local target = targets[DateTime.GameTime % #targets + 1].CenterPosition + + if target then + Radar.SendAirstrike(target, false, 256 - 28) + end + end + end +end + +Chn1TriggerFunction = function() + local cargo = Reinforcements.ReinforceWithTransport(GDI, 'tran', Chn1Units, Chn1Waypoints, { waypoint14.Location })[2] + Utils.Do(cargo, function(actor) + IdleHunt(actor) + end) +end + +Chn2TriggerFunction = function() + local cargo = Reinforcements.ReinforceWithTransport(GDI, 'tran', Chn2Units, Chn2Waypoints, { waypoint14.Location })[2] + Utils.Do(cargo, function(actor) + IdleHunt(actor) + end) +end + +Obj2TriggerFunction = function() + Nod.MarkCompletedObjective(NodObjective2) + Reinforcements.Reinforce(Nod, Obj2Units, { Obj2UnitsEntry.Location, waypoint13.Location }, 15) +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, 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") + NodObjective2 = Nod.AddSecondaryObjective("Destroy the houses of the GDI supporter \nin the village") + + GDIObjective = GDI.AddPrimaryObjective("Stop the Nod taskforce from escaping with the detonator") + + InsertNodUnits() + + Trigger.AfterDelay(Grd1TriggerFunctionTime, Grd1TriggerFunction) + + Utils.Do(Grd2ActorTriggerActivator, function(actor) + Trigger.OnDiscovered(actor, Grd2TriggerFunction) + end) + + OnAnyDamaged(Atk1ActorTriggerActivator, Atk1TriggerFunction) + + OnAnyDamaged(Atk2ActorTriggerActivator, Atk2TriggerFunction) + + Trigger.OnDamaged(Atk3Activator, Atk3TriggerFunction) + + Trigger.OnAllKilled(Chn1ActorTriggerActivator, Chn1TriggerFunction) + + Trigger.OnAllKilled(Chn2ActorTriggerActivator, Chn2TriggerFunction) + + Trigger.OnEnteredFootprint(Chn3CellTriggerActivator, function(a, id) + if a.Owner == Nod then + Reinforcements.Reinforce(Nod, { 'tran' }, { ChnEnrty.Location, waypoint17.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 = waypoint17.Location }) + Trigger.RemoveFootprintTrigger(id) + end + end) + + Trigger.OnAllRemovedFromWorld(Obj2ActorTriggerActivator, Obj2TriggerFunction) + + Trigger.OnEnteredFootprint(Win1CellTriggerActivator, function(a, id) + if a.Owner == Nod then + NodObjective3 = 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 then + Nod.MarkCompletedObjective(NodObjective3) + Trigger.RemoveFootprintTrigger(id) + end + end) +end + +Tick = function() + if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then + GDI.MarkCompletedObjective(GDIObjective) + end +end + +IdleHunt = function(unit) + if not unit.IsDead then + Trigger.OnIdle(unit, unit.Hunt) + end +end + +OnAnyDamaged = function(actors, func) + Utils.Do(actors, function(actor) + Trigger.OnDamaged(actor, func) + end) +end diff --git a/mods/cnc/missions.yaml b/mods/cnc/missions.yaml index d9fe71c965..b788cae5e0 100644 --- a/mods/cnc/missions.yaml +++ b/mods/cnc/missions.yaml @@ -17,6 +17,8 @@ Nod Campaign: ./mods/cnc/maps/nod04a ./mods/cnc/maps/nod04b ./mods/cnc/maps/nod05 + ./mods/cnc/maps/nod06a Funpark Campaign: ./mods/cnc/maps/funpark01 + diff --git a/mods/cnc/rules/misc.yaml b/mods/cnc/rules/misc.yaml index f6f7af2ae7..550502b179 100644 --- a/mods/cnc/rules/misc.yaml +++ b/mods/cnc/rules/misc.yaml @@ -67,4 +67,17 @@ CAMERA.small: RevealsShroud: Range: 6c0 BodyOrientation: - + +FLARE: + Immobile: + OccupiesSpace: false + RevealsShroud: + Range: 3c0 + RenderSprites: + Image: smokland + WithSpriteBody: + StartSequence: open + HiddenUnderFog: + Tooltip: + Name: Flare + BodyOrientation: diff --git a/mods/cnc/sequences/misc.yaml b/mods/cnc/sequences/misc.yaml index 28824e8f8b..12dcb6d553 100644 --- a/mods/cnc/sequences/misc.yaml +++ b/mods/cnc/sequences/misc.yaml @@ -384,3 +384,14 @@ craters: cr4: cr4 cr5: cr5 cr6: cr6 + +smokland: + open: + Length: 60 + Tick: 120 + ZOffset: 1023 + idle: + Start: 60 + Length: 32 + Tick: 120 + ZOffset: 1023 \ No newline at end of file