Пример #1
0
        private BuildList Units()
        {
            BuildList result = new BuildList();

            result.Train(UnitTypes.PROBE, 19);
            result.Train(UnitTypes.PROBE, 40, () => Count(UnitTypes.NEXUS) >= 2);
            result.Train(UnitTypes.PROBE, 60, () => Count(UnitTypes.NEXUS) >= 3);
            result.Train(UnitTypes.PROBE, 80, () => Count(UnitTypes.NEXUS) >= 4);
            result.If(() => Count(UnitTypes.ZEALOT) < 5 || Count(UnitTypes.IMMORTAL) < 2 || Count(UnitTypes.NEXUS) >= 2);
            result.Upgrade(UpgradeType.Charge);
            result.Upgrade(UpgradeType.WarpGate);
            result.Train(UnitTypes.IMMORTAL, 3);
            result.Train(UnitTypes.OBSERVER, 1);
            result.Train(UnitTypes.COLOSUS, 3, () => TotalEnemyCount(UnitTypes.VIKING_FIGHTER) + TotalEnemyCount(UnitTypes.LIBERATOR) + TotalEnemyCount(UnitTypes.LIBERATOR_AG) == 0);
            result.Train(UnitTypes.IMMORTAL, 20);
            result.Train(UnitTypes.STALKER, 1, () => Completed(UnitTypes.IMMORTAL) == 0);
            result.If(() => Count(UnitTypes.STALKER) + Count(UnitTypes.IMMORTAL) > 0);
            result.Train(UnitTypes.PHOENIX, 5);
            result.Train(UnitTypes.ZEALOT, 10);
            //result.Train(UnitTypes.STALKER, 20, () => TotalEnemyCount(UnitTypes.LIBERATOR) + TotalEnemyCount(UnitTypes.LIBERATOR_AG) > 0);
            result.Train(UnitTypes.ZEALOT, 20);
            result.Train(UnitTypes.ZEALOT, 25, () => TotalEnemyCount(UnitTypes.VIKING_FIGHTER) == 0);
            result.Train(UnitTypes.STALKER, 10);
            result.Train(UnitTypes.ZEALOT);

            return(result);
        }
Пример #2
0
        private BuildList MainBuild()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.GATEWAY, Main);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.CYBERNETICS_CORE);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Natural);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.TWILIGHT_COUNSEL);
            result.Building(UnitTypes.ROBOTICS_BAY);
            result.Building(UnitTypes.FORGE);
            result.Upgrade(UpgradeType.ProtossGroundWeapons);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Upgrade(UpgradeType.ExtendedThermalLance);
            result.Building(UnitTypes.STARGATE);
            result.Building(UnitTypes.FORGE);
            result.Upgrade(UpgradeType.ProtossGroundArmor);
            result.Building(UnitTypes.ASSIMILATOR);
            //result.Building(UnitTypes.STARGATE, () => TotalEnemyCount(UnitTypes.LIBERATOR) + TotalEnemyCount(UnitTypes.LIBERATOR_AG) > 0 || Count(UnitTypes.COLOSUS) > 0);
            result.If(() => TimingAttackTask.Task.AttackSent);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.GATEWAY, Main, 2);
            result.Building(UnitTypes.ASSIMILATOR);

            return(result);
        }
Пример #3
0
        private BuildList MainBuildList()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Main, WallIn.Wall[1].Pos, true);
            //result.If(() => Completed(UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.GATEWAY, Main, WallIn.Wall[0].Pos, true);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.CYBERNETICS_CORE, Main, WallIn.Wall[2].Pos, true);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.PYLON, Natural, NaturalDefensePos);
            result.Building(UnitTypes.ROBOTICS_BAY, () => Count(UnitTypes.IMMORTAL) >= 4);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.GATEWAY);
            result.Upgrade(UpgradeType.ExtendedThermalLance);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => Count(UnitTypes.IMMORTAL) >= 2);
            result.Building(UnitTypes.ASSIMILATOR, 2, () => Count(UnitTypes.IMMORTAL) >= 3);
            result.Building(UnitTypes.ASSIMILATOR, 2, () => Count(UnitTypes.IMMORTAL) >= 3 && Minerals() >= 300);
            result.If(() => Completed(UnitTypes.COLOSUS) >= 2 || TimingAttackTask.Task.AttackSent);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.FORGE, 2);
            result.Upgrade(UpgradeType.ProtossGroundWeapons);
            result.Upgrade(UpgradeType.ProtossGroundArmor);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.TWILIGHT_COUNSEL);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.GATEWAY, 2);
            return(result);
        }
Пример #4
0
        private BuildList MainBuild()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, () => Count(UnitTypes.PROBE) >= 14);
            result.Building(UnitTypes.ASSIMILATOR, () => Count(UnitTypes.PROBE) >= 15);
            result.Building(UnitTypes.GATEWAY, Main, () => Count(UnitTypes.PROBE) >= 16);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.CYBERNETICS_CORE);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.PYLON, Natural);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.TWILIGHT_COUNSEL);
            result.Building(UnitTypes.GATEWAY, Main, 2, () => Count(UnitTypes.IMMORTAL) > 0);
            result.Building(UnitTypes.GATEWAY, Main, 2, () => Count(UnitTypes.IMMORTAL) >= 2);
            result.If(() => TimingAttackTask.Task.AttackSent && Count(UnitTypes.ZEALOT) >= 12);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.FORGE);
            result.Upgrade(UpgradeType.ProtossGroundWeapons);
            result.If(() => Count(UnitTypes.IMMORTAL) > 0);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.FORGE);
            result.Upgrade(UpgradeType.ProtossGroundArmor);
            result.Building(UnitTypes.ASSIMILATOR);

            return(result);
        }
Пример #5
0
        private BuildList MainBuildList()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Main, WallIn.Wall[1].Pos, true);
            result.Building(UnitTypes.GATEWAY, Main, WallIn.Wall[0].Pos, true);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.CYBERNETICS_CORE, Main, WallIn.Wall[2].Pos, true);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.PYLON, Natural, NaturalDefensePos);
            result.Building(UnitTypes.GATEWAY, Main);
            result.Building(UnitTypes.TWILIGHT_COUNSEL);
            result.Building(UnitTypes.GATEWAY, Main, 2);
            result.If(() => TimingAttackTask.Task.AttackSent);
            result.Building(UnitTypes.ASSIMILATOR, () => Count(UnitTypes.PROBE) >= 34);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.FORGE, 2);
            result.Upgrade(UpgradeType.ProtossGroundWeapons);
            result.Upgrade(UpgradeType.ProtossGroundArmor);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.GATEWAY);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.GATEWAY, 2);
            return(result);
        }
Пример #6
0
        private BuildList MainBuild()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.GATEWAY, Main);
            if (Tyr.Bot.EnemyRace != Race.Terran)
            {
                result.If(() => { return(!Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool || Tyr.Bot.EnemyStrategyAnalyzer.Expanded || Completed(UnitTypes.ZEALOT) >= 2); });
            }
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.CYBERNETICS_CORE);
            result.Building(UnitTypes.PYLON, Natural);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.TWILIGHT_COUNSEL);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.FORGE);
            result.Upgrade(UpgradeType.ProtossGroundWeapons);
            result.Building(UnitTypes.ASSIMILATOR);
            result.If(() => Count(UnitTypes.IMMORTAL) > 0);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.FORGE);
            result.Upgrade(UpgradeType.ProtossGroundArmor);

            return(result);
        }
Пример #7
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);
        }
Пример #8
0
        private BuildList MainBuild()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Main);
            result.If(() => Completed(UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.GATEWAY, Main);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.CYBERNETICS_CORE);
            result.Building(UnitTypes.NEXUS, () => !FourRaxSuspected || Completed(UnitTypes.STALKER) >= 20);
            result.Building(UnitTypes.GATEWAY, Main, () => FourRaxSuspected);
            result.Building(UnitTypes.ASSIMILATOR, () => FourRaxSuspected);
            result.Building(UnitTypes.SHIELD_BATTERY, Main, MainDefensePos, 2, () => FourRaxSuspected && Completed(UnitTypes.CYBERNETICS_CORE) > 0);
            result.Building(UnitTypes.GATEWAY, Main, () => Count(UnitTypes.STALKER) > 0 && (!FourRaxSuspected || Completed(UnitTypes.STALKER) >= 2));
            result.Upgrade(UpgradeType.WarpGate, () => Count(UnitTypes.STALKER) + Count(UnitTypes.SENTRY) + Count(UnitTypes.ADEPT) + Count(UnitTypes.ZEALOT) >= 3);
            result.Building(UnitTypes.PYLON, Natural, () => Count(UnitTypes.CYBERNETICS_CORE) > 0 && Natural.ResourceCenter != null);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => TotalEnemyCount(UnitTypes.BANSHEE) > 0);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => FourRaxSuspected && Count(UnitTypes.STALKER) + Count(UnitTypes.ADEPT) >= 10);
            result.Building(UnitTypes.ASSIMILATOR, () => Bot.Main.EnemyStrategyAnalyzer.TotalCount(UnitTypes.BANSHEE) > 0 && Count(UnitTypes.OBSERVER) > 0);
            result.Building(UnitTypes.STARGATE, () => TotalEnemyCount(UnitTypes.BANSHEE) > 0 && Count(UnitTypes.OBSERVER) > 0);
            result.Building(UnitTypes.GATEWAY, Natural, () => FourRaxSuspected && Completed(Natural, UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.ASSIMILATOR, () => !FourRaxSuspected || Minerals() >= 200);
            result.Building(UnitTypes.ASSIMILATOR, () => FourRaxSuspected && Minerals() >= 600);
            result.Building(UnitTypes.ASSIMILATOR, () => FourRaxSuspected && Minerals() >= 800);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => TotalEnemyCount(UnitTypes.BANSHEE) == 0 && !FourRaxSuspected);
            result.Building(UnitTypes.GATEWAY, Main, () => !FourRaxSuspected);
            result.If(() => !FourRaxSuspected || Count(UnitTypes.STALKER) + Count(UnitTypes.ADEPT) >= 15);
            result.Building(UnitTypes.ASSIMILATOR, 2, () => Minerals() >= 400);
            result.If(() => Count(UnitTypes.IMMORTAL) >= 2 && Count(UnitTypes.IMMORTAL) + Count(UnitTypes.STALKER) >= 15);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.ASSIMILATOR, 2, () => Bot.Main.EnemyStrategyAnalyzer.TotalCount(UnitTypes.BANSHEE) >= 3);
            result.Building(UnitTypes.TWILIGHT_COUNSEL, () => Count(UnitTypes.PHOENIX) > 0 || TotalEnemyCount(UnitTypes.BANSHEE) == 0);
            result.Building(UnitTypes.FORGE, () => Count(UnitTypes.PHOENIX) > 0 || TotalEnemyCount(UnitTypes.BANSHEE) == 0);
            result.Upgrade(UpgradeType.ProtossGroundWeapons);
            result.Building(UnitTypes.FORGE, () => Count(UnitTypes.PHOENIX) > 0 || TotalEnemyCount(UnitTypes.BANSHEE) == 0);
            result.Upgrade(UpgradeType.ProtossGroundArmor);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.PYLON);
            result.If(() => TotalEnemyCount(UnitTypes.BANSHEE) == 0 || (Completed(UnitTypes.STALKER) >= 10 && Completed(UnitTypes.PHOTON_CANNON) >= 2));
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => !BattlecruisersDetected && Bot.Main.EnemyStrategyAnalyzer.TotalCount(UnitTypes.BANSHEE) == 0);
            result.Building(UnitTypes.ASSIMILATOR, 4, () => Minerals() >= 700 && Gas() < 200);
            result.If(() => Count(UnitTypes.IMMORTAL) >= 3 && Count(UnitTypes.STALKER) >= 10);
            result.Building(UnitTypes.ROBOTICS_BAY, () => !BattlecruisersDetected && Bot.Main.EnemyStrategyAnalyzer.TotalCount(UnitTypes.BANSHEE) == 0);
            result.Building(UnitTypes.STARGATE, () => BattlecruisersDetected || Bot.Main.EnemyStrategyAnalyzer.TotalCount(UnitTypes.BANSHEE) > 0);
            result.Building(UnitTypes.FLEET_BEACON, () => Completed(UnitTypes.STARGATE) > 0);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.If(() => Count(UnitTypes.STALKER) + Count(UnitTypes.IMMORTAL) + Count(UnitTypes.ADEPT) >= 15);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.If(() => Completed(UnitTypes.STALKER) + Completed(UnitTypes.IMMORTAL) + Completed(UnitTypes.DISRUPTOR) + Completed(UnitTypes.TEMPEST) + Count(UnitTypes.ADEPT) >= 40 || Minerals() >= 650);
            result.Building(UnitTypes.NEXUS);

            return(result);
        }
Пример #9
0
        private BuildList MainBuild()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Natural, WallIn.Wall[4].Pos, true);
            result.Building(UnitTypes.GATEWAY, Natural, WallIn.Wall[0].Pos, true, () => Completed(UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.GATEWAY, Natural, WallIn.Wall[3].Pos, true, () => Completed(UnitTypes.PYLON) > 0 && Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool);
            result.Building(UnitTypes.GATEWAY, Natural, WallIn.Wall[1].Pos, true, () => Completed(UnitTypes.PYLON) > 0 && Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool);
            result.Building(UnitTypes.NEXUS, () => !Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool || Completed(UnitTypes.ADEPT) + Completed(UnitTypes.ZEALOT) + Completed(UnitTypes.STALKER) >= 8);
            result.Building(UnitTypes.CYBERNETICS_CORE, Natural, WallIn.Wall[1].Pos, true, () => !Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool);
            result.Building(UnitTypes.CYBERNETICS_CORE, () => Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool && Count(UnitTypes.ZEALOT) >= 6);
            result.Building(UnitTypes.ASSIMILATOR, () => !Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool || Count(UnitTypes.ZEALOT) >= 6);
            result.Building(UnitTypes.GATEWAY, Natural, WallIn.Wall[3].Pos, true, () => !Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool);
            if (ShieldBatteryPos == null)
            {
                result.Building(UnitTypes.SHIELD_BATTERY, Natural, NaturalDefensePos);
            }
            else
            {
                result.Building(UnitTypes.SHIELD_BATTERY, Natural, ShieldBatteryPos, true);
            }
            result.Building(UnitTypes.FORGE, () => Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool || AggressiveZerglings);
            result.Building(UnitTypes.PHOTON_CANNON, Natural, NaturalDefensePos, 2, () => Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool || AggressiveZerglings);
            result.Building(UnitTypes.TWILIGHT_COUNSEL);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Upgrade(UpgradeType.WarpGate);
            result.Building(UnitTypes.PYLON, Natural, () => Count(UnitTypes.CYBERNETICS_CORE) > 0 && Natural.ResourceCenter != null);
            result.Building(UnitTypes.TEMPLAR_ARCHIVE);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.FORGE, () => !Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool);
            result.Upgrade(UpgradeType.ProtossGroundWeapons);
            result.Building(UnitTypes.GATEWAY, 2);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.GATEWAY, 2);
            result.Building(UnitTypes.FORGE);
            result.Upgrade(UpgradeType.ProtossGroundArmor);
            //result.Building(UnitTypes.ASSIMILATOR, 3, () => TotalEnemyCount(UnitTypes.ROACH) >= 5);
            //result.Building(UnitTypes.ROBOTICS_FACILITY, () => TotalEnemyCount(UnitTypes.ROACH) >= 5);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 4, () => Minerals() >= 700 && Gas() < 200);
            result.If(() => Count(UnitTypes.IMMORTAL) + Count(UnitTypes.COLOSUS) + Completed(UnitTypes.ARCHON) >= 3 && Count(UnitTypes.STALKER) + Completed(UnitTypes.ZEALOT) >= 10);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.If(() => Count(UnitTypes.STALKER) + Count(UnitTypes.IMMORTAL) + Count(UnitTypes.COLOSUS) + Count(UnitTypes.ARCHON) + Count(UnitTypes.ADEPT) + Count(UnitTypes.ZEALOT) >= 15);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.GATEWAY, 2);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.If(() => Completed(UnitTypes.STALKER) + Completed(UnitTypes.ZEALOT) + Completed(UnitTypes.COLOSUS) + Completed(UnitTypes.IMMORTAL) + Completed(UnitTypes.ARCHON) + Completed(UnitTypes.DISRUPTOR) + Completed(UnitTypes.TEMPEST) + Count(UnitTypes.ADEPT) >= 40 || Minerals() >= 650);
            result.Building(UnitTypes.NEXUS);

            return(result);
        }
Пример #10
0
        private BuildList MainBuild()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Main, WallIn.Wall[1].Pos, true);
            result.Building(UnitTypes.GATEWAY, Main, WallIn.Wall[0].Pos, true, () => Completed(UnitTypes.PYLON) > 0);
            if (Tyr.Bot.EnemyRace != Race.Terran)
            {
                result.If(() => { return(!Tyr.Bot.EnemyStrategyAnalyzer.EarlyPool || Tyr.Bot.EnemyStrategyAnalyzer.Expanded || Completed(UnitTypes.STALKER) + Completed(UnitTypes.ADEPT) >= 5); });
            }
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.CYBERNETICS_CORE);
            result.Building(UnitTypes.GATEWAY, Main);
            result.Building(UnitTypes.ASSIMILATOR, () => !FourRaxSuspected || Count(UnitTypes.PHOTON_CANNON) >= 2);
            result.Building(UnitTypes.PYLON, Natural);
            result.Building(UnitTypes.GATEWAY, Natural, () => FourRaxSuspected && Completed(Natural, UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.SHIELD_BATTERY, Natural, 2, () => FourRaxSuspected && Completed(Natural, UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.FORGE, () => FourRaxSuspected && Count(UnitTypes.GATEWAY) >= 3);
            result.Building(UnitTypes.PHOTON_CANNON, Natural, 4, () => FourRaxSuspected);
            result.Building(UnitTypes.ASSIMILATOR, () => FourRaxSuspected && Minerals() >= 600);
            result.Building(UnitTypes.ASSIMILATOR, () => FourRaxSuspected && Minerals() >= 800);
            result.If(() => !FourRaxSuspected || Count(UnitTypes.STALKER) >= 10);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.ASSIMILATOR, 2, () => Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.BANSHEE) >= 3);
            result.Building(UnitTypes.TWILIGHT_COUNSEL);
            result.Building(UnitTypes.FORGE);
            result.Upgrade(UpgradeType.ProtossGroundWeapons);
            result.Building(UnitTypes.FORGE, () => !FourRaxSuspected);
            result.Upgrade(UpgradeType.ProtossGroundArmor);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => !BattlecruisersDetected && Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.BANSHEE) == 0);
            result.Building(UnitTypes.ASSIMILATOR, 4, () => Minerals() >= 700 && Gas() < 200);
            //result.Building(UnitTypes.STARGATE);
            //result.Building(UnitTypes.FLEET_BEACON);
            result.If(() => Count(UnitTypes.IMMORTAL) >= 3 && Count(UnitTypes.STALKER) >= 10);
            result.Building(UnitTypes.ROBOTICS_BAY, () => !BattlecruisersDetected && Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.BANSHEE) == 0);
            result.Building(UnitTypes.STARGATE, () => BattlecruisersDetected || Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.BANSHEE) > 0);
            result.Building(UnitTypes.FLEET_BEACON, () => Completed(UnitTypes.STARGATE) > 0);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.If(() => Count(UnitTypes.STALKER) >= 20);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.If(() => Completed(UnitTypes.STALKER) + Completed(UnitTypes.IMMORTAL) + Completed(UnitTypes.DISRUPTOR) + Completed(UnitTypes.TEMPEST) >= 40 || Minerals() >= 650);
            result.Building(UnitTypes.NEXUS);

            return(result);
        }
Пример #11
0
        private BuildList Units()
        {
            BuildList result = new BuildList();

            result.Train(UnitTypes.PROBE, 19);
            result.Train(UnitTypes.PROBE, 40, () => Count(UnitTypes.NEXUS) >= 2);
            result.Train(UnitTypes.PROBE, 60, () => Count(UnitTypes.NEXUS) >= 3);
            result.Train(UnitTypes.PROBE, 80, () => Count(UnitTypes.NEXUS) >= 4);
            result.If(() => Count(UnitTypes.STALKER) < 5 || Count(UnitTypes.IMMORTAL) < 2 || Count(UnitTypes.NEXUS) >= 2);
            result.If(() => !EarlyPool.Get().Detected || Count(UnitTypes.ZEALOT) < 8 || Count(UnitTypes.NEXUS) >= 2);
            result.If(() => Completed(UnitTypes.CYBERNETICS_CORE) > 0 || (EarlyPool.Get().Detected&& Count(UnitTypes.ZEALOT) + Count(UnitTypes.ADEPT) < 8));
            result.Train(UnitTypes.STALKER, 6, () => RoachRushDetected);
            result.Train(UnitTypes.ZEALOT, 1, () => EarlyPool.Get().Detected&& !RoachRushDetected);
            result.Train(UnitTypes.ADEPT, 2, () => !AdeptHarassMainTask.Task.Sent && !RoachRushDetected);
            result.Upgrade(UpgradeType.WarpGate, () => !EarlyPool.Get().Detected || Count(UnitTypes.ADEPT) + Count(UnitTypes.ZEALOT) >= 4);
            result.Train(UnitTypes.ZEALOT, 1, () => Completed(UnitTypes.NEXUS) < 3);
            result.Train(UnitTypes.ZEALOT, 2, () => EarlyPool.Get().Detected&& !RoachRushDetected);
            result.Train(UnitTypes.ADEPT, 5, () => EarlyPool.Get().Detected&& !RoachRushDetected);
            result.Train(UnitTypes.ZEALOT, 10, () => EarlyPool.Get().Detected&& !RoachRushDetected);
            //result.Train(UnitTypes.WARP_PRISM, 1, () => !InitialAttackDone && !RoachRushDetected);
            result.Train(UnitTypes.SENTRY, 1, () => !TimingAttackTask.Task.AttackSent && !RoachRushDetected && !EarlyPool.Get().Detected&& Count(UnitTypes.ZEALOT) > 0);
            result.Train(UnitTypes.ZEALOT, 6, () => !InitialAttackDone && Count(UnitTypes.TEMPLAR_ARCHIVE) > 0);
            result.Train(UnitTypes.ZEALOT, 8, () => !InitialAttackDone && Count(UnitTypes.HIGH_TEMPLAR) + Count(UnitTypes.ARCHON) * 2 >= 4);
            result.Train(UnitTypes.IMMORTAL, 1);
            result.Train(UnitTypes.OBSERVER, 1, () => RoachRushDetected);
            result.Train(UnitTypes.IMMORTAL, 2);
            result.Train(UnitTypes.WARP_PRISM, 1, () => !RoachRushDetected || (Count(UnitTypes.ROBOTICS_FACILITY) >= 2 && Count(UnitTypes.NEXUS) >= 3));
            result.Train(UnitTypes.IMMORTAL, 3);
            result.Train(UnitTypes.OBSERVER, 1);
            result.Upgrade(UpgradeType.ExtendedThermalLance, () => UseColosus);
            result.Train(UnitTypes.COLOSUS, 3, () => UseColosus);
            result.Train(UnitTypes.IMMORTAL, 6, () => !RoachRushDetected || Count(UnitTypes.NEXUS) >= 3);
            result.Train(UnitTypes.COLOSUS, 4, () => UseColosus && RoboArmy);
            result.Train(UnitTypes.IMMORTAL, 8, () => !RoachRushDetected || Count(UnitTypes.NEXUS) >= 3);
            result.Train(UnitTypes.COLOSUS, 5, () => UseColosus && RoboArmy);
            result.Train(UnitTypes.IMMORTAL, 10, () => !RoachRushDetected || Count(UnitTypes.NEXUS) >= 3);
            result.Train(UnitTypes.COLOSUS, 6, () => UseColosus && RoboArmy);
            result.Train(UnitTypes.IMMORTAL, 12, () => !RoachRushDetected || Count(UnitTypes.NEXUS) >= 3);
            result.Upgrade(UpgradeType.Charge, () => Count(UnitTypes.TEMPLAR_ARCHIVE) > 0 || (Gas() >= 200 && Minerals() >= 300));
            result.Train(UnitTypes.HIGH_TEMPLAR, 2, () => Gas() >= 75 && Count(UnitTypes.HIGH_TEMPLAR) == 1 && !RoboArmy);
            result.Train(UnitTypes.HIGH_TEMPLAR, () => Gas() >= 150 && Count(UnitTypes.ARCHON) * 2 + Count(UnitTypes.HIGH_TEMPLAR) < 6 && !RoboArmy);
            result.Train(UnitTypes.HIGH_TEMPLAR, 6, () => Gas() >= 150 && InitialAttackDone && UseStorm && !RoboArmy);
            result.Upgrade(UpgradeType.PsiStorm, () => InitialAttackDone && UseStorm && !RoboArmy);
            result.Train(UnitTypes.ZEALOT, 5, () => Count(UnitTypes.IMMORTAL) + Count(UnitTypes.ARCHON) >= 2 && (Completed(UnitTypes.WARP_PRISM) == 0 || TimingAttackTask.Task.Units.Count == 0) && RoboArmy);
            result.Train(UnitTypes.ZEALOT, 10, () => Count(UnitTypes.IMMORTAL) >= 4 && Count(UnitTypes.COLOSUS) >= 2 && RoboArmy);
            result.Train(UnitTypes.ZEALOT, 5, () => !InitialAttackDone);
            result.Train(UnitTypes.ZEALOT, 10, () => !InitialAttackDone && Completed(UnitTypes.TWILIGHT_COUNSEL) == 1 && Count(UnitTypes.TEMPLAR_ARCHIVE) == 1 && Completed(UnitTypes.TEMPLAR_ARCHIVE) == 0);
            result.Train(UnitTypes.ZEALOT, 15, () => Count(UnitTypes.IMMORTAL) + Count(UnitTypes.ARCHON) >= 2 && (Completed(UnitTypes.WARP_PRISM) == 0 || TimingAttackTask.Task.Units.Count == 0) && !RoboArmy);
            result.Train(UnitTypes.ZEALOT, 25, () => Count(UnitTypes.IMMORTAL) + Count(UnitTypes.ARCHON) >= 2 && (Completed(UnitTypes.WARP_PRISM) == 0 || TimingAttackTask.Task.Units.Count == 0) && InitialAttackDone && !RoboArmy);
            result.Train(UnitTypes.ZEALOT, 35, () => Count(UnitTypes.IMMORTAL) + Count(UnitTypes.ARCHON) >= 2 && InitialAttackDone && Minerals() >= 400 && !RoboArmy);
            result.Train(UnitTypes.STALKER, 35, () => Count(UnitTypes.IMMORTAL) + Count(UnitTypes.ARCHON) >= 2 && InitialAttackDone && Minerals() >= 400 && RoboArmy);

            return(result);
        }
Пример #12
0
        private BuildList MainBuild()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Main);
            result.Building(UnitTypes.GATEWAY, Main, () => Completed(UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.ASSIMILATOR, () => !Tyr.Bot.EnemyStrategyAnalyzer.WorkerRushDetected || Count(UnitTypes.ZEALOT) >= 2);
            result.Building(UnitTypes.PYLON, Main, WallIn.Wall[1].Pos, true);
            result.Building(UnitTypes.GATEWAY, Main, WallIn.Wall[0].Pos, true, () => Completed(UnitTypes.PYLON) >= 2);
            result.Building(UnitTypes.CYBERNETICS_CORE, () => !Tyr.Bot.EnemyStrategyAnalyzer.WorkerRushDetected || Count(UnitTypes.ZEALOT) >= 2);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => (FourGateDetected && Tyr.Bot.Frame >= 22.4 * 60 * 4) || DoubleRoboAllIn);
            result.Upgrade(UpgradeType.WarpGate);
            result.If(() => (!FourGateDetected && !DoubleRoboAllIn) || Completed(UnitTypes.IMMORTAL) >= 3);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Natural, NaturalDefensePos);
            result.Building(UnitTypes.FORGE, () => EarlyForge);
            result.Upgrade(UpgradeType.ProtossGroundWeapons, () => EarlyForge);
            result.Building(UnitTypes.PHOTON_CANNON, () => EarlyForge);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => SecondRobo && !FourGateDetected);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => !SecondRobo && !FourGateDetected && Tyr.Bot.Frame >= 22.4 * 60 * 6 &&
                            TotalEnemyCount(UnitTypes.STARGATE) + TotalEnemyCount(UnitTypes.VOID_RAY) + TotalEnemyCount(UnitTypes.ORACLE) == 0);
            result.Building(UnitTypes.ASSIMILATOR, () => SecondRobo);
            result.Building(UnitTypes.SHIELD_BATTERY, Natural, NaturalDefensePos, 2, () => Completed(Natural, UnitTypes.PYLON) > 0);
            result.If(() => Completed(UnitTypes.IMMORTAL) > 0 && Completed(UnitTypes.STALKER) >= 20);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.TWILIGHT_COUNSEL);
            result.Building(UnitTypes.FORGE, () => !EarlyForge);
            result.Upgrade(UpgradeType.ProtossGroundWeapons);
            result.Building(UnitTypes.FORGE);
            result.Upgrade(UpgradeType.ProtossGroundArmor);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => TotalEnemyCount(UnitTypes.CARRIER) + TotalEnemyCount(UnitTypes.TEMPEST) == 0);
            result.Building(UnitTypes.ASSIMILATOR, 4, () => Minerals() >= 700 && Gas() < 200);
            result.If(() => Count(UnitTypes.IMMORTAL) >= 3 && Count(UnitTypes.STALKER) >= 10);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.If(() => Count(UnitTypes.STALKER) + Count(UnitTypes.IMMORTAL) + Count(UnitTypes.ADEPT) >= 15);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.If(() => Completed(UnitTypes.STALKER) + Completed(UnitTypes.IMMORTAL) + Completed(UnitTypes.DISRUPTOR) + Completed(UnitTypes.TEMPEST) + Count(UnitTypes.ADEPT) >= 40 || Minerals() >= 650);
            result.Building(UnitTypes.NEXUS);

            return(result);
        }
Пример #13
0
        private BuildList MainBuild()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Main);
            result.Building(UnitTypes.GATEWAY, Main, () => Completed(UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.ASSIMILATOR, () => !Tyr.Bot.EnemyStrategyAnalyzer.WorkerRushDetected || Count(UnitTypes.ZEALOT) >= 2);
            result.Building(UnitTypes.PYLON, Main, WallIn.Wall[1].Pos, true);
            result.Building(UnitTypes.GATEWAY, Main, WallIn.Wall[0].Pos, true, () => Completed(UnitTypes.PYLON) >= 2);
            result.Building(UnitTypes.CYBERNETICS_CORE, () => !Tyr.Bot.EnemyStrategyAnalyzer.WorkerRushDetected || Count(UnitTypes.ZEALOT) >= 2);
            result.Building(UnitTypes.GATEWAY, Main, WallIn.Wall[2].Pos, true, () => ZealotRushSuspected && Count(UnitTypes.STALKER) >= 2 && Completed(UnitTypes.STALKER) <= 8);
            result.If(() => !ZealotRushSuspected || Count(UnitTypes.STALKER) >= 6);
            result.Building(UnitTypes.NEXUS, () => EarlyNexus);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => (!ZealotRushSuspected || Count(UnitTypes.STALKER) + Count(UnitTypes.ZEALOT) >= 12));
            result.Building(UnitTypes.ASSIMILATOR);
            result.Upgrade(UpgradeType.WarpGate, () => !ZealotRushSuspected || Count(UnitTypes.STALKER) + Count(UnitTypes.ZEALOT) >= 12);
            result.If(() => !CannonDefenseDetected || Count(UnitTypes.WARP_PRISM) > 0);
            result.If(() => !ZealotRushSuspected || Count(UnitTypes.STALKER) + Count(UnitTypes.IMMORTAL) >= 14);
            result.Building(UnitTypes.NEXUS, () => !EarlyNexus);
            result.Building(UnitTypes.FORGE, () => EarlyForge);
            result.Upgrade(UpgradeType.ProtossGroundWeapons, () => EarlyForge);
            result.Building(UnitTypes.PHOTON_CANNON, () => EarlyForge);
            result.Building(UnitTypes.ASSIMILATOR, () => !ZealotRushSuspected || Count(UnitTypes.STALKER) + Count(UnitTypes.ZEALOT) >= 12);
            result.Building(UnitTypes.PYLON, Natural, () => Count(UnitTypes.CYBERNETICS_CORE) > 0 && !CannonDefenseDetected);
            result.Building(UnitTypes.ASSIMILATOR, () => CannonDefenseDetected && StargateDetected);
            result.If(() => (Completed(UnitTypes.IMMORTAL) > 0 || StargateDetected) && Completed(UnitTypes.STALKER) >= 6);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.TWILIGHT_COUNSEL);
            result.Building(UnitTypes.FORGE, () => !EarlyForge);
            result.Upgrade(UpgradeType.ProtossGroundWeapons, () => !CannonDefenseDetected);
            result.Building(UnitTypes.FORGE);
            result.Upgrade(UpgradeType.ProtossGroundArmor);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => TotalEnemyCount(UnitTypes.CARRIER) + TotalEnemyCount(UnitTypes.TEMPEST) == 0);
            result.Building(UnitTypes.ASSIMILATOR, 4, () => Minerals() >= 700 && Gas() < 200);
            result.If(() => (Count(UnitTypes.IMMORTAL) >= 3 || StargateDetected) && Count(UnitTypes.STALKER) >= 10);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.If(() => Count(UnitTypes.STALKER) + Count(UnitTypes.IMMORTAL) + Count(UnitTypes.ADEPT) >= 15);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.If(() => Completed(UnitTypes.STALKER) + Completed(UnitTypes.IMMORTAL) + Completed(UnitTypes.DISRUPTOR) + Completed(UnitTypes.TEMPEST) + Count(UnitTypes.ADEPT) >= 40 || Minerals() >= 650);
            result.Building(UnitTypes.NEXUS);

            return(result);
        }
Пример #14
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);
        }
Пример #15
0
        private BuildList Units()
        {
            BuildList result = new BuildList();

            result.Train(UnitTypes.PROBE, 20);
            result.Train(UnitTypes.PROBE, 32, () => Completed(UnitTypes.NEXUS) >= 2);
            result.Train(UnitTypes.STALKER, 3);
            result.Upgrade(UpgradeType.Blink);
            result.If(() => Bot.Main.BaseManager.Main.BaseLocation.MineralFields.Count >= 8 || Count(UnitTypes.NEXUS) >= 2);
            result.Upgrade(UpgradeType.WarpGate);
            result.Train(UnitTypes.STALKER, 8);
            result.Train(UnitTypes.STALKER);

            return(result);
        }
Пример #16
0
        private BuildList MainBuild()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Main, WallIn.Wall[1].Pos, true);
            result.Building(UnitTypes.GATEWAY, Main, WallIn.Wall[0].Pos, true, () => Completed(UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.CYBERNETICS_CORE);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.NEXUS);
            result.Upgrade(UpgradeType.WarpGate);
            result.Building(UnitTypes.GATEWAY, Main, () => Count(UnitTypes.IMMORTAL) > 0);
            result.Building(UnitTypes.PYLON, Natural, () => Natural.Owner == Bot.Main.PlayerId && !Natural.UnderAttack);
            result.Building(UnitTypes.SHIELD_BATTERY, Natural, 2, () => Bot.Main.Frame >= 3 * 60 * 22.4 && !Expanded.Get().Detected&& Completed(Natural, UnitTypes.PYLON) > 0 && !Natural.UnderAttack && !CannonDefenseDetected);
            result.If(() => Count(UnitTypes.STALKER) >= 5);
            result.Building(UnitTypes.GATEWAY, Main, () => !Expanded.Get().Detected);
            result.If(() => Count(UnitTypes.STALKER) >= 10);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.STARGATE, 2, () => TempestDetected);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => !Expanded.Get().Detected&& !TempestDetected);
            result.If(() => Count(UnitTypes.IMMORTAL) >= 2);
            result.Building(UnitTypes.TWILIGHT_COUNSEL);
            result.Upgrade(UpgradeType.Blink);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => Expanded.Get().Detected&& !TempestDetected);
            result.Building(UnitTypes.FORGE);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Upgrade(UpgradeType.ProtossGroundWeapons);
            result.Building(UnitTypes.FORGE);
            result.Upgrade(UpgradeType.ProtossGroundArmor);
            result.If(() => Count(UnitTypes.IMMORTAL) >= 3 && Count(UnitTypes.STALKER) >= 10);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ROBOTICS_BAY);
            result.Building(UnitTypes.ASSIMILATOR, 4, () => Minerals() >= 700 && Gas() < 200);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.If(() => Count(UnitTypes.STALKER) >= 20);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.NEXUS);

            return(result);
        }
Пример #17
0
        private BuildList Units()
        {
            BuildList result = new BuildList();

            result.Train(UnitTypes.PROBE, 20);
            result.Train(UnitTypes.PROBE, 40, () => Count(UnitTypes.NEXUS) >= 2 && Count(UnitTypes.PYLON) > 2);
            result.Train(UnitTypes.PROBE, 60, () => Count(UnitTypes.NEXUS) >= 3 && Count(UnitTypes.PYLON) > 2);
            result.Train(UnitTypes.PROBE, 70, () => Count(UnitTypes.NEXUS) >= 4 && Count(UnitTypes.PYLON) > 2);
            result.Train(UnitTypes.STALKER, 1);
            result.Upgrade(UpgradeType.WarpGate, () => Count(UnitTypes.STALKER) > 0);
            result.Upgrade(UpgradeType.Charge);
            //result.Train(UnitTypes.STALKER, () => Count(UnitTypes.ZEALOT) >= Count(UnitTypes.STALKER));
            result.Train(UnitTypes.ZEALOT);

            return(result);
        }
Пример #18
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);
        }
Пример #19
0
        public BuildList Units()
        {
            BuildList result = new BuildList();

            result.Train(UnitTypes.SCV, 16);
            result.Train(UnitTypes.SCV, 30, () => Count(UnitTypes.COMMAND_CENTER) >= 2);
            result.Train(UnitTypes.SCV, 50, () => Count(UnitTypes.COMMAND_CENTER) >= 3);
            result.Train(UnitTypes.ORBITAL_COMMAND);
            result.Train(UnitTypes.REAPER, 6);
            result.Train(UnitTypes.FACTORY_TECH_LAB, 1);
            if (SiegeTanks)
            {
                result.Train(UnitTypes.SIEGE_TANK, 10);
            }
            else
            {
                result.Train(UnitTypes.CYCLONE, 10);
            }
            result.Train(UnitTypes.STARPORT_TECH_LAB, () => Completed(UnitTypes.FUSION_CORE) > 0);
            result.Train(UnitTypes.RAVEN, 1, () => Completed(UnitTypes.BATTLECRUISER) >= 2);
            result.Train(UnitTypes.BATTLECRUISER, () => Completed(UnitTypes.FUSION_CORE) > 0);
            result.Upgrade(UpgradeType.YamatoCannon, () => Completed(UnitTypes.BATTLECRUISER) >= 2);
            result.Train(UnitTypes.VIKING_FIGHTER, 10, () => Tyr.Bot.EnemyStrategyAnalyzer.LiftingDetected);
            result.Train(UnitTypes.VIKING_FIGHTER, 10, () => Tyr.Bot.EnemyStrategyAnalyzer.LiftingDetected);
            result.Train(UnitTypes.LIBERATOR, 10);
            result.Train(UnitTypes.MARINE, () =>
                         Tyr.Bot.EnemyStrategyAnalyzer.TotalCount(UnitTypes.BANSHEE) > 0 ||
                         Gas() < 42 ||
                         Tyr.Bot.EnemyStrategyAnalyzer.LiftingDetected);
            result.Train(UnitTypes.REAPER, 16);
            result.Train(UnitTypes.MARINE);

            return(result);
        }
Пример #20
0
        private BuildList MainBuild()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.GATEWAY, Main, () => Completed(UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.CYBERNETICS_CORE);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.STARGATE);
            result.Upgrade(UpgradeType.WarpGate, () => Count(UnitTypes.PHOENIX) >= 5);
            result.Building(UnitTypes.STARGATE, () => Count(UnitTypes.PHOENIX) > 0);
            result.Building(UnitTypes.ASSIMILATOR, 2, () => Count(UnitTypes.PHOENIX) > 2);
            result.If(() => Count(UnitTypes.PHOENIX) + Count(UnitTypes.VOID_RAY) >= 7);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.GATEWAY, Main, 2, () => Minerals() >= 250);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.GATEWAY, Main, 2, () => Minerals() >= 250);

            return(result);
        }
Пример #21
0
        private BuildList Units()
        {
            BuildList result = new BuildList();


            result.Train(UnitTypes.PROBE, 20);
            result.Train(UnitTypes.PROBE, 40, () => Count(UnitTypes.NEXUS) >= 2);
            result.If(() => !StartExpanding || Count(UnitTypes.IMMORTAL) < 2 || Count(UnitTypes.STALKER) + Count(UnitTypes.ZEALOT) + Count(UnitTypes.IMMORTAL) < 8 || Count(UnitTypes.NEXUS) >= 2);
            result.Train(UnitTypes.ZEALOT, 4, () => TotalEnemyCount(UnitTypes.ROACH) == 0 && StartZealots);
            result.Train(UnitTypes.OBSERVER, 1, () => Bot.Main.EnemyRace == SC2APIProtocol.Race.Terran || Count(UnitTypes.IMMORTAL) >= (DoubleRobo ? 4 : 3) || Observer);
            result.If(() => Count(UnitTypes.STALKER) + Count(UnitTypes.IMMORTAL) < 5 || !StartExpanding || Count(UnitTypes.NEXUS) >= 2);
            result.Train(UnitTypes.OBSERVER, 2, () => TotalEnemyCount(UnitTypes.BANSHEE) > 0);
            result.Train(UnitTypes.IMMORTAL, () => TotalEnemyCount(UnitTypes.BANSHEE) == 0 && TotalEnemyCount(UnitTypes.BATTLECRUISER) == 0);
            result.Train(UnitTypes.STALKER, 1, () => !StartZealots);
            if (Bot.Main.EnemyRace != SC2APIProtocol.Race.Zerg && UseSentry)
            {
                result.Train(UnitTypes.SENTRY, 1, () => !PhoenixScoutSent && EarlySentry && !StrategyAnalysis.CannonRush.Get().Detected&& TotalEnemyCount(UnitTypes.FORGE) + TotalEnemyCount(UnitTypes.PHOTON_CANNON) == 0);
            }
            result.Upgrade(UpgradeType.WarpGate, () => !DoubleRobo || Count(UnitTypes.IMMORTAL) >= 4);
            result.Train(UnitTypes.STALKER, () => (!StartZealots || TotalEnemyCount(UnitTypes.ROACH) + TotalEnemyCount(UnitTypes.MUTALISK) > 0) && (!DoubleRobo || Count(UnitTypes.STALKER) < 3 || Gas() >= 125));
            result.Train(UnitTypes.ZEALOT, () => TotalEnemyCount(UnitTypes.ROACH) + TotalEnemyCount(UnitTypes.MUTALISK) == 0 && StartZealots);
            result.Train(UnitTypes.IMMORTAL, () => TotalEnemyCount(UnitTypes.BATTLECRUISER) > 0 && Count(UnitTypes.STALKER) >= 10);

            return(result);
        }
Пример #22
0
        private BuildList Units()
        {
            BuildList result = new BuildList();

            result.If(() => Count(UnitTypes.NEXUS) >= 2 || !Expand);
            result.Train(UnitTypes.PROBE, 16);
            result.Train(UnitTypes.PROBE, 20, () => Count(UnitTypes.ASSIMILATOR) > 0);
            result.Train(UnitTypes.PROBE, 30, () => Count(UnitTypes.NEXUS) >= 2);
            result.Upgrade(UpgradeType.Charge);
            result.Upgrade(UpgradeType.WarpGate);
            result.Train(UnitTypes.OBSERVER, 1);
            result.Train(UnitTypes.IMMORTAL);
            result.Train(UnitTypes.ZEALOT, 10, () => Bot.Main.Frame < 22.4 * 130 || Minerals() >= 250);
            result.Train(UnitTypes.STALKER, () => Gas() >= 150 || Count(UnitTypes.ROBOTICS_FACILITY) > 0);
            return(result);
        }
Пример #23
0
        private BuildList MainBuildList()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Main);
            result.If(() => Completed(UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.GATEWAY, Main);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.CYBERNETICS_CORE, Main);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.STARGATE);
            result.Building(UnitTypes.PYLON, Natural, NaturalDefensePos);
            result.Building(UnitTypes.TWILIGHT_COUNSEL);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.DARK_SHRINE);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, () => Count(UnitTypes.DISRUPTOR) > 0 || Count(UnitTypes.STALKER) >= 12);
            result.Building(UnitTypes.GATEWAY);
            result.Building(UnitTypes.FLEET_BEACON);
            result.Upgrade(UpgradeType.Blink);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.ASSIMILATOR, () => Minerals() >= 600);
            result.Building(UnitTypes.STARGATE);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.GATEWAY);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.ASSIMILATOR);
            result.If(() => Completed(UnitTypes.STALKER) + Completed(UnitTypes.PHOENIX) >= 30);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 3);
            result.Building(UnitTypes.GATEWAY, 2);
            return(result);
        }
Пример #24
0
        private BuildList Units()
        {
            BuildList result = new BuildList();

            result.Train(UnitTypes.PROBE, 20);
            result.Train(UnitTypes.PROBE, 40, () => Count(UnitTypes.NEXUS) >= 2 && Count(UnitTypes.PYLON) > 2);
            result.Train(UnitTypes.PROBE, 60, () => Count(UnitTypes.NEXUS) >= 3 && Count(UnitTypes.PYLON) > 2);
            result.Train(UnitTypes.PROBE, 70, () => Count(UnitTypes.NEXUS) >= 4 && Count(UnitTypes.PYLON) > 2);
            result.Train(UnitTypes.OBSERVER, 1);
            result.Train(UnitTypes.STALKER, 1);
            result.Train(UnitTypes.OBSERVER, 2, () => BansheesDetected || Count(UnitTypes.IMMORTAL) > 0);
            result.Train(UnitTypes.TEMPEST, 2);
            result.Train(UnitTypes.PHOENIX, 10);
            result.Upgrade(UpgradeType.WarpGate);
            result.If(() => Count(UnitTypes.STALKER) + Count(UnitTypes.IMMORTAL) + Count(UnitTypes.PHOENIX) < 30 || Count(UnitTypes.NEXUS) >= 3);
            result.If(() => !BuildTempest || Count(UnitTypes.FLEET_BEACON) > 0 || Count(UnitTypes.STALKER) < 20);
            result.If(() => Count(UnitTypes.NEXUS) >= 2 || Count(UnitTypes.STALKER) + Count(UnitTypes.IMMORTAL) < 15);
            result.If(() => Count(UnitTypes.NEXUS) >= 3 || Count(UnitTypes.STALKER) + Count(UnitTypes.IMMORTAL) < 20);
            result.Train(UnitTypes.IMMORTAL, 5, () => !BansheesDetected);
            result.Train(UnitTypes.COLOSUS, 4, () => !BansheesDetected);
            result.Train(UnitTypes.IMMORTAL, () => !BansheesDetected);
            result.Train(UnitTypes.STALKER, 5);
            result.Train(UnitTypes.SENTRY, 1);
            result.Train(UnitTypes.STALKER);

            return(result);
        }
Пример #25
0
        private BuildList Units()
        {
            BuildList result = new BuildList();

            result.Train(UnitTypes.PROBE, 20, () => !ProxyMarauderSuspected || Count(UnitTypes.PROBE) < 18 || Minerals() >= 300);
            result.Train(UnitTypes.PROBE, 40, () => Count(UnitTypes.NEXUS) >= 2);
            result.Train(UnitTypes.ZEALOT, 3, () => StrategyAnalysis.WorkerRush.Get().Detected);
            result.Train(UnitTypes.SENTRY, 1, () => FourRax.Get().Detected);
            result.If(() => !TimingAttackTask.Task.AttackSent || Count(UnitTypes.STALKER) < 10 || Count(UnitTypes.NEXUS) >= 2);
            result.If(() => !TimingAttackTask.Task.AttackSent || Count(UnitTypes.STALKER) < 10 || Completed(UnitTypes.TWILIGHT_COUNSEL) == 0 || UpgradeType.LookUp[UpgradeType.Blink].Started());
            result.Train(UnitTypes.OBSERVER, 1, () => Completed(UnitTypes.IMMORTAL) >= 2);
            result.Train(UnitTypes.STALKER, () => !DefendingStalkerClose && EnemyReaperClose);
            result.Train(UnitTypes.IMMORTAL, 1, () => Gas() >= 100 && !ProxyMarauderSuspected);
            result.Train(UnitTypes.IMMORTAL, 1, () => ProxyMarauderSuspected && Count(UnitTypes.SHIELD_BATTERY) >= 2 && Count(UnitTypes.STALKER) >= 3);
            result.Train(UnitTypes.OBSERVER, 2, () => Completed(UnitTypes.STALKER) + Completed(UnitTypes.IMMORTAL) >= 6 && Completed(UnitTypes.IMMORTAL) >= 2);
            result.Train(UnitTypes.VOID_RAY, 1, () => MakeVoidray && Gas() >= 100 && !VoidrayDone);
            result.Train(UnitTypes.STALKER, 1);
            result.Upgrade(UpgradeType.WarpGate, () => !ProxyMarauderSuspected || Count(UnitTypes.IMMORTAL) > 0);
            result.Train(UnitTypes.PHOENIX, 1, () => Gas() >= 100);
            result.Train(UnitTypes.STALKER, 3);
            result.Train(UnitTypes.TEMPEST, 1, () => Gas() >= 50);
            result.Train(UnitTypes.TEMPEST, 3, () => Gas() >= 100);
            result.Train(UnitTypes.PHOENIX, () => Gas() >= 100);
            result.Train(UnitTypes.IMMORTAL, 8, () => ProxyMarauderSuspected && Gas() >= 100 && (!ProxyMarauderSuspected || Count(UnitTypes.SHIELD_BATTERY) >= 2));
            result.Train(UnitTypes.STALKER, () => !ProxyMarauderSuspected || Count(UnitTypes.SHIELD_BATTERY) >= 2);

            return(result);
        }
Пример #26
0
        private BuildList MainBuildList()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON);
            result.If(() => Completed(UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.GATEWAY);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.CYBERNETICS_CORE);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.STARGATE, () => BansheesDetected);
            result.Building(UnitTypes.FLEET_BEACON, () => Completed(UnitTypes.STARGATE) > 0 && BuildTempest);
            result.Building(UnitTypes.GATEWAY);
            result.Building(UnitTypes.PYLON, Natural, NaturalDefensePos);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.NEXUS);
            //result.Building(UnitTypes.PYLON, ScoutingPylonBase, ScoutingPylonPos, () => !BansheesDetected);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.GATEWAY, () => BansheesDetected);
            result.Building(UnitTypes.ROBOTICS_BAY, () => !BansheesDetected);
            result.Upgrade(UpgradeType.ExtendedThermalLance);
            result.Building(UnitTypes.GATEWAY);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => !BansheesDetected);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.GATEWAY, 2);
            return(result);
        }
Пример #27
0
        private BuildList MainBuildList()
        {
            BuildList result = new BuildList();

            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.PYLON, Main);
            result.If(() => Completed(UnitTypes.PYLON) > 0);
            result.Building(UnitTypes.GATEWAY, Main);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.PYLON, Main, () => Defensive);
            result.Building(UnitTypes.CYBERNETICS_CORE, Main);
            result.Building(UnitTypes.ASSIMILATOR, () => Defensive);
            result.Building(UnitTypes.GATEWAY, Main, () => Defensive);
            result.Building(UnitTypes.ASSIMILATOR, () => ProxyDetected);
            result.Building(UnitTypes.PYLON, Main, () => ProxyDetected);
            result.Building(UnitTypes.GATEWAY, 2, () => ProxyDetected && TotalEnemyCount(UnitTypes.PHOTON_CANNON) == 0);
            result.Building(UnitTypes.ROBOTICS_FACILITY, () => ProxyDetected && TotalEnemyCount(UnitTypes.PHOTON_CANNON) > 0);
            result.If(() => !ProxyDetected || Completed(UnitTypes.STALKER) >= 20);
            result.If(() => !Defensive || Count(UnitTypes.STALKER) >= 2);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ROBOTICS_FACILITY);
            result.Building(UnitTypes.ASSIMILATOR, () => !Defensive);
            result.Building(UnitTypes.PYLON, Natural, NaturalDefensePos);
            result.Building(UnitTypes.PYLON);
            result.Building(UnitTypes.TWILIGHT_COUNSEL, () => EnemyStargateOpener);
            result.Building(UnitTypes.GATEWAY, 2, () => EnemyStargateOpener || StalkerAggressionSuspected);
            result.Building(UnitTypes.ASSIMILATOR, 2, () => EnemyVoidRayOpener && TotalEnemyCount(UnitTypes.PHOTON_CANNON) + TotalEnemyCount(UnitTypes.OBSERVER) == 0);
            result.Building(UnitTypes.DARK_SHRINE, () => EnemyVoidRayOpener && TotalEnemyCount(UnitTypes.PHOTON_CANNON) + TotalEnemyCount(UnitTypes.OBSERVER) == 0);
            result.Building(UnitTypes.SHIELD_BATTERY, Natural, NaturalDefensePos, 2, () => EnemyVoidRayOpener || StalkerAggressionSuspected);
            result.If(() => !EnemyVoidRayOpener || TotalEnemyCount(UnitTypes.PHOTON_CANNON) + TotalEnemyCount(UnitTypes.OBSERVER) > 0 || Count(UnitTypes.DARK_TEMPLAR) > 0);
            result.If(() => Count(UnitTypes.IMMORTAL) + Count(UnitTypes.STALKER) >= 7);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, () => Count(UnitTypes.FLEET_BEACON) > 0);
            result.Building(UnitTypes.ASSIMILATOR, () => Count(UnitTypes.STALKER) >= 12);
            result.Building(UnitTypes.ASSIMILATOR, () => Count(UnitTypes.TEMPEST) > 0);
            result.Building(UnitTypes.GATEWAY, Natural);
            result.Building(UnitTypes.STARGATE);
            result.Upgrade(UpgradeType.Blink);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.FLEET_BEACON);
            result.Building(UnitTypes.STARGATE);
            result.Building(UnitTypes.STARGATE, () => EnemyVoidRayOpener);
            result.Building(UnitTypes.FORGE, () => EnemyVoidRayOpener && Minerals() >= 500);
            result.Building(UnitTypes.PHOTON_CANNON, Natural, NaturalDefensePos, 3, () => EnemyVoidRayOpener && Minerals() >= 600);
            result.If(() => !EnemyStargateOpener || Count(UnitTypes.TEMPEST) >= 6);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.FORGE, 2);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.ASSIMILATOR);
            result.Building(UnitTypes.STARGATE, () => !EnemyVoidRayOpener);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 3);
            result.Building(UnitTypes.NEXUS);
            result.Building(UnitTypes.ASSIMILATOR, 2);
            result.Building(UnitTypes.STARGATE);
            result.Building(UnitTypes.TWILIGHT_COUNSEL, () => !EnemyTempestOpener);
            result.Building(UnitTypes.GATEWAY, 2, () => Minerals() >= 500);
            return(result);
        }
Пример #28
0
        private BuildList Units()
        {
            BuildList result = new BuildList();

            result.Train(UnitTypes.PROBE, 20);
            result.Train(UnitTypes.PROBE, 32, () => Completed(UnitTypes.NEXUS) >= 2);
            result.Train(UnitTypes.STALKER, 3);
            result.Upgrade(UpgradeType.Blink);
            result.If(() => UpgradeType.LookUp[UpgradeType.Blink].Started() || Completed(UnitTypes.TWILIGHT_COUNSEL) == 0);
            result.If(() => Bot.Main.BaseManager.Main.BaseLocation.MineralFields.Count >= 8 || Count(UnitTypes.NEXUS) >= 2);
            result.Upgrade(UpgradeType.WarpGate);
            result.Train(UnitTypes.STALKER, 6);
            result.Train(UnitTypes.SENTRY, 1);
            result.Train(UnitTypes.STALKER);

            return(result);
        }
Пример #29
0
        private BuildList Units()
        {
            BuildList result = new BuildList();

            result.Train(UnitTypes.PROBE, 19);
            result.Train(UnitTypes.PROBE, 30, () => Count(UnitTypes.NEXUS) >= 2);
            result.Train(UnitTypes.PROBE, 60, () => Count(UnitTypes.NEXUS) >= 3);
            result.Train(UnitTypes.WARP_PRISM, 1);
            result.Train(UnitTypes.IMMORTAL, 2);
            result.Train(UnitTypes.OBSERVER, 1);
            result.Train(UnitTypes.IMMORTAL, 12);
            result.Upgrade(UpgradeType.Charge);
            result.Train(UnitTypes.ZEALOT, () => Count(UnitTypes.IMMORTAL) >= 2 && !TimingAttackTask.Task.AttackSent);
            result.Upgrade(UpgradeType.WarpGate);

            return(result);
        }
Пример #30
0
        private BuildList Units()
        {
            BuildList result = new BuildList();

            result.Train(UnitTypes.PROBE, 20);
            result.Train(UnitTypes.PROBE, 32, () => Completed(UnitTypes.NEXUS) >= 2);
            result.Train(UnitTypes.STALKER, 3);
            result.Upgrade(UpgradeType.Blink);
            result.If(() => UpgradeType.LookUp[UpgradeType.Blink].Started() || Completed(UnitTypes.TWILIGHT_COUNSEL) == 0);
            result.If(() => Bot.Main.BaseManager.Main.BaseLocation.MineralFields.Count >= 8 || Count(UnitTypes.NEXUS) >= 2);
            result.Train(UnitTypes.VOID_RAY);
            result.Upgrade(UpgradeType.WarpGate);
            result.If(() => Count(UnitTypes.STARGATE) > 0 || TotalEnemyCount(UnitTypes.ROBOTICS_FACILITY) == 0 || !VoidrayTransition);
            result.Train(UnitTypes.STALKER, 8);
            result.Train(UnitTypes.SENTRY, 1, () => HallucinationScout && !PhoenixScoutSent);
            result.Train(UnitTypes.STALKER);

            return(result);
        }