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/nod03a/map.bin
Normal file
BIN
mods/cnc/maps/nod03a/map.bin
Normal file
Binary file not shown.
7
mods/cnc/maps/nod03a/map.ftl
Normal file
7
mods/cnc/maps/nod03a/map.ftl
Normal file
@@ -0,0 +1,7 @@
|
||||
## rules.yaml
|
||||
briefing =
|
||||
GDI has established a prison camp, where they are detaining some of the local political leaders.
|
||||
|
||||
Kane wishes to liberate these victims.
|
||||
|
||||
Destroy the GDI forces and capture the prison, do not destroy it.
|
||||
BIN
mods/cnc/maps/nod03a/map.png
Normal file
BIN
mods/cnc/maps/nod03a/map.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
439
mods/cnc/maps/nod03a/map.yaml
Normal file
439
mods/cnc/maps/nod03a/map.yaml
Normal file
@@ -0,0 +1,439 @@
|
||||
MapFormat: 12
|
||||
|
||||
RequiresMod: cnc
|
||||
|
||||
Title: 03a: Sudanese Prison Break
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
Tileset: DESERT
|
||||
|
||||
MapSize: 64,64
|
||||
|
||||
Bounds: 13,16,42,33
|
||||
|
||||
Visibility: MissionSelector
|
||||
|
||||
Categories: Campaign
|
||||
|
||||
LockPreview: True
|
||||
|
||||
Players:
|
||||
PlayerReference@Neutral:
|
||||
Name: Neutral
|
||||
OwnsWorld: True
|
||||
NonCombatant: True
|
||||
Faction: gdi
|
||||
PlayerReference@GDI:
|
||||
Name: GDI
|
||||
Bot: campaign
|
||||
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
|
||||
Allies: Nod
|
||||
Enemies: GDI
|
||||
|
||||
Actors:
|
||||
Actor0: sbag
|
||||
Location: 30,23
|
||||
Owner: Neutral
|
||||
Actor1: sbag
|
||||
Location: 29,23
|
||||
Owner: Neutral
|
||||
Actor2: sbag
|
||||
Location: 28,23
|
||||
Owner: Neutral
|
||||
Actor3: sbag
|
||||
Location: 22,23
|
||||
Owner: Neutral
|
||||
Actor4: sbag
|
||||
Location: 21,23
|
||||
Owner: Neutral
|
||||
Actor5: sbag
|
||||
Location: 20,23
|
||||
Owner: Neutral
|
||||
Actor6: sbag
|
||||
Location: 19,23
|
||||
Owner: Neutral
|
||||
Actor7: sbag
|
||||
Location: 30,22
|
||||
Owner: Neutral
|
||||
Actor8: sbag
|
||||
Location: 19,22
|
||||
Owner: Neutral
|
||||
Actor9: sbag
|
||||
Location: 30,21
|
||||
Owner: Neutral
|
||||
Actor10: sbag
|
||||
Location: 19,21
|
||||
Owner: Neutral
|
||||
Actor11: sbag
|
||||
Location: 18,21
|
||||
Owner: Neutral
|
||||
Actor12: sbag
|
||||
Location: 17,21
|
||||
Owner: Neutral
|
||||
Actor13: sbag
|
||||
Location: 30,20
|
||||
Owner: Neutral
|
||||
Actor14: sbag
|
||||
Location: 17,20
|
||||
Owner: Neutral
|
||||
Actor15: sbag
|
||||
Location: 16,20
|
||||
Owner: Neutral
|
||||
Actor16: sbag
|
||||
Location: 15,20
|
||||
Owner: Neutral
|
||||
Actor17: sbag
|
||||
Location: 14,20
|
||||
Owner: Neutral
|
||||
Actor18: sbag
|
||||
Location: 13,20
|
||||
Owner: Neutral
|
||||
Actor19: sbag
|
||||
Location: 30,19
|
||||
Owner: Neutral
|
||||
Actor20: sbag
|
||||
Location: 17,19
|
||||
Owner: Neutral
|
||||
Actor21: sbag
|
||||
Location: 13,19
|
||||
Owner: Neutral
|
||||
Actor22: sbag
|
||||
Location: 30,18
|
||||
Owner: Neutral
|
||||
Actor23: sbag
|
||||
Location: 13,18
|
||||
Owner: Neutral
|
||||
Actor24: sbag
|
||||
Location: 30,17
|
||||
Owner: Neutral
|
||||
Actor25: sbag
|
||||
Location: 17,17
|
||||
Owner: Neutral
|
||||
Actor26: sbag
|
||||
Location: 13,17
|
||||
Owner: Neutral
|
||||
Actor27: sbag
|
||||
Location: 30,16
|
||||
Owner: Neutral
|
||||
Actor28: sbag
|
||||
Location: 29,16
|
||||
Owner: Neutral
|
||||
Actor29: sbag
|
||||
Location: 28,16
|
||||
Owner: Neutral
|
||||
Actor30: sbag
|
||||
Location: 27,16
|
||||
Owner: Neutral
|
||||
Actor31: sbag
|
||||
Location: 26,16
|
||||
Owner: Neutral
|
||||
Actor32: sbag
|
||||
Location: 25,16
|
||||
Owner: Neutral
|
||||
Actor33: sbag
|
||||
Location: 24,16
|
||||
Owner: Neutral
|
||||
Actor34: sbag
|
||||
Location: 23,16
|
||||
Owner: Neutral
|
||||
Actor35: sbag
|
||||
Location: 22,16
|
||||
Owner: Neutral
|
||||
Actor36: sbag
|
||||
Location: 21,16
|
||||
Owner: Neutral
|
||||
Actor37: sbag
|
||||
Location: 20,16
|
||||
Owner: Neutral
|
||||
Actor38: sbag
|
||||
Location: 19,16
|
||||
Owner: Neutral
|
||||
Actor39: sbag
|
||||
Location: 18,16
|
||||
Owner: Neutral
|
||||
Actor40: sbag
|
||||
Location: 17,16
|
||||
Owner: Neutral
|
||||
Actor41: sbag
|
||||
Location: 16,16
|
||||
Owner: Neutral
|
||||
Actor42: sbag
|
||||
Location: 15,16
|
||||
Owner: Neutral
|
||||
Actor43: sbag
|
||||
Location: 14,16
|
||||
Owner: Neutral
|
||||
Actor44: sbag
|
||||
Location: 13,16
|
||||
Owner: Neutral
|
||||
Actor45: t18
|
||||
Location: 29,23
|
||||
Owner: Neutral
|
||||
Actor46: t08
|
||||
Location: 43,17
|
||||
Owner: Neutral
|
||||
Actor47: t08
|
||||
Location: 40,17
|
||||
Owner: Neutral
|
||||
Actor48: t18
|
||||
Location: 42,18
|
||||
Owner: Neutral
|
||||
Actor49: t18
|
||||
Location: 37,17
|
||||
Owner: Neutral
|
||||
Actor50: t18
|
||||
Location: 25,42
|
||||
Owner: Neutral
|
||||
Actor51: t18
|
||||
Location: 16,40
|
||||
Owner: Neutral
|
||||
Actor52: t08
|
||||
Location: 39,37
|
||||
Owner: Neutral
|
||||
Actor53: t08
|
||||
Location: 22,35
|
||||
Owner: Neutral
|
||||
Actor54: t08
|
||||
Location: 15,38
|
||||
Owner: Neutral
|
||||
Actor55: t18
|
||||
Location: 38,31
|
||||
Owner: Neutral
|
||||
Base2: pyle
|
||||
Location: 25,20
|
||||
Owner: GDI
|
||||
Base1: fact
|
||||
Location: 27,20
|
||||
Owner: GDI
|
||||
Base5: silo
|
||||
Location: 23,17
|
||||
Owner: GDI
|
||||
Base4: silo
|
||||
Location: 23,19
|
||||
Owner: GDI
|
||||
Base3: proc
|
||||
Location: 20,17
|
||||
Owner: GDI
|
||||
Base6: nuke
|
||||
Location: 25,17
|
||||
Owner: GDI
|
||||
Base7: nuke
|
||||
Location: 27,17
|
||||
Owner: GDI
|
||||
GuardTower: gtwr
|
||||
Location: 28,24
|
||||
Owner: GDI
|
||||
Actor64: v24
|
||||
Location: 20,41
|
||||
Owner: Neutral
|
||||
Actor65: v26
|
||||
Location: 43,18
|
||||
Owner: Neutral
|
||||
Actor66: v24
|
||||
Location: 37,16
|
||||
Owner: Neutral
|
||||
Actor67: v20
|
||||
Location: 13,37
|
||||
Owner: Neutral
|
||||
Actor68: v21
|
||||
Location: 13,39
|
||||
Owner: Neutral
|
||||
Actor69: v22
|
||||
Location: 13,41
|
||||
Owner: Neutral
|
||||
Actor70: v24
|
||||
Location: 15,36
|
||||
Owner: Neutral
|
||||
Actor71: v25
|
||||
Location: 17,41
|
||||
Owner: Neutral
|
||||
Actor72: v26
|
||||
Location: 16,38
|
||||
Owner: Neutral
|
||||
Actor73: v19
|
||||
Location: 27,42
|
||||
Owner: GDI
|
||||
Actor74: v19
|
||||
Location: 29,42
|
||||
Owner: Neutral
|
||||
Actor75: v20
|
||||
Location: 39,17
|
||||
Owner: Neutral
|
||||
Actor76: v21
|
||||
Location: 43,16
|
||||
Owner: Neutral
|
||||
Actor78: v22
|
||||
Location: 39,16
|
||||
Owner: Neutral
|
||||
Actor79: v26
|
||||
Location: 37,19
|
||||
Owner: Neutral
|
||||
Humvee2: jeep
|
||||
Location: 21,22
|
||||
Owner: GDI
|
||||
Facing: 512
|
||||
Humvee1: jeep
|
||||
Location: 20,22
|
||||
Owner: GDI
|
||||
Facing: 512
|
||||
Actor84: jeep
|
||||
Location: 18,17
|
||||
Owner: GDI
|
||||
Facing: 512
|
||||
Actor89: jeep
|
||||
Location: 29,34
|
||||
Owner: GDI
|
||||
Facing: 384
|
||||
Actor95: e1
|
||||
Location: 33,20
|
||||
Owner: GDI
|
||||
Facing: 512
|
||||
SubCell: 2
|
||||
Actor96: e1
|
||||
Location: 34,19
|
||||
Owner: GDI
|
||||
Facing: 512
|
||||
SubCell: 3
|
||||
Actor99: e1
|
||||
Location: 14,44
|
||||
Owner: GDI
|
||||
SubCell: 1
|
||||
Actor100: e1
|
||||
Location: 33,31
|
||||
Owner: GDI
|
||||
Facing: 384
|
||||
SubCell: 4
|
||||
Patrol3: e1
|
||||
Location: 34,23
|
||||
Owner: GDI
|
||||
SubCell: 2
|
||||
Facing: 384
|
||||
Actor102: c1
|
||||
Location: 19,40
|
||||
Owner: Neutral
|
||||
Facing: 384
|
||||
SubCell: 1
|
||||
Actor103: c3
|
||||
Location: 19,39
|
||||
Owner: Neutral
|
||||
Facing: 384
|
||||
SubCell: 3
|
||||
Actor104: c5
|
||||
Location: 15,42
|
||||
Owner: Neutral
|
||||
Facing: 128
|
||||
SubCell: 2
|
||||
Actor105: c6
|
||||
Location: 14,37
|
||||
Owner: Neutral
|
||||
Health: 60
|
||||
Facing: 384
|
||||
SubCell: 1
|
||||
Actor106: c7
|
||||
Location: 15,41
|
||||
Owner: Neutral
|
||||
Facing: 896
|
||||
SubCell: 0
|
||||
Actor108: e1
|
||||
Location: 34,31
|
||||
Owner: GDI
|
||||
Facing: 384
|
||||
SubCell: 3
|
||||
Patrol1: e1
|
||||
Location: 34,25
|
||||
Owner: GDI
|
||||
SubCell: 2
|
||||
Facing: 640
|
||||
Actor111: e1
|
||||
Location: 39,31
|
||||
Owner: GDI
|
||||
SubCell: 3
|
||||
Actor112: e1
|
||||
Location: 40,37
|
||||
Owner: GDI
|
||||
Facing: 384
|
||||
SubCell: 0
|
||||
Patrol4: e2
|
||||
Location: 34,22
|
||||
Owner: GDI
|
||||
SubCell: 3
|
||||
Facing: 384
|
||||
Patrol2: e2
|
||||
Location: 34,23
|
||||
Owner: GDI
|
||||
SubCell: 4
|
||||
Facing: 640
|
||||
Actor118: e2
|
||||
Location: 42,18
|
||||
Owner: GDI
|
||||
Facing: 512
|
||||
SubCell: 4
|
||||
Actor119: e2
|
||||
Location: 33,19
|
||||
Owner: GDI
|
||||
Facing: 512
|
||||
SubCell: 0
|
||||
TechCenter: miss
|
||||
Location: 14,17
|
||||
Owner: GDI
|
||||
TibFieldHumvee01: jeep
|
||||
Location: 52,19
|
||||
Owner: GDI
|
||||
VillageGuard01: e1
|
||||
Location: 38,22
|
||||
Owner: GDI
|
||||
Facing: 384
|
||||
SubCell: 2
|
||||
VillageGuard02: e1
|
||||
Location: 38,22
|
||||
Owner: GDI
|
||||
Facing: 384
|
||||
SubCell: 3
|
||||
VillageGuard03: e1
|
||||
Location: 39,22
|
||||
Owner: GDI
|
||||
Facing: 640
|
||||
SubCell: 3
|
||||
PlayerBase: waypoint
|
||||
Location: 50,38
|
||||
Owner: Neutral
|
||||
NodEntry: waypoint
|
||||
Location: 54,40
|
||||
Owner: Neutral
|
||||
NodRallyPoint: waypoint
|
||||
Location: 45,42
|
||||
Owner: Neutral
|
||||
AttackWaveSpawnA: waypoint
|
||||
Location: 45,16
|
||||
Owner: Neutral
|
||||
AttackWaveSpawnB: waypoint
|
||||
Location: 44,48
|
||||
Owner: Neutral
|
||||
AttackWaveSpawnC: waypoint
|
||||
Location: 33,16
|
||||
Owner: Neutral
|
||||
PatrolA: waypoint
|
||||
Location: 24,26
|
||||
Owner: Neutral
|
||||
PatrolB: waypoint
|
||||
Location: 32,47
|
||||
Owner: Neutral
|
||||
|
||||
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
|
||||
88
mods/cnc/maps/nod03a/nod03a.lua
Normal file
88
mods/cnc/maps/nod03a/nod03a.lua
Normal file
@@ -0,0 +1,88 @@
|
||||
--[[
|
||||
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.
|
||||
]]
|
||||
|
||||
NodUnits = { "bike", "e3", "e1", "bggy", "e1", "e3", "bike", "bggy" }
|
||||
FirstAttackWave = { "e1", "e1", "e1", "e2", }
|
||||
SecondThirdAttackWave = { "e1", "e1", "e2", }
|
||||
GDIBase = { Base1, Base2, Base3, Base4, Base5, Base6, Base7 }
|
||||
Humvees = { Humvee1, Humvee2 }
|
||||
PatrolTeam = { Patrol1, Patrol2, Patrol3, Patrol4 }
|
||||
PatrolRoute = { PatrolA.Location, PatrolB.Location }
|
||||
|
||||
SendAttackWave = function(units, spawnPoint)
|
||||
Reinforcements.Reinforce(GDI, units, { spawnPoint }, DateTime.Seconds(1), function(actor)
|
||||
IdleHunt(actor)
|
||||
end)
|
||||
end
|
||||
|
||||
WorldLoaded = function()
|
||||
Nod = Player.GetPlayer("Nod")
|
||||
GDI = Player.GetPlayer("GDI")
|
||||
|
||||
InitObjectives(Nod)
|
||||
|
||||
CapturePrison = AddPrimaryObjective(Nod, "capture-prison")
|
||||
DestroyGDI = AddSecondaryObjective(Nod, "destroy-gdi-forces")
|
||||
|
||||
Trigger.OnCapture(TechCenter, function()
|
||||
Trigger.AfterDelay(DateTime.Seconds(2), function()
|
||||
Nod.MarkCompletedObjective(CapturePrison)
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.OnKilled(TechCenter, function()
|
||||
Nod.MarkFailedObjective(CapturePrison)
|
||||
end)
|
||||
|
||||
Utils.Do(PatrolTeam, function(a)
|
||||
a.Patrol(PatrolRoute, true)
|
||||
end)
|
||||
|
||||
Media.PlaySpeechNotification(Nod, "Reinforce")
|
||||
Reinforcements.Reinforce(Nod, NodUnits, { NodEntry.Location, NodRallyPoint.Location })
|
||||
Trigger.AfterDelay(DateTime.Seconds(9), function()
|
||||
Reinforcements.Reinforce(Nod, { "mcv" }, { NodEntry.Location, PlayerBase.Location })
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(20), function() SendAttackWave(FirstAttackWave, AttackWaveSpawnA.Location) end)
|
||||
Trigger.AfterDelay(DateTime.Seconds(50), function() SendAttackWave(SecondThirdAttackWave, AttackWaveSpawnB.Location) end)
|
||||
Trigger.AfterDelay(DateTime.Seconds(100), function() SendAttackWave(SecondThirdAttackWave, AttackWaveSpawnC.Location) end)
|
||||
|
||||
Trigger.OnDamaged(GuardTower, function()
|
||||
if not TowerDamaged then
|
||||
TowerDamaged = true
|
||||
Utils.Do(Humvees, function(unit)
|
||||
IdleHunt(unit)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.OnAnyKilled(GDIBase, function()
|
||||
if not BaseAttacked then
|
||||
BaseAttacked = true
|
||||
Utils.Do(GDI.GetGroundAttackers(), function(unit)
|
||||
if not unit.IsDead then
|
||||
IdleHunt(unit)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
Tick = function()
|
||||
if DateTime.GameTime > 2 then
|
||||
if Nod.HasNoRequiredUnits() then
|
||||
Nod.MarkFailedObjective(CapturePrison)
|
||||
end
|
||||
|
||||
if GDI.HasNoRequiredUnits() then
|
||||
Nod.MarkCompletedObjective(DestroyGDI)
|
||||
end
|
||||
end
|
||||
end
|
||||
102
mods/cnc/maps/nod03a/rules.yaml
Normal file
102
mods/cnc/maps/nod03a/rules.yaml
Normal file
@@ -0,0 +1,102 @@
|
||||
World:
|
||||
LuaScript:
|
||||
Scripts: campaign.lua, utils.lua, nod03a.lua
|
||||
MusicPlaylist:
|
||||
StartingMusic: chrg226m
|
||||
VictoryMusic: nod_win1
|
||||
MissionData:
|
||||
Briefing: briefing
|
||||
BriefingVideo: nod3.vqa
|
||||
StartVideo: dessweep.vqa
|
||||
WinVideo: desflees.vqa
|
||||
LossVideo: flag.vqa
|
||||
|
||||
Player:
|
||||
PlayerResources:
|
||||
DefaultCash: 4000
|
||||
|
||||
HQ:
|
||||
AirstrikePower:
|
||||
Prerequisites: ~disabled
|
||||
Tooltip:
|
||||
Buildable:
|
||||
Description: actor-hq-description
|
||||
|
||||
CYCL:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
NUK2:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
AFLD:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
HPAD:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
FIX:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
TMPL:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
GUN:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
SAM:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
OBLI:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
GTWR:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
SBAG:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
BRIK:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
WEAP:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
EYE:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
ATWR:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
E4:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
E5:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
RMBO:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
MISS:
|
||||
Tooltip:
|
||||
Name: actor-prison-name
|
||||
CaptureManager:
|
||||
Capturable:
|
||||
Types: building
|
||||
Reference in New Issue
Block a user