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, }, }