Initial commit: OpenRA game engine
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:
188
mods/ra/maps/fort-lonestar/fort-lonestar-AI.lua
Normal file
188
mods/ra/maps/fort-lonestar/fort-lonestar-AI.lua
Normal 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.
|
||||
]]
|
||||
|
||||
AIPlayers = { }
|
||||
AIBarracks = { }
|
||||
AIDerricks = { }
|
||||
AIBaseLocation = { }
|
||||
IdlingAIActors = { }
|
||||
IdlingAISupportActors = { }
|
||||
AIOnDefense = { }
|
||||
|
||||
-- It's good to start with 10 rifle man, one medic and 5 rocket soldiers
|
||||
InitialUnitsToBuild = { "e1", "e1", "e1", "e1", "e1", "medi", "e1", "e1", "e1", "e1", "e1", "e3", "e3", "e3", "e3", "e3" }
|
||||
UnitsToBuild = { "e1", "e1", "e1", "e1", "e1", "e3", "e3", "e3", "medi" }
|
||||
|
||||
ActivateAI = function(player, id)
|
||||
AIPlayers[id] = player
|
||||
|
||||
Trigger.AfterDelay(0, function()
|
||||
local barracks = player.GetActorsByType("tent")
|
||||
if #barracks > 0 then
|
||||
AIBarracks[id] = barracks[1]
|
||||
AIBaseLocation[id] = barracks[1].Location + CVec.New(2, 1)
|
||||
IdlingAIActors[id] = { }
|
||||
IdlingAISupportActors[id] = { }
|
||||
InitialInfantryProduction(id, InitialUnitsToBuild)
|
||||
DefendActor(id, barracks[1])
|
||||
RepairBarracks(id)
|
||||
SellWalls(id)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(10), function() LookOutForCrates(id) end)
|
||||
end
|
||||
|
||||
local derricks = player.GetActorsByType("oilb")
|
||||
if #derricks > 0 then
|
||||
AIDerricks[id] = derricks[1]
|
||||
DefendActor(id, derricks[1])
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
InitialInfantryProduction = function(id, units)
|
||||
local productionComplete = AIPlayers[id].Build(units, function(actors)
|
||||
ProduceInfantry(id)
|
||||
end)
|
||||
|
||||
Trigger.OnProduction(AIBarracks[id], function(producer, produced)
|
||||
BuildComplete(id, produced)
|
||||
end)
|
||||
end
|
||||
|
||||
ProduceInfantry = function(id)
|
||||
local productionComplete = AIPlayers[id].Build({ Utils.Random(UnitsToBuild) }, function(actors)
|
||||
Trigger.AfterDelay(0, function() ProduceInfantry(id) end)
|
||||
end)
|
||||
|
||||
if not productionComplete then
|
||||
Trigger.AfterDelay(0, function() ProduceInfantry(id) end)
|
||||
end
|
||||
end
|
||||
|
||||
BuildComplete = function(id, actor)
|
||||
if actor.Type == "medi" then
|
||||
local number = #IdlingAISupportActors[id] + 1
|
||||
IdlingAISupportActors[id][number] = actor
|
||||
|
||||
Trigger.OnKilled(actor, function()
|
||||
table.remove(IdlingAISupportActors[id], number)
|
||||
end)
|
||||
else
|
||||
local number = #IdlingAIActors[id] + 1
|
||||
IdlingAIActors[id][number] = actor
|
||||
|
||||
Trigger.OnKilled(actor, function()
|
||||
table.remove(IdlingAIActors[id], number)
|
||||
end)
|
||||
end
|
||||
|
||||
Trigger.AfterDelay(0, function() DefendActor(id, actor) end)
|
||||
end
|
||||
|
||||
AttackGroupSize = 5
|
||||
SetupAttackGroup = function(id)
|
||||
local units = { }
|
||||
|
||||
for i = 0, AttackGroupSize, 1 do
|
||||
if (#IdlingAIActors[id] == 0) then
|
||||
return units
|
||||
end
|
||||
|
||||
local number = Utils.RandomInteger(0, #IdlingAIActors[id]) + 1
|
||||
units[#units + 1] = IdlingAIActors[id][number]
|
||||
table.remove(IdlingAIActors[id], number)
|
||||
end
|
||||
|
||||
return units
|
||||
end
|
||||
|
||||
DefendActor = function(id, actorToDefend)
|
||||
if not actorToDefend or actorToDefend.IsDead or not actorToDefend.IsInWorld then
|
||||
return
|
||||
end
|
||||
|
||||
Trigger.OnDamaged(actorToDefend, function(self, attacker)
|
||||
if AIOnDefense[id] or not attacker or attacker.IsDead then
|
||||
return
|
||||
end
|
||||
|
||||
-- Don't try to kill something you can't kill
|
||||
if attacker.Type == "sniper.soviets" then
|
||||
return
|
||||
end
|
||||
|
||||
AIOnDefense[id] = true
|
||||
local attackLoc = attacker.Location
|
||||
|
||||
local defenders = SetupAttackGroup(id)
|
||||
if not defenders or #defenders == 0 then
|
||||
Trigger.AfterDelay(DateTime.Seconds(30), function() AIOnDefense[id] = false end)
|
||||
return
|
||||
end
|
||||
|
||||
Utils.Do(defenders, function(unit)
|
||||
if unit.IsDead then
|
||||
return
|
||||
end
|
||||
|
||||
unit.AttackMove(attackLoc)
|
||||
|
||||
local home = AIBaseLocation[id]
|
||||
Trigger.OnIdle(unit, function()
|
||||
if unit.Location == home then
|
||||
IdlingAIActors[id][#IdlingAIActors[id] + 1] = unit
|
||||
Trigger.Clear(unit, "OnIdle")
|
||||
AIOnDefense[id] = false
|
||||
else
|
||||
unit.AttackMove(home)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
RepairBarracks = function(id)
|
||||
Trigger.OnDamaged(AIBarracks[id], function(self, attacker)
|
||||
self.StartBuildingRepairs(AIPlayers[id])
|
||||
end)
|
||||
end
|
||||
|
||||
SellWalls = function(id)
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("lonestar-ai-sold-its-walls", { ["id"] = id }))
|
||||
|
||||
local walls = AIPlayers[id].GetActorsByType("brik")
|
||||
Utils.Do(walls, function(wall)
|
||||
wall.Sell()
|
||||
end)
|
||||
end
|
||||
|
||||
LookOutForCrates = function(id)
|
||||
Trigger.OnEnteredProximityTrigger(AIBarracks[id].CenterPosition, WDist.New(12 * 1024), function(actor)
|
||||
if actor.Type ~= "fortcrate" or #IdlingAIActors[id] == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local unit = Utils.Random(IdlingAIActors[id])
|
||||
local home = AIBaseLocation[id]
|
||||
local aim = actor.Location
|
||||
if unit.IsDead then
|
||||
return
|
||||
end
|
||||
|
||||
unit.AttackMove(aim)
|
||||
Trigger.OnIdle(unit, function()
|
||||
if unit.Location == aim or not actor.IsInWorld then
|
||||
unit.AttackMove(home)
|
||||
Trigger.Clear(unit, "OnIdle")
|
||||
else
|
||||
unit.AttackMove(aim)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end
|
||||
229
mods/ra/maps/fort-lonestar/fort-lonestar.lua
Normal file
229
mods/ra/maps/fort-lonestar/fort-lonestar.lua
Normal file
@@ -0,0 +1,229 @@
|
||||
--[[
|
||||
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.
|
||||
]]
|
||||
|
||||
SovietEntryPoints = { Entry1, Entry2, Entry3, Entry4, Entry5, Entry6, Entry7, Entry8 }
|
||||
PatrolWaypoints = { Entry2, Entry4, Entry6, Entry8 }
|
||||
ParadropWaypoints = { Paradrop1, Paradrop2, Paradrop3, Paradrop4 }
|
||||
SpawnPoints = { Spawn1, Spawn2, Spawn3, Spawn4 }
|
||||
Snipers = { Sniper1, Sniper2, Sniper3, Sniper4, Sniper5, Sniper6, Sniper7, Sniper8, Sniper9, Sniper10, Sniper11, Sniper12 }
|
||||
|
||||
Walls =
|
||||
{
|
||||
{ WallTopRight1, WallTopRight2, WallTopRight3, WallTopRight4, WallTopRight5, WallTopRight6, WallTopRight7, WallTopRight8, WallTopRight9 },
|
||||
{ WallTopLeft1, WallTopLeft2, WallTopLeft3, WallTopLeft4, WallTopLeft5, WallTopLeft6, WallTopLeft7, WallTopLeft8, WallTopLeft9 },
|
||||
{ WallBottomLeft1, WallBottomLeft2, WallBottomLeft3, WallBottomLeft4, WallBottomLeft5, WallBottomLeft6, WallBottomLeft7, WallBottomLeft8, WallBottomLeft9 },
|
||||
{ WallBottomRight1, WallBottomRight2, WallBottomRight3, WallBottomRight4, WallBottomRight5, WallBottomRight6, WallBottomRight7, WallBottomRight8, WallBottomRight9 }
|
||||
}
|
||||
|
||||
if Difficulty == "veryeasy" then
|
||||
ParaChance = 20
|
||||
Patrol = { "e1", "e2", "e1" }
|
||||
Infantry = { "e4", "e1", "e1", "e2", "e2" }
|
||||
Vehicles = { "apc" }
|
||||
Tank = { "3tnk" }
|
||||
LongRange = { "arty" }
|
||||
Boss = { "v2rl" }
|
||||
Swarm = { "shok", "shok", "shok" }
|
||||
elseif Difficulty == "easy" then
|
||||
ParaChance = 25
|
||||
Patrol = { "e1", "e2", "e1" }
|
||||
Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" }
|
||||
Vehicles = { "ftrk", "apc", "arty" }
|
||||
Tank = { "3tnk" }
|
||||
LongRange = { "v2rl" }
|
||||
Boss = { "4tnk" }
|
||||
Swarm = { "shok", "shok", "shok", "shok", "ttnk" }
|
||||
elseif Difficulty == "normal" then
|
||||
ParaChance = 30
|
||||
Patrol = { "e1", "e2", "e1", "e1" }
|
||||
Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" }
|
||||
Vehicles = { "ftrk", "ftrk", "apc", "arty" }
|
||||
Tank = { "3tnk" }
|
||||
LongRange = { "v2rl" }
|
||||
Boss = { "4tnk" }
|
||||
Swarm = { "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk" }
|
||||
elseif Difficulty == "hard" then
|
||||
ParaChance = 35
|
||||
Patrol = { "e1", "e2", "e1", "e1", "e4" }
|
||||
Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" }
|
||||
Vehicles = { "arty", "ftrk", "ftrk", "apc", "apc" }
|
||||
Tank = { "3tnk" }
|
||||
LongRange = { "v2rl" }
|
||||
Boss = { "4tnk" }
|
||||
Swarm = { "shok", "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk", "ttnk" }
|
||||
else
|
||||
ParaChance = 40
|
||||
Patrol = { "e1", "e2", "e1", "e1", "e4", "e4" }
|
||||
Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1", "e1" }
|
||||
Vehicles = { "arty", "arty", "ftrk", "apc", "apc" }
|
||||
Tank = { "ftrk", "3tnk" }
|
||||
LongRange = { "v2rl" }
|
||||
Boss = { "4tnk" }
|
||||
Swarm = { "shok", "shok", "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk", "ttnk", "ttnk" }
|
||||
end
|
||||
|
||||
Wave = 0
|
||||
Waves =
|
||||
{
|
||||
{ delay = 500, units = { Infantry } },
|
||||
{ delay = 500, units = { Patrol, Patrol } },
|
||||
{ delay = 700, units = { Infantry, Infantry, Vehicles }, },
|
||||
{ delay = 1500, units = { Infantry, Infantry, Infantry, Infantry } },
|
||||
{ delay = 1500, units = { Infantry, Infantry, Patrol, Vehicles } },
|
||||
{ delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Tank, Vehicles } },
|
||||
{ delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Tank, Tank, Swarm } },
|
||||
{ delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, LongRange } },
|
||||
{ delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, LongRange, Tank, LongRange } },
|
||||
{ delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, LongRange, Tank, Tank, Vehicles } },
|
||||
{ delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Boss, Swarm } }
|
||||
}
|
||||
|
||||
-- Now do some adjustments to the waves
|
||||
if Difficulty == "tough" or Difficulty == "endless" then
|
||||
Waves[8] = { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry }, ironUnits = { LongRange } }
|
||||
Waves[9] = { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, LongRange, Vehicles, Tank }, ironUnits = { Tank } }
|
||||
Waves[11] = { delay = 1500, units = { Vehicles, Infantry, Patrol, Patrol, Patrol, Infantry, LongRange, Tank, Boss, Infantry, Infantry, Patrol } }
|
||||
end
|
||||
|
||||
IdleHunt = function(actor)
|
||||
Trigger.OnIdle(actor, function(a)
|
||||
if a.IsInWorld then
|
||||
a.Hunt()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
SendUnits = function(entryCell, unitTypes, targetCell, extraData)
|
||||
Reinforcements.Reinforce(Soviets, unitTypes, { entryCell }, 40, function(a)
|
||||
if not a.HasProperty("AttackMove") then
|
||||
Trigger.OnIdle(a, function(a)
|
||||
a.Move(targetCell)
|
||||
end)
|
||||
return
|
||||
end
|
||||
|
||||
a.AttackMove(targetCell)
|
||||
Trigger.OnIdle(a, function(a)
|
||||
a.Hunt()
|
||||
end)
|
||||
|
||||
if extraData == "IronCurtain" then
|
||||
a.GrantCondition("invulnerability", DateTime.Seconds(25))
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
SendWave = function()
|
||||
Wave = Wave + 1
|
||||
local wave = Waves[Wave]
|
||||
|
||||
Trigger.AfterDelay(wave.delay, function()
|
||||
Utils.Do(wave.units, function(units)
|
||||
local entry = Utils.Random(SovietEntryPoints).Location
|
||||
local target = Utils.Random(SpawnPoints).Location
|
||||
|
||||
SendUnits(entry, units, target)
|
||||
end)
|
||||
|
||||
if wave.ironUnits then
|
||||
Utils.Do(wave.ironUnits, function(units)
|
||||
local entry = Utils.Random(SovietEntryPoints).Location
|
||||
local target = Utils.Random(SpawnPoints).Location
|
||||
|
||||
SendUnits(entry, units, target, "IronCurtain")
|
||||
end)
|
||||
end
|
||||
|
||||
Utils.Do(Players, function(player)
|
||||
Media.PlaySpeechNotification(player, "EnemyUnitsApproaching")
|
||||
end)
|
||||
|
||||
if (Wave < #Waves) then
|
||||
if Utils.RandomInteger(1, 100) < ParaChance then
|
||||
local aircraft = ParaProxy.TargetParatroopers(Utils.Random(ParadropWaypoints).CenterPosition)
|
||||
Utils.Do(aircraft, function(a)
|
||||
Trigger.OnPassengerExited(a, function(t, p)
|
||||
IdleHunt(p)
|
||||
end)
|
||||
end)
|
||||
|
||||
local delay = Utils.RandomInteger(DateTime.Seconds(20), DateTime.Seconds(45))
|
||||
Trigger.AfterDelay(delay, SendWave)
|
||||
else
|
||||
SendWave()
|
||||
end
|
||||
else
|
||||
if Difficulty == "endless" then
|
||||
Wave = 0
|
||||
IncreaseDifficulty()
|
||||
SendWave()
|
||||
return
|
||||
end
|
||||
|
||||
Trigger.AfterDelay(DateTime.Minutes(1), SovietsRetreating)
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("no-more-waves"))
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
SovietsRetreating = function()
|
||||
Utils.Do(Snipers, function(a)
|
||||
if not a.IsDead and a.Owner == Soviets then
|
||||
a.Destroy()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
IncreaseDifficulty = function()
|
||||
local additions = { Infantry, Patrol, Vehicles, Tank, LongRange, Boss, Swarm }
|
||||
Utils.Do(Waves, function(wave)
|
||||
wave.units[#wave.units + 1] = Utils.Random(additions)
|
||||
end)
|
||||
end
|
||||
|
||||
Tick = function()
|
||||
if (Utils.RandomInteger(1, 200) == 10) then
|
||||
local delay = Utils.RandomInteger(1, 10)
|
||||
Lighting.Flash("LightningStrike", delay)
|
||||
Trigger.AfterDelay(delay, function()
|
||||
Media.PlaySound("thunder" .. Utils.RandomInteger(1,6) .. ".aud")
|
||||
end)
|
||||
end
|
||||
if (Utils.RandomInteger(1, 200) == 10) then
|
||||
Media.PlaySound("thunder-ambient.aud")
|
||||
end
|
||||
end
|
||||
|
||||
SetupWallOwners = function()
|
||||
Utils.Do(Players, function(player)
|
||||
Utils.Do(Walls[player.Spawn], function(wall)
|
||||
wall.Owner = player
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
WorldLoaded = function()
|
||||
Soviets = Player.GetPlayer("Soviets")
|
||||
Players = { }
|
||||
for i = 0, 4 do
|
||||
local player = Player.GetPlayer("Multi" ..i)
|
||||
Players[i] = player
|
||||
|
||||
if Players[i] and Players[i].IsBot then
|
||||
ActivateAI(Players[i], i)
|
||||
end
|
||||
end
|
||||
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("defend-fort-lonestar"))
|
||||
|
||||
SetupWallOwners()
|
||||
|
||||
ParaProxy = Actor.Create("powerproxy.paratroopers", false, { Owner = Soviets })
|
||||
SendWave()
|
||||
end
|
||||
BIN
mods/ra/maps/fort-lonestar/map.bin
Normal file
BIN
mods/ra/maps/fort-lonestar/map.bin
Normal file
Binary file not shown.
26
mods/ra/maps/fort-lonestar/map.ftl
Normal file
26
mods/ra/maps/fort-lonestar/map.ftl
Normal file
@@ -0,0 +1,26 @@
|
||||
dropdown-difficulty =
|
||||
.label = Difficulty
|
||||
.description = The difficulty of the mission
|
||||
|
||||
options-difficulty =
|
||||
.hard4p = Hard (4P)
|
||||
.normal3p = Normal (3P)
|
||||
.easy2p = Easy (2P)
|
||||
.veryeasy1p = Very Easy (1P)
|
||||
.endless = Endless mode
|
||||
.tough = Real tough guy
|
||||
|
||||
actor-mobiletent-name = Mobile Tent
|
||||
|
||||
actor-sniper =
|
||||
.name = Sniper
|
||||
.description = Elite sniper infantry unit.
|
||||
Can detect cloaked units.
|
||||
Strong vs Infantry
|
||||
Weak vs Vehicles, Aircraft
|
||||
|
||||
actor-mig-bomber-name = MiG Bomber
|
||||
|
||||
## rules.yaml
|
||||
bot-lonestarai-name = Lonestar AI
|
||||
actor-powerproxy-parabombs-description = A MiG bomber drops a load of parachuted bombs on your target.
|
||||
BIN
mods/ra/maps/fort-lonestar/map.png
Normal file
BIN
mods/ra/maps/fort-lonestar/map.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 454 B |
472
mods/ra/maps/fort-lonestar/map.yaml
Normal file
472
mods/ra/maps/fort-lonestar/map.yaml
Normal file
@@ -0,0 +1,472 @@
|
||||
MapFormat: 12
|
||||
|
||||
RequiresMod: ra
|
||||
|
||||
Title: Fort Lonestar
|
||||
|
||||
Author: Nuke'm Bro, abcdefg30
|
||||
|
||||
Tileset: TEMPERAT
|
||||
|
||||
MapSize: 96,96
|
||||
|
||||
Bounds: 8,8,48,48
|
||||
|
||||
Visibility: Lobby
|
||||
|
||||
Categories: Minigame
|
||||
|
||||
Players:
|
||||
PlayerReference@Neutral:
|
||||
Name: Neutral
|
||||
OwnsWorld: True
|
||||
NonCombatant: True
|
||||
Faction: allies
|
||||
PlayerReference@Multi0:
|
||||
Name: Multi0
|
||||
Playable: True
|
||||
LockTeam: True
|
||||
Team: 1
|
||||
LockFaction: True
|
||||
Faction: allies
|
||||
Allies: Multi1, Multi2, Multi3
|
||||
Enemies: Soviets
|
||||
PlayerReference@Multi1:
|
||||
Name: Multi1
|
||||
Playable: True
|
||||
LockTeam: True
|
||||
Team: 1
|
||||
LockFaction: True
|
||||
Faction: allies
|
||||
Allies: Multi0, Multi2, Multi3
|
||||
Enemies: Soviets
|
||||
PlayerReference@Multi2:
|
||||
Name: Multi2
|
||||
Playable: True
|
||||
LockTeam: True
|
||||
Team: 1
|
||||
LockFaction: True
|
||||
Faction: allies
|
||||
Allies: Multi0, Multi1, Multi3
|
||||
Enemies: Soviets
|
||||
PlayerReference@Multi3:
|
||||
Name: Multi3
|
||||
Playable: True
|
||||
LockTeam: True
|
||||
Team: 1
|
||||
LockFaction: True
|
||||
Faction: allies
|
||||
Allies: Multi0, Multi1, Multi2
|
||||
Enemies: Soviets
|
||||
PlayerReference@Soviets:
|
||||
Name: Soviets
|
||||
Faction: soviet
|
||||
LockTeam: True
|
||||
Team: 2
|
||||
Color: FF0101
|
||||
Enemies: Multi0, Multi1, Multi2, Multi3
|
||||
|
||||
Actors:
|
||||
Actor76: t11
|
||||
Location: 47,27
|
||||
Owner: Neutral
|
||||
Actor47: t12
|
||||
Location: 55,24
|
||||
Owner: Neutral
|
||||
Actor25: tc03
|
||||
Location: 54,49
|
||||
Owner: Neutral
|
||||
Actor14: tc04
|
||||
Location: 24,7
|
||||
Owner: Neutral
|
||||
Actor10: tc04
|
||||
Location: 38,53
|
||||
Owner: Neutral
|
||||
Actor0: t14
|
||||
Location: 32,16
|
||||
Owner: Neutral
|
||||
Actor75: tc04
|
||||
Location: 45,25
|
||||
Owner: Neutral
|
||||
Actor72: tc01
|
||||
Location: 49,16
|
||||
Owner: Neutral
|
||||
Actor58: t10
|
||||
Location: 22,54
|
||||
Owner: Neutral
|
||||
Actor26: tc01
|
||||
Location: 54,41
|
||||
Owner: Neutral
|
||||
Actor37: tc01
|
||||
Location: 54,21
|
||||
Owner: Neutral
|
||||
Actor60: tc05
|
||||
Location: 7,16
|
||||
Owner: Neutral
|
||||
Actor69: t17
|
||||
Location: 23,8
|
||||
Owner: Neutral
|
||||
Actor4: tc04
|
||||
Location: 29,45
|
||||
Owner: Neutral
|
||||
Actor6: t17
|
||||
Location: 33,43
|
||||
Owner: Neutral
|
||||
Actor16: tc04
|
||||
Location: 53,16
|
||||
Owner: Neutral
|
||||
Actor21: tc03
|
||||
Location: 8,14
|
||||
Owner: Neutral
|
||||
Actor8: t14
|
||||
Location: 49,37
|
||||
Owner: Neutral
|
||||
Actor29: tc01
|
||||
Location: 8,42
|
||||
Owner: Neutral
|
||||
Actor49: t15
|
||||
Location: 54,47
|
||||
Owner: Neutral
|
||||
Actor62: tc05
|
||||
Location: 6,43
|
||||
Owner: Neutral
|
||||
Actor73: tc05
|
||||
Location: 16,34
|
||||
Owner: Neutral
|
||||
Actor32: tc01
|
||||
Location: 8,24
|
||||
Owner: Neutral
|
||||
Actor59: tc05
|
||||
Location: 7,39
|
||||
Owner: Neutral
|
||||
Actor5: tc01
|
||||
Location: 44,44
|
||||
Owner: Neutral
|
||||
Actor51: t08
|
||||
Location: 55,46
|
||||
Owner: Neutral
|
||||
Actor57: t12
|
||||
Location: 19,54
|
||||
Owner: Neutral
|
||||
Actor54: t11
|
||||
Location: 26,54
|
||||
Owner: Neutral
|
||||
Actor33: tc01
|
||||
Location: 21,7
|
||||
Owner: Neutral
|
||||
Actor27: tc01
|
||||
Location: 42,54
|
||||
Owner: Neutral
|
||||
Actor23: tc03
|
||||
Location: 16,54
|
||||
Owner: Neutral
|
||||
Actor15: tc04
|
||||
Location: 38,8
|
||||
Owner: Neutral
|
||||
Actor19: tc03
|
||||
Location: 18,7
|
||||
Owner: Neutral
|
||||
Actor17: tc03
|
||||
Location: 54,26
|
||||
Owner: Neutral
|
||||
Actor11: tc04
|
||||
Location: 20,53
|
||||
Owner: Neutral
|
||||
Actor9: tc04
|
||||
Location: 53,37
|
||||
Owner: Neutral
|
||||
Actor7: tc02
|
||||
Location: 44,36
|
||||
Owner: Neutral
|
||||
Actor3: t15
|
||||
Location: 19,25
|
||||
Owner: Neutral
|
||||
Actor1: t05
|
||||
Location: 29,16
|
||||
Owner: Neutral
|
||||
Actor71: tc02
|
||||
Location: 15,40
|
||||
Owner: Neutral
|
||||
Actor64: t06
|
||||
Location: 18,16
|
||||
Owner: Neutral
|
||||
Actor63: t14
|
||||
Location: 8,22
|
||||
Owner: Neutral
|
||||
Actor53: t08
|
||||
Location: 41,55
|
||||
Owner: Neutral
|
||||
Actor61: tc05
|
||||
Location: 54,39
|
||||
Owner: Neutral
|
||||
Actor48: t01
|
||||
Location: 54,23
|
||||
Owner: Neutral
|
||||
Actor50: t17
|
||||
Location: 54,44
|
||||
Owner: Neutral
|
||||
Actor36: tc01
|
||||
Location: 42,8
|
||||
Owner: Neutral
|
||||
Actor52: t12
|
||||
Location: 44,53
|
||||
Owner: Neutral
|
||||
Actor28: tc01
|
||||
Location: 24,54
|
||||
Owner: Neutral
|
||||
Actor22: tc03
|
||||
Location: 7,46
|
||||
Owner: Neutral
|
||||
Actor24: tc03
|
||||
Location: 45,54
|
||||
Owner: Neutral
|
||||
Actor18: tc03
|
||||
Location: 45,8
|
||||
Owner: Neutral
|
||||
Actor12: tc04
|
||||
Location: 7,37
|
||||
Owner: Neutral
|
||||
Actor13: tc04
|
||||
Location: 8,19
|
||||
Owner: Neutral
|
||||
Actor2: tc04
|
||||
Location: 14,23
|
||||
Owner: Neutral
|
||||
Actor74: t06
|
||||
Location: 19,36
|
||||
Owner: Neutral
|
||||
Actor46: t11
|
||||
Location: 54,19
|
||||
Owner: Neutral
|
||||
Actor42: t16
|
||||
Location: 53,19
|
||||
Owner: Neutral
|
||||
Actor68: tc05
|
||||
Location: 35,7
|
||||
Owner: Neutral
|
||||
WallTopLeft1: brik
|
||||
Location: 25,28
|
||||
Owner: Neutral
|
||||
WallTopLeft2: brik
|
||||
Location: 25,27
|
||||
Owner: Neutral
|
||||
WallTopLeft3: brik
|
||||
Location: 25,26
|
||||
Owner: Neutral
|
||||
WallTopLeft4: brik
|
||||
Location: 25,29
|
||||
Owner: Neutral
|
||||
WallTopLeft5: brik
|
||||
Location: 29,25
|
||||
Owner: Neutral
|
||||
WallTopLeft6: brik
|
||||
Location: 25,25
|
||||
Owner: Neutral
|
||||
WallTopLeft7: brik
|
||||
Location: 26,25
|
||||
Owner: Neutral
|
||||
WallTopLeft8: brik
|
||||
Location: 27,25
|
||||
Owner: Neutral
|
||||
WallTopLeft9: brik
|
||||
Location: 28,25
|
||||
Owner: Neutral
|
||||
WallTopRight1: brik
|
||||
Location: 35,25
|
||||
Owner: Neutral
|
||||
WallTopRight2: brik
|
||||
Location: 36,25
|
||||
Owner: Neutral
|
||||
WallTopRight3: brik
|
||||
Location: 37,25
|
||||
Owner: Neutral
|
||||
WallTopRight4: brik
|
||||
Location: 38,25
|
||||
Owner: Neutral
|
||||
WallTopRight5: brik
|
||||
Location: 39,25
|
||||
Owner: Neutral
|
||||
WallTopRight6: brik
|
||||
Location: 39,26
|
||||
Owner: Neutral
|
||||
WallTopRight7: brik
|
||||
Location: 39,27
|
||||
Owner: Neutral
|
||||
WallTopRight8: brik
|
||||
Location: 39,28
|
||||
Owner: Neutral
|
||||
WallTopRight9: brik
|
||||
Location: 39,29
|
||||
Owner: Neutral
|
||||
WallBottomRight1: brik
|
||||
Location: 39,37
|
||||
Owner: Neutral
|
||||
WallBottomRight2: brik
|
||||
Location: 37,39
|
||||
Owner: Neutral
|
||||
WallBottomRight3: brik
|
||||
Location: 39,38
|
||||
Owner: Neutral
|
||||
WallBottomRight4: brik
|
||||
Location: 39,39
|
||||
Owner: Neutral
|
||||
WallBottomRight5: brik
|
||||
Location: 38,39
|
||||
Owner: Neutral
|
||||
WallBottomRight6: brik
|
||||
Location: 39,35
|
||||
Owner: Neutral
|
||||
WallBottomRight7: brik
|
||||
Location: 39,36
|
||||
Owner: Neutral
|
||||
WallBottomRight8: brik
|
||||
Location: 35,39
|
||||
Owner: Neutral
|
||||
WallBottomRight9: brik
|
||||
Location: 36,39
|
||||
Owner: Neutral
|
||||
WallBottomLeft1: brik
|
||||
Location: 25,39
|
||||
Owner: Neutral
|
||||
WallBottomLeft2: brik
|
||||
Location: 28,39
|
||||
Owner: Neutral
|
||||
WallBottomLeft3: brik
|
||||
Location: 29,39
|
||||
Owner: Neutral
|
||||
WallBottomLeft4: brik
|
||||
Location: 27,39
|
||||
Owner: Neutral
|
||||
WallBottomLeft5: brik
|
||||
Location: 25,35
|
||||
Owner: Neutral
|
||||
WallBottomLeft6: brik
|
||||
Location: 25,36
|
||||
Owner: Neutral
|
||||
WallBottomLeft7: brik
|
||||
Location: 25,37
|
||||
Owner: Neutral
|
||||
WallBottomLeft8: brik
|
||||
Location: 25,38
|
||||
Owner: Neutral
|
||||
WallBottomLeft9: brik
|
||||
Location: 26,39
|
||||
Owner: Neutral
|
||||
Sniper1: sniper.soviets
|
||||
Location: 9,26
|
||||
Owner: Soviets
|
||||
Sniper2: sniper.soviets
|
||||
Location: 10,21
|
||||
Owner: Soviets
|
||||
Sniper3: sniper.soviets
|
||||
Location: 26,9
|
||||
Owner: Soviets
|
||||
Sniper4: sniper.soviets
|
||||
Location: 40,10
|
||||
Owner: Soviets
|
||||
Sniper5: sniper.soviets
|
||||
Location: 53,21
|
||||
Owner: Soviets
|
||||
Sniper6: sniper.soviets
|
||||
Location: 54,25
|
||||
Owner: Soviets
|
||||
Sniper7: sniper.soviets
|
||||
Location: 53,40
|
||||
Owner: Soviets
|
||||
Sniper8: sniper.soviets
|
||||
Location: 54,43
|
||||
Owner: Soviets
|
||||
Sniper9: sniper.soviets
|
||||
Location: 54,46
|
||||
Owner: Soviets
|
||||
Sniper10: sniper.soviets
|
||||
Location: 43,53
|
||||
Owner: Soviets
|
||||
Sniper11: sniper.soviets
|
||||
Location: 8,36
|
||||
Owner: Soviets
|
||||
Sniper12: sniper.soviets
|
||||
Location: 28,55
|
||||
Owner: Soviets
|
||||
OilDerrick1: oilb
|
||||
Location: 32,30
|
||||
Owner: Multi0
|
||||
OilDerrick2: oilb
|
||||
Location: 32,32
|
||||
Owner: Multi1
|
||||
OilDerrick3: oilb
|
||||
Location: 30,32
|
||||
Owner: Multi2
|
||||
OilDerrick4: oilb
|
||||
Location: 30,30
|
||||
Owner: Multi3
|
||||
Spawn1: mpspawn
|
||||
Location: 36,26
|
||||
Owner: Neutral
|
||||
Spawn2: mpspawn
|
||||
Location: 27,26
|
||||
Owner: Neutral
|
||||
Spawn3: mpspawn
|
||||
Location: 27,36
|
||||
Owner: Neutral
|
||||
Spawn4: mpspawn
|
||||
Location: 36,36
|
||||
Owner: Neutral
|
||||
Entry1: waypoint
|
||||
Location: 8,8
|
||||
Owner: Neutral
|
||||
Entry2: waypoint
|
||||
Location: 31,8
|
||||
Owner: Neutral
|
||||
Entry3: waypoint
|
||||
Location: 55,8
|
||||
Owner: Neutral
|
||||
Entry4: waypoint
|
||||
Location: 55,32
|
||||
Owner: Neutral
|
||||
Entry5: waypoint
|
||||
Location: 55,55
|
||||
Owner: Neutral
|
||||
Entry6: waypoint
|
||||
Location: 32,55
|
||||
Owner: Neutral
|
||||
Entry7: waypoint
|
||||
Location: 8,55
|
||||
Owner: Neutral
|
||||
Entry8: waypoint
|
||||
Location: 8,32
|
||||
Owner: Neutral
|
||||
Paradrop1: waypoint
|
||||
Location: 32,28
|
||||
Owner: Neutral
|
||||
Paradrop2: waypoint
|
||||
Location: 27,32
|
||||
Owner: Neutral
|
||||
Paradrop3: waypoint
|
||||
Location: 32,36
|
||||
Owner: Neutral
|
||||
Paradrop4: waypoint
|
||||
Location: 36,32
|
||||
Owner: Neutral
|
||||
Patrol1: waypoint
|
||||
Location: 32,18
|
||||
Owner: Neutral
|
||||
Patrol2: waypoint
|
||||
Location: 17,32
|
||||
Owner: Neutral
|
||||
Patrol3: waypoint
|
||||
Location: 32,46
|
||||
Owner: Neutral
|
||||
Patrol4: waypoint
|
||||
Location: 46,32
|
||||
Owner: Neutral
|
||||
|
||||
Rules: rules.yaml
|
||||
|
||||
Weapons: weapons.yaml
|
||||
|
||||
Sequences: sequences.yaml
|
||||
|
||||
Music: music.yaml
|
||||
|
||||
FluentMessages: ra|fluent/lua.ftl, map.ftl
|
||||
2
mods/ra/maps/fort-lonestar/music.yaml
Normal file
2
mods/ra/maps/fort-lonestar/music.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
rain: Rain (ambient)
|
||||
Hidden: true
|
||||
BIN
mods/ra/maps/fort-lonestar/rain.aud
Normal file
BIN
mods/ra/maps/fort-lonestar/rain.aud
Normal file
Binary file not shown.
477
mods/ra/maps/fort-lonestar/rules.yaml
Normal file
477
mods/ra/maps/fort-lonestar/rules.yaml
Normal file
@@ -0,0 +1,477 @@
|
||||
World:
|
||||
CrateSpawner:
|
||||
InitialSpawnDelay: 0
|
||||
Maximum: 4
|
||||
SpawnInterval: 1000
|
||||
CrateActors: fortcrate
|
||||
StartingUnits@mcvonly:
|
||||
BaseActor: tent
|
||||
WeatherOverlay:
|
||||
WindTick: 150, 550
|
||||
UseSquares: false
|
||||
ScatterDirection: 0, 0
|
||||
Gravity: 15, 25
|
||||
SwingOffset: 0, 0
|
||||
SwingSpeed: 0, 0
|
||||
SwingAmplitude: 0, 0
|
||||
ParticleColors: 304074, 28386C, 202C60, 182C54
|
||||
LineTailAlphaValue: 150
|
||||
ParticleSize: 1, 1
|
||||
TintPostProcessEffect:
|
||||
Red: 0.75
|
||||
Green: 0.85
|
||||
Blue: 1.5
|
||||
Ambient: 0.45
|
||||
MusicPlaylist:
|
||||
BackgroundMusic: rain
|
||||
FlashPostProcessEffect@LIGHTNINGSTRIKE:
|
||||
Type: LightningStrike
|
||||
LuaScript:
|
||||
Scripts: campaign.lua, fort-lonestar.lua, fort-lonestar-AI.lua
|
||||
MapBuildRadius:
|
||||
AllyBuildRadiusCheckboxVisible: False
|
||||
BuildRadiusCheckboxVisible: False
|
||||
SpawnStartingUnits:
|
||||
DropdownVisible: False
|
||||
DropdownLocked: True
|
||||
MapOptions:
|
||||
TechLevelDropdownLocked: True
|
||||
TechLevel: unrestricted
|
||||
TechLevelDropdownVisible: False
|
||||
ShortGameCheckboxLocked: True
|
||||
ShortGameCheckboxEnabled: False
|
||||
ShortGameCheckboxVisible: False
|
||||
ScriptLobbyDropdown@difficulty:
|
||||
ID: difficulty
|
||||
Label: dropdown-difficulty.label
|
||||
Description: dropdown-difficulty.description
|
||||
Values:
|
||||
hard: options-difficulty.hard4p
|
||||
normal: options-difficulty.normal3p
|
||||
easy: options-difficulty.easy2p
|
||||
veryeasy: options-difficulty.veryeasy1p
|
||||
tough: options-difficulty.tough
|
||||
endless: options-difficulty.endless
|
||||
Default: hard
|
||||
DisplayOrder: 5
|
||||
MapStartingLocations:
|
||||
SeparateTeamSpawnsCheckboxEnabled: False
|
||||
SeparateTeamSpawnsCheckboxLocked: True
|
||||
SeparateTeamSpawnsCheckboxVisible: False
|
||||
TimeLimitManager:
|
||||
TimeLimitLocked: True
|
||||
TimeLimitDropdownVisible: False
|
||||
|
||||
FORTCRATE:
|
||||
Inherits: ^Crate
|
||||
SupportPowerCrateAction@parabombs:
|
||||
SelectionShares: 30
|
||||
Proxy: powerproxy.parabombs
|
||||
Sequence: parabombs
|
||||
HealActorsCrateAction:
|
||||
SelectionShares: 30
|
||||
Sound: heal2.aud
|
||||
Sequence: heal
|
||||
GiveCashCrateAction:
|
||||
Amount: 400
|
||||
UseCashTick: true
|
||||
SelectionShares: 30
|
||||
GiveUnitCrateAction@e7:
|
||||
Units: e7
|
||||
SelectionShares: 10
|
||||
GrantExternalConditionCrateAction@ironcurtain:
|
||||
SelectionShares: 10
|
||||
Sequence: invuln
|
||||
Sound: ironcur9.aud
|
||||
Condition: invulnerability
|
||||
Duration: 1200
|
||||
ExplodeCrateAction@bigboom:
|
||||
Weapon: SCUD
|
||||
SelectionShares: 5
|
||||
GiveBaseBuilderCrateAction:
|
||||
SelectionShares: 0
|
||||
NoBaseSelectionShares: 1000
|
||||
Units: mobiletent
|
||||
ValidFactions: allies
|
||||
|
||||
Player:
|
||||
ClassicProductionQueue@Infantry:
|
||||
BuildDurationModifier: 250
|
||||
-EnemyWatcher:
|
||||
Shroud:
|
||||
FogCheckboxLocked: True
|
||||
FogCheckboxEnabled: True
|
||||
FogCheckboxVisible: False
|
||||
ExploredMapCheckboxLocked: True
|
||||
ExploredMapCheckboxEnabled: False
|
||||
ExploredMapCheckboxVisible: False
|
||||
PlayerResources:
|
||||
DefaultCashDropdownLocked: True
|
||||
DefaultCashDropdownVisible: False
|
||||
DefaultCash: 50
|
||||
-ModularBot@RushAI:
|
||||
-ModularBot@NormalAI:
|
||||
-ModularBot@NavalAI:
|
||||
-ModularBot@TurtleAI:
|
||||
DummyBot@LonestarAI:
|
||||
Name: bot-lonestarai-name
|
||||
Type: lonestar
|
||||
LobbyPrerequisiteCheckbox@GLOBALFACTUNDEPLOY:
|
||||
Visible: False
|
||||
^Infantry:
|
||||
Inherits@IC: ^IronCurtainable
|
||||
|
||||
^Husk:
|
||||
TransformOnCapture:
|
||||
ForceHealthPercentage: 80
|
||||
|
||||
OILB:
|
||||
Health:
|
||||
HP: 300000
|
||||
Armor:
|
||||
Type: Wood
|
||||
WithBuildingBib:
|
||||
RevealsShroud:
|
||||
Range: 3c0
|
||||
CashTrickler:
|
||||
Interval: 250
|
||||
Amount: 50
|
||||
|
||||
MOBILETENT:
|
||||
Inherits: ^Vehicle
|
||||
Inherits@selection: ^SelectableSupportUnit
|
||||
Valued:
|
||||
Cost: 2000
|
||||
Tooltip:
|
||||
Name: actor-mobiletent-name
|
||||
Selectable:
|
||||
DecorationBounds: 896, 896
|
||||
SelectionDecorations:
|
||||
Health:
|
||||
HP: 60000
|
||||
Armor:
|
||||
Type: Light
|
||||
Mobile:
|
||||
Speed: 85
|
||||
Locomotor: heavywheeled
|
||||
RevealsShroud:
|
||||
Range: 4c0
|
||||
MustBeDestroyed:
|
||||
RequiredForShortGame: true
|
||||
BaseBuilding:
|
||||
Transforms:
|
||||
IntoActor: tent
|
||||
Offset: 0,0
|
||||
Facing: 384
|
||||
TransformSounds: placbldg.aud, build5.aud
|
||||
NoTransformNotification: BuildingCannotPlaceAudio
|
||||
NoTransformTextNotification: notification-cannot-deploy-here
|
||||
RenderSprites:
|
||||
Image: TRUK
|
||||
|
||||
TENT:
|
||||
Health:
|
||||
HP: 100000
|
||||
Production:
|
||||
Produces: Infantry, Soldier, Dog, Defense
|
||||
-Sellable:
|
||||
Demolishable:
|
||||
-Condition:
|
||||
BaseProvider:
|
||||
Range: 12c0
|
||||
Power:
|
||||
Amount: 0
|
||||
ProductionBar@Defense:
|
||||
ProductionType: Defense
|
||||
Color: 8A8A8A
|
||||
BaseBuilding:
|
||||
|
||||
FTUR:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 400
|
||||
Power:
|
||||
Amount: 0
|
||||
GivesBuildableArea:
|
||||
AreaTypes: building
|
||||
|
||||
PBOX:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 400
|
||||
Health:
|
||||
HP: 20000
|
||||
Armor:
|
||||
Type: Heavy
|
||||
Power:
|
||||
Amount: 0
|
||||
GivesBuildableArea:
|
||||
AreaTypes: building
|
||||
|
||||
DOG:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
BuildAtProductionType: Soldier
|
||||
Valued:
|
||||
Cost: 20
|
||||
|
||||
E1:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 20
|
||||
|
||||
E2:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 40
|
||||
FireWarheadsOnDeath:
|
||||
Chance: 20
|
||||
|
||||
E3:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 60
|
||||
|
||||
E4:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 100
|
||||
|
||||
E6:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 100
|
||||
|
||||
E7:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 750
|
||||
|
||||
3TNK:
|
||||
Armament:
|
||||
Weapon: TankNapalm
|
||||
Recoil: 200
|
||||
RecoilRecovery: 38
|
||||
|
||||
MEDI:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 100
|
||||
|
||||
SHOK:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 150
|
||||
|
||||
SNIPER:
|
||||
Inherits: ^Soldier
|
||||
Valued:
|
||||
Cost: 200
|
||||
Tooltip:
|
||||
Name: actor-sniper.name
|
||||
UpdatesPlayerStatistics:
|
||||
AddToArmyValue: true
|
||||
Buildable:
|
||||
Queue: Infantry
|
||||
BuildAtProductionType: Soldier
|
||||
BuildPaletteOrder: 80
|
||||
Prerequisites: barracks
|
||||
Description: actor-sniper.description
|
||||
Health:
|
||||
HP: 20000
|
||||
Passenger:
|
||||
CustomPipType: red
|
||||
RevealsShroud:
|
||||
Range: 6c0
|
||||
AutoTarget:
|
||||
InitialStance: HoldFire
|
||||
InitialStanceAI: ReturnFire
|
||||
AutoTargetPriority@DEFAULT:
|
||||
ValidTargets: Infantry
|
||||
Armament@PRIMARY:
|
||||
Weapon: Sniper
|
||||
Armament@GARRISONED:
|
||||
Name: garrisoned
|
||||
Weapon: Sniper
|
||||
MuzzleSequence: garrison-muzzle
|
||||
WithInfantryBody:
|
||||
DefaultAttackSequence: shoot
|
||||
RequiresCondition: !parachute
|
||||
WithInfantryBody@PARACHUTE:
|
||||
RequiresCondition: parachute
|
||||
Palette: player-noshadow
|
||||
IsPlayerPalette: true
|
||||
Cloak:
|
||||
InitialDelay: 250
|
||||
CloakDelay: 120
|
||||
CloakSound:
|
||||
UncloakSound:
|
||||
UncloakOn: Attack, Unload, Infiltrate, Demolish, Move
|
||||
PauseOnCondition: cloak-force-disabled
|
||||
GrantConditionOnDamageState@UNCLOAK:
|
||||
Condition: cloak-force-disabled
|
||||
ValidDamageStates: Critical
|
||||
-MustBeDestroyed:
|
||||
ProducibleWithLevel:
|
||||
Prerequisites: barracks.upgraded
|
||||
WithProductionIconOverlay:
|
||||
Types: Veterancy
|
||||
Prerequisites: barracks.upgraded
|
||||
|
||||
SNIPER.soviets:
|
||||
Inherits: SNIPER
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
MustBeDestroyed:
|
||||
Targetable:
|
||||
TargetTypes: Disguise
|
||||
AutoTarget:
|
||||
InitialStanceAI: AttackAnything
|
||||
RenderSprites:
|
||||
Image: SNIPER
|
||||
|
||||
SPY:
|
||||
Buildable:
|
||||
BuildPaletteOrder: 60
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 300
|
||||
-MustBeDestroyed:
|
||||
|
||||
FTRK:
|
||||
-Armament@AA:
|
||||
-Armament@AG:
|
||||
Armament:
|
||||
Weapon: FLAK-23
|
||||
Recoil: 85
|
||||
LocalOffset: 512,0,192
|
||||
MuzzleSequence: muzzle
|
||||
|
||||
ARTY:
|
||||
Valued:
|
||||
Cost: 600
|
||||
Health:
|
||||
HP: 7500
|
||||
RevealsShroud:
|
||||
Range: 7c0
|
||||
|
||||
V2RL:
|
||||
Health:
|
||||
HP: 10000
|
||||
|
||||
4TNK:
|
||||
Health:
|
||||
HP: 250000
|
||||
Mobile:
|
||||
Speed: 56
|
||||
RevealsShroud:
|
||||
Range: 14c0
|
||||
Turreted:
|
||||
TurnSpeed: 4
|
||||
Armament@PRIMARY:
|
||||
Recoil: 8
|
||||
RecoilRecovery: 0c7
|
||||
Armament@SECONDARY:
|
||||
Recoil: 2
|
||||
FireWarheadsOnDeath:
|
||||
Weapon: napalm
|
||||
EmptyWeapon: napalm
|
||||
ChangesHealth:
|
||||
Step: 200
|
||||
Delay: 1
|
||||
StartIfBelow: 40
|
||||
|
||||
powerproxy.parabombs:
|
||||
AirstrikePower:
|
||||
Description: actor-powerproxy-parabombs-description
|
||||
CameraRemoveDelay: 50
|
||||
|
||||
BADR.Bomber:
|
||||
Health:
|
||||
HP: 6000
|
||||
Aircraft:
|
||||
Speed: 280
|
||||
AmmoPool:
|
||||
Ammo: 30
|
||||
Tooltip:
|
||||
Name: actor-mig-bomber-name
|
||||
SpawnActorOnDeath:
|
||||
Actor: MIG.Husk
|
||||
RenderSprites:
|
||||
Image: mig
|
||||
|
||||
MECH:
|
||||
Buildable:
|
||||
Prerequisites: barracks
|
||||
Valued:
|
||||
Cost: 1500
|
||||
|
||||
powerproxy.paratroopers:
|
||||
ParatroopersPower:
|
||||
DropItems: E1,E1,E1,E1,E2,E2
|
||||
|
||||
SILO:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
BRIK:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
HBOX:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
GUN:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
SAM:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
SBAG:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
FENC:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
MSLO:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
GAP:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
IRON:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
PDOX:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
AGUN:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
TSLA:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
THF:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
91
mods/ra/maps/fort-lonestar/sequences.yaml
Normal file
91
mods/ra/maps/fort-lonestar/sequences.yaml
Normal file
@@ -0,0 +1,91 @@
|
||||
sniper:
|
||||
Defaults:
|
||||
Filename: sniper.shp
|
||||
stand:
|
||||
Facings: 8
|
||||
stand2:
|
||||
Start: 8
|
||||
Facings: 8
|
||||
run:
|
||||
Start: 16
|
||||
Length: 6
|
||||
Facings: 8
|
||||
Tick: 100
|
||||
shoot:
|
||||
Start: 64
|
||||
Length: 16
|
||||
Facings: 8
|
||||
prone-stand:
|
||||
Start: 208
|
||||
Stride: 4
|
||||
Facings: 8
|
||||
prone-stand2:
|
||||
Start: 208
|
||||
Stride: 4
|
||||
Facings: 8
|
||||
prone-run:
|
||||
Start: 208
|
||||
Length: 4
|
||||
Facings: 8
|
||||
Tick: 100
|
||||
liedown:
|
||||
Start: 192
|
||||
Length: 2
|
||||
Facings: 8
|
||||
standup:
|
||||
Start: 240
|
||||
Length: 2
|
||||
Facings: 8
|
||||
prone-shoot:
|
||||
Start: 256
|
||||
Length: 16
|
||||
Facings: 8
|
||||
idle1:
|
||||
Start: 384
|
||||
Length: 14
|
||||
Tick: 120
|
||||
idle2:
|
||||
Start: 399
|
||||
Length: 16
|
||||
Tick: 120
|
||||
die1:
|
||||
Start: 416
|
||||
Length: 8
|
||||
Tick: 80
|
||||
die2:
|
||||
Start: 424
|
||||
Length: 8
|
||||
Tick: 80
|
||||
die3:
|
||||
Start: 432
|
||||
Length: 8
|
||||
Tick: 80
|
||||
die4:
|
||||
Start: 440
|
||||
Length: 12
|
||||
Tick: 80
|
||||
die5:
|
||||
Start: 452
|
||||
Length: 18
|
||||
Tick: 80
|
||||
die6:
|
||||
Filename: electro.tem
|
||||
TilesetFilenames:
|
||||
SNOW: electro.sno
|
||||
Frames: 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
|
||||
Length: *
|
||||
Tick: 80
|
||||
die-crushed:
|
||||
Filename: corpse1.tem
|
||||
TilesetFilenames:
|
||||
SNOW: corpse1.sno
|
||||
Length: 6
|
||||
Tick: 1600
|
||||
ZOffset: -511
|
||||
garrison-muzzle:
|
||||
Filename: minigun.shp
|
||||
Length: 3
|
||||
Stride: 6
|
||||
Facings: 8
|
||||
icon:
|
||||
Filename: snipericon.shp
|
||||
BIN
mods/ra/maps/fort-lonestar/sniper.shp
Normal file
BIN
mods/ra/maps/fort-lonestar/sniper.shp
Normal file
Binary file not shown.
BIN
mods/ra/maps/fort-lonestar/snipericon.shp
Normal file
BIN
mods/ra/maps/fort-lonestar/snipericon.shp
Normal file
Binary file not shown.
BIN
mods/ra/maps/fort-lonestar/thunder-ambient.aud
Normal file
BIN
mods/ra/maps/fort-lonestar/thunder-ambient.aud
Normal file
Binary file not shown.
BIN
mods/ra/maps/fort-lonestar/thunder1.aud
Normal file
BIN
mods/ra/maps/fort-lonestar/thunder1.aud
Normal file
Binary file not shown.
BIN
mods/ra/maps/fort-lonestar/thunder2.aud
Normal file
BIN
mods/ra/maps/fort-lonestar/thunder2.aud
Normal file
Binary file not shown.
BIN
mods/ra/maps/fort-lonestar/thunder3.aud
Normal file
BIN
mods/ra/maps/fort-lonestar/thunder3.aud
Normal file
Binary file not shown.
BIN
mods/ra/maps/fort-lonestar/thunder4.aud
Normal file
BIN
mods/ra/maps/fort-lonestar/thunder4.aud
Normal file
Binary file not shown.
BIN
mods/ra/maps/fort-lonestar/thunder5.aud
Normal file
BIN
mods/ra/maps/fort-lonestar/thunder5.aud
Normal file
Binary file not shown.
183
mods/ra/maps/fort-lonestar/weapons.yaml
Normal file
183
mods/ra/maps/fort-lonestar/weapons.yaml
Normal file
@@ -0,0 +1,183 @@
|
||||
120mm:
|
||||
ReloadDelay: 150
|
||||
Range: 10c0
|
||||
Burst: 6
|
||||
Projectile: Bullet
|
||||
Speed: 204
|
||||
Blockable: false
|
||||
Inaccuracy: 1c682
|
||||
Image: 120MM
|
||||
ContrailLength: 50
|
||||
Warhead@1Dam: SpreadDamage
|
||||
Spread: 256
|
||||
Versus:
|
||||
None: 56
|
||||
Wood: 56
|
||||
Light: 56
|
||||
Heavy: 86
|
||||
Concrete: 75
|
||||
Damage: 20000
|
||||
Warhead@3Eff: CreateEffect
|
||||
Explosions: self_destruct
|
||||
|
||||
MammothTusk:
|
||||
ReloadDelay: 300
|
||||
Range: 10c0
|
||||
ValidTargets: Ground, GroundActor, AirborneActor
|
||||
Projectile: Missile
|
||||
Blockable: false
|
||||
Speed: 128
|
||||
TrailImage: smokey
|
||||
ContrailLength: 150
|
||||
Inaccuracy: 0c853
|
||||
HorizontalRateOfTurn: 40
|
||||
RangeLimit: 12c0
|
||||
Warhead@1Dam: SpreadDamage
|
||||
Spread: 640
|
||||
ValidTargets: GroundActor, AirborneActor
|
||||
Versus:
|
||||
None: 125
|
||||
Wood: 110
|
||||
Light: 110
|
||||
Heavy: 100
|
||||
Concrete: 200
|
||||
Damage: 25000
|
||||
Warhead@3Eff: CreateEffect
|
||||
Explosions: nuke
|
||||
|
||||
TankNapalm:
|
||||
ReloadDelay: 40
|
||||
Range: 8c0
|
||||
Report: aacanon3.aud
|
||||
ValidTargets: Ground, GroundActor
|
||||
Burst: 6
|
||||
BurstDelays: 1
|
||||
Projectile: Bullet
|
||||
Speed: 426
|
||||
Image: 120MM
|
||||
Inaccuracy: 2c512
|
||||
TrailImage: smokey
|
||||
ContrailLength: 2
|
||||
Blockable: false
|
||||
Warhead: SpreadDamage
|
||||
Spread: 341
|
||||
ValidTargets: GroundActor
|
||||
Versus:
|
||||
None: 65
|
||||
Wood: 125
|
||||
Light: 75
|
||||
Heavy: 75
|
||||
Concrete: 75
|
||||
Damage: 2000
|
||||
DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
|
||||
Warhead@2Smu: LeaveSmudge
|
||||
SmudgeType: Scorch
|
||||
Warhead@3Eff: CreateEffect
|
||||
Explosions: small_explosion
|
||||
ImpactSounds: firebl3.aud
|
||||
|
||||
ParaBomb:
|
||||
ReloadDelay: 5
|
||||
Range: 5c0
|
||||
Projectile: GravityBomb
|
||||
Image: BOMBLET
|
||||
OpenSequence: idle
|
||||
Warhead@1Dam: SpreadDamage
|
||||
Spread: 426
|
||||
Versus:
|
||||
None: 125
|
||||
Wood: 100
|
||||
Light: 60
|
||||
Concrete: 25
|
||||
Damage: 20000
|
||||
DamageTypes: Prone50Percent, TriggerProne, FireDeath
|
||||
Warhead@3Eff: CreateEffect
|
||||
Explosions: napalm
|
||||
ImpactSounds: firebl3.aud
|
||||
|
||||
155mm:
|
||||
ReloadDelay: 10
|
||||
Range: 7c0
|
||||
Burst: 20
|
||||
-Report:
|
||||
Projectile: Bullet
|
||||
Speed: 170
|
||||
TrailImage: fb4
|
||||
Image: fb3
|
||||
Blockable: false
|
||||
LaunchAngle: 30
|
||||
Inaccuracy: 1c682
|
||||
ContrailLength: 2
|
||||
Warhead@1Dam: SpreadDamage
|
||||
Versus:
|
||||
None: 80
|
||||
Wood: 100
|
||||
Heavy: 75
|
||||
Concrete: 35
|
||||
Damage: 2000
|
||||
DamageTypes: Prone50Percent, TriggerProne, FireDeath
|
||||
Warhead@3Eff: CreateEffect
|
||||
Explosions: small_napalm
|
||||
ImpactSounds: firebl3.aud
|
||||
|
||||
FLAK-23:
|
||||
ReloadDelay: 10
|
||||
Range: 8c0
|
||||
Report: aacanon3.aud
|
||||
ValidTargets: AirborneActor, Ground, GroundActor
|
||||
Projectile: Bullet
|
||||
Speed: 1c682
|
||||
Blockable: false
|
||||
Warhead: SpreadDamage
|
||||
Spread: 213
|
||||
ValidTargets: AirborneActor, GroundActor
|
||||
Versus:
|
||||
None: 32
|
||||
Wood: 28
|
||||
Light: 28
|
||||
Heavy: 40
|
||||
Concrete: 28
|
||||
Damage: 2500
|
||||
DamageTypes: Prone50Percent, TriggerProne, DefaultDeath
|
||||
Warhead@2Smu: LeaveSmudge
|
||||
SmudgeType: Scorch
|
||||
Warhead@3Eff: CreateEffect
|
||||
Explosions: med_explosion
|
||||
|
||||
SCUD:
|
||||
Range: 7c0
|
||||
ReloadDelay: 280
|
||||
Projectile: Bullet
|
||||
TrailImage: smokey
|
||||
Blockable: false
|
||||
Inaccuracy: 0c426
|
||||
LaunchAngle: 216
|
||||
Warhead@1Dam: SpreadDamage
|
||||
Spread: 853
|
||||
Falloff: 100, 37, 14, 5, 0
|
||||
Versus:
|
||||
None: 100
|
||||
Wood: 90
|
||||
Light: 80
|
||||
Heavy: 70
|
||||
Damage: 50000
|
||||
AffectsParent: true
|
||||
Warhead@3Eff: CreateEffect
|
||||
Explosions: nuke
|
||||
ImpactSounds: kaboom1.aud
|
||||
|
||||
SilencedPPK:
|
||||
Range: 25c0
|
||||
ValidTargets: Infantry, Vehicle, Husk
|
||||
InvalidTargets: Water, Structure, Wall
|
||||
Warhead@1Dam: SpreadDamage
|
||||
ValidTargets: Infantry, Vehicle, Husk
|
||||
Versus:
|
||||
Heavy: 50
|
||||
|
||||
Sniper:
|
||||
Inherits: ^SnipeWeapon
|
||||
ReloadDelay: 70
|
||||
Range: 10c0
|
||||
Warhead@1Dam: SpreadDamage
|
||||
Damage: 14000
|
||||
Reference in New Issue
Block a user