private BuildList MainBuild() { BuildList result = new BuildList(); result.Morph(UnitTypes.DRONE, 14); result.Building(UnitTypes.HATCHERY, 2); result.Building(UnitTypes.SPAWNING_POOL); result.Morph(UnitTypes.OVERLORD, 2); result.Morph(UnitTypes.DRONE, 3); result.Train(UnitTypes.QUEEN, 2); result.Building(UnitTypes.EXTRACTOR); result.Morph(UnitTypes.DRONE, 3); result.Building(UnitTypes.SPINE_CRAWLER, Natural, NaturalDefensePos, 2, () => Completed(UnitTypes.HATCHERY) >= 2 && SpineDefense); //result.Morph(UnitTypes.ZERGLING, 4); //result.Morph(UnitTypes.ZERGLING, 4); result.Building(UnitTypes.HATCHERY, () => { return(AvailableMineralPatches() <= 12); }); //result.If(() => //{ // return Gas() < 100 // || Tyr.Bot.Observation.Observation.RawData.Player.UpgradeIds.Contains(66) // || Tyr.Bot.UnitManager.ActiveOrders.Contains(1253); //}); //result.Morph(UnitTypes.ZERGLING, 12); //result.If(() => //{ // return Gas() < 150 // || Count(UnitTypes.HIVE) > 0 // || Completed(UnitTypes.INFESTATION_PIT) == 0; //}); //result.If(() => { return !TimingAttackTask.Task.AttackSent || Count(UnitTypes.LAIR) + Count(UnitTypes.HIVE) > 0; }); //result.Morph(UnitTypes.ZERGLING, 20); //result.If(() => { return Completed(UnitTypes.EVOLUTION_CHAMBER) < 2 || ResearchingUpgrades + (MeleeUpgrade / 3) + (ArmorUpgrade / 3) == 2; }); //result.Morph(UnitTypes.ZERGLING, 400); return(result); }
private BuildList DefendFourRax() { BuildList result = new BuildList(); result.If(() => FourRaxSuspected && Count(UnitTypes.ROACH) + Count(UnitTypes.HYDRALISK) < 15); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.OVERLORD); result.Morph(UnitTypes.DRONE, 13); result.Morph(UnitTypes.DRONE, () => Count(UnitTypes.HATCHERY) < 2); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.OVERLORD); result.Morph(UnitTypes.DRONE); result.Building(UnitTypes.SPAWNING_POOL); result.Train(UnitTypes.QUEEN, 2); result.Morph(UnitTypes.DRONE, 6); result.Building(UnitTypes.EXTRACTOR); result.Building(UnitTypes.ROACH_WARREN); result.Morph(UnitTypes.DRONE, 6); result.Train(UnitTypes.QUEEN, 6); result.Morph(UnitTypes.ROACH, 10); result.Building(UnitTypes.SPINE_CRAWLER, Natural, NaturalDefensePos, 2); result.Building(UnitTypes.SPINE_CRAWLER, Natural, NaturalDefensePos, 2, () => Count(UnitTypes.ROACH) >= 10); result.Morph(UnitTypes.ROACH, 5); return(result); }
private BuildList MainBuild() { BuildList result = new BuildList(); result.If(() => { return(!StrategyAnalysis.WorkerRush.Get().Detected || Count(UnitTypes.ZERGLING) >= 10); }); result.Morph(UnitTypes.DRONE, 14); result.Building(UnitTypes.SPAWNING_POOL); result.Building(UnitTypes.SPINE_CRAWLER, Main, MainDefensePos, 2); result.Building(UnitTypes.EXTRACTOR); result.Morph(UnitTypes.DRONE, 4); result.If(() => { return(Count(UnitTypes.QUEEN) > 0); }); result.Building(UnitTypes.ROACH_WARREN); result.Morph(UnitTypes.ROACH, 6); result.If(() => { return(Count(UnitTypes.LAIR) > 0); }); result.Building(UnitTypes.EXTRACTOR); result.Morph(UnitTypes.ROACH, 5, () => { return(!ReaperRush.Get().Detected); }); result.Morph(UnitTypes.OVERSEER); result.Building(UnitTypes.HYDRALISK_DEN); result.Morph(UnitTypes.ROACH, 4, () => { return(!ReaperRush.Get().Detected); }); result.Morph(UnitTypes.HYDRALISK, 5); result.Morph(UnitTypes.OVERSEER); result.Morph(UnitTypes.HYDRALISK, 80); return(result); }
private BuildList Zerglings() { BuildList result = new BuildList(); result.If(() => !GoingUltras); result.If(() => Count(UnitTypes.DRONE) >= 55 && Count(UnitTypes.HATCHERY) >= 4 && Count(UnitTypes.EVOLUTION_CHAMBER) >= 2); result.Morph(UnitTypes.ZERGLING, 130); result.If(() => !Tyr.Bot.Observation.Observation.RawData.Player.UpgradeIds.Contains(UpgradeType.AdrenalGlands)); result.Morph(UnitTypes.ZERGLING, 30); return(result); }
private BuildList Units() { BuildList result = new BuildList(); result.Morph(UnitTypes.ZERGLING, 14, () => Completed(UnitTypes.SPIRE) == 0 && !TimingAttackTask.Task.AttackSent); result.Morph(UnitTypes.MUTALISK, 8, () => Count(UnitTypes.DRONE) >= 20); result.Morph(UnitTypes.MUTALISK, 4, () => Count(UnitTypes.DRONE) >= 20 && Count(UnitTypes.HYDRALISK_DEN) > 0); result.Morph(UnitTypes.OVERSEER, 2, () => Count(UnitTypes.HYDRALISK) > 0); result.Morph(UnitTypes.HYDRALISK, 100, () => Count(UnitTypes.DRONE) >= 20); return(result); }
private BuildList DefendWorkerRush() { BuildList result = new BuildList(); result.If(() => { return(StrategyAnalysis.WorkerRush.Get().Detected); }); result.Morph(UnitTypes.DRONE, 2); result.Building(UnitTypes.SPAWNING_POOL); result.Morph(UnitTypes.ZERGLING, 10); return(result); }
private BuildList WorkerRushDefense() { BuildList result = new BuildList(); result.If(() => Tyr.Bot.EnemyStrategyAnalyzer.WorkerRushDetected); result.Morph(UnitTypes.OVERLORD, 2, () => ExpectedAvailableFood() <= FoodUsed() - 2 || Minerals() >= 500); result.Morph(UnitTypes.DRONE, 8); result.Building(UnitTypes.SPAWNING_POOL); result.Morph(UnitTypes.ZERGLING, 4); result.Morph(UnitTypes.ZERGLING, 10); result.Morph(UnitTypes.OVERLORD); return(result); }
private BuildList Tech() { BuildList result = new BuildList(); result.If(() => { return(Count(UnitTypes.LAIR) + Count(UnitTypes.HIVE) > 0); }); result.Building(UnitTypes.EVOLUTION_CHAMBER, 2); result.Building(UnitTypes.EXTRACTOR, 2); result.Morph(UnitTypes.DRONE, 34); result.If(() => { return(Completed(UnitTypes.LAIR) + Completed(UnitTypes.HIVE) > 0); }); result.Morph(UnitTypes.OVERSEER, 2); result.If(() => { return(MeleeUpgrade + ArmorUpgrade + ResearchingUpgrades >= 4); }); result.Building(UnitTypes.INFESTATION_PIT); return(result); }
private BuildList MainBuild() { BuildList result = new BuildList(); result.Building(UnitTypes.HATCHERY); result.Building(UnitTypes.SPAWNING_POOL); result.Morph(UnitTypes.DRONE, 14); result.Morph(UnitTypes.OVERLORD, 2); result.If(() => Completed(UnitTypes.SPAWNING_POOL) > 0 && Count(UnitTypes.ZERGLING) >= 10); result.Morph(UnitTypes.DRONE, 2); result.Train(UnitTypes.QUEEN, 2); result.Building(UnitTypes.EXTRACTOR); return(result); }
private BuildList Ultras() { BuildList result = new BuildList(); result.If(() => GoingUltras); result.If(() => Count(UnitTypes.DRONE) >= 55 && Count(UnitTypes.HATCHERY) >= 4); result.Morph(UnitTypes.ULTRALISK, 2); result.Upgrade(UpgradeType.AnabolicSynthesis); result.Upgrade(UpgradeType.ChitinousPlating); result.Upgrade(UpgradeType.ZergGroundArmor); result.Upgrade(UpgradeType.ZergMeleeWeapons); result.Morph(UnitTypes.ULTRALISK, 14); return(result); }
private BuildList Zerglings() { BuildList result = new BuildList(); result.Morph(UnitTypes.ZERGLING, 400); return(result); }
public static BuildList Overlords() { BuildList result = new BuildList(); result.If(() => { return(Tyr.Bot.UnitManager.Count(UnitTypes.SPAWNING_POOL) > 0 && Build.FoodUsed() >= Build.ExpectedAvailableFood() - 2); }); result.Morph(UnitTypes.OVERLORD, 25); return(result); }
private BuildList Overlords() { BuildList result = new BuildList(); result.If(() => { return(!StrategyAnalysis.WorkerRush.Get().Detected || (FoodUsed() == ExpectedAvailableFood() && Count(UnitTypes.ZERGLING) >= 4) || Count(UnitTypes.ZERGLING) >= 6); }); result.If(() => { return(Count(UnitTypes.SPAWNING_POOL) > 0 && FoodUsed() >= ExpectedAvailableFood() - 2); }); result.Morph(UnitTypes.OVERLORD, 25); return(result); }
private BuildList Expand() { BuildList result = new BuildList(); result.If(() => { return(TakeExpand); }); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.DRONE, 22); return(result); }
private BuildList MainBuild() { BuildList result = new BuildList(); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.OVERLORD); result.Morph(UnitTypes.DRONE, 14); result.Building(UnitTypes.SPAWNING_POOL); result.Building(UnitTypes.EXTRACTOR); result.Train(UnitTypes.QUEEN, 1); result.Morph(UnitTypes.ZERGLING, 6); result.Upgrade(UpgradeType.MetabolicBoost, () => Gas() >= 100); result.Train(UnitTypes.LAIR, () => Gas() >= 100 && UpgradeType.LookUp[UpgradeType.MetabolicBoost].Started()); if (Hydras) { result.Building(UnitTypes.HYDRALISK_DEN, () => Completed(UnitTypes.LAIR) > 0 && TimingAttackTask.Task.AttackSent); } else { result.Building(UnitTypes.SPIRE, () => Completed(UnitTypes.LAIR) > 0 && TimingAttackTask.Task.AttackSent); } result.Building(UnitTypes.EXTRACTOR, () => Count(UnitTypes.SPIRE) + Count(UnitTypes.HYDRALISK_DEN) > 0); result.Morph(UnitTypes.DRONE, 3, () => Count(UnitTypes.SPIRE) + Count(UnitTypes.HYDRALISK_DEN) > 0); result.Morph(UnitTypes.DRONE, 2); result.Building(UnitTypes.SPORE_CRAWLER, Main, Main.MineralLinePos, () => TotalEnemyCount(UnitTypes.BANSHEE) > 0); result.Morph(UnitTypes.OVERSEER, 1, () => Count(UnitTypes.HYDRALISK) > 0); if (Hydras) { result.Morph(UnitTypes.HYDRALISK, 100, () => Completed(UnitTypes.HYDRALISK_DEN) > 0); } else { result.Morph(UnitTypes.MUTALISK, 100, () => Completed(UnitTypes.SPIRE) > 0); } result.Morph(UnitTypes.ZERGLING, 16); //result.Building(UnitTypes.BANELING_NEST); result.Morph(UnitTypes.ZERGLING, 12); return(result); }
public static BuildList Overlords() { BuildList result = new BuildList(); result.If(() => { return(Tyr.Bot.UnitManager.Count(UnitTypes.SPAWNING_POOL) > 0 && Build.FoodUsed() >= Build.ExpectedAvailableFood() - 2 * Tyr.Bot.UnitManager.Completed(UnitTypes.HATCHERY) - 16 * Tyr.Bot.UnitManager.Completed(UnitTypes.ULTRALISK_CAVERN) - (Tyr.Bot.UnitManager.Count(UnitTypes.HATCHERY) >= 4 && Tyr.Bot.UnitManager.Count(UnitTypes.DRONE) >= 40 ? 8 : 0)); }); result.Morph(UnitTypes.OVERLORD, 25); return(result); }
private BuildList MainBuild() { BuildList result = new BuildList(); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.OVERLORD); result.Morph(UnitTypes.DRONE, 14); result.Building(UnitTypes.HATCHERY); result.Building(UnitTypes.SPAWNING_POOL); result.Train(UnitTypes.QUEEN, 2); result.Building(UnitTypes.EXTRACTOR); //result.Upgrade(UpgradeType.MetabolicBoost, () => Gas() >= 100); result.Train(UnitTypes.LAIR, 1, () => Gas() >= 100); result.Building(UnitTypes.SPORE_CRAWLER, Main, Main.MineralLinePos, () => Count(UnitTypes.LAIR) > 0); result.Building(UnitTypes.SPORE_CRAWLER, Natural, Natural.MineralLinePos, () => Count(UnitTypes.LAIR) > 0); result.Train(UnitTypes.QUEEN, 2, () => Count(UnitTypes.LAIR) > 0); result.Morph(UnitTypes.DRONE, 6); result.Building(UnitTypes.SPIRE); result.Building(UnitTypes.HYDRALISK_DEN, () => Count(UnitTypes.MUTALISK) >= 8); result.Building(UnitTypes.EXTRACTOR); result.Morph(UnitTypes.DRONE, 4); result.Building(UnitTypes.EXTRACTOR, 3); result.If(() => Count(UnitTypes.MUTALISK) >= 9); result.Morph(UnitTypes.DRONE, 16); result.If(() => Count(UnitTypes.MUTALISK) >= 12); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.DRONE, 20); return(result); }
private BuildList Zerglings() { BuildList result = new BuildList(); result.If(() => Tyr.Bot.Frame < HydraTransitionFrame); result.If(() => Count(UnitTypes.HATCHERY) >= 2 && Count(UnitTypes.EXTRACTOR) > 0 && Count(UnitTypes.DRONE) >= 20 && Count(UnitTypes.QUEEN) >= 2 && (!SpineDefense || Count(UnitTypes.SPINE_CRAWLER) >= 2)); result.Morph(UnitTypes.ZERGLING, 8); result.If(() => AvailableMineralPatches() > 12 || Count(UnitTypes.HATCHERY) >= 3); result.Morph(UnitTypes.ZERGLING, 12); result.If(() => { return(Gas() < 150 || Count(UnitTypes.HIVE) > 0 || Completed(UnitTypes.INFESTATION_PIT) == 0 || AllowHydraTransition); }); result.If(() => { return(!TimingAttackTask.Task.AttackSent || Count(UnitTypes.LAIR) + Count(UnitTypes.HIVE) > 0 || AllowHydraTransition); }); result.Morph(UnitTypes.ZERGLING, 20); result.If(() => { return(Completed(UnitTypes.EVOLUTION_CHAMBER) < 2 || ResearchingUpgrades + (MeleeUpgrade / 3) + (ArmorUpgrade / 3) == 2 || AllowHydraTransition); }); result.Morph(UnitTypes.ZERGLING, 400); return(result); }
private BuildList AntiLifting() { BuildList result = new BuildList(); result.If(() => { if (!Lifting.Get().Detected) { return(false); } // First destroy non-lifted buildings. foreach (Unit enemy in Bot.Main.Enemies()) { if (UnitTypes.BuildingTypes.Contains(enemy.UnitType) && !enemy.IsFlying) { return(false); } } return(true); }); result.Building(UnitTypes.EXTRACTOR, 2); result.Building(UnitTypes.SPIRE); result.Morph(UnitTypes.MUTALISK, 10); return(result); }
private BuildList MainBuild() { BuildList result = new BuildList(); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.OVERLORD); result.Morph(UnitTypes.DRONE, 14); result.Building(UnitTypes.SPAWNING_POOL); result.Building(UnitTypes.EXTRACTOR); result.Train(UnitTypes.QUEEN, 1); result.Morph(UnitTypes.ZERGLING, 6); result.Morph(UnitTypes.DRONE, 2); result.Upgrade(UpgradeType.MetabolicBoost); result.Morph(UnitTypes.ZERGLING, 16); //result.Building(UnitTypes.BANELING_NEST); result.Morph(UnitTypes.ZERGLING, 80); return(result); }
private BuildList Hydralisks() { BuildList result = new BuildList(); result.If(() => Tyr.Bot.Frame >= HydraTransitionFrame); result.Morph(UnitTypes.DRONE, 14); result.Building(UnitTypes.HATCHERY, 2); result.Morph(UnitTypes.DRONE, 6); result.Train(UnitTypes.QUEEN, 2); result.Building(UnitTypes.EXTRACTOR); result.Building(UnitTypes.EXTRACTOR, () => Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.REAPER) >= 2); result.Train(UnitTypes.LAIR, 1); result.Building(UnitTypes.EXTRACTOR, () => Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.REAPER) < 2); result.Morph(UnitTypes.DRONE, 6, () => Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.REAPER) >= 2); result.Building(UnitTypes.HYDRALISK_DEN, () => Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.REAPER) >= 2 && Completed(UnitTypes.LAIR) > 0); result.Morph(UnitTypes.HYDRALISK, 5, () => Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.REAPER) >= 2 && Completed(UnitTypes.HYDRALISK_DEN) > 0); result.Building(UnitTypes.HATCHERY); result.Train(UnitTypes.QUEEN, 3); result.Morph(UnitTypes.DRONE, 5); result.Building(UnitTypes.HYDRALISK_DEN, () => Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.REAPER) < 2); result.Morph(UnitTypes.DRONE, 8); result.Morph(UnitTypes.HYDRALISK, 5, () => Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.REAPER) < 2); result.Morph(UnitTypes.OVERSEER, 2); result.Building(UnitTypes.EXTRACTOR, 2); result.Morph(UnitTypes.DRONE, 5); result.Morph(UnitTypes.HYDRALISK, 10); result.Morph(UnitTypes.INFESTOR, 4, () => Completed(UnitTypes.INFESTATION_PIT) > 0); result.Morph(UnitTypes.DRONE, 20); result.Upgrade(UpgradeType.GroovedSpines); result.Upgrade(UpgradeType.MuscularAugments); result.Building(UnitTypes.INFESTATION_PIT, () => Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.COLOSUS) > 0); result.Building(UnitTypes.EXTRACTOR, 2, () => Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.COLOSUS) > 0); result.Upgrade(UpgradeType.PathogenGlands); result.Upgrade(UpgradeType.NeuralParasite); result.Morph(UnitTypes.HYDRALISK, 10); result.Building(UnitTypes.EVOLUTION_CHAMBER, 2); result.Upgrade(UpgradeType.ZergMissileWeapons); result.Upgrade(UpgradeType.ZergGroundArmor); result.Building(UnitTypes.HATCHERY); result.Building(UnitTypes.EXTRACTOR, 2); result.Train(UnitTypes.QUEEN, 4); result.Morph(UnitTypes.HYDRALISK, 50); return(result); }
private BuildList Units() { BuildList result = new BuildList(); result.If(() => !FourRaxSuspected || Count(UnitTypes.ROACH) + Count(UnitTypes.HYDRALISK) >= 15); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.OVERLORD); result.Morph(UnitTypes.DRONE, 13); result.Morph(UnitTypes.DRONE, () => Count(UnitTypes.HATCHERY) < 2); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.OVERLORD); result.Morph(UnitTypes.DRONE); result.Building(UnitTypes.SPAWNING_POOL); result.Building(UnitTypes.SPINE_CRAWLER, Natural, NaturalDefensePos, 2, () => SmellCheese); result.Building(UnitTypes.SPINE_CRAWLER, Natural, NaturalDefensePos, 2, () => SmellCheese && !ProxyCannons); result.Train(UnitTypes.QUEEN, 2); result.Train(UnitTypes.QUEEN, 4, () => SuspectBanshees); result.Train(UnitTypes.QUEEN, 2, () => !SmellCheese); result.Train(UnitTypes.QUEEN, 20, () => TempestDetected && Minerals() >= 450); result.Morph(UnitTypes.ZERGLING, 10, () => SmellCheese && Bot.Main.EnemyStrategyAnalyzer.Count(UnitTypes.PHOTON_CANNON) < 4); result.Morph(UnitTypes.ZERGLING, 10, () => SmellCheese && !ProxyCannons && Bot.Main.EnemyStrategyAnalyzer.Count(UnitTypes.PHOTON_CANNON) < 4); result.Morph(UnitTypes.DRONE, 6, () => !SuspectBanshees || Count(UnitTypes.QUEEN) >= 6 || Minerals() >= 250); result.Building(UnitTypes.EXTRACTOR); result.Train(UnitTypes.QUEEN, 6, () => SuspectBanshees); result.Morph(UnitTypes.ZERGLING, 10, () => !ProxyCannons && (Bot.Main.EnemyRace == Race.Protoss || SmellCheese) && Bot.Main.EnemyStrategyAnalyzer.Count(UnitTypes.PHOTON_CANNON) < 4); result.Train(UnitTypes.QUEEN, 2, () => SmellCheese); result.Building(UnitTypes.EXTRACTOR, () => SuspectBanshees && Minerals() >= 300); result.Train(UnitTypes.LAIR, 1); result.Morph(UnitTypes.OVERSEER, 2, () => SuspectBanshees); result.Train(UnitTypes.QUEEN, 14, () => SuspectBanshees); result.Upgrade(UpgradeType.MetabolicBoost, () => SuspectBanshees && Completed(UnitTypes.QUEEN) >= 6 && Bot.Main.EnemyStrategyAnalyzer.TotalCount(UnitTypes.HELLION) == 0); result.Morph(UnitTypes.ZERGLING, 4, () => SuspectBanshees && Completed(UnitTypes.QUEEN) >= 6 && Bot.Main.EnemyStrategyAnalyzer.TotalCount(UnitTypes.HELLION) == 0 && UpgradeType.LookUp[UpgradeType.MetabolicBoost].Done()); result.Building(UnitTypes.INFESTATION_PIT, () => SuspectBanshees); result.Upgrade(UpgradeType.PathogenGlands, () => SuspectBanshees); result.Morph(UnitTypes.INFESTOR, 4, () => Completed(UnitTypes.INFESTATION_PIT) > 0 && SuspectBanshees); result.Building(UnitTypes.HYDRALISK_DEN, () => SuspectBanshees); result.Upgrade(UpgradeType.GroovedSpines, () => SuspectBanshees); result.Upgrade(UpgradeType.MuscularAugments, () => SuspectBanshees); result.Morph(UnitTypes.HYDRALISK, 10, () => SuspectBanshees); result.Train(UnitTypes.QUEEN, 6); result.Morph(UnitTypes.DRONE, 10); result.Building(UnitTypes.HATCHERY, () => !SuspectBanshees || Completed(UnitTypes.HYDRALISK) >= 10); result.Building(UnitTypes.HYDRALISK_DEN, () => !SuspectBanshees); result.Building(UnitTypes.EXTRACTOR); result.Morph(UnitTypes.DRONE, 10); result.Morph(UnitTypes.HYDRALISK, 10); result.Upgrade(UpgradeType.GroovedSpines); result.Upgrade(UpgradeType.MuscularAugments); result.Morph(UnitTypes.DRONE, 10); result.Building(UnitTypes.HATCHERY); result.Building(UnitTypes.EXTRACTOR, 2); result.Morph(UnitTypes.DRONE, 10); result.Building(UnitTypes.EXTRACTOR, 2); result.Morph(UnitTypes.OVERSEER, 2, () => !SuspectBanshees); result.Building(UnitTypes.EVOLUTION_CHAMBER); result.Upgrade(UpgradeType.ZergMissileWeapons); result.Building(UnitTypes.EVOLUTION_CHAMBER); result.Upgrade(UpgradeType.ZergGroundArmor); result.Building(UnitTypes.INFESTATION_PIT, () => UpgradeType.LookUp[UpgradeType.ZergMissileWeapons1].Started() && !SuspectBanshees); result.Morph(UnitTypes.INFESTOR, 4, () => Completed(UnitTypes.INFESTATION_PIT) > 0 && !SuspectBanshees); result.Upgrade(UpgradeType.PathogenGlands); result.Upgrade(UpgradeType.NeuralParasite, () => Bot.Main.EnemyRace != Race.Terran || (Minerals() >= 600 && Gas() >= 600)); result.Train(UnitTypes.HIVE, 1, () => UpgradeType.LookUp[UpgradeType.ZergMissileWeapons2].Started()); result.Morph(UnitTypes.HYDRALISK, 15); result.Morph(UnitTypes.DRONE, 10); result.Morph(UnitTypes.INFESTOR, 2, () => Completed(UnitTypes.INFESTATION_PIT) > 0); result.Building(UnitTypes.SPIRE); result.Building(UnitTypes.HATCHERY); result.Building(UnitTypes.EXTRACTOR, 2); result.Morph(UnitTypes.HYDRALISK, 5); result.Morph(UnitTypes.CORRUPTOR, 10); result.Building(UnitTypes.HATCHERY, 2); result.Morph(UnitTypes.DRONE, 10); result.Building(UnitTypes.EXTRACTOR, 4); result.Morph(UnitTypes.HYDRALISK, 100); return(result); }
/** * Deprecated, as cannonRushes seem to be beatable without it. */ private BuildList DefendCannonRush() { BuildList result = new BuildList(); result.If(() => ProxyCannons); result.Morph(UnitTypes.OVERLORD); result.Morph(UnitTypes.DRONE, 14); result.Morph(UnitTypes.OVERLORD); result.Building(UnitTypes.EXTRACTOR); result.Building(UnitTypes.SPAWNING_POOL); result.Train(UnitTypes.QUEEN, 4); result.Morph(UnitTypes.DRONE, 4); result.Building(UnitTypes.ROACH_WARREN); result.Morph(UnitTypes.ROACH, 10); result.Train(UnitTypes.LAIR, 1); result.Building(UnitTypes.EXTRACTOR); result.Morph(UnitTypes.DRONE, 2); result.Building(UnitTypes.HYDRALISK_DEN); result.Morph(UnitTypes.HYDRALISK, 10); result.Upgrade(UpgradeType.GroovedSpines); result.Morph(UnitTypes.RAVAGER, 4); result.Morph(UnitTypes.HYDRALISK, 10); result.Morph(UnitTypes.ROACH, 10); result.Morph(UnitTypes.HYDRALISK, 10); result.Morph(UnitTypes.ROACH, 10); result.Morph(UnitTypes.HYDRALISK, 10); result.Morph(UnitTypes.ROACH, 10); result.Morph(UnitTypes.HYDRALISK, 10); result.Morph(UnitTypes.ROACH, 10); return(result); }
private BuildList MainBuild() { BuildList result = new BuildList(); result.Morph(UnitTypes.DRONE, 14); result.Building(UnitTypes.SPAWNING_POOL); result.Building(UnitTypes.HATCHERY, 2, () => !SmellCheese || Count(UnitTypes.ROACH) >= 15); result.Morph(UnitTypes.DRONE, 4, () => !SmellCheese || Count(UnitTypes.ROACH) >= 15); result.Building(UnitTypes.SPINE_CRAWLER, Main, MainDefensePos, 2, () => SmellCheese); result.If(() => !SmellCheese || Completed(UnitTypes.SPINE_CRAWLER) >= 2); result.Building(UnitTypes.ROACH_WARREN, () => SmellCheese); //result.Building(UnitTypes.SPINE_CRAWLER, Natural, NaturalDefensePos, 2, () => !SmellCheese && Natural.ResourceCenter != null && Natural.ResourceCenter.Unit.BuildProgress >= 0.99); result.Building(UnitTypes.EXTRACTOR, () => SmellCheese); result.Morph(UnitTypes.ROACH, 4, () => SmellCheese); result.Morph(UnitTypes.ZERGLING, 8, () => Completed(UnitTypes.ROACH) < 4 && SmellCheese); result.Morph(UnitTypes.ZERGLING, 6, () => Completed(UnitTypes.ROACH) < 4 && SmellCheese); result.Morph(UnitTypes.DRONE, 2); result.Building(UnitTypes.ROACH_WARREN, () => !SmellCheese); result.Building(UnitTypes.EXTRACTOR, () => !SmellCheese); result.Morph(UnitTypes.DRONE, 5, () => !SmellCheese || Count(UnitTypes.ROACH) >= 20); result.Morph(UnitTypes.ROACH, 4); result.Building(UnitTypes.SPINE_CRAWLER, Main, MainDefensePos, () => SmellCheese && Tyr.Bot.EnemyStrategyAnalyzer.Count(UnitTypes.SPINE_CRAWLER) == 0); result.Morph(UnitTypes.DRONE, 5); result.Building(UnitTypes.EVOLUTION_CHAMBER, 2, () => !SmellCheese || Count(UnitTypes.ROACH) >= 10); result.Upgrade(UpgradeType.ZergMissileWeapons, () => !SmellCheese || Count(UnitTypes.ROACH) >= 10); result.Upgrade(UpgradeType.ZergGroundArmor, () => !SmellCheese || Count(UnitTypes.ROACH) >= 10); result.Morph(UnitTypes.DRONE, 10, () => !SmellCheese || Count(UnitTypes.ROACH) >= 20); result.Building(UnitTypes.EXTRACTOR, () => !SmellCheese || SpinePushDetected); result.Morph(UnitTypes.ROACH, 10); result.Building(UnitTypes.INFESTATION_PIT, () => SpinePushDetected); result.Morph(UnitTypes.SWARM_HOST, 15, () => SpinePushDetected); result.Building(UnitTypes.HYDRALISK_DEN, () => NeedAntiAir); result.Building(UnitTypes.EXTRACTOR, 2, () => NeedAntiAir); result.Morph(UnitTypes.HYDRALISK, 10, () => NeedAntiAir); result.Upgrade(UpgradeType.GroovedSpines, () => NeedAntiAir); result.Upgrade(UpgradeType.MuscularAugments, () => NeedAntiAir); result.Building(UnitTypes.EXTRACTOR); result.Morph(UnitTypes.ROACH, 6, () => SmellCheese); result.Building(UnitTypes.EXTRACTOR, () => SmellCheese); result.If(() => !SmellCheese || Count(UnitTypes.ROACH) >= 20); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.DRONE, 20); result.Morph(UnitTypes.OVERSEER, 2); result.Building(UnitTypes.EXTRACTOR, 2); result.Building(UnitTypes.INFESTATION_PIT, () => !SpinePushDetected); result.Building(UnitTypes.EXTRACTOR, 4); result.Upgrade(UpgradeType.PathogenGlands); result.Morph(UnitTypes.INFESTOR, 3, () => Completed(UnitTypes.INFESTATION_PIT) > 0 && !SpinePushDetected); result.Morph(UnitTypes.ROACH, 10); result.Morph(UnitTypes.INFESTOR, 3, () => Completed(UnitTypes.INFESTATION_PIT) > 0 && !SpinePushDetected); result.Morph(UnitTypes.ROACH, 10, () => !NeedAntiAir); result.Building(UnitTypes.HATCHERY, 2); result.Morph(UnitTypes.HYDRALISK, 10, () => NeedAntiAir); result.Morph(UnitTypes.DRONE, 10); result.Building(UnitTypes.EXTRACTOR, 5); result.Morph(UnitTypes.ROACH, 100); result.Train(UnitTypes.HIVE); return(result); }
private BuildList Broodlords() { BuildList result = new BuildList(); result.If(() => { return(GoingBroodlords); }); result.Morph(UnitTypes.DRONE, 20); result.Building(UnitTypes.EXTRACTOR, 4); result.Morph(UnitTypes.HYDRALISK, 5); result.Morph(UnitTypes.LURKER); result.Morph(UnitTypes.HYDRALISK); result.Morph(UnitTypes.LURKER); result.Morph(UnitTypes.HYDRALISK); result.Morph(UnitTypes.LURKER); result.Morph(UnitTypes.HYDRALISK); result.Morph(UnitTypes.LURKER); result.Morph(UnitTypes.HYDRALISK); result.Morph(UnitTypes.LURKER); result.Morph(UnitTypes.HYDRALISK); result.Building(UnitTypes.INFESTATION_PIT); result.Building(UnitTypes.SPIRE); result.Morph(UnitTypes.CORRUPTOR, 5); result.Morph(UnitTypes.BROOD_LORD, 10); result.Morph(UnitTypes.HYDRALISK, 100); return(result); }
private BuildList MainBuild() { BuildList result = new BuildList(); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.OVERLORD); result.Morph(UnitTypes.DRONE, 14); result.Building(UnitTypes.HATCHERY); result.Morph(UnitTypes.OVERLORD); result.Building(UnitTypes.EXTRACTOR); result.Building(UnitTypes.SPAWNING_POOL); result.Train(UnitTypes.QUEEN, 4); result.Morph(UnitTypes.DRONE, 6); result.Train(UnitTypes.LAIR, 1); result.Morph(UnitTypes.ZERGLING, 10, () => !GoingUltras); result.Morph(UnitTypes.DRONE, 10); result.Upgrade(UpgradeType.MetabolicBoost); result.Upgrade(UpgradeType.AdrenalGlands); result.Building(UnitTypes.HATCHERY); result.Building(UnitTypes.INFESTATION_PIT); result.Morph(UnitTypes.DRONE, 10); result.Morph(UnitTypes.DRONE, 10); result.Morph(UnitTypes.ZERGLING, 10, () => !GoingUltras); result.Building(UnitTypes.EVOLUTION_CHAMBER); result.Building(UnitTypes.EVOLUTION_CHAMBER); result.Upgrade(UpgradeType.ZergGroundArmor); result.Upgrade(UpgradeType.ZergMeleeWeapons); result.Building(UnitTypes.HATCHERY); result.Train(UnitTypes.HIVE, 1); result.Train(UnitTypes.QUEEN, 6); result.Morph(UnitTypes.ZERGLING, 10, () => !GoingUltras); result.Building(UnitTypes.EXTRACTOR); result.Morph(UnitTypes.DRONE, 10); result.Morph(UnitTypes.OVERSEER, 2); result.Building(UnitTypes.EXTRACTOR, 4, () => GoingUltras); result.Morph(UnitTypes.DRONE, 10); result.Building(UnitTypes.ULTRALISK_CAVERN); result.Upgrade(UpgradeType.AnabolicSynthesis, () => GoingUltras); result.Upgrade(UpgradeType.ChitinousPlating, () => GoingUltras); result.Building(UnitTypes.EXTRACTOR, 2); result.If(() => Count(UnitTypes.ULTRALISK) >= 12); result.Building(UnitTypes.HATCHERY); result.Building(UnitTypes.EXTRACTOR, 2); result.Building(UnitTypes.HATCHERY, 3); result.Morph(UnitTypes.DRONE, 10); result.Building(UnitTypes.EXTRACTOR, 6); return(result); }