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:
49
mods/d2k/maps/harkonnen-05/harkonnen05-AI.lua
Normal file
49
mods/d2k/maps/harkonnen-05/harkonnen05-AI.lua
Normal file
@@ -0,0 +1,49 @@
|
||||
--[[
|
||||
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.
|
||||
]]
|
||||
|
||||
AttackGroupSize =
|
||||
{
|
||||
easy = 6,
|
||||
normal = 8,
|
||||
hard = 10
|
||||
}
|
||||
|
||||
AttackDelays =
|
||||
{
|
||||
easy = { DateTime.Seconds(4), DateTime.Seconds(7) },
|
||||
normal = { DateTime.Seconds(2), DateTime.Seconds(5) },
|
||||
hard = { DateTime.Seconds(1), DateTime.Seconds(3) }
|
||||
}
|
||||
|
||||
OrdosInfantryTypes = { "light_inf", "light_inf", "light_inf", "trooper", "trooper" }
|
||||
OrdosVehicleTypes = { "raider", "raider", "quad" }
|
||||
OrdosTankType = { "combat_tank_o" }
|
||||
|
||||
ActivateAI = function()
|
||||
IdlingUnits[OrdosMain] = Utils.Concat(Reinforcements.Reinforce(OrdosMain, InitialOrdosReinforcements[1], InitialOrdosPaths[1]), Reinforcements.Reinforce(OrdosMain, InitialOrdosReinforcements[2], InitialOrdosPaths[2]))
|
||||
IdlingUnits[OrdosSmall] = Reinforcements.Reinforce(OrdosSmall, InitialOrdosReinforcements[1], InitialOrdosPaths[3])
|
||||
IdlingUnits[Corrino] = { CSaraukar1, CSaraukar2, CSaraukar3, CSaraukar4, CSaraukar5 }
|
||||
|
||||
DefendAndRepairBase(OrdosMain, OrdosMainBase, 0.75, AttackGroupSize[Difficulty])
|
||||
DefendAndRepairBase(OrdosSmall, OrdosSmallBase, 0.75, AttackGroupSize[Difficulty])
|
||||
DefendAndRepairBase(Corrino, CorrinoBase, 0.75, AttackGroupSize[Difficulty])
|
||||
|
||||
local delay = function() return Utils.RandomInteger(AttackDelays[Difficulty][1], AttackDelays[Difficulty][2] + 1) end
|
||||
local infantryToBuild = function() return { Utils.Random(OrdosInfantryTypes) } end
|
||||
local vehilcesToBuild = function() return { Utils.Random(OrdosVehicleTypes) } end
|
||||
local tanksToBuild = function() return OrdosTankType end
|
||||
local attackThresholdSize = AttackGroupSize[Difficulty] * 2.5
|
||||
|
||||
ProduceUnits(OrdosMain, OBarracks1, delay, infantryToBuild, AttackGroupSize[Difficulty], attackThresholdSize)
|
||||
ProduceUnits(OrdosMain, OLightFactory1, delay, vehilcesToBuild, AttackGroupSize[Difficulty], attackThresholdSize)
|
||||
ProduceUnits(OrdosMain, OHeavyFactory, delay, tanksToBuild, AttackGroupSize[Difficulty], attackThresholdSize)
|
||||
|
||||
ProduceUnits(OrdosSmall, OBarracks3, delay, infantryToBuild, AttackGroupSize[Difficulty], attackThresholdSize)
|
||||
ProduceUnits(OrdosSmall, OLightFactory2, delay, vehilcesToBuild, AttackGroupSize[Difficulty], attackThresholdSize)
|
||||
end
|
||||
285
mods/d2k/maps/harkonnen-05/harkonnen05.lua
Normal file
285
mods/d2k/maps/harkonnen-05/harkonnen05.lua
Normal file
@@ -0,0 +1,285 @@
|
||||
--[[
|
||||
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.
|
||||
]]
|
||||
|
||||
OrdosMainBase = { OConYard, OOutpost, ORefinery1, ORefinery2, OHeavyFactory, OLightFactory1, OHiTechFactory, OGunt1, OGunt2, OGunt3, OGunt4, OBarracks1, OBarracks2, OPower1, OPower2, OPower3, OPower4, OPower5, OPower6, OPower7, OPower8, OPower9 }
|
||||
OrdosSmallBase = { ORefinery3, OBarracks3, OLightFactory2, OGunt5, OGunt6, OPower10, OPower11, OPower12, OPower13, OSilo }
|
||||
CorrinoBase = { CStarport, CPower1, CPower2 }
|
||||
|
||||
BaseAreaTriggers =
|
||||
{
|
||||
{ CPos.New(68, 70), CPos.New(69, 70), CPos.New(70, 70), CPos.New(71, 70) },
|
||||
{ CPos.New(39, 78), CPos.New(39, 79), CPos.New(39, 80), CPos.New(39, 81), CPos.New(43, 68), CPos.New(44, 68), CPos.New(45, 68), CPos.New(46, 68), CPos.New(47, 68), CPos.New(48, 68), CPos.New(49, 68), CPos.New(50, 68), CPos.New(51, 68), CPos.New(52, 68), CPos.New(53, 68), CPos.New(54, 68), CPos.New(55, 68), CPos.New(56, 68), CPos.New(57, 68), CPos.New(58, 68), CPos.New(59, 68), CPos.New(60, 68) }
|
||||
}
|
||||
|
||||
OrdosReinforcements =
|
||||
{
|
||||
easy =
|
||||
{
|
||||
{ "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper" },
|
||||
{ "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" },
|
||||
{ "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" },
|
||||
{ "combat_tank_o", "quad" },
|
||||
{ "combat_tank_o", "raider", "light_inf", "light_inf" },
|
||||
{ "siege_tank", "combat_tank_o", "quad" }
|
||||
},
|
||||
|
||||
normal =
|
||||
{
|
||||
{ "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper" },
|
||||
{ "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" },
|
||||
{ "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" },
|
||||
{ "combat_tank_o", "combat_tank_o" },
|
||||
{ "combat_tank_o", "raider", "raider", "light_inf" },
|
||||
{ "siege_tank", "combat_tank_o", "quad", "quad" },
|
||||
{ "combat_tank_o", "combat_tank_o", "combat_tank_o", "combat_tank_o" }
|
||||
},
|
||||
|
||||
hard =
|
||||
{
|
||||
{ "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "trooper" },
|
||||
{ "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" },
|
||||
{ "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" },
|
||||
{ "combat_tank_o", "combat_tank_o", "quad" },
|
||||
{ "combat_tank_o", "raider", "raider", "raider" },
|
||||
{ "siege_tank", "combat_tank_o", "combat_tank_o", "quad" },
|
||||
{ "combat_tank_o", "combat_tank_o", "combat_tank_o", "combat_tank_o", "combat_tank_o" },
|
||||
{ "trooper", "trooper", "trooper", "trooper", "trooper", "trooper", "quad", "quad", "raider" }
|
||||
}
|
||||
}
|
||||
|
||||
CorrinoStarportReinforcements =
|
||||
{
|
||||
easy = { "trooper", "trooper", "quad", "quad", "trike", "trike", "missile_tank", "missile_tank" },
|
||||
normal = { "trooper", "trooper", "trooper", "quad", "quad", "trike", "trike", "missile_tank", "missile_tank" },
|
||||
hard = { "trooper", "trooper", "trooper", "quad", "quad", "quad", "trike", "trike", "trike", "missile_tank", "missile_tank" }
|
||||
}
|
||||
|
||||
OrdosAttackDelay =
|
||||
{
|
||||
easy = DateTime.Minutes(3),
|
||||
normal = DateTime.Minutes(2) + DateTime.Seconds(20),
|
||||
hard = DateTime.Minutes(1)
|
||||
}
|
||||
|
||||
CorrinoStarportDelay =
|
||||
{
|
||||
easy = DateTime.Minutes(3),
|
||||
normal = DateTime.Minutes(2) + DateTime.Seconds(30),
|
||||
hard = DateTime.Minutes(2)
|
||||
}
|
||||
|
||||
OrdosAttackWaves =
|
||||
{
|
||||
easy = 6,
|
||||
normal = 7,
|
||||
hard = 8
|
||||
}
|
||||
|
||||
OrdosHunters =
|
||||
{
|
||||
{ "combat_tank_o", "combat_tank_o" },
|
||||
{ "missile_tank" }
|
||||
}
|
||||
|
||||
InitialOrdosReinforcements =
|
||||
{
|
||||
{ "trooper", "trooper", "trooper", "trooper", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" },
|
||||
{ "combat_tank_o", "combat_tank_o", "quad", "quad", "raider", "raider" }
|
||||
}
|
||||
|
||||
OrdosPaths =
|
||||
{
|
||||
{ OrdosEntry1.Location, OrdosRally1.Location },
|
||||
{ OrdosEntry2.Location, OrdosRally2.Location },
|
||||
{ OrdosEntry3.Location, OrdosRally3.Location },
|
||||
{ OrdosEntry4.Location, OrdosRally4.Location },
|
||||
{ OrdosEntry5.Location, OrdosRally5.Location },
|
||||
{ OrdosEntry6.Location, OrdosRally6.Location },
|
||||
{ OrdosEntry7.Location, OrdosRally7.Location }
|
||||
}
|
||||
|
||||
InitialOrdosPaths =
|
||||
{
|
||||
{ OrdosEntry8.Location, OrdosRally8.Location },
|
||||
{ OrdosEntry9.Location, OrdosRally9.Location },
|
||||
{ OrdosEntry10.Location, OrdosRally10.Location }
|
||||
}
|
||||
|
||||
OrdosHunterPaths =
|
||||
{
|
||||
{ OrdosEntry11.Location, OrdosEntry11.Location },
|
||||
{ OrdosEntry12.Location, OrdosEntry12.Location },
|
||||
}
|
||||
|
||||
HarkonnenReinforcements =
|
||||
{
|
||||
{ "trooper", "trooper", "trooper", "trooper" },
|
||||
{ "combat_tank_h", "combat_tank_h", "combat_tank_h", "combat_tank_h" }
|
||||
}
|
||||
|
||||
HarkonnenPaths =
|
||||
{
|
||||
{ HarkonnenEntry1.Location, HarkonnenRally1.Location },
|
||||
{ HarkonnenEntry2.Location, HarkonnenRally2.Location }
|
||||
}
|
||||
|
||||
SendStarportReinforcements = function()
|
||||
Trigger.AfterDelay(CorrinoStarportDelay[Difficulty], function()
|
||||
if CStarport.IsDead or CStarport.Owner ~= Corrino then
|
||||
return
|
||||
end
|
||||
|
||||
local units = Reinforcements.ReinforceWithTransport(Corrino, "frigate", CorrinoStarportReinforcements[Difficulty], { CorrinoStarportEntry.Location, CStarport.Location + CVec.New(1, 1) }, { CorrinoStarportExit.Location })[2]
|
||||
Utils.Do(units, function(unit)
|
||||
unit.AttackMove(OrdosAttackLocation)
|
||||
IdleHunt(unit)
|
||||
end)
|
||||
|
||||
SendStarportReinforcements()
|
||||
|
||||
if Harkonnen.IsObjectiveFailed(GuardOutpost) then
|
||||
return
|
||||
end
|
||||
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("imperial-ships-penetrating-defense-grid"), Mentat)
|
||||
end)
|
||||
end
|
||||
|
||||
SendHarkonnenReinforcements = function(delay, number)
|
||||
Trigger.AfterDelay(delay, function()
|
||||
Reinforcements.ReinforceWithTransport(Harkonnen, "carryall.reinforce", HarkonnenReinforcements[number], HarkonnenPaths[number], { HarkonnenPaths[number][1] })
|
||||
Trigger.AfterDelay(DateTime.Seconds(5), function()
|
||||
Media.PlaySpeechNotification(Harkonnen, "Reinforce")
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
OrdosReinforcementNotification = function(currentWave, totalWaves)
|
||||
Trigger.AfterDelay(OrdosAttackDelay[Difficulty], function()
|
||||
if Harkonnen.IsObjectiveFailed(GuardOutpost) or Harkonnen.IsObjectiveCompleted(KillOrdos) then
|
||||
return
|
||||
end
|
||||
|
||||
currentWave = currentWave + 1
|
||||
if currentWave > totalWaves then
|
||||
return
|
||||
end
|
||||
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("enemy-carryall-drop-detected"), Mentat)
|
||||
|
||||
OrdosReinforcementNotification(currentWave, totalWaves)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
Tick = function()
|
||||
if Harkonnen.HasNoRequiredUnits() then
|
||||
OrdosMain.MarkCompletedObjective(KillHarkonnen1)
|
||||
OrdosSmall.MarkCompletedObjective(KillHarkonnen2)
|
||||
Corrino.MarkCompletedObjective(KillHarkonnen3)
|
||||
end
|
||||
|
||||
if OrdosMain.HasNoRequiredUnits() and OrdosSmall.HasNoRequiredUnits() and not Harkonnen.IsObjectiveCompleted(KillOrdos) then
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("ordos-annihilated"), Mentat)
|
||||
Harkonnen.MarkCompletedObjective(KillOrdos)
|
||||
end
|
||||
|
||||
if Corrino.HasNoRequiredUnits() and not Harkonnen.IsObjectiveCompleted(KillCorrino) then
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("emperor-annihilated"), Mentat)
|
||||
Harkonnen.MarkCompletedObjective(KillCorrino)
|
||||
end
|
||||
|
||||
if Harkonnen.IsObjectiveCompleted(KillOrdos) and Harkonnen.IsObjectiveCompleted(KillCorrino) and not Harkonnen.IsObjectiveCompleted(GuardOutpost) then
|
||||
Harkonnen.MarkCompletedObjective(GuardOutpost)
|
||||
end
|
||||
|
||||
if (HOutpost.IsDead or HOutpost.Owner ~= Harkonnen) and not Harkonnen.IsObjectiveFailed(GuardOutpost) then
|
||||
Harkonnen.MarkFailedObjective(GuardOutpost)
|
||||
end
|
||||
|
||||
if DateTime.GameTime % DateTime.Seconds(10) == 0 and LastHarvesterEaten[OrdosMain] then
|
||||
local units = OrdosMain.GetActorsByType("harvester")
|
||||
|
||||
if #units > 0 then
|
||||
LastHarvesterEaten[OrdosMain] = false
|
||||
ProtectHarvester(units[1], OrdosMain, AttackGroupSize[Difficulty])
|
||||
end
|
||||
end
|
||||
|
||||
if DateTime.GameTime % DateTime.Seconds(10) == 0 and LastHarvesterEaten[OrdosSmall] then
|
||||
local units = OrdosSmall.GetActorsByType("harvester")
|
||||
|
||||
if #units > 0 then
|
||||
LastHarvesterEaten[OrdosSmall] = false
|
||||
ProtectHarvester(units[1], OrdosSmall, AttackGroupSize[Difficulty])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
WorldLoaded = function()
|
||||
OrdosMain = Player.GetPlayer("Ordos Main Base")
|
||||
OrdosSmall = Player.GetPlayer("Ordos Small Base")
|
||||
Corrino = Player.GetPlayer("Corrino")
|
||||
Harkonnen = Player.GetPlayer("Harkonnen")
|
||||
|
||||
InitObjectives(Harkonnen)
|
||||
KillOrdos = AddPrimaryObjective(Harkonnen, "destroy-ordos")
|
||||
KillCorrino = AddPrimaryObjective(Harkonnen, "destroy-imperial-forces")
|
||||
GuardOutpost = AddSecondaryObjective(Harkonnen, "keep-modified-outpost-intact")
|
||||
KillHarkonnen1 = AddPrimaryObjective(OrdosMain, "")
|
||||
KillHarkonnen2 = AddPrimaryObjective(OrdosSmall, "")
|
||||
KillHarkonnen3 = AddPrimaryObjective(Corrino, "")
|
||||
|
||||
HOutpost.GrantCondition("modified")
|
||||
|
||||
Camera.Position = HConYard.CenterPosition
|
||||
OrdosAttackLocation = HConYard.Location
|
||||
|
||||
Trigger.OnAllKilledOrCaptured(OrdosMainBase, function()
|
||||
Utils.Do(OrdosMain.GetGroundAttackers(), IdleHunt)
|
||||
end)
|
||||
|
||||
Trigger.OnAllKilledOrCaptured(OrdosSmallBase, function()
|
||||
Utils.Do(OrdosSmall.GetGroundAttackers(), IdleHunt)
|
||||
end)
|
||||
|
||||
Trigger.OnAllKilledOrCaptured(CorrinoBase, function()
|
||||
Utils.Do(Corrino.GetGroundAttackers(), IdleHunt)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(5), function()
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("protect-outpost"), Mentat)
|
||||
end)
|
||||
|
||||
local path = function() return Utils.Random(OrdosPaths) end
|
||||
local waveCondition = function() return Harkonnen.IsObjectiveCompleted(KillOrdos) end
|
||||
local huntFunction = function(unit)
|
||||
unit.AttackMove(OrdosAttackLocation)
|
||||
IdleHunt(unit)
|
||||
end
|
||||
SendCarryallReinforcements(OrdosMain, 0, OrdosAttackWaves[Difficulty], OrdosAttackDelay[Difficulty], path, OrdosReinforcements[Difficulty], waveCondition, huntFunction)
|
||||
OrdosReinforcementNotification(0, OrdosAttackWaves[Difficulty])
|
||||
|
||||
SendStarportReinforcements()
|
||||
|
||||
Actor.Create("upgrade.barracks", true, { Owner = OrdosMain })
|
||||
Actor.Create("upgrade.light", true, { Owner = OrdosMain })
|
||||
Actor.Create("upgrade.heavy", true, { Owner = OrdosMain })
|
||||
Actor.Create("upgrade.barracks", true, { Owner = OrdosSmall })
|
||||
Actor.Create("upgrade.light", true, { Owner = OrdosSmall })
|
||||
Trigger.AfterDelay(0, ActivateAI)
|
||||
|
||||
SendHarkonnenReinforcements(DateTime.Seconds(15), 1)
|
||||
SendHarkonnenReinforcements(DateTime.Seconds(30), 1)
|
||||
SendHarkonnenReinforcements(DateTime.Seconds(35), 2)
|
||||
|
||||
local ordosCondition = function() return Harkonnen.IsObjectiveCompleted(KillOrdos) end
|
||||
TriggerCarryallReinforcements(Harkonnen, OrdosMain, BaseAreaTriggers[1], OrdosHunters[1], OrdosHunterPaths[2], ordosCondition)
|
||||
TriggerCarryallReinforcements(Harkonnen, OrdosMain, BaseAreaTriggers[2], OrdosHunters[2], OrdosHunterPaths[1], ordosCondition)
|
||||
end
|
||||
BIN
mods/d2k/maps/harkonnen-05/map.bin
Normal file
BIN
mods/d2k/maps/harkonnen-05/map.bin
Normal file
Binary file not shown.
2
mods/d2k/maps/harkonnen-05/map.ftl
Normal file
2
mods/d2k/maps/harkonnen-05/map.ftl
Normal file
@@ -0,0 +1,2 @@
|
||||
## rules.yaml
|
||||
briefing = Protect the Outpost at Habbanya to prevent Imperial interference. Rush ground troops through the mountain passes and secure the Outpost. Once secured, turn on the Ordos and crush them.
|
||||
BIN
mods/d2k/maps/harkonnen-05/map.png
Normal file
BIN
mods/d2k/maps/harkonnen-05/map.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 148 KiB |
520
mods/d2k/maps/harkonnen-05/map.yaml
Normal file
520
mods/d2k/maps/harkonnen-05/map.yaml
Normal file
@@ -0,0 +1,520 @@
|
||||
MapFormat: 12
|
||||
|
||||
RequiresMod: d2k
|
||||
|
||||
Title: Harkonnen 05
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
Tileset: ARRAKIS
|
||||
|
||||
MapSize: 74,84
|
||||
|
||||
Bounds: 2,2,70,80
|
||||
|
||||
Visibility: MissionSelector
|
||||
|
||||
Categories: Campaign
|
||||
|
||||
LockPreview: True
|
||||
|
||||
Players:
|
||||
PlayerReference@Neutral:
|
||||
Name: Neutral
|
||||
OwnsWorld: True
|
||||
NonCombatant: True
|
||||
PlayerReference@Creeps:
|
||||
Name: Creeps
|
||||
NonCombatant: True
|
||||
Enemies: Harkonnen, Ordos Main Base, Ordos Small Base, Corrino
|
||||
PlayerReference@Harkonnen:
|
||||
Name: Harkonnen
|
||||
Playable: True
|
||||
LockFaction: True
|
||||
Faction: harkonnen
|
||||
LockColor: True
|
||||
Color: D64A42
|
||||
Enemies: Ordos Main Base, Ordos Small Base, Corrino, Creeps
|
||||
PlayerReference@Ordos Main Base:
|
||||
Name: Ordos Main Base
|
||||
LockFaction: True
|
||||
Faction: ordos
|
||||
LockColor: True
|
||||
Color: 5A9473
|
||||
Allies: Ordos Small Base, Corrino
|
||||
Enemies: Harkonnen, Creeps
|
||||
Bot: campaign
|
||||
PlayerReference@Ordos Small Base:
|
||||
Name: Ordos Small Base
|
||||
LockFaction: True
|
||||
Faction: ordos
|
||||
LockColor: True
|
||||
Color: 5A9473
|
||||
Allies: Ordos Main Base, Corrino
|
||||
Enemies: Harkonnen, Creeps
|
||||
Bot: campaign
|
||||
PlayerReference@Corrino:
|
||||
Name: Corrino
|
||||
LockFaction: True
|
||||
Faction: corrino
|
||||
LockColor: True
|
||||
Color: 73007B
|
||||
Allies: Ordos Main Base, Ordos Small Base
|
||||
Enemies: Harkonnen, Creeps
|
||||
Bot: campaign
|
||||
|
||||
Actors:
|
||||
Actor0: wall
|
||||
Location: 69,10
|
||||
Owner: Ordos Main Base
|
||||
Actor1: wall
|
||||
Location: 70,10
|
||||
Owner: Ordos Main Base
|
||||
Actor2: wall
|
||||
Location: 71,10
|
||||
Owner: Ordos Main Base
|
||||
Actor3: wall
|
||||
Location: 64,11
|
||||
Owner: Ordos Main Base
|
||||
Actor4: wall
|
||||
Location: 65,11
|
||||
Owner: Ordos Main Base
|
||||
Actor5: wall
|
||||
Location: 66,11
|
||||
Owner: Ordos Main Base
|
||||
Actor6: wall
|
||||
Location: 67,11
|
||||
Owner: Ordos Main Base
|
||||
Actor7: wall
|
||||
Location: 68,11
|
||||
Owner: Ordos Main Base
|
||||
Actor8: wall
|
||||
Location: 69,11
|
||||
Owner: Ordos Main Base
|
||||
OGunt1: medium_gun_turret
|
||||
Location: 59,13
|
||||
Owner: Ordos Main Base
|
||||
CSardaukar1: sardaukar
|
||||
Location: 69,13
|
||||
Owner: Corrino
|
||||
CSardaukar2: sardaukar
|
||||
Location: 70,13
|
||||
Owner: Corrino
|
||||
Actor12: spicebloom.spawnpoint
|
||||
Location: 32,14
|
||||
Owner: Neutral
|
||||
Actor13: wall
|
||||
Location: 59,14
|
||||
Owner: Ordos Main Base
|
||||
CStarport: starport
|
||||
Location: 67,14
|
||||
Owner: Corrino
|
||||
Actor15: wall
|
||||
Location: 59,15
|
||||
Owner: Ordos Main Base
|
||||
OHeavyFactory: heavy_factory
|
||||
Location: 61,15
|
||||
Owner: Ordos Main Base
|
||||
CSardaukar3: sardaukar
|
||||
Location: 65,15
|
||||
Owner: Corrino
|
||||
CSardaukar4: sardaukar
|
||||
Location: 71,15
|
||||
Owner: Corrino
|
||||
Actor19: wall
|
||||
Location: 59,16
|
||||
Owner: Ordos Main Base
|
||||
Actor20: wall
|
||||
Location: 59,17
|
||||
Owner: Ordos Main Base
|
||||
CSardaukar5: sardaukar
|
||||
Location: 66,17
|
||||
Owner: Corrino
|
||||
Actor22: wall
|
||||
Location: 57,18
|
||||
Owner: Ordos Main Base
|
||||
Actor23: wall
|
||||
Location: 58,18
|
||||
Owner: Ordos Main Base
|
||||
Actor24: wall
|
||||
Location: 59,18
|
||||
Owner: Ordos Main Base
|
||||
Actor25: light_inf
|
||||
Location: 65,18
|
||||
Owner: Ordos Main Base
|
||||
CPower1: wind_trap
|
||||
Location: 67,18
|
||||
Owner: Corrino
|
||||
CPower2: wind_trap
|
||||
Location: 69,18
|
||||
Owner: Corrino
|
||||
Actor28: wind_trap
|
||||
Location: 4,19
|
||||
Owner: Harkonnen
|
||||
Actor29: spicebloom.spawnpoint
|
||||
Location: 47,19
|
||||
Owner: Neutral
|
||||
OOutpost: outpost
|
||||
Location: 58,19
|
||||
Owner: Ordos Main Base
|
||||
OConYard: construction_yard
|
||||
Location: 63,19
|
||||
Owner: Ordos Main Base
|
||||
Actor32: light_inf
|
||||
Location: 3,20
|
||||
Owner: Harkonnen
|
||||
Actor33: light_inf
|
||||
Location: 6,20
|
||||
Owner: Harkonnen
|
||||
OPower1: wind_trap
|
||||
Location: 55,20
|
||||
Owner: Ordos Main Base
|
||||
Actor35: trooper
|
||||
Location: 61,20
|
||||
Owner: Ordos Main Base
|
||||
Actor36: combat_tank_h
|
||||
Location: 7,21
|
||||
Owner: Harkonnen
|
||||
ORefinery1: refinery
|
||||
Location: 68,21
|
||||
Owner: Ordos Main Base
|
||||
HConYard: construction_yard
|
||||
Location: 4,23
|
||||
Owner: Harkonnen
|
||||
Actor39: wind_trap
|
||||
Location: 8,23
|
||||
Owner: Harkonnen
|
||||
OLightFactory1: light_factory
|
||||
Location: 57,23
|
||||
Owner: Ordos Main Base
|
||||
OPower2: wind_trap
|
||||
Location: 61,23
|
||||
Owner: Ordos Main Base
|
||||
OBarracks1: barracks
|
||||
Location: 63,23
|
||||
Owner: Ordos Main Base
|
||||
OPower3: wind_trap
|
||||
Location: 67,24
|
||||
Owner: Ordos Main Base
|
||||
OPower4: wind_trap
|
||||
Location: 69,24
|
||||
Owner: Ordos Main Base
|
||||
OPower5: wind_trap
|
||||
Location: 54,26
|
||||
Owner: Ordos Main Base
|
||||
Actor46: light_inf
|
||||
Location: 8,27
|
||||
Owner: Harkonnen
|
||||
Actor47: spicebloom.spawnpoint
|
||||
Location: 19,27
|
||||
Owner: Neutral
|
||||
OHiTechFactory: high_tech_factory
|
||||
Location: 57,27
|
||||
Owner: Ordos Main Base
|
||||
Actor49: trooper
|
||||
Location: 61,27
|
||||
Owner: Ordos Main Base
|
||||
ORefinery2: refinery
|
||||
Location: 63,27
|
||||
Owner: Ordos Main Base
|
||||
Actor51: carryall
|
||||
Location: 66,27
|
||||
Owner: Ordos Main Base
|
||||
Actor52: light_inf
|
||||
Location: 6,28
|
||||
Owner: Harkonnen
|
||||
OPower6: wind_trap
|
||||
Location: 67,28
|
||||
Owner: Ordos Main Base
|
||||
OPower7: wind_trap
|
||||
Location: 69,28
|
||||
Owner: Ordos Main Base
|
||||
Actor55: light_inf
|
||||
Location: 3,29
|
||||
Owner: Harkonnen
|
||||
Actor56: harvester
|
||||
Location: 65,30
|
||||
Owner: Ordos Main Base
|
||||
OBarracks2: barracks
|
||||
Location: 57,31
|
||||
Owner: Ordos Main Base
|
||||
Actor58: combat_tank_o
|
||||
Location: 61,31
|
||||
Owner: Ordos Main Base
|
||||
Actor59: light_inf
|
||||
Location: 63,31
|
||||
Owner: Ordos Main Base
|
||||
OPower8: wind_trap
|
||||
Location: 67,31
|
||||
Owner: Ordos Main Base
|
||||
OPower9: wind_trap
|
||||
Location: 69,31
|
||||
Owner: Ordos Main Base
|
||||
Actor62: wormspawner
|
||||
Location: 48,33
|
||||
Owner: Creeps
|
||||
Actor63: combat_tank_o
|
||||
Location: 59,33
|
||||
Owner: Ordos Main Base
|
||||
Actor64: combat_tank_o
|
||||
Location: 66,33
|
||||
Owner: Ordos Main Base
|
||||
Actor65: wall
|
||||
Location: 57,35
|
||||
Owner: Ordos Main Base
|
||||
Actor66: wall
|
||||
Location: 58,35
|
||||
Owner: Ordos Main Base
|
||||
Actor67: wall
|
||||
Location: 59,35
|
||||
Owner: Ordos Main Base
|
||||
Actor68: wall
|
||||
Location: 60,35
|
||||
Owner: Ordos Main Base
|
||||
OGunt2: medium_gun_turret
|
||||
Location: 61,35
|
||||
Owner: Ordos Main Base
|
||||
Actor70: combat_tank_o
|
||||
Location: 64,35
|
||||
Owner: Ordos Main Base
|
||||
OGunt3: medium_gun_turret
|
||||
Location: 66,35
|
||||
Owner: Ordos Main Base
|
||||
Actor72: wall
|
||||
Location: 67,35
|
||||
Owner: Ordos Main Base
|
||||
Actor73: wall
|
||||
Location: 68,35
|
||||
Owner: Ordos Main Base
|
||||
Actor74: wall
|
||||
Location: 69,35
|
||||
Owner: Ordos Main Base
|
||||
Actor75: wall
|
||||
Location: 70,35
|
||||
Owner: Ordos Main Base
|
||||
Actor76: wall
|
||||
Location: 57,36
|
||||
Owner: Ordos Main Base
|
||||
Actor77: wall
|
||||
Location: 70,36
|
||||
Owner: Ordos Main Base
|
||||
Actor78: wall
|
||||
Location: 57,37
|
||||
Owner: Ordos Main Base
|
||||
Actor79: wall
|
||||
Location: 70,37
|
||||
Owner: Ordos Main Base
|
||||
Actor80: wall
|
||||
Location: 71,37
|
||||
Owner: Ordos Main Base
|
||||
Actor81: spicebloom.spawnpoint
|
||||
Location: 25,38
|
||||
Owner: Neutral
|
||||
OGunt4: medium_gun_turret
|
||||
Location: 56,38
|
||||
Owner: Ordos Main Base
|
||||
Actor83: wall
|
||||
Location: 57,38
|
||||
Owner: Ordos Main Base
|
||||
Actor84: wall
|
||||
Location: 10,43
|
||||
Owner: Harkonnen
|
||||
Actor85: wall
|
||||
Location: 12,43
|
||||
Owner: Harkonnen
|
||||
Actor86: wall
|
||||
Location: 10,44
|
||||
Owner: Harkonnen
|
||||
Actor87: medium_gun_turret
|
||||
Location: 11,44
|
||||
Owner: Harkonnen
|
||||
Actor88: wall
|
||||
Location: 12,44
|
||||
Owner: Harkonnen
|
||||
Actor89: spicebloom.spawnpoint
|
||||
Location: 22,45
|
||||
Owner: Neutral
|
||||
Actor90: spicebloom.spawnpoint
|
||||
Location: 63,45
|
||||
Owner: Neutral
|
||||
Actor91: wall
|
||||
Location: 5,47
|
||||
Owner: Harkonnen
|
||||
Actor92: wall
|
||||
Location: 6,47
|
||||
Owner: Harkonnen
|
||||
Actor93: medium_gun_turret
|
||||
Location: 6,48
|
||||
Owner: Harkonnen
|
||||
Actor94: spicebloom.spawnpoint
|
||||
Location: 27,48
|
||||
Owner: Neutral
|
||||
Actor95: wall
|
||||
Location: 5,49
|
||||
Owner: Harkonnen
|
||||
Actor96: wall
|
||||
Location: 6,49
|
||||
Owner: Harkonnen
|
||||
Actor97: spicebloom.spawnpoint
|
||||
Location: 32,56
|
||||
Owner: Neutral
|
||||
Actor98: spicebloom.spawnpoint
|
||||
Location: 66,62
|
||||
Owner: Neutral
|
||||
Actor99: spicebloom.spawnpoint
|
||||
Location: 41,64
|
||||
Owner: Neutral
|
||||
Actor100: spicebloom.spawnpoint
|
||||
Location: 38,66
|
||||
Owner: Neutral
|
||||
Actor101: spicebloom.spawnpoint
|
||||
Location: 5,69
|
||||
Owner: Neutral
|
||||
OSilo: silo
|
||||
Location: 13,72
|
||||
Owner: Ordos Small Base
|
||||
OPower10: wind_trap
|
||||
Location: 15,72
|
||||
Owner: Ordos Small Base
|
||||
OLightFactory2: light_factory
|
||||
Location: 11,74
|
||||
Owner: Ordos Small Base
|
||||
OPower11: wind_trap
|
||||
Location: 15,75
|
||||
Owner: Ordos Small Base
|
||||
OGunt5: medium_gun_turret
|
||||
Location: 9,76
|
||||
Owner: Ordos Small Base
|
||||
Actor107: wall
|
||||
Location: 10,76
|
||||
Owner: Ordos Small Base
|
||||
Actor108: wall
|
||||
Location: 9,77
|
||||
Owner: Ordos Small Base
|
||||
OBarracks3: barracks
|
||||
Location: 7,78
|
||||
Owner: Ordos Small Base
|
||||
ORefinery3: refinery
|
||||
Location: 10,78
|
||||
Owner: Ordos Small Base
|
||||
Actor111: carryall
|
||||
Location: 13,78
|
||||
Owner: Ordos Small Base
|
||||
OPower12: wind_trap
|
||||
Location: 14,78
|
||||
Owner: Ordos Small Base
|
||||
OPower13: wind_trap
|
||||
Location: 16,78
|
||||
Owner: Ordos Small Base
|
||||
Actor114: wall
|
||||
Location: 19,78
|
||||
Owner: Ordos Small Base
|
||||
Actor115: spicebloom.spawnpoint
|
||||
Location: 32,78
|
||||
Owner: Neutral
|
||||
OGunt6: medium_gun_turret
|
||||
Location: 19,79
|
||||
Owner: Ordos Small Base
|
||||
Actor117: harvester
|
||||
Location: 13,80
|
||||
Owner: Ordos Small Base
|
||||
Actor118: wall
|
||||
Location: 19,80
|
||||
Owner: Ordos Small Base
|
||||
OrdosRally10: waypoint
|
||||
Owner: Neutral
|
||||
Location: 4,78
|
||||
OrdosEntry10: waypoint
|
||||
Owner: Neutral
|
||||
Location: 4,81
|
||||
CorrinoStarportEntry: waypoint
|
||||
Owner: Neutral
|
||||
Location: 71,15
|
||||
CorrinoStarportExit: waypoint
|
||||
Owner: Neutral
|
||||
Location: 2,15
|
||||
OrdosRally8: waypoint
|
||||
Owner: Neutral
|
||||
Location: 63,36
|
||||
OrdosEntry8: waypoint
|
||||
Owner: Neutral
|
||||
Location: 71,34
|
||||
OrdosRally9: waypoint
|
||||
Owner: Neutral
|
||||
Location: 63,33
|
||||
OrdosEntry9: waypoint
|
||||
Owner: Neutral
|
||||
Location: 71,30
|
||||
OrdosRally11: waypoint
|
||||
Owner: Neutral
|
||||
Location: 69,76
|
||||
OrdosEntry11: waypoint
|
||||
Owner: Neutral
|
||||
Location: 71,76
|
||||
HOutpost: outpost
|
||||
Owner: Harkonnen
|
||||
Location: 6,40
|
||||
OrdosRally12: waypoint
|
||||
Owner: Neutral
|
||||
Location: 28,80
|
||||
OrdosEntry12: waypoint
|
||||
Owner: Neutral
|
||||
Location: 28,81
|
||||
OrdosRally1: waypoint
|
||||
Owner: Neutral
|
||||
Location: 29,67
|
||||
OrdosEntry1: waypoint
|
||||
Owner: Neutral
|
||||
Location: 29,81
|
||||
OrdosRally2: waypoint
|
||||
Owner: Neutral
|
||||
Location: 7,67
|
||||
OrdosEntry2: waypoint
|
||||
Owner: Neutral
|
||||
Location: 2,67
|
||||
OrdosRally3: waypoint
|
||||
Owner: Neutral
|
||||
Location: 14,65
|
||||
OrdosEntry3: waypoint
|
||||
Owner: Neutral
|
||||
Location: 2,65
|
||||
OrdosRally4: waypoint
|
||||
Owner: Neutral
|
||||
Location: 32,58
|
||||
OrdosEntry4: waypoint
|
||||
Owner: Neutral
|
||||
Location: 2,58
|
||||
OrdosRally5: waypoint
|
||||
Owner: Neutral
|
||||
Location: 22,30
|
||||
OrdosEntry5: waypoint
|
||||
Owner: Neutral
|
||||
Location: 22,2
|
||||
OrdosRally6: waypoint
|
||||
Owner: Neutral
|
||||
Location: 30,8
|
||||
OrdosEntry6: waypoint
|
||||
Owner: Neutral
|
||||
Location: 30,2
|
||||
OrdosRally7: waypoint
|
||||
Owner: Neutral
|
||||
Location: 31,4
|
||||
OrdosEntry7: waypoint
|
||||
Owner: Neutral
|
||||
Location: 31,2
|
||||
HarkonnenRally1: waypoint
|
||||
Owner: Neutral
|
||||
Location: 11,19
|
||||
HarkonnenEntry1: waypoint
|
||||
Owner: Neutral
|
||||
Location: 2,19
|
||||
HarkonnenRally2: waypoint
|
||||
Owner: Neutral
|
||||
Location: 4,29
|
||||
HarkonnenEntry2: waypoint
|
||||
Owner: Neutral
|
||||
Location: 2,29
|
||||
|
||||
Rules: d2k|rules/campaign-rules.yaml, d2k|rules/campaign-tooltips.yaml, d2k|rules/campaign-palettes.yaml, rules.yaml
|
||||
|
||||
FluentMessages: d2k|fluent/lua.ftl, d2k|fluent/campaign.ftl, map.ftl
|
||||
82
mods/d2k/maps/harkonnen-05/rules.yaml
Normal file
82
mods/d2k/maps/harkonnen-05/rules.yaml
Normal file
@@ -0,0 +1,82 @@
|
||||
Player:
|
||||
PlayerResources:
|
||||
DefaultCash: 6000
|
||||
|
||||
World:
|
||||
LuaScript:
|
||||
Scripts: campaign.lua, utils.lua, harkonnen05.lua, harkonnen05-AI.lua
|
||||
MissionData:
|
||||
Briefing: briefing
|
||||
BriefingVideo: H_BR05_E.VQA
|
||||
MapOptions:
|
||||
TechLevel: medium
|
||||
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: easy
|
||||
|
||||
^Palettes:
|
||||
IndexedPlayerPalette:
|
||||
PlayerIndex:
|
||||
Ordos Main Base: 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160
|
||||
Ordos Small Base: 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160
|
||||
FixedPlayerColorShift:
|
||||
BasePalette: player
|
||||
PlayerIndex:
|
||||
Ordos Main Base: 0.060, -0.275, 1, 0.32, 0.34
|
||||
Ordos Small Base: 0.060, -0.275, 1, 0.32, 0.34
|
||||
|
||||
carryall.reinforce:
|
||||
Cargo:
|
||||
MaxWeight: 25
|
||||
|
||||
frigate:
|
||||
Aircraft:
|
||||
LandableTerrainTypes: Sand, Rock, Transition, Spice, SpiceSand, Dune, Concrete
|
||||
|
||||
concreteb:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
large_gun_turret:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
research_centre:
|
||||
Buildable:
|
||||
Prerequisites: outpost, heavy_factory, upgrade.heavy
|
||||
|
||||
missile_tank:
|
||||
Buildable:
|
||||
Prerequisites: ~heavy.missile_tank, upgrade.heavy, research_centre
|
||||
|
||||
siege_tank:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
mpsardaukar:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
stealth_raider:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
upgrade.conyard:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
outpost:
|
||||
ExternalCondition@lua:
|
||||
Condition: modified
|
||||
Tooltip:
|
||||
RequiresCondition: !modified
|
||||
Tooltip@Modified:
|
||||
Name: actor-outpost-modified-name
|
||||
RequiresCondition: modified
|
||||
ShowOwnerRow: false
|
||||
Reference in New Issue
Block a user