From 4428777ff349568ad6bb6b46051799905aea125d Mon Sep 17 00:00:00 2001 From: Aquanim Date: Sat, 4 May 2019 16:46:13 +1000 Subject: [PATCH] Replaced planet 41 (tankfac) mission on TitanDuel with a (probably) more interesting version on Rogues River. --- campaign/sample/planets/planet41.lua | 845 ++++++++++++++++++--------- 1 file changed, 578 insertions(+), 267 deletions(-) diff --git a/campaign/sample/planets/planet41.lua b/campaign/sample/planets/planet41.lua index 98b71f152..a5767868a 100644 --- a/campaign/sample/planets/planet41.lua +++ b/campaign/sample/planets/planet41.lua @@ -5,7 +5,7 @@ local function GetPlanet(planetUtilities, planetID) --local image = planetUtilities.planetImages[math.floor(math.random()*#planetUtilities.planetImages) + 1] - local image = LUA_DIRNAME .. "images/planets/radiated01.png" + local image = LUA_DIRNAME .. "images/planets/terran03_damaged.png" local planetData = { name = "Aspiris", @@ -20,38 +20,39 @@ local function GetPlanet(planetUtilities, planetID) image = image, size = planetUtilities.PLANET_SIZE_INFO, backgroundImage = planetUtilities.backgroundImages[math.floor(math.random()*#planetUtilities.backgroundImages) + 1], - terrainType = "Barren", + terrainType = "Terran", radius = "5350 km", primary = "Ahdas Las", - primaryType = "K4III", + primaryType = "G7V", milRating = 1, feedbackLink = "http://zero-k.info/Forum/Thread/24489", - text = [[Among the heavy Tanks, even the constructors and raiders are tough - but they're also more expensive. You'll have less units than your Cloakbot opponent, so you'll need to be efficient. Retreat and repair damaged tanks to avoid losses.]] + text = [[Negotiations with the local warlord regarding access to this planet's Warp Gates have gone poorly. It's time for plan B: take the Gates by force. Make sure your Commander is loaded out for a fight.]] }, tips = { { image = "unitpics/tankcon.png", - text = [[Unlike all other constructors, the Welder is armed and sturdy. It is better able to weather raids until reinforcements arrive and can even beat a small number of Glaives in a fight.]] + text = [[Unlike all other constructors, the Welder is armed and sturdy. It is better able to weather raids until reinforcements arrive and can even beat a small number of raiders in a fight.]] }, { image = "unitpics/tankheavyraid.png", text = [[The Blitz heavy tank raider will go toe-to-toe with any other raider - its high HP and lightning weaponry give it a significant edge. However, it is fairly inefficient due to its comparatively high cost.]] }, { - image = "LuaUI/Images/commands/Bold/repair.png", - text = [[To minimize losses, make sure to repair your Tanks when they are partially damaged.]] + image = "unitpics/cremcom.png", + text = [[Your Commander begins this mission in an exposed location. After you survive the ambush, build turrets quickly or retreat to your main base to keep your Commander safe.]] }, }, gameConfig = { - mapName = "TitanDuel 2.2", + mapName = "Rogues River v1.2", playerConfig = { - startX = 3600, - startZ = 1000, + startX = 2060, + startZ = 4760, allyTeam = 0, facplop = false, commanderParameters = { facplop = false, defeatIfDestroyedObjectiveID = 2, + facing = 1, }, extraUnlocks = { "factorytank", @@ -61,84 +62,198 @@ local function GetPlanet(planetUtilities, planetID) "tankheavyraid", }, startUnits = { - { + { name = "factorytank", - x = 4112, - z = 544, + x = 3216, + z = 480, facing = 0, }, { name = "staticmex", - x = 3816, - z = 504, + x = 3304, + z = 136, facing = 0, }, { name = "staticmex", - x = 3624, - z = 632, + x = 3100, + z = 167, facing = 0, }, { name = "staticmex", - x = 4408, - z = 920, + x = 2660, + z = 103, + facing = 0, + }, + { + name = "staticmex", + x = 2820, + z = 88, facing = 0, }, { - name = "staticradar", - x = 3888, - z = 896, + name = "tankheavyraid", + x = 3400, + z = 950, + facing = 0, + }, + { + name = "tankheavyraid", + x = 3250, + z = 950, + facing = 0, + }, + { + name = "tankarty", + x = 3250, + z = 825, + facing = 0, + }, + { + name = "tankarty", + x = 3400, + z = 825, facing = 0, }, { name = "energysolar", - x = 3720, - z = 568, - facing = 1, + x = 2840, + z = 216, + facing = 0, }, { name = "energysolar", - x = 4296, - z = 952, - facing = 1, + x = 2984, + z = 152, + facing = 0, }, { name = "energysolar", - x = 4408, - z = 1048, - facing = 1, + x = 2530, + z = 72, + facing = 0, + }, + { + name = "energysolar", + x = 3016, + z = 296, + facing = 0, + }, + { + name = "energysolar", + x = 3178, + z = 268, + facing = 0, + }, + { + name = "energysolar", + x = 2696, + z = 216, + facing = 0, + }, + { + name = "energysolar", + x = 2792, + z = 328, + facing = 0, }, { name = "turretlaser", - x = 4192, - z = 1248, + x = 2480, + z = 272, facing = 0, }, { name = "turretlaser", - x = 3536, - z = 928, + x = 2736, + z = 544, facing = 0, }, { name = "tankcon", - x = 4077, - z = 795, + x = 2940, + z = 500, facing = 0, }, { - name = "tankheavyraid", - x = 3984, - z = 765, + name = "tankcon", + x = 2940, + z = 700, facing = 0, }, + { + name = "turretlaser", + x = 3488, + z = 688, + facing = 1, + }, + { + name = "turretlaser", + x = 3584, + z = 336, + facing = 1, + }, + { + name = "turretaaclose", + x = 3000, + z = 408, + facing = 0, + }, + { + name = "staticradar", + x = 3360, + z = 1056, + facing = 0, + }, + { + name = "tankriot", + x = 2103, + z = 4973, + facing = 1, + }, + { + name = "tankriot", + x = 2120, + z = 4547, + facing = 1, + }, + { + name = "planelightscout", + x = 1846, + z = 4698, + facing = 1, + commands = { + {cmdID = planetUtilities.COMMAND.RAW_MOVE, pos = {1200, 4698}}, + }, + }, + { + name = "staticmex", + x = 4296, + z = 408, + facing = 0, + difficultyAtMost = 3, + }, + { + name = "staticmex", + x = 4408, + z = 136, + facing = 0, + difficultyAtMost = 3, + }, + { + name = "turretlaser", + x = 4416, + z = 320, + facing = 0, + difficultyAtMost = 3, + }, } }, aiConfig = { { - startX = 1562, - startZ = 4000, + startX = 2626, + startZ = 4743, aiLib = "Circuit_difficulty_autofill", bitDependant = true, --aiLib = "Null AI", @@ -147,6 +262,7 @@ local function GetPlanet(planetUtilities, planetID) commanderParameters = { facplop = false, bonusObjectiveID = 1, + facing = 3, }, allyTeam = 1, unlocks = { @@ -155,323 +271,515 @@ local function GetPlanet(planetUtilities, planetID) "staticmex", "energysolar", "energygeo", - "factorycloak", - "cloakcon", - "cloakraid", - "cloakriot", - "cloakassault", - "cloakskirm", - "cloakarty", - "cloakbomb", - "factoryveh", - "vehcon", - "vehraid", - "vehriot", - "vehassault", + "hovercon", + "hoverraid", + "hoverriot", + "hoverassault", + "hoveraa", + "shieldraid", + "shieldriot", + "shieldskirm", + "shieldassault", + "shieldbomb", + "shieldaa", }, difficultyDependantUnlocks = { - [3] = {"cloakheavyraid"}, - [4] = {"cloakheavyraid"}, + [2] = {"hoverskirm"}, + [3] = {"hoverskirm","shieldcon"}, + [4] = {"hoverskirm","shieldcon","hoverarty","shieldarty"}, }, - commanderLevel = 5, + commanderLevel = 4, commander = { - name = "Hawker", + name = "DeeTeeCee", chassis = "strike", decorations = { }, modules = { - "commweapon_shotgun", - "commweapon_multistunner", - "module_heavy_armor", - "module_high_power_servos", + "commweapon_lparticlebeam", + "commweapon_missilelauncher", "module_high_power_servos", "module_adv_nano", "module_adv_nano", "module_jammer", "module_adv_targeting", "module_autorepair", - "module_autorepair", + "module_dmg_booster" } }, startUnits = { - { - name = "pw_warpgate", - x = 1280, - z = 3992, - facing = 0, - terraformHeight = 121, - mapMarker = { - text = "Warp Gate", - color = "red_small" - }, + { + name = "turretaalaser", + x = 6600, + z = 4248, + facing = 3, }, - { - name = "staticmex", - x = 1606, - z = 3250, - facing = 0, - difficultyAtLeast = 2, + { + name = "turretheavylaser", + x = 3848, + z = 6536, + facing = 2, }, - { - name = "turretriot", - x = 1606, - z = 3100, + { + name = "turretheavylaser", + x = 4312, + z = 6584, facing = 2, - difficultyAtLeast = 2, }, - { - name = "energygeo", - x = 195, - z = 4940, - facing = 0, - difficultyAtLeast = 3, - difficultyAtMost = 3, + { + name = "turretheavylaser", + x = 4872, + z = 7032, + facing = 2, }, - { - name = "energypylon", - x = 550, - z = 4600, - facing = 0, - difficultyAtLeast = 3, + { + name = "turretheavylaser", + x = 3336, + z = 6808, + facing = 2, }, - { - name = "energypylon", - x = 1421, - z = 4421, - facing = 0, - difficultyAtLeast = 3, + { + name = "turretheavylaser", + x = 6152, + z = 3768, + facing = 3, }, - { + { + name = "turretheavylaser", + x = 6904, + z = 3480, + facing = 3, + }, + { + name = "turretheavylaser", + x = 6488, + z = 4440, + facing = 3, + }, + { + name = "turretheavylaser", + x = 6888, + z = 5016, + facing = 3, + }, + { + name = "turretemp", + x = 6560, + z = 3728, + facing = 3, + }, + { + name = "turretemp", + x = 6256, + z = 4144, + facing = 3, + }, + { + name = "turretemp", + x = 6768, + z = 4704, + facing = 3, + }, + { name = "turretriot", - x = 195, - z = 4740, + x = 3624, + z = 6760, facing = 2, - difficultyAtLeast = 3, }, - { + { name = "turretriot", - x = 416, - z = 4942, + x = 4104, + z = 6360, facing = 2, - difficultyAtLeast = 3, - }, - { - name = "energyheavygeo", - x = 195, - z = 4940, - facing = 0, - difficultyAtLeast = 4, }, - { - name = "staticmex", - x = 2820, - z = 3700, + { + name = "turretriot", + x = 4648, + z = 6808, facing = 2, - difficultyAtLeast = 4, }, - { + { name = "turretriot", - x = 770, - z = 3900, + x = 3304, + z = 7048, + facing = 3, + }, + { + name = "staticstorage", + x = 3560, + z = 7128, facing = 0, - difficultyAtLeast = 4, }, - { - name = "staticmex", - x = 770, - z = 2720, + { + name = "staticstorage", + x = 3640, + z = 7128, facing = 0, - difficultyAtLeast = 4, }, - { - name = "turretriot", - x = 890, - z = 2720, - facing = 1, - difficultyAtLeast = 4, + { + name = "staticstorage", + x = 7096, + z = 4616, + facing = 0, + }, + { + name = "staticstorage", + x = 7096, + z = 4696, + facing = 0, + }, + { + name = "energysolar", + x = 4100, + z = 6900, + facing = 0, + }, + { + name = "energysolar", + x = 4232, + z = 6936, + facing = 0, + }, + { + name = "energysolar", + x = 4230, + z = 7064, + facing = 0, + }, + { + name = "energysolar", + x = 6936, + z = 4232, + facing = 0, + }, + { + name = "energysolar", + x = 7048, + z = 4152, + facing = 0, + }, + { + name = "energysolar", + x = 6890, + z = 4345, + facing = 0, }, { name = "staticmex", - x = 770, - z = 2720, + x = 3864, + z = 7030, facing = 0, - difficultyAtLeast = 4, }, { - name = "cloakassault", - x = 2170, - z = 3800, + name = "staticmex", + x = 4072, + z = 7016, facing = 0, - difficultyAtLeast = 4, }, { - name = "cloakassault", - x = 2270, - z = 3800, + name = "staticmex", + x = 4345, + z = 7100, facing = 0, - difficultyAtLeast = 4, }, { - name = "cloakassault", - x = 2370, - z = 3800, + name = "staticmex", + z = 3864, + x = 7030, facing = 0, - difficultyAtLeast = 4, }, { - name = "cloakcon", - x = 2470, - z = 3800, + name = "staticmex", + z = 4072, + x = 7016, facing = 0, - difficultyAtLeast = 4, }, { name = "staticmex", - x = 808, - z = 4456, + z = 4345, + x = 7100, facing = 0, }, { - name = "staticmex", - x = 1656, - z = 4152, - facing = 0, + name = "factoryhover", + x = 3580, + z = 6980, + facing = 2, }, { - name = "staticmex", - x = 1816, - z = 4280, - facing = 0, + name = "factoryshield", + x = 6880, + z = 3950, + facing = 3, }, { - name = "factorycloak", - x = 768, - z = 4136, + name = "turretgauss", + x = 360, + z = 3064, facing = 1, }, { - name = "turretriot", - x = 776, - z = 3560, + name = "turretlaser", + x = 464, + z = 2992, facing = 1, }, { name = "turretlaser", - x = 1280, - z = 3648, + x = 240, + z = 3008, facing = 2, }, { name = "turretlaser", - x = 1904, - z = 3968, - facing = 1, + x = 368, + z = 3184, + facing = 0, }, { - name = "cloakcon", - x = 1075, - z = 4248, + name = "turretaafar", + x = 4080, + z = 6528, facing = 2, }, { - name = "cloakriot", - x = 923, - z = 3874, - facing = 2, + name = "turretaaclose", + x = 6296, + z = 3912, + facing = 3, }, { - name = "cloakraid", - x = 1111, - z = 3868, - facing = 2, + name = "turretaalaser", + x = 6744, + z = 3816, + facing = 3, }, - { - name = "cloakraid", - x = 1017, - z = 3870, - facing = 2, + { + name = "staticradar", + x = 6090, + z = 4000, + facing = 3, + }, + { + name = "shieldskirm", + x = 6700, + z = 3900, + facing = 3, + }, + { + name = "shieldriot", + x = 6700, + z = 4030, + facing = 3, + difficultyAtLeast = 2, + }, + { + name = "shieldcon", + x = 6700, + z = 4060, + facing = 3, + difficultyAtLeast = 3, + }, + { + name = "shieldfelon", + x = 6700, + z = 4100, + facing = 3, + difficultyAtLeast = 4, + }, + { + name = "hovercon", + x = 4480, + z = 6900, + facing = 3, + }, + { + name = "hoverskirm", + x = 4500, + z = 6900, + facing = 3, + difficultyAtLeast = 2, + }, + { + name = "hoverriot", + x = 4530, + z = 6900, + facing = 3, + difficultyAtLeast = 3, + }, + { + name = "hoverarty", + x = 4600, + z = 6900, + facing = 3, + difficultyAtLeast = 4, + }, + } + }, + { + humanName = "Ambushers", + aiLib = "Null AI", + bitDependant = false, + --aiLib = "Circuit_difficulty_autofill", + --bitDependant = true, + allyTeam = 1, + unlocks = { + }, + commander = false, + startUnits = { + { + name = "hoverriot", + x = 2687, + z = 4864, + facing = 3, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, + }, + { + name = "shieldraid", + x = 1240, + z = 3945, + facing = 3, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, }, { - name = "cloakraid", - x = 845, - z = 3826, + name = "shieldskirm", + x = 1411, + z = 3854, facing = 2, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, }, { - name = "energysolar", - x = 1784, - z = 4184, + name = "shieldassault", + x = 1324, + z = 3897, facing = 0, + difficultyAtLeast = 2, + difficultyAtMost = 3, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, }, - { - name = "turretaalaser", - x = 1032, - z = 3944, + { + name = "shieldfelon", + x = 1324, + z = 3897, facing = 0, + difficultyAtLeast = 4, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, }, { - name = "turretaalaser", - x = 1496, - z = 4280, + name = "shieldraid", + x = 1521, + z = 3806, facing = 0, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, }, { - name = "energysolar", - x = 712, - z = 4408, + name = "shieldskirm", + x = 1188, + z = 5455, facing = 0, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, }, { - name = "energysolar", - x = 904, - z = 4408, + name = "shieldassault", + x = 1312, + z = 5543, facing = 0, + difficultyAtLeast = 2, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, }, { - name = "cloakcon", - x = 1004, - z = 4066, - facing = 1, - }, - { - name = "cloakraid", - x = 942, - z = 3946, - facing = 2, - }, - { - name = "cloakraid", - x = 896, - z = 3924, - facing = 2, - }, - { - name = "cloakassault", - x = 802, - z = 4013, - facing = 2, + name = "shieldraid", + x = 1442, + z = 5636, + facing = 0, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, }, { - name = "turretriot", - x = 1528, - z = 3880, - facing = 2, + name = "shieldraid", + x = 1594, + z = 5665, + facing = 3, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, }, { - name = "turretmissile", - x = 928, - z = 4224, - facing = 2, + name = "hoverskirm", + x = 2751, + z = 4735, + facing = 3, + difficultyAtLeast = 3, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, }, { - name = "turretmissile", - x = 1184, - z = 4592, - facing = 2, + name = "hoverassault", + x = 2683, + z = 4596, + facing = 3, + commands = { + {cmdID = planetUtilities.COMMAND.PATROL, pos = {2060, 4760}}, + {cmdID = planetUtilities.COMMAND.PATROL, pos = {3200, 500}, options = {"shift"}}, + }, }, } }, }, + neutralUnits = { + { + name = "pw_warpgate", + x = 4072, + z = 6672, + facing = 0, + invincible = true, + ignoredByAI = true, + mapMarker = { + text = "Warp Gate", + color = "green_small" + }, + }, + { + name = "pw_warpgate", + x = 6504, + z = 4000, + facing = 0, + invincible = true, + ignoredByAI = true, + mapMarker = { + text = "Warp Gate", + color = "green_small" + }, + }, + }, defeatConditionConfig = { -- Indexed by allyTeam. [0] = { }, @@ -479,7 +787,14 @@ local function GetPlanet(planetUtilities, planetID) ignoreUnitLossDefeat = false, vitalCommanders = false, vitalUnitTypes = { - "pw_warpgate", + "factoryshield", + "factoryhover", + "turretheavylaser", + "turretemp", + "turretriot", + "turretaaclose", + "turretaafar", + "turretaalaser", }, loseAfterSeconds = false, allyTeamLossObjectiveID = 1, @@ -488,38 +803,34 @@ local function GetPlanet(planetUtilities, planetID) objectiveConfig = { -- This is just related to displaying objectives on the UI. [1] = { - description = "Destroy the enemy Warp Gate", + description = "Destroy the factory and turrets surrounding each Warp Gate", }, [2] = { description = "Protect your Commander", }, }, bonusObjectiveConfig = { - [1] = { - victoryByTime = 600, - image = planetUtilities.ICON_OVERLAY.CLOCK, - description = "Win by 10:00", + [1] = { -- Kill enemy commander before 2:00 + satisfyByTime = 2*60, + comparisionType = planetUtilities.COMPARE.AT_MOST, + targetNumber = 0, + -- See bonusObjectiveID in units table + image = planetUtilities.ICON_DIR .. "strike.png", + imageOverlay = planetUtilities.ICON_OVERLAY.ATTACK, + description = "Destroy the enemy commander before 2:00", experience = planetUtilities.BONUS_EXP, }, - [2] = { -- Lose no more than 5 tanks + [2] = { onlyCountRemovedUnits = true, - satisfyForever = true, + satisfyUntilTime = 2*60, comparisionType = planetUtilities.COMPARE.AT_MOST, - targetNumber = 5, + targetNumber = 0, unitTypes = { - "tankcon", - "tankraid", - "tankheavyraid", - "tankriot", - "tankassault", - "tankheavyassault", - "tankarty", - "tankheavyarty", - "tankaa", + "tankriot" }, image = planetUtilities.ICON_DIR .. "tankriot.png", imageOverlay = planetUtilities.ICON_OVERLAY.GUARD, - description = "Do not lose more than 5 Tanks", + description = "Do not lose any Ogres before 2:00", experience = planetUtilities.BONUS_EXP, }, [3] = { -- Complete all bonus objectives