From 9ed0e6584fc13b3eaa00a61f63daf77c6da606d5 Mon Sep 17 00:00:00 2001 From: Biofreak1987 Date: Sun, 15 May 2016 09:49:38 +0200 Subject: [PATCH] Add nod08b --- OpenRA.sln | 2 + mods/cnc/maps/nod08b/map.bin | Bin 0 -> 20497 bytes mods/cnc/maps/nod08b/map.png | Bin 0 -> 37840 bytes mods/cnc/maps/nod08b/map.yaml | 782 +++++++++++++++++++++++++++++ mods/cnc/maps/nod08b/nod08b-AI.lua | 220 ++++++++ mods/cnc/maps/nod08b/nod08b.lua | 247 +++++++++ mods/cnc/maps/nod08b/rules.yaml | 247 +++++++++ mods/cnc/maps/nod08b/weapons.yaml | 7 + mods/cnc/missions.yaml | 1 + 9 files changed, 1506 insertions(+) create mode 100644 mods/cnc/maps/nod08b/map.bin create mode 100644 mods/cnc/maps/nod08b/map.png create mode 100644 mods/cnc/maps/nod08b/map.yaml create mode 100644 mods/cnc/maps/nod08b/nod08b-AI.lua create mode 100644 mods/cnc/maps/nod08b/nod08b.lua create mode 100644 mods/cnc/maps/nod08b/rules.yaml create mode 100644 mods/cnc/maps/nod08b/weapons.yaml diff --git a/OpenRA.sln b/OpenRA.sln index e8b24077ef..5da7941277 100644 --- a/OpenRA.sln +++ b/OpenRA.sln @@ -50,6 +50,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tiberian Dawn Lua scripts", mods\cnc\maps\nod07b\nod07b.lua = mods\cnc\maps\nod07b\nod07b.lua mods\cnc\maps\nod08a\nod08a-AI.lua = mods\cnc\maps\nod08a\nod08a-AI.lua mods\cnc\maps\nod08a\nod08a.lua = mods\cnc\maps\nod08a\nod08a.lua + mods\cnc\maps\nod08b\nod08b-AI.lua = mods\cnc\maps\nod08b\nod08b-AI.lua + mods\cnc\maps\nod08b\nod08b.lua = mods\cnc\maps\nod08b\nod08b.lua mods\cnc\maps\funpark01\scj01ea.lua = mods\cnc\maps\funpark01\scj01ea.lua mods\cnc\maps\shellmap\shellmap.lua = mods\cnc\maps\shellmap\shellmap.lua EndProjectSection diff --git a/mods/cnc/maps/nod08b/map.bin b/mods/cnc/maps/nod08b/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..a86056a0fd9374df142b0983726ab67374ed1548 GIT binary patch literal 20497 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 literal 0 HcmV?d00001 diff --git a/mods/cnc/maps/nod08b/map.yaml b/mods/cnc/maps/nod08b/map.yaml new file mode 100644 index 0000000000..3aeab7d422 --- /dev/null +++ b/mods/cnc/maps/nod08b/map.yaml @@ -0,0 +1,782 @@ +MapFormat: 11 + +RequiresMod: cnc + +Title: Battle for Zaire (b) + +Author: Westwood Studios + +Tileset: DESERT + +MapSize: 64,64 + +Bounds: 3,2,59,60 + +Visibility: MissionSelector + +Categories: Campaign + +LockPreview: True + +Players: + PlayerReference@GDI: + Name: GDI + Faction: gdi + Color: F5D378 + Allies: Outpost + Enemies: Nod + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: gdi + PlayerReference@Civilians: + Name: Civilians + NonCombatant: True + Faction: gdi + Enemies: Nod + PlayerReference@Outpost: + Name: Outpost + Faction: gdi + Color: F5D378 + Allies: GDI + Enemies: Nod + PlayerReference@Nod: + Name: Nod + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: nod + LockColor: True + Color: FE1100 + LockSpawn: True + LockTeam: True + Enemies: GDI, Civilians + PlayerReference@NodBase: + Name: NodBase + NonCombatant: True + Faction: nod + Color: FE1100 + Enemies: Nod + +Actors: + Actor0: brik + Location: 27,56 + Owner: GDI + Actor1: brik + Location: 26,56 + Owner: GDI + Actor2: brik + Location: 25,56 + Owner: GDI + Actor3: brik + Location: 24,56 + Owner: GDI + Actor4: brik + Location: 23,56 + Owner: GDI + Actor5: brik + Location: 22,56 + Owner: GDI + Actor6: brik + Location: 21,56 + Owner: GDI + Actor7: brik + Location: 20,56 + Owner: GDI + Actor8: brik + Location: 19,56 + Owner: GDI + Actor9: brik + Location: 18,56 + Owner: GDI + Actor10: brik + Location: 17,56 + Owner: GDI + Actor11: brik + Location: 16,56 + Owner: GDI + Actor12: brik + Location: 15,56 + Owner: GDI + Actor13: brik + Location: 14,56 + Owner: GDI + Actor14: brik + Location: 13,56 + Owner: GDI + Actor15: brik + Location: 12,56 + Owner: GDI + Actor16: brik + Location: 11,56 + Owner: GDI + Actor17: brik + Location: 10,56 + Owner: GDI + Actor18: brik + Location: 9,56 + Owner: GDI + Actor19: brik + Location: 8,56 + Owner: GDI + Actor20: brik + Location: 7,56 + Owner: GDI + Actor21: brik + Location: 6,56 + Owner: GDI + Actor22: brik + Location: 5,56 + Owner: GDI + Actor23: brik + Location: 4,56 + Owner: GDI + Actor24: brik + Location: 3,56 + Owner: GDI + Actor25: brik + Location: 27,55 + Owner: GDI + Actor26: cycl + Location: 25,55 + Owner: GDI + Actor27: cycl + Location: 24,55 + Owner: GDI + Actor28: cycl + Location: 23,55 + Owner: GDI + Actor29: brik + Location: 4,55 + Owner: GDI + Actor30: brik + Location: 3,55 + Owner: GDI + Actor31: brik + Location: 27,54 + Owner: GDI + Actor32: cycl + Location: 25,54 + Owner: GDI + Actor33: cycl + Location: 23,54 + Owner: GDI + Actor34: brik + Location: 3,54 + Owner: GDI + Actor35: brik + Location: 27,53 + Owner: GDI + Actor36: brik + Location: 26,53 + Owner: GDI + Actor37: cycl + Location: 25,53 + Owner: GDI + Actor38: cycl + Location: 24,53 + Owner: GDI + Actor39: cycl + Location: 23,53 + Owner: GDI + Actor40: brik + Location: 3,53 + Owner: GDI + Actor41: brik + Location: 27,52 + Owner: GDI + Actor42: brik + Location: 26,52 + Owner: GDI + Actor43: brik + Location: 3,52 + Owner: GDI + Actor44: brik + Location: 3,51 + Owner: GDI + Actor45: brik + Location: 27,50 + Owner: GDI + Actor46: brik + Location: 26,50 + Owner: GDI + Actor47: brik + Location: 3,50 + Owner: GDI + Actor48: brik + Location: 27,49 + Owner: GDI + Actor49: brik + Location: 26,49 + Owner: GDI + Actor50: brik + Location: 3,49 + Owner: GDI + Actor51: brik + Location: 27,48 + Owner: GDI + Actor52: brik + Location: 18,48 + Owner: GDI + Actor53: brik + Location: 17,48 + Owner: GDI + Actor54: brik + Location: 13,48 + Owner: GDI + Actor55: brik + Location: 12,48 + Owner: GDI + Actor56: brik + Location: 4,48 + Owner: GDI + Actor57: brik + Location: 3,48 + Owner: GDI + Actor58: brik + Location: 27,47 + Owner: GDI + Actor59: brik + Location: 26,47 + Owner: GDI + Actor60: brik + Location: 25,47 + Owner: GDI + Actor61: brik + Location: 24,47 + Owner: GDI + Actor62: brik + Location: 23,47 + Owner: GDI + Actor63: brik + Location: 22,47 + Owner: GDI + Actor64: brik + Location: 21,47 + Owner: GDI + Actor65: brik + Location: 20,47 + Owner: GDI + Actor66: brik + Location: 19,47 + Owner: GDI + Actor67: brik + Location: 18,47 + Owner: GDI + Actor68: brik + Location: 17,47 + Owner: GDI + Actor69: brik + Location: 13,47 + Owner: GDI + Actor70: brik + Location: 12,47 + Owner: GDI + Actor71: brik + Location: 11,47 + Owner: GDI + Actor72: brik + Location: 10,47 + Owner: GDI + Actor73: brik + Location: 9,47 + Owner: GDI + Actor74: brik + Location: 8,47 + Owner: GDI + Actor75: brik + Location: 7,47 + Owner: GDI + Actor76: brik + Location: 6,47 + Owner: GDI + Actor77: brik + Location: 5,47 + Owner: GDI + Actor78: brik + Location: 4,47 + Owner: GDI + Actor79: brik + Location: 3,47 + Owner: GDI + Actor80: sbag + Location: 61,29 + Owner: GDI + Actor81: sbag + Location: 61,28 + Owner: GDI + Actor82: sbag + Location: 61,27 + Owner: GDI + Actor83: sbag + Location: 61,26 + Owner: GDI + Actor84: sbag + Location: 61,25 + Owner: GDI + Actor85: sbag + Location: 61,24 + Owner: GDI + Actor86: sbag + Location: 59,23 + Owner: GDI + Actor87: sbag + Location: 58,23 + Owner: GDI + Actor88: t18 + Location: 15,16 + Owner: Neutral + Actor89: t18 + Location: 7,9 + Owner: Neutral + Actor90: t08 + Location: 22,31 + Owner: Neutral + Actor91: t08 + Location: 29,56 + Owner: Neutral + Actor92: t08 + Location: 45,52 + Owner: Neutral + Actor93: t08 + Location: 46,52 + Owner: Neutral + Actor94: t08 + Location: 57,39 + Owner: Neutral + Actor95: t08 + Location: 9,29 + Owner: Neutral + Actor96: t08 + Location: 40,16 + Owner: Neutral + Actor97: t08 + Location: 40,29 + Owner: Neutral + Actor98: t08 + Location: 10,29 + Owner: Neutral + Actor99: rock5 + Location: 22,18 + Owner: Neutral + Actor100: t08 + Location: 39,6 + Owner: Neutral + Actor101: t08 + Location: 40,6 + Owner: Neutral + Actor102: t08 + Location: 54,9 + Owner: Neutral + Actor103: t08 + Location: 59,15 + Owner: Neutral + Actor104: t08 + Location: 49,3 + Owner: Neutral + Actor105: t18 + Location: 13,23 + Owner: Neutral + Actor106: t18 + Location: 15,35 + Owner: Neutral + Actor107: t18 + Location: 26,45 + Owner: Neutral + Actor108: t18 + Location: 31,49 + Owner: Neutral + Actor109: t18 + Location: 54,35 + Owner: Neutral + Actor110: t18 + Location: 25,56 + Owner: Neutral + Actor111: t18 + Location: 11,43 + Owner: Neutral + Actor112: split3 + Location: 5,31 + Owner: Neutral + Actor113: split3 + Location: 58,47 + Owner: Neutral + Actor142: mtnk + Location: 8,9 + Owner: GDI + Facing: 64 + Actor143: mtnk + Location: 27,34 + Owner: GDI + Facing: 64 + Actor144: mtnk + Location: 14,25 + Owner: GDI + Facing: 96 + Actor145: mtnk + Location: 47,3 + Owner: GDI + Facing: 192 + Actor148: jeep + Location: 56,33 + Owner: GDI + Actor151: mtnk + Location: 16,32 + Owner: GDI + Facing: 224 + Actor152: mtnk + Location: 35,31 + Owner: GDI + Facing: 224 + Actor153: jeep + Location: 18,55 + Owner: GDI + Actor154: jeep + Location: 19,55 + Owner: GDI + Actor155: mtnk + Location: 21,55 + Owner: GDI + Actor156: mtnk + Location: 22,55 + Owner: GDI + Actor157: e2 + Location: 16,16 + Owner: GDI + SubCell: 3 + Actor158: e2 + Location: 15,16 + Owner: GDI + SubCell: 4 + Actor159: e2 + Location: 50,3 + Owner: GDI + Facing: 224 + SubCell: 1 + Actor160: e2 + Location: 49,5 + Owner: GDI + Facing: 192 + SubCell: 2 + Actor161: e1 + Location: 48,6 + Owner: GDI + Facing: 224 + SubCell: 4 + Actor162: e2 + Location: 41,16 + Owner: GDI + SubCell: 1 + Actor163: e2 + Location: 35,17 + Owner: GDI + Facing: 224 + SubCell: 2 + Actor171: e1 + Location: 45,5 + Owner: GDI + Facing: 160 + SubCell: 1 + Actor172: e1 + Location: 44,4 + Owner: GDI + Facing: 160 + SubCell: 1 + Actor173: e1 + Location: 45,4 + Owner: GDI + Facing: 224 + SubCell: 1 + Actor176: e1 + Location: 58,27 + Owner: GDI + Facing: 224 + SubCell: 4 + Actor177: e1 + Location: 52,22 + Owner: GDI + Facing: 160 + SubCell: 4 + Actor178: e1 + Location: 50,23 + Owner: GDI + Facing: 224 + SubCell: 3 + Actor179: e2 + Location: 59,30 + Owner: GDI + SubCell: 4 + Actor180: e2 + Location: 49,24 + Owner: GDI + Facing: 64 + SubCell: 3 + Actor181: e1 + Location: 31,33 + Owner: GDI + Facing: 32 + SubCell: 2 + Actor182: e3 + Location: 54,35 + Owner: GDI + SubCell: 4 + Actor183: e3 + Location: 55,35 + Owner: GDI + Facing: 32 + SubCell: 4 + Actor184: e3 + Location: 55,35 + Owner: GDI + Facing: 224 + SubCell: 0 + Actor185: e3 + Location: 47,32 + Owner: GDI + Facing: 64 + SubCell: 0 + Actor186: e3 + Location: 48,35 + Owner: GDI + Facing: 32 + SubCell: 1 + Actor187: e3 + Location: 43,26 + Owner: GDI + Facing: 96 + SubCell: 0 + Actor188: e3 + Location: 46,22 + Owner: GDI + Facing: 64 + SubCell: 3 + Actor190: e2 + Location: 31,33 + Owner: GDI + Facing: 160 + SubCell: 3 + Actor191: e2 + Location: 32,33 + Owner: GDI + Facing: 32 + SubCell: 0 + waypoint27: waypoint + Location: 20,54 + Owner: Neutral + waypoint26: waypoint + Location: 34,2 + Owner: Neutral + waypoint25: waypoint + Location: 57,27 + Owner: Neutral + waypoint18: waypoint + Location: 35,32 + Owner: Neutral + waypoint17: waypoint + Location: 35,38 + Owner: Neutral + waypoint16: waypoint + Location: 13,26 + Owner: Neutral + waypoint15: waypoint + Location: 8,14 + Owner: Neutral + waypoint14: waypoint + Location: 15,32 + Owner: Neutral + waypoint13: waypoint + Location: 27,35 + Owner: Neutral + waypoint12: waypoint + Location: 28,14 + Owner: Neutral + waypoint11: waypoint + Location: 37,27 + Owner: Neutral + waypoint10: waypoint + Location: 37,14 + Owner: Neutral + waypoint9: waypoint + Location: 20,14 + Owner: Neutral + waypoint8: waypoint + Location: 51,42 + Owner: Neutral + waypoint7: waypoint + Location: 50,55 + Owner: Neutral + waypoint6: waypoint + Location: 36,56 + Owner: Neutral + waypoint5: waypoint + Location: 36,51 + Owner: Neutral + waypoint4: waypoint + Location: 31,35 + Owner: Neutral + waypoint3: waypoint + Location: 13,29 + Owner: Neutral + waypoint2: waypoint + Location: 14,40 + Owner: Neutral + waypoint1: waypoint + Location: 15,46 + Owner: Neutral + waypoint0: waypoint + Location: 54,6 + Owner: Neutral + AirstrikeTarget: waypoint + Owner: Neutral + Location: 57,4 + AttackPath1: waypoint + Owner: Neutral + Location: 29,38 + AttackPath2: waypoint + Owner: Neutral + Location: 50,49 + AttackPath3: waypoint + Owner: Neutral + Location: 20,17 + FlareExtraCamera: camera + Owner: Neutral + Location: 48,27 + GDIBuilding1: atwr + Location: 11,47 + Owner: GDI + GDIBuilding2: gtwr + Location: 31,49 + Owner: GDI + GDIBuilding3: gtwr + Location: 13,46 + Owner: GDI + GDIBuilding4: silo + Location: 7,43 + Owner: GDI + GDIBuilding5: silo + Location: 5,45 + Owner: GDI + GDIBuilding6: silo + Location: 5,43 + Owner: GDI + GDIBuilding7: silo + Location: 3,43 + Owner: GDI + GDIBuilding8: silo + Location: 3,45 + Owner: GDI + GDIBuilding9: gtwr + Location: 17,46 + Owner: GDI + GDIBuilding10: gtwr + Location: 31,52 + Owner: GDI + GDIBuilding11: silo + Location: 7,45 + Owner: GDI + GDIBuilding12: hpad + Location: 22,48 + Owner: GDI + GDIBuilding13: hpad + Location: 24,48 + Owner: GDI + GDICYard: fact + Location: 4,52 + Owner: GDI + GDIHarv: harv + Location: 15,46 + Owner: GDI + GDIHQ: hq + Location: 4,49 + Owner: GDI + GDIProc: proc + Location: 19,48 + Owner: GDI + FreeActor: False + GDIPyle: pyle + Location: 15,52 + Owner: GDI + GDINuke1: nuke + Location: 9,53 + Owner: GDI + GDINuke2: nuke + Location: 7,52 + Owner: GDI + GDINuke3: nuke + Location: 11,53 + Owner: GDI + GDINuke4: nuke + Location: 13,52 + Owner: GDI + GDIOrca1: orca + Owner: GDI + Location: 17,52 + Facing: 92 + GDIOrca2: orca + Owner: GDI + Location: 12,52 + Facing: 92 + GDIWeap: weap + Location: 8,47 + Owner: GDI + Gunboat1: boat + Location: 31,59 + Owner: GDI + Facing: 192 + Gunboat2: boat + Location: 25,60 + Owner: GDI + Facing: 192 + GunboatLeft1: waypoint + Owner: Neutral + Location: 3,59 + GunboatLeft2: waypoint + Owner: Neutral + Location: 3,60 + GunboatRight1: waypoint + Owner: Neutral + Location: 61,59 + GunboatRight2: waypoint + Owner: Neutral + Location: 61,60 + MoneyCrate: MoneyCrate + Owner: Neutral + Location: 24,54 + NodCYard: fact.in + Location: 58,6 + Owner: NodBase + Health: 39 + NodHand: hand + Location: 58,2 + Owner: NodBase + Health: 31 + NodNuke: nuke + Location: 56,4 + Owner: NodBase + Health: 41 + OutpostCYard: factout.in + Location: 58,24 + Owner: Outpost + OutpostHarv: harv + Location: 55,27 + Owner: Outpost + Facing: 192 + OutpostNuke: nukeout.in + Location: 59,27 + Owner: Outpost + OutpostProc: procout.in + Location: 55,23 + Owner: Outpost + FreeActor: False + ReinforcementsHelicopterSpawn: waypoint + Owner: Neutral + Location: 31,2 + ReinforcementsHelicopterRally: waypoint + Owner: Neutral + Location: 38,4 + +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/nod08b/nod08b-AI.lua b/mods/cnc/maps/nod08b/nod08b-AI.lua new file mode 100644 index 0000000000..3f5fef9021 --- /dev/null +++ b/mods/cnc/maps/nod08b/nod08b-AI.lua @@ -0,0 +1,220 @@ +AttackPaths = { { AttackPath1 }, { AttackPath2 }, { AttackPath3 } } +GDIBase = { GDICYard, GDIPyle, GDIWeap, GDIHQ, GDINuke1, GDINuke2, GDINuke3, GDINuke4, GDIProc, GDIBuilding1, GDIBuilding2, GDIBuilding3, GDIBuilding4, GDIBuilding5, GDIBuilding6, GDIBuilding7, GDIBuilding8, GDIBuilding9, GDIBuilding10, GDIBuilding11, GDIBuilding12, GDIBuilding13 } +GDIOrcas = { GDIOrca1, GDIOrca2 } +InfantryAttackGroup = { } +InfantryGroupSize = 4 +InfantryProductionCooldown = DateTime.Minutes(3) +InfantryProductionTypes = { "e1", "e1", "e2" } +HarvesterProductionType = { "harv" } +VehicleAttackGroup = { } +VehicleGroupSize = 4 +VehicleProductionCooldown = DateTime.Minutes(4) +VehicleProductionTypes = { "jeep", "jeep", "mtnk", "mtnk", "mtnk" } +StartingCash = 4000 + +BaseProc = { type = "proc", pos = CPos.New(19, 48), cost = 1500, exists = true } +BaseNuke1 = { type = "nuke", pos = CPos.New(9, 53), cost = 500, exists = true } +BaseNuke2 = { type = "nuke", pos = CPos.New(7, 52), cost = 500, exists = true } +BaseNuke3 = { type = "nuke", pos = CPos.New(11, 53), cost = 500, exists = true } +BaseNuke4 = { type = "nuke", pos = CPos.New(13, 52), cost = 500, exists = true } +InfantryProduction = { type = "pyle", pos = CPos.New(15, 52), cost = 500, exists = true } +VehicleProduction = { type = "weap", pos = CPos.New(8, 47), cost = 2000, exists = true } + +BaseBuildings = { BaseProc, BaseNuke1, BaseNuke2, BaseNuke3, BaseNuke4, InfantryProduction, VehicleProduction } + +AutoGuard = function(guards) + Utils.Do(guards, function(guard) + Trigger.OnDamaged(guard, function(guard) + IdleHunt(guard) + end) + end) +end + +BuildBase = function(cyard) + Utils.Do(BaseBuildings, function(building) + if not building.exists and not cyardIsBuilding then + BuildBuilding(building, cyard) + return + end + end) + Trigger.AfterDelay(DateTime.Seconds(10), function() BuildBase(cyard) end) +end + +BuildBuilding = function(building, cyard) + cyardIsBuilding = true + + Trigger.AfterDelay(Actor.BuildTime(building.type), function() + cyardIsBuilding = false + + if cyard.IsDead or cyard.Owner ~= enemy then + return + end + + local actor = Actor.Create(building.type, true, { Owner = enemy, Location = building.pos }) + enemy.Cash = enemy.Cash - building.cost + + building.exists = true + + if actor.Type == 'pyle' or actor.Type == 'hand' then + Trigger.AfterDelay(DateTime.Seconds(10), function() ProduceInfantry(actor) end) + elseif actor.Type == 'weap' or actor.Type == 'afld' then + Trigger.AfterDelay(DateTime.Seconds(10), function() ProduceVehicle(actor) end) + end + + Trigger.OnKilled(actor, function() building.exists = false end) + + Trigger.OnDamaged(actor, function(building) + if building.Owner == enemy and building.Health < building.MaxHealth * 3/4 then + building.StartBuildingRepairs() + end + end) + + Trigger.AfterDelay(DateTime.Seconds(10), function() BuildBase(cyard) end) + end) +end + +CheckForHarvester = function() + local harv = enemy.GetActorsByType("harv") + return #harv > 0 +end + +GuardBase = function() + Utils.Do(GDIBase, function(building) + Trigger.OnDamaged(building, function(guard) + Utils.Do(GDIOrcas, function(guard) + if not guard.IsDead and not building.IsDead then + guard.Guard(building) + end + end) + end) + end) +end + +IdleHunt = function(unit) + if not unit.IsDead then + Trigger.OnIdle(unit, unit.Hunt) + end +end + +IdlingUnits = function(enemy) + local lazyUnits = enemy.GetGroundAttackers() + + Utils.Do(lazyUnits, function(unit) + IdleHunt(unit) + 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 then + return + elseif not CheckForHarvester() then + Trigger.AfterDelay(DateTime.Seconds(10), function() ProduceInfantry(building) end) + 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 + SendUnits(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 then + return + elseif not CheckForHarvester() then + ProduceHarvester(building) + Trigger.AfterDelay(DateTime.Seconds(10), function() ProduceVehicle(building) end) + 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 + SendUnits(VehicleAttackGroup, Path) + VehicleAttackGroup = { } + Trigger.AfterDelay(VehicleProductionCooldown, function() ProduceVehicle(building) end) + else + Trigger.AfterDelay(delay, function() ProduceVehicle(building) end) + end + end) +end + +SendUnits = function(units, waypoints) + Utils.Do(units, function(unit) + if not unit.IsDead then + Utils.Do(waypoints, function(waypoint) + unit.AttackMove(waypoint.Location) + end) + IdleHunt(unit) + end + end) +end + +StartAI = function(cyard) + Utils.Do(Map.NamedActors, function(actor) + if actor.Owner == enemy and actor.HasProperty("StartBuildingRepairs") then + Trigger.OnDamaged(actor, function(building) + if building.Owner == enemy and building.Health < 3/4 * building.MaxHealth then + building.StartBuildingRepairs() + end + end) + end + end) + enemy.Cash = StartingCash + BuildBase(cyard) + GuardBase() +end + +Trigger.OnAllKilledOrCaptured(GDIBase, function() + IdlingUnits(enemy) +end) + +Trigger.OnKilled(GDIProc, function(building) + BaseProc.exists = false +end) + +Trigger.OnKilled(GDINuke1, function(building) + BaseNuke1.exists = false +end) + +Trigger.OnKilled(GDINuke2, function(building) + BaseNuke2.exists = false +end) + +Trigger.OnKilled(GDINuke3, function(building) + BaseNuke3.exists = false +end) + +Trigger.OnKilled(GDINuke4, function(building) + BaseNuke4.exists = false +end) + +Trigger.OnKilled(GDIPyle, function(building) + InfantryProduction.exists = false +end) + +Trigger.OnKilled(GDIWeap, function(building) + VehicleProduction.exists = false +end) diff --git a/mods/cnc/maps/nod08b/nod08b.lua b/mods/cnc/maps/nod08b/nod08b.lua new file mode 100644 index 0000000000..74fb1b8745 --- /dev/null +++ b/mods/cnc/maps/nod08b/nod08b.lua @@ -0,0 +1,247 @@ +WaypointGroup1 = { waypoint1, waypoint2, waypoint3, waypoint9, waypoint10 } +WaypointGroup2 = { waypoint5, waypoint6, waypoint7, waypoint8 } +WaypointGroup3 = { waypoint1, waypoint2, waypoint4, waypoint11 } + +GDI1 = { units = { ['e2'] = 2, ['e3'] = 2 }, waypoints = WaypointGroup1, delay = 30 } +GDI2 = { units = { ['mtnk'] = 1 }, waypoints = WaypointGroup2, delay = 40 } +GDI3 = { units = { ['e1'] = 3, ['e2'] = 3 }, waypoints = WaypointGroup3, delay = 40 } +GDI4 = { units = { ['jeep'] = 2 }, waypoints = WaypointGroup2, delay = 20 } +Auto1 = { units = { ['e1'] = 3, ['e2'] = 1 }, waypoints = WaypointGroup2, delay = 30 } +Auto2 = { units = { ['e1'] = 2, ['e2'] = 1 }, waypoints = WaypointGroup3, delay = 40 } +Auto3 = { units = { ['e1'] = 2, ['e2'] = 2 }, waypoints = WaypointGroup1, delay = 30 } +Auto4 = { units = { ['mtnk'] = 1 }, waypoints = WaypointGroup1, delay = 30 } +Auto5 = { units = { ['mtnk'] = 1 }, waypoints = WaypointGroup3, delay = 40 } +Auto6 = { units = { ['jeep'] = 1 }, waypoints = WaypointGroup3, delay = 40 } +Auto7 = { units = { ['jeep'] = 1 }, waypoints = WaypointGroup1, delay = 50 } + +AutoAttackWaves = { GDI1, GDI2, GDI3, GDI4, Auto1, Auto2, Auto3, Auto4, Auto5, Auto6, Auto7 } + +NodBase = { NodCYard, NodNuke, NodHand } +Outpost = { OutpostCYard, OutpostProc } + +IntroGuards = { Actor171, Actor172, Actor173, Actor145, Actor159, Actor160, Actor161 } +OutpostGuards = { Actor177, Actor178, Actor180, Actor187, Actor188, Actor185, Actor186, Actor184, Actor148, Actor179, Actor176, Actor183, Actor182 } +IntroReinforcements = { "e1", "e1", "e1", "e1", "e1", "e1", "e3", "e3", "e3", "e3" } + +NodBaseTrigger = { CPos.New(52, 2), CPos.New(52, 3), CPos.New(52, 4), CPos.New(52, 5), CPos.New(52, 6), CPos.New(52, 7), CPos.New(52, 8) } + +Gunboat1PatrolPath = { GunboatLeft1.Location, GunboatRight1.Location } +Gunboat2PatrolPath = { GunboatLeft2.Location, GunboatRight2.Location } + +AirstrikeDelay = DateTime.Minutes(2) + DateTime.Seconds(30) + +NodBaseCapture = function() + nodBaseTrigger = true + player.MarkCompletedObjective(NodObjective1) + Utils.Do(NodBase, function(actor) + actor.Owner = player + end) + Trigger.AfterDelay(DateTime.Seconds(1), function() + Media.PlaySpeechNotification(player, "NewOptions") + end) +end + +searches = 0 +getAirstrikeTarget = function() + local list = player.GetGroundAttackers() + + if #list == 0 then + return + end + + local target = list[DateTime.GameTime % #list + 1].CenterPosition + + if searches < 6 then + searches = searches + 1 + return getAirstrikeTarget() + else + searches = 0 + return target + end +end + +--Provide the player with a helicopter until the outpost got captured +SendHelicopter = function() + Trigger.AfterDelay(DateTime.Seconds(5), function() + if not outpostCaptured then + Media.PlaySpeechNotification(player, "Reinforce") + TransportHelicopter = Reinforcements.ReinforceWithTransport(player, 'tran', nil, { ReinforcementsHelicopterSpawn.Location, waypoint0.Location })[1] + Trigger.OnKilled(TransportHelicopter, function() + SendHelicopter() + end) + end + end) +end + +SendAttackWave = function(team) + for type, amount in pairs(team.units) do + count = 0 + actors = enemy.GetActorsByType(type) + Utils.Do(actors, function(actor) + if actor.IsIdle and count < amount then + SetAttackWaypoints(actor, team.waypoints) + IdleHunt(actor) + count = count + 1 + end + end) + end +end + +SetAttackWaypoints = function(actor, waypoints) + if not actor.IsDead then + Utils.Do(waypoints, function(waypoint) + actor.AttackMove(waypoint.Location) + end) + end +end + +SendGDIAirstrike = function(hq, delay) + if not hq.IsDead and hq.Owner == enemy then + local target = getAirstrikeTarget() + + if target then + hq.SendAirstrike(target, false, Facing.NorthEast + 4) + Trigger.AfterDelay(delay, function() SendGDIAirstrike(hq, delay) end) + else + Trigger.AfterDelay(delay/4, function() SendGDIAirstrike(hq, delay) end) + end + end +end + +SendWaves = function(counter, Waves) + if counter <= #Waves then + local team = Waves[counter] + SendAttackWave(team) + Trigger.AfterDelay(DateTime.Seconds(team.delay), function() SendWaves(counter + 1, Waves) end) + end +end + +StartWaves = function() + SendWaves(1, AutoAttackWaves) +end + +Trigger.OnAllKilled(IntroGuards, function() + FlareCamera1 = Actor.Create("camera", true, { Owner = player, Location = waypoint25.Location }) + FlareCamera2 = Actor.Create("camera", true, { Owner = player, Location = FlareExtraCamera.Location }) + Flare = Actor.Create("flare", true, { Owner = player, Location = waypoint25.Location }) + SendHelicopter() + player.MarkCompletedObjective(NodObjective1) + NodBaseCapture() +end) + +Trigger.OnAllKilledOrCaptured(Outpost, function() + if not outpostCaptured then + outpostCaptured = true + + Trigger.AfterDelay(DateTime.Minutes(1), function() + + if not GDIHQ.IsDead and (not NodHand.IsDead or not NodNuke.IsDead) then + local airstrikeproxy = Actor.Create("airstrike.proxy", false, { Owner = enemy }) + airstrikeproxy.SendAirstrike(AirstrikeTarget.CenterPosition, false, Facing.NorthEast + 4) + airstrikeproxy.Destroy() + end + end) + + Trigger.AfterDelay(DateTime.Seconds(15), function() + Utils.Do(OutpostGuards, function(unit) + IdleHunt(unit) + end) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), function() + FlareCamera1.Kill() + FlareCamera2.Kill() + Flare.Destroy() + end) + + player.MarkCompletedObjective(NodObjective2) + Trigger.AfterDelay(DateTime.Minutes(1), function() StartWaves() end) + Trigger.AfterDelay(AirstrikeDelay, function() SendGDIAirstrike(GDIHQ, AirstrikeDelay) end) + Trigger.AfterDelay(DateTime.Minutes(2), function() ProduceInfantry(GDIPyle) end) + Trigger.AfterDelay(DateTime.Minutes(3), function() ProduceVehicle(GDIWeap) end) + end +end) + +Trigger.OnCapture(OutpostCYard, function() + Trigger.AfterDelay(DateTime.Seconds(4), function() + Media.PlaySpeechNotification(player, "NewOptions") + end) +end) + +Trigger.OnAnyKilled(Outpost, function() + if not outpostCaptured then + player.MarkFailedObjective(NodObjective2) + end +end) + +Trigger.OnEnteredFootprint(NodBaseTrigger, function(a, id) + if not nodBaseTrigger and a.Owner == player then + NodBaseCapture() + end +end) + +Trigger.OnKilled(Gunboat1, function() + Gunboat1Camera.Destroy() +end) +Trigger.OnKilled(Gunboat2, function() + Gunboat2Camera.Destroy() +end) + +WorldLoaded = function() + player = Player.GetPlayer("Nod") + enemy = Player.GetPlayer("GDI") + Camera.Position = waypoint26.CenterPosition + Media.PlaySpeechNotification(player, "Reinforce") + Reinforcements.ReinforceWithTransport(player, 'tran.in', IntroReinforcements, { ReinforcementsHelicopterSpawn.Location, ReinforcementsHelicopterRally.Location }, { ReinforcementsHelicopterSpawn.Location }, nil, nil) + + StartAI(GDICYard) + AutoGuard(enemy.GetGroundAttackers()) + + Gunboat1Camera = Actor.Create("camera.boat", true, { Owner = player, Location = Gunboat1.Location }) + Gunboat2Camera = Actor.Create("camera.boat", true, { Owner = player, Location = Gunboat2.Location }) + Trigger.OnIdle(Gunboat1, function() Gunboat1.Patrol(Gunboat1PatrolPath) end) + Trigger.OnIdle(Gunboat2, function() Gunboat2.Patrol(Gunboat2PatrolPath) end) + + 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) + + NodObjective1 = player.AddPrimaryObjective("Locate the Nod base.") + NodObjective2 = player.AddPrimaryObjective("Capture the GDI outpost.") + NodObjective3 = player.AddPrimaryObjective("Eliminate all GDI forces in the area.") + GDIObjective = enemy.AddPrimaryObjective("Eliminate all Nod forces in the area.") +end + +Tick = function() + if not Gunboat1.IsDead then + Gunboat1Camera.Teleport(Gunboat1.Location) + end + + if not Gunboat2.IsDead then + Gunboat2Camera.Teleport(Gunboat2.Location) + end + + if DateTime.GameTime > 2 and player.HasNoRequiredUnits() then + enemy.MarkCompletedObjective(GDIObjective) + end + + if DateTime.GameTime > 2 and enemy.HasNoRequiredUnits() then + player.MarkCompletedObjective(NodObjective3) + end +end diff --git a/mods/cnc/maps/nod08b/rules.yaml b/mods/cnc/maps/nod08b/rules.yaml new file mode 100644 index 0000000000..2246efa0b7 --- /dev/null +++ b/mods/cnc/maps/nod08b/rules.yaml @@ -0,0 +1,247 @@ +World: + LuaScript: + Scripts: nod08b.lua, nod08b-AI.lua + MusicPlaylist: + StartingMusic: linefire + VictoryMusic: nod_win1 + MissionData: + Briefing: Since we are low on troops, you will have to make use of all available resources.\n\n Locate the abandoned GDI base in the area and restore it to operational status. Once that is done, use GDI's own weapons against them.\n\nBe sure that no GDI forces remain alive. + BackgroundVideo: tiberfx.vqa + BriefingVideo: nod8.vqa + LossVideo: flag.vqa + SmudgeLayer@SCORCH: + InitialSmudges: + sc2 44,57 0 + sc1 40,56 0 + sc5 50,55 0 + sc3 45,55 0 + sc2 61,43 0 + sc6 58,42 0 + sc4 61,41 0 + sc1 55,41 0 + sc5 59,39 0 + sc5 53,39 0 + sc4 60,9 0 + sc6 58,9 0 + sc2 57,8 0 + sc3 54,6 0 + sc2 60,5 0 + sc4 55,5 0 + sc6 61,4 0 + sc6 55,4 0 + sc1 57,3 0 + SmudgeLayer@CRATER: + InitialSmudges: + cr1 42,56 0 + cr1 49,55 0 + cr1 51,52 0 + cr1 41,52 0 + cr1 60,43 0 + cr1 59,41 0 + cr1 55,40 0 + cr1 49,40 0 + cr1 53,36 0 + cr1 55,6 0 + cr1 54,5 0 + +Player: + PlayerResources: + DefaultCash: 0 + +CYCL: + 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 + +E2: + Buildable: + Prerequisites: ~pyle + +E4: + Buildable: + Prerequisites: ~hand + +E5: + Buildable: + Prerequisites: ~disabled + +E6: + -RepairsBridges: + +HARV: + Harvester: + SearchFromOrderRadius: 30 + +MTNK: + Buildable: + Prerequisites: ~weap + +HTNK: + Buildable: + Prerequisites: ~disabled + +HQ: + AirstrikePower: + Prerequisites: gdi + SquadSize: 1 + +RMBO: + Buildable: + Prerequisites: ~disabled + +MCV: + Buildable: + Prerequisites: ~disabled + +FTNK: + Buildable: + Prerequisites: ~disabled + +MLRS: + Buildable: + Prerequisites: ~disabled + +MSAM: + Buildable: + Prerequisites: ~disabled + +ATWR: + Buildable: + Prerequisites: ~disabled + +HELI: + Buildable: + Prerequisites: ~disabled + +SBAG: + Buildable: + Queue: Defence.GDI, Defence.Nod + +GTWR: + Buildable: + Queue: Defence.GDI + +A10.IN: + Inherits: A10 + RenderSprites: + Image: A10 + Armament@BOMBS: + Weapon: Napalm.in + +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.in + DisplayBeacon: True + BeaconPoster: airstrike + DisplayRadarPing: True + CameraActor: camera + +BOAT: + Health: + HP: 1500 + AutoTarget: + InitialStance: AttackAnything + RejectsOrders: + Except: Attack + +Camera.Boat: + AlwaysVisible: + Mobile: + TerrainSpeeds: + RevealsShroud: + Range: 4c0 + ScriptTriggers: + +FACT.IN: + Inherits: FACT + RenderSprites: + Image: FACT + ProvidesPrerequisite: + Prerequisite: fact + CustomSellValue: + Value: 12825 + +FACTOUT.IN: + Inherits: FACT + RenderSprites: + Image: fact + ProvidesPrerequisite: + Prerequisite: fact + Capturable: + CaptureThreshold: 100 + +MoneyCrate: + Inherits: ^Crate + GiveCashCrateAction: + Amount: 2000 + UseCashTick: yes + +NUKEOUT.IN: + Inherits: NUKE + RenderSprites: + Image: nuke + Buildable: + Prerequisites: ~disabled + ProvidesPrerequisite: + Prerequisite: anypower + Capturable: + CaptureThreshold: 100 + +PROCOUT.IN: + Inherits: PROC + RenderSprites: + Image: proc + Buildable: + Prerequisites: ~disabled + ProvidesPrerequisite: + Prerequisite: proc + Capturable: + CaptureThreshold: 100 + +TRAN.IN: + Inherits: TRAN + RejectsOrders: + -Selectable: + RenderSprites: + Image: TRAN + Buildable: + Prerequisites: ~disabled diff --git a/mods/cnc/maps/nod08b/weapons.yaml b/mods/cnc/maps/nod08b/weapons.yaml new file mode 100644 index 0000000000..5850590565 --- /dev/null +++ b/mods/cnc/maps/nod08b/weapons.yaml @@ -0,0 +1,7 @@ +Napalm.IN: + Inherits: Napalm + Projectile: GravityBomb + Image: BOMBLET + Warhead@1Dam: SpreadDamage + Spread: 1000 + Damage: 1500 diff --git a/mods/cnc/missions.yaml b/mods/cnc/missions.yaml index b987e860e1..1feabcbd80 100644 --- a/mods/cnc/missions.yaml +++ b/mods/cnc/missions.yaml @@ -24,6 +24,7 @@ Nod Campaign: ./mods/cnc/maps/nod07a ./mods/cnc/maps/nod07b ./mods/cnc/maps/nod08a + ./mods/cnc/maps/nod08b Funpark Campaign: ./mods/cnc/maps/funpark01