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,188 @@
--[[
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.
]]
RepairThreshold = { easy = 0.3, normal = 0.6, hard = 0.9 }
ActorRemovals =
{
easy = { Actor167, Actor168, Actor190, Actor191, Actor193, Actor194, Actor196, Actor198, Actor200 },
normal = { Actor167, Actor194, Actor196, Actor197 },
hard = { },
}
GdiTanks = { "mtnk", "mtnk" }
GdiApc = { "apc" }
GdiInfantry = { "e1", "e1", "e1", "e1", "e1", "e2", "e2", "e2", "e2", "e2" }
GDIBase = { GdiNuke1, GdiNuke2, GdiProc, GdiSilo1, GdiSilo2, GdiPyle, GdiWeap, GdiHarv }
NodSams = { Sam1, Sam2, Sam3, Sam4 }
CoreNodBase = { NodConYard, NodRefinery, HandOfNod, Airfield }
Guard1UnitTypes = { "bggy" }
Guard1Path = { waypoint4.Location, waypoint5.Location, waypoint10.Location }
Guard1Delay = { easy = DateTime.Minutes(2), normal = DateTime.Minutes(1), hard = DateTime.Seconds(30) }
Guard2UnitTypes = { "bggy" }
Guard2Path = { waypoint0.Location, waypoint1.Location, waypoint2.Location }
Guard3Path = { waypoint4.Location, waypoint5.Location, waypoint9.Location }
AttackDelayMin = { easy = DateTime.Minutes(1), normal = DateTime.Seconds(45), hard = DateTime.Seconds(30) }
AttackDelayMax = { easy = DateTime.Minutes(2), normal = DateTime.Seconds(90), hard = DateTime.Minutes(1) }
AttackUnitTypes =
{
easy =
{
{ factory = HandOfNod, types = { "e1", "e1" } },
{ factory = HandOfNod, types = { "e1", "e3" } },
{ factory = HandOfNod, types = { "e1", "e1", "e3" } },
{ factory = HandOfNod, types = { "e1", "e3", "e3" } },
},
normal =
{
{ factory = HandOfNod, types = { "e1", "e1", "e3" } },
{ factory = HandOfNod, types = { "e1", "e3", "e3" } },
{ factory = HandOfNod, types = { "e1", "e1", "e3", "e3" } },
{ factory = Airfield, types = { "bggy" } },
},
hard =
{
{ factory = HandOfNod, types = { "e1", "e1", "e3", "e3" } },
{ factory = HandOfNod, types = { "e1", "e1", "e1", "e3", "e3" } },
{ factory = HandOfNod, types = { "e1", "e1", "e3", "e3", "e3" } },
{ factory = Airfield, types = { "bggy" } },
{ factory = Airfield, types = { "ltnk" } },
}
}
AttackPaths =
{
{ waypoint0.Location, waypoint1.Location, waypoint2.Location, waypoint3.Location },
{ waypoint4.Location, waypoint9.Location, waypoint7.Location, waypoint8.Location },
}
Attack = function()
local production = Utils.Random(AttackUnitTypes[Difficulty])
local path = Utils.Random(AttackPaths)
local toBuild = function() return production.types end
ProduceUnits(Nod, production.factory, nil, toBuild, function(units)
Utils.Do(units, function(unit)
unit.Patrol(path, false)
IdleHunt(unit)
end)
end)
Trigger.AfterDelay(Utils.RandomInteger(AttackDelayMin[Difficulty], AttackDelayMax[Difficulty]), Attack)
end
Guard1Action = function()
ProduceUnits(Nod, Airfield, nil, function() return Guard1UnitTypes end, function(units)
Trigger.OnAllKilled(units, function()
Trigger.AfterDelay(Guard1Delay[Difficulty], Guard1Action)
end)
Utils.Do(units, function(unit)
unit.Patrol(Guard1Path, true, DateTime.Seconds(7))
end)
end)
end
Guard2Action = function()
ProduceUnits(Nod, Airfield, nil, function() return Guard2UnitTypes end, function(units)
Utils.Do(units, function(unit)
unit.Patrol(Guard2Path, true, DateTime.Seconds(5))
end)
end)
end
DiscoverGDIBase = function(actor, discoverer)
if BaseDiscovered or not discoverer == GDI then
return
end
Utils.Do(GDIBase, function(actor)
actor.Owner = GDI
end)
BaseDiscovered = true
EliminateNod = AddPrimaryObjective(GDI, "eliminate-nod")
GDI.MarkCompletedObjective(FindBase)
Attack()
end
SetupWorld = function()
Utils.Do(ActorRemovals[Difficulty], function(unit)
unit.Destroy()
end)
Media.PlaySpeechNotification(GDI, "Reinforce")
Reinforcements.Reinforce(GDI, GdiTanks, { GdiTankEntry.Location, GdiTankRallyPoint.Location }, DateTime.Seconds(1), function(actor) actor.Stance = "Defend" end)
Reinforcements.Reinforce(GDI, GdiApc, { GdiApcEntry.Location, GdiApcRallyPoint.Location }, DateTime.Seconds(1), function(actor) actor.Stance = "Defend" end)
Reinforcements.Reinforce(GDI, GdiInfantry, { GdiInfantryEntry.Location, GdiInfantryRallyPoint.Location }, 15, function(actor) actor.Stance = "Defend" end)
Trigger.OnPlayerDiscovered(AbandonedBase, DiscoverGDIBase)
RepairNamedActors(Nod, RepairThreshold[Difficulty])
Trigger.OnAllKilled(NodSams, function()
GDI.MarkCompletedObjective(DestroySAMs)
Actor.Create("airstrike.proxy", true, { Owner = GDI })
end)
Trigger.AfterDelay(0, function()
GdiHarv.Stop()
end)
if Difficulty ~= "easy" then
Trigger.OnDamaged(NodHarv, function()
Utils.Do(Nod.GetGroundAttackers(), function(unit)
unit.AttackMove(NodHarv.Location)
if Difficulty == "hard" then
IdleHunt(unit)
end
end)
end)
end
Trigger.AfterDelay(DateTime.Seconds(45), Guard1Action)
Trigger.AfterDelay(DateTime.Minutes(3), Guard2Action)
Trigger.OnKilled(GuardTank1, function()
if not GuardTank2.IsDead then
GuardTank2.Patrol(Guard3Path, true, DateTime.Seconds(11))
end
end)
GuardTank1.Patrol(Guard3Path, true, DateTime.Seconds(11))
end
WorldLoaded = function()
AbandonedBase = Player.GetPlayer("AbandonedBase")
GDI = Player.GetPlayer("GDI")
Nod = Player.GetPlayer("Nod")
InitObjectives(GDI)
NodObjective = AddPrimaryObjective(Nod, "")
FindBase = AddPrimaryObjective(GDI, "find-gdi-base")
DestroySAMs = AddSecondaryObjective(GDI, "destroy-sams")
SetupWorld()
Camera.Position = GdiTankRallyPoint.CenterPosition
end
Tick = function()
if DateTime.GameTime > 2 and GDI.HasNoRequiredUnits() then
Nod.MarkCompletedObjective(NodObjective)
end
if BaseDiscovered and Nod.HasNoRequiredUnits() then
GDI.MarkCompletedObjective(EliminateNod)
end
end

Binary file not shown.

View File

@@ -0,0 +1,7 @@
## rules.yaml
briefing =
A GDI field base is under attack. They have fended off one attack but will not survive another.
Move to the base, repair the structures, then launch a strike force to destroy the Nod base in the area.
Destroy all Nod units and structures.

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -0,0 +1,761 @@
MapFormat: 12
RequiresMod: cnc
Title: 05a: Repair the GDI base
Author: Westwood Studios
Tileset: TEMPERAT
MapSize: 64,64
Bounds: 8,21,49,39
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
Playable: True
AllowBots: False
Required: True
LockFaction: True
Faction: gdi
LockColor: True
Color: F5D378
LockSpawn: True
LockTeam: True
Allies: GDI
Enemies: Nod
PlayerReference@AbandonedBase:
Name: AbandonedBase
NonCombatant: True
Color: F5D378
Faction: gdi
Bot: campaign
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: gdi
Actors:
Actor0: sbag
Location: 53,59
Owner: GDI
Actor1: sbag
Location: 52,59
Owner: GDI
Actor2: sbag
Location: 51,59
Owner: GDI
Actor3: sbag
Location: 50,59
Owner: GDI
Actor4: sbag
Location: 49,59
Owner: GDI
Actor5: sbag
Location: 45,59
Owner: GDI
Actor6: sbag
Location: 44,59
Owner: GDI
Actor7: sbag
Location: 43,59
Owner: GDI
Actor8: sbag
Location: 42,59
Owner: GDI
Actor9: sbag
Location: 41,59
Owner: GDI
Actor10: sbag
Location: 41,57
Owner: GDI
Actor11: sbag
Location: 41,56
Owner: GDI
Actor12: sbag
Location: 41,53
Owner: GDI
Actor13: sbag
Location: 41,52
Owner: GDI
Actor14: sbag
Location: 44,51
Owner: GDI
Actor15: sbag
Location: 43,51
Owner: GDI
Actor16: sbag
Location: 42,51
Owner: GDI
Actor17: sbag
Location: 41,51
Owner: GDI
Actor18: sbag
Location: 54,50
Owner: GDI
Actor19: sbag
Location: 53,50
Owner: GDI
Actor20: sbag
Location: 52,50
Owner: GDI
Actor21: sbag
Location: 46,50
Owner: GDI
Actor22: sbag
Location: 45,50
Owner: GDI
Actor23: sbag
Location: 44,50
Owner: GDI
Actor24: sbag
Location: 15,31
Owner: Nod
Actor25: sbag
Location: 14,31
Owner: Nod
Actor26: sbag
Location: 13,31
Owner: Nod
Actor27: sbag
Location: 12,31
Owner: Nod
Actor28: sbag
Location: 8,31
Owner: Nod
Actor29: sbag
Location: 15,30
Owner: Nod
Actor30: sbag
Location: 8,30
Owner: Nod
Actor31: sbag
Location: 25,29
Owner: Nod
Actor32: sbag
Location: 24,29
Owner: Nod
Actor33: sbag
Location: 23,29
Owner: Nod
Actor34: sbag
Location: 22,29
Owner: Nod
Actor35: sbag
Location: 21,29
Owner: Nod
Actor36: sbag
Location: 20,29
Owner: Nod
Actor37: sbag
Location: 19,29
Owner: Nod
Actor38: sbag
Location: 18,29
Owner: Nod
Actor39: sbag
Location: 17,29
Owner: Nod
Actor40: sbag
Location: 16,29
Owner: Nod
Actor41: sbag
Location: 15,29
Owner: Nod
Actor42: sbag
Location: 8,29
Owner: Nod
Actor43: sbag
Location: 25,28
Owner: Nod
Actor44: sbag
Location: 8,28
Owner: Nod
Actor45: sbag
Location: 25,27
Owner: Nod
Actor46: sbag
Location: 8,27
Owner: Nod
Actor47: sbag
Location: 8,26
Owner: Nod
Actor48: sbag
Location: 8,25
Owner: Nod
Actor49: sbag
Location: 25,24
Owner: Nod
Actor50: sbag
Location: 8,24
Owner: Nod
Actor51: sbag
Location: 25,23
Owner: Nod
Actor52: sbag
Location: 8,23
Owner: Nod
Actor53: sbag
Location: 25,22
Owner: Nod
Actor54: sbag
Location: 8,22
Owner: Nod
Actor55: sbag
Location: 25,21
Owner: Nod
Actor56: sbag
Location: 24,21
Owner: Nod
Actor57: sbag
Location: 23,21
Owner: Nod
Actor58: sbag
Location: 22,21
Owner: Nod
Actor59: sbag
Location: 21,21
Owner: Nod
Actor60: sbag
Location: 20,21
Owner: Nod
Actor61: sbag
Location: 19,21
Owner: Nod
Actor62: sbag
Location: 18,21
Owner: Nod
Actor63: sbag
Location: 17,21
Owner: Nod
Actor64: sbag
Location: 16,21
Owner: Nod
Actor65: sbag
Location: 15,21
Owner: Nod
Actor66: sbag
Location: 14,21
Owner: Nod
Actor67: sbag
Location: 13,21
Owner: Nod
Actor68: sbag
Location: 12,21
Owner: Nod
Actor69: sbag
Location: 11,21
Owner: Nod
Actor70: sbag
Location: 10,21
Owner: Nod
Actor71: sbag
Location: 9,21
Owner: Nod
Actor72: sbag
Location: 8,21
Owner: Nod
Actor73: t01
Location: 12,38
Owner: Neutral
Actor74: t01
Location: 44,34
Owner: Neutral
Actor75: tc01
Location: 43,36
Owner: Neutral
Actor76: tc01
Location: 39,33
Owner: Neutral
Actor77: t05
Location: 8,37
Owner: Neutral
Actor78: t03
Location: 8,34
Owner: Neutral
Actor79: t03
Location: 33,56
Owner: Neutral
Actor80: tc04
Location: 13,46
Owner: Neutral
Actor81: tc02
Location: 8,50
Owner: Neutral
Actor82: t02
Location: 10,49
Owner: Neutral
Actor83: t01
Location: 36,34
Owner: Neutral
Actor84: t01
Location: 37,39
Owner: Neutral
Actor85: tc01
Location: 27,21
Owner: Neutral
Actor86: tc02
Location: 26,23
Owner: Neutral
Actor87: tc04
Location: 23,29
Owner: Neutral
Actor88: tc02
Location: 20,30
Owner: Neutral
Actor89: t07
Location: 37,44
Owner: Neutral
Actor90: t12
Location: 38,44
Owner: Neutral
Actor91: tc04
Location: 35,43
Owner: Neutral
Actor92: tc02
Location: 14,39
Owner: Neutral
Actor93: tc01
Location: 10,46
Owner: Neutral
Actor94: tc04
Location: 10,44
Owner: Neutral
Actor95: t01
Location: 10,43
Owner: Neutral
Actor96: t01
Location: 11,47
Owner: Neutral
Actor97: t05
Location: 8,49
Owner: Neutral
Actor98: t06
Location: 16,48
Owner: Neutral
Actor99: tc01
Location: 13,49
Owner: Neutral
Actor100: tc01
Location: 15,57
Owner: Neutral
Actor101: tc02
Location: 9,54
Owner: Neutral
Actor102: tc05
Location: 11,55
Owner: Neutral
Actor103: tc04
Location: 9,57
Owner: Neutral
Actor104: tc04
Location: 40,46
Owner: Neutral
Actor105: t01
Location: 38,49
Owner: Neutral
Actor106: t01
Location: 30,46
Owner: Neutral
Actor107: t01
Location: 16,44
Owner: Neutral
Actor108: t02
Location: 33,45
Owner: Neutral
Actor109: t02
Location: 21,44
Owner: Neutral
Actor110: t05
Location: 21,37
Owner: Neutral
Actor111: t06
Location: 20,37
Owner: Neutral
Actor112: tc02
Location: 30,44
Owner: Neutral
Actor113: tc01
Location: 30,42
Owner: Neutral
Actor114: tc01
Location: 21,39
Owner: Neutral
Actor115: tc04
Location: 21,40
Owner: Neutral
Actor116: tc02
Location: 24,40
Owner: Neutral
Actor117: t07
Location: 25,41
Owner: Neutral
Actor118: t07
Location: 50,38
Owner: Neutral
Actor119: t07
Location: 44,35
Owner: Neutral
Actor120: t07
Location: 42,36
Owner: Neutral
Actor121: t16
Location: 45,43
Owner: Neutral
Actor122: tc02
Location: 43,44
Owner: Neutral
Actor123: tc02
Location: 48,39
Owner: Neutral
Actor124: tc04
Location: 41,34
Owner: Neutral
Actor125: t17
Location: 29,37
Owner: Neutral
Actor126: tc04
Location: 35,38
Owner: Neutral
Actor127: tc01
Location: 33,38
Owner: Neutral
Actor128: tc04
Location: 9,35
Owner: Neutral
Actor129: t01
Location: 22,55
Owner: Neutral
Actor130: t02
Location: 32,56
Owner: Neutral
Actor131: t05
Location: 29,50
Owner: Neutral
Actor132: t06
Location: 36,47
Owner: Neutral
Actor133: tc01
Location: 36,51
Owner: Neutral
Actor134: tc02
Location: 27,58
Owner: Neutral
Actor135: tc02
Location: 31,55
Owner: Neutral
Actor140: gun
Location: 24,23
Owner: Nod
Facing: 384
Actor141: gun
Location: 24,28
Owner: Nod
Facing: 384
Actor152: silo
Location: 19,22
Owner: Nod
Actor153: silo
Location: 17,22
Owner: Nod
Actor154: silo
Location: 14,27
Owner: Nod
Actor155: silo
Location: 12,28
Owner: Nod
Actor156: nuke
Location: 11,22
Owner: Nod
Actor157: nuke
Location: 9,22
Owner: Nod
Actor159: nuke
Location: 13,22
Owner: Nod
Actor162: ltnk
Location: 9,34
Owner: Nod
Facing: 768
Actor164: ltnk
Location: 29,37
Owner: Nod
Facing: 384
Actor167: bggy
Location: 19,27
Owner: Nod
Actor168: bggy
Location: 19,28
Owner: Nod
Actor169: bggy
Location: 44,34
Owner: Nod
Facing: 128
Actor171: e3
Location: 21,28
Owner: Nod
SubCell: 3
Actor172: e3
Location: 20,28
Owner: Nod
SubCell: 3
Actor173: e3
Location: 20,28
Owner: Nod
SubCell: 4
Actor174: e1
Location: 20,28
Owner: Nod
SubCell: 1
Actor175: e1
Location: 20,28
Owner: Nod
SubCell: 2
Actor176: e1
Location: 21,28
Owner: Nod
SubCell: 1
Actor177: e1
Location: 29,40
Owner: Nod
Facing: 384
SubCell: 1
Actor178: e3
Location: 26,43
Owner: Nod
Facing: 256
SubCell: 3
Actor187: e1
Location: 27,27
Owner: Nod
Facing: 384
SubCell: 3
Actor188: e3
Location: 28,21
Owner: Nod
SubCell: 3
Actor189: e3
Location: 26,23
Owner: Nod
Facing: 384
SubCell: 2
Actor190: e3
Location: 33,56
Owner: Nod
SubCell: 3
Actor191: e3
Location: 33,38
Owner: Nod
Facing: 640
SubCell: 4
Actor192: e3
Location: 26,27
Owner: Nod
Facing: 384
SubCell: 1
Actor193: e3
Location: 36,51
Owner: Nod
SubCell: 4
Actor194: e3
Location: 37,51
Owner: Nod
SubCell: 3
Actor195: e3
Location: 23,55
Owner: Nod
Facing: 896
SubCell: 3
Actor196: e3
Location: 30,44
Owner: Nod
Facing: 768
SubCell: 0
Actor197: e3
Location: 32,49
Owner: Nod
Facing: 640
SubCell: 4
Actor198: e3
Location: 28,48
Owner: Nod
Facing: 640
SubCell: 3
Actor199: e1
Location: 24,56
Owner: Nod
Facing: 896
SubCell: 4
Actor200: e1
Location: 25,55
Owner: Nod
SubCell: 1
Actor201: e1
Location: 17,46
Owner: Nod
Facing: 384
SubCell: 0
Actor202: e1
Location: 15,48
Owner: Nod
Facing: 384
SubCell: 2
Actor203: e1
Location: 17,46
Owner: Nod
Facing: 384
SubCell: 4
waypoint27: waypoint
Location: 32,41
Owner: Neutral
waypoint26: waypoint
Location: 8,50
Owner: Neutral
waypoint19: waypoint
Location: 17,28
Owner: Neutral
waypoint18: waypoint
Location: 22,28
Owner: Neutral
waypoint10: waypoint
Location: 10,34
Owner: Neutral
waypoint9: waypoint
Location: 28,45
Owner: Neutral
waypoint8: waypoint
Location: 37,54
Owner: Neutral
waypoint7: waypoint
Location: 26,54
Owner: Neutral
waypoint6: waypoint
Location: 37,31
Owner: Neutral
waypoint5: waypoint
Location: 30,31
Owner: Neutral
waypoint4: waypoint
Location: 31,25
Owner: Neutral
waypoint3: waypoint
Location: 52,46
Owner: Neutral
waypoint2: waypoint
Location: 53,31
Owner: Neutral
waypoint1: waypoint
Location: 42,29
Owner: Neutral
waypoint0: waypoint
Location: 36,28
Owner: Neutral
GdiProc: proc
Location: 50,51
Owner: AbandonedBase
Health: 31
FreeActor: False
GdiHarv: harv
Location: 48,53
Owner: AbandonedBase
Facing: 256
GdiWeap: weap
Location: 50,55
Owner: AbandonedBase
Health: 27
GdiNuke1: nuke
Location: 53,55
Owner: AbandonedBase
Health: 29
GdiPyle: pyle
Location: 46,55
Owner: AbandonedBase
Health: 25
GdiSilo1: silo
Location: 53,51
Owner: AbandonedBase
Health: 33
GdiSilo2: silo
Location: 53,53
Owner: AbandonedBase
Health: 25
GdiNuke2: nuke
Location: 48,56
Owner: AbandonedBase
Health: 21
NodConYard: fact
Location: 9,29
Owner: Nod
NodRefinery: proc
Location: 21,22
Owner: Nod
FreeActor: False
HandOfNod: hand
Location: 15,23
Owner: Nod
Airfield: afld
Location: 9,25
Owner: Nod
Sam1: sam
Location: 21,39
Owner: Nod
Sam2: sam
Location: 41,34
Owner: Nod
Sam3: sam
Location: 24,31
Owner: Nod
Sam4: sam
Location: 13,30
Owner: Nod
NodHarv: harv
Location: 22,26
Owner: Nod
Facing: 256
GuardTank1: ltnk
Location: 18,27
Owner: Nod
GuardTank2: ltnk
Location: 18,28
Owner: Nod
GdiTankEntry: waypoint
Location: 8,59
Owner: Neutral
GdiApcEntry: waypoint
Location: 11,59
Owner: Neutral
GdiInfantryEntry: waypoint
Location: 8,53
Owner: Neutral
GdiTankRallyPoint: waypoint
Location: 14,54
Owner: Neutral
GdiApcRallyPoint: waypoint
Location: 15,56
Owner: Neutral
GdiInfantryRallyPoint: waypoint
Location: 12,53
Owner: Neutral
MoneyCrate: MoneyCrate
Location: 44,40
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,169 @@
World:
LuaScript:
Scripts: campaign.lua, utils.lua, gdi05a.lua
MusicPlaylist:
StartingMusic: rain
MissionData:
Briefing: briefing
BackgroundVideo: podium.vqa
BriefingVideo: gdi5.vqa
StartVideo: seige.vqa
WinVideo: nodlose.vqa
LossVideo: gdilose.vqa
MapOptions:
ShortGameCheckboxLocked: True
ShortGameCheckboxEnabled: False
SmudgeLayer@SCORCH:
InitialSmudges:
41,55: sc4,0
48,51: sc5,0
53,50: sc2,0
51,50: sc3,0
45,50: sc4,0
49,48: sc6,0
SmudgeLayer@CRATER:
InitialSmudges:
41,54: cr1,0
13,52: cr1,0
11,51: cr1,0
ScriptLobbyDropdown@difficulty:
ID: difficulty
Label: dropdown-difficulty.label
Description: dropdown-difficulty.description
Values:
easy: options-difficulty.easy
normal: options-difficulty.normal
hard: options-difficulty.hard
Default: normal
Player:
EnemyWatcher:
PlayerResources:
DefaultCash: 2000
^Palettes:
IndexedPlayerPalette:
PlayerIndex:
AbandonedBase: 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191
IndexedPlayerPalette@units:
PlayerIndex:
AbandonedBase: 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191
^Building:
AnnounceOnSeen:
E2:
Buildable:
Prerequisites: ~pyle
E3:
Buildable:
Queue: Infantry.Nod
E4:
Buildable:
Prerequisites: ~disabled
E5:
Buildable:
Prerequisites: ~disabled
RMBO:
Buildable:
Prerequisites: ~disabled
HARV:
Buildable:
Prerequisites: ~disabled
MCV:
Buildable:
Prerequisites: ~disabled
MTNK:
Buildable:
Prerequisites: ~disabled
HTNK:
Buildable:
Prerequisites: ~disabled
MSAM:
Buildable:
Prerequisites: ~disabled
ARTY:
Buildable:
Prerequisites: ~disabled
MLRS:
Buildable:
Prerequisites: ~disabled
FTNK:
Buildable:
Prerequisites: ~disabled
STNK:
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
SBAG:
Buildable:
Prerequisites: ~disabled
CYCL:
Buildable:
Prerequisites: ~disabled
BRIK:
Buildable:
Prerequisites: ~disabled
TMPL:
Buildable:
Prerequisites: ~disabled
OBLI:
Buildable:
Prerequisites: ~disabled
MoneyCrate:
GiveCashCrateAction:
Amount: 500
airstrike.proxy:
AirstrikePower:
SquadSize: 1