Add gdi08a

This commit is contained in:
Michael Silber
2019-09-12 11:13:17 +02:00
committed by abcdefg30
parent df3b6dde34
commit dffa1e45f4
8 changed files with 1389 additions and 0 deletions

View File

@@ -30,6 +30,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tiberian Dawn Lua scripts",
mods\cnc\maps\gdi05b\gdi05b.lua = mods\cnc\maps\gdi05b\gdi05b.lua
mods\cnc\maps\gdi06\gdi06.lua = mods\cnc\maps\gdi06\gdi06.lua
mods\cnc\maps\gdi07\gdi07.lua = mods\cnc\maps\gdi07\gdi07.lua
mods\cnc\maps\gdi08a\gdi08a-AI.lua = mods\cnc\maps\gdi08a\gdi08a-AI.lua
mods\cnc\maps\gdi08a\gdi08a.lua = mods\cnc\maps\gdi08a\gdi08a.lua
mods\cnc\maps\nod01\nod01.lua = mods\cnc\maps\nod01\nod01.lua
mods\cnc\maps\nod02a\nod02a.lua = mods\cnc\maps\nod02a\nod02a.lua
mods\cnc\maps\nod02b\nod02b.lua = mods\cnc\maps\nod02b\nod02b.lua

View File

@@ -0,0 +1,194 @@
--[[
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 = { WaypointGroup3, WaypointGroup4, WaypointGroup5 }
NodBase = { handofnod, nodairfield, nodrefinery, NodYard, nodpower1, nodpower2, nodpower3, nodpower4, gun1, gun2, nodsilo1, nodsilo2, nodsilo3, nodsilo4}
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", "bike", "ltnk", "ltnk" }
StartingCash = 14000
BaseRefinery = { type = "proc", pos = CPos.New(24, 16), cost = 1500 }
BaseGun1 = { type = "gun", pos = CPos.New( 21, 19), cost = 600 }
BaseGun2 = { type = "gun", pos = CPos.New( 26, 21), cost = 600 }
BaseNuke1 = { type = "nuke", pos = CPos.New( 23, 14), cost = 500 }
BaseNuke2 = { type = "nuke", pos = CPos.New( 10, 9), cost = 500 }
BaseNuke3 = { type = "nuke", pos = CPos.New( 6, 8), cost = 500 }
BaseNuke4 = { type = "nuke", pos = CPos.New( 8, 8), cost = 500 }
InfantryProduction = { type = "hand", pos = CPos.New(27, 17), cost = 500 }
VehicleProduction = { type = "afld", pos = CPos.New(27, 14), cost = 2000 }
NodGuards = { Actor154, Actor155, Actor218, Actor219 }
BaseBuildings = { BaseRefinery, BaseNuke1, BaseNuke2, BaseNuke3, BaseNuke4, InfantryProduction, VehicleProduction, BaseGun1, BaseGun2 }
BuildBuilding = function(building, cyard)
if CyardIsBuilding or Nod.Cash < building.cost then
Trigger.AfterDelay(DateTime.Seconds(10), function() BuildBuilding(building, cyard) end)
return
end
CyardIsBuilding = true
Nod.Cash = Nod.Cash - building.cost
Trigger.AfterDelay(Actor.BuildTime(building.type), function()
CyardIsBuilding = false
if cyard.IsDead or cyard.Owner ~= Nod then
Nod.Cash = Nod.Cash + building.cost
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(GDI, actor, 0.75)
end)
end
CheckForHarvester = function()
local harv = Nod.GetActorsByType("harv")
return #harv > 0
end
GuardBase = function()
Utils.Do(NodBase, function(building)
Trigger.OnDamaged(building, function()
Utils.Do(NodGuards, function(guard)
if not guard.IsDead and not building.IsDead then
guard.Stop()
guard.Guard(building)
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 CheckForHarvester() then
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 CheckForHarvester() 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()
Nod.Cash = StartingCash
GuardBase()
end
Trigger.OnAllKilledOrCaptured(NodBase, function()
Utils.Do(Nod.GetGroundAttackers(), IdleHunt)
end)
Trigger.OnKilled(nodrefinery, function()
BuildBuilding(BaseRefinery, NodYard)
end)
Trigger.OnKilled(nodpower1, function()
BuildBuilding(BaseNuke1, NodYard)
end)
Trigger.OnKilled(nodpower2, function()
BuildBuilding(BaseNuke2, NodYard)
end)
Trigger.OnKilled(nodpower3, function()
BuildBuilding(BaseNuke3, NodYard)
end)
Trigger.OnKilled(nodpower4, function()
BuildBuilding(BaseNuke4, NodYard)
end)
Trigger.OnKilled(gun1, function()
BuildBuilding(BaseGun1, NodYard)
end)
Trigger.OnKilled(gun2, function()
BuildBuilding(BaseGun2, NodYard)
end)
Trigger.OnKilled(handofnod, function()
BuildBuilding(InfantryProduction, NodYard)
end)
Trigger.OnKilled(nodairfield, function()
BuildBuilding(VehicleProduction, NodYard)
end)

View File

@@ -0,0 +1,152 @@
--[[
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.
]]
SamSites = { sam1, sam2, sam3 }
WaypointGroup1 = { waypoint4, waypoint5, waypoint6, waypoint7, waypoint10, waypoint11, waypoint12 }
WaypointGroup2 = { waypoint4, waypoint5, waypoint13, waypoint16 }
WaypointGroup3 = { waypoint4, waypoint5, waypoint6, waypoint8 }
WaypointGroup4 = { waypoint4, waypoint5, waypoint6, waypoint7, waypoint9 }
WaypointGroup5 = { waypoint4, waypoint5, waypoint6 }
WaypointGroup6 = { waypoint4, waypoint5, waypoint6, waypoint7, waypoint14, waypoint15 }
WaypointGroup7 = { waypoint4, waypoint5 }
WaypointGroupCiv = { waypoint0, waypoint1, waypoint2, waypoint3 }
Atk1 = { units = { ['ltnk'] = 1 }, waypoints = WaypointGroup1, delay = 0 }
Atk2 = { units = { ['ltnk'] = 1 }, waypoints = WaypointGroup2, delay = 0 }
Civ1 = { units = { ['c3'] = 1 }, waypoints = WaypointGroupCiv, delay = 0 }
Nod1 = { units = { ['e1'] = 2, ['e2'] = 2, ['e4'] = 2 }, waypoints = WaypointGroup3, delay = 90 }
Nod2 = { units = { ['e3'] = 2, ['e4'] = 2 }, waypoints = WaypointGroup3, delay = 130 }
Nod3 = { units = { ['e1'] = 2, ['e3'] = 3 }, waypoints = WaypointGroup3, delay = 50 }
Nod4 = { units = { ['bggy'] = 2 }, waypoints = WaypointGroup3, delay = 200 }
Nod5 = { units = { ['e4'] = 2, ['ltnk'] = 1 }, waypoints = WaypointGroup1, delay = 250 }
Nod6 = { units = { ['arty'] = 1 }, waypoints = WaypointGroup4, delay = 40 }
Nod7 = { units = { ['e3'] = 2, ['e4'] = 2 }, waypoints = WaypointGroup4, delay = 40 }
Nod8 = { units = { ['ltnk'] = 1, ['bggy'] = 1 }, waypoints = WaypointGroup3, delay = 170 }
Auto1 = { units = { ['e1'] = 2, ['e2'] = 2 }, waypoints = WaypointGroup5, delay = 50 }
Auto2 = { units = { ['e3'] = 3, ['e4'] = 2 }, waypoints = WaypointGroup3, delay = 50 }
Auto3 = { units = { ['ltnk'] = 1, ['bggy'] = 1 }, waypoints = WaypointGroup3, delay = 50 }
Auto4 = { units = { ['bggy'] = 2 }, waypoints = WaypointGroup7, delay = 50 }
Auto5 = { units = { ['ltnk'] = 1 }, waypoints = WaypointGroup6, delay = 50 }
Auto6 = { units = { ['arty'] = 1 }, waypoints = WaypointGroup4, delay = 50 }
Auto7 = { units = { ['e3'] = 3, ['e4'] = 2 }, waypoints = WaypointGroup6, delay = 50 }
AutoAttackWaves = { Atk1, Atk2, Nod1, Nod2, Nod3, Nod4, Nod5, Nod6, Nod7, Nod8, Auto1, Auto2, Auto3, Auto4, Auto5, Auto6, Auto7 }
StationaryGuardUnits = { Actor181, Actor182, Actor183, Actor184, Actor198, Actor199, Actor157, Actor175, Actor176, Actor173, Actor174, Actor158, Actor200, Actor159, Actor179, Actor180, Actor184, Actor185, Actor216, Actor217, Actor153, Actor215, Actor214, Actor213}
DamagedGDIAssets = { Actor126, Actor127, Actor128, Actor129, Actor130,Actor131, Actor132, Actor133, Actor134, Actor135, Actor136, Actor137, Actor138, Actor160, Actor161, Actor162, Actor163, Actor164, Actor165, Actor166, Actor168, Actor169, Actor170}
StartStationaryGuards = function(StationaryGuards)
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
SendAttackWave = function(team)
for type, amount in pairs(team.units) do
count = 0
local actors = Nod.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
CeckRepairGDIAssetsObjective = function()
local failed = false
local repaired = true
Utils.Do(DamagedGDIAssets, function(actor)
if actor.IsDead then
failed = true
elseif actor.Health < actor.MaxHealth then
repaired = false
end
end)
if failed then
GDI.MarkFailedObjective(RepairAssets)
return
elseif repaired then
GDI.MarkCompletedObjective(RepairAssets)
return
end
Trigger.AfterDelay(DateTime.Seconds(3), function() CeckRepairGDIAssetsObjective() end)
end
WorldLoaded = function()
GDI = Player.GetPlayer("GDI")
Nod = Player.GetPlayer("Nod")
Camera.Position = DefaultCameraPosition.CenterPosition
StartStationaryGuards(StationaryGuardUnits)
StartAI()
InitObjectives(GDI)
SecureArea = GDI.AddObjective("Destroy the Nod strike force.")
KillGDI = Nod.AddObjective("Kill all enemies!")
RepairAssets = GDI.AddObjective("Repair GDI base and vehicles.", "Secondary", false)
Trigger.AfterDelay(DateTime.Seconds(5), function() CeckRepairGDIAssetsObjective() end)
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)
local InitialArrivingUnits = { Actor166 }
Utils.Do(InitialArrivingUnits, function(unit)
unit.Move(unit.Location + CVec.New(1, 1), 0)
end)
Trigger.AfterDelay(DateTime.Minutes(1), function() SendWaves(1, AutoAttackWaves) end)
Trigger.AfterDelay(DateTime.Minutes(2), function() ProduceInfantry(handofnod) end)
Trigger.AfterDelay(DateTime.Minutes(2), function() ProduceVehicle(nodairfield) 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

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -0,0 +1,886 @@
MapFormat: 11
RequiresMod: cnc
Title: 08a: Restore GDI Presence Near Salzburg
Author: Westwood Studios
Tileset: WINTER
MapSize: 64,64
Bounds: 3,7,51,50
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: 53,56
Owner: Neutral
Actor1: sbag
Location: 52,56
Owner: Neutral
Actor2: sbag
Location: 51,56
Owner: Neutral
Actor3: sbag
Location: 50,56
Owner: Neutral
Actor4: sbag
Location: 49,56
Owner: Neutral
Actor5: sbag
Location: 48,56
Owner: Neutral
Actor6: sbag
Location: 47,56
Owner: Neutral
Actor7: sbag
Location: 46,56
Owner: Neutral
Actor8: sbag
Location: 45,56
Owner: Neutral
Actor9: sbag
Location: 44,56
Owner: Neutral
Actor10: sbag
Location: 43,56
Owner: Neutral
Actor11: sbag
Location: 41,56
Owner: Neutral
Actor12: sbag
Location: 40,56
Owner: Neutral
Actor13: wood
Location: 5,56
Owner: Neutral
Actor14: wood
Location: 4,56
Owner: Neutral
Actor15: wood
Location: 3,56
Owner: Neutral
Actor16: sbag
Location: 53,55
Owner: Neutral
Actor17: sbag
Location: 40,55
Owner: Neutral
Actor18: v18
Location: 5,55
Owner: Neutral
Actor19: v17
Location: 4,55
Owner: Neutral
Actor20: sbag
Location: 53,54
Owner: Neutral
Actor21: sbag
Location: 40,54
Owner: Neutral
Actor22: wood
Location: 17,54
Owner: Neutral
Actor23: wood
Location: 16,54
Owner: Neutral
Actor24: wood
Location: 15,54
Owner: Neutral
Actor25: wood
Location: 14,54
Owner: Neutral
Actor26: wood
Location: 11,54
Owner: Neutral
Actor27: wood
Location: 10,54
Owner: Neutral
Actor28: v14
Location: 6,54
Owner: Neutral
Actor29: v15
Location: 5,54
Owner: Neutral
Actor30: v16
Location: 4,54
Owner: Neutral
Actor31: sbag
Location: 53,53
Owner: Neutral
Actor32: wood
Location: 6,53
Owner: Neutral
Actor33: wood
Location: 17,52
Owner: Neutral
Actor34: wood
Location: 16,52
Owner: Neutral
Actor35: wood
Location: 15,52
Owner: Neutral
Actor36: wood
Location: 14,52
Owner: Neutral
Actor37: wood
Location: 11,52
Owner: Neutral
Actor38: wood
Location: 10,52
Owner: Neutral
Actor39: sbag
Location: 53,51
Owner: Neutral
Actor40: sbag
Location: 53,50
Owner: Neutral
Actor41: sbag
Location: 40,50
Owner: Neutral
Actor42: sbag
Location: 53,49
Owner: Neutral
Actor43: sbag
Location: 40,49
Owner: Neutral
Actor44: sbag
Location: 53,48
Owner: Neutral
Actor45: sbag
Location: 53,47
Owner: Neutral
Actor46: sbag
Location: 40,47
Owner: Neutral
Actor47: sbag
Location: 53,46
Owner: Neutral
Actor48: sbag
Location: 52,46
Owner: Neutral
Actor49: sbag
Location: 51,46
Owner: Neutral
Actor50: sbag
Location: 50,46
Owner: Neutral
Actor51: sbag
Location: 49,46
Owner: Neutral
Actor52: sbag
Location: 48,46
Owner: Neutral
Actor53: sbag
Location: 42,46
Owner: Neutral
Actor54: sbag
Location: 41,46
Owner: Neutral
Actor55: sbag
Location: 40,46
Owner: Neutral
Actor56: t01
Location: 33,32
Owner: Neutral
Actor57: t01
Location: 33,34
Owner: Neutral
Actor58: tc01
Location: 47,27
Owner: Neutral
Actor59: t01
Location: 42,18
Owner: Neutral
Actor60: t01
Location: 41,16
Owner: Neutral
Actor61: t01
Location: 36,18
Owner: Neutral
Actor62: t01
Location: 15,50
Owner: Neutral
Actor63: t01
Location: 6,54
Owner: Neutral
Actor64: t01
Location: 11,48
Owner: Neutral
Actor65: tc01
Location: 14,33
Owner: Neutral
Actor66: tc04
Location: 17,35
Owner: Neutral
Actor67: tc01
Location: 9,19
Owner: Neutral
Actor68: tc04
Location: 11,20
Owner: Neutral
Actor69: t06
Location: 37,8
Owner: Neutral
Actor70: t03
Location: 33,8
Owner: Neutral
Actor71: t02
Location: 36,9
Owner: Neutral
Actor72: t01
Location: 32,7
Owner: Neutral
Actor73: tc04
Location: 50,9
Owner: Neutral
Actor74: tc01
Location: 45,7
Owner: Neutral
Actor75: tc01
Location: 38,13
Owner: Neutral
Actor76: tc02
Location: 35,22
Owner: Neutral
Actor77: tc05
Location: 32,21
Owner: Neutral
Actor78: t10
Location: 17,47
Owner: Neutral
Actor79: t13
Location: 16,50
Owner: Neutral
Actor80: tc01
Location: 15,48
Owner: Neutral
Actor81: tc02
Location: 6,51
Owner: Neutral
Actor82: tc02
Location: 3,47
Owner: Neutral
Actor83: tc04
Location: 3,51
Owner: Neutral
Actor84: tc04
Location: 5,47
Owner: Neutral
Actor85: tc04
Location: 9,54
Owner: Neutral
Actor86: tc04
Location: 3,40
Owner: Neutral
Actor87: t13
Location: 4,42
Owner: Neutral
Actor88: t11
Location: 10,12
Owner: Neutral
Actor89: t15
Location: 4,10
Owner: Neutral
Actor90: t16
Location: 3,9
Owner: Neutral
Actor91: tc02
Location: 5,12
Owner: Neutral
Actor92: tc01
Location: 4,7
Owner: Neutral
Actor93: tc04
Location: 20,11
Owner: Neutral
Actor94: tc04
Location: 19,47
Owner: Neutral
Actor95: tc05
Location: 20,49
Owner: Neutral
Actor96: tc04
Location: 40,17
Owner: Neutral
Actor97: tc01
Location: 44,36
Owner: Neutral
Actor98: tc04
Location: 39,37
Owner: Neutral
Actor99: tc02
Location: 40,30
Owner: Neutral
Actor100: tc02
Location: 30,32
Owner: Neutral
Actor101: t10
Location: 32,33
Owner: Neutral
Actor102: tc04
Location: 37,54
Owner: Neutral
Actor103: tc02
Location: 34,53
Owner: Neutral
Actor104: t01
Location: 31,53
Owner: Neutral
Actor105: t01
Location: 16,54
Owner: Neutral
Actor106: t02
Location: 18,55
Owner: Neutral
Actor107: t11
Location: 25,32
Owner: Neutral
Actor108: t11
Location: 41,44
Owner: Neutral
Actor109: tc01
Location: 51,44
Owner: Neutral
Actor110: tc04
Location: 27,40
Owner: Neutral
Actor111: tc05
Location: 30,42
Owner: Neutral
Actor112: t07
Location: 31,39
Owner: Neutral
Actor113: t06
Location: 26,42
Owner: Neutral
Actor114: t03
Location: 28,43
Owner: Neutral
sam1: sam
Location: 11,20
Owner: Nod
sam2: sam
Location: 33,18
Owner: Nod
sam3: sam
Location: 16,7
Owner: Nod
Actor118: v05
Location: 17,49
Owner: Neutral
Actor119: v07
Location: 9,49
Owner: Neutral
Actor120: v06
Location: 4,53
Owner: Neutral
Actor121: v05
Location: 6,49
Owner: Neutral
Actor122: v04
Location: 4,50
Owner: Neutral
Actor123: v03
Location: 10,50
Owner: Neutral
Actor124: v01
Location: 3,48
Owner: Neutral
Actor125: v06
Location: 20,49
Owner: Neutral
Actor126: gtwr
Location: 41,54
Owner: GDI
Health: 41
Actor127: gtwr
Location: 41,50
Owner: GDI
Health: 16
Actor128: hq
Location: 51,47
Owner: GDI
Health: 39
Actor129: proc
Location: 44,46
Owner: GDI
Health: 33
FreeActor: False
Actor130: silo
Location: 49,54
Owner: GDI
Health: 53
Actor131: silo
Location: 47,47
Owner: GDI
Health: 20
Actor132: silo
Location: 47,53
Owner: GDI
Health: 13
Actor133: silo
Location: 51,54
Owner: GDI
Health: 28
Actor134: nuke
Location: 49,51
Owner: GDI
Health: 14
Actor135: nuke
Location: 49,48
Owner: GDI
Health: 20
Actor136: nuke
Location: 51,50
Owner: GDI
Health: 35
Actor137: pyle
Location: 47,49
Owner: GDI
Health: 18
Actor138: fix
Location: 44,52
Owner: GDI
Health: 28
gun1: gun
Location: 21,19
Owner: Nod
NodYard: fact
Location: 7,11
Owner: Nod
nodrefinery: proc
Location: 24,16
Owner: Nod
FreeActor: False
nodsilo1: silo
Location: 29,17
Owner: Nod
nodsilo2: silo
Location: 9,7
Owner: Nod
nodsilo3: silo
Location: 12,9
Owner: Nod
nodsilo4: silo
Location: 11,7
Owner: Nod
nodairfield: afld
Location: 27,14
Owner: Nod
nodpower1: nuke
Location: 23,14
Owner: Nod
nodpower2: nuke
Location: 10,9
Owner: Nod
nodpower3: nuke
Location: 6,8
Owner: Nod
nodpower4: nuke
Location: 8,8
Owner: Nod
handofnod: hand
Location: 27,17
Owner: Nod
gun2: gun
Location: 26,21
Owner: Nod
Actor153: arty
Location: 4,12
Owner: Nod
Facing: 127
Actor154: bggy
Location: 20,18
Owner: Nod
Actor155: ltnk
Location: 19,18
Owner: Nod
Actor156: bggy
Location: 10,21
Owner: Nod
Facing: 95
Actor157: ltnk
Location: 40,35
Owner: Nod
Facing: 159
Actor158: ltnk
Location: 45,23
Owner: Nod
Facing: 95
Actor159: ltnk
Location: 41,14
Owner: Nod
Facing: 159
Actor160: mtnk
Location: 42,55
Owner: GDI
Health: 35
Facing: 223
Actor161: mtnk
Location: 33,52
Owner: GDI
Health: 43
Facing: 31
Actor162: apc
Location: 37,50
Owner: GDI
Health: 68
Facing: 127
Actor163: apc
Location: 39,48
Owner: GDI
Health: 45
Facing: 127
Actor164: msam
Location: 42,49
Owner: GDI
Health: 40
Facing: 95
Actor165: msam
Location: 41,51
Owner: GDI
Health: 50
Facing: 159
Actor166: msam
Location: 33,48
Owner: GDI
Health: 65
Facing: 159
Actor167: harv
Location: 23,23
Owner: Nod
Facing: 95
Actor168: harv
Location: 38,53
Owner: GDI
Health: 51
Facing: 31
Actor169: jeep
Location: 36,52
Owner: GDI
Health: 72
Facing: 95
Actor170: jeep
Location: 34,51
Owner: GDI
Health: 31
Facing: 159
Actor171: arty
Location: 19,17
Owner: Nod
Actor172: ltnk
Location: 22,11
Owner: Nod
Facing: 159
Actor173: e1
Location: 45,36
Owner: Nod
SubCell: 3
Actor174: e1
Location: 44,36
Owner: Nod
SubCell: 4
Actor175: e3
Location: 41,36
Owner: Nod
Facing: 159
SubCell: 2
Actor176: e3
Location: 41,36
Owner: Nod
Facing: 159
SubCell: 3
Actor177: e3
Location: 42,17
Owner: Nod
Facing: 159
SubCell: 0
Actor178: e3
Location: 40,17
Owner: Nod
Facing: 159
SubCell: 4
Actor179: e4
Location: 42,15
Owner: Nod
Facing: 159
SubCell: 2
Actor180: e4
Location: 42,15
Owner: Nod
Facing: 159
SubCell: 3
Actor181: e1
Location: 16,53
Owner: Nod
Facing: 191
SubCell: 3
Actor182: e1
Location: 15,53
Owner: Nod
Facing: 191
SubCell: 2
Actor183: e1
Location: 17,53
Owner: Nod
Facing: 191
SubCell: 3
Actor184: e1
Location: 16,53
Owner: Nod
Facing: 191
SubCell: 2
Actor185: c3
Location: 18,50
Owner: Neutral
Facing: 159
SubCell: 1
Actor186: e1
Location: 46,51
Owner: GDI
Facing: 159
SubCell: 1
Actor187: e1
Location: 44,52
Owner: GDI
Health: 87
Facing: 223
SubCell: 2
Actor188: e1
Location: 43,53
Owner: GDI
Health: 31
Facing: 31
SubCell: 4
Actor189: e1
Location: 42,54
Owner: GDI
Health: 75
SubCell: 2
Actor190: e1
Location: 39,52
Owner: GDI
Health: 77
Facing: 159
SubCell: 4
Actor191: e1
Location: 42,53
Owner: GDI
Health: 69
Facing: 159
SubCell: 0
Actor192: e2
Location: 40,53
Owner: GDI
Health: 75
Facing: 31
SubCell: 2
Actor193: e2
Location: 45,51
Owner: GDI
Facing: 127
SubCell: 1
Actor194: e2
Location: 38,50
Owner: GDI
Health: 27
Facing: 223
SubCell: 0
Actor195: e2
Location: 46,52
Owner: GDI
Facing: 31
SubCell: 1
Actor196: e2
Location: 36,53
Owner: GDI
Health: 57
Facing: 159
SubCell: 0
Actor197: e2
Location: 37,54
Owner: GDI
Facing: 31
SubCell: 1
Actor198: e3
Location: 27,40
Owner: Nod
SubCell: 4
Actor199: e3
Location: 29,40
Owner: Nod
SubCell: 3
Actor200: e3
Location: 48,27
Owner: Nod
SubCell: 3
Actor201: e1
Location: 27,21
Owner: Nod
SubCell: 3
Actor202: e1
Location: 27,21
Owner: Nod
SubCell: 4
Actor203: e1
Location: 27,21
Owner: Nod
SubCell: 2
Actor204: e1
Location: 27,21
Owner: Nod
SubCell: 1
Actor205: e3
Location: 28,21
Owner: Nod
SubCell: 4
Actor206: e3
Location: 28,21
Owner: Nod
SubCell: 2
Actor207: e3
Location: 29,21
Owner: Nod
SubCell: 1
Actor208: e3
Location: 29,21
Owner: Nod
SubCell: 3
Actor209: e4
Location: 30,21
Owner: Nod
SubCell: 1
Actor210: e4
Location: 30,21
Owner: Nod
SubCell: 3
Actor211: e4
Location: 30,21
Owner: Nod
SubCell: 2
Actor212: e4
Location: 30,21
Owner: Nod
SubCell: 4
Actor213: e1
Location: 13,12
Owner: Nod
SubCell: 3
Actor214: e1
Location: 14,12
Owner: Nod
SubCell: 1
Actor215: e1
Location: 15,11
Owner: Nod
SubCell: 0
Actor216: e3
Location: 5,7
Owner: Nod
SubCell: 3
Actor217: e3
Location: 7,7
Owner: Nod
SubCell: 3
Actor218: e3
Location: 19,15
Owner: Nod
SubCell: 1
Actor219: e3
Location: 20,16
Owner: Nod
SubCell: 1
DefaultChinookTarget: waypoint
Location: 41,56
Owner: Neutral
DefaultCameraPosition: waypoint
Location: 41,49
Owner: Neutral
waypoint16: waypoint
Location: 10,22
Owner: Neutral
waypoint15: waypoint
Location: 53,45
Owner: Neutral
waypoint14: waypoint
Location: 53,40
Owner: Neutral
waypoint13: waypoint
Location: 13,26
Owner: Neutral
waypoint12: waypoint
Location: 52,25
Owner: Neutral
waypoint11: waypoint
Location: 36,27
Owner: Neutral
waypoint10: waypoint
Location: 38,32
Owner: Neutral
waypoint9: waypoint
Location: 47,43
Owner: Neutral
waypoint8: waypoint
Location: 24,55
Owner: Neutral
waypoint7: waypoint
Location: 43,40
Owner: Neutral
waypoint6: waypoint
Location: 24,38
Owner: Neutral
waypoint5: waypoint
Location: 20,29
Owner: Neutral
waypoint4: waypoint
Location: 23,24
Owner: Neutral
waypoint3: waypoint
Location: 5,43
Owner: Neutral
waypoint2: waypoint
Location: 8,47
Owner: Neutral
waypoint1: waypoint
Location: 8,53
Owner: Neutral
waypoint0: waypoint
Location: 19,53
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml

View File

@@ -0,0 +1,154 @@
World:
LuaScript:
Scripts: campaign-global.lua, gdi08a.lua, gdi08a-AI.lua
MusicPlaylist:
StartingMusic: march
VictoryMusic: gdi_win1
MissionData:
Briefing: U.N. Sanction has cut funding to the Global Defense Initiative. Field Units are helpless.\n\nUse the repair facility to keep your units in the field long enough to destroy the Nod base in this region.\n\nAll Nod units and structures must be destroyed.
BriefingVideo: gdi8a.vqa
BackgroundVideo: tbrinfo1.vqa
WinVideo: paratrop.vqa
LossVideo: gameover.vqa
SmudgeLayer@SCORCH:
InitialSmudges:
42,56: sc1,0
41,52: sc6,0
38,51: sc2,0
43,50: sc3,0
40,48: sc4,0
47,46: sc5,0
ATWR:
Buildable:
Prerequisites: ~disabled
NUK2:
Buildable:
Prerequisites: ~disabled
HPAD:
Buildable:
Prerequisites: ~disabled
BRIK:
Buildable:
Prerequisites: ~disabled
EYE:
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: ~disabled
E4:
Buildable:
Prerequisites: barracks
E5:
Buildable:
Prerequisites: ~disabled
MLRS:
Buildable:
Prerequisites: ~disabled
CYCL:
Buildable:
Prerequisites: ~disabled
GTWR:
Buildable:
Prerequisites: ~disabled
SBAG:
Buildable:
Queue: Defence.GDI, Defence.Nod
GUN:
Buildable:
Queue: Defence.GDI, Defence.Nod
C3:
Tooltip:
Name: Farmer Mike
SAM:
Buildable:
Prerequisites: ~disabled
^Bridge:
DamageMultiplier@INVULNERABLE:
Modifier: 0
BRIDGEHUT:
-Targetable:
airstrike.proxy:
AirstrikePower:
SquadSize: 2
SquadOffset: -1536, 1024, 0
HQ:
Tooltip:
-AirstrikePower:
Buildable:
Description: Provides an overview of the battlefield.\n Requires power to operate.
AFLD:
RallyPoint:
Offset: -5, 2

View File

@@ -9,6 +9,7 @@ GDI Campaign:
gdi05b
gdi06
gdi07
gdi08a
Nod Campaign:
nod01