From 3c2e9be2484dc61a68e510076069246098bb92d2 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 29 Dec 2019 02:21:58 +0100 Subject: [PATCH] Add gdi09ea --- mods/cnc/maps/gdi09/gdi09-AI.lua | 204 ++++++++ mods/cnc/maps/gdi09/gdi09.lua | 170 +++++++ mods/cnc/maps/gdi09/map.bin | Bin 0 -> 20497 bytes mods/cnc/maps/gdi09/map.png | Bin 0 -> 46087 bytes mods/cnc/maps/gdi09/map.yaml | 782 +++++++++++++++++++++++++++++++ mods/cnc/maps/gdi09/rules.yaml | 146 ++++++ mods/cnc/maps/gdi09/weapons.yaml | 13 + mods/cnc/missions.yaml | 1 + 8 files changed, 1316 insertions(+) create mode 100644 mods/cnc/maps/gdi09/gdi09-AI.lua create mode 100644 mods/cnc/maps/gdi09/gdi09.lua create mode 100644 mods/cnc/maps/gdi09/map.bin create mode 100644 mods/cnc/maps/gdi09/map.png create mode 100644 mods/cnc/maps/gdi09/map.yaml create mode 100644 mods/cnc/maps/gdi09/rules.yaml create mode 100644 mods/cnc/maps/gdi09/weapons.yaml diff --git a/mods/cnc/maps/gdi09/gdi09-AI.lua b/mods/cnc/maps/gdi09/gdi09-AI.lua new file mode 100644 index 0000000000..cd1a62c7f7 --- /dev/null +++ b/mods/cnc/maps/gdi09/gdi09-AI.lua @@ -0,0 +1,204 @@ +--[[ + Copyright 2007-2020 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. +]] + +AttackPaths = { { waypoint7 }, { waypoint8 } } +NodBase = { handofnod, nodairfield, nodrefinery, NodCYard, nodpower1, nodpower2, nodpower3, nodpower4, nodpower5, gun5, gun6, gun7, gun8, nodsilo1, nodsilo2, nodsilo3, nodsilo4, nodobelisk } + +PatrolProductionQueue = { } +InfantryAttackGroup = { } +InfantryGroupSize = 5 +InfantryProductionCooldown = DateTime.Minutes(3) +InfantryProductionTypes = { "e1", "e1", "e1", "e3", "e3", "e4" } +HarvesterProductionType = { "harv" } +VehicleAttackGroup = { } +VehicleGroupSize = 5 +VehicleProductionCooldown = DateTime.Minutes(3) +VehicleProductionTypes = { "bggy", "bggy", "bggy", "ltnk", "ltnk", "arty" } +StartingCash = 14000 + +BaseRefinery = { type = "proc", pos = CPos.New(12, 25) } +BaseNuke1 = { type = "nuke", pos = CPos.New(5, 24) } +BaseNuke2 = { type = "nuke", pos = CPos.New(3, 24) } +BaseNuke3 = { type = "nuke", pos = CPos.New(16, 30) } +BaseNuke4 = { type = "nuke", pos = CPos.New(14, 30) } +BaseNuke5 = { type = "nuke", pos = CPos.New(12, 30) } +InfantryProduction = { type = "hand", pos = CPos.New(15, 24) } +VehicleProduction = { type = "afld", pos = CPos.New(3, 27) } + +NodGuards = { Actor168, Actor169, Actor170, Actor171, Actor172, Actor181, Actor177, Actor188, Actor189, Actor190 } + +BaseBuildings = { BaseRefinery, BaseNuke1, BaseNuke2, BaseNuke3, BaseNuke4, InfantryProduction, VehicleProduction } + +BuildBuilding = function(building, cyard) + local buildingCost = Actor.Cost(building.type) + if CyardIsBuilding or Nod.Cash < buildingCost then + Trigger.AfterDelay(DateTime.Seconds(10), function() BuildBuilding(building, cyard) end) + return + end + + CyardIsBuilding = true + + Nod.Cash = Nod.Cash - buildingCost + Trigger.AfterDelay(Actor.BuildTime(building.type), function() + CyardIsBuilding = false + + if cyard.IsDead or cyard.Owner ~= Nod then + Nod.Cash = Nod.Cash + buildingCost + return + end + + local actor = Actor.Create(building.type, true, { Owner = Nod, Location = building.pos }) + + if actor.Type == 'hand' or actor.Type == 'pyle' then + Trigger.AfterDelay(DateTime.Seconds(10), function() ProduceInfantry(actor) end) + elseif actor.Type == 'afld' or actor.Type == 'weap' then + Trigger.AfterDelay(DateTime.Seconds(10), function() ProduceVehicle(actor) end) + end + + Trigger.OnKilled(actor, function() + BuildBuilding(building, cyard) + end) + + RepairBuilding(Nod, actor, 0.75) + end) +end + +HasHarvester = function() + local harv = Nod.GetActorsByType("harv") + return #harv > 0 +end + +GuardBase = function() + Utils.Do(NodBase, function(building) + Trigger.OnDamaged(building, function() + if not building.IsDead then + Utils.Do(NodGuards, function(guard) + if not guard.IsDead then + guard.Stop() + guard.Guard(building) + end + end) + end + end) + end) +end + +ProduceHarvester = function(building) + if not buildingHarvester then + buildingHarvester = true + building.Build(HarvesterProductionType, function() + buildingHarvester = false + end) + end +end + +ProduceInfantry = function(building) + if building.IsDead or building.Owner ~= Nod then + return + elseif not HasHarvester() then + Trigger.AfterDelay(DateTime.Seconds(10), function() ProduceInfantry(building) end) + return + end + + if #PatrolProductionQueue >= 1 then + local inQueue = PatrolProductionQueue[1] + local toBuild = { inQueue.unit[1] } + local patrolPath = inQueue.waypoints + building.Build(toBuild, function(unit) + ReplenishPatrolUnit(unit[1], handofnod, patrolPath, 40) + table.remove(PatrolProductionQueue, 1) + end) + Trigger.AfterDelay(DateTime.Seconds(10), function() ProduceInfantry(building) end) + return + end + + local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9)) + local toBuild = { Utils.Random(InfantryProductionTypes) } + local Path = Utils.Random(AttackPaths) + building.Build(toBuild, function(unit) + InfantryAttackGroup[#InfantryAttackGroup + 1] = unit[1] + + if #InfantryAttackGroup >= InfantryGroupSize then + MoveAndHunt(InfantryAttackGroup, Path) + InfantryAttackGroup = { } + Trigger.AfterDelay(InfantryProductionCooldown, function() ProduceInfantry(building) end) + else + Trigger.AfterDelay(delay, function() ProduceInfantry(building) end) + end + end) + +end + +ProduceVehicle = function(building) + if building.IsDead or building.Owner ~= Nod then + return + elseif not HasHarvester() then + ProduceHarvester(building) + Trigger.AfterDelay(DateTime.Seconds(10), function() ProduceVehicle(building) end) + return + end + + local delay = Utils.RandomInteger(DateTime.Seconds(12), DateTime.Seconds(17)) + local toBuild = { Utils.Random(VehicleProductionTypes) } + local Path = Utils.Random(AttackPaths) + building.Build(toBuild, function(unit) + VehicleAttackGroup[#VehicleAttackGroup + 1] = unit[1] + + if #VehicleAttackGroup >= VehicleGroupSize then + MoveAndHunt(VehicleAttackGroup, Path) + VehicleAttackGroup = { } + Trigger.AfterDelay(VehicleProductionCooldown, function() ProduceVehicle(building) end) + else + Trigger.AfterDelay(delay, function() ProduceVehicle(building) end) + end + end) +end + +StartAI = function() + RepairNamedActors(Nod, 0.75) + + Nod.Cash = StartingCash + GuardBase() +end + +Trigger.OnAllKilledOrCaptured(NodBase, function() + Utils.Do(Nod.GetGroundAttackers(), IdleHunt) +end) + +Trigger.OnKilled(nodrefinery, function(building) + BuildBuilding(BaseRefinery, NodCYard) +end) + +Trigger.OnKilled(nodpower1, function(building) + BuildBuilding(BaseNuke1, NodCYard) +end) + +Trigger.OnKilled(nodpower2, function(building) + BuildBuilding(BaseNuke2, NodCYard) +end) + +Trigger.OnKilled(nodpower3, function(building) + BuildBuilding(BaseNuke3, NodCYard) +end) + +Trigger.OnKilled(nodpower4, function(building) + BuildBuilding(BaseNuke4, NodCYard) +end) + +Trigger.OnKilled(nodpower5, function(building) + BuildBuilding(BaseNuke5, NodCYard) +end) + +Trigger.OnKilled(handofnod, function(building) + BuildBuilding(InfantryProduction, NodCYard) +end) + +Trigger.OnKilled(nodairfield, function(building) + BuildBuilding(VehicleProduction, NodCYard) +end) diff --git a/mods/cnc/maps/gdi09/gdi09.lua b/mods/cnc/maps/gdi09/gdi09.lua new file mode 100644 index 0000000000..767c3fbd3e --- /dev/null +++ b/mods/cnc/maps/gdi09/gdi09.lua @@ -0,0 +1,170 @@ +--[[ + Copyright 2007-2020 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. +]] + +InsertionHelicopterType = "tran.insertion" +GDIHeliReinfUnits = { "e2", "e2", "e2", "e3", "e3" } + +SamSites = { sam1, sam2, sam3, sam4 } +NodBunkersNorth = { gun3, gun4 } +NodBunkersSouth = { gun1, gun2 } + +BoatEscapeTrigger = { CPos.New(2,37) } + +WaypointGroup1 = { waypoint1, waypoint2, waypoint8 } +WaypointGroup2 = { waypoint1, waypoint2, waypoint3, waypoint9 } +WaypointGroup3 = { waypoint1, waypoint2, waypoint3, waypoint10, waypoint11, waypoint12, waypoint6, waypoint13 } +WaypointGroup4 = { waypoint1, waypoint2, waypoint3, waypoint4 } +Patrol1Waypoints = { waypoint11.Location, waypoint10.Location } +Patrol2Waypoints = { waypoint1.Location, waypoint2.Location, waypoint3.Location, waypoint4.Location, waypoint5.Location, waypoint4.Location, waypoint3.Location, waypoint2.Location, waypoint1.Location, waypoint6.Location } + +Nod1 = { units = { ['e1'] = 2, ['e3'] = 2 }, waypoints = WaypointGroup1, delay = 40 } +Nod2 = { units = { ['e3'] = 2, ['e4'] = 2 }, waypoints = WaypointGroup2, delay = 50 } +Nod3 = { units = { ['e1'] = 2, ['e3'] = 3, ['e4'] = 2 }, waypoints = WaypointGroup1, delay = 50 } +Nod4 = { units = { ['bggy'] = 2 }, waypoints = WaypointGroup2, delay = 50 } +Nod5 = { units = { ['e4'] = 2, ['ltnk'] = 1 }, waypoints = WaypointGroup1, delay = 50 } +Auto1 = { units = { ['e4'] = 2, ['arty'] = 1 }, waypoints = WaypointGroup1, delay = 50 } +Auto2 = { units = { ['e1'] = 2, ['e3'] = 2 }, waypoints = WaypointGroup2, delay = 50 } +Auto3 = { units = { ['e3'] = 2, ['e4'] = 2 }, waypoints = WaypointGroup1, delay = 50 } +Auto4 = { units = { ['e1'] = 3, ['e4'] = 1 }, waypoints = WaypointGroup1, delay = 50 } +Auto5 = { units = { ['ltnk'] = 1, ['bggy'] = 1 }, waypoints = WaypointGroup1, delay = 60 } +Auto6 = { units = { ['bggy'] = 1 }, waypoints = WaypointGroup2, delay = 50 } +Auto7 = { units = { ['ltnk'] = 1 }, waypoints = WaypointGroup2, delay = 50 } +Auto8 = { units = { ['e4'] = 2, ['bggy'] = 1 }, waypoints = WaypointGroup4, delay = 0 } + +Patrols = { + grd1 = { units = { ['e3'] = 3 }, waypoints = Patrol1Waypoints, wait = 40, initialWaypointPlacement = { 1 } }, + grd2 = { units = { ['e1'] = 2, ['e3'] = 2, ['e4'] = 2 }, waypoints = Patrol2Waypoints, wait = 20, initialWaypointPlacement = { 4, 10, 1 } } +} + +AutoAttackWaves = { Nod1, Nod2, Nod3, Nod4, Nod5, Auto1, Auto2, Auto3, Auto4, Auto5, Auto6, Auto7, Auto8 } + +StationaryGuards = { Actor174, Actor173, Actor182, Actor183, Actor184, Actor185, Actor186, Actor187 , Actor199, Actor200, Actor201, Actor202, Actor203, Actor204 } + +StartStationaryGuards = function() + Utils.Do(StationaryGuards, function(unit) + if not unit.IsDead then + unit.Patrol( { unit.Location } , true, 20) + end + end) +end + +SendWaves = function(counter, Waves) + if counter <= #Waves then + local team = Waves[counter] + + for type, amount in pairs(team.units) do + MoveAndHunt(Utils.Take(amount, Nod.GetActorsByType(type)), team.waypoints) + end + + Trigger.AfterDelay(DateTime.Seconds(team.delay), function() SendWaves(counter + 1, Waves) end) + end +end + +StartPatrols = function() + for k, team in pairs(Patrols) do + local group = 1 + for type, amount in pairs(team.units) do + for i = 1, amount do + Reinforcements.Reinforce(Nod, { type }, { team.waypoints[team.initialWaypointPlacement[group]] }, 0, function(unit) + ReplenishPatrolUnit(unit, handofnod, team.waypoints, team.wait) + end) + end + group = group + 1 + end + end + Patrols = nil +end + +ReplenishPatrolUnit = function(unit, building, waypoints, waitatwaypoint) + unit.Patrol(waypoints, true, waitatwaypoint) + Trigger.OnKilled(unit, function() + local queueUnit = { unit = { unit.Type }, atbuilding = { building }, waypoints = waypoints } + PatrolProductionQueue[#PatrolProductionQueue + 1] = queueUnit + end) +end + +SendGDIReinforcements = function() + Media.PlaySpeechNotification(GDI, "Reinforce") + Reinforcements.ReinforceWithTransport(GDI, InsertionHelicopterType, GDIHeliReinfUnits, { GDIHeliEntryNorth.Location, GDIHeliLZ.Location }, { GDIHeliLZ.Location + CVec.New(20, 0) }) +end + +SendGDIReinforcementChinook = function() + Reinforcements.ReinforceWithTransport(GDI, 'tran', nil, { GDIHeliEntryNorth.Location, GDIHeliLZ.Location }) +end + +SpawnGunboat = function() + Media.PlaySpeechNotification(GDI, "Reinforce") + Actor.Create("boat", true, { Owner = GDI, Facing = 0, Location = CPos.New(62,37) }) +end + +WorldLoaded = function() + GDI = Player.GetPlayer("GDI") + Nod = Player.GetPlayer("Nod") + + Camera.Position = DefaultCameraPosition.CenterPosition + + DestroyBunkers = GDI.AddObjective("Destroy the Nod bunkers to allow Carter's\nconvoy to pass through safely.") + Trigger.OnAllKilled(NodBunkersNorth, function() + GDI.MarkCompletedObjective(DestroyBunkers) + Trigger.AfterDelay(DateTime.Seconds(1), SpawnGunboat) + end) + Trigger.OnAllKilled(NodBunkersSouth, function() + GDI.MarkCompletedObjective(DestroyBunkers) + SendGDIReinforcementChinook() + Trigger.AfterDelay(DateTime.Seconds(1), SpawnGunboat) + end) + Trigger.OnEnteredFootprint(BoatEscapeTrigger, function(a, id) + if a.Type == "boat" then + a.Destroy() + Media.DisplayMessage("Part of Carter's convoy passed through!") + Media.PlaySoundNotification(GDI, "AlertBleep") + end + end) + + SecureArea = GDI.AddObjective("Destroy the Nod strike force.") + KillGDI = Nod.AddObjective("Kill all enemies!") + + Trigger.AfterDelay(DateTime.Seconds(5), SendGDIReinforcements) + + AirSupport = GDI.AddObjective("Destroy the SAM sites to receive air support.", "Secondary", false) + Trigger.OnAllKilled(SamSites, function() + GDI.MarkCompletedObjective(AirSupport) + Actor.Create("airstrike.proxy", true, { Owner = GDI }) + end) + + Actor.Create("flare", true, { Owner = GDI, Location = DefaultFlareLocation.Location }) + + StartStationaryGuards() + + StartAI() + + StartPatrols() + + InitObjectives(GDI) + + Trigger.AfterDelay(DateTime.Minutes(1), function() SendWaves(1, AutoAttackWaves) end) + Trigger.AfterDelay(DateTime.Minutes(3), function() ProduceInfantry(handofnod) end) + Trigger.AfterDelay(DateTime.Minutes(3), function() ProduceVehicle(nodairfield) end) + + local initialArrivingUnits = { Actor175, Actor191, Actor192, Actor193, Actor194, Actor195, Actor196, Actor197, Actor198 } + Utils.Do(initialArrivingUnits, function(unit) + unit.Move(unit.Location + CVec.New(0, 1), 0) + end) +end + +Tick = function() + if DateTime.GameTime > DateTime.Seconds(5) then + if GDI.HasNoRequiredUnits() then + Nod.MarkCompletedObjective(KillGDI) + end + if Nod.HasNoRequiredUnits() then + GDI.MarkCompletedObjective(SecureArea) + end + end +end diff --git a/mods/cnc/maps/gdi09/map.bin b/mods/cnc/maps/gdi09/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..4ed3b18d4d07c91295158ff59bf4f7bd3207f5ae GIT binary patch literal 20497 zcmeI2U5*?#vV{*bv;M2QM|U7y5Bwv{0Ja|t!(PI?N*KSl1z6){*svGSKN1Xh2ZA1Y z1(pPDPWKC*B#TwuC1Eh?mVw(Xnr1SC5hqRrnM`JN|I|NqNB+C>t@P%mO0TZhq}SXQ zm+F?9EX(Cg-At2Nx%`h%;m#d(?;LU>ooI5RWtIF?`t)4`d#P97YuZVjI@d{Bsb6VY zRsA=OJ4$!dzfpPC+g9N7M{N9!VPL zp@%kXPf&F%9jiYMFH#rC(@MiivzOA#7&ZA!`YcAxA4(5LZF_UW!et2L8-KvA3NskI zKqo96+L05@PDX?{rB9+DfEbtd7hk~7r5ON!s6AFX)^Mzu`CqA9X|mG%rP9lAaQ&Im zX90WlQ0ZZKgp#-558*N-rbEsjMy-lMRG}8+AORtS2fP!_Poe=fyEgws{U;%b4CVlj zBzm~(7$FS)^|88RO^!7;{}XAcei`~FFExFs<$dXXC;@!;aHH^Q7xwVKFxys`!OZ?G z{afj0>E}?sJkjDLVnG|>KwIq6NdY#U!Dr4NdJw~f<<2ZvDlIiEGYKyv=;%rJgMWM{ zWDFdqd8TE{iwBWu=HDq-`Nt^0)>c^3fX?a9N*B_FCKp;>L}Z=e*jg96gvkj{Cj}Qk zju;GcIqj8t4SnQK#id) zF2aTBg;p2(ONNKh;Q8;;-y_Eig9diF1q|9~Kqr^1oa5r@{9i~5^^5S1ftDOfD%u6c z?!!MKZ|1M_A8o5wn!F0?C{AFzaCo8aLbD64FLbBS3sj2TgnUmKz)*0Fv>AN_2W zpOy7zp|sGj2=AO}#OSC{0e(8MyAMAzcZYxD2YmM`H~|UP!DcF`x$G}AztF*j{^vsf zn_>4qj8x++m@x_rdx2?&ql!8Z&Xi^vW@Y_Zs9R{V7~_kWQx30PaC|TS_;o4&oj*sf z)V~T&@ZE6-6?kX^ez?%$LImQk7y9T|bw4Qm5O=YTn33aYFqvyc(FS}>g!*_b>wkTI zAqHk7!EDAB|B$|ng7T|FaEbq#|3(WW2wxmX2ccG{Q6{Gm4zTsVD*ZYlM;_C5ff}e- zWUSkvB$r{32K7UJ3g?IK`1~s1QOgi)QBVG%^ktOc3+W4WUrS$S7}cFi{5yXz2SP`X zMt`7mka35chYz22*FzYI@rcR=Z|?q7!w{lCQn&f$4k`i;UD}Y0~)}C3+p4L zqqqb)E*O%PgD?X0vC_vOz$MnrJQ`>-oKE~jRd`pQU*9Qx7s%6E!#c!Jhz2Ba1O^z( zK-wF$w9C>ucJARHLs&;=fCu5Bbg1r7!)X*}GPjUH54M)~rTf8E4IG_D0stID3}Fx+ z*5_Bj->o%S2PXh#6l!gqh?uA?7rv6dii{d3^&bA=0i#$%L(HQ?r9<_Hnmm`DtA8Gy z0VWGjAKX{EAMDWv1EX*RB=*!|kV#q9=a=)Rd43@ba!6nxN^qG=RGFob@UN7p5qc)PHWG18Nv2{iPz#6~?3?$ik zj{9fx-#ouS&Jczp$v~9j2yJT7j^$!_^;0|hG5Ick+eMSpn)3j=|Sj>b}c3U z<0(vM;U9ChNa#^W;Vv09JJ;r&$T=s5n2yckij$vBh9k2;Z$zWNdrnL+~V?}?tcpY`tpuZ zw2|#-qo8e^dOMig%fkPdKTo75>Yr%(OnRpNnWpZ6y7S5nm*s6rt_D3Egn za(7?ioI)QZ1 zJih{ecES5+#1L4$*dRwI!%_QA{5$iPA+}z`T{&|9nPh>`njggf3`s7{T)?+?_PxOAZIK}u(cOFw|4TstUq2c zFzpD^a1iNt15S*P20dhp8`!F2=>!r;=%Ky(P5MpUTxqUhuGv-V&+tP1ix`4MM&SsJ zx8sk@Y1U6ae=)~cfH55YX;WyR3PNB;4R-1*`90#^3Cp(L+qJ0&J*o+fHraZ#P0a>rdJLAdlCu0iV;nAfS*Q$e|wJ?pdxg zZ0zDM=5WE*XQsNYT~F0L)x;}Ueg7)>>;8FBPAoBM&e05h>K*)>jnE$cL5>CnLPabH z`DB$#yubyHhT`p>Z$ z+}wHo*7I}wUQR5LcQ#V*^543%hkxJ!-oDc~C~5%!c#xAP)Q$+iFb7mF+2hr162s{+ z0BUqn+UIZNPdz`+-kBK_ZhjcDMgGp^e*Wsizgj_e$TZ=lhrO zFE;1TC;>3j4by1DYsNx8E=(S2{#xB@Ov}lLFr>4Az{CoI3KS*+1hlYLBwTMNJ#WD<8J=y`U|Sz;{4;;%nd~{y}?K zc2i(;3Q^-4HGmf-G!6uga4tIJ(;<=yG4qcw0`0Mb@yE`Y(wslzDLTD>BVoq0De>BT zvNYiO1+(CXCGyAlkE%%BvYRpn=Q%791!`=8nNh&Q*`wy8DxooWrvw8R&9MWt2lFn? z`VS{{|F(%2-)OD`-1J}OA4r7K*rTZn0W%#mybzZ(t&PQ@fDx7dQV{KFXF0fuQ}VMjndLM3xbXb@OG9#1Ox zDD01_sKNzCkwx$jW&5#Z{-bWzAB--`7J|og@@Ec$l|cgA$#481=hC5xp6&bxC&a=$ zNPrDUGKBY2zh66Z=!A9<){_dpNcy8H`3Cq!@e3Kgd5xd#yzJ!UkM)yql=Ejs;VEB% z<11?OnqQIIkqR3Z!0%4*xBLSh0__Dgg}X<7zb=`BU*N~D^-t1IA;3pre^kYB?sEK6 zPhi?(PiPP1F3tX#{9zQk(D;hlZnHE0hF!te#+X6{fBpVK+5kHU$pw$Xg}gq;jwmw> z&XDi!u?6k?9y2X&iWl4J+)&SlLXuRo|F z=zs(^1z$*bdY}jsWKOW1+uXuOzU8$aRS}q#H)sNc20qxuuSy8_zoPWng@{7){6ZDN zl!#rk%_e`GLe#MB%)g8uNcH)P60{jSOa|t>T1F;kik$fv0xFF0MYa8?ikozDmy~u^ z9JcF;U2qmP&o6{gi+=2qZ{v?u^7>QJwk~+`+8x#(qE^>`+F*u%xTRemD}Zrm+@KA9 zoB}PMv)hlV3Uxr=K%|hLV$Jgle?wKa%V(zXGrhx9 zR!cA&e2ob17=O#Zv7wMC;DVXKBgk?70GsHzeb_vCae4iV(l6mA0t^H{dYF&nXVZeG z;;;K>3?UgX2wd}-Bf?bpui%Z}5xLAiu+ak>AOr@;(F~bH)?R?q%ma^S*7$R#llVnM zU(O$p z)b$6WoKX4q8)%D5r)3ET$cYPXQo_OVO`WGHfTY(I+M;c zoQ>d_JILb&QA5D^-_Ds_=EziOu07JgL;1XxsW0Oc5O2!}X z%JU1c_UkIQ;x0ZGwvGHU{^;4xfA|L&*$Z0Y0zB|QCYJ#w?PI_-T< zalup@t;rvipvT4e@82o;R}I%u*PN#TT3_B%_jX$qO$iH(SZ^8BVpTTE+{#rv#GxKk3Z>fvjz<>Mq=VyTMf6%|QV7dKZe`%Q# z%jgIEOS2T;pFiLq9DG3Qx2FHUGjLP$KTY{zT=SQPv`SsnP3N^W(;Q2@n{WQ&Dot)~ z?laG~)_QC&Qfydm#Q*SnccsnzcQ?gA>RIb~yKVpA;D_d*t=xWzUkHP+_rxG?<4u0Gfrc6G9b<<_^&ys*yZPaT;~&j zcz4N0;|M&mL5@#?QJ$OC9NXP$)&!+$SS{vVOqs)9z P+<^br=hv;~VBr4%T>eJ` literal 0 HcmV?d00001 diff --git a/mods/cnc/maps/gdi09/map.png b/mods/cnc/maps/gdi09/map.png new file mode 100644 index 0000000000000000000000000000000000000000..ee5572f59047e09adad7c4a95ff46b4f0f12cb1a GIT binary patch literal 46087 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 Mq4B)*sd@1K1CT0TO8@`> literal 0 HcmV?d00001 diff --git a/mods/cnc/maps/gdi09/map.yaml b/mods/cnc/maps/gdi09/map.yaml new file mode 100644 index 0000000000..3828460138 --- /dev/null +++ b/mods/cnc/maps/gdi09/map.yaml @@ -0,0 +1,782 @@ +MapFormat: 11 + +RequiresMod: cnc + +Title: 09: Secure the Danube + +Author: Westwood Studios + +Tileset: WINTER + +MapSize: 64,64 + +Bounds: 2,3,60,48 + +Visibility: MissionSelector + +Categories: Campaign + +LockPreview: True + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: gdi + PlayerReference@Nod: + Name: Nod + Faction: nod + Color: FF1400 + Allies: Nod + Enemies: GDI + Bot: campaign + 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 + +Actors: + Actor0: sbag + Location: 30,43 + Owner: Neutral + Actor1: sbag + Location: 29,43 + Owner: Neutral + Actor2: sbag + Location: 28,43 + Owner: Neutral + Actor3: sbag + Location: 27,43 + Owner: Neutral + Actor4: sbag + Location: 26,43 + Owner: Neutral + Actor5: sbag + Location: 30,42 + Owner: Neutral + Actor6: sbag + Location: 28,42 + Owner: Neutral + Actor7: sbag + Location: 26,42 + Owner: Neutral + Actor8: sbag + Location: 35,33 + Owner: Neutral + Actor9: sbag + Location: 33,33 + Owner: Neutral + Actor10: sbag + Location: 31,33 + Owner: Neutral + Actor11: brik + Location: 21,33 + Owner: Neutral + Actor12: brik + Location: 20,33 + Owner: Neutral + Actor13: brik + Location: 19,33 + Owner: Neutral + Actor14: brik + Location: 18,33 + Owner: Neutral + Actor15: brik + Location: 17,33 + Owner: Neutral + Actor16: brik + Location: 16,33 + Owner: Neutral + Actor17: brik + Location: 15,33 + Owner: Neutral + Actor18: brik + Location: 14,33 + Owner: Neutral + Actor19: brik + Location: 13,33 + Owner: Neutral + Actor20: brik + Location: 12,33 + Owner: Neutral + Actor21: brik + Location: 11,33 + Owner: Neutral + Actor22: brik + Location: 10,33 + Owner: Neutral + Actor23: brik + Location: 9,33 + Owner: Neutral + Actor24: brik + Location: 8,33 + Owner: Neutral + Actor25: brik + Location: 7,33 + Owner: Neutral + Actor26: brik + Location: 6,33 + Owner: Neutral + Actor27: brik + Location: 5,33 + Owner: Neutral + Actor28: brik + Location: 4,33 + Owner: Neutral + Actor29: brik + Location: 3,33 + Owner: Neutral + Actor30: brik + Location: 2,33 + Owner: Neutral + Actor31: sbag + Location: 35,32 + Owner: Neutral + Actor32: sbag + Location: 34,32 + Owner: Neutral + Actor33: sbag + Location: 33,32 + Owner: Neutral + Actor34: sbag + Location: 32,32 + Owner: Neutral + Actor35: sbag + Location: 31,32 + Owner: Neutral + Actor36: brik + Location: 21,32 + Owner: Neutral + Actor37: brik + Location: 2,32 + Owner: Neutral + Actor38: brik + Location: 21,31 + Owner: Neutral + Actor39: brik + Location: 20,31 + Owner: Neutral + Actor40: brik + Location: 2,31 + Owner: Neutral + Actor41: brik + Location: 21,30 + Owner: Neutral + Actor42: brik + Location: 20,30 + Owner: Neutral + Actor43: brik + Location: 2,30 + Owner: Neutral + Actor44: wood + Location: 31,29 + Owner: Neutral + Actor45: brik + Location: 2,29 + Owner: Neutral + Actor46: wood + Location: 31,28 + Owner: Neutral + Actor47: brik + Location: 2,28 + Owner: Neutral + Actor48: wood + Location: 42,27 + Owner: Neutral + Actor49: wood + Location: 41,27 + Owner: Neutral + Actor50: wood + Location: 40,27 + Owner: Neutral + Actor51: wood + Location: 39,27 + Owner: Neutral + Actor52: brik + Location: 2,27 + Owner: Neutral + Actor53: wood + Location: 42,26 + Owner: Neutral + Actor54: v16 + Location: 41,26 + Owner: Neutral + Actor55: v18 + Location: 40,26 + Owner: Neutral + Actor56: wood + Location: 39,26 + Owner: Neutral + Actor57: brik + Location: 21,26 + Owner: Neutral + Actor58: brik + Location: 20,26 + Owner: Neutral + Actor59: brik + Location: 2,26 + Owner: Neutral + Actor60: wood + Location: 42,25 + Owner: Neutral + Actor61: v14 + Location: 41,25 + Owner: Neutral + Actor62: v15 + Location: 40,25 + Owner: Neutral + Actor63: wood + Location: 39,25 + Owner: Neutral + Actor64: brik + Location: 21,25 + Owner: Neutral + Actor65: brik + Location: 20,25 + Owner: Neutral + Actor66: brik + Location: 2,25 + Owner: Neutral + Actor67: wood + Location: 42,24 + Owner: Neutral + Actor68: wood + Location: 39,24 + Owner: Neutral + Actor69: brik + Location: 21,24 + Owner: Neutral + Actor70: brik + Location: 14,24 + Owner: Neutral + Actor71: brik + Location: 13,24 + Owner: Neutral + Actor72: brik + Location: 8,24 + Owner: Neutral + Actor73: brik + Location: 7,24 + Owner: Neutral + Actor74: brik + Location: 2,24 + Owner: Neutral + Actor75: brik + Location: 21,23 + Owner: Neutral + Actor76: brik + Location: 20,23 + Owner: Neutral + Actor77: brik + Location: 19,23 + Owner: Neutral + Actor78: brik + Location: 18,23 + Owner: Neutral + Actor79: brik + Location: 17,23 + Owner: Neutral + Actor80: brik + Location: 16,23 + Owner: Neutral + Actor81: brik + Location: 15,23 + Owner: Neutral + Actor82: brik + Location: 14,23 + Owner: Neutral + Actor83: brik + Location: 13,23 + Owner: Neutral + Actor84: brik + Location: 8,23 + Owner: Neutral + Actor85: brik + Location: 7,23 + Owner: Neutral + Actor86: brik + Location: 6,23 + Owner: Neutral + Actor87: brik + Location: 5,23 + Owner: Neutral + Actor88: brik + Location: 4,23 + Owner: Neutral + Actor89: brik + Location: 3,23 + Owner: Neutral + Actor90: brik + Location: 2,23 + Owner: Neutral + Actor91: t02 + Location: 46,27 + Owner: Neutral + Actor92: t02 + Location: 14,19 + Owner: Neutral + Actor93: t01 + Location: 18,19 + Owner: Neutral + Actor94: t14 + Location: 44,27 + Owner: Neutral + Actor95: tc01 + Location: 43,24 + Owner: Neutral + Actor96: tc02 + Location: 42,27 + Owner: Neutral + Actor97: tc04 + Location: 45,24 + Owner: Neutral + Actor98: split2 + Location: 55,23 + Owner: Neutral + Actor99: split2 + Location: 60,28 + Owner: Neutral + Actor100: tc04 + Location: 34,26 + Owner: Neutral + Actor101: tc02 + Location: 37,25 + Owner: Neutral + Actor102: t10 + Location: 32,27 + Owner: Neutral + Actor103: t01 + Location: 34,25 + Owner: Neutral + Actor104: t17 + Location: 35,24 + Owner: Neutral + Actor105: tc01 + Location: 31,26 + Owner: Neutral + Actor106: tc04 + Location: 51,15 + Owner: Neutral + Actor107: tc04 + Location: 37,5 + Owner: Neutral + Actor108: tc04 + Location: 39,14 + Owner: Neutral + Actor109: tc04 + Location: 30,6 + Owner: Neutral + Actor110: tc02 + Location: 29,14 + Owner: Neutral + Actor111: tc01 + Location: 44,12 + Owner: Neutral + Actor112: tc01 + Location: 32,9 + Owner: Neutral + Actor113: t03 + Location: 34,17 + Owner: Neutral + Actor114: t02 + Location: 44,20 + Owner: Neutral + Actor115: t01 + Location: 42,19 + Owner: Neutral + Actor116: t01 + Location: 43,10 + Owner: Neutral + Actor117: t01 + Location: 35,15 + Owner: Neutral + Actor118: t01 + Location: 31,10 + Owner: Neutral + Actor119: tc02 + Location: 22,42 + Owner: Neutral + Actor120: tc04 + Location: 2,47 + Owner: Neutral + Actor121: tc05 + Location: 15,52 + Owner: Neutral + Actor122: tc02 + Location: 27,53 + Owner: Neutral + Actor123: t01 + Location: 30,50 + Owner: Neutral + Actor124: t02 + Location: 23,52 + Owner: Neutral + Actor125: t03 + Location: 33,45 + Owner: Neutral + Actor126: tc01 + Location: 22,22 + Owner: Neutral + Actor127: t07 + Location: 5,5 + Owner: Neutral + Actor128: tc04 + Location: 8,4 + Owner: Neutral + Actor129: tc01 + Location: 3,4 + Owner: Neutral + Actor130: t07 + Location: 38,23 + Owner: Neutral + Actor131: t11 + Location: 30,43 + Owner: Neutral + Actor132: tc04 + Location: 24,43 + Owner: Neutral + Actor133: tc04 + Location: 25,29 + Owner: Neutral + Actor134: tc05 + Location: 52,22 + Owner: Neutral + gun1: gun + Location: 27,42 + Owner: Nod + gun2: gun + Location: 29,42 + Owner: Nod + gun3: gun + Location: 34,33 + Owner: Nod + Facing: 159 + gun4: gun + Location: 32,33 + Owner: Nod + Facing: 159 + Actor139: v04 + Location: 45,26 + Owner: Neutral + Actor140: v07 + Location: 51,24 + Owner: Neutral + Actor141: v06 + Location: 40,24 + Owner: Neutral + Actor142: v05 + Location: 43,26 + Owner: Neutral + Actor143: v03 + Location: 35,25 + Owner: Neutral + Actor144: v01 + Location: 37,26 + Owner: Neutral + sam1: sam + Location: 3,4 + Owner: Nod + sam2: sam + Location: 19,24 + Owner: Nod + sam3: sam + Location: 2,22 + Owner: Nod + sam4: sam + Location: 19,32 + Owner: Nod + nodpower1: nuke + Location: 5,24 + Owner: Nod + nodpower2: nuke + Location: 3,24 + Owner: Nod + gun5: gun + Location: 13,22 + Owner: Nod + gun6: gun + Location: 8,22 + Owner: Nod + NodCYard: fact + Location: 7,30 + Owner: Nod + nodobelisk: obli + Location: 18,32 + Owner: Nod + nodpower3: nuke + Location: 16,30 + Owner: Nod + nodpower4: nuke + Location: 14,30 + Owner: Nod + nodsilo1: silo + Location: 5,31 + Owner: Nod + nodsilo2: silo + Location: 10,31 + Owner: Nod + nodsilo3: silo + Location: 3,31 + Owner: Nod + nodrefinery: proc + Location: 12,25 + Owner: Nod + FreeActor: False + nodairfield: afld + Location: 3,27 + Owner: Nod + handofnod: hand + Location: 15,25 + Owner: Nod + nodsilo4: silo + Location: 17,24 + Owner: Nod + nodpower5: nuke + Location: 12,30 + Owner: Nod + gun7: gun + Location: 22,25 + Owner: Nod + Facing: 191 + gun8: gun + Location: 22,31 + Owner: Nod + Facing: 191 + Actor167: harv + Location: 20,28 + Owner: Nod + Facing: 191 + Actor168: ltnk + Location: 19,26 + Owner: Nod + Facing: 127 + Actor169: ltnk + Location: 18,26 + Owner: Nod + Facing: 127 + Actor170: ltnk + Location: 8,28 + Owner: Nod + Facing: 127 + Actor171: bggy + Location: 18,31 + Owner: Nod + Actor172: bggy + Location: 19,31 + Owner: Nod + Actor173: bggy + Location: 40,14 + Owner: Nod + Actor174: arty + Location: 8,15 + Owner: Nod + Facing: 31 + Actor175: mcv + Location: 54,4 + Owner: GDI + Facing: 127 + Actor176: e3 + Location: 19,25 + Owner: Nod + SubCell: 1 + Actor177: e3 + Location: 17,26 + Owner: Nod + SubCell: 3 + Actor178: e3 + Location: 8,25 + Owner: Nod + SubCell: 1 + Actor179: e3 + Location: 10,29 + Owner: Nod + SubCell: 0 + Actor180: e1 + Location: 5,30 + Owner: Nod + SubCell: 0 + Actor181: e1 + Location: 8,26 + Owner: Nod + SubCell: 4 + Actor182: e4 + Location: 7,14 + Owner: Nod + Facing: 31 + SubCell: 3 + Actor183: e4 + Location: 7,14 + Owner: Nod + Facing: 31 + SubCell: 2 + Actor184: e4 + Location: 25,6 + Owner: Nod + Facing: 191 + SubCell: 1 + Actor185: e4 + Location: 25,4 + Owner: Nod + Facing: 191 + SubCell: 3 + Actor186: e3 + Location: 33,9 + Owner: Nod + SubCell: 0 + Actor187: e3 + Location: 31,6 + Owner: Nod + SubCell: 3 + Actor188: e3 + Location: 17,27 + Owner: Nod + SubCell: 2 + Actor189: e3 + Location: 17,26 + Owner: Nod + SubCell: 2 + Actor190: e3 + Location: 17,27 + Owner: Nod + SubCell: 0 + Actor191: e2 + Location: 53,6 + Owner: GDI + Facing: 127 + SubCell: 4 + Actor192: e2 + Location: 54,6 + Owner: GDI + Facing: 127 + SubCell: 3 + Actor193: e2 + Location: 53,7 + Owner: GDI + Facing: 127 + SubCell: 2 + Actor194: e3 + Location: 54,6 + Owner: GDI + Facing: 127 + SubCell: 4 + Actor195: e3 + Location: 55,6 + Owner: GDI + Facing: 127 + SubCell: 3 + Actor196: e3 + Location: 55,7 + Owner: GDI + Facing: 127 + SubCell: 1 + Actor197: e3 + Location: 54,7 + Owner: GDI + Facing: 127 + SubCell: 2 + Actor198: e2 + Location: 54,7 + Owner: GDI + Facing: 127 + SubCell: 1 + Actor199: e3 + Location: 25,34 + Owner: Nod + Facing: 127 + SubCell: 4 + Actor200: e3 + Location: 25,34 + Owner: Nod + Facing: 127 + SubCell: 3 + Actor201: e3 + Location: 24,34 + Owner: Nod + Facing: 127 + SubCell: 4 + Actor202: e3 + Location: 25,34 + Owner: Nod + Facing: 127 + SubCell: 1 + Actor203: e3 + Location: 24,34 + Owner: Nod + Facing: 127 + SubCell: 2 + Actor204: e3 + Location: 25,34 + Owner: Nod + Facing: 127 + SubCell: 2 + GDIHeliEntryNorth: waypoint + Location: 57,6 + Owner: Neutral + DefaultCameraPosition: waypoint + Location: 48,3 + Owner: Neutral + DefaultFlareLocation: waypoint + Location: 33,31 + Owner: Neutral + waypoint23: waypoint + Location: 53,37 + Owner: Neutral + waypoint19: waypoint + Location: 52,42 + Owner: Neutral + waypoint18: waypoint + Location: 52,19 + Owner: Neutral + waypoint17: waypoint + Location: 9,30 + Owner: Neutral + waypoint11: waypoint + Location: 23,24 + Owner: Neutral + waypoint10: waypoint + Location: 23,32 + Owner: Neutral + waypoint9: waypoint + Location: 43,5 + Owner: Neutral + waypoint8: waypoint + Location: 60,18 + Owner: Neutral + waypoint7: waypoint + Location: 52,6 + Owner: Neutral + waypoint6: waypoint + Location: 9,16 + Owner: Neutral + waypoint5: waypoint + Location: 4,10 + Owner: Neutral + waypoint4: waypoint + Location: 12,5 + Owner: Neutral + waypoint3: waypoint + Location: 28,5 + Owner: Neutral + waypoint2: waypoint + Location: 30,20 + Owner: Neutral + waypoint1: waypoint + Location: 23,28 + Owner: Neutral + GDIHeliLZ: waypoint + Location: 41,44 + Owner: Neutral + +Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml + +Weapons: weapons.yaml diff --git a/mods/cnc/maps/gdi09/rules.yaml b/mods/cnc/maps/gdi09/rules.yaml new file mode 100644 index 0000000000..037cb8c964 --- /dev/null +++ b/mods/cnc/maps/gdi09/rules.yaml @@ -0,0 +1,146 @@ +World: + LuaScript: + Scripts: campaign-global.lua, gdi09.lua, gdi09-AI.lua + MusicPlaylist: + StartingMusic: march + VictoryMusic: gdi_win1 + MissionData: + Briefing: Take out Nod turrets along shore so Gunboats can move in safely on the Nod base.\n\nThe Nod base must be destroyed.\n\nIf gunboats can get in, they should be able to destroy the base with no difficulty.\n\nKeep an eye out for the new weapon Nod is rumored to be working on. + BriefingVideo: gdi9.vqa + WinVideo: gunboat.vqa + LossVideo: gameover.vqa + +ATWR: + Buildable: + Prerequisites: ~disabled + +NUK2: + 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 + +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 + +FTNK: + Buildable: + Prerequisites: ~disabled + +STNK: + Buildable: + Prerequisites: ~disabled + +HELI: + Buildable: + Prerequisites: ~disabled + +LTNK: + Buildable: + Prerequisites: ~afld + +ARTY: + Buildable: + Prerequisites: ~afld + +E4: + Buildable: + Prerequisites: barracks + +E5: + Buildable: + Prerequisites: ~disabled + +MLRS: + Buildable: + Prerequisites: ~disabled + +SAM: + Buildable: + Prerequisites: ~disabled + +^Bridge: + DamageMultiplier@INVULNERABLE: + Modifier: 0 + +BRIDGEHUT: + -Targetable: + +TRAN.Extraction: + Inherits: TRAN + RevealsShroud: + Range: 0c0 + RejectsOrders: + -Selectable: + RenderSprites: + Image: tran + Interactable: + +TRAN.Insertion: + Inherits: TRAN.Extraction + Cargo: + MaxWeight: 0 + +HQ: + Tooltip: + -AirstrikePower: + Buildable: + Description: Provides an overview of the battlefield.\n Requires power to operate. + +airstrike.proxy: + AirstrikePower: + SquadSize: 2 + SquadOffset: -1536, 1024, 0 + +BOAT: + AutoTarget: + InitialStance: AttackAnything + RejectsOrders: + Except: Attack diff --git a/mods/cnc/maps/gdi09/weapons.yaml b/mods/cnc/maps/gdi09/weapons.yaml new file mode 100644 index 0000000000..06cd22c9c6 --- /dev/null +++ b/mods/cnc/maps/gdi09/weapons.yaml @@ -0,0 +1,13 @@ +BoatMissile: + Warhead@Bonus: SpreadDamage + Spread: 128 + Damage: 2000 + Versus: + None: 50 + Wood: 100 + Light: 100 + Heavy: 100 + DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath + +TurretGun: + ReloadDelay: 40 diff --git a/mods/cnc/missions.yaml b/mods/cnc/missions.yaml index 6765f4b0cf..73c9d0ef9e 100644 --- a/mods/cnc/missions.yaml +++ b/mods/cnc/missions.yaml @@ -10,6 +10,7 @@ GDI Campaign: gdi06 gdi07 gdi08a + gdi09 Nod Campaign: nod01