---@class ProtossTier2 local Tier2 = {} --- Requests a Lattice and an extra Gateway. The generic tier-2 scale-up, for --- personalities without bespoke tier-2 content. ---@param melee_ai MeleeAI ---@param town Town function Tier2.acquire(melee_ai, town) town:build(1, UnitId.ProtossLattice, 70, true) melee_ai:dynamic_wait(secs(25)) town:build(2, UnitId.ProtossGateway, 70) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.strider_lattice_library_gateway(melee_ai, town) town:build(1, UnitId.ProtossLattice, 70) melee_ai:dynamic_wait(secs(20)) town:build(1, UnitId.ProtossGrandLibrary, 70) melee_ai:dynamic_wait(secs(15)) town:build(5, UnitId.ProtossGateway, 70) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.emissary_ardent_lattice_gateway(melee_ai, town) town:build(1, UnitId.ProtossArdentAuthority, 70) melee_ai:dynamic_wait(secs(40)) town:build(2, UnitId.ProtossLattice, 70) wait(secs(3)) town:build(2, UnitId.ProtossGateway, 70) melee_ai:dynamic_wait(secs(15)) town:build(3, UnitId.ProtossGateway, 70) melee_ai:dynamic_wait(secs(15)) town:build(4, UnitId.ProtossGateway, 70) melee_ai:dynamic_wait(secs(15)) town:build(3, UnitId.ProtossLattice, 70) melee_ai:dynamic_wait(secs(25)) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.authority_ardent_gateway_expand_lattice(melee_ai, town) town:build(1, UnitId.ProtossArdentAuthority, 70) melee_ai:dynamic_wait(secs(15)) town:build(4, UnitId.ProtossGateway, 70) wait(secs(1)) melee_ai:dynamic_wait(secs(25)) town:build(2, UnitId.ProtossLattice, 70) melee_ai:dynamic_wait(secs(15)) town:build(3, UnitId.ProtossLattice, 70) melee_ai:dynamic_wait(secs(5)) town:build(4, UnitId.ProtossLattice, 70) melee_ai:dynamic_wait(secs(15)) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.expo_ardent_authority(melee_ai, town) town:build(1, UnitId.ProtossArdentAuthority, 70) melee_ai:dynamic_wait(secs(50)) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.strider3_library_expand(melee_ai, town) town:build(1, UnitId.ProtossGrandLibrary, 70) melee_ai:dynamic_wait(secs(20) + secs(40)) town:build(2, UnitId.ProtossGrandLibrary, 70) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.shadow_roguegallery_expand_library(melee_ai, town) town:build(1, UnitId.ProtossRogueGallery, 70) town:build(2, UnitId.ProtossRogueGallery, 70) melee_ai:dynamic_wait(secs(30) + secs(40)) town:build(1, UnitId.ProtossGrandLibrary, 70) melee_ai:dynamic_wait(mins(1) + secs(5)) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.legion_library_x2(melee_ai, town) town:build(1, UnitId.ProtossGrandLibrary, 70) melee_ai:dynamic_wait(secs(15)) town:build(2, UnitId.ProtossGrandLibrary, 70) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.martyrdom_pylon_roguegallery(melee_ai, town) town:build(4, UnitId.ProtossPylon, 70) wait(secs(3)) town:build(2, UnitId.ProtossRogueGallery, 70) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.heralds_library_gateway_buildup(melee_ai, town) town:build(1, UnitId.ProtossGrandLibrary, 70) melee_ai:dynamic_wait(secs(20)) town:build(3, UnitId.ProtossPylon, 70) melee_ai:dynamic_wait(secs(15)) town:build(3, UnitId.ProtossGateway, 70) melee_ai:dynamic_wait(secs(40) + mins(1)) town:build(5, UnitId.ProtossGateway, 70) melee_ai:dynamic_wait(secs(40)) town:build(2, UnitId.ProtossGrandLibrary, 70) melee_ai:dynamic_wait(mins(1)) town:build(9, UnitId.ProtossGateway, 70) melee_ai:dynamic_wait(mins(1) + secs(55)) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.escort_stargate_buildup(melee_ai, town) town:build(1, UnitId.ProtossStargate, 70) melee_ai:dynamic_wait(secs(5)) town:build(2, UnitId.ProtossStargate, 70) melee_ai:dynamic_wait(secs(45)) town:build(3, UnitId.ProtossStargate, 70) wait(secs(1)) melee_ai:dynamic_wait(mins(1)) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.legion_stargate_gateway_library(melee_ai, town) town:build(1, UnitId.ProtossStargate, 70) melee_ai:dynamic_wait(secs(20)) town:build(2, UnitId.ProtossStargate, 70) melee_ai:dynamic_wait(secs(40) + secs(5)) town:build(3, UnitId.ProtossGateway, 70) melee_ai:dynamic_wait(secs(15)) town:build(3, UnitId.ProtossStargate, 70) melee_ai:dynamic_wait(secs(20)) town:build(4, UnitId.ProtossGateway, 70) melee_ai:dynamic_wait(secs(15)) town:build(4, UnitId.ProtossStargate, 70) melee_ai:dynamic_wait(secs(15)) town:build(1, UnitId.ProtossGrandLibrary, 70) melee_ai:dynamic_wait(secs(15)) town:build(2, UnitId.ProtossGrandLibrary, 70) melee_ai:dynamic_wait(secs(15)) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.matriarchy_library_lattice(melee_ai, town) town:build(1, UnitId.ProtossGrandLibrary, 70) melee_ai:dynamic_wait(secs(15)) town:build(3, UnitId.ProtossLattice, 70) melee_ai:dynamic_wait(secs(25)) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.robotics_ardent_x2(melee_ai, town) town:build(1, UnitId.ProtossArdentAuthority, 70) melee_ai:dynamic_wait(secs(40)) town:build(2, UnitId.ProtossArdentAuthority, 70) melee_ai:dynamic_wait(secs(40)) end ---@param melee_ai MeleeAI ---@param town Town function Tier2.swordsmiths_ardent_stargate(melee_ai, town) town:build(1, UnitId.ProtossArdentAuthority, 70) melee_ai:dynamic_wait(secs(50)) town:build(1, UnitId.ProtossStargate, 70) melee_ai:dynamic_wait(secs(40)) town:build(2, UnitId.ProtossStargate, 70) melee_ai:dynamic_wait(secs(40)) town:build(2, UnitId.ProtossArdentAuthority, 70) melee_ai:dynamic_wait(secs(25)) end return Tier2