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,113 @@
--[[
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.
]]
LoseTriggerHouses = { TrigLos2Farm1, TrigLos2Farm2, TrigLos2Farm3, TrigLos2Farm4 }
TownAttackTrigger = { CPos.New(54, 38), CPos.New(55, 38), CPos.New(56, 38), CPos.New(57, 38) }
GDIReinforcementsTrigger = { CPos.New(32, 51), CPos.New(32, 52), CPos.New(33, 52) }
GDIReinforcementsPart1 = { "jeep", "jeep" }
GDIReinforcementsPart2 = { "e2", "e2", "e2", "e2", "e2" }
TownAttackWave1 = { "bggy", "bggy" }
TownAttackWave2 = { "ltnk", "ltnk" }
TownAttackWave3 = { "e1", "e1", "e1", "e3", "e3", "e3" }
Civvie1Wpts = { CivvieWpts1, CivvieWpts2 }
Civvie2Wpts = { CivvieWpts3, CivvieWpts1, CivvieWpts4, CivvieWpts5, CivvieWpts6, CivvieWpts7, CivvieWpts8, CivvieWpts9, CivvieWpts10, CivvieWpts11 }
FollowCivvieWpts = function(actor, wpts)
Utils.Do(wpts, function(wpt)
actor.Move(wpt.Location, 2)
actor.Wait(DateTime.Seconds(2))
end)
end
FollowWaypoints = function(actor, wpts)
Utils.Do(wpts, function(wpt)
actor.AttackMove(wpt.Location, 2)
end)
end
TownAttackersIdleAction = function(actor)
actor.AttackMove(TownAttackWpt.Location, 2)
actor.Hunt()
end
TownAttackAction = function(actor)
Trigger.OnIdle(actor, TownAttackersIdleAction)
end
AttackTown = function()
Reinforcements.Reinforce(Nod, TownAttackWave1, { NodReinfEntry.Location, NodReinfRally.Location }, DateTime.Seconds(0.25), TownAttackAction)
Trigger.AfterDelay(DateTime.Seconds(2), function()
Reinforcements.Reinforce(Nod, TownAttackWave2, { NodReinfEntry.Location, NodReinfRally.Location }, DateTime.Seconds(1), TownAttackAction)
end)
Trigger.AfterDelay(DateTime.Seconds(4), function()
Reinforcements.Reinforce(Nod, TownAttackWave3, { NodReinfEntry.Location, NodReinfRally.Location }, DateTime.Seconds(1), TownAttackAction)
end)
end
SendGDIReinforcements = function()
Media.PlaySpeechNotification(GDI, "Reinforce")
Reinforcements.Reinforce(GDI, GDIReinforcementsPart1, { GDIReinfEntry1.Location, GDIReinfRally1.Location, GDIReinfRally3.Location }, DateTime.Seconds(1))
Trigger.AfterDelay(DateTime.Seconds(5), function()
Media.PlaySpeechNotification(GDI, "Reinforce")
local apc = Reinforcements.ReinforceWithTransport(GDI, "apc", GDIReinforcementsPart2, { GDIReinfEntry2.Location, GDIReinfRally2.Location, GDIUnloadWpt.Location })[1]
apc.UnloadPassengers()
end)
end
WorldLoaded = function()
GDI = Player.GetPlayer("GDI")
Nod = Player.GetPlayer("Nod")
InitObjectives(GDI)
Trigger.OnAllKilled(LoseTriggerHouses, function()
GDI.MarkFailedObjective(DefendTown)
end)
NodObjective = AddPrimaryObjective(Nod, "")
DefendTown = AddPrimaryObjective(GDI, "defend-bialystok")
EliminateNod = AddPrimaryObjective(GDI, "eliminate-nod")
Trigger.OnExitedFootprint(TownAttackTrigger, function(a, id)
if not TownAttackTriggered and a.Owner == GDI then
TownAttackTriggered = true
Trigger.RemoveFootprintTrigger(id)
AttackTown()
end
end)
Trigger.OnEnteredFootprint(GDIReinforcementsTrigger, function(a, id)
if not GDIReinforcementsTriggered and a.Owner == GDI then
GDIReinforcementsTriggered = true
Trigger.RemoveFootprintTrigger(id)
SendGDIReinforcements()
end
end)
Trigger.AfterDelay(1, function()
FollowCivvieWpts(civvie1, Civvie1Wpts)
FollowCivvieWpts(civvie2, Civvie2Wpts)
end)
Camera.Position = Actor141.CenterPosition
end
Tick = function()
if GDI.HasNoRequiredUnits() then
Nod.MarkCompletedObjective(NodObjective)
end
if Nod.HasNoRequiredUnits() then
GDI.MarkCompletedObjective(DefendTown)
GDI.MarkCompletedObjective(EliminateNod)
end
end

Binary file not shown.

View File

@@ -0,0 +1,7 @@
## rules.yaml
briefing =
Nod is moving to capture and hold a civilian town.
Your mission is to reach the town first and hold off Nod forces until GDI reinforcements arrive.
All invading Nod units must be destroyed.

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -0,0 +1,749 @@
MapFormat: 12
RequiresMod: cnc
Title: 04c: Take Białystok
Author: Westwood Studios
Tileset: TEMPERAT
MapSize: 64,64
Bounds: 14,14,48,44
Visibility: MissionSelector
Categories: Campaign
LockPreview: True
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: gdi
PlayerReference@Nod:
Name: Nod
Faction: nod
Color: FE1100
Allies: Nod
Enemies: GDI, Civilians
Bot: campaign
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
PlayerReference@Civilians:
Name: Civilians
NonCombatant: True
Faction: gdi
Enemies: Nod
Bot: campaign
Actors:
Actor0: v17
Location: 29,55
Owner: Neutral
Actor1: wood
Location: 17,55
Owner: Neutral
Actor2: wood
Location: 16,55
Owner: Neutral
Actor3: v14
Location: 30,54
Owner: Neutral
Actor4: v15
Location: 29,54
Owner: Neutral
Actor5: v16
Location: 18,54
Owner: Neutral
Actor6: v15
Location: 17,54
Owner: Neutral
Actor7: wood
Location: 16,54
Owner: Neutral
Actor8: wood
Location: 26,53
Owner: Neutral
Actor9: wood
Location: 25,53
Owner: Neutral
Actor10: wood
Location: 24,53
Owner: Neutral
Actor11: wood
Location: 23,53
Owner: Neutral
Actor12: v12
Location: 19,53
Owner: Neutral
Actor13: v14
Location: 18,53
Owner: Neutral
Actor14: v18
Location: 17,53
Owner: Neutral
Actor15: wood
Location: 16,53
Owner: Neutral
Actor16: wood
Location: 26,52
Owner: Neutral
Actor17: v17
Location: 25,52
Owner: Neutral
Actor18: v16
Location: 24,52
Owner: Neutral
Actor19: wood
Location: 23,52
Owner: Neutral
Actor20: wood
Location: 26,51
Owner: Neutral
Actor21: v14
Location: 25,51
Owner: Neutral
Actor22: v15
Location: 24,51
Owner: Neutral
Actor23: wood
Location: 23,51
Owner: Neutral
Actor24: wood
Location: 26,50
Owner: Neutral
Actor25: wood
Location: 23,50
Owner: Neutral
Actor26: v12
Location: 17,49
Owner: Neutral
Actor27: tc01
Location: 56,46
Owner: Neutral
Actor28: tc03
Location: 54,48
Owner: Neutral
Actor29: t07
Location: 53,48
Owner: Neutral
Actor30: t05
Location: 50,45
Owner: Neutral
Actor31: t06
Location: 41,28
Owner: Neutral
Actor32: t07
Location: 44,26
Owner: Neutral
Actor33: tc04
Location: 41,24
Owner: Neutral
Actor34: tc04
Location: 19,15
Owner: Neutral
Actor35: tc05
Location: 16,21
Owner: Neutral
Actor36: tc02
Location: 17,30
Owner: Neutral
Actor37: tc04
Location: 23,28
Owner: Neutral
Actor38: tc01
Location: 21,23
Owner: Neutral
Actor39: t07
Location: 32,54
Owner: Neutral
Actor40: tc02
Location: 30,54
Owner: Neutral
Actor41: tc01
Location: 29,48
Owner: Neutral
Actor42: tc02
Location: 48,45
Owner: Neutral
Actor43: t03
Location: 58,37
Owner: Neutral
Actor44: t01
Location: 59,37
Owner: Neutral
Actor45: t01
Location: 61,35
Owner: Neutral
Actor46: t07
Location: 22,44
Owner: Neutral
Actor47: tc01
Location: 17,43
Owner: Neutral
Actor48: tc04
Location: 20,52
Owner: Neutral
Actor49: tc02
Location: 18,54
Owner: Neutral
Actor50: tc01
Location: 19,55
Owner: Neutral
Actor51: tc01
Location: 51,45
Owner: Neutral
Actor52: tc02
Location: 53,45
Owner: Neutral
Actor53: tc04
Location: 53,46
Owner: Neutral
Actor54: tc02
Location: 15,34
Owner: Neutral
Actor55: tc02
Location: 36,38
Owner: Neutral
Actor56: t07
Location: 36,30
Owner: Neutral
Actor57: tc01
Location: 37,30
Owner: Neutral
Actor58: tc02
Location: 36,28
Owner: Neutral
Actor59: tc04
Location: 17,33
Owner: Neutral
Actor60: tc04
Location: 58,38
Owner: Neutral
Actor61: tc05
Location: 38,53
Owner: Neutral
Actor62: tc04
Location: 14,43
Owner: Neutral
Actor63: tc02
Location: 58,28
Owner: Neutral
Actor64: tc02
Location: 60,37
Owner: Neutral
Actor65: tc02
Location: 47,29
Owner: Neutral
Actor66: tc01
Location: 46,28
Owner: Neutral
Actor67: tc05
Location: 43,28
Owner: Neutral
Actor68: tc05
Location: 55,29
Owner: Neutral
Actor69: tc04
Location: 46,35
Owner: Neutral
Actor70: tc04
Location: 52,36
Owner: Neutral
Actor71: tc04
Location: 52,34
Owner: Neutral
Actor72: tc04
Location: 50,33
Owner: Neutral
Actor73: t15
Location: 48,48
Owner: Neutral
Actor74: tc01
Location: 41,31
Owner: Neutral
Actor75: tc01
Location: 43,30
Owner: Neutral
Actor76: tc02
Location: 44,36
Owner: Neutral
Actor77: tc01
Location: 36,46
Owner: Neutral
Actor78: tc05
Location: 33,45
Owner: Neutral
Actor79: t17
Location: 38,46
Owner: Neutral
Actor80: tc01
Location: 34,43
Owner: Neutral
Actor81: tc01
Location: 43,43
Owner: Neutral
Actor82: tc01
Location: 41,39
Owner: Neutral
Actor83: tc01
Location: 41,42
Owner: Neutral
Actor84: tc02
Location: 41,44
Owner: Neutral
Actor85: tc04
Location: 39,41
Owner: Neutral
Actor86: tc05
Location: 41,37
Owner: Neutral
Actor87: tc05
Location: 27,32
Owner: Neutral
Actor88: tc04
Location: 32,42
Owner: Neutral
Actor89: t07
Location: 28,42
Owner: Neutral
Actor90: t07
Location: 20,38
Owner: Neutral
Actor91: t07
Location: 19,37
Owner: Neutral
Actor92: t16
Location: 18,37
Owner: Neutral
Actor93: tc01
Location: 16,37
Owner: Neutral
Actor94: t17
Location: 25,39
Owner: Neutral
Actor95: tc01
Location: 27,39
Owner: Neutral
Actor96: tc04
Location: 29,38
Owner: Neutral
Actor97: tc01
Location: 48,34
Owner: Neutral
Actor98: tc04
Location: 58,35
Owner: Neutral
Actor99: t06
Location: 47,36
Owner: Neutral
Actor100: t05
Location: 48,36
Owner: Neutral
Actor101: t02
Location: 45,37
Owner: Neutral
Actor102: t01
Location: 44,37
Owner: Neutral
Actor103: t01
Location: 48,40
Owner: Neutral
Actor104: t01
Location: 51,34
Owner: Neutral
Actor105: tc04
Location: 48,32
Owner: Neutral
Actor106: tc04
Location: 16,55
Owner: Neutral
Actor107: tc02
Location: 14,52
Owner: Neutral
Actor108: tc04
Location: 58,13
Owner: Neutral
Actor109: tc05
Location: 52,14
Owner: Neutral
Actor110: tc05
Location: 41,20
Owner: Neutral
Actor111: tc04
Location: 58,24
Owner: Neutral
Actor112: tc01
Location: 54,22
Owner: Neutral
Actor113: tc01
Location: 46,17
Owner: Neutral
Actor114: tc01
Location: 58,18
Owner: Neutral
Actor115: t01
Location: 53,21
Owner: Neutral
Actor116: t01
Location: 45,21
Owner: Neutral
Actor117: tc04
Location: 32,21
Owner: Neutral
Actor118: tc01
Location: 34,22
Owner: Neutral
Actor119: t01
Location: 36,22
Owner: Neutral
Actor120: t02
Location: 37,21
Owner: Neutral
Actor121: t01
Location: 24,54
Owner: Neutral
Actor124: v05
Location: 25,55
Owner: Civilians
Actor125: v03
Location: 21,50
Owner: Civilians
Actor128: v05
Location: 21,52
Owner: Civilians
Actor130: v07
Location: 19,52
Owner: Civilians
Actor131: v06
Location: 17,52
Owner: Civilians
Actor136: bggy
Location: 58,35
Owner: Nod
Facing: 896
Actor137: bggy
Location: 52,33
Owner: Nod
Facing: 896
Actor138: bggy
Location: 42,17
Owner: Nod
Facing: 896
Actor139: apc
Location: 27,15
Owner: GDI
Facing: 512
Actor140: apc
Location: 29,15
Owner: GDI
Facing: 512
Actor141: jeep
Location: 28,15
Owner: GDI
Facing: 512
Actor142: e3
Location: 55,22
Owner: Nod
Facing: 896
SubCell: 0
Actor143: e1
Location: 50,21
Owner: Nod
Facing: 896
SubCell: 4
Actor144: e1
Location: 51,23
Owner: Nod
Facing: 896
SubCell: 1
Actor145: e1
Location: 51,22
Owner: Nod
Facing: 896
SubCell: 4
Actor146: e1
Location: 50,22
Owner: Nod
Facing: 896
SubCell: 1
Actor147: e3
Location: 49,30
Owner: Nod
Facing: 640
SubCell: 1
Actor148: e3
Location: 23,28
Owner: Nod
SubCell: 0
Actor149: e1
Location: 24,28
Owner: Nod
SubCell: 3
Actor150: e1
Location: 23,28
Owner: Nod
SubCell: 4
Actor151: e3
Location: 22,23
Owner: Nod
Facing: 256
SubCell: 0
Actor154: c2
Location: 23,56
Owner: Civilians
SubCell: 0
Actor155: e1
Location: 55,29
Owner: Nod
Facing: 640
SubCell: 0
Actor156: e1
Location: 50,32
Owner: Nod
Facing: 640
SubCell: 3
Actor157: c4
Location: 24,48
Owner: Civilians
SubCell: 3
Actor158: c6
Location: 27,55
Owner: Civilians
SubCell: 3
Actor159: c9
Location: 22,54
Owner: Civilians
Facing: 512
SubCell: 1
Actor160: e3
Location: 49,29
Owner: Nod
Facing: 640
SubCell: 1
Actor161: e1
Location: 43,55
Owner: Nod
Facing: 768
SubCell: 1
Actor162: e1
Location: 42,55
Owner: Nod
Facing: 768
SubCell: 3
Actor163: e1
Location: 50,32
Owner: Nod
SubCell: 4
Actor164: e1
Location: 51,33
Owner: Nod
Facing: 640
SubCell: 0
Actor165: e3
Location: 43,18
Owner: Nod
Facing: 896
SubCell: 3
Actor166: e3
Location: 43,18
Owner: Nod
Facing: 896
SubCell: 2
Actor167: e1
Location: 27,18
Owner: GDI
Facing: 512
SubCell: 2
Actor168: e1
Location: 27,17
Owner: GDI
Facing: 512
SubCell: 3
Actor169: e1
Location: 27,17
Owner: GDI
Facing: 512
SubCell: 4
Actor170: e1
Location: 27,18
Owner: GDI
Facing: 512
SubCell: 1
Actor171: e2
Location: 29,17
Owner: GDI
Facing: 512
SubCell: 3
Actor172: e2
Location: 29,17
Owner: GDI
Facing: 512
SubCell: 4
Actor173: e2
Location: 29,18
Owner: GDI
Facing: 512
SubCell: 2
Actor174: e2
Location: 29,18
Owner: GDI
Facing: 512
SubCell: 1
Actor175: e1
Location: 26,24
Owner: Nod
SubCell: 2
Actor176: e1
Location: 27,24
Owner: Nod
SubCell: 1
Actor177: e1
Location: 27,24
Owner: Nod
SubCell: 2
Actor178: e3
Location: 26,24
Owner: Nod
SubCell: 4
Actor179: e3
Location: 27,24
Owner: Nod
SubCell: 4
Actor182: e3
Location: 26,25
Owner: Nod
SubCell: 2
Actor184: e3
Location: 56,29
Owner: Nod
Facing: 640
SubCell: 3
Actor185: e1
Location: 32,21
Owner: Nod
SubCell: 0
Actor186: e1
Location: 33,21
Owner: Nod
SubCell: 3
Actor187: e1
Location: 34,21
Owner: Nod
SubCell: 0
TrigHuntFarm1: v06
Location: 45,43
Owner: Civilians
TrigRNF1Farm1: v07
Location: 31,53
Owner: Civilians
TrigRNF1Farm2: v09
Location: 31,50
Owner: Civilians
TrigRNF2Farm1: v08
Location: 30,53
Owner: Civilians
TrigRNF2Farm2: v11
Location: 29,50
Owner: Civilians
TrigLos2Farm1: v04
Location: 25,53
Owner: Civilians
TrigLos2Farm2: v06
Location: 24,50
Owner: Civilians
TrigLos2Farm3: v07
Location: 19,46
Owner: Civilians
TrigLos2Farm4: v01
Location: 18,44
Owner: Civilians
civvie1: c8
Location: 26,22
Owner: Civilians
SubCell: 4
civvie2: c3
Location: 26,22
Owner: Civilians
SubCell: 3
CivvieWpts1: waypoint
Location: 32,14
Owner: Neutral
CivvieWpts2: waypoint
Location: 43,19
Owner: Neutral
CivvieWpts3: waypoint
Location: 22,14
Owner: Neutral
CivvieWpts4: waypoint
Location: 31,29
Owner: Neutral
CivvieWpts5: waypoint
Location: 37,36
Owner: Neutral
CivvieWpts6: waypoint
Location: 43,33
Owner: Neutral
CivvieWpts7: waypoint
Location: 55,32
Owner: Neutral
CivvieWpts8: waypoint
Location: 53,38
Owner: Neutral
CivvieWpts9: waypoint
Location: 45,44
Owner: Neutral
CivvieWpts10: waypoint
Location: 36,52
Owner: Neutral
CivvieWpts11: waypoint
Location: 27,52
Owner: Neutral
NodReinfEntry: waypoint
Location: 61,55
Owner: Neutral
NodReinfRally: waypoint
Location: 55,54
Owner: Neutral
TownAttackWpt: waypoint
Location: 24,48
Owner: Neutral
GDIReinfEntry1: waypoint
Location: 14,51
Owner: Neutral
GDIReinfEntry2: waypoint
Location: 14,47
Owner: Neutral
GDIReinfRally1: waypoint
Location: 16,51
Owner: Neutral
GDIReinfRally2: waypoint
Location: 16,47
Owner: Neutral
GDIReinfRally3: waypoint
Location: 27,49
Owner: Neutral
GDIUnloadWpt: waypoint
Location: 28,47
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml
FluentMessages: cnc|fluent/lua.ftl, cnc|fluent/campaign.ftl, map.ftl

View File

@@ -0,0 +1,47 @@
World:
LuaScript:
Scripts: campaign.lua, utils.lua, gdi04c.lua
MusicPlaylist:
StartingMusic: ind
MissionData:
Briefing: briefing
BackgroundVideo: bkground.vqa
BriefingVideo: gdi4a.vqa
StartVideo: nodsweep.vqa
WinVideo: burdet1.vqa
LossVideo: gameover.vqa
SmudgeLayer@SCORCH:
InitialSmudges:
58,38: sc5,0
55,37: sc6,0
56,34: sc5,0
47,34: sc5,0
54,33: sc6,0
47,33: sc3,0
46,33: sc4,0
55,32: sc2,0
48,31: sc3,0
47,31: sc2,0
SmudgeLayer@CRATER:
InitialSmudges:
23,32: cr1,0
Player:
PlayerResources:
DefaultCash: 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
^CivInfantry:
Health:
HP: 12500
^Bridge:
DamageMultiplier@INVULNERABLE:
Modifier: 0

View File

@@ -0,0 +1,8 @@
Rockets:
Range: 5c0
Warhead: SpreadDamage
Versus:
None: 12
Wood: 116
Light: 92
Heavy: 92