Initial commit: OpenRA game engine
Fork from OpenRA/OpenRA with one-click launch script (start-ra.cmd) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
BIN
mods/cnc/maps/nod05/map.bin
Normal file
BIN
mods/cnc/maps/nod05/map.bin
Normal file
Binary file not shown.
2
mods/cnc/maps/nod05/map.ftl
Normal file
2
mods/cnc/maps/nod05/map.ftl
Normal file
@@ -0,0 +1,2 @@
|
||||
## rules.yaml
|
||||
briefing = Our brothers within GDI report that A-10 strike jets are set to be deployed here soon. New Surface to Air Missiles have been delivered to aid you. Use the SAMs to defend your base, then seek out the GDI base and destroy it.
|
||||
BIN
mods/cnc/maps/nod05/map.png
Normal file
BIN
mods/cnc/maps/nod05/map.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
380
mods/cnc/maps/nod05/map.yaml
Normal file
380
mods/cnc/maps/nod05/map.yaml
Normal file
@@ -0,0 +1,380 @@
|
||||
MapFormat: 12
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
Title: 05: Warthog Hunt
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
Tileset: DESERT
|
||||
|
||||
MapSize: 64,64
|
||||
|
||||
Bounds: 4,12,57,45
|
||||
|
||||
Visibility: MissionSelector
|
||||
|
||||
Categories: Campaign
|
||||
|
||||
LockPreview: True
|
||||
|
||||
Players:
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
Faction: gdi
|
||||
Color: F5D378
|
||||
Allies: GDI
|
||||
Enemies: Nod
|
||||
Bot: campaign
|
||||
PlayerReference@Neutral:
|
||||
Name: Neutral
|
||||
OwnsWorld: True
|
||||
NonCombatant: True
|
||||
Faction: gdi
|
||||
PlayerReference@Civilians:
|
||||
Name: Civilians
|
||||
NonCombatant: True
|
||||
Faction: gdi
|
||||
Enemies: Nod
|
||||
Bot: campaign
|
||||
PlayerReference@Nod:
|
||||
Name: Nod
|
||||
Playable: True
|
||||
AllowBots: False
|
||||
Required: True
|
||||
LockFaction: True
|
||||
Faction: nod
|
||||
LockColor: True
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: Nod
|
||||
Enemies: GDI, Civilians
|
||||
|
||||
Actors:
|
||||
Actor0: sbag
|
||||
Location: 30,22
|
||||
Owner: GDI
|
||||
Actor1: sbag
|
||||
Location: 29,22
|
||||
Owner: GDI
|
||||
Actor2: sbag
|
||||
Location: 28,22
|
||||
Owner: GDI
|
||||
Actor3: sbag
|
||||
Location: 23,22
|
||||
Owner: GDI
|
||||
Actor4: sbag
|
||||
Location: 22,22
|
||||
Owner: GDI
|
||||
Actor5: sbag
|
||||
Location: 21,22
|
||||
Owner: GDI
|
||||
Actor6: sbag
|
||||
Location: 20,22
|
||||
Owner: GDI
|
||||
Actor7: sbag
|
||||
Location: 19,22
|
||||
Owner: GDI
|
||||
Actor8: sbag
|
||||
Location: 30,21
|
||||
Owner: GDI
|
||||
Actor9: sbag
|
||||
Location: 19,21
|
||||
Owner: GDI
|
||||
Actor10: sbag
|
||||
Location: 18,21
|
||||
Owner: GDI
|
||||
Actor11: sbag
|
||||
Location: 30,20
|
||||
Owner: GDI
|
||||
Actor12: sbag
|
||||
Location: 30,19
|
||||
Owner: GDI
|
||||
Actor13: sbag
|
||||
Location: 30,18
|
||||
Owner: GDI
|
||||
Actor14: sbag
|
||||
Location: 30,17
|
||||
Owner: GDI
|
||||
Actor15: sbag
|
||||
Location: 16,15
|
||||
Owner: GDI
|
||||
Actor16: sbag
|
||||
Location: 16,14
|
||||
Owner: GDI
|
||||
Actor17: sbag
|
||||
Location: 28,13
|
||||
Owner: GDI
|
||||
Actor18: sbag
|
||||
Location: 27,13
|
||||
Owner: GDI
|
||||
Actor19: sbag
|
||||
Location: 26,13
|
||||
Owner: GDI
|
||||
Actor20: sbag
|
||||
Location: 25,13
|
||||
Owner: GDI
|
||||
Actor21: sbag
|
||||
Location: 24,13
|
||||
Owner: GDI
|
||||
Actor22: sbag
|
||||
Location: 23,13
|
||||
Owner: GDI
|
||||
Actor23: sbag
|
||||
Location: 22,13
|
||||
Owner: GDI
|
||||
Actor24: sbag
|
||||
Location: 21,13
|
||||
Owner: GDI
|
||||
Actor25: sbag
|
||||
Location: 20,13
|
||||
Owner: GDI
|
||||
Actor26: sbag
|
||||
Location: 19,13
|
||||
Owner: GDI
|
||||
Actor27: sbag
|
||||
Location: 18,13
|
||||
Owner: GDI
|
||||
Actor28: sbag
|
||||
Location: 17,13
|
||||
Owner: GDI
|
||||
Actor29: sbag
|
||||
Location: 16,13
|
||||
Owner: GDI
|
||||
Actor30: t18
|
||||
Location: 52,25
|
||||
Owner: Neutral
|
||||
Actor31: t18
|
||||
Location: 54,31
|
||||
Owner: Neutral
|
||||
Actor32: t18
|
||||
Location: 17,39
|
||||
Owner: Neutral
|
||||
Actor33: t08
|
||||
Location: 17,43
|
||||
Owner: Neutral
|
||||
Actor34: t08
|
||||
Location: 23,37
|
||||
Owner: Neutral
|
||||
Actor35: t08
|
||||
Location: 22,35
|
||||
Owner: Neutral
|
||||
Actor36: t08
|
||||
Location: 15,37
|
||||
Owner: Neutral
|
||||
Actor37: rock2
|
||||
Location: 8,50
|
||||
Owner: Neutral
|
||||
Actor38: rock5
|
||||
Location: 18,49
|
||||
Owner: Neutral
|
||||
Actor39: t08
|
||||
Location: 19,48
|
||||
Owner: Neutral
|
||||
Actor40: t08
|
||||
Location: 21,52
|
||||
Owner: Neutral
|
||||
Actor42: t08
|
||||
Location: 54,56
|
||||
Owner: Neutral
|
||||
Actor43: t08
|
||||
Location: 31,49
|
||||
Owner: Neutral
|
||||
Actor44: t08
|
||||
Location: 10,38
|
||||
Owner: Neutral
|
||||
Actor45: t08
|
||||
Location: 6,41
|
||||
Owner: Neutral
|
||||
Actor46: t08
|
||||
Location: 5,30
|
||||
Owner: Neutral
|
||||
Actor47: t08
|
||||
Location: 10,16
|
||||
Owner: Neutral
|
||||
Actor48: t08
|
||||
Location: 15,14
|
||||
Owner: Neutral
|
||||
Actor49: t08
|
||||
Location: 19,23
|
||||
Owner: Neutral
|
||||
Actor50: t08
|
||||
Location: 38,43
|
||||
Owner: Neutral
|
||||
Actor51: t18
|
||||
Location: 47,21
|
||||
Owner: Neutral
|
||||
Actor52: t18
|
||||
Location: 48,20
|
||||
Owner: Neutral
|
||||
Actor53: t18
|
||||
Location: 30,21
|
||||
Owner: Neutral
|
||||
Actor65: v24
|
||||
Location: 18,38
|
||||
Owner: Civilians
|
||||
Actor66: v32
|
||||
Location: 19,41
|
||||
Owner: Civilians
|
||||
Actor67: v30
|
||||
Location: 15,40
|
||||
Owner: Civilians
|
||||
Actor68: v29
|
||||
Location: 17,40
|
||||
Owner: Civilians
|
||||
Actor69: v28
|
||||
Location: 23,38
|
||||
Owner: Civilians
|
||||
Actor70: v27
|
||||
Location: 23,36
|
||||
Owner: Civilians
|
||||
Actor71: v27
|
||||
Location: 22,36
|
||||
Owner: Civilians
|
||||
Actor72: v26
|
||||
Location: 16,37
|
||||
Owner: Civilians
|
||||
Actor82: mtnk
|
||||
Location: 21,21
|
||||
Owner: GDI
|
||||
Actor83: mtnk
|
||||
Location: 17,14
|
||||
Owner: GDI
|
||||
Actor84: jeep
|
||||
Location: 29,21
|
||||
Owner: GDI
|
||||
Actor85: jeep
|
||||
Location: 29,20
|
||||
Owner: GDI
|
||||
Actor86: e2
|
||||
Location: 58,30
|
||||
Owner: GDI
|
||||
SubCell: 2
|
||||
Actor87: e2
|
||||
Location: 57,29
|
||||
Owner: GDI
|
||||
SubCell: 0
|
||||
Actor88: e1
|
||||
Location: 32,49
|
||||
Owner: GDI
|
||||
SubCell: 1
|
||||
Actor89: e1
|
||||
Location: 7,30
|
||||
Owner: GDI
|
||||
Facing: 512
|
||||
SubCell: 3
|
||||
Actor90: e2
|
||||
Location: 6,30
|
||||
Owner: GDI
|
||||
Facing: 384
|
||||
SubCell: 1
|
||||
Actor91: e2
|
||||
Location: 8,28
|
||||
Owner: GDI
|
||||
Facing: 640
|
||||
SubCell: 3
|
||||
Actor92: e2
|
||||
Location: 39,43
|
||||
Owner: GDI
|
||||
SubCell: 1
|
||||
waypoint27: waypoint
|
||||
Location: 39,36
|
||||
Owner: Neutral
|
||||
waypoint26: waypoint
|
||||
Location: 44,48
|
||||
Owner: Neutral
|
||||
waypoint12: waypoint
|
||||
Location: 6,20
|
||||
Owner: Neutral
|
||||
waypoint11: waypoint
|
||||
Location: 5,26
|
||||
Owner: Neutral
|
||||
waypoint10: waypoint
|
||||
Location: 35,13
|
||||
Owner: Neutral
|
||||
waypoint9: waypoint
|
||||
Location: 52,13
|
||||
Owner: Neutral
|
||||
waypoint8: waypoint
|
||||
Location: 47,55
|
||||
Owner: Neutral
|
||||
waypoint7: waypoint
|
||||
Location: 26,54
|
||||
Owner: Neutral
|
||||
waypoint6: waypoint
|
||||
Location: 56,37
|
||||
Owner: Neutral
|
||||
waypoint5: waypoint
|
||||
Location: 30,52
|
||||
Owner: Neutral
|
||||
waypoint4: waypoint
|
||||
Location: 12,47
|
||||
Owner: Neutral
|
||||
waypoint3: waypoint
|
||||
Location: 11,35
|
||||
Owner: Neutral
|
||||
waypoint2: waypoint
|
||||
Location: 55,42
|
||||
Owner: Neutral
|
||||
waypoint1: waypoint
|
||||
Location: 26,32
|
||||
Owner: Neutral
|
||||
waypoint0: waypoint
|
||||
Location: 26,25
|
||||
Owner: Neutral
|
||||
UnitsEntry: waypoint
|
||||
Location: 52,56
|
||||
Owner: Neutral
|
||||
UnitsRallyVehicle: waypoint
|
||||
Location: 51,49
|
||||
Owner: Neutral
|
||||
UnitsRallyRocket: waypoint
|
||||
Location: 49,49
|
||||
Owner: Neutral
|
||||
UnitsRallyGunner: waypoint
|
||||
Location: 53,49
|
||||
Owner: Neutral
|
||||
UnitsRallyMCV: waypoint
|
||||
Location: 51,52
|
||||
Owner: Neutral
|
||||
Tower1: gtwr
|
||||
Location: 28,21
|
||||
Owner: GDI
|
||||
Tower2: gtwr
|
||||
Location: 23,21
|
||||
Owner: GDI
|
||||
CommCenter: hq
|
||||
Location: 21,14
|
||||
Owner: GDI
|
||||
Silo1: silo
|
||||
Location: 16,20
|
||||
Owner: GDI
|
||||
Silo2: silo
|
||||
Location: 16,18
|
||||
Owner: GDI
|
||||
Silo3: silo
|
||||
Location: 16,16
|
||||
Owner: GDI
|
||||
Refinery: proc
|
||||
Location: 18,17
|
||||
Owner: GDI
|
||||
Barracks: pyle
|
||||
Location: 25,18
|
||||
Owner: GDI
|
||||
Plant1: nuk2
|
||||
Location: 21,17
|
||||
Owner: GDI
|
||||
Plant2: nuke
|
||||
Location: 23,17
|
||||
Owner: GDI
|
||||
Yard: fact
|
||||
Location: 18,14
|
||||
Owner: GDI
|
||||
Factory: weap
|
||||
Location: 26,14
|
||||
Owner: GDI
|
||||
|
||||
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
|
||||
|
||||
FluentMessages: cnc|fluent/lua.ftl, cnc|fluent/campaign.ftl, map.ftl
|
||||
202
mods/cnc/maps/nod05/nod05.lua
Normal file
202
mods/cnc/maps/nod05/nod05.lua
Normal file
@@ -0,0 +1,202 @@
|
||||
--[[
|
||||
Copyright (c) The OpenRA Developers and Contributors
|
||||
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.
|
||||
]]
|
||||
|
||||
NodUnitsVehicle = { 'bike', 'bike', 'bggy', 'ltnk', 'bike', 'bike' }
|
||||
NodUnitsRocket = { 'e1', 'e1', 'e1', 'e1' }
|
||||
NodUnitsGunner = { 'e3', 'e3', 'e3', 'e3' }
|
||||
GDIReinforceUnits = { 'e2', 'e2', 'e2', 'e2', 'e2' }
|
||||
|
||||
GDI1Units = { ['e1'] = 3, ['e2'] = 1 }
|
||||
GDI2Units = { ['e1'] = 2, ['e2'] = 1 }
|
||||
GDI3Units = { ['jeep'] = 1 }
|
||||
GDI4Units = { ['mtnk'] = 1 }
|
||||
GDI5Units = { ['e1'] = 1, ['e2'] = 2 }
|
||||
GDI6Units = { ['e1'] = 3 }
|
||||
GDI7Units = { ['e2'] = 2 }
|
||||
GDI8Units = { ['e2'] = 5 }
|
||||
|
||||
AllUnits = { GDI1Units, GDI2Units, GDI3Units, GDI4Units, GDI5Units, GDI6Units, GDI7Units, GDI8Units }
|
||||
|
||||
AirstrikeDelay = DateTime.Minutes(1) + DateTime.Seconds(40)
|
||||
|
||||
SamSiteGoal = 3
|
||||
|
||||
DelyCellTriggerActivator = { CPos.New(29,30), CPos.New(28,30), CPos.New(27,30), CPos.New(26,30), CPos.New(25,30), CPos.New(24,30), CPos.New(23,30), CPos.New(22,30), CPos.New(21,30), CPos.New(29,29), CPos.New(28,29), CPos.New(27,29), CPos.New(26,29), CPos.New(25,29), CPos.New(24,29), CPos.New(23,29), CPos.New(22,29) }
|
||||
DelzCellTriggerActivator = { CPos.New(29,27), CPos.New(28,27), CPos.New(27,27), CPos.New(26,27), CPos.New(25,27), CPos.New(24,27), CPos.New(29,26), CPos.New(28,26), CPos.New(27,26), CPos.New(26,26), CPos.New(25,26), CPos.New(24,26) }
|
||||
Atk5CellTriggerActivator = { CPos.New(10,33), CPos.New(9,33), CPos.New(8,33), CPos.New(9,32), CPos.New(8,32), CPos.New(7,32), CPos.New(8,31), CPos.New(7,31), CPos.New(6,31) }
|
||||
Atk1CellTriggerActivator = { CPos.New(10,33), CPos.New(9,33), CPos.New(8,33), CPos.New(9,32), CPos.New(8,32), CPos.New(7,32), CPos.New(8,31), CPos.New(7,31), CPos.New(6,31) }
|
||||
|
||||
GDI1Waypoints = { waypoint0, waypoint1, waypoint3, waypoint4 }
|
||||
GDI2Waypoints = { waypoint0, waypoint1, waypoint3, waypoint4, waypoint5 }
|
||||
GDI3Waypoints = { waypoint0, waypoint1, waypoint2 }
|
||||
GDI5Waypoints = { waypoint0, waypoint1, waypoint3, waypoint1, waypoint6 }
|
||||
GDI11Waypoints = { waypoint0, waypoint1, waypoint3, waypoint4, waypoint7, waypoint8 }
|
||||
GDI12Waypoints = { waypoint0, waypoint1, waypoint3, waypoint11, waypoint12 }
|
||||
|
||||
AllWaypoints = { GDI1Waypoints, GDI2Waypoints, GDI3Waypoints, GDI5Waypoints, GDI11Waypoints, GDI12Waypoints }
|
||||
|
||||
PrimaryTargets = { Tower1, Tower2, CommCenter, Silo1, Silo2, Silo3, Refinery, Barracks, Plant1, Plant2, Yard, Factory }
|
||||
|
||||
SendGDIAirstrike = function()
|
||||
if not CommCenter.IsDead and CommCenter.Owner == GDI then
|
||||
local target = GetAirstrikeTarget(Nod)
|
||||
|
||||
if target then
|
||||
CommCenter.TargetAirstrike(target, Angle.NorthEast + Angle.New(16))
|
||||
Trigger.AfterDelay(AirstrikeDelay, SendGDIAirstrike)
|
||||
else
|
||||
Trigger.AfterDelay(AirstrikeDelay/4, SendGDIAirstrike)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
SendGDI2Units = function()
|
||||
if DontSendGDI2 then
|
||||
return
|
||||
end
|
||||
|
||||
for type, count in pairs(GDI2Units) do
|
||||
MoveAndHunt(Utils.Take(count, GDI.GetActorsByType(type)), GDI2Waypoints)
|
||||
end
|
||||
end
|
||||
|
||||
SendGDI1Units = function()
|
||||
if DontSendGDI1 then
|
||||
return
|
||||
end
|
||||
|
||||
for type, count in pairs(GDI1Units) do
|
||||
MoveAndHunt(Utils.Take(count, GDI.GetActorsByType(type)), GDI1Waypoints)
|
||||
end
|
||||
end
|
||||
|
||||
AutoPatrol = function()
|
||||
local units = AllUnits[DateTime.GameTime % #AllUnits + 1]
|
||||
local waypoints = AllWaypoints[DateTime.GameTime % #AllWaypoints + 1]
|
||||
|
||||
for type, count in pairs(units) do
|
||||
MoveAndHunt(Utils.Take(count, GDI.GetActorsByType(type)), waypoints)
|
||||
end
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(45), AutoPatrol)
|
||||
end
|
||||
|
||||
RebuildStartUnits = function()
|
||||
local types = { "e1", "e2", "jeep", "mtnk" }
|
||||
local factories = { Barracks, Barracks, Factory, Factory }
|
||||
|
||||
for i = 1, 4 do
|
||||
Utils.Do(GDI.GetActorsByType(types[i]), function(actor)
|
||||
RebuildUnit({ actor }, GDI, factories[i])
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
WorldLoaded = function()
|
||||
Nod = Player.GetPlayer("Nod")
|
||||
GDI = Player.GetPlayer("GDI")
|
||||
|
||||
Camera.Position = UnitsEntry.CenterPosition
|
||||
|
||||
Media.PlaySpeechNotification(Nod, "Reinforce")
|
||||
Reinforcements.Reinforce(Nod, NodUnitsVehicle, { UnitsEntry.Location, UnitsRallyVehicle.Location }, 1)
|
||||
Reinforcements.Reinforce(Nod, NodUnitsRocket, { UnitsEntry.Location, UnitsRallyRocket.Location }, 50)
|
||||
Reinforcements.Reinforce(Nod, NodUnitsGunner, { UnitsEntry.Location, UnitsRallyGunner.Location }, 50)
|
||||
Trigger.AfterDelay(DateTime.Seconds(6), function()
|
||||
Reinforcements.Reinforce(Nod, { 'mcv' }, { UnitsEntry.Location, UnitsRallyMCV.Location })
|
||||
end)
|
||||
|
||||
InitObjectives(Nod)
|
||||
|
||||
local localBuildSAMs = UserInterface.GetFluentMessage("build-sams", { ["sams"] = SamSiteGoal })
|
||||
BuildSAMObjective = AddPrimaryObjective(Nod, localBuildSAMs)
|
||||
DestroyGDI = AddPrimaryObjective(Nod, "destroy-gdi-base")
|
||||
GDIObjective = AddPrimaryObjective(GDI, "")
|
||||
|
||||
Trigger.AfterDelay(AirstrikeDelay, SendGDIAirstrike)
|
||||
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(30), SendGDI2Units)
|
||||
Trigger.AfterDelay(DateTime.Minutes(2) + DateTime.Seconds(30), SendGDI1Units)
|
||||
|
||||
Trigger.OnEnteredFootprint(DelyCellTriggerActivator, function(a, id)
|
||||
if a.Owner == Nod then
|
||||
DontSendGDI2 = true
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.OnEnteredFootprint(DelzCellTriggerActivator, function(a, id)
|
||||
if a.Owner == Nod then
|
||||
DontSendGDI1 = true
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.OnEnteredFootprint(Atk5CellTriggerActivator, function(a, id)
|
||||
if a.Owner == Nod then
|
||||
MoveAndHunt(Utils.Take(1, GDI.GetActorsByType("mtnk")), GDI12Waypoints)
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||
MoveAndHunt(Utils.Take(2, GDI.GetActorsByType("jeep")), GDI5Waypoints)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(10), function()
|
||||
for type, count in pairs(GDI1Units) do
|
||||
MoveAndHunt(Utils.Take(count, GDI.GetActorsByType(type)), GDI1Waypoints)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Minutes(3) + DateTime.Seconds(10), function()
|
||||
for type, count in pairs(GDI2Units) do
|
||||
MoveAndHunt(Utils.Take(count, GDI.GetActorsByType(type)), GDI2Waypoints)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Minutes(4) + DateTime.Seconds(40), function()
|
||||
MoveAndHunt(Utils.Take(1, GDI.GetActorsByType("jeep")), GDI3Waypoints)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Minutes(2) + DateTime.Seconds(30), function()
|
||||
MoveAndHunt(Utils.Take(1, GDI.GetActorsByType("mtnk")), GDI1Waypoints)
|
||||
end)
|
||||
|
||||
Trigger.OnEnteredFootprint(Atk1CellTriggerActivator, function(a, id)
|
||||
if a.Owner == Nod then
|
||||
local cargo = Reinforcements.ReinforceWithTransport(GDI, "tran", GDIReinforceUnits, { waypoint9.Location, waypoint26.Location }, { waypoint9.Location })[2]
|
||||
Utils.Do(cargo, IdleHunt)
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.OnAllKilledOrCaptured(PrimaryTargets, function()
|
||||
Nod.MarkCompletedObjective(DestroyGDI)
|
||||
Utils.Do(GDI.GetGroundAttackers(), IdleHunt)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(0, RebuildStartUnits)
|
||||
|
||||
AutoPatrol()
|
||||
end
|
||||
|
||||
Tick = function()
|
||||
if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then
|
||||
GDI.MarkCompletedObjective(GDIObjective)
|
||||
end
|
||||
|
||||
if not Nod.IsObjectiveCompleted(BuildSAMObjective) and CheckForSams(Nod) then
|
||||
Nod.MarkCompletedObjective(BuildSAMObjective)
|
||||
end
|
||||
end
|
||||
|
||||
CheckForSams = function(Nod)
|
||||
local sams = Nod.GetActorsByType("sam")
|
||||
return #sams >= SamSiteGoal
|
||||
end
|
||||
135
mods/cnc/maps/nod05/rules.yaml
Normal file
135
mods/cnc/maps/nod05/rules.yaml
Normal file
@@ -0,0 +1,135 @@
|
||||
World:
|
||||
LuaScript:
|
||||
Scripts: campaign.lua, utils.lua, nod05.lua
|
||||
MusicPlaylist:
|
||||
StartingMusic: airstrik
|
||||
VictoryMusic: nod_win1
|
||||
MissionData:
|
||||
Briefing: briefing
|
||||
BackgroundVideo: sethpre.vqa
|
||||
BriefingVideo: nod5.vqa
|
||||
StartVideo: samsite.vqa
|
||||
WinVideo: insites.vqa
|
||||
LossVideo: flag.vqa
|
||||
SmudgeLayer@CRATER:
|
||||
InitialSmudges:
|
||||
46,48: cr1,0
|
||||
|
||||
^Palettes:
|
||||
IndexedPlayerPalette:
|
||||
PlayerIndex:
|
||||
Civilians: 192, 164, 132, 155, 133, 197, 112, 12, 163, 132, 155, 133, 134, 197, 154, 198
|
||||
IndexedPlayerPalette@units:
|
||||
PlayerIndex:
|
||||
Civilians: 192, 164, 132, 155, 133, 197, 112, 12, 163, 132, 155, 133, 134, 197, 154, 198
|
||||
|
||||
NUK2:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
GUN:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
CYCL:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
FIX:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
HPAD:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
OBLI:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
BRIK:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
TMPL:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
E5:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
RMBO:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
MLRS:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
MCV:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
GTWR:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
WEAP:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
EYE:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
ATWR:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
HARV:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
Harvester:
|
||||
SearchFromProcRadius: 24
|
||||
SearchFromHarvesterRadius: 24
|
||||
|
||||
FTNK:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
STNK:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
ARTY:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
MTNK:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
HTNK:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
ORCA:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
MSAM:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
SBAG:
|
||||
Buildable:
|
||||
Queue: Support.GDI, Support.Nod
|
||||
|
||||
HQ:
|
||||
AirstrikePower:
|
||||
Prerequisites: gdi
|
||||
SquadSize: 1
|
||||
|
||||
A10:
|
||||
Targetable:
|
||||
Reference in New Issue
Block a user