cosmonarchy-bw-prerelease/mpq/lua/melee/zerg/build/tier2.lua

513 lines
19 KiB
Lua
Raw Normal View History

2026-09-09 14:52:21 +00:00
---@class ZergTier2
local Tier2 = {}
---@param melee_ai MeleeAI
---@param town Town
function Tier2.hydrith_iroliris_hachirosk_zorkiz(melee_ai, town)
town:build(1, UnitId.ZergIrolIris, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(15))
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(25))
town:build(1, UnitId.ZergZorkizShroud, 70, true)
melee_ai:dynamic_wait(secs(25))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.zorkiz_iroliris_tethvith(melee_ai, town)
town:build(1, UnitId.ZergIrolIris, 70, true)
melee_ai:dynamic_wait(secs(20) + secs(15))
town:build(1, UnitId.ZergZorkizShroud, 70, true)
melee_ai:dynamic_wait(secs(15))
town:build(1, UnitId.ZergTethvithSwamp, 70, true)
town:build(1, UnitId.ZergCaphrolosk, 70)
melee_ai:dynamic_wait(secs(45))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.hydrith_quazeth_iroliris_vornath_kalkiir(melee_ai, town)
town:build(1, UnitId.ZergIrolIris, 70, true)
melee_ai:dynamic_wait(secs(15))
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
end)
melee_ai:dynamic_wait(secs(15))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.alkag_iroliris_hachirosk(melee_ai, town)
melee_ai:dynamic_wait(secs(55))
town:build(1, UnitId.ZergIrolIris, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(15))
town:build(2, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(mins(1) + secs(5))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.potency_iroliris_hachirosk_alkag(melee_ai, town)
town:build(1, UnitId.ZergIrolIris, 70, true)
melee_ai:dynamic_wait(secs(40))
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(25))
town:multirun(function()
town:wait_build(1, UnitId.ZergHydrithDen)
melee_ai:dynamic_wait(secs(15))
town:build(1, UnitId.ZergSkibactScab, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergTethvithSwamp, 70, true)
town:wait_build(1, UnitId.ZergIrolIris)
melee_ai:dynamic_wait(mins(1))
town:build(1, UnitId.ZergAlkagIteth, 70, true)
end)
melee_ai:dynamic_wait(secs(25))
town:build(4, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(mins(1) + secs(40))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.earthen_iroliris_hachirosk_vornath_mutath_matravil(melee_ai, town)
town:build(1, UnitId.ZergIrolIris, 70, true)
melee_ai:dynamic_wait(secs(40))
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(25))
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
town:wait_build(1, UnitId.ZergIrolIris)
town:build(1, UnitId.ZergMutathSpire, 70, true)
melee_ai:dynamic_wait(mins(1))
town:build(1, UnitId.ZergMatravilNest, 70, true)
end)
melee_ai:dynamic_wait(mins(2) + secs(5))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.flood_vornath_kalkiir_mutath_tosvrol_then_iroliris_caphrolosk_hachirosk(melee_ai, town)
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
town:wait_build(1, UnitId.ZergIrolIris)
town:wait_build(3, UnitId.ZergHachirosk, false)
melee_ai:dynamic_wait(secs(15))
town:build(1, UnitId.ZergMutathSpire, 70, true)
town:wait_build(1, UnitId.ZergMutathSpire)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergTosvrolHaunt, 70, true)
end)
melee_ai:dynamic_wait(secs(25))
town:multirun(function()
wait(secs(1))
town:build(1, UnitId.ZergIrolIris, 70, true)
end)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergCaphrolosk, 70)
melee_ai:dynamic_wait(mins(1) + secs(20))
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(25))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.ultrav_iroliris_caphrolosk_buildup(melee_ai, town)
town:multirun(function()
wait(secs(1))
town:build(1, UnitId.ZergIrolIris, 70, true)
end)
melee_ai:dynamic_wait(secs(55))
town:build(1, UnitId.ZergCaphrolosk, 70)
melee_ai:dynamic_wait(mins(1) + secs(15))
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
town:wait_build(1, UnitId.ZergZorkizShroud)
town:wait_build(2, UnitId.ZergHachirosk, false)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergUlgorgCavern, 70, true)
melee_ai:dynamic_wait(secs(20))
town:wait_build(1, UnitId.ZergHydrithDen)
town:build(1, UnitId.ZergSkibactScab, 70, true)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergTethvithSwamp, 70, true)
town:wait_build(1, UnitId.ZergIrolIris)
melee_ai:dynamic_wait(secs(40))
town:build(1, UnitId.ZergMatravilNest, 70, true)
town:wait_build(1, UnitId.ZergOthstolOviform)
melee_ai:dynamic_wait(secs(25))
town:build(1, UnitId.ZergGathtelosk, 50)
end)
melee_ai:dynamic_wait(secs(30))
town:build(1, UnitId.ZergZorkizShroud, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(45))
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(40))
town:build(1, UnitId.ZergHydrithDen, 70, true)
melee_ai:dynamic_wait(secs(50))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.instant_iroliris_vornath_kalkiir(melee_ai, town)
town:multirun(function()
wait(secs(1))
town:build(1, UnitId.ZergIrolIris, 70, true)
end)
melee_ai:dynamic_wait(secs(25))
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(mins(3) + secs(20))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
end)
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.othstol_iroliris_buildup(melee_ai, town)
town:build(1, UnitId.ZergIrolIris, 70, true)
melee_ai:dynamic_wait(secs(40))
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(25))
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:wait_build(1, UnitId.ZergHydrithDen)
town:build(1, UnitId.ZergSkibactScab, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:wait_build(1, UnitId.ZergZorkizShroud)
town:build(1, UnitId.ZergUlgorgCavern, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergTethvithSwamp, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergZozarcGorge, 70, true)
town:wait_build(1, UnitId.ZergIrolIris)
melee_ai:dynamic_wait(secs(40))
town:build(1, UnitId.ZergMatravilNest, 70, true)
town:wait_build(1, UnitId.ZergOthstolOviform)
town:build(1, UnitId.ZergGathtelosk, 50)
town:wait_build(1, UnitId.ZergGathtelosk, false)
town:wait_build(2, UnitId.ZergHachirosk, false)
end)
town:build(1, UnitId.ZergZorkizShroud, 70, true)
melee_ai:dynamic_wait(secs(40))
town:build(1, UnitId.ZergHydrithDen, 70, true)
melee_ai:dynamic_wait(secs(15))
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(5))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.gates_buildup_vornath_hachirosk_iroliris(melee_ai, town)
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(secs(40))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
melee_ai:dynamic_wait(secs(20))
town:wait_build(1, UnitId.ZergHydrithDen)
melee_ai:dynamic_wait(secs(25))
town:build(1, UnitId.ZergSkibactScab, 70, true)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergTethvithSwamp, 70, true)
melee_ai:dynamic_wait(secs(20))
town:wait_build(1, UnitId.ZergZorkizShroud)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergUlgorgCavern, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergZozarcGorge, 70, true)
town:wait_build(1, UnitId.ZergIrolIris)
melee_ai:dynamic_wait(mins(8) + secs(20))
town:multirun(function()
wait(secs(1))
town:build(1, UnitId.ZergOthstolOviform, 65, true)
end)
end)
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(secs(25))
town:build(2, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(15))
town:multirun(function()
wait(secs(1))
town:build(1, UnitId.ZergIrolIris, 70, true)
end)
melee_ai:dynamic_wait(secs(30))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.pressure_iroliris_vornath_skibact_tethvith(melee_ai, town)
town:multirun(function()
wait(secs(1))
town:build(1, UnitId.ZergIrolIris, 70, true)
end)
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
melee_ai:dynamic_wait(secs(25))
town:wait_build(1, UnitId.ZergHydrithDen)
melee_ai:dynamic_wait(mins(1))
town:build(1, UnitId.ZergSkibactScab, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergTethvithSwamp, 70, true)
end)
melee_ai:dynamic_wait(secs(40))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.big_little_iroliris_buildup_caphrolosk_hachirosk(melee_ai, town)
town:build(1, UnitId.ZergIrolIris, 70, true)
wait(secs(1))
town:multirun(function()
wait(secs(1))
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
town:wait_build(1, UnitId.ZergZorkizShroud)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergUlgorgCavern, 70, true)
town:wait_build(1, UnitId.ZergIrolIris)
town:build(1, UnitId.ZergMutathSpire, 70, true)
town:wait_build(1, UnitId.ZergMutathSpire)
melee_ai:dynamic_wait(mins(3) + secs(20))
town:build(1, UnitId.ZergTosvrolHaunt, 70, true)
end)
melee_ai:dynamic_wait(mins(1) + secs(15))
town:build(1, UnitId.ZergCaphrolosk, 70)
melee_ai:dynamic_wait(mins(1) + secs(45))
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(30))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.birds_iroliris_alkag(melee_ai, town)
town:build(1, UnitId.ZergIrolIris, 70, true)
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
town:wait_build(1, UnitId.ZergIrolIris)
melee_ai:dynamic_wait(secs(40))
town:build(1, UnitId.ZergMutathSpire, 70, true)
melee_ai:dynamic_wait(secs(20))
town:build(1, UnitId.ZergAlkagIteth, 70, true)
end)
melee_ai:dynamic_wait(mins(1) + secs(30))
town:build(2, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(mins(1) + secs(15))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.feint_iroliris_buildup_vornath_hydrith_skibact(melee_ai, town)
town:build(1, UnitId.ZergIrolIris, 70, true)
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(3) + secs(20))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
melee_ai:dynamic_wait(secs(25))
town:wait_build(1, UnitId.ZergHydrithDen)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergSkibactScab, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergTethvithSwamp, 70, true)
town:wait_build(1, UnitId.ZergIrolIris)
melee_ai:dynamic_wait(secs(20))
town:build(1, UnitId.ZergMutathSpire, 70, true)
end)
melee_ai:dynamic_wait(secs(25))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergHydrithDen, 70, true)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergSkibactScab, 70, true)
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.horizon_iroliris_buildup(melee_ai, town)
town:build(1, UnitId.ZergIrolIris, 70, true)
town:multirun(function()
town:wait_build(1, UnitId.ZergHydrithDen)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergSkibactScab, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergTethvithSwamp, 70, true)
melee_ai:dynamic_wait(secs(25))
town:wait_build(1, UnitId.ZergQuazethPool)
town:build(1, UnitId.ZergVornathPond, 70, true)
town:wait_build(1, UnitId.ZergVornathPond)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
melee_ai:dynamic_wait(secs(25))
town:wait_build(1, UnitId.ZergIrolIris)
town:build(1, UnitId.ZergMutathSpire, 70, true)
town:wait_build(1, UnitId.ZergMutathSpire)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergTosvrolHaunt, 70, true)
melee_ai:dynamic_wait(secs(25))
town:build(1, UnitId.ZergMatravilNest, 70, true)
end)
melee_ai:dynamic_wait(mins(2))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.giant_iroliris_caphrolosk_hachirosk_zorkiz_buildup(melee_ai, town)
town:multirun(function()
town:build(1, UnitId.ZergIrolIris, 70, true)
end)
melee_ai:dynamic_wait(secs(15) + secs(5))
town:wait_build(1, UnitId.ZergIrolIris)
town:build(1, UnitId.ZergCaphrolosk, 70)
melee_ai:dynamic_wait(secs(30))
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(30))
town:build(1, UnitId.ZergZorkizShroud, 70, true)
melee_ai:dynamic_wait(secs(25))
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(mins(1))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
town:wait_build(1, UnitId.ZergIrolIris)
town:build(1, UnitId.ZergMatravilNest, 70, true)
melee_ai:dynamic_wait(mins(1))
town:build(1, UnitId.ZergMutathSpire, 70, true)
melee_ai:dynamic_wait(mins(2) + secs(45))
town:build(1, UnitId.ZergTosvrolHaunt, 70, true)
end)
melee_ai:dynamic_wait(secs(25))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.swarm_iroliris_vornathkalkiir_zorkiz_caphrolosk_hachirosk(melee_ai, town)
town:multirun(function()
town:build(1, UnitId.ZergIrolIris, 70, true)
end)
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(secs(40))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
end)
melee_ai:dynamic_wait(mins(1))
town:build(1, UnitId.ZergZorkizShroud, 70, true)
melee_ai:dynamic_wait(secs(20))
town:build(1, UnitId.ZergCaphrolosk, 70)
melee_ai:dynamic_wait(secs(30))
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(15))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.subjugation_quazeth_iroliris_buildup(melee_ai, town)
melee_ai:dynamic_wait(secs(30))
town:build(1, UnitId.ZergQuazethPool, 70, true)
melee_ai:dynamic_wait(secs(25))
town:multirun(function()
town:build(1, UnitId.ZergIrolIris, 70, true)
end)
melee_ai:dynamic_wait(secs(50))
town:multirun(function()
town:wait_build(1, UnitId.ZergHydrithDen)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergSkibactScab, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergTethvithSwamp, 70, true)
town:wait_build(1, UnitId.ZergIrolIris)
town:build(1, UnitId.ZergMatravilNest, 70, true)
end)
melee_ai:dynamic_wait(secs(15))
town:build(1, UnitId.ZergCaphrolosk, 70)
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(45))
town:build(1, UnitId.ZergZorkizShroud, 70, true)
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.storm_iroliris_hachirosk_vornathkalkiir(melee_ai, town)
town:multirun(function()
town:build(1, UnitId.ZergIrolIris, 70, true)
end)
melee_ai:dynamic_wait(secs(15))
town:build(3, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(15))
town:build(4, UnitId.ZergHachirosk, 115)
melee_ai:dynamic_wait(secs(15))
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(secs(30))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
end)
melee_ai:dynamic_wait(secs(30))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.time_iroliris_vornathkalkiir(melee_ai, town)
town:multirun(function()
town:build(1, UnitId.ZergIrolIris, 70, true)
end)
melee_ai:dynamic_wait(secs(15))
town:multirun(function()
town:wait_build(1, UnitId.ZergQuazethPool)
melee_ai:dynamic_wait(secs(50))
town:build(1, UnitId.ZergVornathPond, 70, true)
melee_ai:dynamic_wait(mins(1) + secs(40))
town:build(1, UnitId.ZergKalkiirLake, 70, true)
end)
melee_ai:dynamic_wait(secs(30))
end
---@param melee_ai MeleeAI
---@param town Town
function Tier2.coil_iroliris_hachirosk(melee_ai, town)
town:multirun(function()
town:build(1, UnitId.ZergIrolIris, 70, true)
end)
melee_ai:dynamic_wait(secs(30) + mins(1) + secs(5))
town:build(2, UnitId.ZergHachirosk, 115)
end
return Tier2