-
Notifications
You must be signed in to change notification settings - Fork 30
Zerg Basics
DrInfy edited this page Apr 12, 2020
·
11 revisions
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 used 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.
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
])
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 = 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),
)
- Plans and Build Order
- Settings, debug and logging
- Structure and Life Cycle
- Unit Roles
- Unit Cache
- Running Games
- Converting Sharpy bot from before 2.0 version
- Converting Sharpy KnowledgeBot to SkeletonBot
- Converting Python bot to minimal Sharpy bot
- OLD: Extending Your Existing Bot With Sharpy
- Packaging For Ladders
- Extending Sharpy
- Advanced Build Order tricks
- Machine Learning With Sharpy