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.templar_expansion, } local attack_wave_cost_bias = 0.4 return { ---@type AIPersonality three_gate_strider = { name = "Templar: 3 Gate Strider", unit_composition = { -- signature unit [UnitId.ProtossLegionnaire] = 2, -- filler units [UnitId.ProtossAccantor] = 1, [UnitId.ProtossDracadin] = 1, [UnitId.ProtossArchon] = 1, }, main_build_order = { Openers.three_gate_strider, Tier1.three_gate_strider, Tier2.strider3_library_expand, Tier3.acquire, Tier4.templar_archives_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 suffocating_shadow = { name = "Templar: Suffocating Shadow", unit_composition = { -- signature units (Rogue Gallery) [UnitId.ProtossVagrant] = 2, [UnitId.ProtossCabalist] = 2, [UnitId.ProtossCharlatan] = 2, [UnitId.ProtossBarghest] = 2, [UnitId.ProtossZealot] = 2, -- filler units [UnitId.ProtossAtreus] = 1, [UnitId.ProtossEcclesiast] = 1, }, main_build_order = { Openers.suffocating_shadow, Tier1.suffocating_shadow, Tier2.shadow_roguegallery_expand_library, Tier3.acquire, Tier4.templar_archives_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 legion = { name = "Templar: Legion", unit_composition = { -- signature unit [UnitId.ProtossLegionnaire] = 2, -- filler units [UnitId.ProtossEcclesiast] = 1, [UnitId.ProtossArchon] = 1, }, main_build_order = { Openers.legion, Tier1.legion, Tier2.legion_library_x2, Tier3.acquire, Tier4.templar_archives_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 initiates = { name = "Templar: Initiates", unit_composition = { -- signature unit [UnitId.ProtossZealot] = 2, -- filler units [UnitId.ProtossEcclesiast] = 1, [UnitId.ProtossCantavis] = 1, [UnitId.ProtossAccantor] = 1, [UnitId.ProtossArchon] = 1, }, main_build_order = { Openers.initiates, Tier1.initiates, Tier2.acquire, Tier3.acquire, Tier4.templar_archives_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 martyrdom = { name = "Templar: Martyrdom", unit_composition = { -- signature units (Ancestral Archives x4) [UnitId.ProtossArchon] = 2, [UnitId.ProtossLegionnaire] = 2, -- filler units [UnitId.ProtossAtreus] = 1, [UnitId.ProtossMindTyrant] = 1, [UnitId.ProtossOptecton] = 1, [UnitId.ProtossPatriarch] = 1, }, main_build_order = { Openers.martyrdom, Tier2.martyrdom_pylon_roguegallery, Tier3.martyrdom_prostration_crucible, Tier4.martyrdom_ancestral_archives_scaling, }, 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 legions_heralds = { name = "Templar: Legion's Heralds", unit_composition = { -- signature unit [UnitId.ProtossLegionnaire] = 2, -- filler units [UnitId.ProtossEcclesiast] = 1, [UnitId.ProtossAtreus] = 1, [UnitId.ProtossHerald] = 1, [UnitId.ProtossPatriarch] = 1, }, main_build_order = { Openers.legions_heralds, Tier1.legions_heralds, Tier2.heralds_library_gateway_buildup, Tier3.acquire, Tier4.templar_archives_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, }, }