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

165 lines
5.5 KiB
Lua

local Basic = require("melee.protoss.build.basic")
local Openers = require("melee.protoss.build.openers")
local Tier1 = require("melee.protoss.build.tier1")
local Tier2 = require("melee.protoss.build.tier2")
local Tier3 = require("melee.protoss.build.tier3")
local Tier4 = require("melee.protoss.build.tier4")
local expansion_build_order = {
Basic.build_expansion,
Tier4.skylord_expansion,
}
local attack_wave_cost_bias = 0.6
return {
---@type AIPersonality
solar_escort = {
name = "Skylord: Solar Escort",
unit_composition = {
-- signature units
[UnitId.ProtossSolarion] = 2,
[UnitId.ProtossLegionnaire] = 2,
[UnitId.ProtossVassal] = 2,
-- filler units
[UnitId.ProtossEcclesiast] = 1,
[UnitId.ProtossPanoptus] = 1,
[UnitId.ProtossGladius] = 1,
[UnitId.ProtossEmpyrean] = 1,
},
main_build_order = {
Openers.solar_escort,
Tier1.solar_escort,
Tier2.escort_stargate_buildup,
Tier3.escort_argosy_buildup,
Tier4.skylord_monument_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
deadly_omen = {
name = "Skylord: Deadly Omen",
unit_composition = {
-- signature units
[UnitId.ProtossZealot] = 2,
[UnitId.ProtossVassal] = 2,
-- filler units
[UnitId.ProtossPanoptus] = 1,
[UnitId.ProtossExemplar] = 1,
},
main_build_order = {
Openers.deadly_omen,
Tier1.deadly_omen,
Tier2.acquire,
Tier3.acquire,
Tier4.skylord_monument_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
two_gate_panoptus = {
name = "Skylord: 2 Gate Panoptus",
unit_composition = {
-- signature units
[UnitId.ProtossPanoptus] = 3,
[UnitId.ProtossVassal] = 2,
-- filler units
[UnitId.ProtossHierophant] = 1,
},
main_build_order = {
Openers.two_gate_panoptus,
Tier1.two_gate_panoptus,
Tier2.acquire,
Tier3.acquire,
Tier4.skylord_monument_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
exalted = {
name = "Skylord: Exalted",
unit_composition = {
-- signature units (Monument of Sin)
[UnitId.ProtossVassal] = 2,
[UnitId.ProtossStarSovereign] = 2,
[UnitId.ProtossAnthelion] = 2,
-- filler units
[UnitId.ProtossPanoptus] = 1,
[UnitId.ProtossExemplar] = 1,
[UnitId.ProtossDidact] = 1,
},
main_build_order = {
Openers.exalted,
Tier1.exalted,
Tier2.acquire,
Tier3.exalted_argosy_crucible,
Tier4.exalted_monument_of_sin,
},
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
sorrow_fleet = {
name = "Skylord: Sorrow Fleet",
unit_composition = {
-- signature units (Monument of Sin)
[UnitId.ProtossVassal] = 2,
[UnitId.ProtossStarSovereign] = 2,
[UnitId.ProtossAnthelion] = 1.5,
-- filler units
[UnitId.ProtossPanoptus] = 1,
[UnitId.ProtossGladius] = 1,
[UnitId.ProtossEmpyrean] = 1,
},
main_build_order = {
Openers.sorrow_fleet,
Tier2.acquire,
Tier3.fleet_argosy_buildup,
Tier4.fleet_monument_of_sin,
},
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
ships_and_swords = {
name = "Skylord: Ships and Swords",
unit_composition = {
-- signature units
[UnitId.ProtossVassal] = 2,
[UnitId.ProtossAurora] = 1.5,
[UnitId.ProtossMagister] = 1.5,
-- filler units
[UnitId.ProtossGladius] = 1,
[UnitId.ProtossStarSovereign] = 1,
},
main_build_order = {
Openers.ships_and_swords,
Tier1.ships_and_swords,
Tier2.acquire,
Tier3.acquire,
Tier4.skylord_monument_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,
},
}