Skip to content
august-k edited this page Apr 11, 2020 · 11 revisions

Zerg specific acts

Zerg specific tactics

Use ZergUnit to produce new units. MorphRavager morphs Roaches to Ravagers.

SpreadCreep for a simple creep spread, requires enough queens for them to have energy

InjectLarva For injecting larva. Requires free Queens.

Vs Terran flying buildings

Use CounterTerranTie as buildorder wrapper to prevent Terran bots from flying away with their buildings and stalling the game.

final_build_order = CounterTerranTie([build_order])
plan = BuildOrder([
    CounterTerranTie([build_order])
    tactics
])

Common Upgrades

ActTech(UpgradeId.ZERGLINGMOVEMENTSPEED)  # Zergling speed
ActTech(UpgradeId.ZERGLINGATTACKSPEED)  # Zergling attack speed
ActTech(UpgradeId.GLIALRECONSTITUTION)  # Roach speed

ActTech(UpgradeId.ZERGMISSILEWEAPONSLEVEL1)
ActTech(UpgradeId.ZERGMISSILEWEAPONSLEVEL2)
ActTech(UpgradeId.ZERGMISSILEWEAPONSLEVEL3)

ActTech(UpgradeId.ZERGGROUNDARMORSLEVEL1)
ActTech(UpgradeId.ZERGGROUNDARMORSLEVEL2)
ActTech(UpgradeId.ZERGGROUNDARMORSLEVEL3)

ActTech(UpgradeId.ZERGMELEEWEAPONSLEVEL1)
ActTech(UpgradeId.ZERGMELEEWEAPONSLEVEL2)
ActTech(UpgradeId.ZERGMELEEWEAPONSLEVEL3)

# Hydralisk upgrades
ActTech(UpgradeId.RESEARCH_GROOVEDSPINES,
ActTech(UpgradeId.RESEARCH_MUSCULARAUGMENTS)

ActTech(UpgradeId.CHITINOUSPLATING)  # Ultralisk armor
ActTech(UpgradeId.ANABOLICSYNTHESIS)  # Ultralisk speed

Extractor Trick (at 14 supply)

extractor_trick = SequentialList(
    Step(
        RequiredSupply(14),
        StepBuildGas(1),
        skip=RequiredUnitExists(
            UnitTypeId.EXTRACTOR, include_killed=True, include_pending=True
        ),
    ),
    Step(
        RequiredUnitExists(
            UnitTypeId.EXTRACTOR,
            1,
            include_pending=True,
            include_not_ready=True,
        ),
        ZergUnit(UnitTypeId.DRONE, to_count=14),
    ),
    # SequentialList will take care of making sure the drone was made
    Step(
        RequiredUnitExists(UnitTypeId.EXTRACTOR),
        CancelBuilding(UnitTypeId.EXTRACTOR, to_count=0),
        skip=RequiredUnitExists(
            UnitTypeId.EXTRACTOR,
            1,
            include_killed=True,
            include_not_ready=False,
        ),
    ),
)

Example usage:

opening = SequentialList(
    Step(None, ZergUnit(UnitTypeId.DRONE, to_count=14, only_once=True)),
    Step(
        RequiredSupply(14),
        extractor_trick,
        skip=RequiredUnitExists(
            UnitTypeId.EXTRACTOR,
            1,
            include_killed=True,
            include_not_ready=False,
        ),
    ),
    ActExpand(2),
)
Clone this wiki locally