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,5 @@
## rules.yaml
briefing =
There have been reports of strange creatures in this area.
Take your units to investigate and report back your findings.

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,417 @@
MapFormat: 12
RequiresMod: cnc
Title: Strange Behavior
Author: Westwood Studios
Tileset: TEMPERAT
MapSize: 64,64
Bounds: 10,5,45,52
Visibility: MissionSelector
Categories: Campaign
LockPreview: True
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: gdi
PlayerReference@Civilian:
Name: Civilian
NonCombatant: True
Faction: gdi
Enemies: Nod, Dinosaur
PlayerReference@Dinosaur:
Name: Dinosaur
NonCombatant: True
Faction: gdi
Color: 8C5033
Enemies: Nod, Civilian
Bot: campaign
PlayerReference@Nod:
Name: Nod
Playable: True
AllowBots: False
Required: True
LockFaction: True
Faction: nod
LockColor: True
Color: FE1100
LockSpawn: True
LockTeam: True
Allies: Nod
Enemies: Dinosaur
Actors:
Actor0: wood
Location: 23,18
Owner: Neutral
Actor1: wood
Location: 22,18
Owner: Neutral
Actor2: wood
Location: 21,18
Owner: Neutral
Actor3: wood
Location: 20,18
Owner: Neutral
Actor4: wood
Location: 23,17
Owner: Neutral
Actor5: v17
Location: 22,17
Owner: Civilian
Actor6: v16
Location: 21,17
Owner: Civilian
Actor7: wood
Location: 20,17
Owner: Neutral
Actor8: wood
Location: 17,17
Owner: Neutral
Actor9: wood
Location: 23,16
Owner: Neutral
Actor10: v14
Location: 22,16
Owner: Civilian
Actor11: v15
Location: 21,16
Owner: Civilian
Actor12: wood
Location: 20,16
Owner: Neutral
Actor13: wood
Location: 17,16
Owner: Neutral
Actor14: wood
Location: 16,16
Owner: Neutral
Actor15: wood
Location: 15,16
Owner: Neutral
Actor16: wood
Location: 14,16
Owner: Neutral
Actor17: wood
Location: 13,16
Owner: Neutral
Actor18: wood
Location: 12,16
Owner: Neutral
Actor19: wood
Location: 11,16
Owner: Neutral
Actor20: wood
Location: 23,15
Owner: Neutral
Actor21: wood
Location: 11,15
Owner: Neutral
Actor22: wood
Location: 23,13
Owner: Neutral
Actor23: wood
Location: 23,12
Owner: Neutral
Actor24: wood
Location: 23,11
Owner: Neutral
Actor25: wood
Location: 23,10
Owner: Neutral
Actor26: v17
Location: 22,10
Owner: Civilian
Actor27: v18
Location: 21,10
Owner: Civilian
Actor28: v12
Location: 20,10
Owner: Civilian
Actor29: wood
Location: 23,9
Owner: Neutral
Actor30: v16
Location: 22,9
Owner: Civilian
Actor31: v15
Location: 21,9
Owner: Civilian
Actor32: v14
Location: 20,9
Owner: Civilian
Actor34: tc04
Location: 51,39
Owner: Neutral
Actor35: tc02
Location: 46,40
Owner: Neutral
Actor36: tc04
Location: 51,44
Owner: Neutral
Actor37: tc01
Location: 46,38
Owner: Neutral
Actor38: tc04
Location: 45,42
Owner: Neutral
Actor39: t01
Location: 54,46
Owner: Neutral
Actor40: t01
Location: 51,49
Owner: Neutral
Actor41: t01
Location: 14,47
Owner: Neutral
Actor42: t02
Location: 20,49
Owner: Neutral
Actor43: t01
Location: 25,53
Owner: Neutral
Actor44: t03
Location: 53,47
Owner: Neutral
Actor45: t05
Location: 40,49
Owner: Neutral
Actor46: t06
Location: 43,48
Owner: Neutral
Actor47: tc04
Location: 37,47
Owner: Neutral
Actor48: tc04
Location: 29,51
Owner: Neutral
Actor49: tc02
Location: 22,52
Owner: Neutral
Actor50: tc01
Location: 21,47
Owner: Neutral
Actor51: tc01
Location: 47,44
Owner: Neutral
Actor52: tc01
Location: 47,49
Owner: Neutral
Actor53: t07
Location: 52,42
Owner: Neutral
Actor54: t07
Location: 45,46
Owner: Neutral
Actor55: t07
Location: 41,47
Owner: Neutral
Actor56: t06
Location: 47,46
Owner: Neutral
Actor57: t01
Location: 49,43
Owner: Neutral
Actor58: t01
Location: 52,29
Owner: Neutral
Actor59: tc04
Location: 41,27
Owner: Neutral
Actor60: t01
Location: 13,7
Owner: Neutral
Actor61: t03
Location: 18,10
Owner: Neutral
Actor62: t03
Location: 20,14
Owner: Neutral
Actor63: tc04
Location: 12,9
Owner: Neutral
Actor64: tc01
Location: 15,14
Owner: Neutral
Actor65: tc02
Location: 20,11
Owner: Neutral
Actor66: t05
Location: 12,14
Owner: Neutral
Actor67: tc01
Location: 16,8
Owner: Neutral
Actor68: t07
Location: 18,8
Owner: Neutral
Actor69: t07
Location: 17,12
Owner: Neutral
Actor70: t07
Location: 22,10
Owner: Neutral
Actor71: t07
Location: 29,11
Owner: Neutral
Actor72: t08
Location: 33,14
Owner: Neutral
Actor73: t02
Location: 27,17
Owner: Neutral
Actor74: t02
Location: 47,7
Owner: Neutral
Actor75: t01
Location: 44,6
Owner: Neutral
Actor76: t01
Location: 40,10
Owner: Neutral
Actor77: t03
Location: 37,8
Owner: Neutral
Actor78: t05
Location: 46,12
Owner: Neutral
Actor79: tc01
Location: 33,20
Owner: Neutral
Actor80: tc01
Location: 50,21
Owner: Neutral
Actor81: tc01
Location: 28,16
Owner: Neutral
Actor82: tc01
Location: 48,14
Owner: Neutral
Actor83: tc01
Location: 42,10
Owner: Neutral
Actor84: tc02
Location: 33,18
Owner: Neutral
Actor85: tc02
Location: 39,13
Owner: Neutral
Actor86: tc02
Location: 36,5
Owner: Neutral
Actor87: tc02
Location: 50,9
Owner: Neutral
Actor88: tc02
Location: 52,16
Owner: Neutral
Actor89: tc04
Location: 38,18
Owner: Neutral
Actor90: tc04
Location: 31,12
Owner: Neutral
Actor91: tc04
Location: 45,9
Owner: Neutral
Actor92: tc04
Location: 43,16
Owner: Neutral
Actor93: v01
Location: 16,10
Owner: Civilian
Actor94: v02
Location: 21,12
Owner: Civilian
Actor95: v03
Location: 13,8
Owner: Civilian
Actor96: v04
Location: 19,10
Owner: Civilian
Actor97: v05
Location: 12,14
Owner: Civilian
Actor98: v06
Location: 21,15
Owner: Civilian
Actor117: v06
Owner: Neutral
Location: 21,8
Actor100: v07
Location: 12,12
Owner: Civilian
Actor101: v07
Location: 17,14
Owner: Civilian
Vil04: c4
Location: 16,14
Owner: Civilian
SubCell: 2
Vil03: c3
Location: 15,11
Owner: Civilian
SubCell: 1
Vil01: c2
Location: 14,12
Owner: Civilian
SubCell: 4
Vil02: c1
Location: 18,13
Owner: Civilian
SubCell: 2
WP4: waypoint
Location: 13,13
Owner: Neutral
WP3: waypoint
Location: 17,12
Owner: Neutral
WP2: waypoint
Location: 22,14
Owner: Neutral
WP1: waypoint
Location: 42,29
Owner: Neutral
WP0: waypoint
Location: 52,29
Owner: Neutral
BeachReinforceA: waypoint
Location: 17,52
Owner: Neutral
BeachReinforceB: waypoint
Location: 15,52
Owner: Neutral
SeaEntryB: waypoint
Location: 15,56
Owner: Neutral
SeaEntryA: waypoint
Location: 17,56
Owner: Neutral
DinoTrex: trex
Location: 52,12
Owner: Dinosaur
DinoSteg: steg
Location: 49,22
Owner: Dinosaur
DinoTric: tric
Location: 53,29
Owner: Dinosaur
CameraStart: waypoint
Location: 16,50
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,65 @@
World:
LuaScript:
Scripts: campaign.lua, utils.lua, scj01ea.lua
MusicPlaylist:
StartingMusic: j1
MissionData:
Briefing: briefing
BriefingVideo: generic.vqa
StartVideo: dino.vqa
MapOptions:
ShortGameCheckboxLocked: True
ShortGameCheckboxEnabled: False
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: 0
^Palettes:
IndexedPlayerPalette:
PlayerIndex:
Dinosaur: 192, 164, 132, 155, 133, 197, 112, 12, 163, 132, 155, 133, 134, 197, 154, 198
IndexedPlayerPalette@units:
PlayerIndex:
Dinosaur: 192, 164, 132, 155, 133, 197, 112, 12, 163, 132, 155, 133, 134, 197, 154, 198
^CivInfantry:
-ActorLostNotification:
^CivBuilding:
AnnounceOnSeen:
TREX:
Health:
HP: 75000
Mobile:
Speed: 34
AutoTarget:
ScanRadius: 5
TRIC:
Health:
HP: 70000
Mobile:
Speed: 18
AutoTarget:
ScanRadius: 5
STEG:
Health:
HP: 60000
Mobile:
Speed: 32
^DINO:
MustBeDestroyed:

View File

@@ -0,0 +1,68 @@
--[[
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.
]]
RifleReinforcments = { "e1", "e1", "e1", "bike" }
BazookaReinforcments = { "e3", "e3", "e3", "bike" }
BikeReinforcments = { "bike" }
WorldLoaded = function()
Nod = Player.GetPlayer("Nod")
Dinosaur = Player.GetPlayer("Dinosaur")
Civilian = Player.GetPlayer("Civilian")
InvestigateObj = AddPrimaryObjective(Nod, "investigate-village")
InitObjectives(Nod)
ReachVillageObj = AddPrimaryObjective(Nod, "reach-village")
Trigger.OnPlayerDiscovered(Civilian, function(_, discoverer)
if discoverer == Nod and not Nod.IsObjectiveCompleted(ReachVillageObj) then
if not Dinosaur.HasNoRequiredUnits() then
KillDinos = AddPrimaryObjective(Nod, "kill-creatures")
end
Nod.MarkCompletedObjective(ReachVillageObj)
end
end)
DinoTric.Patrol({ WP0.Location, WP1.Location }, true, 3)
Trigger.OnDamaged(DinoTric, function()
DinoTric.Stop()
IdleHunt(DinoTric)
end)
DinoTrex.AttackMove(WP2.Location)
DinoTrex.AttackMove(WP3.Location)
IdleHunt(DinoTrex)
ReinforceWithLandingCraft(Nod, RifleReinforcments, SeaEntryA.Location, BeachReinforceA.Location, BeachReinforceA.Location)
Trigger.AfterDelay(DateTime.Seconds(3), function() InitialUnitsArrived = true end)
Trigger.AfterDelay(DateTime.Seconds(15), function() ReinforceWithLandingCraft(Nod, BazookaReinforcments, SeaEntryB.Location, BeachReinforceB.Location, BeachReinforceB.Location) end)
if Difficulty == "easy" then
Trigger.AfterDelay(DateTime.Seconds(25), function() ReinforceWithLandingCraft(Nod, BikeReinforcments, SeaEntryA.Location, BeachReinforceA.Location, BeachReinforceA.Location) end)
Trigger.AfterDelay(DateTime.Seconds(30), function() ReinforceWithLandingCraft(Nod, BikeReinforcments, SeaEntryB.Location, BeachReinforceB.Location, BeachReinforceB.Location) end)
end
Camera.Position = CameraStart.CenterPosition
end
Tick = function()
if InitialUnitsArrived then
if Nod.HasNoRequiredUnits() then
Nod.MarkFailedObjective(InvestigateObj)
end
if Dinosaur.HasNoRequiredUnits() then
if KillDinos then Nod.MarkCompletedObjective(KillDinos) end
Nod.MarkCompletedObjective(InvestigateObj)
end
end
end

View File

@@ -0,0 +1,5 @@
Teeth:
Range: 1c900
Warhead@1Dam: SpreadDamage
Versus:
Wood: 35