diff --git a/OpenRA.sln b/OpenRA.sln index bc518274b1..25b080b2bd 100644 --- a/OpenRA.sln +++ b/OpenRA.sln @@ -33,6 +33,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tiberian Dawn Lua scripts", mods\cnc\maps\gdi05a\gdi05a.lua = mods\cnc\maps\gdi05a\gdi05a.lua mods\cnc\maps\gdi05b\gdi05b.lua = mods\cnc\maps\gdi05b\gdi05b.lua mods\cnc\maps\gdi06\gdi06.lua = mods\cnc\maps\gdi06\gdi06.lua + mods\cnc\maps\gdi07\gdi07.lua = mods\cnc\maps\gdi07\gdi07.lua mods\cnc\maps\nod01\nod01.lua = mods\cnc\maps\nod01\nod01.lua mods\cnc\maps\nod02a\nod02a.lua = mods\cnc\maps\nod02a\nod02a.lua mods\cnc\maps\nod02b\nod02b.lua = mods\cnc\maps\nod02b\nod02b.lua diff --git a/mods/cnc/maps/gdi07/gdi07.lua b/mods/cnc/maps/gdi07/gdi07.lua new file mode 100644 index 0000000000..fe9e9cd51d --- /dev/null +++ b/mods/cnc/maps/gdi07/gdi07.lua @@ -0,0 +1,205 @@ +InfantryReinforcements = { "e1", "e1", "e2" } +JeepReinforcements = { "jeep" } +TankReinforcements = { "mtnk" } +BaseReinforcements = { "mcv" } +GDIBaseBuildings = { "pyle", "fact", "nuke", "hq", "weap" } + +SamSites = { sam1, sam2, sam3, sam4 } +NodBase = { handofnod, nodpower1, nodpower2, nodpower3, nodairfield, nodrefinery, nodconyard } +HiddenNodUnits = { sleeper1, sleeper2, sleeper3, sleeper4 } + +ReinforceWithLandingCraft = function(units, transportStart, transportUnload, rallypoint) + local transport = Actor.Create("oldlst", true, { Owner = GDI, 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) + Media.PlaySpeechNotification(player, "Reinforce") + + 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 + +CheckForBase = function(player) + local buildings = 0 + + Utils.Do(GDIBaseBuildings, function(name) + if #GDI.GetActorsByType(name) > 0 then + buildings = buildings + 1 + end + end) + + return buildings == #GDIBaseBuildings +end + +SendReinforcements = function() + Trigger.AfterDelay(DateTime.Seconds(20), function() + ReinforceWithLandingCraft(BaseReinforcements, spawnpoint3.Location - CVec.New(0, -4), spawnpoint3.Location - CVec.New(0, -1), waypoint26.Location) + end) + + Trigger.AfterDelay(DateTime.Seconds(10), function() + ReinforceWithLandingCraft(TankReinforcements, spawnpoint2.Location - CVec.New(0, -4), spawnpoint2.Location - CVec.New(0, -1), waypoint10.Location) + + ReinforceWithLandingCraft(TankReinforcements, spawnpoint3.Location - CVec.New(0, -4), spawnpoint3.Location - CVec.New(0, -1), waypoint10.Location) + end) + + Trigger.AfterDelay(DateTime.Seconds(5), function() + ReinforceWithLandingCraft(JeepReinforcements, spawnpoint1.Location - CVec.New(0, -4), spawnpoint1.Location - CVec.New(0, -1), waypoint10.Location) + end) + + ReinforceWithLandingCraft(InfantryReinforcements, spawnpoint2.Location - CVec.New(0, -4), spawnpoint2.Location - CVec.New(0, -1), waypoint10.Location) + + ReinforceWithLandingCraft(InfantryReinforcements, spawnpoint3.Location - CVec.New(0, -4), spawnpoint3.Location - CVec.New(0, -1), waypoint10.Location) +end + +AttackPlayer = function() + + Trigger.AfterDelay(DateTime.Seconds(40), function() + for type, count in pairs({ ['e3'] = 3, ['e4'] = 2 }) do + atk1Actors = Utils.Take(count, Nod.GetActorsByType(type)) + Utils.Do(atk1Actors, function(unit) + unit.Move(waypoint6.Location) + unit.Move(waypoint7.Location) + unit.Move(waypoint8.Location) + unit.Move(waypoint9.Location) + unit.Move(waypoint10.Location) + unit.AttackMove(waypoint11.Location) + end) + end + end) + + Trigger.AfterDelay(DateTime.Seconds(40), function() + for type, count in pairs({ ['e1'] = 3, ['e3'] = 2 }) do + atk2Actors = Utils.Take(count, Nod.GetActorsByType(type)) + Utils.Do(atk2Actors, function(unit) + unit.Move(waypoint11.Location) + unit.Move(waypoint12.Location) + unit.Move(waypoint15.Location) + unit.Move(waypoint16.Location) + unit.Hunt() + end) + end + end) + + Trigger.AfterDelay(DateTime.Seconds(80), function() + for type, count in pairs({ ['e3'] = 3, ['e4'] = 2 }) do + atk3Actors = Utils.Take(count, Nod.GetActorsByType(type)) + Utils.Do(atk3Actors, function(unit) + unit.Move(waypoint6.Location) + unit.Move(waypoint7.Location) + unit.Move(waypoint8.Location) + unit.Move(waypoint9.Location) + unit.Move(waypoint10.Location) + unit.AttackMove(waypoint11.Location) + end) + end + end) + + Trigger.AfterDelay(DateTime.Seconds(80), function() + for type, count in pairs({ ['e1'] = 3, ['e3'] = 2 }) do + atk4Actors = Utils.Take(count, Nod.GetActorsByType(type)) + Utils.Do(atk4Actors, function(unit) + unit.Move(waypoint11.Location) + unit.Move(waypoint12.Location) + unit.Move(waypoint15.Location) + unit.Move(waypoint16.Location) + unit.AttackMove(waypoint11.Location) + end) + end + end) + + Trigger.AfterDelay(DateTime.Seconds(80), function() + atk5Actors = Utils.Take(2, Nod.GetActorsByType('bggy')) + Utils.Do(atk5Actors, function(unit) + unit.Move(waypoint11.Location) + unit.Move(waypoint12.Location) + unit.Move(waypoint15.Location) + unit.Move(waypoint16.Location) + unit.Hunt() + end) + end) + + Utils.Do(NodBase, function(actor) + Trigger.OnRemovedFromWorld(actor, function() + Utils.Do(Nod.GetGroundAttackers(Nod), function(unit) + unit.Hunt() + end) + end) + end) + + Utils.Do(HiddenNodUnits, function(actor) + actor.Hunt() + end) + +end + +WorldLoaded = function() + GDI = Player.GetPlayer("GDI") + Nod = Player.GetPlayer("Nod") + + Camera.Position = spawnpoint2.CenterPosition + + Trigger.OnObjectiveAdded(GDI, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") + end) + + Trigger.OnObjectiveCompleted(GDI, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed") + end) + + Trigger.OnObjectiveFailed(GDI, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + + Trigger.OnPlayerWon(GDI, function() + Media.PlaySpeechNotification(Nod, "Win") + end) + + Trigger.OnPlayerLost(GDI, function() + Media.PlaySpeechNotification(Nod, "Lose") + end) + + gdiMainObjective = GDI.AddPrimaryObjective("Destroy remaining Nod structures and units.") + gdiBaseObjective = GDI.AddSecondaryObjective("Build up a base.") + nodObjective = Nod.AddPrimaryObjective("Kill all enemies!") + + SendReinforcements() + + gdiAirSupportObjective = GDI.AddSecondaryObjective("Destroy the SAM sites to receive air support.") + Trigger.OnAllKilled(SamSites, function() + GDI.MarkCompletedObjective(gdiAirSupportObjective) + Actor.Create("airstrike.proxy", true, { Owner = GDI }) + end) + + AttackPlayer() +end + +Tick = function() + if DateTime.GameTime > DateTime.Seconds(5) then + if GDI.HasNoRequiredUnits() then + Nod.MarkCompletedObjective(nodObjective) + end + if Nod.HasNoRequiredUnits() then + GDI.MarkCompletedObjective(gdiMainObjective) + end + if not GDI.IsObjectiveCompleted(gdiBaseObjective) and DateTime.GameTime % DateTime.Seconds(1) == 0 and CheckForBase() then + GDI.MarkCompletedObjective(gdiBaseObjective) + end + end +end diff --git a/mods/cnc/maps/gdi07/map.bin b/mods/cnc/maps/gdi07/map.bin new file mode 100644 index 0000000000..553ff8d8f7 Binary files /dev/null and b/mods/cnc/maps/gdi07/map.bin differ diff --git a/mods/cnc/maps/gdi07/map.png b/mods/cnc/maps/gdi07/map.png new file mode 100644 index 0000000000..153cea1914 Binary files /dev/null and b/mods/cnc/maps/gdi07/map.png differ diff --git a/mods/cnc/maps/gdi07/map.yaml b/mods/cnc/maps/gdi07/map.yaml new file mode 100644 index 0000000000..d75d0866e9 --- /dev/null +++ b/mods/cnc/maps/gdi07/map.yaml @@ -0,0 +1,1031 @@ +MapFormat: 11 + +RequiresMod: cnc + +Title: Finish The Nod Base + +Author: Westwood Studios + +Tileset: TEMPERAT + +MapSize: 64,64 + +Bounds: 4,1,58,50 + +Visibility: MissionSelector + +Categories: Mission + +LockPreview: True + +Players: + PlayerReference@Nod: + Name: Nod + Faction: nod + Color: FE1100 + Allies: Nod + Enemies: GDI + PlayerReference@GDI: + Name: GDI + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: gdi + LockColor: True + Color: F5D378 + LockSpawn: True + LockTeam: True + Allies: GDI + Enemies: Nod + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: gdi + +Actors: + Actor0: wood + Location: 35,37 + Owner: Neutral + Actor1: wood + Location: 34,37 + Owner: Neutral + Actor2: wood + Location: 33,37 + Owner: Neutral + Actor3: wood + Location: 32,37 + Owner: Neutral + Actor4: wood + Location: 31,37 + Owner: Neutral + Actor5: wood + Location: 35,36 + Owner: Neutral + Actor6: v16 + Location: 34,36 + Owner: Neutral + Actor7: v15 + Location: 33,36 + Owner: Neutral + Actor8: v14 + Location: 32,36 + Owner: Neutral + Actor9: wood + Location: 31,36 + Owner: Neutral + Actor10: wood + Location: 35,35 + Owner: Neutral + Actor11: v17 + Location: 34,35 + Owner: Neutral + Actor12: v18 + Location: 33,35 + Owner: Neutral + Actor13: v12 + Location: 32,35 + Owner: Neutral + Actor14: wood + Location: 31,35 + Owner: Neutral + Actor15: wood + Location: 35,34 + Owner: Neutral + Actor16: wood + Location: 32,34 + Owner: Neutral + Actor17: wood + Location: 31,34 + Owner: Neutral + Actor18: sbag + Location: 58,21 + Owner: Nod + Actor19: sbag + Location: 54,21 + Owner: Nod + Actor20: sbag + Location: 52,21 + Owner: Nod + Actor21: sbag + Location: 47,21 + Owner: Nod + Actor22: sbag + Location: 45,21 + Owner: Nod + Actor23: sbag + Location: 41,21 + Owner: Nod + Actor24: sbag + Location: 58,20 + Owner: Nod + Actor25: sbag + Location: 57,20 + Owner: Nod + Actor26: sbag + Location: 56,20 + Owner: Nod + Actor27: sbag + Location: 55,20 + Owner: Nod + Actor28: sbag + Location: 54,20 + Owner: Nod + Actor29: sbag + Location: 52,20 + Owner: Nod + Actor30: sbag + Location: 47,20 + Owner: Nod + Actor31: sbag + Location: 45,20 + Owner: Nod + Actor32: sbag + Location: 44,20 + Owner: Nod + Actor33: sbag + Location: 43,20 + Owner: Nod + Actor34: sbag + Location: 42,20 + Owner: Nod + Actor35: sbag + Location: 41,20 + Owner: Nod + Actor36: brik + Location: 58,19 + Owner: Neutral + Actor37: brik + Location: 57,19 + Owner: Neutral + Actor38: brik + Location: 56,19 + Owner: Neutral + Actor39: brik + Location: 55,19 + Owner: Neutral + Actor40: brik + Location: 54,19 + Owner: Neutral + Actor41: brik + Location: 53,19 + Owner: Neutral + Actor42: brik + Location: 52,19 + Owner: Neutral + Actor43: brik + Location: 47,19 + Owner: Neutral + Actor44: brik + Location: 46,19 + Owner: Neutral + Actor45: brik + Location: 45,19 + Owner: Neutral + Actor46: brik + Location: 44,19 + Owner: Neutral + Actor47: brik + Location: 43,19 + Owner: Neutral + Actor48: brik + Location: 42,19 + Owner: Neutral + Actor49: brik + Location: 41,19 + Owner: Neutral + Actor50: brik + Location: 40,19 + Owner: Neutral + Actor51: brik + Location: 58,18 + Owner: Neutral + Actor52: brik + Location: 57,18 + Owner: Neutral + Actor53: brik + Location: 53,18 + Owner: Neutral + Actor54: brik + Location: 52,18 + Owner: Neutral + Actor55: brik + Location: 47,18 + Owner: Neutral + Actor56: brik + Location: 46,18 + Owner: Neutral + Actor57: brik + Location: 41,18 + Owner: Neutral + Actor58: brik + Location: 40,18 + Owner: Neutral + Actor59: brik + Location: 58,17 + Owner: Neutral + Actor60: brik + Location: 40,17 + Owner: Neutral + Actor61: brik + Location: 58,16 + Owner: Neutral + Actor62: brik + Location: 40,16 + Owner: Neutral + Actor63: brik + Location: 58,15 + Owner: Neutral + Actor64: brik + Location: 40,15 + Owner: Neutral + Actor65: brik + Location: 58,14 + Owner: Neutral + Actor66: brik + Location: 41,14 + Owner: Neutral + Actor67: brik + Location: 40,14 + Owner: Neutral + Actor68: brik + Location: 58,13 + Owner: Neutral + Actor69: brik + Location: 41,13 + Owner: Neutral + Actor70: brik + Location: 40,13 + Owner: Neutral + Actor71: brik + Location: 58,12 + Owner: Neutral + Actor72: brik + Location: 58,11 + Owner: Neutral + Actor73: brik + Location: 57,11 + Owner: Neutral + Actor74: brik + Location: 58,10 + Owner: Neutral + Actor75: brik + Location: 57,10 + Owner: Neutral + Actor76: brik + Location: 41,10 + Owner: Neutral + Actor77: brik + Location: 40,10 + Owner: Neutral + Actor78: brik + Location: 41,9 + Owner: Neutral + Actor79: brik + Location: 40,9 + Owner: Neutral + Actor80: cycl + Location: 58,8 + Owner: Neutral + Actor81: cycl + Location: 54,8 + Owner: Neutral + Actor82: cycl + Location: 48,8 + Owner: Neutral + Actor83: cycl + Location: 47,8 + Owner: Neutral + Actor84: cycl + Location: 44,8 + Owner: Neutral + Actor85: cycl + Location: 43,8 + Owner: Neutral + Actor86: brik + Location: 40,8 + Owner: Neutral + Actor87: brik + Location: 61,7 + Owner: Neutral + Actor88: brik + Location: 60,7 + Owner: Neutral + Actor89: cycl + Location: 59,7 + Owner: Neutral + Actor90: cycl + Location: 58,7 + Owner: Neutral + Actor91: cycl + Location: 54,7 + Owner: Neutral + Actor92: cycl + Location: 53,7 + Owner: Neutral + Actor93: cycl + Location: 52,7 + Owner: Neutral + Actor94: cycl + Location: 51,7 + Owner: Neutral + Actor95: cycl + Location: 50,7 + Owner: Neutral + Actor96: cycl + Location: 49,7 + Owner: Neutral + Actor97: cycl + Location: 48,7 + Owner: Neutral + Actor98: cycl + Location: 43,7 + Owner: Neutral + Actor99: brik + Location: 40,7 + Owner: Neutral + Actor100: brik + Location: 61,6 + Owner: Neutral + Actor101: brik + Location: 60,6 + Owner: Neutral + Actor102: cycl + Location: 48,6 + Owner: Neutral + Actor103: cycl + Location: 43,6 + Owner: Neutral + Actor104: brik + Location: 40,6 + Owner: Neutral + Actor105: brik + Location: 61,5 + Owner: Neutral + Actor106: cycl + Location: 48,5 + Owner: Neutral + Actor107: cycl + Location: 47,5 + Owner: Neutral + Actor108: cycl + Location: 46,5 + Owner: Neutral + Actor109: cycl + Location: 45,5 + Owner: Neutral + Actor110: cycl + Location: 44,5 + Owner: Neutral + Actor111: cycl + Location: 43,5 + Owner: Neutral + Actor112: brik + Location: 40,5 + Owner: Neutral + Actor113: brik + Location: 61,4 + Owner: Neutral + Actor114: brik + Location: 40,4 + Owner: Neutral + Actor115: brik + Location: 61,3 + Owner: Neutral + Actor116: brik + Location: 60,3 + Owner: Neutral + Actor117: brik + Location: 41,3 + Owner: Neutral + Actor118: brik + Location: 40,3 + Owner: Neutral + Actor119: brik + Location: 61,2 + Owner: Neutral + Actor120: brik + Location: 60,2 + Owner: Neutral + Actor121: brik + Location: 59,2 + Owner: Neutral + Actor122: brik + Location: 58,2 + Owner: Neutral + Actor123: brik + Location: 57,2 + Owner: Neutral + Actor124: brik + Location: 56,2 + Owner: Neutral + Actor125: brik + Location: 55,2 + Owner: Neutral + Actor126: brik + Location: 54,2 + Owner: Neutral + Actor127: brik + Location: 53,2 + Owner: Neutral + Actor128: brik + Location: 52,2 + Owner: Neutral + Actor129: brik + Location: 51,2 + Owner: Neutral + Actor130: brik + Location: 50,2 + Owner: Neutral + Actor131: brik + Location: 49,2 + Owner: Neutral + Actor132: brik + Location: 48,2 + Owner: Neutral + Actor133: brik + Location: 47,2 + Owner: Neutral + Actor134: brik + Location: 46,2 + Owner: Neutral + Actor135: brik + Location: 45,2 + Owner: Neutral + Actor136: brik + Location: 44,2 + Owner: Neutral + Actor137: brik + Location: 43,2 + Owner: Neutral + Actor138: brik + Location: 42,2 + Owner: Neutral + Actor139: brik + Location: 41,2 + Owner: Neutral + Actor140: brik + Location: 40,2 + Owner: Neutral + Actor141: t01 + Location: 30,36 + Owner: Neutral + Actor142: tc01 + Location: 30,37 + Owner: Neutral + Actor143: t01 + Location: 35,26 + Owner: Neutral + Actor144: t01 + Location: 34,26 + Owner: Neutral + Actor145: t01 + Location: 41,23 + Owner: Neutral + Actor146: t01 + Location: 23,14 + Owner: Neutral + Actor147: t01 + Location: 21,12 + Owner: Neutral + Actor148: t02 + Location: 21,36 + Owner: Neutral + Actor149: t01 + Location: 22,34 + Owner: Neutral + Actor150: tc01 + Location: 57,35 + Owner: Neutral + Actor151: t01 + Location: 59,35 + Owner: Neutral + Actor152: t01 + Location: 51,35 + Owner: Neutral + Actor153: t02 + Location: 55,42 + Owner: Neutral + Actor154: t01 + Location: 51,43 + Owner: Neutral + Actor155: t01 + Location: 57,38 + Owner: Neutral + Actor156: tc01 + Location: 52,42 + Owner: Neutral + Actor157: t02 + Location: 38,40 + Owner: Neutral + Actor158: t02 + Location: 49,39 + Owner: Neutral + Actor159: t01 + Location: 48,38 + Owner: Neutral + Actor160: tc01 + Location: 42,44 + Owner: Neutral + Actor161: tc02 + Location: 43,40 + Owner: Neutral + Actor162: tc02 + Location: 49,49 + Owner: Neutral + Actor163: tc04 + Location: 55,47 + Owner: Neutral + Actor164: t01 + Location: 48,45 + Owner: Neutral + Actor165: t01 + Location: 41,47 + Owner: Neutral + Actor166: tc04 + Location: 38,44 + Owner: Neutral + Actor167: tc04 + Location: 57,42 + Owner: Neutral + Actor168: tc02 + Location: 54,40 + Owner: Neutral + Actor169: t03 + Location: 32,30 + Owner: Neutral + Actor170: t03 + Location: 34,37 + Owner: Neutral + Actor171: tc01 + Location: 36,36 + Owner: Neutral + Actor172: tc04 + Location: 25,33 + Owner: Neutral + Actor173: tc04 + Location: 22,37 + Owner: Neutral + Actor174: tc05 + Location: 22,33 + Owner: Neutral + Actor175: tc01 + Location: 25,38 + Owner: Neutral + Actor176: t07 + Location: 25,41 + Owner: Neutral + Actor177: t01 + Location: 38,36 + Owner: Neutral + Actor178: tc02 + Location: 44,36 + Owner: Neutral + Actor179: tc01 + Location: 42,36 + Owner: Neutral + Actor180: t07 + Location: 46,35 + Owner: Neutral + Actor181: t01 + Location: 59,20 + Owner: Neutral + Actor182: tc01 + Location: 59,18 + Owner: Neutral + Actor183: tc01 + Location: 40,33 + Owner: Neutral + Actor184: tc04 + Location: 50,31 + Owner: Neutral + Actor185: t01 + Location: 49,32 + Owner: Neutral + Actor186: tc04 + Location: 55,32 + Owner: Neutral + Actor187: tc02 + Location: 53,33 + Owner: Neutral + Actor188: tc01 + Location: 51,32 + Owner: Neutral + Actor189: tc01 + Location: 33,20 + Owner: Neutral + Actor190: tc04 + Location: 21,13 + Owner: Neutral + Actor191: tc04 + Location: 22,29 + Owner: Neutral + Actor192: tc04 + Location: 31,26 + Owner: Neutral + Actor193: tc01 + Location: 30,25 + Owner: Neutral + Actor194: tc01 + Location: 18,34 + Owner: Neutral + Actor195: tc01 + Location: 23,10 + Owner: Neutral + Actor196: tc01 + Location: 36,3 + Owner: Neutral + Actor197: t01 + Location: 58,32 + Owner: Neutral + Actor198: t02 + Location: 61,32 + Owner: Neutral + Actor199: t03 + Location: 48,32 + Owner: Neutral + Actor200: tc04 + Location: 6,26 + Owner: Neutral + Actor201: tc04 + Location: 4,6 + Owner: Neutral + Actor202: tc02 + Location: 9,9 + Owner: Neutral + Actor203: tc01 + Location: 5,18 + Owner: Neutral + Actor204: tc02 + Location: 16,21 + Owner: Neutral + Actor205: tc01 + Location: 12,28 + Owner: Neutral + Actor206: t01 + Location: 11,24 + Owner: Neutral + Actor207: t01 + Location: 6,19 + Owner: Neutral + Actor208: t02 + Location: 9,21 + Owner: Neutral + Actor209: t02 + Location: 12,11 + Owner: Neutral + Actor210: t01 + Location: 6,10 + Owner: Neutral + Actor211: t01 + Location: 30,2 + Owner: Neutral + Actor212: t01 + Location: 14,17 + Owner: Neutral + Actor213: t01 + Location: 18,26 + Owner: Neutral + Actor214: gun + Location: 41,33 + Owner: Nod + Facing: 192 + Actor215: gun + Location: 53,20 + Owner: Nod + Actor216: gun + Location: 37,3 + Owner: Nod + Actor217: gun + Location: 46,20 + Owner: Nod + handofnod: hand + Location: 44,12 + Owner: Nod + Actor219: silo + Location: 44,16 + Owner: Nod + Actor220: silo + Location: 42,16 + Owner: Nod + nodpower1: nuke + Location: 42,13 + Owner: Nod + Actor222: hq + Location: 50,4 + Owner: Nod + nodpower2: nuke + Location: 52,4 + Owner: Nod + nodpower3: nuke + Location: 54,4 + Owner: Nod + nodairfield: afld + Location: 56,4 + Owner: Nod + Actor226: silo + Location: 50,10 + Owner: Nod + Actor227: silo + Location: 52,10 + Owner: Nod + nodrefinery: proc + Location: 54,10 + Owner: Nod + FreeActor: false + Actor229: nuke + Location: 51,14 + Owner: Nod + Actor230: nuke + Location: 53,14 + Owner: Nod + nodconyard: fact + Location: 55,14 + Owner: Nod + Actor232: v03 + Location: 29,35 + Owner: Neutral + Health: 41 + Actor233: v01 + Location: 31,38 + Owner: Neutral + Health: 33 + Actor234: v05 + Location: 32,38 + Owner: Neutral + Health: 39 + Actor235: v04 + Location: 25,37 + Owner: Neutral + Health: 39 + Actor236: v06 + Location: 33,34 + Owner: Neutral + Health: 58 + Actor237: v05 + Location: 23,37 + Owner: Neutral + Health: 39 + Actor238: v08 + Location: 37,34 + Owner: Neutral + sam1: sam + Location: 48,31 + Owner: Nod + sam2: sam + Location: 22,13 + Owner: Nod + sam3: sam + Location: 44,18 + Owner: Nod + sam4: sam + Location: 54,18 + Owner: Nod + Actor243: gun + Location: 37,14 + Owner: Nod + Facing: 160 + Actor244: bggy + Location: 46,12 + Owner: Nod + Actor245: bggy + Location: 60,20 + Owner: Nod + Actor246: ltnk + Location: 60,8 + Owner: Nod + Actor247: ltnk + Location: 44,6 + Owner: Nod + Actor248: bggy + Location: 20,3 + Owner: Nod + Facing: 128 + Actor249: bggy + Location: 19,3 + Owner: Nod + Facing: 128 + Actor250: harv + Location: 49,13 + Owner: Nod + Facing: 128 + Actor251: ltnk + Location: 14,4 + Owner: Nod + Facing: 128 + Actor252: ltnk + Location: 44,7 + Owner: Nod + Actor253: ltnk + Location: 45,6 + Owner: Nod + Actor254: bggy + Location: 47,7 + Owner: Nod + Actor255: bggy + Location: 47,6 + Owner: Nod + Actor256: ltnk + Location: 6,16 + Owner: Nod + Facing: 96 + Actor257: bggy + Location: 23,27 + Owner: Nod + Facing: 192 + Actor258: e3 + Location: 39,6 + Owner: Nod + SubCell: 0 + Actor259: e3 + Location: 39,6 + Owner: Nod + SubCell: 2 + Actor260: c6 + Location: 29,32 + Owner: Neutral + Facing: 96 + SubCell: 3 + Actor261: c4 + Location: 34,32 + Owner: Neutral + Facing: 160 + SubCell: 2 + Actor262: c3 + Location: 29,37 + Owner: Neutral + Facing: 224 + SubCell: 3 + Actor263: c2 + Location: 27,36 + Owner: Neutral + Facing: 32 + SubCell: 1 + Actor264: e1 + Location: 48,20 + Owner: Nod + SubCell: 1 + Actor265: e1 + Location: 48,20 + Owner: Nod + SubCell: 2 + Actor266: e1 + Location: 51,20 + Owner: Nod + SubCell: 1 + Actor267: e1 + Location: 51,20 + Owner: Nod + SubCell: 2 + sleeper1: e4 + Location: 29,41 + Owner: Nod + SubCell: 4 + sleeper2: e4 + Location: 29,42 + Owner: Nod + SubCell: 2 + sleeper3: e4 + Location: 29,42 + Owner: Nod + SubCell: 1 + sleeper4: e4 + Location: 29,41 + Owner: Nod + SubCell: 3 + Actor272: e3 + Location: 8,26 + Owner: Nod + SubCell: 3 + Actor273: e3 + Location: 7,26 + Owner: Nod + SubCell: 3 + Actor274: e3 + Location: 16,21 + Owner: Nod + SubCell: 0 + Actor275: e3 + Location: 9,9 + Owner: Nod + SubCell: 0 + Actor276: e3 + Location: 4,6 + Owner: Nod + SubCell: 4 + Actor277: e4 + Location: 13,28 + Owner: Nod + Facing: 160 + SubCell: 3 + Actor278: e4 + Location: 6,18 + Owner: Nod + Facing: 96 + SubCell: 3 + Actor279: e4 + Location: 7,13 + Owner: Nod + Facing: 96 + SubCell: 1 + waypoint27: waypoint + Location: 32,32 + Owner: Neutral + waypoint26: waypoint + Location: 6,43 + Owner: Neutral + waypoint18: waypoint + Location: 47,4 + Owner: Neutral + waypoint17: waypoint + Location: 56,8 + Owner: Neutral + waypoint16: waypoint + Location: 9,19 + Owner: Neutral + waypoint15: waypoint + Location: 17,4 + Owner: Neutral + waypoint14: waypoint + Location: 37,18 + Owner: Neutral + waypoint13: waypoint + Location: 18,19 + Owner: Neutral + waypoint12: waypoint + Location: 22,8 + Owner: Neutral + waypoint11: waypoint + Location: 43,11 + Owner: Neutral + waypoint10: waypoint + Location: 20,45 + Owner: Neutral + waypoint9: waypoint + Location: 28,45 + Owner: Neutral + waypoint8: waypoint + Location: 28,36 + Owner: Neutral + Actor293: waypoint + Location: 37,30 + Owner: Neutral + waypoint7: waypoint + Location: 37,30 + Owner: Neutral + Actor295: waypoint + Location: 49,24 + Owner: Neutral + waypoint6: waypoint + Location: 49,24 + Owner: Neutral + Actor297: waypoint + Location: 55,22 + Owner: Neutral + waypoint5: waypoint + Location: 55,22 + Owner: Neutral + Actor299: waypoint + Location: 48,22 + Owner: Neutral + waypoint4: waypoint + Location: 48,22 + Owner: Neutral + Actor301: waypoint + Location: 51,22 + Owner: Neutral + waypoint3: waypoint + Location: 51,22 + Owner: Neutral + Actor303: waypoint + Location: 44,22 + Owner: Neutral + waypoint2: waypoint + Location: 44,22 + Owner: Neutral + Actor305: waypoint + Location: 39,13 + Owner: Neutral + waypoint1: waypoint + Location: 39,13 + Owner: Neutral + Actor307: waypoint + Location: 39,7 + Owner: Neutral + waypoint0: waypoint + Location: 39,7 + Owner: Neutral + spawnpoint1: waypoint + Owner: Neutral + Location: 9,46 + spawnpoint2: waypoint + Owner: Neutral + Location: 11,46 + spawnpoint3: waypoint + Owner: Neutral + Location: 14,46 + +Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml + +Sequences: sequences.yaml diff --git a/mods/cnc/maps/gdi07/rules.yaml b/mods/cnc/maps/gdi07/rules.yaml new file mode 100644 index 0000000000..a6d4f44153 --- /dev/null +++ b/mods/cnc/maps/gdi07/rules.yaml @@ -0,0 +1,146 @@ +World: + LuaScript: + Scripts: gdi07.lua + MissionData: + Briefing: Previous mission objective not complete.\nAirfield was to be targeted. \n\nNew objective: Build up a base and Destroy remaining Nod structures and units.\n\nReinforcements will be provided. + BriefingVideo: gdi7.vqa + StartVideo: turtkill.vqa + WinVideo: pintle.vqa + LossVideo: gameover.vqa + +SBAG: + Buildable: + Prerequisites: ~disabled + +ATWR: + Buildable: + Prerequisites: ~disabled + +CYCL: + Buildable: + Prerequisites: ~disabled + +NUK2: + Buildable: + Prerequisites: ~disabled + +FIX: + Buildable: + Prerequisites: ~disabled + +HPAD: + Buildable: + Prerequisites: ~disabled + +BRIK: + Buildable: + Prerequisites: ~disabled + +EYE: + Buildable: + Prerequisites: ~disabled + +GUN: + Buildable: + Prerequisites: ~disabled + +OBLI: + Buildable: + Prerequisites: ~disabled + +TMPL: + Buildable: + Prerequisites: ~disabled + +E3: + Buildable: + Prerequisites: ~disabled + +HTNK: + Buildable: + Prerequisites: ~disabled + +TRAN: + Buildable: + Prerequisites: ~disabled + +ORCA: + Buildable: + Prerequisites: ~disabled + +RMBO: + Buildable: + Prerequisites: ~disabled + +MSAM: + Buildable: + Prerequisites: ~disabled + +MCV: + Buildable: + Prerequisites: ~disabled + +BOAT: + Buildable: + Prerequisites: ~disabled + +LST: + Buildable: + Prerequisites: ~disabled + +FTNK: + Buildable: + Prerequisites: ~disabled + +STNK: + Buildable: + Prerequisites: ~disabled + +ARTY: + Buildable: + Prerequisites: ~disabled + +HELI: + Buildable: + Prerequisites: ~disabled + +E5: + Buildable: + Prerequisites: ~disabled + +MLRS: + Buildable: + Prerequisites: ~disabled + +OLDLST: + Inherits: LST + -WithRoof: + -Selectable: + RejectsOrders: + Cargo: + Types: disabled + +HQ: + Tooltip: + Description: Provides an overview of the battlefield.\n Requires power to operate. + -AirstrikePower: + +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 diff --git a/mods/cnc/maps/gdi07/sequences.yaml b/mods/cnc/maps/gdi07/sequences.yaml new file mode 100644 index 0000000000..3f043f3d34 --- /dev/null +++ b/mods/cnc/maps/gdi07/sequences.yaml @@ -0,0 +1,7 @@ +oldlst: + idle: lst + Start: 0 + Facings: 1 + ZOffset: -1024 + icon: lsticnh.tem + AddExtension: False diff --git a/mods/cnc/missions.yaml b/mods/cnc/missions.yaml index 28f70ced90..f76654083d 100644 --- a/mods/cnc/missions.yaml +++ b/mods/cnc/missions.yaml @@ -8,6 +8,7 @@ GDI Campaign: ./mods/cnc/maps/gdi05a ./mods/cnc/maps/gdi05b ./mods/cnc/maps/gdi06 + ./mods/cnc/maps/gdi07 Nod Campaign: ./mods/cnc/maps/nod01