Merge pull request #13063 from MustaphaTR/d2k-ordos-4

D2K - Add Ordos Mission 4
This commit is contained in:
reaperrr
2017-04-12 20:30:25 +02:00
committed by GitHub
7 changed files with 938 additions and 0 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

View File

@@ -0,0 +1,526 @@
MapFormat: 11
RequiresMod: d2k
Title: Ordos 04
Author: Westwood Studios
Tileset: ARRAKIS
MapSize: 68,68
Bounds: 2,2,64,64
Visibility: MissionSelector
Categories: Campaign
LockPreview: True
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: Random
PlayerReference@Creeps:
Name: Creeps
NonCombatant: True
Faction: Random
Enemies: Ordos, Harkonnen, Smugglers
PlayerReference@Ordos:
Name: Ordos
Playable: True
LockFaction: True
Faction: ordos
LockColor: True
Color: B3EAA5
Enemies: Harkonnen, Smugglers, Creeps
PlayerReference@Harkonnen:
Name: Harkonnen
LockFaction: True
Faction: harkonnen
LockColor: True
Color: FE0000
Allies: Smugglers
Enemies: Ordos
PlayerReference@Smugglers:
Name: Smugglers
LockFaction: True
Faction: smuggler
LockColor: True
Color: 542209
Allies: Harkonnen
Enemies: Ordos
Actors:
Actor0: wall
Location: 38,2
Owner: Harkonnen
Actor1: wall
Location: 42,2
Owner: Smugglers
HGunTurret1: medium_gun_turret
Location: 38,3
Owner: Harkonnen
TurretFacing: 0
Actor3: wall
Location: 42,3
Owner: Smugglers
SLightFactory: light_factory
Location: 44,3
Owner: Smugglers
Actor5: wall
Location: 42,4
Owner: Smugglers
Actor6: wall
Location: 42,5
Owner: Smugglers
Actor7: wall
Location: 42,6
Owner: Smugglers
Actor8: light_inf
Location: 43,6
Owner: Smugglers
HGunTurret2: medium_gun_turret
Location: 38,7
Owner: Harkonnen
TurretFacing: 0
Actor10: trooper
Location: 39,7
Owner: Harkonnen
Actor11: wall
Location: 42,7
Owner: Smugglers
Actor12: wall
Location: 46,7
Owner: Smugglers
Actor13: wall
Location: 47,7
Owner: Smugglers
Actor14: wall
Location: 48,7
Owner: Smugglers
Actor15: wall
Location: 49,7
Owner: Smugglers
Actor16: wall
Location: 50,7
Owner: Smugglers
Actor17: light_inf
Location: 51,7
Owner: Smugglers
Actor18: wall
Location: 38,8
Owner: Harkonnen
Actor19: wall
Location: 42,8
Owner: Smugglers
SPower1: wind_trap
Location: 44,8
Owner: Smugglers
Actor21: wall
Location: 46,8
Owner: Smugglers
SOutpost: outpost
Location: 47,8
Owner: Smugglers
Actor23: wall
Location: 50,8
Owner: Smugglers
Actor24: wall
Location: 38,9
Owner: Harkonnen
Actor25: combat_tank_h
Location: 39,9
Owner: Harkonnen
Actor26: wall
Location: 42,9
Owner: Smugglers
Actor27: wall
Location: 46,9
Owner: Smugglers
Actor28: wall
Location: 50,9
Owner: Smugglers
Actor29: wall
Location: 29,10
Owner: Harkonnen
Actor30: wall
Location: 30,10
Owner: Harkonnen
Actor31: wall
Location: 31,10
Owner: Harkonnen
Actor32: wall
Location: 32,10
Owner: Harkonnen
Actor33: wall
Location: 33,10
Owner: Harkonnen
Actor34: wall
Location: 34,10
Owner: Harkonnen
Actor35: wall
Location: 35,10
Owner: Harkonnen
Actor36: wall
Location: 36,10
Owner: Harkonnen
Actor37: wall
Location: 37,10
Owner: Harkonnen
Actor38: wall
Location: 38,10
Owner: Harkonnen
SGunTurret1: medium_gun_turret
Location: 42,10
Owner: Smugglers
TurretFacing: 0
Actor40: wall
Location: 43,10
Owner: Smugglers
Actor41: wall
Location: 46,10
Owner: Smugglers
Actor42: wall
Location: 50,10
Owner: Smugglers
Actor43: spicebloom.spawnpoint
Location: 61,10
Owner: Neutral
Actor44: wall
Location: 28,11
Owner: Harkonnen
Actor45: wall
Location: 29,11
Owner: Harkonnen
Actor46: harvester
Location: 40,11
Owner: Harkonnen
Actor47: wall
Location: 46,11
Owner: Smugglers
Actor48: wall
Location: 47,11
Owner: Smugglers
Actor49: wall
Location: 48,11
Owner: Smugglers
Actor50: wall
Location: 49,11
Owner: Smugglers
Actor51: wall
Location: 50,11
Owner: Smugglers
Actor52: wall
Location: 28,12
Owner: Harkonnen
Actor53: wall
Location: 27,13
Owner: Harkonnen
Actor54: wall
Location: 28,13
Owner: Harkonnen
HBarracks: barracks
Location: 29,13
Owner: Harkonnen
HHeavyFactory: heavy_factory
Location: 31,13
Owner: Harkonnen
HRefinery: refinery
Location: 35,13
Owner: Harkonnen
SGunTurret2: medium_gun_turret
Location: 42,13
Owner: Smugglers
TurretFacing: 0
Actor59: wall
Location: 43,13
Owner: Smugglers
SPower2: wind_trap
Location: 44,13
Owner: Smugglers
SHeavyFactory: heavy_factory
Location: 46,13
Owner: Smugglers
SPower3: wind_trap
Location: 49,13
Owner: Smugglers
SBarracks: barracks
Location: 52,13
Owner: Smugglers
Actor64: wall
Location: 42,14
Owner: Smugglers
Actor65: wall
Location: 42,15
Owner: Smugglers
Actor66: wall
Location: 42,16
Owner: Smugglers
Actor67: light_inf
Location: 43,16
Owner: Smugglers
Actor68: wall
Location: 42,17
Owner: Smugglers
Actor69: wall
Location: 43,17
Owner: Smugglers
Actor70: wall
Location: 44,17
Owner: Smugglers
Actor71: wall
Location: 45,17
Owner: Smugglers
Actor72: wall
Location: 46,17
Owner: Smugglers
Actor73: wall
Location: 47,17
Owner: Smugglers
Actor74: wall
Location: 48,17
Owner: Smugglers
HLightFactory: light_factory
Location: 39,18
Owner: Harkonnen
HConyard: construction_yard
Location: 44,18
Owner: Harkonnen
Actor83: spicebloom.spawnpoint
Location: 6,19
Owner: Neutral
Actor84: spicebloom.spawnpoint
Location: 18,20
Owner: Neutral
Actor85: wall
Location: 56,20
Owner: Smugglers
SGunTurret3: medium_gun_turret
Location: 57,20
Owner: Smugglers
TurretFacing: 0
HPower1: wind_trap
Location: 44,21
Owner: Harkonnen
HPower2: wind_trap
Location: 46,21
Owner: Harkonnen
SGunTurret4: medium_gun_turret
Location: 63,21
Owner: Smugglers
TurretFacing: 0
Actor90: wall
Location: 64,21
Owner: Smugglers
Actor91: wall
Location: 65,21
Owner: Smugglers
Actor92: spicebloom.spawnpoint
Location: 23,24
Owner: Neutral
HGunTurret3: wind_trap
Location: 44,24
Owner: Harkonnen
HPower3: wind_trap
Location: 46,24
Owner: Harkonnen
Actor95: wall
Location: 46,29
Owner: Harkonnen
HGunTurret4: medium_gun_turret
Location: 47,29
Owner: Harkonnen
TurretFacing: 0
Actor97: wall
Location: 48,29
Owner: Harkonnen
Actor98: spicebloom.spawnpoint
Location: 53,30
Owner: Neutral
Actor99: combat_tank_h
Location: 14,31
Owner: Harkonnen
Actor100: wormspawner
Location: 2,32
Owner: Creeps
Actor101: wall
Location: 10,32
Owner: Harkonnen
HGunTurret5: medium_gun_turret
Location: 11,32
Owner: Harkonnen
TurretFacing: 0
Actor103: light_inf
Location: 12,32
Owner: Harkonnen
Actor104: light_inf
Location: 16,32
Owner: Harkonnen
Actor105: wall
Location: 10,33
Owner: Harkonnen
Actor106: wall
Location: 15,33
Owner: Harkonnen
Actor107: wall
Location: 10,34
Owner: Harkonnen
Actor108: wall
Location: 15,34
Owner: Harkonnen
Actor109: wall
Location: 16,34
Owner: Harkonnen
Actor110: wall
Location: 16,35
Owner: Harkonnen
Actor111: wall
Location: 16,36
Owner: Harkonnen
Actor112: wall
Location: 17,36
Owner: Harkonnen
Actor113: trike
Location: 37,39
Owner: Harkonnen
Actor114: trike
Location: 39,39
Owner: Harkonnen
Actor115: trike
Location: 41,39
Owner: Harkonnen
Actor116: spicebloom.spawnpoint
Location: 7,40
Owner: Neutral
Actor117: wall
Location: 37,40
Owner: Harkonnen
Actor118: wall
Location: 38,40
Owner: Harkonnen
Actor119: light_inf
Location: 42,40
Owner: Harkonnen
Actor120: wall
Location: 37,41
Owner: Harkonnen
Actor121: wall
Location: 42,41
Owner: Harkonnen
Actor122: wall
Location: 43,41
Owner: Harkonnen
Actor123: wall
Location: 37,42
Owner: Harkonnen
Actor124: wall
Location: 43,42
Owner: Harkonnen
Actor125: wall
Location: 43,43
Owner: Harkonnen
Actor126: spicebloom.spawnpoint
Location: 32,49
Owner: Neutral
Actor127: spicebloom.spawnpoint
Location: 59,54
Owner: Neutral
Actor128: spicebloom.spawnpoint
Location: 5,58
Owner: Neutral
Actor129: raider
Location: 64,58
Owner: Ordos
Actor130: light_inf
Location: 65,58
Owner: Ordos
Actor131: light_inf
Location: 63,59
Owner: Ordos
Actor132: light_inf
Location: 61,60
Owner: Ordos
Actor133: combat_tank_o
Location: 64,60
Owner: Ordos
Actor134: combat_tank_o
Location: 63,61
Owner: Ordos
Actor135: spicebloom.spawnpoint
Location: 26,62
Owner: Neutral
Actor136: raider
Location: 60,62
Owner: Ordos
OConyard: construction_yard
Location: 62,62
Owner: Ordos
Actor138: raider
Location: 60,63
Owner: Ordos
Actor139: light_inf
Location: 60,65
Owner: Ordos
HarkonnenRally1: waypoint
Owner: Neutral
Location: 11,33
HarkonnenEntry1: waypoint
Owner: Neutral
Location: 2,33
HarkonnenRally2: waypoint
Owner: Neutral
Location: 31,29
HarkonnenEntry2: waypoint
Owner: Neutral
Location: 31,2
HarkonnenRally3: waypoint
Owner: Neutral
Location: 44,32
HarkonnenEntry3: waypoint
Owner: Neutral
Location: 65,32
HarkonnenRally4: waypoint
Owner: Neutral
Location: 40,6
HarkonnenEntry4: waypoint
Owner: Neutral
Location: 40,2
SmugglerRally: waypoint
Owner: Neutral
Location: 53,12
SmugglerEntry: waypoint
Owner: Neutral
Location: 53,2
OrdosRally: waypoint
Owner: Neutral
Location: 37,59
OrdosEntry: waypoint
Owner: Neutral
Location: 37,65
Actor156: wall
Owner: Smugglers
Location: 50,20
Actor157: wall
Owner: Smugglers
Location: 49,20
Actor158: wall
Owner: Smugglers
Location: 51,20
Actor153: wind_trap
Owner: Smugglers
Location: 50,17
Actor150: wall
Owner: Smugglers
Location: 49,17
Actor151: wall
Owner: Smugglers
Location: 49,18
Actor152: wall
Owner: Smugglers
Location: 49,19
Rules: d2k|rules/campaign-rules.yaml, rules.yaml

View File

@@ -0,0 +1,180 @@
IdlingUnits =
{
Harkonnen = { },
Smugglers = { }
}
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) }
}
EnemyInfantryTypes = { "light_inf", "light_inf", "light_inf", "trooper", "trooper" }
HarkonnenVehicleTypes = { "trike", "trike", "quad" }
HarkonnenTankType = { "combat_tank_h" }
SmugglerVehicleTypes = { "raider", "raider", "quad" }
SmugglerTankType = { "combat_tank_o" }
IsAttacking =
{
Harkonnen = false,
Smugglers = false
}
AttackOnGoing =
{
Harkonnen = false,
Smugglers = false
}
HoldProduction =
{
Harkonnen = false,
Smugglers = false
}
HarvesterKilled =
{
Harkonnen = true,
Smugglers = true
}
IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
SetupAttackGroup = function(house)
local units = { }
for i = 0, AttackGroupSize[Difficulty], 1 do
if #IdlingUnits[house.Name] == 0 then
return units
end
local number = Utils.RandomInteger(1, #IdlingUnits[house.Name])
if IdlingUnits[house.Name][number] and not IdlingUnits[house.Name][number].IsDead then
units[i] = IdlingUnits[house.Name][number]
table.remove(IdlingUnits[house.Name], number)
end
end
return units
end
SendAttack = function(house)
if IsAttacking[house.Name] then
return
end
IsAttacking[house.Name] = true
HoldProduction[house.Name] = true
local units = SetupAttackGroup(house)
Utils.Do(units, function(unit)
IdleHunt(unit)
end)
Trigger.OnAllRemovedFromWorld(units, function()
IsAttacking[house.Name] = false
HoldProduction[house.Name] = false
end)
end
ProtectHarvester = function(unit, house)
DefendActor(unit, house)
Trigger.OnKilled(unit, function() HarvesterKilled[house.Name] = true end)
end
DefendActor = function(unit, house)
Trigger.OnDamaged(unit, function(self, attacker)
if AttackOnGoing[house.Name] then
return
end
AttackOnGoing[house.Name] = true
-- Don't try to attack spiceblooms
if attacker and attacker.Type == "spicebloom" then
return
end
local Guards = SetupAttackGroup(house)
if #Guards <= 0 then
AttackOnGoing[house.Name] = false
return
end
Utils.Do(Guards, function(unit)
if not self.IsDead then
unit.AttackMove(self.Location)
end
IdleHunt(unit)
end)
Trigger.OnAllRemovedFromWorld(Guards, function() AttackOnGoing[house.Name] = false end)
end)
end
InitAIUnits = function(house)
IdlingUnits[house.Name] = Reinforcements.Reinforce(house, InitialReinforcements[house.Name], InitialReinforcementsPaths[house.Name])
Utils.Do(Base[house.Name], function(actor)
DefendActor(actor, house)
Trigger.OnDamaged(actor, function(building)
if building.Health < building.MaxHealth * 3/4 and building.Owner.Name == house.Name then
building.StartBuildingRepairs()
end
end)
end)
end
Produce = function(house, units, factory)
if factory.IsDead then
return
end
if HoldProduction[house.Name] then
Trigger.AfterDelay(DateTime.Seconds(30), function() Produce(house, units, factory) end)
return
end
local delay = Utils.RandomInteger(AttackDelays[Difficulty][1], AttackDelays[Difficulty][2] + 1)
local toBuild = { Utils.Random(units) }
house.Build(toBuild, function(unit)
local unitCount = 1
if IdlingUnits[house.Name] then
unitCount = 1 + #IdlingUnits[house.Name]
end
IdlingUnits[house.Name][unitCount] = unit[1]
Trigger.AfterDelay(delay, function() Produce(house, units, factory) end)
if unitCount >= (AttackGroupSize[Difficulty] * 2.5) then
SendAttack(house)
end
end)
end
ActivateAI = function()
InitAIUnits(harkonnen)
InitAIUnits(smuggler)
-- Finish the upgrades first before trying to build something
Trigger.AfterDelay(DateTime.Seconds(14), function()
Produce(harkonnen, EnemyInfantryTypes, HBarracks)
Produce(harkonnen, HarkonnenVehicleTypes, HLightFactory)
Produce(harkonnen, HarkonnenTankType, HHeavyFactory)
Produce(smuggler, EnemyInfantryTypes, SBarracks)
Produce(smuggler, SmugglerVehicleTypes, SLightFactory)
Produce(smuggler, SmugglerTankType, SHeavyFactory)
end)
end

View File

@@ -0,0 +1,163 @@
Base =
{
Harkonnen = { HRefinery, SHeavyFactory, SLightFactory, HGunTurret1, HGunTurret2, HGunTurret3, HGunTurret4, HGunTurret5, SBarracks, HPower1, HPower2, HPower3, HPower4 },
Smugglers = { SOutpost, SHeavyFactory, SLightFactory, SGunTurret1, SGunTurret2, SGunTurret3, SGunTurret4, SBarracks, SPower1, SPower2, SPower3 }
}
HarkonnenLightInfantryRushers =
{
easy = { "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" },
normal = { "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" },
hard = { "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" }
}
HarkonnenAttackDelay =
{
easy = DateTime.Minutes(3) + DateTime.Seconds(30),
normal = DateTime.Minutes(2) + DateTime.Seconds(30),
hard = DateTime.Minutes(1) + DateTime.Seconds(30)
}
InitialReinforcements =
{
Harkonnen = { "combat_tank_h", "combat_tank_h", "trike", "quad" },
Smugglers = { "light_inf", "light_inf", "light_inf", "light_inf", "trooper", "trooper", "trooper" }
}
LightInfantryRushersPaths =
{
{ HarkonnenEntry1.Location, HarkonnenRally1.Location },
{ HarkonnenEntry2.Location, HarkonnenRally2.Location },
{ HarkonnenEntry3.Location, HarkonnenRally3.Location }
}
InitialReinforcementsPaths =
{
Harkonnen = { HarkonnenEntry4.Location, HarkonnenRally4.Location },
Smugglers = { SmugglerEntry.Location, SmugglerRally.Location }
}
OrdosReinforcements = { "light_inf", "light_inf", "light_inf", "light_inf" }
OrdosPath = { OrdosEntry.Location, OrdosRally.Location }
SendHarkonnen = function(path)
Trigger.AfterDelay(HarkonnenAttackDelay[Difficulty], function()
if player.IsObjectiveCompleted(KillHarkonnen) then
return
end
local units = Reinforcements.ReinforceWithTransport(harkonnen, "carryall.reinforce", HarkonnenLightInfantryRushers[Difficulty], path, { path[1] })[2]
Utils.Do(units, function(unit)
unit.AttackMove(HarkonnenAttackLocation)
IdleHunt(unit)
end)
end)
end
Hunt = function(house)
Trigger.OnAllKilledOrCaptured(Base[house.Name], function()
Utils.Do(house.GetGroundAttackers(), IdleHunt)
end)
end
CheckHarvester = function(house)
if DateTime.GameTime % DateTime.Seconds(30) and HarvesterKilled[house.Name] then
local units = house.GetActorsByType("harvester")
if #units > 0 then
HarvesterKilled[house.Name] = false
ProtectHarvester(units[1], house)
end
end
end
Tick = function()
if player.HasNoRequiredUnits() then
harkonnen.MarkCompletedObjective(KillOrdosH)
smuggler.MarkCompletedObjective(KillOrdosS)
smuggler.MarkCompletedObjective(DefendOutpost)
end
if harkonnen.HasNoRequiredUnits() and not player.IsObjectiveCompleted(KillHarkonnen) then
Media.DisplayMessage("The Harkonnen have been annihilated!", "Mentat")
player.MarkCompletedObjective(KillHarkonnen)
end
CheckHarvester(harkonnen)
CheckHarvester(smuggler)
if SOutpost.IsDead then
player.MarkFailedObjective(CaptureOutpost)
end
if SOutpost.Owner == player then
player.MarkCompletedObjective(CaptureOutpost)
smuggler.MarkFailedObjective(DefendOutpost)
end
end
WorldLoaded = function()
harkonnen = Player.GetPlayer("Harkonnen")
smuggler = Player.GetPlayer("Smugglers")
player = Player.GetPlayer("Ordos")
Difficulty = Map.LobbyOption("difficulty")
InitObjectives()
Camera.Position = OConyard.CenterPosition
HarkonnenAttackLocation = OConyard.Location
Hunt(harkonnen)
Hunt(smuggler)
SendHarkonnen(LightInfantryRushersPaths[1])
SendHarkonnen(LightInfantryRushersPaths[2])
SendHarkonnen(LightInfantryRushersPaths[3])
ActivateAI()
Actor.Create("upgrade.barracks", true, { Owner = harkonnen })
Actor.Create("upgrade.light", true, { Owner = harkonnen })
Actor.Create("upgrade.barracks", true, { Owner = smuggler })
Actor.Create("upgrade.light", true, { Owner = smuggler })
Trigger.AfterDelay(HarkonnenAttackDelay[Difficulty] - DateTime.Seconds(5), function()
Media.PlaySpeechNotification(player, "Reinforce")
Reinforcements.Reinforce(player, OrdosReinforcements, OrdosPath)
end)
Trigger.AfterDelay(HarkonnenAttackDelay[Difficulty], function()
Media.DisplayMessage("WARNING: Large force approaching!", "Mentat")
end)
end
InitObjectives = function()
Trigger.OnObjectiveAdded(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
end)
KillOrdosH = harkonnen.AddPrimaryObjective("Kill all Ordos units.")
KillOrdosS = smuggler.AddSecondaryObjective("Kill all Ordos units.")
DefendOutpost = smuggler.AddPrimaryObjective("Don't let the outpost to be captured or destroyed.")
CaptureOutpost = player.AddPrimaryObjective("Capture the Smuggler Outpost.")
KillHarkonnen = player.AddSecondaryObjective("Destroy the Harkonnen.")
Trigger.OnObjectiveCompleted(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
end)
Trigger.OnObjectiveFailed(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
end)
Trigger.OnPlayerLost(player, function()
Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.PlaySpeechNotification(player, "Lose")
end)
end)
Trigger.OnPlayerWon(player, function()
Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.PlaySpeechNotification(player, "Win")
end)
end)
end

View File

@@ -0,0 +1,68 @@
Player:
PlayerResources:
DefaultCash: 5000
World:
LuaScript:
Scripts: ordos04.lua, ordos04-AI.lua
MissionData:
Briefing: The Smugglers at Sietch Tabr must be neutralized. Capture the Outpost where their families have taken shelter as insurance. The children's lives will assure the loyalties of their fathers. Use an Engineer to enter and capture the building.\n\nThe Smugglers' new partners, the Harkonnen, may attempt to protect them. Harkonnen firepower is great, but we have recently acquired tanks that may counter this.\n\nEnsure our investment is used wisely.\n
BriefingVideo: O_BR04_E.VQA
MapOptions:
TechLevel: low
ScriptLobbyDropdown@difficulty:
ID: difficulty
Label: Difficulty
Values:
easy: Easy
normal: Normal
hard: Hard
Default: easy
carryall.reinforce:
Cargo:
MaxWeight: 10
concreteb:
Buildable:
Prerequisites: ~disabled
medium_gun_turret:
Buildable:
Prerequisites: ~disabled
outpost:
Buildable:
Prerequisites: barracks
quad:
Buildable:
Prerequisites: upgrade.light
trooper:
Buildable:
Prerequisites: upgrade.barracks
engineer:
Buildable:
Prerequisites: upgrade.barracks
light_factory:
ProvidesPrerequisite@ordos:
Factions: ordos, smuggler
heavy_factory:
ProvidesPrerequisite@ordos:
Factions: ordos, smuggler
repair_pad:
Buildable:
Prerequisites: heavy_factory, upgrade.heavy
mcv:
Buildable:
Prerequisites: repair_pad, upgrade.heavy
upgrade.conyard:
Buildable:
Prerequisites: ~disabled

View File

@@ -13,6 +13,7 @@ Ordos Campaign:
./mods/d2k/maps/ordos-01b
./mods/d2k/maps/ordos-02a
./mods/d2k/maps/ordos-02b
./mods/d2k/maps/ordos-04
Harkonnen Campaign:
./mods/d2k/maps/harkonnen-01a