diff --git a/mods/cnc/maps/gdi05c/gdi05c.lua b/mods/cnc/maps/gdi05c/gdi05c.lua new file mode 100644 index 0000000000..d4312229ad --- /dev/null +++ b/mods/cnc/maps/gdi05c/gdi05c.lua @@ -0,0 +1,158 @@ +--[[ + Copyright 2007-2021 The OpenRA Developers (see AUTHORS) + This file is part of OpenRA, which is free software. It is made + available to you under the terms of the GNU General Public License + as published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. For more + information, see COPYING. +]] + +Difficulty = Map.LobbyOption("difficulty") + +RepairThreshold = { easy = 0.3, normal = 0.6, hard = 0.9 } + +ActorRemovals = +{ + easy = { Actor197, Actor198, Actor199, Actor162, Actor178, Actor181, Actor171, Actor163 }, + normal = { Actor197, Actor162 }, + hard = { }, +} + +AllToHuntTrigger = { Silo1, Proc1, Silo2, Radar1, Afld1, Hand1, Nuke1, Nuke2, Nuke3, Fact1 } + +AtkRoute1 = { waypoint0, waypoint1, waypoint2, waypoint3, waypoint4 } +AtkRoute2 = { waypoint0, waypoint8, waypoint4 } +AtkRoute3 = { waypoint0, waypoint1, waypoint2, waypoint5, waypoint6, waypoint7 } +AtkRoute4 = { waypoint0, waypoint8, waypoint9, waypoint10, waypoint11 } + +AutoCreateTeams = +{ + { types = { e1 = 2, e3 = 2 }, route = AtkRoute1 }, + { types = { e1 = 1, e3 = 2 }, route = AtkRoute2 }, + { types = { ltnk = 1 } , route = AtkRoute2 }, + { types = { bggy = 1 } , route = AtkRoute2 }, + { types = { bggy = 1 } , route = AtkRoute1 }, + { types = { ltnk = 1 } , route = AtkRoute3 }, + { types = { bggy = 1 } , route = AtkRoute4 } +} + +Atk1Delay = { easy = DateTime.Seconds(60), normal = DateTime.Seconds(50), hard = DateTime.Seconds(40) } +Atk2Delay = { easy = DateTime.Seconds(90), normal = DateTime.Seconds(70), hard = DateTime.Seconds(50) } +Atk3Delay = { easy = DateTime.Seconds(120), normal = DateTime.Seconds(90), hard = DateTime.Seconds(70) } +Atk4Delay = { easy = DateTime.Seconds(150), normal = DateTime.Seconds(110), hard = DateTime.Seconds(90) } +AutoAtkStartDelay = { easy = DateTime.Seconds(150), normal = DateTime.Seconds(120), hard = DateTime.Seconds(90) } +AutoAtkMinDelay = { easy = DateTime.Minutes(1), normal = DateTime.Seconds(45), hard = DateTime.Seconds(30) } +AutoAtkMaxDelay = { easy = DateTime.Minutes(2), normal = DateTime.Seconds(90), hard = DateTime.Minutes(1) } + +GDIBase = { GdiNuke1, GdiProc1, GdiWeap1, GdiNuke2, GdiNuke3, GdiPyle1, GdiSilo1, GdiRadar1 } +GDIUnits = { "e2", "e2", "e2", "e2", "e1", "e1", "e1", "e1", "mtnk", "mtnk", "jeep", "apc", "apc" } +GDIHarvester = { "harv" } +NodSams = { Sam1, Sam2, Sam3 } + +AutoCreateTeam = function() + local team = Utils.Random(AutoCreateTeams) + for type, count in pairs(team.types) do + MoveAndHunt(Utils.Take(count, Nod.GetActorsByType(type)), team.route) + end + + Trigger.AfterDelay(Utils.RandomInteger(AutoAtkMinDelay[Difficulty], AutoAtkMaxDelay[Difficulty]), AutoCreateTeam) +end + +DiscoverGDIBase = function(actor, discoverer) + if BaseDiscovered or not discoverer == GDI then + return + end + + --Spawn harv only when base is discovered, otherwise it will waste tiberium and might get killed before the player arrives + if not GdiProc1.IsDead then + Reinforcements.Reinforce(GDI, GDIHarvester, { GdiProc1.Location + CVec.New(0, 2), GdiProc1.Location + CVec.New(-1, 3) }, 1) + end + + Utils.Do(GDIBase, function(actor) + actor.Owner = GDI + end) + + BaseDiscovered = true + + EliminateNod = GDI.AddObjective("Eliminate all Nod forces in the area.") + GDI.MarkCompletedObjective(FindBase) +end + +Atk1TriggerFunction = function() + MoveAndHunt(Utils.Take(2, Nod.GetActorsByType('e1')), AtkRoute1) + MoveAndHunt(Utils.Take(2, Nod.GetActorsByType('e3')), AtkRoute1) +end + +Atk2TriggerFunction = function() + MoveAndHunt(Utils.Take(4, Nod.GetActorsByType('e3')), AtkRoute2) +end + +Atk3TriggerFunction = function() + MoveAndHunt(Utils.Take(1, Nod.GetActorsByType('bggy')), AtkRoute2) +end + +Atk4TriggerFunction = function() + MoveAndHunt(Utils.Take(2, Nod.GetActorsByType('e1')), AtkRoute1) + MoveAndHunt(Utils.Take(1, Nod.GetActorsByType('ltnk')), AtkRoute1) +end + +InsertGDIUnits = function() + Media.PlaySpeechNotification(GDI, "Reinforce") + Reinforcements.Reinforce(GDI, GDIUnits, { UnitsEntry.Location, UnitsRally.Location }, 15) +end + +WorldLoaded = function() + GDI = Player.GetPlayer("GDI") + AbandonedBase = Player.GetPlayer("AbandonedBase") + Nod = Player.GetPlayer("Nod") + + InitObjectives(GDI) + + RepairNamedActors(Nod, RepairThreshold[Difficulty]) + + FindBase = GDI.AddObjective("Find the GDI base.") + DestroySAMs = GDI.AddObjective("Destroy all SAM sites to receive air support.", "Secondary", false) + NodObjective = Nod.AddObjective("Destroy all GDI troops.") + + Utils.Do(ActorRemovals[Difficulty], function(unit) + unit.Destroy() + end) + + Trigger.AfterDelay(Atk1Delay[Difficulty], Atk1TriggerFunction) + Trigger.AfterDelay(Atk2Delay[Difficulty], Atk2TriggerFunction) + Trigger.AfterDelay(Atk3Delay[Difficulty], Atk3TriggerFunction) + Trigger.AfterDelay(Atk4Delay[Difficulty], Atk4TriggerFunction) + + Trigger.AfterDelay(AutoAtkStartDelay[Difficulty], AutoCreateTeam) + + Trigger.OnAllKilledOrCaptured(AllToHuntTrigger, function() + Utils.Do(Nod.GetGroundAttackers(), IdleHunt) + end) + + Trigger.AfterDelay(DateTime.Seconds(40), function() + local delay = function() return DateTime.Seconds(30) end + local toBuild = function() return { "e1" } end + ProduceUnits(Nod, Hand1, delay, toBuild) + end) + + Trigger.OnPlayerDiscovered(AbandonedBase, DiscoverGDIBase) + + Trigger.OnAllKilled(NodSams, function() + GDI.MarkCompletedObjective(DestroySAMs) + Actor.Create("airstrike.proxy", true, { Owner = GDI }) + end) + + Camera.Position = UnitsRally.CenterPosition + + InsertGDIUnits() +end + +Tick = function() + if DateTime.GameTime > 2 and GDI.HasNoRequiredUnits() then + Nod.MarkCompletedObjective(NodObjective) + end + + if BaseDiscovered and Nod.HasNoRequiredUnits() then + GDI.MarkCompletedObjective(EliminateNod) + end +end diff --git a/mods/cnc/maps/gdi05c/map.bin b/mods/cnc/maps/gdi05c/map.bin new file mode 100644 index 0000000000..f09cac84a9 Binary files /dev/null and b/mods/cnc/maps/gdi05c/map.bin differ diff --git a/mods/cnc/maps/gdi05c/map.png b/mods/cnc/maps/gdi05c/map.png new file mode 100644 index 0000000000..d705684a58 Binary files /dev/null and b/mods/cnc/maps/gdi05c/map.png differ diff --git a/mods/cnc/maps/gdi05c/map.yaml b/mods/cnc/maps/gdi05c/map.yaml new file mode 100644 index 0000000000..8b378108b0 --- /dev/null +++ b/mods/cnc/maps/gdi05c/map.yaml @@ -0,0 +1,768 @@ +MapFormat: 11 + +RequiresMod: cnc + +Title: 05c: Repair the GDI base + +Author: Westwood Studios + +Tileset: TEMPERAT + +MapSize: 64,64 + +Bounds: 9,1,54,45 + +Visibility: MissionSelector + +Categories: Campaign + +LockPreview: True + +Players: + PlayerReference@Nod: + Name: Nod + Faction: nod + Color: FE1100 + Enemies: GDI, AbandonedBase + Bot: campaign + PlayerReference@GDI: + Name: GDI + Playable: True + AllowBots: False + Required: True + LockFaction: True + Faction: gdi + LockColor: True + Color: F5D378 + LockSpawn: True + LockTeam: True + Enemies: Nod + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: gdi + Color: F5D378 + PlayerReference@AbandonedBase: + Name: AbandonedBase + NonCombatant: True + Faction: gdi + Color: F5D378 + Enemies: Nod + Bot: campaign + +Actors: + Actor0: sbag + Location: 62,34 + Owner: Nod + Actor1: sbag + Location: 61,34 + Owner: Nod + Actor2: sbag + Location: 60,34 + Owner: Nod + Actor3: sbag + Location: 59,34 + Owner: Nod + Actor4: sbag + Location: 58,34 + Owner: Nod + Actor5: sbag + Location: 57,34 + Owner: Nod + Actor6: sbag + Location: 56,34 + Owner: Nod + Actor7: sbag + Location: 55,34 + Owner: Nod + Actor8: sbag + Location: 54,34 + Owner: Nod + Actor9: sbag + Location: 53,34 + Owner: Nod + Actor10: sbag + Location: 52,34 + Owner: Nod + Actor11: sbag + Location: 51,34 + Owner: Nod + Actor12: sbag + Location: 50,34 + Owner: Nod + Actor13: sbag + Location: 49,34 + Owner: Nod + Actor14: sbag + Location: 62,33 + Owner: Nod + Actor15: sbag + Location: 49,33 + Owner: Nod + Actor16: sbag + Location: 62,32 + Owner: Nod + Actor17: sbag + Location: 49,32 + Owner: Nod + Actor18: sbag + Location: 62,31 + Owner: Nod + Actor19: sbag + Location: 49,31 + Owner: Nod + Actor20: sbag + Location: 62,30 + Owner: Nod + Actor21: sbag + Location: 50,30 + Owner: Nod + Actor22: sbag + Location: 49,30 + Owner: Nod + Actor23: sbag + Location: 62,29 + Owner: Nod + Actor24: sbag + Location: 50,29 + Owner: Nod + Actor25: sbag + Location: 49,29 + Owner: Nod + Actor26: sbag + Location: 62,28 + Owner: Nod + Actor27: sbag + Location: 62,27 + Owner: Nod + Actor28: sbag + Location: 62,26 + Owner: Nod + Actor29: sbag + Location: 62,25 + Owner: Nod + Actor30: sbag + Location: 50,25 + Owner: Nod + Actor31: sbag + Location: 49,25 + Owner: Nod + Actor32: sbag + Location: 62,24 + Owner: Nod + Actor33: sbag + Location: 50,24 + Owner: Nod + Actor34: sbag + Location: 49,24 + Owner: Nod + Actor35: sbag + Location: 62,23 + Owner: Nod + Actor36: sbag + Location: 49,23 + Owner: Nod + Actor37: sbag + Location: 62,22 + Owner: Nod + Actor38: sbag + Location: 49,22 + Owner: Nod + Actor39: sbag + Location: 62,21 + Owner: Nod + Actor40: sbag + Location: 49,21 + Owner: Nod + Actor41: sbag + Location: 62,20 + Owner: Nod + Actor42: sbag + Location: 49,20 + Owner: Nod + Actor43: sbag + Location: 62,19 + Owner: Nod + Actor44: sbag + Location: 61,19 + Owner: Nod + Actor45: sbag + Location: 60,19 + Owner: Nod + Actor46: sbag + Location: 59,19 + Owner: Nod + Actor47: sbag + Location: 58,19 + Owner: Nod + Actor48: sbag + Location: 57,19 + Owner: Nod + Actor49: sbag + Location: 56,19 + Owner: Nod + Actor50: sbag + Location: 55,19 + Owner: Nod + Actor51: sbag + Location: 54,19 + Owner: Nod + Actor52: sbag + Location: 53,19 + Owner: Nod + Actor53: sbag + Location: 52,19 + Owner: Nod + Actor54: sbag + Location: 51,19 + Owner: Nod + Actor55: sbag + Location: 50,19 + Owner: Nod + Actor56: sbag + Location: 49,19 + Owner: Nod + Actor57: sbag + Location: 37,10 + Owner: GDI + Actor58: sbag + Location: 36,10 + Owner: GDI + Actor59: sbag + Location: 35,10 + Owner: GDI + Actor60: sbag + Location: 34,10 + Owner: GDI + Actor61: sbag + Location: 33,10 + Owner: GDI + Actor62: sbag + Location: 32,10 + Owner: GDI + Actor63: sbag + Location: 31,10 + Owner: GDI + Actor64: sbag + Location: 30,10 + Owner: GDI + Actor65: sbag + Location: 29,10 + Owner: GDI + Actor66: sbag + Location: 28,10 + Owner: GDI + Actor67: sbag + Location: 27,10 + Owner: GDI + Actor68: sbag + Location: 23,10 + Owner: GDI + Actor69: sbag + Location: 22,10 + Owner: GDI + Actor70: sbag + Location: 37,9 + Owner: GDI + Actor71: sbag + Location: 28,9 + Owner: GDI + Actor72: sbag + Location: 27,9 + Owner: GDI + Actor73: sbag + Location: 23,9 + Owner: GDI + Actor74: sbag + Location: 22,9 + Owner: GDI + Actor75: sbag + Location: 21,9 + Owner: GDI + Actor76: sbag + Location: 37,8 + Owner: GDI + Actor77: sbag + Location: 21,8 + Owner: GDI + Actor78: sbag + Location: 20,8 + Owner: GDI + Actor79: sbag + Location: 19,8 + Owner: GDI + Actor80: sbag + Location: 37,7 + Owner: GDI + Actor81: sbag + Location: 36,7 + Owner: GDI + Actor82: sbag + Location: 19,7 + Owner: GDI + Actor83: sbag + Location: 37,6 + Owner: GDI + Actor84: sbag + Location: 36,6 + Owner: GDI + Actor85: sbag + Location: 19,6 + Owner: GDI + Actor86: sbag + Location: 19,5 + Owner: GDI + Actor87: sbag + Location: 37,4 + Owner: GDI + Actor88: sbag + Location: 36,4 + Owner: GDI + Actor89: sbag + Location: 24,4 + Owner: GDI + Actor90: sbag + Location: 23,4 + Owner: GDI + Actor91: sbag + Location: 22,4 + Owner: GDI + Actor92: sbag + Location: 21,4 + Owner: GDI + Actor93: sbag + Location: 20,4 + Owner: GDI + Actor94: sbag + Location: 19,4 + Owner: GDI + Actor95: sbag + Location: 37,3 + Owner: GDI + Actor96: sbag + Location: 36,3 + Owner: GDI + Actor97: sbag + Location: 27,3 + Owner: GDI + Actor98: sbag + Location: 26,3 + Owner: GDI + Actor99: sbag + Location: 25,3 + Owner: GDI + Actor100: sbag + Location: 24,3 + Owner: GDI + Actor101: sbag + Location: 37,2 + Owner: GDI + Actor102: sbag + Location: 27,2 + Owner: GDI + Actor103: sbag + Location: 37,1 + Owner: GDI + Actor104: sbag + Location: 36,1 + Owner: GDI + Actor105: sbag + Location: 35,1 + Owner: GDI + Actor106: sbag + Location: 34,1 + Owner: GDI + Actor107: sbag + Location: 31,1 + Owner: GDI + Actor108: sbag + Location: 30,1 + Owner: GDI + Actor109: sbag + Location: 27,1 + Owner: GDI + Actor110: t01 + Location: 12,26 + Owner: Neutral + Actor111: t01 + Location: 12,5 + Owner: Neutral + Actor112: tc01 + Location: 49,17 + Owner: Neutral + Actor113: t11 + Location: 35,24 + Owner: Neutral + Actor114: tc04 + Location: 18,32 + Owner: Neutral + Actor115: tc01 + Location: 20,29 + Owner: Neutral + Actor116: tc04 + Location: 12,6 + Owner: Neutral + Actor117: tc04 + Location: 15,16 + Owner: Neutral + Actor118: tc03 + Location: 20,18 + Owner: Neutral + Actor119: tc02 + Location: 15,22 + Owner: Neutral + Actor120: tc01 + Location: 19,36 + Owner: Neutral + Actor121: tc04 + Location: 21,37 + Owner: Neutral + Actor122: tc05 + Location: 28,35 + Owner: Neutral + Actor123: tc01 + Location: 25,44 + Owner: Neutral + Actor124: tc01 + Location: 51,38 + Owner: Neutral + Actor125: tc04 + Location: 43,33 + Owner: Neutral + Actor126: tc05 + Location: 60,35 + Owner: Neutral + Actor127: tc04 + Location: 49,34 + Owner: Neutral + Actor128: tc05 + Location: 58,40 + Owner: Neutral + Actor129: tc03 + Location: 57,44 + Owner: Neutral + Actor130: t11 + Location: 19,28 + Owner: Neutral + Actor131: t12 + Location: 11,26 + Owner: Neutral + Actor132: t08 + Location: 19,26 + Owner: Neutral + Actor133: t08 + Location: 17,32 + Owner: Neutral + Actor134: t01 + Location: 40,36 + Owner: Neutral + Actor135: t02 + Location: 40,33 + Owner: Neutral + Actor136: tc04 + Location: 28,10 + Owner: Neutral + Actor137: tc02 + Location: 37,10 + Owner: Neutral + Actor138: tc01 + Location: 34,12 + Owner: Neutral + Hand1: hand + Location: 57,23 + Owner: Nod + Nuke3: nuke + Location: 60,31 + Owner: Nod + Nuke2: nuke + Location: 60,28 + Owner: Nod + Silo2: silo + Location: 58,30 + Owner: Nod + Silo1: silo + Location: 58,32 + Owner: Nod + Radar1: hq + Location: 60,23 + Owner: Nod + Afld1: afld + Location: 53,29 + Owner: Nod + Proc1: proc + Location: 54,21 + Owner: Nod + Nuke1: nuke + Location: 57,20 + Owner: Nod + Fact1: fact + Location: 59,20 + Owner: Nod + GdiNuke1: nuke + Location: 34,7 + Owner: AbandonedBase + Health: 10 + GdiNuke2: nuke + Location: 20,5 + Owner: AbandonedBase + Health: 39 + GdiSilo1: silo + Location: 22,5 + Owner: AbandonedBase + Health: 38 + GdiProc1: proc + Location: 25,4 + Owner: AbandonedBase + Health: 45 + FreeActor: False + GdiRadar1: hq + Location: 28,2 + Owner: AbandonedBase + Health: 10 + GdiWeap1: weap + Location: 30,3 + Owner: AbandonedBase + Health: 25 + GdiPyle1: pyle + Location: 32,7 + Owner: AbandonedBase + Health: 39 + GdiNuke3: nuke + Location: 33,2 + Owner: AbandonedBase + Health: 41 + Actor157: gun + Location: 48,30 + Owner: Nod + Facing: 256 + Actor158: gun + Location: 48,24 + Owner: Nod + Facing: 256 + Sam1: sam + Location: 51,33 + Owner: Nod + Sam2: sam + Location: 51,20 + Owner: Nod + Sam3: sam + Location: 60,27 + Owner: Nod + Actor162: ltnk + Location: 61,7 + Owner: Nod + Facing: 256 + Actor163: ltnk + Location: 33,32 + Owner: Nod + Facing: 384 + Actor164: ltnk + Location: 39,43 + Owner: Nod + Facing: 768 + Actor165: bggy + Location: 56,20 + Owner: Nod + Facing: 384 + Actor166: bggy + Location: 57,32 + Owner: Nod + Facing: 256 + Actor167: bggy + Location: 48,21 + Owner: Nod + Facing: 256 + Actor168: bggy + Location: 48,33 + Owner: Nod + Facing: 256 + Actor169: ltnk + Location: 48,20 + Owner: Nod + Facing: 256 + Actor170: ltnk + Location: 52,27 + Owner: Nod + Facing: 256 + Actor171: ltnk + Location: 32,27 + Owner: Nod + Facing: 256 + Actor177: harv + Location: 30,27 + Owner: Nod + Facing: 256 + Actor178: bggy + Location: 27,22 + Owner: Nod + Actor179: bggy + Location: 50,23 + Owner: Nod + Stance: Defend + Actor180: bggy + Location: 51,23 + Owner: Nod + Stance: Defend + Actor181: bggy + Location: 13,41 + Owner: Nod + Actor182: ltnk + Location: 51,22 + Owner: Nod + Stance: Defend + Actor183: e1 + Location: 61,26 + Owner: Nod + Facing: 384 + SubCell: 4 + Actor184: e1 + Location: 57,33 + Owner: Nod + Facing: 128 + SubCell: 3 + Actor185: e1 + Location: 61,26 + Owner: Nod + Facing: 896 + SubCell: 2 + Actor186: e1 + Location: 61,26 + Owner: Nod + Facing: 128 + SubCell: 1 + Actor187: e1 + Location: 61,26 + Owner: Nod + Facing: 640 + SubCell: 3 + Actor188: e1 + Location: 54,20 + Owner: Nod + Facing: 384 + SubCell: 0 + Actor189: e1 + Location: 54,20 + Owner: Nod + Facing: 640 + SubCell: 2 + Actor190: e3 + Location: 50,20 + Owner: Nod + SubCell: 3 + Actor191: e3 + Location: 55,20 + Owner: Nod + Facing: 512 + SubCell: 1 + Actor192: e3 + Location: 59,29 + Owner: Nod + Facing: 128 + SubCell: 1 + Actor193: e3 + Location: 47,33 + Owner: Nod + Facing: 256 + SubCell: 1 + Stance: Defend + Actor194: e3 + Location: 47,33 + Owner: Nod + Facing: 256 + SubCell: 3 + Stance: Defend + Actor195: e3 + Location: 47,34 + Owner: Nod + Facing: 256 + SubCell: 1 + Stance: Defend + Actor196: e3 + Location: 20,28 + Owner: Nod + Facing: 512 + SubCell: 0 + Stance: ReturnFire + Actor197: e3 + Location: 31,39 + Owner: Nod + Facing: 640 + SubCell: 0 + Actor198: e3 + Location: 28,40 + Owner: Nod + Facing: 640 + SubCell: 0 + Actor199: e3 + Location: 17,16 + Owner: Nod + SubCell: 3 + Actor200: e3 + Location: 15,22 + Owner: Nod + SubCell: 1 + Stance: ReturnFire + Actor201: e3 + Location: 36,24 + Owner: Nod + SubCell: 3 + Actor210: e3 + Location: 28,35 + Owner: Nod + Facing: 512 + SubCell: 4 + Stance: ReturnFire + DefaultChinookTarget: waypoint + Location: 32,36 + Owner: Neutral + DefaultCameraPosition: waypoint + Location: 48,38 + Owner: Neutral + waypoint18: waypoint + Location: 46,34 + Owner: Neutral + waypoint11: waypoint + Location: 38,3 + Owner: Neutral + waypoint10: waypoint + Location: 57,1 + Owner: Neutral + waypoint9: waypoint + Location: 41,14 + Owner: Neutral + waypoint8: waypoint + Location: 42,19 + Owner: Neutral + waypoint7: waypoint + Location: 18,4 + Owner: Neutral + waypoint6: waypoint + Location: 10,2 + Owner: Neutral + waypoint5: waypoint + Location: 10,16 + Owner: Neutral + waypoint4: waypoint + Location: 32,16 + Owner: Neutral + waypoint3: waypoint + Location: 19,16 + Owner: Neutral + waypoint2: waypoint + Location: 19,21 + Owner: Neutral + waypoint1: waypoint + Location: 32,26 + Owner: Neutral + waypoint0: waypoint + Location: 46,26 + Owner: Neutral + UnitsEntry: waypoint + Location: 54,45 + Owner: Neutral + UnitsRally: waypoint + Location: 51,42 + Owner: Neutral + +Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml diff --git a/mods/cnc/maps/gdi05c/rules.yaml b/mods/cnc/maps/gdi05c/rules.yaml new file mode 100644 index 0000000000..da91b38f0f --- /dev/null +++ b/mods/cnc/maps/gdi05c/rules.yaml @@ -0,0 +1,173 @@ +World: + LuaScript: + Scripts: campaign-global.lua, gdi05c.lua + MissionData: + Briefing: A GDI field base is under attack. They have fended off one attack but will not survive another.\n\nMove to the base, repair the structures and then launch a strike force to destroy the Nod base in the area.\n\nDestroy all Nod units and structures. + BackgroundVideo: podium.vqa + BriefingVideo: gdi5.vqa + StartVideo: seige.vqa + WinVideo: nodlose.vqa + LossVideo: gdilose.vqa + MapOptions: + ShortGameCheckboxLocked: True + ShortGameCheckboxEnabled: False + SmudgeLayer@SCORCH: + InitialSmudges: + 46,24: sc5,0 + 45,21: sc3,0 + 26,11: sc3,0 + 25,10: sc4,0 + 25,9: sc3,0 + 24,9: sc3,0 + 23,8: sc3,0 + 24,7: sc2,0 + 32,6: sc6,0 + 31,6: sc6,0 + 29,6: sc1,0 + 35,5: sc1,0 + 20,5: sc5,0 + 30,2: sc2,0 + 33,1: sc1,0 + SmudgeLayer@CRATER: + InitialSmudges: + 26,9: cr1,0 + 22,8: cr1,0 + 29,7: cr1,0 + 23,7: cr1,0 + 35,2: cr1,0 + ScriptLobbyDropdown@difficulty: + ID: difficulty + Label: Difficulty + Values: + easy: Easy + normal: Normal + hard: Hard + Default: normal + Locked: false + +Player: + EnemyWatcher: + PlayerResources: + DefaultCash: 2000 + +^Palettes: + IndexedPlayerPalette: + PlayerIndex: + AbandonedBase: 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191 + IndexedPlayerPalette@units: + PlayerIndex: + AbandonedBase: 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191 + +^Building: + AnnounceOnSeen: + +SBAG: + Buildable: + Prerequisites: ~disabled + +GTWR: + Buildable: + Prerequisites: ~disabled + +ATWR: + Buildable: + Prerequisites: ~disabled + +WEAP: + Buildable: + Prerequisites: ~disabled + +CYCL: + Buildable: + Prerequisites: ~disabled + +NUK2: + Buildable: + Prerequisites: ~disabled + +FIX: + Buildable: + Prerequisites: ~disabled + +HPAD: + Buildable: + Prerequisites: ~disabled + +BRIK: + Buildable: + Prerequisites: ~disabled + +HQ: + -AirstrikePower: + +EYE: + Buildable: + Prerequisites: ~disabled + +GUN: + Buildable: + Prerequisites: ~disabled + +OBLI: + Buildable: + Prerequisites: ~disabled + +TMPL: + Buildable: + Prerequisites: ~disabled + +E2: + Buildable: + Prerequisites: ~pyle + +E3: + Buildable: + Prerequisites: ~disabled + +E5: + Buildable: + Prerequisites: ~disabled + +HARV: + Buildable: + Prerequisites: ~disabled + +MTNK: + Buildable: + Prerequisites: ~disabled + +HTNK: + Buildable: + Prerequisites: ~disabled + +RMBO: + Buildable: + Prerequisites: ~disabled + +MSAM: + Buildable: + Prerequisites: ~disabled + +ARTY: + Buildable: + Prerequisites: ~disabled + +MLRS: + Buildable: + Prerequisites: ~disabled + +STNK: + Buildable: + Prerequisites: ~disabled + +MCV: + Buildable: + Prerequisites: ~disabled + +FTNK: + Buildable: + Prerequisites: ~disabled + +airstrike.proxy: + AirstrikePower: + SquadSize: 1 diff --git a/mods/cnc/missions.yaml b/mods/cnc/missions.yaml index 5e30851612..928782d4ca 100644 --- a/mods/cnc/missions.yaml +++ b/mods/cnc/missions.yaml @@ -7,6 +7,7 @@ GDI Campaign: gdi04c gdi05a gdi05b + gdi05c gdi06 gdi07 gdi08a