cosmonarchy-bw-prerelease/mpq/lua/melee/protoss/general.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.general_expansion,
}
local attack_wave_cost_bias = 0.5
return {
---@type AIPersonality
lunatic_legion = {
name = "General: Lunatic Legion",
unit_composition = {
-- signature units
[UnitId.ProtossLegionnaire] = 2,
[UnitId.ProtossSimulacrum] = 2,
-- filler units
[UnitId.ProtossEcclesiast] = 1,
[UnitId.ProtossAurora] = 1,
[UnitId.ProtossMagister] = 1,
[UnitId.ProtossDidact] = 1,
},
main_build_order = {
Openers.lunatic_legion,
Tier2.legion_stargate_gateway_library,
Tier3.legion_argosy_only,
Tier4.robotics_synthetic_synod,
},
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
matriarchy = {
name = "General: Matriarchy",
unit_composition = {
-- signature units (Prostration Stage / Synthetic Synod)
[UnitId.ProtossZealot] = 2,
[UnitId.ProtossAmaranth] = 2,
[UnitId.ProtossVassal] = 2,
-- filler units
[UnitId.ProtossEmpress] = 1,
[UnitId.ProtossAnalogue] = 1,
[UnitId.ProtossPariah] = 1,
[UnitId.ProtossMindTyrant] = 1,
},
main_build_order = {
Openers.matriarchy,
Tier1.matriarchy,
Tier2.matriarchy_library_lattice,
Tier3.matriarchy_prostration,
Tier4.matriarchy_synthetic_synod_x2,
},
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
robotics_fe = {
name = "General: Robotics FE",
unit_composition = {
-- signature units (Ardent Authority x2)
[UnitId.ProtossZealot] = 2,
[UnitId.ProtossVassal] = 2,
-- filler units
[UnitId.ProtossServitor] = 1,
[UnitId.ProtossPositron] = 1,
[UnitId.ProtossAccantor] = 1,
[UnitId.ProtossClarion] = 1,
},
main_build_order = {
Openers.robotics_fe,
Tier1.robotics_fe,
Tier2.robotics_ardent_x2,
Tier3.robotics_prostration,
Tier4.robotics_synthetic_synod,
},
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
strident_striders = {
name = "General: Strident Striders",
unit_composition = {
-- signature unit
[UnitId.ProtossDracadin] = 2,
-- filler units
[UnitId.ProtossAtreus] = 1,
},
main_build_order = {
Openers.strident_striders,
Tier1.strident_striders,
Tier2.acquire,
Tier3.acquire,
Tier4.robotics_synthetic_synod,
},
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_swordsmiths = {
name = "General: The Swordsmiths",
unit_composition = {
-- signature units (Ardent Authority x2)
[UnitId.ProtossZealot] = 2,
[UnitId.ProtossManifold] = 2,
-- filler units
[UnitId.ProtossServitor] = 1,
[UnitId.ProtossPositron] = 1,
[UnitId.ProtossAccantor] = 1,
[UnitId.ProtossClarion] = 1,
},
main_build_order = {
Openers.the_swordsmiths,
Tier1.the_swordsmiths,
Tier2.swordsmiths_ardent_stargate,
Tier3.acquire,
Tier4.robotics_synthetic_synod,
},
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
worship = {
name = "General: Worship",
unit_composition = {
-- signature units
[UnitId.ProtossAmaranth] = 2,
[UnitId.ProtossSimulacrum] = 2,
-- filler units
[UnitId.ProtossGolem] = 1,
[UnitId.ProtossDracadin] = 1,
},
main_build_order = {
Openers.worship,
Tier1.worship,
Tier2.acquire,
Tier3.acquire,
Tier4.robotics_synthetic_synod,
},
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,
},
}