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

Binary file not shown.

View File

@@ -0,0 +1,2 @@
## rules.yaml
briefing = GDI has kept a stranglehold on Egypt for many years. Establish a forward attack base in the region. Begin by selecting your Mobile Construction Vehicle (MCV) and right-clicking on it to enable base construction. This area contains plenty of Tiberium, so establishing a base should be straightforward.

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -0,0 +1,239 @@
MapFormat: 12
RequiresMod: cnc
Title: 02a: Invasion of Egypt
Author: Westwood Studios
Tileset: DESERT
MapSize: 64,64
Bounds: 3,23,36,26
Visibility: MissionSelector
Categories: Campaign
LockPreview: True
Players:
PlayerReference@GDI:
Name: GDI
Faction: gdi
Color: F5D378
Allies: 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
Enemies: GDI
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: gdi
Actors:
Actor0: t08
Location: 34,38
Owner: Neutral
Actor1: t18
Location: 34,36
Owner: Neutral
Actor2: t08
Location: 25,31
Owner: Neutral
Actor3: t08
Location: 26,31
Owner: Neutral
Actor4: t08
Location: 21,40
Owner: Neutral
Actor5: t08
Location: 3,24
Owner: Neutral
Actor6: t08
Location: 3,42
Owner: Neutral
Actor7: t08
Location: 4,42
Owner: Neutral
Actor8: t08
Location: 6,48
Owner: Neutral
Actor9: t08
Location: 16,43
Owner: Neutral
Actor10: t08
Location: 26,48
Owner: Neutral
Actor11: t08
Location: 13,27
Owner: Neutral
Actor12: t08
Location: 6,40
Owner: Neutral
Actor13: rock1
Location: 22,32
Owner: Neutral
Actor20: jeep
Location: 5,24
Owner: GDI
Facing: 384
Actor21: jeep
Location: 6,32
Owner: GDI
Facing: 640
Actor22: jeep
Location: 12,27
Owner: GDI
Facing: 128
Actor28: e1
Location: 10,24
Owner: GDI
Facing: 384
SubCell: 3
Actor29: e1
Location: 10,24
Owner: GDI
Facing: 384
SubCell: 1
Actor30: e1
Location: 9,24
Owner: GDI
Facing: 384
SubCell: 4
Actor31: e1
Location: 5,34
Owner: GDI
SubCell: 3
Actor32: e1
Location: 5,35
Owner: GDI
SubCell: 2
Actor33: e1
Location: 10,27
Owner: GDI
SubCell: 2
Actor34: e1
Location: 11,27
Owner: GDI
SubCell: 1
Actor35: e1
Location: 10,24
Owner: GDI
Facing: 384
SubCell: 2
Actor37: e1
Location: 7,40
Owner: GDI
SubCell: 2
waypoint26: waypoint
Location: 26,41
Owner: Neutral
waypoint23: waypoint
Location: 33,45
Owner: Neutral
waypoint21: waypoint
Location: 32,42
Owner: Neutral
waypoint17: waypoint
Location: 32,26
Owner: Neutral
waypoint9: waypoint
Location: 29,47
Owner: Neutral
waypoint8: waypoint
Location: 16,28
Owner: Neutral
waypoint7: waypoint
Location: 23,40
Owner: Neutral
waypoint6: waypoint
Location: 20,47
Owner: Neutral
waypoint5: waypoint
Location: 10,44
Owner: Neutral
waypoint4: waypoint
Location: 13,36
Owner: Neutral
waypoint3: waypoint
Location: 36,41
Owner: Neutral
waypoint2: waypoint
Location: 31,28
Owner: Neutral
waypoint1: waypoint
Location: 18,25
Owner: Neutral
waypoint0: waypoint
Location: 4,26
Owner: Neutral
Refinery: proc
Location: 7,27
Owner: GDI
FreeActor: false
Yard: fact
Location: 10,28
Owner: GDI
Barracks: pyle
Location: 7,32
Owner: GDI
Plant: nuke
Location: 11,31
Owner: GDI
Silo1: silo
Location: 9,31
Owner: GDI
Silo2: silo
Location: 9,33
Owner: GDI
Guard1: e1
Location: 8,40
Owner: GDI
SubCell: 1
Guard2: e1
Location: 37,24
Owner: GDI
SubCell: 3
Guard3: e1
Location: 36,24
Owner: GDI
SubCell: 2
Guard4: e1
Location: 27,31
Owner: GDI
SubCell: 1
Harvester: harv
Location: 5,29
Owner: GDI
Health: 39
Facing: 896
McvEntry: waypoint
Location: 33,48
Owner: Neutral
McvRally: waypoint
Location: 33,46
Owner: Neutral
UnitsEntry: waypoint
Location: 30,48
Owner: Neutral
UnitsRally: waypoint
Location: 30,44
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

View File

@@ -0,0 +1,103 @@
--[[
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 = { "bggy", "e1", "e1", "e1", "e1", "e1", "bggy", "e1", "e1", "e1", "bggy" }
NodBaseBuildings = { "hand", "fact", "nuke" }
GDIBase = { Refinery, Yard, Barracks, Plant, Silo1, Silo2 }
GDIWaypoints1 = { waypoint0, waypoint1, waypoint2, waypoint3 }
GDIWaypoints2 = { waypoint0, waypoint1, waypoint4, waypoint5, waypoint6, waypoint7, waypoint9 }
GetAttackers = function(amount)
local units = GDI.GetActorsByType("e1")
if amount > #units then
return units
end
return Utils.Take(amount, units)
end
WorldLoaded = function()
Nod = Player.GetPlayer("Nod")
GDI = Player.GetPlayer("GDI")
InitObjectives(Nod)
GDIObjective = AddPrimaryObjective(GDI, "")
BuildBaseObjective = AddPrimaryObjective(Nod, "build-base")
DestroyGDI = AddPrimaryObjective(Nod, "destroy-gdi-units")
Utils.Do({ Refinery, Yard }, function(actor)
Trigger.OnDamaged(actor, function()
if not Grd2TriggerSwitch then
Grd2TriggerSwitch = true
Utils.Do(GetAttackers(5), IdleHunt)
end
end)
end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(25), function()
MoveAndHunt(GetAttackers(2), GDIWaypoints1)
end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(20), function()
MoveAndHunt(GetAttackers(3), GDIWaypoints2)
end)
Trigger.OnKilled(Guard1, function()
MoveAndHunt(GetAttackers(3), GDIWaypoints2)
end)
Trigger.OnKilled(Guard4, function()
MoveAndHunt(GetAttackers(2), GDIWaypoints1)
end)
Trigger.OnAllKilled({ Guard2, Guard3 }, function()
MoveAndHunt(GetAttackers(2), GDIWaypoints1)
end)
Trigger.OnDamaged(Harvester, function()
if Atk5TriggerSwitch then
return
end
Atk5TriggerSwitch = true
MoveAndHunt(GetAttackers(3), GDIWaypoints2)
end)
Trigger.OnAllRemovedFromWorld(GDIBase, function()
Utils.Do(GDI.GetGroundAttackers(), IdleHunt)
end)
Trigger.AfterDelay(0, function()
Utils.Do(GDI.GetActorsByType("e1"), function(unit)
RebuildUnit({ unit }, GDI, Barracks)
end)
end)
Media.PlaySpeechNotification(Nod, "Reinforce")
Reinforcements.Reinforce(Nod, NodUnits, { UnitsEntry.Location, UnitsRally.Location }, 15)
Reinforcements.Reinforce(Nod, { "mcv" }, { McvEntry.Location, McvRally.Location })
end
Tick = function()
if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then
GDI.MarkCompletedObjective(GDIObjective)
end
if GDI.HasNoRequiredUnits() then
Nod.MarkCompletedObjective(DestroyGDI)
end
if DateTime.GameTime % DateTime.Seconds(1) == 0 and not Nod.IsObjectiveCompleted(BuildBaseObjective) and CheckForBase(Nod, NodBaseBuildings) then
Nod.MarkCompletedObjective(BuildBaseObjective)
end
end

View File

@@ -0,0 +1,120 @@
World:
LuaScript:
Scripts: campaign.lua, utils.lua, nod02a.lua
MusicPlaylist:
StartingMusic: ind2
VictoryMusic: nod_win1
MissionData:
Briefing: briefing
BriefingVideo: nod2.vqa
StartVideo: seige.vqa
WinVideo: airstrk.vqa
LossVideo: deskill.vqa
Player:
PlayerResources:
DefaultCash: 4000
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
FTNK:
Buildable:
Prerequisites: ~disabled
STNK:
Buildable:
Prerequisites: ~disabled
ARTY:
Buildable:
Prerequisites: ~disabled
E5:
Buildable:
Prerequisites: ~disabled
RMBO:
Buildable:
Prerequisites: ~disabled
MLRS:
Buildable:
Prerequisites: ~disabled
MCV:
Buildable:
Prerequisites: ~disabled
SAM:
Buildable:
Prerequisites: ~disabled
HQ:
Buildable:
Prerequisites: ~disabled
AFLD:
Buildable:
Prerequisites: ~disabled
E4:
Buildable:
Prerequisites: ~disabled
E3:
Buildable:
Prerequisites: ~disabled
E2:
Buildable:
Prerequisites: ~disabled
SBAG:
Buildable:
Prerequisites: ~disabled
GTWR:
Buildable:
Prerequisites: ~disabled
WEAP:
Buildable:
Prerequisites: ~disabled
EYE:
Buildable:
Prerequisites: ~disabled
ATWR:
Buildable:
Prerequisites: ~disabled