mirror of
https://gitlab.com/the-no-frauds-club/cosmonarchy-bw-prerelease.git
synced 2026-09-17 01:01:12 +00:00
323 lines
12 KiB
Lua
323 lines
12 KiB
Lua
---@class TerranTier2
|
|
local Tier2 = {}
|
|
|
|
--- Requests Atlas and waits for it. The generic tier-2 tech transition.
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.acquire(melee_ai, town)
|
|
town:multirun(function()
|
|
wait(secs(1))
|
|
town:build(1, UnitId.TerranAtlas, 70, true)
|
|
end)
|
|
end
|
|
|
|
--- Requests a bare Starport once Atlas exists, for base air units.
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.starport(melee_ai, town)
|
|
melee_ai:dynamic_wait(secs(40))
|
|
town:build(1, UnitId.TerranStarport, 69, true)
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.stockade_requeue(melee_ai, town)
|
|
melee_ai:dynamic_wait(mins(1))
|
|
town:build(1, UnitId.TerranStockade, 70)
|
|
melee_ai:dynamic_wait(secs(25))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.starport_commandment_buildup(melee_ai, town)
|
|
town:multirun(function()
|
|
town:wait_build(1, UnitId.TerranFulcrum)
|
|
town:build(1, UnitId.TerranScrapyard, 69)
|
|
town:wait_build(2, UnitId.TerranFulcrum)
|
|
town:build(1, UnitId.TerranPalladium, 69)
|
|
town:wait_build(3, UnitId.TerranFulcrum)
|
|
town:build(2, UnitId.TerranPalladium, 69)
|
|
wait(secs(2))
|
|
town:wait_build(1, UnitId.TerranAtlas)
|
|
town:build(1, UnitId.TerranStarport, 70)
|
|
town:wait_build(1, UnitId.TerranStarport)
|
|
town:build(1, UnitId.TerranCommandment, 69)
|
|
end)
|
|
melee_ai:dynamic_wait(secs(25))
|
|
town:wait_build(2, UnitId.TerranFulcrum, false)
|
|
melee_ai:dynamic_wait(secs(70) + secs(25))
|
|
town:build(5, UnitId.TerranFulcrum, 70)
|
|
melee_ai:dynamic_wait(mins(2) + secs(15))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.fulcrum_scaling(melee_ai, town)
|
|
melee_ai:dynamic_wait(secs(20))
|
|
town:build(4, UnitId.TerranFulcrum, 70)
|
|
melee_ai:dynamic_wait(secs(25))
|
|
town:build(5, UnitId.TerranFulcrum, 70)
|
|
melee_ai:dynamic_wait(secs(5))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.fulcrum_buildup(melee_ai, town)
|
|
melee_ai:dynamic_wait(secs(25))
|
|
town:build(3, UnitId.TerranFulcrum, 70)
|
|
melee_ai:dynamic_wait(secs(5))
|
|
town:wait_build(2, UnitId.TerranFulcrum)
|
|
town:wait_build(3, UnitId.TerranFulcrum, false)
|
|
wait(secs(1))
|
|
town:wait_build(1, UnitId.TerranAtlas)
|
|
melee_ai:dynamic_wait(secs(20))
|
|
town:build(4, UnitId.TerranFulcrum, 70)
|
|
melee_ai:dynamic_wait(secs(20))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.raider_vestry_covenant_buildup(melee_ai, town)
|
|
melee_ai:dynamic_wait(secs(15))
|
|
town:multirun(function()
|
|
town:wait_build(1, UnitId.TerranStockade)
|
|
town:build(1, UnitId.TerranVestry, 69)
|
|
town:wait_build(2, UnitId.TerranStockade)
|
|
town:build(2, UnitId.TerranVestry, 69)
|
|
town:wait_build(3, UnitId.TerranStockade)
|
|
town:build(1, UnitId.TerranCovenant, 69)
|
|
town:wait_build(4, UnitId.TerranStockade)
|
|
town:build(2, UnitId.TerranCovenant, 69)
|
|
end)
|
|
melee_ai:dynamic_wait(secs(25))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.raider_stockade_requeue(melee_ai, town)
|
|
melee_ai:dynamic_wait(secs(15))
|
|
town:build(4, UnitId.TerranStockade, 70)
|
|
melee_ai:dynamic_wait(secs(40))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.raider_vestry_starport_rotary(melee_ai, town)
|
|
melee_ai:dynamic_wait(secs(5))
|
|
town:multirun(function()
|
|
town:wait_build(1, UnitId.TerranStockade)
|
|
town:build(1, UnitId.TerranVestry, 69)
|
|
town:wait_build(1, UnitId.TerranAtlas)
|
|
town:build(1, UnitId.TerranStarport, 70)
|
|
town:wait_build(1, UnitId.TerranStarport)
|
|
town:build(1, UnitId.TerranRotary, 69)
|
|
end)
|
|
melee_ai:dynamic_wait(secs(15))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.orbital_starport_rotary_commandment(melee_ai, town)
|
|
town:multirun(function()
|
|
town:wait_build(1, UnitId.TerranAtlas)
|
|
town:build(1, UnitId.TerranStarport, 70)
|
|
town:wait_build(1, UnitId.TerranStarport)
|
|
town:build(1, UnitId.TerranRotary, 69)
|
|
town:build(2, UnitId.TerranStarport, 70)
|
|
town:wait_build(2, UnitId.TerranStarport)
|
|
town:build(2, UnitId.TerranRotary, 69)
|
|
town:build(3, UnitId.TerranStarport, 70)
|
|
town:wait_build(3, UnitId.TerranStarport)
|
|
town:build(1, UnitId.TerranCommandment, 69)
|
|
end)
|
|
melee_ai:dynamic_wait(secs(40))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.orbital_covenant_anvil_starport_rotary(melee_ai, town)
|
|
melee_ai:dynamic_wait(secs(20))
|
|
town:multirun(function()
|
|
town:build(1, UnitId.TerranCovenant, 69)
|
|
town:wait_build(1, UnitId.TerranCovenant)
|
|
town:build(1, UnitId.TerranAnvil, 69)
|
|
wait(secs(1))
|
|
town:wait_build(1, UnitId.TerranAtlas)
|
|
town:build(1, UnitId.TerranStarport, 70)
|
|
town:wait_build(1, UnitId.TerranStarport)
|
|
town:build(1, UnitId.TerranRotary, 69)
|
|
town:build(2, UnitId.TerranStarport, 70)
|
|
town:wait_build(2, UnitId.TerranStarport)
|
|
town:build(2, UnitId.TerranRotary, 69)
|
|
melee_ai:dynamic_wait(secs(50))
|
|
end)
|
|
melee_ai:dynamic_wait(secs(40))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.orbital_vestry_starport_rotary_x4(melee_ai, town)
|
|
town:multirun(function()
|
|
town:wait_build(2, UnitId.TerranStockade)
|
|
town:build(1, UnitId.TerranVestry, 69)
|
|
town:wait_build(1, UnitId.TerranAtlas)
|
|
town:build(1, UnitId.TerranStarport, 70)
|
|
town:wait_build(1, UnitId.TerranStarport, false)
|
|
town:build(4, UnitId.TerranStarport, 70)
|
|
town:wait_build(1, UnitId.TerranStarport)
|
|
town:build(1, UnitId.TerranRotary, 69)
|
|
town:wait_build(2, UnitId.TerranStarport)
|
|
town:build(2, UnitId.TerranRotary, 69)
|
|
town:wait_build(3, UnitId.TerranStarport)
|
|
town:build(3, UnitId.TerranRotary, 69)
|
|
town:wait_build(4, UnitId.TerranStarport)
|
|
town:build(4, UnitId.TerranRotary, 69)
|
|
melee_ai:dynamic_wait(secs(15))
|
|
end)
|
|
melee_ai:dynamic_wait(mins(1) + secs(15))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.general_expansion_tail(melee_ai, town)
|
|
melee_ai:dynamic_wait(secs(20))
|
|
town:build(1, UnitId.TerranStarpad, 69, true)
|
|
melee_ai:dynamic_wait(secs(15))
|
|
Tier2.acquire(melee_ai, town)
|
|
melee_ai:dynamic_wait(secs(15))
|
|
town:build(1, UnitId.TerranStockade, 69, true)
|
|
melee_ai:dynamic_wait(secs(5))
|
|
town:build(1, UnitId.TerranCovenant, 69, true)
|
|
melee_ai:dynamic_wait(mins(1))
|
|
town:build(1, UnitId.TerranStarport, 69, true)
|
|
melee_ai:dynamic_wait(mins(1) + secs(15))
|
|
town:multirun(function()
|
|
wait(secs(1))
|
|
town:wait_build(1, UnitId.TerranAtlas)
|
|
town:build(1, UnitId.TerranDaedala, 65, true)
|
|
end)
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.general_scrapyard_palladium_mantle(melee_ai, town)
|
|
melee_ai:dynamic_wait(secs(25))
|
|
town:multirun(function()
|
|
town:wait_build(1, UnitId.TerranFulcrum)
|
|
town:build(1, UnitId.TerranScrapyard, 69)
|
|
town:wait_build(2, UnitId.TerranFulcrum)
|
|
town:build(2, UnitId.TerranScrapyard, 69)
|
|
town:wait_build(3, UnitId.TerranFulcrum)
|
|
town:build(1, UnitId.TerranPalladium, 69)
|
|
town:wait_build(4, UnitId.TerranFulcrum)
|
|
town:build(2, UnitId.TerranPalladium, 69)
|
|
end)
|
|
melee_ai:dynamic_wait(secs(40) + secs(40))
|
|
town:build(2, UnitId.TerranMantle, 70)
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.general_vestry_palladium_starport_rotary(melee_ai, town)
|
|
town:multirun(function()
|
|
town:wait_build(1, UnitId.TerranStockade)
|
|
town:build(1, UnitId.TerranVestry, 69)
|
|
town:wait_build(1, UnitId.TerranFulcrum)
|
|
town:build(1, UnitId.TerranPalladium, 69)
|
|
town:wait_build(1, UnitId.TerranAtlas)
|
|
wait(secs(1))
|
|
town:build(1, UnitId.TerranStarport, 70)
|
|
town:wait_build(1, UnitId.TerranStarport)
|
|
town:build(1, UnitId.TerranRotary, 69)
|
|
end)
|
|
melee_ai:dynamic_wait(secs(40) + secs(25) + secs(50))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.general_fulcrum_follow_up(melee_ai, town)
|
|
melee_ai:dynamic_wait(secs(20))
|
|
town:build(3, UnitId.TerranFulcrum, 70)
|
|
melee_ai:dynamic_wait(secs(45))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.general_mega_tech_buildup(melee_ai, town)
|
|
town:multirun(function()
|
|
town:wait_build(1, UnitId.TerranFulcrum)
|
|
town:build(1, UnitId.TerranScrapyard, 69)
|
|
town:wait_build(2, UnitId.TerranFulcrum)
|
|
town:build(2, UnitId.TerranScrapyard, 69)
|
|
town:build(1, UnitId.TerranQuarry, 69)
|
|
town:wait_build(3, UnitId.TerranFulcrum)
|
|
town:build(1, UnitId.TerranPalladium, 69)
|
|
town:wait_build(4, UnitId.TerranFulcrum)
|
|
town:build(2, UnitId.TerranPalladium, 69)
|
|
town:wait_build(1, UnitId.TerranAtlas)
|
|
town:build(2, UnitId.TerranStarport, 70)
|
|
town:wait_build(1, UnitId.TerranStarport)
|
|
town:build(1, UnitId.TerranRotary, 69)
|
|
town:wait_build(2, UnitId.TerranStarport)
|
|
town:build(2, UnitId.TerranRotary, 69)
|
|
town:wait_build(5, UnitId.TerranFulcrum)
|
|
town:build(3, UnitId.TerranPalladium, 69)
|
|
town:wait_build(6, UnitId.TerranFulcrum)
|
|
town:build(4, UnitId.TerranPalladium, 69)
|
|
town:wait_build(3, UnitId.TerranStarport)
|
|
town:build(3, UnitId.TerranRotary, 69)
|
|
town:wait_build(4, UnitId.TerranStarport)
|
|
town:build(4, UnitId.TerranRotary, 69)
|
|
town:wait_build(5, UnitId.TerranStarport)
|
|
town:build(5, UnitId.TerranRotary, 69)
|
|
town:wait_build(1, UnitId.TerranDaedala)
|
|
town:wait_build(6, UnitId.TerranStarport)
|
|
town:build(1, UnitId.TerranCommandment, 69)
|
|
town:wait_build(7, UnitId.TerranStarport)
|
|
town:build(2, UnitId.TerranCommandment, 69)
|
|
town:wait_build(8, UnitId.TerranStarport)
|
|
town:build(3, UnitId.TerranCommandment, 69)
|
|
town:build(2, UnitId.TerranNaniteAssembly, 69)
|
|
town:wait_build(1, UnitId.TerranNaniteAssembly)
|
|
town:build(1, UnitId.TerranHadron, 69)
|
|
end)
|
|
melee_ai:dynamic_wait(mins(1) + secs(15))
|
|
town:build(1, UnitId.TerranStarpad, 70)
|
|
melee_ai:dynamic_wait(secs(15) + mins(1) + secs(15))
|
|
town:build(6, UnitId.TerranFulcrum, 70)
|
|
melee_ai:dynamic_wait(mins(1) + secs(40))
|
|
end
|
|
|
|
---@param melee_ai MeleeAI
|
|
---@param town Town
|
|
function Tier2.general_vestry_scrapyard_palladium_starport_commandment(melee_ai, town)
|
|
town:multirun(function()
|
|
town:wait_build(1, UnitId.TerranStockade)
|
|
town:build(1, UnitId.TerranVestry, 69)
|
|
town:wait_build(1, UnitId.TerranFulcrum)
|
|
town:build(1, UnitId.TerranScrapyard, 69)
|
|
town:wait_build(2, UnitId.TerranFulcrum)
|
|
town:build(2, UnitId.TerranPalladium, 69)
|
|
town:wait_build(3, UnitId.TerranFulcrum)
|
|
wait(secs(1))
|
|
town:wait_build(1, UnitId.TerranAtlas)
|
|
town:build(2, UnitId.TerranStarport, 70)
|
|
town:wait_build(2, UnitId.TerranStarport)
|
|
town:build(2, UnitId.TerranCommandment, 69)
|
|
town:wait_build(1, UnitId.TerranCommandment)
|
|
melee_ai:dynamic_wait(secs(15))
|
|
end)
|
|
melee_ai:dynamic_wait(secs(15))
|
|
town:build(1, UnitId.TerranFulcrum, 70)
|
|
melee_ai:dynamic_wait(secs(5) + secs(35))
|
|
town:build(1, UnitId.TerranStarpad, 70)
|
|
melee_ai:dynamic_wait(secs(30))
|
|
town:build(2, UnitId.TerranFulcrum, 70)
|
|
melee_ai:dynamic_wait(secs(25) + secs(50))
|
|
Tier2.acquire(melee_ai, town)
|
|
town:build(3, UnitId.TerranFulcrum, 70)
|
|
melee_ai:dynamic_wait(secs(50))
|
|
end
|
|
|
|
return Tier2
|