diff --git a/OpenRA.sln b/OpenRA.sln index 79124b7d44..4058bb1230 100644 --- a/OpenRA.sln +++ b/OpenRA.sln @@ -39,29 +39,30 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tiberian Dawn Lua scripts", mods\cnc\maps\nod04a\nod04a.lua = mods\cnc\maps\nod04a\nod04a.lua 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\nod06b\nod06b.lua = mods\cnc\maps\nod06b\nod06b.lua mods\cnc\maps\nod06c\nod06c.lua = mods\cnc\maps\nod06c\nod06c.lua + mods\cnc\maps\funpark01\scj01ea.lua = mods\cnc\maps\funpark01\scj01ea.lua + mods\cnc\maps\cnc64gdi01\cnc64gdi01.lua = mods\cnc\maps\cnc64gdi01\cnc64gdi01.lua mods\cnc\maps\shellmap\shellmap.lua = mods\cnc\maps\shellmap\shellmap.lua EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Red Alert Lua scripts", "Red Alert Lua scripts", "{B35D533F-BEB6-4674-A466-324EEFD97259}" ProjectSection(SolutionItems) = preProject - mods\ra\maps\allies-05a\AI.lua = mods\ra\maps\allies-05a\AI.lua mods\ra\maps\allies-01\allies01.lua = mods\ra\maps\allies-01\allies01.lua mods\ra\maps\allies-02\allies02.lua = mods\ra\maps\allies-02\allies02.lua mods\ra\maps\allies-03a\allies03a.lua = mods\ra\maps\allies-03a\allies03a.lua mods\ra\maps\allies-03b\allies03b.lua = mods\ra\maps\allies-03b\allies03b.lua mods\ra\maps\allies-05a\allies05a.lua = mods\ra\maps\allies-05a\allies05a.lua - mods\ra\maps\desert-shellmap\desert-shellmap.lua = mods\ra\maps\desert-shellmap\desert-shellmap.lua + mods\ra\maps\allies-05a\AI.lua = mods\ra\maps\allies-05a\AI.lua + mods\ra\maps\soviet-01\soviet01.lua = mods\ra\maps\soviet-01\soviet01.lua + mods\ra\maps\soviet-02a\soviet02a.lua = mods\ra\maps\soviet-02a\soviet02a.lua + mods\ra\maps\survival01\survival01.lua = mods\ra\maps\survival01\survival01.lua + mods\ra\maps\survival02\survival02.lua = mods\ra\maps\survival02\survival02.lua mods\ra\maps\fort-lonestar\fort-lonestar.lua = mods\ra\maps\fort-lonestar\fort-lonestar.lua mods\ra\maps\intervention\intervention.lua = mods\ra\maps\intervention\intervention.lua mods\ra\maps\monster-tank-madness\monster-tank-madness.lua = mods\ra\maps\monster-tank-madness\monster-tank-madness.lua - mods\ra\maps\soviet-01\soviet01.lua = mods\ra\maps\soviet-01\soviet01.lua - mods\ra\maps\survival01\survival01.lua = mods\ra\maps\survival01\survival01.lua - mods\ra\maps\survival02\survival02.lua = mods\ra\maps\survival02\survival02.lua - mods\ra\maps\soviet-02a\soviet02a.lua = mods\ra\maps\soviet-02a\soviet02a.lua + mods\ra\maps\desert-shellmap\desert-shellmap.lua = mods\ra\maps\desert-shellmap\desert-shellmap.lua EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dune 2000 Lua scripts", "Dune 2000 Lua scripts", "{06B1AE07-DDB0-4287-8700-A8CD9A0E652E}" diff --git a/mods/cnc/maps/cnc64gdi01/cnc64gdi01.lua b/mods/cnc/maps/cnc64gdi01/cnc64gdi01.lua new file mode 100644 index 0000000000..41e923043a --- /dev/null +++ b/mods/cnc/maps/cnc64gdi01/cnc64gdi01.lua @@ -0,0 +1,211 @@ +CommandoReinforcements = { "rmbo" } +MCVReinforcements = { "mcv" } + +inf1 = { "e4" } + +AutocreateSquads = +{ + { "stnk", "stnk" }, + { "ftnk", "ftnk" }, + { "ltnk", "ltnk", "bike" }, + { "arty", "arty", "bike", "bike" }, + { "ltnk", "ltnk" }, + { "stnk", "stnk" }, + { "ltnk", "ltnk" }, + { "arty", "arty" } +} + +AttackTriggers = { AttackTrigger1, AttackTrigger2, AttackTrigger3, AttackTrigger4 } + +harvester = { "harv" } + +SamSites = { SAM01, SAM02 } + +WorldLoaded = function() + player = Player.GetPlayer("GDI") + enemy = Player.GetPlayer("Nod") + + 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") + end) + Trigger.OnObjectiveFailed(player, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + + Trigger.OnPlayerWon(player, function() + Media.PlaySpeechNotification(player, "Win") + end) + + Trigger.OnPlayerLost(player, function() + Media.PlaySpeechNotification(player, "Lose") + end) + + destroySAMsCenterObjective = player.AddPrimaryObjective("Destroy the SAM sites protecting the Obelisk.") + destroyObeliskObjective = player.AddPrimaryObjective("Destroy the Obelisk.") + destroyBiotechCenterObjective = player.AddPrimaryObjective("Destroy the biotech facility.") + + Trigger.OnAllKilled(SamSites, function() + AirSupport = Actor.Create("airstrike.proxy", true, { Owner = player }) + AirSupportEnabled = true + player.MarkCompletedObjective(destroySAMsCenterObjective) + end) + + Trigger.OnDamaged(Obelisk01, function() + Trigger.AfterDelay(DateTime.Seconds(1), Obelisk01.Kill) + end) + + Trigger.OnKilled(Obelisk01, function() + player.MarkCompletedObjective(destroyObeliskObjective) + Trigger.AfterDelay(DateTime.Seconds(5), function() Reinforce(MCVReinforcements) end) + ObeliskFlare.Destroy() + if AirSupportEnabled then AirSupport.Destroy() end + end) + + Trigger.OnKilled(Biolab, function() + player.MarkCompletedObjective(destroyBiotechCenterObjective) + end) + + Trigger.OnCapture(Biolab, function() + Biolab.Kill() + end) + + Trigger.OnDamaged(Biolab, HuntTriggerFunction) + + AIRepairBuildings(enemy) + AIRebuildHarvesters(enemy) + + Utils.Do(AttackTriggers, function(a) + Trigger.OnKilledOrCaptured(a, function() + NodVehicleProduction(Utils.Random(AutocreateSquads)) + end) + end) + + Trigger.AfterDelay(DateTime.Seconds(150), AutoCreateTeam) + Trigger.AfterDelay(DateTime.Minutes(5), HeliHunt) + + NodInfantryProduction() + + Camera.Position = UnitsRally.CenterPosition + ObeliskFlare = Actor.Create('flare', true, { Owner = player, Location = Flare.Location }) + Reinforce(CommandoReinforcements) +end + +Tick = function() + if DateTime.GameTime > DateTime.Seconds(5) and player.HasNoRequiredUnits() then + player.MarkFailedObjective(destroyBiotechCenterObjective) + end +end + +Reinforce = function(units) + Media.PlaySpeechNotification(player, "Reinforce") + ReinforceWithLandingCraft(units, lstStart.Location, lstEnd.Location, UnitsRally.Location) +end + +ReinforceWithLandingCraft = function(units, transportStart, transportUnload, rallypoint) + local transport = Actor.Create("oldlst", true, { Owner = player, Facing = 0, Location = transportStart }) + local subcell = 0 + Utils.Do(units, function(a) + transport.LoadPassenger(Actor.Create(a, false, { Owner = transport.Owner, Facing = transport.Facing, Location = transportUnload, SubCell = subcell })) + subcell = subcell + 1 + end) + + transport.ScriptedMove(transportUnload) + + transport.CallFunc(function() + Utils.Do(units, function() + local a = transport.UnloadPassenger() + a.IsInWorld = true + a.MoveIntoWorld(transport.Location - CVec.New(0, 1)) + + if rallypoint ~= nil then + a.Move(rallypoint) + end + end) + end) + + transport.Wait(5) + transport.ScriptedMove(transportStart) + transport.Destroy() +end + +HuntTriggerFunction = function() + local list = enemy.GetGroundAttackers() + Utils.Do(list, function(unit) + IdleHunt(unit) + end) +end + +IdleHunt = function(unit) + if not unit.IsDead then + Trigger.OnIdle(unit, function() + unit.AttackMove(UnitsRally.Location, 50) + unit.Hunt() + end) + end +end + +NodInfantryProduction = function() + if HandOfNod.IsDead or HandOfNod.Owner == player then + return + end + HandOfNod.Build(inf1, SquadHunt) + Trigger.AfterDelay(DateTime.Seconds(15), NodInfantryProduction) +end + +NodVehicleProduction = function(Squad) + if Airfield.IsDead or not Airfield.Owner == enemy then + return + end + Airfield.Build(Squad, SquadHunt) +end + +AIRepairBuildings = function(ai) + Utils.Do(Map.NamedActors, function(actor) + if actor.Owner == ai and actor.HasProperty("StartBuildingRepairs") then + Trigger.OnDamaged(actor, function(building) + if building.Owner == ai and building.Health < 0.9 * building.MaxHealth then + building.StartBuildingRepairs() + end + end) + end + end) +end + +HeliHunt = function() + local helicopters = enemy.GetActorsByType("heli") + SquadHunt(helicopters) +end + +SquadHunt = function(actors) + Utils.Do(actors, function(actor) + Trigger.OnIdle(actor, function() + actor.AttackMove(UnitsRally.Location, 50) + actor.Hunt() + end) + end) +end + +AIRebuildHarvesters = function(ai) + if AIHarvesterCount == NIL or AIHarvesterCount == 0 then + AIHarvesterCount = #ai.GetActorsByType("harv") + IsBuildingHarvester = false + end + + local CurrentHarvesterCount = #ai.GetActorsByType("harv") + + if CurrentHarvesterCount < AIHarvesterCount and Airfield.Owner == enemy and not IsBuildingHarvester and not Airfield.IsDead then + IsBuildingHarvester = true + Airfield.Build(harvester, function() + IsBuildingHarvester = false + end) + end + Trigger.AfterDelay(DateTime.Seconds(5), function() AIRebuildHarvesters(ai) end) +end + +AutoCreateTeam = function() + NodVehicleProduction(Utils.Random(AutocreateSquads)) + Trigger.AfterDelay(DateTime.Seconds(150), AutoCreateTeam) +end diff --git a/mods/cnc/maps/cnc64gdi01/map.bin b/mods/cnc/maps/cnc64gdi01/map.bin new file mode 100644 index 0000000000..dc30c08728 Binary files /dev/null and b/mods/cnc/maps/cnc64gdi01/map.bin differ diff --git a/mods/cnc/maps/cnc64gdi01/map.png b/mods/cnc/maps/cnc64gdi01/map.png new file mode 100644 index 0000000000..9a66d34bca Binary files /dev/null and b/mods/cnc/maps/cnc64gdi01/map.png differ diff --git a/mods/cnc/maps/cnc64gdi01/map.yaml b/mods/cnc/maps/cnc64gdi01/map.yaml new file mode 100644 index 0000000000..48274fc449 --- /dev/null +++ b/mods/cnc/maps/cnc64gdi01/map.yaml @@ -0,0 +1,823 @@ +MapFormat: 7 + +RequiresMod: cnc + +Title: C&C64 Special Ops - GDI 1 + +Description: Nod is experimenting on civilians with Tiberium. Use the commando to take out the SAM sites surrounding the dropoff area. With the SAMs gone you will then get an airstrike. Take out the Obelisk and an MCV will be delivered to help you to locate and destroy the biochem facility. + +Author: Westwood Studios + +Tileset: TEMPERAT + +MapSize: 64,64 + +Bounds: 2,9,48,53 + +Visibility: MissionSelector + +Type: Campaign + +Videos: + GameStart: obel.vqa + GameWon: orcabomb.vqa + GameLost: cutout.vqa + +Options: + Crates: False + Creeps: False + Fog: True + Shroud: True + AllyBuildRadius: False + FragileAlliances: False + StartingCash: 10000 + ConfigurableStartingUnits: False + ShortGame: False + +Players: + PlayerReference@Nod: + Name: Nod + Faction: nod + ColorRamp: 3,255,127 + Allies: Nod + Enemies: GDI + PlayerReference@GDI: + Name: GDI + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: gdi + LockColor: True + ColorRamp: 31,222,183 + LockSpawn: True + LockTeam: True + Allies: GDI + Enemies: Nod + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: gdi + +Actors: + Actor0: cycl + Location: 16,54 + Owner: Nod + Actor1: cycl + Location: 15,54 + Owner: Nod + Actor2: cycl + Location: 16,53 + Owner: Nod + Actor3: cycl + Location: 14,53 + Owner: Nod + Actor4: cycl + Location: 16,52 + Owner: Nod + Actor5: cycl + Location: 15,52 + Owner: Nod + Actor6: cycl + Location: 14,52 + Owner: Nod + Actor7: cycl + Location: 49,49 + Owner: Nod + Actor8: cycl + Location: 48,49 + Owner: Nod + Actor9: cycl + Location: 47,49 + Owner: Nod + Actor10: cycl + Location: 46,49 + Owner: Nod + Actor11: cycl + Location: 45,49 + Owner: Nod + Actor12: cycl + Location: 42,49 + Owner: Nod + Actor13: cycl + Location: 41,49 + Owner: Nod + Actor14: cycl + Location: 40,49 + Owner: Nod + Actor15: cycl + Location: 39,49 + Owner: Nod + Actor16: cycl + Location: 49,48 + Owner: Nod + Actor17: cycl + Location: 39,48 + Owner: Nod + Actor18: cycl + Location: 49,47 + Owner: Nod + Actor19: cycl + Location: 39,47 + Owner: Nod + Actor20: cycl + Location: 49,46 + Owner: Nod + Actor21: cycl + Location: 39,46 + Owner: Nod + Actor22: cycl + Location: 49,45 + Owner: Nod + Actor23: cycl + Location: 39,45 + Owner: Nod + Actor24: cycl + Location: 49,44 + Owner: Nod + Actor25: cycl + Location: 39,44 + Owner: Nod + Actor26: cycl + Location: 49,43 + Owner: Nod + Actor27: cycl + Location: 39,43 + Owner: Nod + Actor28: cycl + Location: 49,42 + Owner: Nod + Actor29: cycl + Location: 39,42 + Owner: Nod + Actor30: cycl + Location: 49,41 + Owner: Nod + Actor31: cycl + Location: 48,41 + Owner: Nod + Actor32: cycl + Location: 47,41 + Owner: Nod + Actor33: cycl + Location: 46,41 + Owner: Nod + Actor34: cycl + Location: 41,41 + Owner: Nod + Actor35: cycl + Location: 40,41 + Owner: Nod + Actor36: cycl + Location: 39,41 + Owner: Nod + Actor37: cycl + Location: 42,16 + Owner: Nod + Actor38: cycl + Location: 41,16 + Owner: Nod + Actor39: cycl + Location: 40,16 + Owner: Nod + Actor40: cycl + Location: 39,16 + Owner: Nod + Actor41: cycl + Location: 38,16 + Owner: Nod + Actor42: cycl + Location: 37,16 + Owner: Nod + Actor43: cycl + Location: 36,16 + Owner: Nod + Actor44: cycl + Location: 35,16 + Owner: Nod + Actor45: cycl + Location: 34,16 + Owner: Nod + Actor46: cycl + Location: 33,16 + Owner: Nod + Actor47: cycl + Location: 42,15 + Owner: Nod + Actor48: cycl + Location: 39,15 + Owner: Nod + Actor49: cycl + Location: 36,15 + Owner: Nod + Actor50: cycl + Location: 33,15 + Owner: Nod + Actor51: cycl + Location: 42,14 + Owner: Nod + Actor52: cycl + Location: 39,14 + Owner: Nod + Actor53: cycl + Location: 36,14 + Owner: Nod + Actor54: cycl + Location: 33,14 + Owner: Nod + Actor55: cycl + Location: 42,13 + Owner: Nod + Actor56: cycl + Location: 41,13 + Owner: Nod + Actor57: cycl + Location: 40,13 + Owner: Nod + Actor58: cycl + Location: 39,13 + Owner: Nod + Actor59: cycl + Location: 38,13 + Owner: Nod + Actor60: cycl + Location: 37,13 + Owner: Nod + Actor61: cycl + Location: 36,13 + Owner: Nod + Actor62: cycl + Location: 35,13 + Owner: Nod + Actor63: cycl + Location: 34,13 + Owner: Nod + Actor64: cycl + Location: 33,13 + Owner: Nod + Actor65: t08 + Location: 11,35 + Owner: Neutral + Actor66: t11 + Location: 18,31 + Owner: Neutral + Actor67: tc03 + Location: 17,33 + Owner: Neutral + Actor68: tc01 + Location: 44,33 + Owner: Neutral + Actor69: tc01 + Location: 46,37 + Owner: Neutral + Actor70: tc05 + Location: 23,37 + Owner: Neutral + Actor71: tc04 + Location: 31,36 + Owner: Neutral + Actor72: tc02 + Location: 32,35 + Owner: Neutral + Actor73: t12 + Location: 34,36 + Owner: Neutral + Actor74: tc04 + Location: 41,28 + Owner: Neutral + Actor75: tc03 + Location: 40,27 + Owner: Neutral + Actor76: tc02 + Location: 38,27 + Owner: Neutral + Actor77: split3 + Location: 31,27 + Owner: Neutral + Actor78: tc01 + Location: 29,27 + Owner: Neutral + Actor79: t17 + Location: 44,9 + Owner: Neutral + Actor80: tc01 + Location: 46,9 + Owner: Neutral + Actor81: tc05 + Location: 47,11 + Owner: Neutral + Actor82: tc02 + Location: 48,9 + Owner: Neutral + Actor83: tc01 + Location: 35,44 + Owner: Neutral + Actor84: tc05 + Location: 36,42 + Owner: Neutral + Actor85: tc01 + Location: 40,47 + Owner: Neutral + Actor86: t11 + Location: 36,50 + Owner: Neutral + Actor87: tc03 + Location: 25,9 + Owner: Neutral + Actor88: tc02 + Location: 31,14 + Owner: Neutral + Actor89: t03 + Location: 21,9 + Owner: Neutral + Actor90: split2 + Location: 19,59 + Owner: Neutral + Actor91: split3 + Location: 22,58 + Owner: Neutral + Actor92: split3 + Location: 42,56 + Owner: Neutral + Actor93: tc05 + Location: 44,59 + Owner: Neutral + Actor94: tc03 + Location: 42,60 + Owner: Neutral + Actor95: tc04 + Location: 33,50 + Owner: Neutral + Actor96: t08 + Location: 26,61 + Owner: Neutral + Actor97: t06 + Location: 25,60 + Owner: Neutral + Actor98: t07 + Location: 21,56 + Owner: Neutral + Actor99: t08 + Location: 19,58 + Owner: Neutral + Actor100: tc05 + Location: 6,47 + Owner: Neutral + Actor101: tc02 + Location: 14,58 + Owner: Neutral + Actor102: t15 + Location: 2,42 + Owner: Neutral + Actor103: t14 + Location: 11,44 + Owner: Neutral + Actor104: t12 + Location: 10,41 + Owner: Neutral + Actor105: t11 + Location: 19,39 + Owner: Neutral + Actor106: t03 + Location: 20,42 + Owner: Neutral + Actor107: t01 + Location: 27,10 + Owner: Neutral + Actor108: tc05 + Location: 30,28 + Owner: Neutral + Actor109: tc03 + Location: 26,28 + Owner: Neutral + Actor110: t08 + Location: 37,22 + Owner: Neutral + Actor111: t12 + Location: 30,22 + Owner: Neutral + Actor112: tc02 + Location: 27,19 + Owner: Neutral + Actor113: tc02 + Location: 46,20 + Owner: Neutral + Actor114: tc03 + Location: 42,18 + Owner: Neutral + Actor115: tc03 + Location: 2,21 + Owner: Neutral + Actor116: tc01 + Location: 2,24 + Owner: Neutral + Actor117: tc01 + Location: 5,36 + Owner: Neutral + Actor118: tc02 + Location: 11,33 + Owner: Neutral + Actor119: tc05 + Location: 9,22 + Owner: Neutral + Actor120: t11 + Location: 2,14 + Owner: Neutral + Actor121: t12 + Location: 4,14 + Owner: Neutral + Actor122: split3 + Location: 7,28 + Owner: Neutral + Actor123: split3 + Location: 7,32 + Owner: Neutral + Actor124: split3 + Location: 3,33 + Owner: Neutral + Actor125: split3 + Location: 22,41 + Owner: Neutral + AttackTrigger1: proc + Location: 46,42 + Owner: Nod + Actor127: sam + Location: 37,23 + Owner: Nod + Actor128: sam + Location: 32,23 + Owner: Nod + Actor129: gun + Location: 19,16 + Owner: Nod + Facing: 96 + Actor130: gun + Location: 14,18 + Owner: Nod + Facing: 96 + Actor131: nuk2 + Location: 39,21 + Owner: Nod + AttackTrigger2: nuke + Location: 42,42 + Owner: Nod + AttackTrigger3: nuke + Location: 40,42 + Owner: Nod + Actor134: sam + Location: 34,43 + Owner: Nod + Actor135: sam + Location: 35,41 + Owner: Nod + Actor136: sam + Location: 20,33 + Owner: Nod + Actor137: sam + Location: 28,29 + Owner: Nod + Actor138: sam + Location: 18,30 + Owner: Nod + Actor139: sam + Location: 27,32 + Owner: Nod + Powerplant1: nuk2 + Location: 18,48 + Owner: Nod + Powerplant2: nuk2 + Location: 20,49 + Owner: Nod + Actor142: obli + Location: 20,30 + Owner: Nod + AttackTrigger4: obli + Location: 24,29 + Owner: Nod + NodHQ: hq + Location: 47,46 + Owner: Nod + Actor145: gun + Location: 45,50 + Owner: Nod + Facing: 128 + Actor146: gun + Location: 42,50 + Owner: Nod + Facing: 128 + Actor147: fact + Location: 34,22 + Owner: Nod + Actor148: proc + Location: 6,12 + Owner: Nod + Actor149: silo + Location: 8,11 + Owner: Nod + Actor150: silo + Location: 8,9 + Owner: Nod + Actor151: hpad + Location: 22,10 + Owner: Nod + Actor152: hpad + Location: 29,10 + Owner: Nod + Actor153: sam + Location: 30,13 + Owner: Nod + Actor154: sam + Location: 20,9 + Owner: Nod + Actor155: sam + Location: 30,9 + Owner: Nod + Actor156: sam + Location: 20,13 + Owner: Nod + Airfield: afld + Location: 14,12 + Owner: Nod + Biolab: bio + Location: 25,11 + Owner: Nod + SAM01: sam + Location: 2,44 + Owner: Nod + SAM02: sam + Location: 18,42 + Owner: Nod + Obelisk01: obli + Location: 15,52 + Owner: Nod + HandOfNod: hand + Location: 42,44 + Owner: Nod + Actor163: obli + Location: 16,16 + Owner: Nod + Actor164: nuk2 + Location: 4,9 + Owner: Nod + Actor165: nuk2 + Location: 6,9 + Owner: Nod + Actor166: nuk2 + Location: 2,9 + Owner: Nod + Actor167: nuk2 + Location: 2,12 + Owner: Nod + Actor168: nuk2 + Location: 4,12 + Owner: Nod + Actor169: sam + Location: 2,16 + Owner: Nod + Actor170: sam + Location: 4,16 + Owner: Nod + Actor171: ltnk + Location: 16,19 + Owner: Nod + Facing: 96 + Actor172: ltnk + Location: 19,18 + Owner: Nod + Facing: 96 + Actor173: arty + Location: 41,22 + Owner: Nod + Facing: 128 + Actor174: arty + Location: 38,22 + Owner: Nod + Facing: 128 + Actor175: arty + Location: 33,22 + Owner: Nod + Facing: 128 + Actor176: stnk + Location: 30,19 + Owner: Nod + Actor177: stnk + Location: 32,17 + Owner: Nod + Actor178: stnk + Location: 24,12 + Owner: Nod + Facing: 128 + Actor179: stnk + Location: 27,12 + Owner: Nod + Facing: 128 + Actor180: ftnk + Location: 6,16 + Owner: Nod + Facing: 96 + Actor181: e4 + Location: 23,32 + Owner: Nod + Facing: 128 + SubCell: 0 + Actor182: e4 + Location: 22,31 + Owner: Nod + Facing: 128 + SubCell: 1 + Actor183: e4 + Location: 23,31 + Owner: Nod + Facing: 128 + SubCell: 2 + Actor184: e4 + Location: 36,50 + Owner: Nod + Facing: 96 + SubCell: 4 + Actor185: c6 + Location: 41,15 + Owner: Neutral + SubCell: 1 + Actor186: c5 + Location: 41,14 + Owner: Neutral + SubCell: 0 + Actor187: c4 + Location: 34,14 + Owner: Neutral + SubCell: 2 + Actor188: c3 + Location: 40,14 + Owner: Neutral + SubCell: 0 + Actor189: c3 + Location: 35,15 + Owner: Neutral + SubCell: 0 + Actor190: c2 + Location: 34,15 + Owner: Neutral + SubCell: 1 + Actor191: c1 + Location: 35,14 + Owner: Neutral + SubCell: 4 + Actor192: e4 + Location: 20,42 + Owner: Nod + Facing: 192 + SubCell: 4 + Actor193: e4 + Location: 3,45 + Owner: Nod + Facing: 128 + SubCell: 4 + Actor194: e4 + Location: 2,45 + Owner: Nod + Facing: 128 + SubCell: 4 + Actor195: e1 + Location: 18,40 + Owner: Nod + Facing: 192 + SubCell: 3 + Actor196: e1 + Location: 16,43 + Owner: Nod + Facing: 128 + SubCell: 4 + Flare: waypoint + Location: 17,51 + Owner: Neutral + UnitsRally: waypoint + Owner: GDI + Location: 7,56 + lstEnd: waypoint + Owner: GDI + Location: 7,58 + lstStart: waypoint + Owner: GDI + Location: 7,61 + Apache1: heli + Owner: Nod + Location: 21,11 + Facing: 92 + Apache2: heli + Owner: Nod + Location: 28,11 + Facing: 92 + +Smudges: + +Rules: + World: + -SpawnMPUnits: + -MPStartLocations: + -CrateSpawner: + LuaScript: + Scripts: cnc64gdi01.lua + ObjectivesPanel: + PanelName: MISSION_OBJECTIVES + MusicPlaylist: + StartingMusic: aoi + Player: + -ConquestVictoryConditions: + MissionObjectives: + EarlyGameOver: true + ^Vehicle: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Tank: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Helicopter: + 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 + ^Wall: + Tooltip: + ShowOwnerRow: false + ^Husk: + Tooltip: + GenericVisibility: Enemy, Ally, Neutral + GenericStancePrefix: false + ShowOwnerRow: false + EYE: + IonCannonPower: + Prerequisites: ~disabled + FLARE: + RevealsShroud: + Range: 5c0 + STNK: + Buildable: + Prerequisites: ~techlevel.high + TRAN: + Buildable: + Prerequisites: ~disabled + RMBO: + Buildable: + Prerequisites: ~disabled + OLDLST: + Inherits: LST + -WithRoof: + -Selectable: + RejectsOrders: + airstrike.proxy: + AlwaysVisible: + AirstrikePower: + Icon: airstrike + StartFullyCharged: True + ChargeTime: 120 + SquadSize: 3 + QuantizedFacings: 8 + Description: Air Strike + LongDesc: Deploy an aerial napalm strike.\nBurns buildings and infantry along a line. + EndChargeSound: airredy1.aud + SelectTargetSound: select1.aud + InsufficientPowerSound: nopower1.aud + IncomingSound: enemya.aud + UnitType: a10 + DisplayBeacon: True + BeaconPoster: airstrike + DisplayRadarPing: True + CameraActor: camera + +Sequences: + oldlst: + idle: lst + Start: 0 + Facings: 1 + ZOffset: -1024 + icon: lsticnh.tem + AddExtension: False + +VoxelSequences: + +Weapons: + +Voices: + +Notifications: + +Translations: diff --git a/mods/cnc/missions.yaml b/mods/cnc/missions.yaml index f71cb252d4..f39340dded 100644 --- a/mods/cnc/missions.yaml +++ b/mods/cnc/missions.yaml @@ -23,3 +23,6 @@ Nod Campaign: Funpark Campaign: ./mods/cnc/maps/funpark01 + +Bonus Missions: + ./mods/cnc/maps/cnc64gdi01