Zerg Basics - DrInfy/sharpy-sc2 GitHub Wiki
Use ZergUnit to produce all new units and it will also morph units automatically if the desired unit is a unit that should be morphed. It is recommended to use ZergUnit for all units for zerg, but MorphRavager morphs Roaches to Ravagers and other morph classes are also available.
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
Tech(UpgradeId.ZERGLINGMOVEMENTSPEED) # Zergling speed
Tech(UpgradeId.ZERGLINGATTACKSPEED) # Zergling attack speed
Tech(UpgradeId.GLIALRECONSTITUTION) # Roach speed
Tech(UpgradeId.ZERGMISSILEWEAPONSLEVEL1)
Tech(UpgradeId.ZERGMISSILEWEAPONSLEVEL2)
Tech(UpgradeId.ZERGMISSILEWEAPONSLEVEL3)
Tech(UpgradeId.ZERGGROUNDARMORSLEVEL1)
Tech(UpgradeId.ZERGGROUNDARMORSLEVEL2)
Tech(UpgradeId.ZERGGROUNDARMORSLEVEL3)
Tech(UpgradeId.ZERGMELEEWEAPONSLEVEL1)
Tech(UpgradeId.ZERGMELEEWEAPONSLEVEL2)
Tech(UpgradeId.ZERGMELEEWEAPONSLEVEL3)
# Hydralisk upgrades
Tech(UpgradeId.EVOLVEGROOVEDSPINES) # Hydralisk range
Tech(UpgradeId.EVOLVEMUSCULARAUGMENTS) # Hydralisk speed
Tech(UpgradeId.CHITINOUSPLATING) # Ultralisk armor
Tech(UpgradeId.ANABOLICSYNTHESIS) # Ultralisk speed
Extractor Trick (at 14 supply)
extractor_trick = SequentialList(
Step(
Supply(14),
BuildGas(1),
skip=UnitExists(
UnitTypeId.EXTRACTOR, include_killed=True, include_pending=True
),
),
Step(
UnitExists(
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(
UnitExists(UnitTypeId.EXTRACTOR),
CancelBuilding(UnitTypeId.EXTRACTOR, to_count=0),
skip=UnitExists(
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(
Supply(14),
extractor_trick,
skip=UnitExists(
UnitTypeId.EXTRACTOR,
1,
include_killed=True,
include_not_ready=False,
),
),
Expand(2),
)