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,94 @@
--[[
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.
]]
SamSites = { Sam1, Sam2, Sam3, Sam4 }
Sam4Guards = { Sam4Guard0, Sam4Guard1, Sam4Guard2, Sam4Guard3, Sam4Guard4, HiddenBuggy }
NodInfantrySquad = { "e1", "e1", "e1", "e1", "e1" }
NodAttackRoutes = { { AttackWaypoint }, { AttackWaypoint }, { AttackRallypoint1, AttackRallypoint2, AttackWaypoint } }
InfantryReinforcements = { "e1", "e1", "e1", "e1", "e1", "e2", "e2", "e2", "e2", "e2" }
JeepReinforcements = { "jeep", "jeep", "jeep" }
AttackPlayer = function()
if NodBarracks.IsDead or NodBarracks.Owner == GDI then
return
end
local after = function(team)
local count = 1
local route = Utils.Random(NodAttackRoutes)
Utils.Do(team, function(actor)
Trigger.OnIdle(actor, function()
if actor.Location == route[count].Location then
if not count == #route then
count = count + 1
else
Trigger.ClearAll(actor)
Trigger.AfterDelay(0, function()
Trigger.OnIdle(actor, actor.Hunt)
end)
end
else
actor.AttackMove(route[count].Location)
end
end)
end)
Trigger.OnAllKilled(team, function() Trigger.AfterDelay(DateTime.Seconds(15), AttackPlayer) end)
end
NodBarracks.Build(NodInfantrySquad, after)
end
SendReinforcements = function()
Reinforcements.Reinforce(GDI, JeepReinforcements, { VehicleStart.Location, VehicleStop.Location })
Reinforcements.Reinforce(GDI, InfantryReinforcements, { InfantryStart.Location, InfantryStop.Location }, 5)
Trigger.AfterDelay(DateTime.Seconds(3), function()
Reinforcements.Reinforce(GDI, { "mcv" }, { VehicleStart.Location, MCVwaypoint.Location })
InitialUnitsArrived = true
end)
Media.PlaySpeechNotification(GDI, "Reinforce")
end
WorldLoaded = function()
GDI = Player.GetPlayer("GDI")
Nod = Player.GetPlayer("Nod")
InitObjectives(GDI)
DestroyNod = AddPrimaryObjective(GDI, "eliminate-nod")
local airSupportObjective = AddSecondaryObjective(GDI, "destroy-sams")
Trigger.OnAllKilled(SamSites, function()
GDI.MarkCompletedObjective(airSupportObjective)
Actor.Create("airstrike.proxy", true, { Owner = GDI })
end)
RepairNamedActors(Nod, 0.25)
Trigger.OnDamaged(Sam4, function()
Utils.Do(Sam4Guards, IdleHunt)
end)
SendReinforcements()
Camera.Position = MCVwaypoint.CenterPosition
Trigger.AfterDelay(DateTime.Seconds(15), AttackPlayer)
end
Tick = function()
if InitialUnitsArrived then
if GDI.HasNoRequiredUnits() then
GDI.MarkFailedObjective(DestroyNod)
end
if Nod.HasNoRequiredUnits() then
GDI.MarkCompletedObjective(DestroyNod)
end
end
end

BIN
mods/cnc/maps/gdi03/map.bin Normal file

Binary file not shown.

View File

@@ -0,0 +1,7 @@
## rules.yaml
briefing =
Build up your forces to destroy the Nod base.
Once all Nod SAM sites are neutralized, air support will be provided to combat ground defenses.
Destroy all units and structures to complete the mission.

BIN
mods/cnc/maps/gdi03/map.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -0,0 +1,703 @@
MapFormat: 12
RequiresMod: cnc
Title: 03: Destroy the SAM Sites
Author: Westwood Studios
Tileset: TEMPERAT
MapSize: 64,64
Bounds: 1,25,45,37
Visibility: MissionSelector
Categories: Campaign
LockPreview: True
Players:
PlayerReference@Nod:
Name: Nod
Faction: nod
Color: FE1100
Allies: Nod
Enemies: GDI
Bot: campaign
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: gdi
PlayerReference@GDI:
Name: GDI
Playable: True
AllowBots: False
Required: True
LockFaction: True
Faction: gdi
LockColor: True
Color: F5D378
LockSpawn: True
LockTeam: True
Allies: GDI
Enemies: Nod
Actors:
Actor0: wood
Location: 45,59
Owner: Neutral
Actor1: wood
Location: 44,59
Owner: Neutral
Actor2: wood
Location: 43,59
Owner: Neutral
Actor3: wood
Location: 42,59
Owner: Neutral
Actor4: wood
Location: 45,58
Owner: Neutral
Actor5: v14
Location: 44,58
Owner: Neutral
Actor6: v15
Location: 43,58
Owner: Neutral
Actor7: wood
Location: 42,58
Owner: Neutral
Actor8: wood
Location: 45,57
Owner: Neutral
Actor9: v17
Location: 44,57
Owner: Neutral
Actor10: v17
Location: 43,57
Owner: Neutral
Actor11: wood
Location: 42,57
Owner: Neutral
Actor12: sbag
Location: 35,33
Owner: Neutral
Actor13: sbag
Location: 34,33
Owner: Neutral
Actor14: sbag
Location: 33,33
Owner: Neutral
Actor15: sbag
Location: 32,33
Owner: Neutral
Actor16: sbag
Location: 31,33
Owner: Neutral
Actor17: sbag
Location: 30,33
Owner: Neutral
Actor18: sbag
Location: 29,33
Owner: Neutral
Actor19: sbag
Location: 28,33
Owner: Neutral
Actor20: sbag
Location: 23,33
Owner: Neutral
Actor21: sbag
Location: 22,33
Owner: Neutral
Actor22: sbag
Location: 21,33
Owner: Neutral
Actor23: sbag
Location: 20,33
Owner: Neutral
Actor24: sbag
Location: 35,32
Owner: Neutral
Actor25: sbag
Location: 29,32
Owner: Neutral
Actor26: sbag
Location: 28,32
Owner: Neutral
Actor27: sbag
Location: 23,32
Owner: Neutral
Actor28: sbag
Location: 22,32
Owner: Neutral
Actor29: sbag
Location: 20,32
Owner: Neutral
Actor30: sbag
Location: 35,31
Owner: Neutral
Actor31: sbag
Location: 20,31
Owner: Neutral
Actor32: sbag
Location: 35,30
Owner: Neutral
Actor33: sbag
Location: 20,30
Owner: Neutral
Actor34: sbag
Location: 35,29
Owner: Neutral
Actor35: sbag
Location: 20,29
Owner: Neutral
Actor36: sbag
Location: 35,28
Owner: Neutral
Actor37: sbag
Location: 20,28
Owner: Neutral
Actor38: sbag
Location: 35,27
Owner: Neutral
Actor39: sbag
Location: 20,27
Owner: Neutral
Actor40: sbag
Location: 35,26
Owner: Neutral
Actor41: sbag
Location: 20,26
Owner: Neutral
Actor42: sbag
Location: 35,25
Owner: Neutral
Actor43: sbag
Location: 34,25
Owner: Neutral
Actor44: sbag
Location: 33,25
Owner: Neutral
Actor45: sbag
Location: 32,25
Owner: Neutral
Actor46: sbag
Location: 31,25
Owner: Neutral
Actor47: sbag
Location: 30,25
Owner: Neutral
Actor48: sbag
Location: 29,25
Owner: Neutral
Actor49: sbag
Location: 28,25
Owner: Neutral
Actor50: sbag
Location: 27,25
Owner: Neutral
Actor51: sbag
Location: 26,25
Owner: Neutral
Actor52: sbag
Location: 25,25
Owner: Neutral
Actor53: sbag
Location: 24,25
Owner: Neutral
Actor54: sbag
Location: 23,25
Owner: Neutral
Actor55: sbag
Location: 22,25
Owner: Neutral
Actor56: sbag
Location: 21,25
Owner: Neutral
Actor57: sbag
Location: 20,25
Owner: Neutral
Actor58: t01
Location: 21,51
Owner: Neutral
Actor59: tc04
Location: 11,34
Owner: Neutral
Actor60: t01
Location: 43,59
Owner: Neutral
Actor61: t01
Location: 41,58
Owner: Neutral
Actor62: t05
Location: 12,38
Owner: Neutral
Actor63: tc01
Location: 22,44
Owner: Neutral
Actor64: t02
Location: 3,34
Owner: Neutral
Actor65: tc02
Location: 24,57
Owner: Neutral
Actor66: tc02
Location: 3,35
Owner: Neutral
Actor67: tc02
Location: 2,48
Owner: Neutral
Actor68: t03
Location: 41,57
Owner: Neutral
Actor69: t03
Location: 45,55
Owner: Neutral
Actor70: t06
Location: 45,53
Owner: Neutral
Actor71: t16
Location: 40,60
Owner: Neutral
Actor72: tc01
Location: 44,52
Owner: Neutral
Actor73: tc04
Location: 39,53
Owner: Neutral
Actor74: t01
Location: 36,38
Owner: Neutral
Actor75: t06
Location: 36,43
Owner: Neutral
Actor76: t06
Location: 35,42
Owner: Neutral
Actor77: t05
Location: 24,56
Owner: Neutral
Actor78: tc02
Location: 30,51
Owner: Neutral
Actor79: t01
Location: 30,53
Owner: Neutral
Actor80: tc05
Location: 34,56
Owner: Neutral
Actor81: tc04
Location: 24,49
Owner: Neutral
Actor82: t07
Location: 4,36
Owner: Neutral
Actor83: t06
Location: 2,37
Owner: Neutral
Actor84: t08
Location: 3,38
Owner: Neutral
Actor85: t11
Location: 2,36
Owner: Neutral
Actor86: tc05
Location: 17,31
Owner: Neutral
Actor87: t12
Location: 19,26
Owner: Neutral
Actor88: t12
Location: 33,44
Owner: Neutral
Actor89: t08
Location: 36,42
Owner: Neutral
Actor90: tc01
Location: 39,43
Owner: Neutral
Actor91: tc02
Location: 22,51
Owner: Neutral
Actor92: tc04
Location: 20,50
Owner: Neutral
Actor93: tc01
Location: 43,33
Owner: Neutral
Actor94: t17
Location: 14,33
Owner: Neutral
Actor95: t12
Location: 36,30
Owner: Neutral
Actor96: tc04
Location: 38,25
Owner: Neutral
Actor97: tc01
Location: 36,28
Owner: Neutral
Actor98: t16
Location: 38,28
Owner: Neutral
Actor99: tc01
Location: 34,45
Owner: Neutral
Actor100: tc04
Location: 20,42
Owner: Neutral
Actor101: t16
Location: 19,43
Owner: Neutral
Actor102: tc04
Location: 16,26
Owner: Neutral
Actor103: tc01
Location: 4,31
Owner: Neutral
Actor104: t17
Location: 6,31
Owner: Neutral
Actor105: t01
Location: 20,38
Owner: Neutral
Actor106: t02
Location: 23,40
Owner: Neutral
Actor107: t02
Location: 31,42
Owner: Neutral
Actor108: t07
Location: 32,39
Owner: Neutral
Actor109: t07
Location: 21,33
Owner: Neutral
Actor110: nuke
Location: 29,26
Owner: Nod
NodBarracks: hand
Location: 24,27
Owner: Nod
Actor112: silo
Location: 33,26
Owner: Nod
Actor113: silo
Location: 31,26
Owner: Nod
Actor114: proc
Location: 31,28
Owner: Nod
Actor115: nuke
Location: 22,26
Owner: Nod
Actor116: fact
Location: 26,26
Owner: Nod
Actor117: gun
Location: 20,34
Owner: Nod
Facing: 640
Actor118: v07
Location: 40,55
Owner: Neutral
Actor119: v11
Location: 44,60
Owner: Neutral
Actor120: v08
Location: 40,56
Owner: Neutral
Actor121: v01
Location: 44,54
Owner: Neutral
Actor125: gun
Location: 36,30
Owner: Nod
Facing: 384
Actor127: gun
Location: 29,34
Owner: Nod
Facing: 384
Actor129: bggy
Location: 22,29
Owner: Nod
Facing: 512
Actor134: bggy
Location: 21,29
Owner: Nod
Facing: 512
Actor135: bggy
Location: 28,50
Owner: Nod
Facing: 640
Actor137: bggy
Location: 21,30
Owner: Nod
Facing: 512
Actor138: bggy
Location: 22,30
Owner: Nod
Facing: 512
Actor139: e3
Location: 17,28
Owner: Nod
Facing: 384
SubCell: 0
Actor140: e1
Location: 19,29
Owner: Nod
Facing: 640
SubCell: 4
Actor141: e1
Location: 18,28
Owner: Nod
Facing: 640
SubCell: 4
Actor142: e1
Location: 19,28
Owner: Nod
Facing: 384
SubCell: 0
Actor143: e1
Location: 31,32
Owner: Nod
Facing: 640
SubCell: 0
Actor144: e1
Location: 34,32
Owner: Nod
Facing: 384
SubCell: 4
Actor145: e3
Location: 34,31
Owner: Nod
Facing: 384
SubCell: 4
Actor146: e3
Location: 34,32
Owner: Nod
Facing: 384
SubCell: 1
Actor147: e3
Location: 18,29
Owner: Nod
Facing: 640
SubCell: 3
Actor148: e3
Location: 30,51
Owner: Nod
Facing: 640
SubCell: 0
Actor149: e1
Location: 20,42
Owner: Nod
Facing: 640
SubCell: 0
Actor150: e1
Location: 23,44
Owner: Nod
Facing: 896
SubCell: 4
Actor151: e1
Location: 24,33
Owner: Nod
Facing: 768
SubCell: 0
Actor152: e1
Location: 22,34
Owner: Nod
Facing: 384
SubCell: 4
Actor153: e1
Location: 27,33
Owner: Nod
Facing: 384
SubCell: 2
Actor154: e1
Location: 30,34
Owner: Nod
Facing: 640
SubCell: 1
Actor155: e1
Location: 14,33
Owner: Nod
Facing: 384
SubCell: 4
Actor156: e1
Location: 34,45
Owner: Nod
Facing: 256
SubCell: 1
Actor157: e1
Location: 36,45
Owner: Nod
Facing: 640
SubCell: 1
Actor158: e3
Location: 30,32
Owner: Nod
Facing: 640
SubCell: 3
Actor159: e3
Location: 21,32
Owner: Nod
Facing: 384
SubCell: 3
Actor160: e3
Location: 14,32
Owner: Nod
Facing: 384
SubCell: 3
Actor163: c6
Location: 42,56
Owner: Neutral
SubCell: 1
Actor164: c3
Location: 43,56
Owner: Neutral
SubCell: 1
Actor165: c2
Location: 40,58
Owner: Neutral
SubCell: 1
Actor166: e3
Location: 40,43
Owner: Nod
SubCell: 3
Actor167: e3
Location: 19,45
Owner: Nod
Facing: 640
SubCell: 2
Actor168: e3
Location: 43,33
Owner: Nod
Facing: 384
SubCell: 4
Actor177: e3
Location: 14,32
Owner: Nod
Facing: 384
SubCell: 1
Actor179: e3
Location: 13,36
Owner: Nod
Facing: 384
SubCell: 2
Actor180: e3
Location: 11,34
Owner: Nod
Facing: 256
SubCell: 4
Actor181: e3
Location: 20,45
Owner: Nod
Facing: 640
SubCell: 3
Actor182: e1
Location: 25,51
Owner: Nod
Facing: 640
SubCell: 0
Actor183: e1
Location: 24,52
Owner: Nod
Facing: 640
SubCell: 0
Actor184: e3
Location: 33,46
Owner: Nod
Facing: 640
SubCell: 0
Actor185: e3
Location: 37,47
Owner: Nod
Facing: 640
SubCell: 3
Actor186: e3
Location: 37,28
Owner: Nod
SubCell: 3
Actor187: e3
Location: 38,28
Owner: Nod
SubCell: 0
Actor188: e3
Location: 14,32
Owner: Nod
SubCell: 4
Actor191: e3
Location: 24,46
Owner: Nod
Facing: 512
SubCell: 1
Sam1: sam
Location: 28,52
Owner: Nod
Sam2: sam
Location: 22,46
Owner: Nod
Sam3: sam
Location: 35,47
Owner: Nod
Sam4: sam
Location: 12,34
Owner: Nod
HiddenBuggy: bggy
Location: 6,25
Owner: Nod
Facing: 0
Sam4Guard0: e1
Location: 9,31
Owner: Nod
Facing: 384
SubCell: 1
Sam4Guard1: e1
Location: 11,31
Owner: Nod
Facing: 384
SubCell: 4
Sam4Guard2: e1
Location: 10,31
Owner: Nod
Facing: 384
SubCell: 2
Sam4Guard3: e1
Location: 10,31
Owner: Nod
SubCell: 3
Sam4Guard4: e1
Location: 10,31
Owner: Nod
SubCell: 4
InfantryStart: waypoint
Location: 14,61
Owner: Neutral
VehicleStart: waypoint
Location: 9,61
Owner: Neutral
AttackWaypoint: waypoint
Location: 6,52
Owner: Neutral
MCVwaypoint: waypoint
Location: 9,60
Owner: Neutral
VehicleStop: waypoint
Location: 10,55
Owner: Neutral
InfantryStop: waypoint
Location: 14,57
Owner: Neutral
AttackRallypoint1: waypoint
Location: 43,36
Owner: Neutral
AttackRallypoint2: waypoint
Location: 37,51
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,99 @@
World:
LuaScript:
Scripts: campaign.lua, utils.lua, gdi03.lua
MusicPlaylist:
StartingMusic: crep226m
MissionData:
Briefing: briefing
BriefingVideo: gdi3.vqa
StartVideo: samdie.vqa
WinVideo: bombaway.vqa
LossVideo: gameover.vqa
SBAG:
-Crushable:
Buildable:
Prerequisites: ~disabled
CYCL:
-Crushable:
Buildable:
Prerequisites: ~disabled
WEAP:
Buildable:
Prerequisites: ~disabled
NUK2:
Buildable:
Prerequisites: ~disabled
FIX:
Buildable:
Prerequisites: ~disabled
HPAD:
Buildable:
Prerequisites: ~disabled
EYE:
Buildable:
Prerequisites: ~disabled
GUN:
Buildable:
Prerequisites: ~disabled
GTWR:
Buildable:
Prerequisites: ~disabled
ATWR:
Buildable:
Prerequisites: ~disabled
BRIK:
Buildable:
Prerequisites: ~disabled
E3:
Buildable:
Queue: Infantry.Nod
E4:
Buildable:
Prerequisites: ~disabled
E5:
Buildable:
Prerequisites: ~disabled
RMBO:
Buildable:
Prerequisites: ~disabled
AFLD:
Buildable:
Prerequisites: ~disabled
TMPL:
Buildable:
Prerequisites: ~disabled
OBLI:
Buildable:
Prerequisites: ~disabled
SAM:
Buildable:
Prerequisites: ~disabled
Building:
Power:
Amount: -10
-Capturable:
HQ:
Tooltip:
-AirstrikePower:
Buildable:
Description: actor-hq-description