Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        private BuildList Zerglings()
        {
            BuildList result = new BuildList();

            result.Morph(UnitTypes.ZERGLING, 400);
            return(result);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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);
        }
Beispiel #14
0
        private BuildList Expand()
        {
            BuildList result = new BuildList();

            result.If(() => { return(TakeExpand); });
            result.Building(UnitTypes.HATCHERY);
            result.Morph(UnitTypes.DRONE, 22);
            return(result);
        }
Beispiel #15
0
        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);
        }
Beispiel #16
0
        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);
        }
Beispiel #17
0
        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);
        }
Beispiel #18
0
        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);
        }
Beispiel #19
0
        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);
        }
Beispiel #20
0
        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);
        }
Beispiel #21
0
        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);
        }
Beispiel #22
0
        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);
        }
Beispiel #23
0
        /**
         * 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);
        }
Beispiel #24
0
        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);
        }
Beispiel #25
0
        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);
        }
Beispiel #26
0
        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);
        }