cosmonarchy-bw-prerelease/mpq/lua/melee/terran/orbital.lua
2026-09-09 10:52:21 -04:00

154 lines
4.8 KiB
Lua

local Basic = require("melee.terran.build.basic")
local Openers = require("melee.terran.build.openers")
local Tier1 = require("melee.terran.build.tier1")
local Tier2 = require("melee.terran.build.tier2")
local Tier3 = require("melee.terran.build.tier3")
local expansion_build_order = {
Basic.build_expansion,
Tier2.acquire,
Tier3.acquire,
Tier2.starport,
}
local attack_wave_cost_bias = 0.6
return {
---@type AIPersonality
rapid_starpads = {
name = "Orbital: 2 Starpad Wraith",
unit_composition = {
-- signature unit
[UnitId.TerranWraith] = 3,
-- filler units
[UnitId.TerranSalamander] = 1,
[UnitId.TerranAzazel] = 1,
[UnitId.TerranSeraph] = 1,
},
main_build_order = {
Openers.rapid_starpads,
Tier1.rapid_starpads,
Tier2.acquire,
Tier2.orbital_starport_rotary_commandment,
Tier3.acquire,
},
expansion_build_order = expansion_build_order,
build_anti_ground_defenses = Basic.build_anti_ground,
build_anti_air_defenses = Basic.build_anti_air,
attack_wave_cost_bias = attack_wave_cost_bias,
},
---@type AIPersonality
the_don = {
name = "Orbital: The Don",
unit_composition = {
-- signature units (Nanite Assembly x3)
[UnitId.TerranMinotaur] = 2,
[UnitId.TerranCentaur] = 2,
[UnitId.TerranMagnetar] = 2,
-- filler units
[UnitId.TerranGorgon] = 1,
},
main_build_order = {
Openers.expand_first_slow,
Tier1.orbital_stockade_settle,
Tier2.acquire,
Tier3.acquire,
Tier3.nanite_assembly_buildup,
},
expansion_build_order = expansion_build_order,
build_anti_ground_defenses = Basic.build_anti_ground,
build_anti_air_defenses = Basic.build_anti_air,
attack_wave_cost_bias = attack_wave_cost_bias,
},
---@type AIPersonality
wraith_bio = {
name = "Orbital: Wraith Bio",
unit_composition = {
-- signature units
[UnitId.TerranMaverick] = 3,
[UnitId.TerranWraith] = 3,
-- filler units
[UnitId.TerranValkyrie] = 1,
},
main_build_order = {
Openers.wraith_bio,
Tier1.wraith_bio,
Tier2.acquire,
Tier3.acquire,
},
expansion_build_order = expansion_build_order,
build_anti_ground_defenses = Basic.build_anti_ground,
build_anti_air_defenses = Basic.build_anti_air,
attack_wave_cost_bias = attack_wave_cost_bias,
},
---@type AIPersonality
hotdrop = {
name = "Orbital: Hotdrop",
unit_composition = {
-- signature unit
[UnitId.TerranHarakan] = 3,
-- filler units
[UnitId.TerranWraith] = 1,
[UnitId.TerranSalamander] = 1,
},
main_build_order = {
Openers.hotdrop,
Tier2.acquire,
Tier2.orbital_covenant_anvil_starport_rotary,
Tier3.acquire,
},
expansion_build_order = expansion_build_order,
build_anti_ground_defenses = Basic.build_anti_ground,
build_anti_air_defenses = Basic.build_anti_air,
attack_wave_cost_bias = attack_wave_cost_bias,
},
---@type AIPersonality
sudden_starport = {
name = "Orbital: Sudden Starport",
unit_composition = {
-- signature units
[UnitId.TerranMaverick] = 2,
[UnitId.TerranSundog] = 2,
[UnitId.TerranSalamander] = 2,
-- healers
[UnitId.TerranCleric] = 1.5,
},
main_build_order = {
Openers.sudden_starport,
Tier2.orbital_vestry_starport_rotary_x4,
Tier2.acquire,
Tier3.acquire,
},
expansion_build_order = expansion_build_order,
build_anti_ground_defenses = Basic.build_anti_ground,
build_anti_air_defenses = Basic.build_anti_air,
attack_wave_cost_bias = attack_wave_cost_bias,
},
---@type AIPersonality
aces_high = {
name = "Orbital: Aces High",
unit_composition = {
-- signature units
[UnitId.TerranVulture] = 3,
[UnitId.TerranWraith] = 3,
-- filler units
[UnitId.TerranBlackjack] = 1,
[UnitId.TerranCyclops] = 1,
},
main_build_order = {
Openers.aces_high,
Tier1.aces_high,
Tier2.acquire,
Tier3.acquire,
},
expansion_build_order = expansion_build_order,
build_anti_ground_defenses = Basic.build_anti_ground,
build_anti_air_defenses = Basic.build_anti_air,
attack_wave_cost_bias = attack_wave_cost_bias,
},
}