Initial commit: OpenRA game engine
Some checks failed
Continuous Integration / Linux (.NET 8.0) (push) Has been cancelled
Continuous Integration / Windows (.NET 8.0) (push) Has been cancelled

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:
let5sne.win10
2026-01-10 21:46:54 +08:00
commit 9cf6ebb986
4065 changed files with 635973 additions and 0 deletions

View File

@@ -0,0 +1,144 @@
--[[
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.
]]
CommandoReinforcements = { "rmbo" }
MCVReinforcements = { "mcv" }
AutocreateSquads =
{
{ "stnk", "stnk" },
{ "ftnk", "ftnk" },
{ "ltnk", "ltnk", "bike" },
{ "arty", "arty", "bike", "bike" },
{ "ltnk", "ltnk" },
{ "stnk", "stnk" },
{ "ltnk", "ltnk" },
{ "arty", "arty" }
}
HeliPatrolPaths =
{
{ HeliPatrol1.Location, HeliPatrol2.Location, HeliPatrol3.Location, HeliPatrol4.Location, HeliPatrol5.Location, HeliPatrol6.Location },
{ HeliPatrol5.Location, HeliPatrol4.Location, HeliPatrol3.Location, HeliPatrol2.Location, HeliPatrol1.Location, HeliPatrol6.Location }
}
AttackTriggers = { AttackTrigger1, AttackTrigger2, AttackTrigger3, AttackTrigger4 }
SamSites = { SAM01, SAM02 }
WorldLoaded = function()
GDI = Player.GetPlayer("GDI")
Nod = Player.GetPlayer("Nod")
InitObjectives(GDI)
DestroySAMs = AddPrimaryObjective(GDI, "destroy-obelisk-sams")
DestroyObelisk = AddPrimaryObjective(GDI, "destroy-obelisk")
DestroyBiotechCenter = AddPrimaryObjective(GDI, "destroy-biotech")
Trigger.OnAllKilled(SamSites, function()
AirSupport = Actor.Create("airstrike.proxy", true, { Owner = GDI })
AirSupportEnabled = true
GDI.MarkCompletedObjective(DestroySAMs)
end)
Trigger.OnDamaged(Obelisk01, function()
Trigger.AfterDelay(DateTime.Seconds(1), Obelisk01.Kill)
end)
Trigger.OnKilled(Obelisk01, function()
GDI.MarkCompletedObjective(DestroyObelisk)
Trigger.AfterDelay(DateTime.Seconds(5), function()
Media.PlaySpeechNotification(GDI, "Reinforce")
ReinforceWithLandingCraft(GDI, MCVReinforcements, lstStart.Location, lstEnd.Location, UnitsRally.Location)
end)
ObeliskFlare.Destroy()
if AirSupportEnabled then
AirSupport.Destroy()
end
end)
Trigger.OnKilled(Biolab, function()
GDI.MarkCompletedObjective(DestroyBiotechCenter)
end)
Trigger.OnCapture(Biolab, function()
Trigger.AfterDelay(DateTime.Seconds(1), Biolab.Kill)
end)
Trigger.OnDamaged(Biolab, function()
Utils.Do(Nod.GetGroundAttackers(), IdleHunt)
end)
RepairNamedActors(Nod, 0.9)
Trigger.AfterDelay(0, function()
local toBuild = function() return { "harv" } end
Utils.Do(Nod.GetActorsByType("harv"), function(harv)
RebuildHarvesters(harv, toBuild)
end)
end)
local vehicleToBuild = function() return Utils.Random(AutocreateSquads) end
Utils.Do(AttackTriggers, function(a)
Trigger.OnKilledOrCaptured(a, function()
ProduceUnits(Nod, Airfield, nil, vehicleToBuild)
end)
end)
Trigger.AfterDelay(DateTime.Seconds(150), function()
ProduceUnits(Nod, Airfield, function() return DateTime.Seconds(150) end, vehicleToBuild)
end)
Trigger.AfterDelay(DateTime.Minutes(5), HeliHunt)
local toBuild = function() return { "e4" } end
local delay = function() return DateTime.Seconds(15) end
ProduceUnits(Nod, HandOfNod, delay, toBuild)
Camera.Position = UnitsRally.CenterPosition
ObeliskFlare = Actor.Create("flare", true, { Owner = GDI, Location = Flare.Location })
Media.PlaySpeechNotification(GDI, "Reinforce")
ReinforceWithLandingCraft(GDI, CommandoReinforcements, lstStart.Location, lstEnd.Location, UnitsRally.Location)
end
Tick = function()
if DateTime.GameTime > DateTime.Seconds(5) and GDI.HasNoRequiredUnits() then
GDI.MarkFailedObjective(DestroyBiotechCenter)
end
end
-- Overwrite the default to send the units to UnitsRally first
IdleHunt = function(unit)
if not unit.IsDead then
Trigger.OnIdle(unit, function()
unit.AttackMove(UnitsRally.Location, 50)
unit.Hunt()
end)
end
end
HeliHunt = function()
local patrolpath = Utils.Random(HeliPatrolPaths)
Utils.Do(Nod.GetActorsByType("heli"), function(actor)
Trigger.OnIdle(actor, function()
actor.Patrol(patrolpath)
end)
end)
end
RebuildHarvesters = function(harv, toBuild)
Trigger.OnRemovedFromWorld(harv, function()
ProduceUnits(Nod, Airfield, nil, toBuild, function(units)
RebuildHarvesters(units[1], toBuild)
end)
end)
end

Binary file not shown.

View File

@@ -0,0 +1,2 @@
## rules.yaml
briefing = Nod is experimenting on civilians with Tiberium. Use the commando to take out the SAM sites surrounding the drop-off area. Once the SAM sites are neutralized, you will be able to call in an airstrike. Take out the Obelisk and an MCV will be delivered to help you locate and destroy the biochem facility.

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,718 @@
MapFormat: 12
RequiresMod: cnc
Title: C&C64 Special Ops - GDI 1
Author: Westwood Studios
Tileset: TEMPERAT
MapSize: 64,64
Bounds: 2,9,48,53
Visibility: MissionSelector
Categories: Campaign
LockPreview: True
Players:
PlayerReference@Nod:
Name: Nod
Faction: nod
Color: FE1100
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
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: gdi
Actors:
Actor0: cycl
Location: 16,54
Owner: Nod
Actor1: cycl
Location: 15,54
Owner: Nod
Actor2: cycl
Location: 16,53
Owner: Nod
Actor3: cycl
Location: 14,53
Owner: Nod
Actor4: cycl
Location: 16,52
Owner: Nod
Actor5: cycl
Location: 15,52
Owner: Nod
Actor6: cycl
Location: 14,52
Owner: Nod
Actor7: cycl
Location: 49,49
Owner: Nod
Actor8: cycl
Location: 48,49
Owner: Nod
Actor9: cycl
Location: 47,49
Owner: Nod
Actor10: cycl
Location: 46,49
Owner: Nod
Actor11: cycl
Location: 45,49
Owner: Nod
Actor12: cycl
Location: 42,49
Owner: Nod
Actor13: cycl
Location: 41,49
Owner: Nod
Actor14: cycl
Location: 40,49
Owner: Nod
Actor15: cycl
Location: 39,49
Owner: Nod
Actor16: cycl
Location: 49,48
Owner: Nod
Actor17: cycl
Location: 39,48
Owner: Nod
Actor18: cycl
Location: 49,47
Owner: Nod
Actor19: cycl
Location: 39,47
Owner: Nod
Actor20: cycl
Location: 49,46
Owner: Nod
Actor21: cycl
Location: 39,46
Owner: Nod
Actor22: cycl
Location: 49,45
Owner: Nod
Actor23: cycl
Location: 39,45
Owner: Nod
Actor24: cycl
Location: 49,44
Owner: Nod
Actor25: cycl
Location: 39,44
Owner: Nod
Actor26: cycl
Location: 49,43
Owner: Nod
Actor27: cycl
Location: 39,43
Owner: Nod
Actor28: cycl
Location: 49,42
Owner: Nod
Actor29: cycl
Location: 39,42
Owner: Nod
Actor30: cycl
Location: 49,41
Owner: Nod
Actor31: cycl
Location: 48,41
Owner: Nod
Actor32: cycl
Location: 47,41
Owner: Nod
Actor33: cycl
Location: 46,41
Owner: Nod
Actor34: cycl
Location: 41,41
Owner: Nod
Actor35: cycl
Location: 40,41
Owner: Nod
Actor36: cycl
Location: 39,41
Owner: Nod
Actor37: cycl
Location: 42,16
Owner: Nod
Actor38: cycl
Location: 41,16
Owner: Nod
Actor39: cycl
Location: 40,16
Owner: Nod
Actor40: cycl
Location: 39,16
Owner: Nod
Actor41: cycl
Location: 38,16
Owner: Nod
Actor42: cycl
Location: 37,16
Owner: Nod
Actor43: cycl
Location: 36,16
Owner: Nod
Actor44: cycl
Location: 35,16
Owner: Nod
Actor45: cycl
Location: 34,16
Owner: Nod
Actor46: cycl
Location: 33,16
Owner: Nod
Actor47: cycl
Location: 42,15
Owner: Nod
Actor48: cycl
Location: 39,15
Owner: Nod
Actor49: cycl
Location: 36,15
Owner: Nod
Actor50: cycl
Location: 33,15
Owner: Nod
Actor51: cycl
Location: 42,14
Owner: Nod
Actor52: cycl
Location: 39,14
Owner: Nod
Actor53: cycl
Location: 36,14
Owner: Nod
Actor54: cycl
Location: 33,14
Owner: Nod
Actor55: cycl
Location: 42,13
Owner: Nod
Actor56: cycl
Location: 41,13
Owner: Nod
Actor57: cycl
Location: 40,13
Owner: Nod
Actor58: cycl
Location: 39,13
Owner: Nod
Actor59: cycl
Location: 38,13
Owner: Nod
Actor60: cycl
Location: 37,13
Owner: Nod
Actor61: cycl
Location: 36,13
Owner: Nod
Actor62: cycl
Location: 35,13
Owner: Nod
Actor63: cycl
Location: 34,13
Owner: Nod
Actor64: cycl
Location: 33,13
Owner: Nod
Actor65: t08
Location: 11,35
Owner: Neutral
Actor66: t11
Location: 18,31
Owner: Neutral
Actor67: tc03
Location: 17,33
Owner: Neutral
Actor68: tc01
Location: 44,33
Owner: Neutral
Actor69: tc01
Location: 46,37
Owner: Neutral
Actor70: tc05
Location: 23,37
Owner: Neutral
Actor71: tc04
Location: 31,36
Owner: Neutral
Actor72: tc02
Location: 32,35
Owner: Neutral
Actor73: t12
Location: 34,36
Owner: Neutral
Actor74: tc04
Location: 41,28
Owner: Neutral
Actor75: tc03
Location: 40,27
Owner: Neutral
Actor76: tc02
Location: 38,27
Owner: Neutral
Actor77: t13.transformable
Location: 31,28
Owner: Neutral
Actor78: tc01
Location: 29,27
Owner: Neutral
Actor79: t17
Location: 44,9
Owner: Neutral
Actor80: tc01
Location: 46,9
Owner: Neutral
Actor81: tc05
Location: 47,11
Owner: Neutral
Actor82: tc02
Location: 48,9
Owner: Neutral
Actor83: tc01
Location: 35,44
Owner: Neutral
Actor84: tc05
Location: 36,42
Owner: Neutral
Actor85: tc01
Location: 40,47
Owner: Neutral
Actor86: t11
Location: 36,50
Owner: Neutral
Actor87: tc03
Location: 25,9
Owner: Neutral
Actor88: tc02
Location: 31,14
Owner: Neutral
Actor89: t03
Location: 21,9
Owner: Neutral
Actor90: t03.transformable
Location: 19,60
Owner: Neutral
Actor91: t13.transformable
Location: 22,59
Owner: Neutral
Actor92: t13.transformable
Location: 42,57
Owner: Neutral
Actor93: tc05
Location: 44,59
Owner: Neutral
Actor94: tc03
Location: 42,60
Owner: Neutral
Actor95: tc04
Location: 33,50
Owner: Neutral
Actor96: t08
Location: 26,61
Owner: Neutral
Actor97: t06
Location: 25,60
Owner: Neutral
Actor98: t07
Location: 21,56
Owner: Neutral
Actor99: t08
Location: 19,58
Owner: Neutral
Actor100: tc05
Location: 6,47
Owner: Neutral
Actor101: tc02
Location: 14,58
Owner: Neutral
Actor102: t15
Location: 2,42
Owner: Neutral
Actor103: t14
Location: 11,44
Owner: Neutral
Actor104: t12
Location: 10,41
Owner: Neutral
Actor105: t11
Location: 19,39
Owner: Neutral
Actor106: t03
Location: 20,42
Owner: Neutral
Actor107: t01
Location: 27,10
Owner: Neutral
Actor108: tc05
Location: 30,28
Owner: Neutral
Actor109: tc03
Location: 26,28
Owner: Neutral
Actor110: t08
Location: 37,22
Owner: Neutral
Actor111: t12
Location: 30,22
Owner: Neutral
Actor112: tc02
Location: 27,19
Owner: Neutral
Actor113: tc02
Location: 46,20
Owner: Neutral
Actor114: tc03
Location: 42,18
Owner: Neutral
Actor115: tc03
Location: 2,21
Owner: Neutral
Actor116: tc01
Location: 2,24
Owner: Neutral
Actor117: tc01
Location: 5,36
Owner: Neutral
Actor118: tc02
Location: 11,33
Owner: Neutral
Actor119: tc05
Location: 9,22
Owner: Neutral
Actor120: t11
Location: 2,14
Owner: Neutral
Actor121: t12
Location: 4,14
Owner: Neutral
Actor122: t13.transformable
Location: 7,29
Owner: Neutral
Actor123: t13.transformable
Location: 7,33
Owner: Neutral
Actor124: t13.transformable
Location: 3,34
Owner: Neutral
Actor125: t13.transformable
Location: 22,42
Owner: Neutral
AttackTrigger1: proc
Location: 46,42
Owner: Nod
Actor127: sam
Location: 37,23
Owner: Nod
Actor128: sam
Location: 32,23
Owner: Nod
Actor129: gun
Location: 19,16
Owner: Nod
Facing: 384
Actor130: gun
Location: 14,18
Owner: Nod
Facing: 384
Actor131: nuk2
Location: 39,21
Owner: Nod
AttackTrigger2: nuke
Location: 42,42
Owner: Nod
AttackTrigger3: nuke
Location: 40,42
Owner: Nod
Actor134: sam
Location: 34,43
Owner: Nod
Actor135: sam
Location: 35,41
Owner: Nod
Actor136: sam
Location: 20,33
Owner: Nod
Actor137: sam
Location: 28,29
Owner: Nod
Actor138: sam
Location: 18,30
Owner: Nod
Actor139: sam
Location: 27,32
Owner: Nod
Powerplant1: nuk2
Location: 18,48
Owner: Nod
Powerplant2: nuk2
Location: 20,49
Owner: Nod
Actor142: obli
Location: 20,31
Owner: Nod
AttackTrigger4: obli
Location: 24,30
Owner: Nod
NodHQ: hq
Location: 47,46
Owner: Nod
Actor145: gun
Location: 45,50
Owner: Nod
Facing: 512
Actor146: gun
Location: 42,50
Owner: Nod
Facing: 512
Actor147: fact
Location: 34,22
Owner: Nod
Actor148: proc
Location: 6,12
Owner: Nod
Actor149: silo
Location: 8,11
Owner: Nod
Actor150: silo
Location: 8,9
Owner: Nod
Actor151: hpad
Location: 22,10
Owner: Nod
Actor152: hpad
Location: 29,10
Owner: Nod
Actor153: sam
Location: 30,13
Owner: Nod
Actor154: sam
Location: 20,9
Owner: Nod
Actor155: sam
Location: 30,9
Owner: Nod
Actor156: sam
Location: 20,13
Owner: Nod
Airfield: afld
Location: 14,12
Owner: Nod
Biolab: bio
Location: 25,11
Owner: Nod
SAM01: sam
Location: 2,44
Owner: Nod
SAM02: sam
Location: 18,42
Owner: Nod
Obelisk01: obli
Location: 15,53
Owner: Nod
HandOfNod: hand
Location: 42,45
Owner: Nod
Actor163: obli
Location: 16,17
Owner: Nod
Actor164: nuk2
Location: 4,9
Owner: Nod
Actor165: nuk2
Location: 6,9
Owner: Nod
Actor166: nuk2
Location: 2,9
Owner: Nod
Actor167: nuk2
Location: 2,12
Owner: Nod
Actor168: nuk2
Location: 4,12
Owner: Nod
Actor169: sam
Location: 2,16
Owner: Nod
Actor170: sam
Location: 4,16
Owner: Nod
Actor171: ltnk
Location: 16,19
Owner: Nod
Facing: 384
Actor172: ltnk
Location: 19,18
Owner: Nod
Facing: 384
Actor173: arty
Location: 41,22
Owner: Nod
Facing: 512
Actor174: arty
Location: 38,22
Owner: Nod
Facing: 512
Actor175: arty
Location: 33,22
Owner: Nod
Facing: 512
Actor176: stnk
Location: 30,19
Owner: Nod
Actor177: stnk
Location: 32,17
Owner: Nod
Actor178: stnk
Location: 24,12
Owner: Nod
Facing: 512
Actor179: stnk
Location: 27,12
Owner: Nod
Facing: 512
Actor180: ftnk
Location: 6,16
Owner: Nod
Facing: 384
Actor181: e4
Location: 23,32
Owner: Nod
Facing: 512
SubCell: 0
Actor182: e4
Location: 22,31
Owner: Nod
Facing: 512
SubCell: 1
Actor183: e4
Location: 23,31
Owner: Nod
Facing: 512
SubCell: 2
Actor184: e4
Location: 36,50
Owner: Nod
Facing: 384
SubCell: 4
Actor185: c6
Location: 41,15
Owner: Neutral
SubCell: 1
Actor186: c5
Location: 41,14
Owner: Neutral
SubCell: 0
Actor187: c4
Location: 34,14
Owner: Neutral
SubCell: 2
Actor188: c3
Location: 40,14
Owner: Neutral
SubCell: 0
Actor189: c3
Location: 35,15
Owner: Neutral
SubCell: 0
Actor190: c2
Location: 34,15
Owner: Neutral
SubCell: 1
Actor191: c1
Location: 35,14
Owner: Neutral
SubCell: 4
Actor192: e4
Location: 20,42
Owner: Nod
Facing: 768
SubCell: 4
Actor193: e4
Location: 3,45
Owner: Nod
Facing: 512
SubCell: 4
Actor194: e4
Location: 2,45
Owner: Nod
Facing: 512
SubCell: 4
Actor195: e1
Location: 18,40
Owner: Nod
Facing: 768
SubCell: 3
Actor196: e1
Location: 16,43
Owner: Nod
Facing: 512
SubCell: 4
Flare: waypoint
Location: 17,51
Owner: Neutral
UnitsRally: waypoint
Owner: GDI
Location: 7,56
lstEnd: waypoint
Owner: GDI
Location: 7,58
lstStart: waypoint
Owner: GDI
Location: 7,61
Apache1: heli
Owner: Nod
Location: 21,11
Facing: 368
Apache2: heli
Owner: Nod
Location: 28,11
Facing: 368
HeliPatrol1: waypoint
Owner: Nod
Location: 15,43
HeliPatrol2: waypoint
Owner: Nod
Location: 3,49
HeliPatrol3: waypoint
Owner: Nod
Location: 24,55
HeliPatrol4: waypoint
Owner: Nod
Location: 44,52
HeliPatrol5: waypoint
Owner: Nod
Location: 45,32
HeliPatrol6: waypoint
Owner: Nod
Location: 26,14
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

View File

@@ -0,0 +1,38 @@
World:
LuaScript:
Scripts: campaign.lua, utils.lua, cnc64gdi01.lua
MusicPlaylist:
StartingMusic: aoi
MissionData:
Briefing: briefing
StartVideo: obel.vqa
WinVideo: orcabomb.vqa
LossVideo: cutout.vqa
Player:
PlayerResources:
DefaultCash: 10000
BIO.Husk:
Tooltip:
ShowOwnerRow: false
EYE:
IonCannonPower:
Prerequisites: ~disabled
FLARE:
RevealsShroud:
Range: 5c0
STNK:
Buildable:
Prerequisites: ~techlevel.high
TRAN:
Buildable:
Prerequisites: ~disabled
RMBO:
Buildable:
Prerequisites: ~disabled