ZAPOC 7.4 + Mighty Crusader 1.5 (Top post)

Help - Resources - AI Scripting - Grafting - Plugins - Modding Projects
IskatuMesk
Posts: 329
Joined: Wed May 16, 2007 5:57 pm

ZAPOC 7.4 + Mighty Crusader 1.5 (Top post)

Postby IskatuMesk » Fri Jan 01, 2010 9:24 am

ZAPOC 7.0 is a script derived from the ashes of ZONS. My most difficult and final effort to create a functional Extreme Zerg to end all Zergs.

Screenshots of the scrapped version when it was still functional.

Image
Image

I am employing the attack code proposed by Myk in one of his scripts that works in segmented spasms and with killable threads. It works moderately well. But the problem now is getting the AI to tech fast and upgrade, or even build evolution chambers reliably.

After about 8 hours of screwing around with the script I eventually rendered it completely broken and irrecoverable. So what I'm going to do tomorrow is this.


- Go back to 6.9f.
- Fix lings.
- Implement new attack code.
- Remove expanding.
- Test.

Once it works moderately well, I have the following goals to establish.

- Get the AI to upgrade fast, or at all. In one game they had 0/0 air upgrades 30 minutes in. Those big flocks of guardians could have been doing way more damage.
- Get the AI to build an additional 20-30 hatcheries after it enters the final loop through an external start_town segment.
- Add lurkers. Lurkers worked great in my initial tests. They're best for defense because they don't run around as much. They're good for offense because they tend to ignore advancing armies and just run straight into the enemy base and can cause quite a bit of damage if there's a lot of them. [cutoff]... read more[/cutoff]

The current modifications I put into my script that worked well that I'll have to add back into it tomorrow.

- Getting the AI to hit hive-level tech around 4:50.
- Implement varied attack forces. With just one big attack block, they only built hydras and mutas. So I added one for ultras and hydras and lurkers and it worked very, very well. Except for them not being upgraded, of course.

NEW 7.3b code

Changelog -

7.0 -

Initial version.

7.1 -

First major version. Can stalemate Myk's protoss, but is lethargic in upgrades and construction.

7.2 -

Notable changes;

- Upped the maxes for ultras, guardians, the works.
- Builds more hatcheries.
- No longer builds sunkens. Seemed kind of moot with the addition of lurkers + I want to eliminate as many variables in building as possible when the AI has so much it needs to deal with.
- Gets 3 lairs for some instances where it would for some reason read ahead and get overlord capacity before hive. looks like I removed that because of issues it caused...
- Some minor alterations.

Problems -

- Works fine against Myk's Protoss, completely breaks vs Ashara's protoss. No idea why.
- Tech is not as fast as it could be. The main code still needs to be streamlined.
- Early hatchery construction is very, very slow for some reason. I want it to be as fast as Zbath's. But any changes totally break the script. Help?

7.3

Notable changes;

- Merged drone thread with main and exchanged some construction priorities into off threads and moved some upgrades.
- Builds hatcheries faster, retains good tech speed (ultra cavern starts at 4:50 in BGR), upgrades a little faster, all around better.
- Able to defeat Ashara in both BGR and BWAIWar while maintaining the ability to stalemate Myk's protoss on both maps. Unfortunately BGR really would never end regardless because both scripts trap many of their big units behind buildings. :

Problems -

- This script still remains fairly vulnerable to a pre- 5:00 rush of significant size. It only gets hydras and mutas around 4:00 or so, before then it is completely open to attack. Once it hits tier 3 it is virtually impossible to kill unless it bugs out. This AI would probably not be able to beat Ashara on a very small map like Luna or other Progaming maps, and stalemating Myk in those maps would also be iffy.

As it is I don't think it is possible to beat Myk's protoss with zerg unless it is drawn out over an extremely long time. Sometimes ZAPOC does significant damage to its first or second expansions or destroys almost all of its expansions and deals minor damage to the main, but the protoss are always able to kill gratuitous amounts of units with archons and storm before they can begin attacking buildings. The distance also works against ZAPOC since it relies heavily on guardians to deal with archons.


7.4 - Current Version

Notable Changes;

- Increased the speed that upgrades are researched. This has come at the cost of some stability and it seems that they take some damage from Ashara/Myk's protoss in their matches though nothing significant as a result.
- Added anti-terran attack loop - is able to defeat Skynet.
- Removed send_suicide loop resulting in massively increased productivity. Instead of hovering around 150/200 supply vs Myk they were always at 200/200.

Problems -

- Remains vulnerable for the first 3 or so minutes in the game. For some reason vs terran they choose to make lings but vs toss they make hydras instead. I can't really let them build units during this time or slows tech way too much or, even worse, interrupts drone production.
- They don't seem to get 1-2 hatcheries out of the first hatchery block until after the hive is finished. The hive in general seems to stall the entire script until it's done, even unrelated multithreads.
- There is the potential the upgrade timings will break the zerg and cause them to refuse to build units or build them too slowly and die to the first major pushes from Ashara/Myk's toss, but in my tests it didn't seem to do that.

While testing this version vs Myk's protoss it froze my computer and caused me to lose the 7.4 scaiedit data. I still have the Py code but... not exactly my favored playground. I'll have to get used to it if I plan to update the Ai any further.

7.4 code

[spoiler]

Code: Select all

### NOTE: There is no way to determine the scripts flags or if it is a BW script or not!
###      please update the header below appropriately!
ZMCx(1344, 101, aiscript): # Script Name: ZAPOC 7.4 Revise1

# ==== Our best, last hope for ZONS.
# ==== SECOND REVISION OF 6.9
# ==== Attack code inspired by Myk

   debug(null, ZAPOC 7.4 by IskatuMesk)
   --null--


# ======== Insert race detection jumper here.
#start_campaign
#wait 1

   start_town()
#defaultbuild_off
#default_min 0
#wait 1

# ======== Main script
   define_max(15, drone)
   define_max(255, zergling)
   define_max(5, hydralisk)
   define_max(30, mutalisk)
   define_max(16, guardian)
   define_max(14, devourer)
   define_max(14, lurker)
   define_max(16, ultralisk)
   define_max(3, defiler)
   define_max(2, queen)
   define_max(10, scourge)
   multirun(cash_zbath)

   build(5, drone, 90)
   wait(10)
   multirun(b_pool)
   wait(10)
   multirun(b_hatch5)
   defenseuse_gg(1, zergling)
   defensebuild_gg(1, zergling)
   wait(1000)
   build(1, lair, 90)
   wait_buildstart(1, lair)
   build(1, evolution_chamber, 80)
   wait(10)
   build(6, drone, 90)
   multirun(hydraden)
   wait(100)
   build(2, lair, 90)
   wait(100)
   build(4, overlord, 80)
#multirun defenses
   upgrade(1, overlord_speed, 80)
   defenseuse_gg(1, hydralisk)
   defenseuse_ga(1, hydralisk)
   defenseuse_ag(1, hydralisk)
   defenseuse_aa(1, hydralisk)
   defensebuild_ag(1, hydralisk)
   defensebuild_ga(1, hydralisk)
   defensebuild_aa(1, hydralisk)
   defensebuild_gg(1, hydralisk)
   wait(500)
   build(8, drone, 90)
   multirun(air_units)
   wait(10)
   multirun(b_hatch5x)
   wait(10)
   build(8, overlord, 80)
   defenseuse_gg(1, mutalisk)
   defensebuild_gg(1, mutalisk)
   defenseuse_gg(1, guardian)
   defensebuild_gg(1, guardian)
   defenseuse_aa(1, mutalisk)
   defensebuild_aa(1, mutalisk)
   defenseuse_ag(1, mutalisk)
   defensebuild_ag(1, mutalisk)
   defenseuse_ga(1, mutalisk)
   defensebuild_ga(1, mutalisk)
   multirun(b_nest)
   build(10, drone, 90)
   wait(300)
   define_max(35, hydralisk)
   send_suicide(0)
   wait(300)
   build(12, overlord, 80)
   multirun(evo_upgrades_zbath)
   wait(2000)
   multirun(ultras)
   wait(10)
   multirun(defilers)
   wait(10)
#multirun suicide_loop
   defenseuse_aa(1, devourer)
   defensebuild_aa(1, devourer)
   wait(10)
   build(16, overlord, 80)
   multirun(b_xhatchb)
   race_jump(vterran, loop, loop)

      --loop--
   send_suicide(0)
   wait(100)
   defenseclear_gg()
   defenseclear_ag()
   defenseclear_ga()
   defenseclear_aa()
   wait(10)
   multirun(a_mutas)
   wait(50)
   multirun(a_guards)
   wait(50)
   multirun(a_devs)
   wait(50)
   multirun(a_ultras)
   wait(50)
   multirun(a_hydras)
   wait(50)
   multirun(a_defilers)
   wait(50)
   multirun(a_luckers)

#train 18 mutalisk
#train 6 devourer
#train 6 guardian
#train 25 hydralisk
#train 30 zergling
#train 8 ultralisk
#attack_add 25 hydralisk
#attack_add 30 zergling
#attack_add 8 ultralisk
#attack_add 6 devourer
#attack_add 6 guardian
#attack_add 18 mutalisk

   wait(900)
#attack_prepare
   clear_combatdata()
   send_suicide(0)
   wait(50)
   multirun(a_ultras)
   wait(50)
   multirun(a_hydras)
   wait(50)
   multirun(a_luckers)
   wait(800)
#attack_prepare
   wait(1000)
   goto(loop)






      --suicide_loop--
   wait(1500)
   send_suicide(0)
   clear_combatdata()
   goto(suicide_loop)

# ###########################
# ==== Construction-related
# ###########################


# ======== This might not work. Can we make ZAPOC get an INSANE number of hatcheries?!


      --b_pool--
   build(1, spawning_pool, 100)
   stop()

      --b_hatch5--
   build(2, hatchery, 80)
   wait_buildstart(2, hatchery)
   build(3, hatchery, 80)
   wait_buildstart(3, hatchery)
   build(4, hatchery, 80)
   wait_buildstart(4, hatchery)
   build(5, hatchery, 80)
   wait_buildstart(5, hatchery)
   build(6, hatchery, 80)
   wait_buildstart(6, hatchery)
   build(7, hatchery, 80)
   wait_buildstart(7, hatchery)
   build(8, hatchery, 80)
   wait_buildstart(8, hatchery)
   build(9, hatchery, 80)
   stop()

      --b_hatch5x--
   start_town()
   build(2, hatchery, 80)
   wait_buildstart(2, hatchery)
   build(3, hatchery, 80)
   wait_buildstart(3, hatchery)
   build(4, hatchery, 80)
   wait_buildstart(4, hatchery)
   build(5, hatchery, 80)
   wait_buildstart(5, hatchery)
   build(6, hatchery, 80)
   wait_buildstart(6, hatchery)
   build(7, hatchery, 80)
   stop()

      --b_hatch12--
   build(8, hatchery, 80)
   wait_buildstart(8, hatchery)
   build(9, hatchery, 80)
   wait_buildstart(9, hatchery)
   build(10, hatchery, 80)
   wait_buildstart(10, hatchery)
   build(11, hatchery, 80)
   wait_buildstart(11, hatchery)
   build(12, hatchery, 80)
   wait_buildstart(12, hatchery)
   build(13, hatchery, 80)
   stop()

      --b_xhatch--
   start_town()
   build(2, hatchery, 80)
   wait_buildstart(2, hatchery)
   build(3, hatchery, 80)
   wait_buildstart(3, hatchery)
   build(4, hatchery, 80)
   wait_buildstart(4, hatchery)
   build(5, hatchery, 80)
   wait_buildstart(5, hatchery)
   build(6, hatchery, 80)
   wait_buildstart(6, hatchery)
   build(7, hatchery, 80)
   wait_buildstart(7, hatchery)
   build(9, hatchery, 80)
   wait_buildstart(9, hatchery)
   build(10, hatchery, 80)
   wait_buildstart(10, hatchery)
   build(11, hatchery, 80)
   wait_buildstart(11, hatchery)
   build(12, hatchery, 80)
   wait_buildstart(12, hatchery)
   build(13, hatchery, 80)
   stop()

      --b_xhatchb--
   start_town()
   build(2, hatchery, 80)
   wait_buildstart(2, hatchery)
   build(3, hatchery, 80)
   wait_buildstart(3, hatchery)
   build(4, hatchery, 80)
   wait_buildstart(4, hatchery)
   build(5, hatchery, 80)
   wait_buildstart(5, hatchery)
   build(6, hatchery, 80)
   wait_buildstart(6, hatchery)
   build(7, hatchery, 80)
   wait_buildstart(7, hatchery)
   build(9, hatchery, 80)
   wait_buildstart(9, hatchery)
   build(10, hatchery, 80)
   wait_buildstart(10, hatchery)
   build(11, hatchery, 80)
   wait_buildstart(11, hatchery)
   build(12, hatchery, 80)
   wait_buildstart(12, hatchery)
   build(13, hatchery, 80)
   wait_buildstart(13, hatchery)
   build(14, hatchery, 80)
   wait_buildstart(14, hatchery)
   build(15, hatchery, 80)
   wait_buildstart(15, hatchery)
   build(16, hatchery, 80)
   wait_buildstart(16, hatchery)
   build(17, hatchery, 80)
   wait_buildstart(17, hatchery)
   build(18, hatchery, 80)
   wait_buildstart(18, hatchery)
   build(19, hatchery, 80)
   wait_buildstart(19, hatchery)
   build(20, hatchery, 80)
   wait_buildstart(20, hatchery)
   build(22, hatchery, 80)
   wait_buildstart(22, hatchery)
   build(23, hatchery, 80)
   wait_buildstart(23, hatchery)
   build(24, hatchery, 80)
   wait_buildstart(24, hatchery)
   build(25, hatchery, 80)
   wait_buildstart(25, hatchery)
   build(26, hatchery, 80)
   wait_buildstart(26, hatchery)
   build(27, hatchery, 80)
   wait_buildstart(27, hatchery)
   build(28, hatchery, 80)
   wait_buildstart(28, hatchery)
   build(29, hatchery, 80)
   stop()

      --b_nest--
   wait_build(1, lair)
   build(1, queen_nest, 100)

      --hivez--
   wait(20)
   notowns_jump(queen_nest, hivez)
   build(1, hive, 110)
   wait_build(1, hive)

      --olcap--
   wait(20)
   notowns_jump(hive, olcap)
   upgrade(1, overlord_capacity, 80)
   stop()


      --hydraden--
   build(1, hydralisk_den, 80)

      --hydrachek--
   wait(20)
   notowns_jump(hydralisk_den, hydrachek)
   build(2, hydralisk_den, 80)
   wait(500)
   tech(lurker_aspect, 80)
   wait(700)
   goto(hydra_upgrades)

      --air_units--
   wait_build(1, lair)
   build(1, spire, 90)
   wait_buildstart(1, spire)
   build(2, spire, 90)
      --gspirecheck--
   wait(20)
   notowns_jump(hive, gspirecheck)
   build(1, greater_spire, 95)
   wait_buildstart(1, greater_spire)
   goto(air_upgrades_zbath)

      --hydra_upgrades--
   upgrade(1, hydralisk_range, 80)
   wait(500)
   upgrade(1, hydralisk_speed, 80)
   stop()


      --defilers--
   build(1, defiler_mound, 80)
   wait_build(1, defiler_mound)
   place_guard(defiler, 0)
   tech(plague, 30)
   wait(2000)
   upgrade(1, defiler_mana, 30)
   wait(10)
   stop()

      --ultras--
   build(1, ultralisk_cavern, 90)
   wait_build(1, ultralisk_cavern)
   defenseuse_gg(1, ultralisk)
   defensebuild_gg(1, ultralisk)
   upgrade(1, ultralisk_speed, 70)
   wait(2000)
   upgrade(1, ultralisk_armor, 70)
   wait(10)
   stop()


      --evo_upgrades_zbath--
   build(2, evolution_chamber, 85)
   wait_buildstart(2, evolution_chamber)
   wait(200)
   build(3, evolution_chamber, 85)
   wait_build(3, evolution_chamber)
   upgrade(1, z_melee_attack, 80)
   upgrade(1, z_carapace, 80)
   upgrade(1, z_missile_attack, 80)
   wait(4500)
   upgrade(2, z_melee_attack, 80)
   upgrade(2, z_carapace, 80)
   upgrade(2, z_missile_attack, 80)
   wait(4500)
   upgrade(3, z_melee_attack, 80)
   upgrade(3, z_carapace, 80)
   upgrade(3, z_missile_attack, 80)
   wait(10)
   stop()

      --air_upgrades_zbath--
   upgrade(1, z_flyer_attack, 80)
   upgrade(1, z_flyer_carapace, 80)
   wait(4500)
   upgrade(2, z_flyer_attack, 80)
   upgrade(2, z_flyer_carapace, 80)
   wait(4500)
   upgrade(3, z_flyer_attack, 80)
   upgrade(3, z_flyer_carapace, 80)
   wait(10)
   stop()

# ###########################
# ==== Defense facility handler
# ###########################
# == This will make the decision to either wait until the hive to build some Anti-Air, or build it early.

      --defenses--
   race_jump(standard, standard, d_protoss)

      --standard--
   wait_build(1, hive)

      --d_protoss--
   build(1, creep_colony, 80)
   wait_buildstart(1, creep_colony)
   build(1, spore_colony, 80)
   build(2, creep_colony, 80)
   wait_buildstart(2, creep_colony)
   build(2, spore_colony, 2)
   build(3, creep_colony, 80)
   wait_buildstart(3, creep_colony)
   build(3, spore_colony, 2)
   build(4, creep_colony, 80)
   wait_buildstart(4, creep_colony)
   build(4, spore_colony, 80)
   creep(3)
   build(5, creep_colony, 80)
   wait_buildstart(5, creep_colony)
   build(5, spore_colony, 2)
   build(6, creep_colony, 80)
   wait_buildstart(6, creep_colony)
   build(6, spore_colony, 80)
   build(7, creep_colony, 80)
   wait_buildstart(7, creep_colony)
   build(8, creep_colony, 80)
   wait_buildstart(8, creep_colony)
   build(9, creep_colony, 80)
   wait_buildstart(9, creep_colony)
   build(10, creep_colony, 80)
   wait_buildstart(10, creep_colony)
   build(10, spore_colony, 80)
   stop()



# ###########################
# ==== Attack-related
# ###########################


      --hydras--
   notowns_jump(hydralisk_den, halt)
   defenseuse_gg(1, hydralisk)
   defenseuse_ga(1, hydralisk)
   defenseuse_ag(1, hydralisk)
   defenseuse_aa(1, hydralisk)
   defensebuild_ag(1, hydralisk)
   defensebuild_ga(1, hydralisk)
   defensebuild_aa(1, hydralisk)
   defensebuild_gg(1, hydralisk)
   train(20, hydralisk)
   wait_force(20, hydralisk)
   attack_add(20, hydralisk)
   attack_prepare()
   wait(200)
   attack_do()
   attack_clear()
   stop()


      --a_lings--
   notowns_jump(spawning_pool, halt)
   defensebuild_gg(1, zergling)
   defenseuse_gg(1, zergling)
   train(5, zergling)
#attack_add 5 zergling
   wait(10)
   train(10, zergling)
#attack_add 5 zergling
   wait(10)
   train(15, zergling)
#attack_add 5 zergling
   wait(10)
   stop()

      --a_luckers--
   notowns_jump(hydralisk_den, halt)
   defenseuse_gg(1, lurker)
   defensebuild_gg(1, lurker)
   train(1, lurker)

   wait(10)
   train(2, lurker)

   wait(10)
   train(3, lurker)

   wait(10)
   train(4, lurker)

   wait(10)
   train(5, lurker)

   wait(10)
   train(6, lurker)

   wait(10)
   train(7, lurker)

   wait(10)
   train(8, lurker)

   wait(10)
   stop()


      --a_hydras--
   notowns_jump(hydralisk_den, halt)
   defenseuse_gg(1, hydralisk)
   defenseuse_ga(1, hydralisk)
   defenseuse_ag(1, hydralisk)
   defenseuse_aa(1, hydralisk)
   defensebuild_ag(1, hydralisk)
   defensebuild_ga(1, hydralisk)
   defensebuild_aa(1, hydralisk)
   defensebuild_gg(1, hydralisk)
   train(5, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(10, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(15, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(20, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(25, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(30, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   stop()

      --a_defilers--
   notowns_jump(defiler_mound, halt)
   train(1, defiler)
#attack_add 1 defiler
   wait(10)
   train(2, defiler)
#attack_add 1 defiler
   wait(10)
   train(3, defiler)
#attack_add 1 defiler
   wait(10)
   stop()


      --a_mutas--
   notowns_jump(spire, halt)
   defenseuse_gg(1, mutalisk)
   defensebuild_gg(1, mutalisk)
   defenseuse_gg(1, guardian)
   defensebuild_gg(1, guardian)
   defenseuse_aa(1, mutalisk)
   defensebuild_aa(1, mutalisk)
   defenseuse_ag(1, mutalisk)
   defensebuild_ag(1, mutalisk)
   defenseuse_ga(1, mutalisk)
   defensebuild_ga(1, mutalisk)
   train(4, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(8, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(12, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(16, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(20, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   stop()

      --a_guards--
   notowns_jump(greater_spire, halt)
   defensebuild_gg(1, guardian)
   defenseuse_gg(1, guardian)
   train(2, guardian)
#attack_add 2 guardian
   wait(10)
   train(4, guardian)
#attack_add 2 guardian
   wait(10)
   train(6, guardian)
#attack_add 2 guardian
   wait(10)
   train(8, guardian)
#attack_add 2 guardian
   wait(10)
   train(10, guardian)
   wait(10)
   train(12, guardian)
   wait(10)
   stop()

      --a_devs--
   notowns_jump(greater_spire, halt)
   defenseuse_aa(1, devourer)
   defensebuild_aa(1, devourer)
   train(2, devourer)
#attack_add 2 devourer
   wait(10)
   train(4, devourer)
#attack_add 2 devourer
   wait(10)
   train(6, devourer)
#attack_add 2 devourer
   wait(10)
   stop()

      --a_ultras--
   notowns_jump(ultralisk_cavern, halt)
   defensebuild_gg(1, ultralisk)
   defenseuse_gg(1, ultralisk)
   train(2, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(4, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(6, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(7, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(10, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(12, ultralisk)
   wait(10)
   stop()



      --halt--
   stop()



      --cash_zbath--
   wait(100)
   resources_jump(900, 900, cash_zbath)
   give_money()
   wait(100)
   goto(cash_zbath)




# ================
# VS Terran Protocols
# ================

      --vterran--
   define_max(20, zergling)
   define_max(15, hydralisk)
   define_max(40, mutalisk)
   define_max(20, ultralisk)
   define_max(10, devourer)
   define_max(20, guardian)
   build(2, spawning_pool, 80)
   upgrade(1, zergling_attack, 80)
   upgrade(1, zergling_speed, 80)

      --vterranlupe--
   send_suicide(0)
   wait(100)
   defenseclear_gg()
   defenseclear_ag()
   defenseclear_ga()
   defenseclear_aa()
   wait(10)
   multirun(a_lings_t)
   wait(50)
   multirun(a_mutas_t)
   wait(50)
   multirun(a_guards_t)
   wait(50)
   multirun(a_devs_t)
   wait(50)
   multirun(a_ultras_t)
   wait(50)
   multirun(a_hydras_t)
   wait(50)
   multirun(a_luckers_t)

   wait(500)
#attack_prepare
   clear_combatdata()
   send_suicide(0)
   wait(50)
   multirun(a_ultras_t)
   wait(50)
   multirun(a_hydras_t)
   wait(50)
   multirun(a_lings_t)
   wait(50)
   multirun(a_luckers_t)
   wait(600)
   send_suicide(0)
   wait(50)
   multirun(a_mutas_t)
   wait(50)
   multirun(a_guards_t)
   wait(50)
   multirun(a_devs_t)
   wait(600)
   goto(vterranlupe)


      --a_lings_t--
   notowns_jump(spawning_pool, halt)
   defensebuild_gg(1, zergling)
   defenseuse_gg(1, zergling)
   train(5, zergling)
#attack_add 5 zergling
   wait(10)
   train(10, zergling)
#attack_add 5 zergling
   wait(10)
   train(15, zergling)
#attack_add 5 zergling
   wait(10)
   train(20, zergling)
#attack_add 5 zergling
   wait(10)
   stop()

      --a_luckers_t--
   notowns_jump(hydralisk_den, halt)
   defenseuse_gg(1, lurker)
   defensebuild_gg(1, lurker)
   train(1, lurker)
   wait(10)
   train(2, lurker)
   wait(10)
   train(3, lurker)
   wait(10)
   train(4, lurker)
   wait(10)
   train(5, lurker)
   wait(10)
   train(6, lurker)
   wait(10)
   train(7, lurker)
   wait(10)
   train(8, lurker)
   wait(10)
   train(9, lurker)
   wait(10)
   train(10, lurker)
   wait(10)
   train(11, lurker)
   wait(10)
   train(12, lurker)
   wait(10)
   train(13, lurker)
   wait(10)
   train(14, lurker)
   wait(10)
   train(15, lurker)
   wait(10)
   stop()


      --a_hydras_t--
   notowns_jump(hydralisk_den, halt)
   defenseuse_gg(1, hydralisk)
   defenseuse_ga(1, hydralisk)
   defenseuse_ag(1, hydralisk)
   defenseuse_aa(1, hydralisk)
   defensebuild_ag(1, hydralisk)
   defensebuild_ga(1, hydralisk)
   defensebuild_aa(1, hydralisk)
   defensebuild_gg(1, hydralisk)
   train(5, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(10, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(15, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   stop()


      --a_mutas_t--
   notowns_jump(spire, halt)
   defenseuse_gg(1, mutalisk)
   defensebuild_gg(1, mutalisk)
   defenseuse_gg(1, guardian)
   defensebuild_gg(1, guardian)
   defenseuse_aa(1, mutalisk)
   defensebuild_aa(1, mutalisk)
   defenseuse_ag(1, mutalisk)
   defensebuild_ag(1, mutalisk)
   defenseuse_ga(1, mutalisk)
   defensebuild_ga(1, mutalisk)
   train(4, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(8, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(12, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(16, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(20, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(25, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(30, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(35, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(40, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   stop()

      --a_guards_t--
   notowns_jump(greater_spire, halt)
   defensebuild_gg(1, guardian)
   defenseuse_gg(1, guardian)
   train(2, guardian)
#attack_add 2 guardian
   wait(10)
   train(4, guardian)
#attack_add 2 guardian
   wait(10)
   train(6, guardian)
#attack_add 2 guardian
   wait(10)
   train(8, guardian)
#attack_add 2 guardian
   wait(10)
   train(10, guardian)
   wait(10)
   train(12, guardian)
   wait(10)
   train(14, guardian)
   wait(10)
   train(16, guardian)
   wait(10)
   train(18, guardian)
   wait(10)
   stop()

      --a_devs_t--
   notowns_jump(greater_spire, halt)
   defenseuse_aa(1, devourer)
   defensebuild_aa(1, devourer)
   train(2, devourer)
#attack_add 2 devourer
   wait(10)
   train(4, devourer)
#attack_add 2 devourer
   wait(10)
   train(6, devourer)
#attack_add 2 devourer
   wait(10)
   stop()

      --a_ultras_t--
   notowns_jump(ultralisk_cavern, halt)
   defensebuild_gg(1, ultralisk)
   defenseuse_gg(1, ultralisk)
   train(2, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(4, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(6, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(7, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(10, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(12, ultralisk)
   wait(10)
   train(14, ultralisk)
   wait(10)
   train(16, ultralisk)
   wait(10)
   train(18, ultralisk)
   wait(10)
   stop()
[/spoiler]



Mighty Crusader

After seeing the effectiveness of Myk's AI (HEY WHAT A COINCIDENCE MYK INSPIRED ME AGAIN WHAT A FELLA) one-base and defeat 6.9f, and later on stalemate ZAPOC, I began to think. Could I make something even better? Specifically to fight zerg. I had a few unit combination ideas in my head and wanted to at least give them a try.

Enter Mighty Crusader. The biggest pain in the ass script I've had to deal with so far.

I've discovered that each race has their own personality and handles attack code very differently from each other. I built the construction style somewhat similar to Myk's, except mine techs a lot more, but I used the zerg's attack code. It didn't work. The protoss would never build any units. After countless revisions and rewrites of the attack code I finally started getting results. But the protoss just wouldn't keep a decent supply level and would often not build any units to attack themselves. Considerably humiliating was the 1.4 defeat against ZONS 6.9f (which Myk's AI decimated because of its zergling problem and unstable attack code), where ZONS effectively destroyed Crusader and its 4-5 bases with one pack of hydras while Crusader chipped away at the ZONS base with carriers.

Concept

Mighty Crusader was to initially be a very tech oriented script. I wanted to use Dark Templar, High Templar, Archons, and Dark Archons exclusively for land forces. This would also give the AI a decent edge against Terran, although terran could counter with EMP, a mass of Dark Templar spells doom for any terran Ai because they will burn all of their scanners on a single attack (casting a scan for each scanner), making them very vulnerable. I suspect an infantry-massing AI would be able to kill this script, though, as it's simply not designed to fight terran.

Incidentally, Dark Archons were a bust. They just didn't use maelstrom except in very rare circumstances. So I removed them and left the remaining land units as they were.

This AI invests largely into air. I like Air. Baja doesn't like air, but I love air. Especially carriers. But scourge and devourers can really hurt carriers. So I pulled out the oldest trick in my book - scouts. Scouts are simply amazing little units in the hands of the AI because they are so durable and they do so much damage against air. They can attack land to boot. It's not a very good attack, but every bit helps. With disruption web, corsairs, scouts, and carriers, this protoss can put a serious hurt on most zerg with just its air forces alone. On top of that, they're also supposed to get arbiters which they will use to stasis large numbers of enemy air units with, further adding to crowd control and overall damage potential.

Ultimately this AI counters what I believe to be the zerg's strongest attribute - their anti-air. If a zerg gets air superiority they can do tremendous damage with guardians. Ashara's protoss relies exclusively on corsairs for its anti-air, and that's why ZONS and ZAPOC have such an easy time with it. Myk's protoss uses archons which kind of decimate the muta stacks from ZAPOC, but offense is impossible because of the critical mass production.

I intended for this protoss to be a ZAPOC killer but I don't think it will ever be able to do that simply because it's not fast enough and it's not good enough at unit production.

This AI first opens up with dragoons (without range) and zealots. It quickly acquires 1/1/1 upgrades to protect it against zerglings. The dragoons are to help against the ZAPOC muta timing rush and the Zbath mass muta attack, but corsairs alone were able to deal with the latter in my tests albeit with significant base damage which the protoss eventually recovered from. It then immediately switches to its build-oriented units.

Version History

1.5 -

- Current release version. Starcraft froze and I lost all scaiedit data on this script, leaving me only with this txt. It seems unlikely I will be updating it any further.

Notable attributes -

- Builds relatively fast.
- Can defeat both Zbath and Mutant Zerg in my tests, though Zbath gives a bit of trouble with the expansions because the protoss doesn't get shuttles.
- I gave the AI Zealots and Dragoons in early game to deal with rushes and ZAPOC's muta timing rush which comes considerably faster than Zbath's mutas. I only tested this once, which they managed to defend vs the ZAPOC rush but this is where it froze so I didn't see the rest of the game after that. I also haven't tested the 1.5 build against other zerg yet, so my tests are based on 1.4 which functioned worse and got strictly zealots in the beginning
- All upgrades and base construction seems to work reasonable well.
- Massively simplified structure compared to earlier examples and most other protoss scripts. Very few multithreads are used now, making sure it does not clash with other scripts. This AI might even work in larger games.
- Able to deal with heavy Zerg air reasonable well, even masses of scourge because they all ram into one target, usually a scout or a corsair.
- Super-fast upgrades like Myk's protoss make the early attacks in particular really strong against zerg if they have the unit count.

Notable issues;

- Unit production remains problematic, but not as horrible as it used to be. I expect ZAPOC or another updated zerg AI who maintains 200/200 permanently to be able to easily kill this protoss.
- Expansions build very slowly if at all.
- send_suicide is tremendously bad for keeping this AI's attack groups together.
- Observer and Arbiter construction is not very consistent even when the AI reaches a good production state. Since they don't get many cannons because they are lazy faggots, this makes them exceptionally vulnerable to ZAPOC's lurkers.
- This AI does not have any anti-terran scripts, but if it builds units reasonably it should be able to put up a resistance against most Terran AI's except for Skynet and Baja's nuking terran.
- This AI was repeatedly crashing the game in my tests but with my revised attack code it hasn't crashed since. It's very possible it will still crash.

Code -

[spoiler]

Code: Select all

PMCx(1343, 101, aiscript): # Script Name: Mighty Crusader 1.4
#===================================== The Great Apocalypse: Mighty Crusader ========================
#===================== New-Generation non-cheating AI intended for vs humans. ========
#===================== Construction scheme inspired largely by Myk's O_Hammer protoss.
#=====================
#===================== Created by IskatuMesk, lord of all that is Carriers

   debug(debugmsg, Mighty Crusader 1.5 by IskatuMesk)
   --debugmsg--



   multirun(rapethewomen)

   start_town()
   farms_timing()
   transports_off()

   define_max(20, zealot)
   define_max(20, dark_templar)
   define_max(8, carrier)
   define_max(16, corsair)
   define_max(12, scout)
   define_max(12, archon)
   define_max(20, high_templar)
   define_max(6, arbiter)
   define_max(10, dragoon)
   define_max(255, dark_archon)
   define_max(10, probe)
   define_max(6, observer)

   build(1, nexus, 100)
   build(5, probe, 100)
   multirun(init_pylons)
   wait_build(1, pylon)
   build(3, forge, 80)
   wait(50)
   multirun(gayways)
   wait_buildstart(1, forge)
   wait(100)
   multirun(eattheirbabies)
   wait_build(1, gateway)
   wait(100)
   build(1, cybernetics_core, 80)
   multirun(marchtoheavensglory)
   wait_buildstart(1, cybernetics_core)
   wait(100)
   build(2, cybernetics_core, 80)
   wait_buildstart(2, cybernetics_core)
   wait(50)
   multirun(pillagetheirhomes)
   wait(600)
   multirun(stargays)
   build(1, citadel_of_adun, 80)
   wait_buildstart(1, citadel_of_adun)
   defenseuse_aa(1, corsair)
   defensebuild_aa(1, corsair)
   defenseuse_ag(1, corsair)
   defensebuild_ag(1, corsair)
   wait(10)
   defenseuse_ag(1, scout)
   defensebuild_ag(1, scout)
   defenseuse_aa(1, scout)
   defensebuild_aa(1, scout)
   wait(700)
   multirun(catholicpriestism)
   wait(1000)
   multirun(ifuckinglovecarriers)
   wait(100)
   multirun(mancatcher)
   wait(1000)
   multirun(robocock2pointoh)
   wait(2000)
#check_transports
   multirun(cannonmain)
   multirun(r_obs)
   multirun(expalewp)
   wait(125)
   defenseuse_gg(1, archon)
   defensebuild_gg(1, archon)
   defenseuse_ga(1, archon)
   defensebuild_ga(1, archon)
   defenseuse_ag(1, archon)
   defensebuild_ag(1, archon)
   defenseuse_gg(1, dark_templar)
   defensebuild_gg(1, dark_templar)
   wait(10)
   defenseuse_aa(1, carrier)
   defensebuild_aa(1, carrier)
   defenseuse_ag(1, carrier)
   defensebuild_ag(1, carrier)
   defenseuse_gg(1, carrier)
   defensebuild_gg(1, carrier)
   defenseuse_ga(1, carrier)
   defensebuild_ga(1, carrier)
   wait(10)
   multirun(touchmyovaries)

      --walrusjuice--
   multirun(mmmdeliciouscarriers)
   train(10, corsair)
   train(10, scout)
   train(18, dark_templar)
   train(18, high_templar)
   train(6, archon)
   wait(70)
   train(8, archon)
   train(3, arbiter)
   train(6, observer)
   wait(1200)

   goto(walrusjuice)

      --touchmyovaries--
   wait(4600)
   send_suicide(0)
   goto(touchmyovaries)

      --expalewp--
   wait(4200)
   expand(99, cockblock)
   goto(expalewp)


# ========================
# RESEARCH
# ========================




#======== Used to be Ashara's research code, but I simplified it to cut down on multithreads. Holy hell the multithreads!
#========

      --eattheirbabies--
   wait(450)
   notowns_jump(forge, eattheirbabies)
   upgrade(1, p_plasma_shield, 80)
   upgrade(1, p_ground_weapon, 80)
   upgrade(1, p_armor, 80)
   wait(5000)
      --r_armor2--
   wait(250)
   notowns_jump(templar_archives, r_armor2)
   upgrade(2, p_plasma_shield, 80)
   upgrade(2, p_ground_weapon, 80)
   upgrade(2, p_armor, 80)
   wait(5500)
   upgrade(3, p_plasma_shield, 80)
   upgrade(3, p_armor, 80)
   upgrade(3, p_ground_weapon, 80)
   stop()


      --pillagetheirhomes--
   wait(1250)
   notowns_jump(cybernetics_core, pillagetheirhomes)
   upgrade(1, p_plating, 80)
   upgrade(1, p_air_weapon, 80)
   wait(5500)
      --r_plate2--
   wait(150)
   notowns_jump(fleet_beacon, r_plate2)
   upgrade(2, p_plating, 80)
   upgrade(2, p_air_weapon, 80)
   wait(5000)
   upgrade(3, p_plating, 80)
   upgrade(3, p_air_weapon, 80)
   stop()


      --burntheirhomes--
   wait(550)
   notowns_jump(robotics_support_bay, burntheirhomes)
   upgrade(1, scarab_damage, 1)
   wait(2600)
      --r_scarab2--
   wait(550)
   notowns_jump(robotics_support_bay, r_scarab2)
   upgrade(1, reaver_capacity, 1)
   stop()

      --liquifytheirpancreas--
   wait(1250)
   notowns_jump(fleet_beacon, liquifytheirpancreas)
   upgrade(1, carrier_capacity, 80)
   tech(disruption_web, 80)
   wait(1300)
   upgrade(1, corsair_mana, 80)
   wait(100)
   stop()

      --r_obs--
   wait(550)
   notowns_jump(observatory, r_obs)
   upgrade(1, observer_speed, 1)
   wait(2100)
   upgrade(1, observer_sight, 1)
   stop()

      --r_goon--
   wait(1250)
   notowns_jump(cybernetics_core, r_goon)
   upgrade(1, dragoon_range, 1)
   stop()







# ========================
# CONSTRUCTION
# ========================

      --exp_lewp--
   wait(100)
   expand(99, cockblock)
   stop()

      --cockblock--
   start_town()
   build(1, nexus, 80)
   wait_build(1, nexus)
   build(1, probe, 80)
   wait(100)
   build(1, pylon, 80)
   wait_build(1, pylon)
   build(1, photon_cannon, 80)
   wait_buildstart(1, photon_cannon)
   wait(100)
   build(2, pylon, 80)
   build(1, stargate, 80)
   build(2, photon_cannon, 80)
   wait_buildstart(2, photon_cannon)
   wait(100)
   build(3, pylon, 80)
   build(2, stargate, 80)
   build(3, photon_cannon, 80)
   wait_buildstart(3, photon_cannon)
   wait(100)
   build(4, pylon, 80)
   build(3, stargate, 80)
   build(4, photon_cannon, 80)
   wait_buildstart(4, photon_cannon)
   wait(100)
   build(5, pylon, 80)
   build(4, stargate, 80)
   build(5, photon_cannon, 80)
   wait_buildstart(5, photon_cannon)
   wait(100)
   build(6, pylon, 80)
   build(6, photon_cannon, 80)
   wait_buildstart(6, photon_cannon)
   wait(100)
   build(7, pylon, 80)
   build(7, photon_cannon, 80)
   wait_buildstart(7, photon_cannon)
   wait(100)
   build(8, pylon, 80)
   build(8, photon_cannon, 80)
   wait_buildstart(8, photon_cannon)
   wait(100)
   build(9, pylon, 80)
   build(9, photon_cannon, 80)
   wait_buildstart(9, photon_cannon)
   wait(100)
   build(10, pylon, 80)
   build(10, photon_cannon, 80)
   wait_buildstart(10, photon_cannon)
   wait(100)
   build(5, stargate, 80)
   build(11, photon_cannon, 80)
   wait_buildstart(11, photon_cannon)
   wait(100)
   build(6, stargate, 80)
   build(12, photon_cannon, 80)
   wait_buildstart(12, photon_cannon)
   wait(100)
   build(7, stargate, 80)
   build(13, photon_cannon, 80)
   wait_buildstart(13, photon_cannon)
   wait(100)
   build(1, gateway, 80)
   build(14, photon_cannon, 80)
   wait_buildstart(14, photon_cannon)
   wait(100)
   build(2, gateway, 80)
   build(15, photon_cannon, 80)
   wait_buildstart(15, photon_cannon)
   wait(100)
   build(3, gateway, 80)
   build(16, photon_cannon, 80)
   wait_buildstart(16, photon_cannon)
   wait(100)
   build(4, gateway, 80)
   build(17, photon_cannon, 80)
   wait_buildstart(17, photon_cannon)
   wait(100)
   build(6, gateway, 80)
   build(18, photon_cannon, 80)
   wait_buildstart(18, photon_cannon)
   wait(100)
   build(7, gateway, 80)
   build(19, photon_cannon, 80)
   wait_buildstart(19, photon_cannon)
   wait(100)
   build(20, photon_cannon, 80)
   wait_buildstart(20, photon_cannon)
   wait(100)
   build(21, photon_cannon, 80)
   wait_buildstart(21, photon_cannon)
   wait(100)
   build(8, gateway, 80)
   wait_buildstart(8, gateway)
   stop()

      --init_pylons--
   build(1, pylon, 80)
   wait_buildstart(1, pylon)
   wait(100)
   build(2, pylon, 80)
   wait_buildstart(2, pylon)
   wait(100)
   build(3, pylon, 80)
   wait_buildstart(3, pylon)
   wait(100)
#creep 3
   build(4, pylon, 80)
   wait_buildstart(4, pylon)
   wait(100)
   build(5, pylon, 80)
   wait_buildstart(5, pylon)
   wait(100)
   build(6, pylon, 80)
   wait_buildstart(6, pylon)
   wait(100)
   build(7, pylon, 80)
   wait_buildstart(7, pylon)
   wait(100)
   build(8, pylon, 80)
   wait_buildstart(8, pylon)
   wait(100)
   build(9, pylon, 80)
   wait_buildstart(9, pylon)
   wait(100)
   build(10, pylon, 80)
   wait_buildstart(10, pylon)
   wait(100)
   build(11, pylon, 80)
   wait_buildstart(11, pylon)
   wait(100)
   build(12, pylon, 80)
   wait_buildstart(12, pylon)
   wait(100)
#creep 4
   build(13, pylon, 80)
   wait_buildstart(13, pylon)
   wait(100)
   build(14, pylon, 80)
   wait_buildstart(14, pylon)
   wait(100)
   build(15, pylon, 80)
   wait_buildstart(15, pylon)
   wait(100)
   build(16, pylon, 80)
   wait_buildstart(16, pylon)
   wait(100)
   build(17, pylon, 80)
   wait_buildstart(17, pylon)
   wait(100)
   build(18, pylon, 80)
   wait_buildstart(18, pylon)
   wait(100)
   build(19, pylon, 80)
   wait_buildstart(19, pylon)
   wait(100)
   build(20, pylon, 80)
   wait_buildstart(20, pylon)
   wait(100)
   build(21, pylon, 80)
   wait_buildstart(21, pylon)
   stop()


      --gayways--
   build(1, gateway, 80)
   wait_buildstart(1, gateway)
   wait(100)
   build(2, gateway, 80)
   wait_buildstart(2, gateway)
   wait(100)
   build(3, gateway, 80)
   wait_buildstart(3, gateway)
   wait(100)
   build(4, gateway, 80)
   wait_buildstart(4, gateway)
   wait(100)
   build(5, gateway, 80)
   wait_buildstart(5, gateway)
   wait(100)
#creep 2
   build(6, gateway, 80)
   wait_buildstart(6, gateway)
   wait(100)
   build(7, gateway, 80)
   wait_buildstart(7, gateway)
   wait(100)
   build(8, gateway, 80)
   wait_buildstart(8, gateway)
   wait(100)
#creep 3
   build(9, gateway, 80)
   wait_buildstart(9, gateway)
   wait(100)
   build(10, gateway, 80)
   wait_buildstart(10, gateway)
   wait(100)
   build(11, gateway, 80)
   wait_buildstart(11, gateway)
   wait(100)
   build(12, gateway, 80)
   wait_buildstart(12, gateway)
   wait(100)
#creep 4
   build(13, gateway, 80)
   wait_buildstart(13, gateway)
   wait(100)
   build(14, gateway, 80)
   wait_buildstart(14, gateway)
   wait(100)
   build(15, gateway, 80)
   wait_buildstart(15, gateway)
   wait(100)
   build(16, gateway, 80)
   wait_buildstart(16, gateway)
   wait(100)
   build(17, gateway, 80)
   wait_buildstart(17, gateway)
   wait(100)
#creep 5
   build(18, gateway, 80)
   wait_buildstart(18, gateway)
   wait(100)
   build(19, gateway, 80)
   wait_buildstart(19, gateway)
   wait(100)
   build(20, gateway, 80)
   wait_buildstart(20, gateway)
   wait(100)
   stop()



      --cannonmain--
   start_town()
   build(1, photon_cannon, 80)
   wait_buildstart(1, photon_cannon)
   wait(100)
   build(2, photon_cannon, 80)
   wait_buildstart(2, photon_cannon)
   wait(100)
   build(3, photon_cannon, 80)
   wait_buildstart(3, photon_cannon)
   wait(100)
   build(4, photon_cannon, 80)
   wait_buildstart(4, photon_cannon)
   wait(100)
   build(5, photon_cannon, 80)
   wait_buildstart(5, photon_cannon)
   wait(100)
   build(6, photon_cannon, 80)
   wait_buildstart(6, photon_cannon)
   wait(100)
   build(7, photon_cannon, 80)
   wait_buildstart(7, photon_cannon)
   wait(100)
   build(8, photon_cannon, 80)
   wait_buildstart(8, photon_cannon)
   wait(100)
   build(9, photon_cannon, 80)
   wait_buildstart(9, photon_cannon)
   stop()




      --stargays--
   wait(220)
   notowns_jump(cybernetics_core, stargays)
   build(1, stargate, 80)
   wait_buildstart(1, stargate)
   wait(100)
   build(2, stargate, 80)
   wait_buildstart(2, stargate)
   wait(100)
   build(3, stargate, 80)
   wait_buildstart(3, stargate)
   wait(100)
   build(4, stargate, 80)
   wait_buildstart(4, stargate)
   wait(100)

   build(5, stargate, 80)
   wait_buildstart(5, stargate)
   wait(100)
   build(6, stargate, 80)
   wait_buildstart(6, stargate)
   wait(100)
   build(7, stargate, 80)
   wait_buildstart(7, stargate)
   wait(100)

   build(8, stargate, 80)
   wait_buildstart(8, stargate)
   wait(100)
   build(9, stargate, 80)
   wait_buildstart(9, stargate)
   wait(100)
   build(10, stargate, 80)
   wait_buildstart(10, stargate)
   wait(100)
   stop()

      --robocock2pointoh--
   wait(150)
   notowns_jump(cybernetics_core, robocock2pointoh)
   build(1, robotics_facility, 80)
   wait_buildstart(1, robotics_facility)
   build(2, robotics_facility, 80)
      --peekdownurblouse--
   wait(200)
   notowns_jump(robotics_facility, peekdownurblouse)
   build(1, observatory, 80)
   stop()

      --catholicpriestism--
   wait(100)
   notowns_jump(citadel_of_adun, catholicpriestism)
   upgrade(1, zealot_speed, 80)
   build(1, templar_archives, 80)
   wait_build(1, templar_archives)
   build(2, templar_archives, 80)
   tech(psionic_storm, 80)
   wait(1000)
   upgrade(1, templar_mana, 80)
   stop()

      --ifuckinglovecarriers--
   wait(50)
   notowns_jump(stargate, ifuckinglovecarriers)
   build(1, fleet_beacon, 80)
   wait_buildstart(1, fleet_beacon)
   wait(100)
   build(2, fleet_beacon, 80)
   wait(100)
   upgrade(1, carrier_capacity, 80)
   wait(500)
   tech(disruption_web, 80)
   wait(1000)
   upgrade(1, corsair_mana, 80)
   wait(50)
   stop()

      --mancatcher--
   wait(60)
   notowns_jump(fleet_beacon, mancatcher)
   build(1, arbiter_tribunal, 80)
      --arbyup--
   wait(100)
   notowns_jump(arbiter_tribunal, arbyup)
   tech(stasis_field, 80)
   wait(50)
   stop()

      --rapethewomen--
   wait(150)
   resources_jump(900, 900, rapethewomen)
   give_money()
   wait(50)
   goto(rapethewomen)




#===============================================
# ATTACK CODE
#===============================================
# Aggress with Zealots in early-game, then transition to Dark Templar and Archons exclusively for melee.
# Ideally, Templar Archives should finish before any major zerg attack hits us. Might need timing changes vs zbath or ZAPOC if the hydras come too fast.

      --marchtoheavensglory--
   multirun(zeehaloots)
   multirun(gewnz)
   wait(3500)
   send_suicide(0)
   wait(100)
   define_max(1, zealot)
   define_max(1, dragoon)
   wait(500)
      --purgetheheretic--
   wait(100)
   defenseuse_aa(1, corsair)
   defensebuild_aa(1, corsair)
   defenseuse_ag(1, corsair)
   defensebuild_ag(1, corsair)
   train(8, corsair)
   wait(70)
   defenseuse_ag(1, scout)
   defensebuild_ag(1, scout)
   defenseuse_aa(1, scout)
   defensebuild_aa(1, scout)
   train(8, scout)
   wait(70)
   multirun(mmmdeliciouscarriers)
   clear_combatdata()
   stop()





      --mmmdeliciouscarriers--
   wait(100)
   notowns_jump(fleet_beacon, wtfdawg)
   defenseuse_aa(1, carrier)
   defensebuild_aa(1, carrier)
   defenseuse_ag(1, carrier)
   defensebuild_ag(1, carrier)
   defenseuse_gg(1, carrier)
   defensebuild_gg(1, carrier)
   defenseuse_ga(1, carrier)
   defensebuild_ga(1, carrier)
   train(6, carrier)
   wait(125)
   stop()




      --zeehaloots--
   defenseuse_gg(1, zealot)
   defensebuild_gg(1, zealot)
   train(1, zealot)
   wait(10)
   train(2, zealot)
   wait(10)
   train(3, zealot)
   wait(10)
   train(4, zealot)
   wait(10)
   train(5, zealot)
   wait(10)
   train(6, zealot)
   wait(10)
   train(7, zealot)
   wait(10)
   train(8, zealot)
   wait(10)
   train(9, zealot)
   wait(10)
   train(10, zealot)
   stop()

      --gewnz--
   defenseuse_gg(1, dragoon)
   defensebuild_gg(1, dragoon)
   defenseuse_ag(1, dragoon)
   defensebuild_ag(1, dragoon)
   train(1, dragoon)
   wait(10)
   train(2, dragoon)
   wait(10)
   train(3, dragoon)
   wait(10)
   train(4, dragoon)
   wait(10)
   train(5, dragoon)
   wait(10)
   train(6, dragoon)
   wait(10)
   train(7, dragoon)
   wait(10)
   train(8, dragoon)
   stop()


      --wtfdawg--
   stop()
[/spoiler]
IskatuMesk
Posts: 329
Joined: Wed May 16, 2007 5:57 pm

Postby IskatuMesk » Fri Jan 01, 2010 10:52 pm

This build, 7.1, is able to force a stalemate with Myk's deadly protoss on BWAIWar.

Image

[spoiler]

Code: Select all

### NOTE: There is no way to determine the scripts flags or if it is a BW script or not!
###      please update the header below appropriately!
ZMCx(1344, 101, aiscript): # Script Name: ZAPOC 7.1 Revise1

# ==== Our best, last hope for ZONS.
# ==== SECOND REVISION OF 6.9
# ==== Attack code inspired by Myk



# ======== Insert race detection jumper here.
#start_campaign
#wait 1

   start_town()
#defaultbuild_off
#default_min 0
#wait 1

# ======== Main script
   define_max(30, drone)
   define_max(255, zergling)
   define_max(5, hydralisk)
   define_max(30, mutalisk)
   define_max(8, guardian)
   define_max(8, devourer)
   define_max(10, lurker)
   define_max(14, ultralisk)
   define_max(3, defiler)
   define_max(2, queen)
   define_max(10, scourge)
   multirun(cash_zbath)

   multirun(b_drone2)
   wait(10)
   multirun(b_pool)
   wait(10)
   upgrade(1, zergling_speed, 60)
   multirun(b_hatch5)
   defenseuse_gg(1, zergling)
   defensebuild_gg(1, zergling)
   wait(1000)
   build(2, lair, 90)
   wait_buildstart(2, lair)
   build(1, evolution_chamber, 80)
   wait(10)
   multirun(hydraden)
   wait(100)
   upgrade(1, overlord_speed, 90)
   multirun(b_hatch12)
   wait(10)
   build(4, overlord, 80)
   multirun(defenses)
   defenseuse_gg(1, hydralisk)
   defenseuse_ga(1, hydralisk)
   defenseuse_ag(1, hydralisk)
   defenseuse_aa(1, hydralisk)
   defensebuild_ag(1, hydralisk)
   defensebuild_ga(1, hydralisk)
   defensebuild_aa(1, hydralisk)
   defensebuild_gg(1, hydralisk)
   wait(500)
   multirun(air_units)
   wait(10)
   build(8, overlord, 80)
   upgrade(1, overlord_capacity, 30)
   defenseuse_gg(1, mutalisk)
   defensebuild_gg(1, mutalisk)
   defenseuse_gg(1, guardian)
   defensebuild_gg(1, guardian)
   defenseuse_aa(1, mutalisk)
   defensebuild_aa(1, mutalisk)
   defenseuse_ag(1, mutalisk)
   defensebuild_ag(1, mutalisk)
   defenseuse_ga(1, mutalisk)
   defensebuild_ga(1, mutalisk)
   defenseuse_aa(1, devourer)
   defensebuild_aa(1, devourer)
   multirun(b_nest)
   wait(100)
   build(1, hive, 100)
   define_max(35, hydralisk)
   send_suicide(0)
   wait(2000)
   multirun(b_xhatch)
   build(12, overlord, 80)
   multirun(evo_upgrades_zbath)
   wait(10)
   multirun(ultras)
   wait(10)
   multirun(defilers)
   wait(10)
   multirun(suicide_loop)
   wait(10)
   build(16, overlord, 80)
   multirun(b_xhatch)
   define_max(30, zergling)

      --loop--
   send_suicide(0)
   wait(100)
   defenseclear_gg()
   defenseclear_ag()
   defenseclear_ga()
   defenseclear_aa()
   wait(50)
   multirun(a_mutas)
   wait(50)
   multirun(a_guards)
   wait(50)
   multirun(a_devs)
   wait(50)
   multirun(a_ultras)
   wait(50)
   multirun(a_hydras)
   wait(50)
   multirun(a_defilers)
   wait(50)
   multirun(a_luckers)

#train 18 mutalisk
#train 6 devourer
#train 6 guardian
#train 25 hydralisk
#train 30 zergling
#train 8 ultralisk
#attack_add 25 hydralisk
#attack_add 30 zergling
#attack_add 8 ultralisk
#attack_add 6 devourer
#attack_add 6 guardian
#attack_add 18 mutalisk

   wait(900)
#attack_prepare
   clear_combatdata()
   send_suicide(0)
   wait(50)
   multirun(a_ultras)
   wait(50)
   multirun(a_hydras)
   wait(50)
   multirun(a_luckers)
   wait(800)
#attack_prepare
   wait(1000)
   goto(loop)






      --suicide_loop--
   wait(1500)
   send_suicide(0)
   clear_combatdata()
   goto(suicide_loop)

# ###########################
# ==== Construction-related
# ###########################


# ======== This might not work. Can we make ZAPOC get an INSANE number of hatcheries?!

      --b_drone2--
   build(5, drone, 80)
   wait_buildstart(5, drone)
   build(6, drone, 80)
   wait_buildstart(6, drone)
   build(7, drone, 80)
   wait_buildstart(7, drone)
   build(8, drone, 90)
   stop()

      --b_pool--
   build(1, spawning_pool, 100)
   stop()

      --b_hatch5--
   build(2, hatchery, 80)
   wait_buildstart(2, hatchery)
   build(3, hatchery, 80)
   wait_buildstart(3, hatchery)
   build(4, hatchery, 80)
   wait_buildstart(4, hatchery)
   build(5, hatchery, 80)
   wait_buildstart(5, hatchery)
   build(6, hatchery, 80)
   wait_buildstart(6, hatchery)
   build(7, hatchery, 80)
   stop()

      --b_hatch12--
   build(8, hatchery, 80)
   wait_buildstart(8, hatchery)
   build(9, hatchery, 80)
   wait_buildstart(9, hatchery)
   build(10, hatchery, 80)
   wait_buildstart(10, hatchery)
   build(11, hatchery, 80)
   wait_buildstart(11, hatchery)
   build(12, hatchery, 80)
   wait_buildstart(12, hatchery)
   build(13, hatchery, 80)
   stop()

      --b_xhatch--
   start_town()
   build(2, hatchery, 80)
   wait_buildstart(2, hatchery)
   build(3, hatchery, 80)
   wait_buildstart(3, hatchery)
   build(4, hatchery, 80)
   wait_buildstart(4, hatchery)
   build(5, hatchery, 80)
   wait_buildstart(5, hatchery)
   build(6, hatchery, 80)
   wait_buildstart(6, hatchery)
   build(7, hatchery, 80)
   wait_buildstart(7, hatchery)
   build(9, hatchery, 80)
   wait_buildstart(9, hatchery)
   build(10, hatchery, 80)
   wait_buildstart(10, hatchery)
   build(11, hatchery, 80)
   wait_buildstart(11, hatchery)
   build(12, hatchery, 80)
   wait_buildstart(12, hatchery)
   build(13, hatchery, 80)
   stop()

      --b_nest--
   wait_build(1, lair)
   build(1, queen_nest, 120)
   stop()


      --hydraden--
   build(1, hydralisk_den, 80)
   wait_buildstart(1, hydralisk_den)
   build(2, hydralisk_den, 80)
   wait_buildstart(2, hydralisk_den)
   wait(500)
   tech(lurker_aspect, 80)
   wait(700)
   goto(hydra_upgrades)

      --air_units--
   wait_build(1, lair)
   build(1, spire, 90)
   wait_buildstart(1, spire)
   build(2, spire, 90)
   wait_buildstart(2, spire)
   wait(400)
   build(1, greater_spire, 100)
   wait_buildstart(1, greater_spire)
   goto(air_upgrades_zbath)

      --hydra_upgrades--
   upgrade(1, hydralisk_range, 80)
   wait(500)
   upgrade(1, hydralisk_speed, 80)
   stop()


      --defilers--
   build(1, defiler_mound, 80)
   wait_build(1, defiler_mound)
   place_guard(defiler, 0)
   tech(plague, 30)
   wait(2000)
   upgrade(1, defiler_mana, 30)
   stop()

      --ultras--
   build(1, ultralisk_cavern, 90)
   wait_build(1, ultralisk_cavern)
   defenseuse_gg(1, ultralisk)
   defensebuild_gg(1, ultralisk)
   upgrade(1, ultralisk_speed, 70)
   wait(2000)
   upgrade(1, ultralisk_armor, 70)
   stop()


      --evo_upgrades_zbath--
   build(2, evolution_chamber, 85)
   wait_buildstart(2, evolution_chamber)
   wait(200)
   build(3, evolution_chamber, 85)
   wait_build(3, evolution_chamber)
   upgrade(1, z_melee_attack, 70)
   upgrade(1, z_carapace, 70)
   upgrade(1, z_missile_attack, 70)
   wait(1500)
   upgrade(2, z_melee_attack, 70)
   upgrade(2, z_carapace, 70)
   upgrade(2, z_missile_attack, 70)
   wait(1500)
   upgrade(3, z_melee_attack, 70)
   upgrade(3, z_carapace, 70)
   upgrade(3, z_missile_attack, 70)
   stop()

      --air_upgrades_zbath--
   upgrade(1, z_flyer_attack, 70)
   wait(1500)
   upgrade(1, z_flyer_carapace, 70)
   wait(1500)
   upgrade(2, z_flyer_attack, 70)
   wait(1500)
   upgrade(2, z_flyer_carapace, 70)
   wait(1500)
   upgrade(3, z_flyer_attack, 70)
   wait(1500)
   upgrade(3, z_flyer_carapace, 70)
   stop()

# ###########################
# ==== Defense facility handler
# ###########################
# == This will make the decision to either wait until the hive to build some Anti-Air, or build it early.

      --defenses--
   race_jump(standard, standard, d_protoss)

      --standard--
   wait_build(1, hive)

      --d_protoss--
   build(1, creep_colony, 80)
   wait_buildstart(1, creep_colony)
   build(1, spore_colony, 80)
   build(2, creep_colony, 80)
   wait_buildstart(2, creep_colony)
   build(2, spore_colony, 2)
   build(3, creep_colony, 80)
   wait_buildstart(3, creep_colony)
   build(3, spore_colony, 2)
   build(4, creep_colony, 80)
   wait_buildstart(4, creep_colony)
   build(4, spore_colony, 80)
   creep(3)
   build(5, creep_colony, 80)
   wait_buildstart(5, creep_colony)
   build(5, spore_colony, 2)
   build(6, creep_colony, 80)
   wait_buildstart(6, creep_colony)
   build(6, spore_colony, 80)

   wait(1000)
   build(7, creep_colony, 80)
   wait_buildstart(7, creep_colony)
   build(8, creep_colony, 80)
   wait_buildstart(8, creep_colony)
   build(9, creep_colony, 80)
   wait_buildstart(9, creep_colony)
   build(10, creep_colony, 80)
   wait_buildstart(10, creep_colony)
   build(4, sunken_colony, 80)

   wait(400)
   build(11, creep_colony, 80)
   wait_buildstart(11, creep_colony)
   build(12, creep_colony, 80)
   wait_buildstart(12, creep_colony)
   build(13, creep_colony, 80)
   wait_buildstart(13, creep_colony)
   build(14, creep_colony, 80)
   wait_buildstart(14, creep_colony)
   build(10, spore_colony, 80)

   build(15, creep_colony, 80)
   wait_buildstart(15, creep_colony)
   build(16, creep_colony, 80)
   wait_buildstart(16, creep_colony)
   build(17, creep_colony, 80)
   wait_buildstart(17, creep_colony)
   build(18, creep_colony, 80)
   wait_buildstart(18, creep_colony)
   build(8, sunken_colony, 80)
   stop()



# ###########################
# ==== Attack-related
# ###########################


      --hydras--
   notowns_jump(hydralisk_den, halt)
   defenseuse_gg(1, hydralisk)
   defenseuse_ga(1, hydralisk)
   defenseuse_ag(1, hydralisk)
   defenseuse_aa(1, hydralisk)
   defensebuild_ag(1, hydralisk)
   defensebuild_ga(1, hydralisk)
   defensebuild_aa(1, hydralisk)
   defensebuild_gg(1, hydralisk)
   train(20, hydralisk)
   wait_force(20, hydralisk)
   attack_add(20, hydralisk)
   attack_prepare()
   wait(200)
   attack_do()
   attack_clear()
   stop()


      --a_lings--
   notowns_jump(spawning_pool, halt)
   defensebuild_gg(1, zergling)
   defenseuse_gg(1, zergling)
   train(5, zergling)
#attack_add 5 zergling
   wait(10)
   train(10, zergling)
#attack_add 5 zergling
   wait(10)
   train(15, zergling)
#attack_add 5 zergling
   wait(10)
   stop()

      --a_luckers--
   notowns_jump(hydralisk_den, halt)
   defenseuse_gg(1, lurker)
   defensebuild_gg(1, lurker)
   train(1, lurker)
#attack_add 1 lurker
   wait(10)
   train(2, lurker)
#attack_add 1 lurker
   wait(10)
   train(3, lurker)
#attack_add 1 lurker
   wait(10)
   train(4, lurker)
#attack_add 1 lurker
   wait(10)
   train(5, lurker)
#attack_add 1 lurker
   wait(10)
   train(6, lurker)
#attack_add 1 lurker
   wait(10)
   train(7, lurker)
#attack_add 1 lurker
   wait(10)
   train(8, lurker)
#attack_add 1 lurker
   wait(10)
   stop()


      --a_hydras--
   notowns_jump(hydralisk_den, halt)
   defenseuse_gg(1, hydralisk)
   defenseuse_ga(1, hydralisk)
   defenseuse_ag(1, hydralisk)
   defenseuse_aa(1, hydralisk)
   defensebuild_ag(1, hydralisk)
   defensebuild_ga(1, hydralisk)
   defensebuild_aa(1, hydralisk)
   defensebuild_gg(1, hydralisk)
   train(5, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(10, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(15, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(20, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(25, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(30, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   stop()

      --a_defilers--
   notowns_jump(defiler_mound, halt)
   train(1, defiler)
#attack_add 1 defiler
   wait(10)
   train(2, defiler)
#attack_add 1 defiler
   wait(10)
   train(3, defiler)
#attack_add 1 defiler
   wait(10)
   stop()


      --a_mutas--
   notowns_jump(spire, halt)
   defenseuse_gg(1, mutalisk)
   defensebuild_gg(1, mutalisk)
   defenseuse_gg(1, guardian)
   defensebuild_gg(1, guardian)
   defenseuse_aa(1, mutalisk)
   defensebuild_aa(1, mutalisk)
   defenseuse_ag(1, mutalisk)
   defensebuild_ag(1, mutalisk)
   defenseuse_ga(1, mutalisk)
   defensebuild_ga(1, mutalisk)
   train(4, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(8, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(12, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(16, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(20, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   stop()

      --a_guards--
   notowns_jump(greater_spire, halt)
   defensebuild_gg(1, guardian)
   defenseuse_gg(1, guardian)
   train(2, guardian)
#attack_add 2 guardian
   wait(10)
   train(4, guardian)
#attack_add 2 guardian
   wait(10)
   train(6, guardian)
#attack_add 2 guardian
   wait(10)
   train(8, guardian)
#attack_add 2 guardian
   wait(10)
   stop()

      --a_devs--
   notowns_jump(greater_spire, halt)
   defenseuse_aa(1, devourer)
   defensebuild_aa(1, devourer)
   train(2, devourer)
#attack_add 2 devourer
   wait(10)
   train(4, devourer)
#attack_add 2 devourer
   wait(10)
   train(6, devourer)
#attack_add 2 devourer
   wait(10)
   stop()

      --a_ultras--
   notowns_jump(ultralisk_cavern, halt)
   defensebuild_gg(1, ultralisk)
   defenseuse_gg(1, ultralisk)
   train(2, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(4, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(6, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(7, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(10, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   stop()



      --halt--
   stop()





      --cash_zbath--
   wait(100)
   resources_jump(900, 900, cash_zbath)
   give_money()
   wait(100)
   goto(cash_zbath)
[/spoiler]

I still plan to tweak it to try to fix its reluctance to make more hatcheries and such.
IskatuMesk
Posts: 329
Joined: Wed May 16, 2007 5:57 pm

Postby IskatuMesk » Sat Jan 02, 2010 6:33 am

Here is build 7.2.

Notable changes;

- Upped the maxes for ultras, guardians, the works.
- Builds more hatcheries.
- No longer builds sunkens. Seemed kind of moot with the addition of lurkers + I want to eliminate as many variables in building as possible when the AI has so much it needs to deal with.
[s]- Gets 3 lairs for some instances where it would for some reason read ahead and get overlord capacity before hive.[/s] looks like I removed that because of issues it caused...
- Some minor alterations.

Problems -

- Works fine against Myk's Protoss, completely breaks vs Ashara's protoss. No idea why.
- Tech is not as fast as it could be. The main code still needs to be streamlined.
- Early hatchery construction is very, very slow for some reason. I want it to be as fast as Zbath's. But any changes totally break the script. Help?

Please point out any potential issues or any suggestions you may have.

[spoiler]

Code: Select all

### NOTE: There is no way to determine the scripts flags or if it is a BW script or not!
###      please update the header below appropriately!
ZMCx(1344, 101, aiscript): # Script Name: ZAPOC 7.2 Revise1

# ==== Our best, last hope for ZONS.
# ==== SECOND REVISION OF 6.9
# ==== Attack code inspired by Myk



# ======== Insert race detection jumper here.
#start_campaign
#wait 1

   start_town()
#defaultbuild_off
#default_min 0
#wait 1

# ======== Main script
   define_max(30, drone)
   define_max(255, zergling)
   define_max(5, hydralisk)
   define_max(30, mutalisk)
   define_max(16, guardian)
   define_max(14, devourer)
   define_max(14, lurker)
   define_max(16, ultralisk)
   define_max(3, defiler)
   define_max(2, queen)
   define_max(10, scourge)
   multirun(cash_zbath)

   multirun(b_drone2)
   wait(10)
   multirun(b_pool)
   wait(10)
   upgrade(1, zergling_speed, 60)
   multirun(b_hatch5)
   defenseuse_gg(1, zergling)
   defensebuild_gg(1, zergling)
   wait(1000)
   build(2, lair, 90)
   wait_buildstart(2, lair)
   build(1, evolution_chamber, 80)
   wait(10)
   multirun(hydraden)
   wait(100)
   multirun(b_hatch12)
   wait(10)
   build(4, overlord, 80)
   multirun(defenses)
   defenseuse_gg(1, hydralisk)
   defenseuse_ga(1, hydralisk)
   defenseuse_ag(1, hydralisk)
   defenseuse_aa(1, hydralisk)
   defensebuild_ag(1, hydralisk)
   defensebuild_ga(1, hydralisk)
   defensebuild_aa(1, hydralisk)
   defensebuild_gg(1, hydralisk)
   wait(500)
   multirun(air_units)
   wait(10)
   build(8, overlord, 80)
   upgrade(1, overlord_capacity, 80)
   defenseuse_gg(1, mutalisk)
   defensebuild_gg(1, mutalisk)
   defenseuse_gg(1, guardian)
   defensebuild_gg(1, guardian)
   defenseuse_aa(1, mutalisk)
   defensebuild_aa(1, mutalisk)
   defenseuse_ag(1, mutalisk)
   defensebuild_ag(1, mutalisk)
   defenseuse_ga(1, mutalisk)
   defensebuild_ga(1, mutalisk)
   defenseuse_aa(1, devourer)
   defensebuild_aa(1, devourer)
   multirun(b_nest)
   wait(100)
   build(1, hive, 100)
   define_max(35, hydralisk)
   send_suicide(0)
   wait(2000)
   build(12, overlord, 80)
   multirun(evo_upgrades_zbath)
   wait(10)
   multirun(ultras)
   wait(10)
   multirun(defilers)
   wait(10)
   multirun(suicide_loop)
   wait(10)
   build(16, overlord, 80)
   multirun(b_xhatchb)
   upgrade(1, overlord_speed, 90)
   define_max(30, zergling)

      --loop--
   send_suicide(0)
   wait(100)
   defenseclear_gg()
   defenseclear_ag()
   defenseclear_ga()
   defenseclear_aa()
   wait(10)
   multirun(a_mutas)
   wait(50)
   multirun(a_guards)
   wait(50)
   multirun(a_devs)
   wait(50)
   multirun(a_ultras)
   wait(50)
   multirun(a_hydras)
   wait(50)
   multirun(a_defilers)
   wait(50)
   multirun(a_luckers)

#train 18 mutalisk
#train 6 devourer
#train 6 guardian
#train 25 hydralisk
#train 30 zergling
#train 8 ultralisk
#attack_add 25 hydralisk
#attack_add 30 zergling
#attack_add 8 ultralisk
#attack_add 6 devourer
#attack_add 6 guardian
#attack_add 18 mutalisk

   wait(900)
#attack_prepare
   clear_combatdata()
   send_suicide(0)
   wait(50)
   multirun(a_ultras)
   wait(50)
   multirun(a_hydras)
   wait(50)
   multirun(a_luckers)
   wait(800)
#attack_prepare
   wait(1000)
   goto(loop)






      --suicide_loop--
   wait(1500)
   send_suicide(0)
   clear_combatdata()
   goto(suicide_loop)

# ###########################
# ==== Construction-related
# ###########################


# ======== This might not work. Can we make ZAPOC get an INSANE number of hatcheries?!

      --b_drone2--
   build(5, drone, 80)
   wait_buildstart(5, drone)
   build(6, drone, 80)
   wait_buildstart(6, drone)
   build(7, drone, 80)
   wait_buildstart(7, drone)
   build(8, drone, 90)
   stop()

      --b_pool--
   build(1, spawning_pool, 100)
   stop()

      --b_hatch5--
   build(2, hatchery, 80)
   wait_buildstart(2, hatchery)
   build(3, hatchery, 80)
   wait_buildstart(3, hatchery)
   build(4, hatchery, 80)
   wait_buildstart(4, hatchery)
   build(5, hatchery, 80)
   wait_buildstart(5, hatchery)
   build(6, hatchery, 80)
   wait_buildstart(6, hatchery)
   build(7, hatchery, 80)
   stop()

      --b_hatch12--
   build(8, hatchery, 80)
   wait_buildstart(8, hatchery)
   build(9, hatchery, 80)
   wait_buildstart(9, hatchery)
   build(10, hatchery, 80)
   wait_buildstart(10, hatchery)
   build(11, hatchery, 80)
   wait_buildstart(11, hatchery)
   build(12, hatchery, 80)
   wait_buildstart(12, hatchery)
   build(13, hatchery, 80)
   stop()

      --b_xhatch--
   start_town()
   build(2, hatchery, 80)
   wait_buildstart(2, hatchery)
   build(3, hatchery, 80)
   wait_buildstart(3, hatchery)
   build(4, hatchery, 80)
   wait_buildstart(4, hatchery)
   build(5, hatchery, 80)
   wait_buildstart(5, hatchery)
   build(6, hatchery, 80)
   wait_buildstart(6, hatchery)
   build(7, hatchery, 80)
   wait_buildstart(7, hatchery)
   build(9, hatchery, 80)
   wait_buildstart(9, hatchery)
   build(10, hatchery, 80)
   wait_buildstart(10, hatchery)
   build(11, hatchery, 80)
   wait_buildstart(11, hatchery)
   build(12, hatchery, 80)
   wait_buildstart(12, hatchery)
   build(13, hatchery, 80)
   stop()

      --b_xhatchb--
   start_town()
   build(2, hatchery, 80)
   wait_buildstart(2, hatchery)
   build(3, hatchery, 80)
   wait_buildstart(3, hatchery)
   build(4, hatchery, 80)
   wait_buildstart(4, hatchery)
   build(5, hatchery, 80)
   wait_buildstart(5, hatchery)
   build(6, hatchery, 80)
   wait_buildstart(6, hatchery)
   build(7, hatchery, 80)
   wait_buildstart(7, hatchery)
   build(9, hatchery, 80)
   wait_buildstart(9, hatchery)
   build(10, hatchery, 80)
   wait_buildstart(10, hatchery)
   build(11, hatchery, 80)
   wait_buildstart(11, hatchery)
   build(12, hatchery, 80)
   wait_buildstart(12, hatchery)
   build(13, hatchery, 80)
   wait_buildstart(13, hatchery)
   build(14, hatchery, 80)
   wait_buildstart(14, hatchery)
   build(15, hatchery, 80)
   wait_buildstart(15, hatchery)
   build(16, hatchery, 80)
   wait_buildstart(16, hatchery)
   build(17, hatchery, 80)
   wait_buildstart(17, hatchery)
   build(18, hatchery, 80)
   wait_buildstart(18, hatchery)
   build(19, hatchery, 80)
   wait_buildstart(19, hatchery)
   build(20, hatchery, 80)
   wait_buildstart(20, hatchery)
   build(22, hatchery, 80)
   wait_buildstart(22, hatchery)
   build(23, hatchery, 80)
   wait_buildstart(23, hatchery)
   build(24, hatchery, 80)
   wait_buildstart(24, hatchery)
   build(25, hatchery, 80)
   wait_buildstart(25, hatchery)
   build(26, hatchery, 80)
   wait_buildstart(26, hatchery)
   build(27, hatchery, 80)
   wait_buildstart(27, hatchery)
   build(28, hatchery, 80)
   wait_buildstart(28, hatchery)
   build(29, hatchery, 80)
   stop()

      --b_nest--
   wait_build(1, lair)
   build(1, queen_nest, 120)
   stop()


      --hydraden--
   build(1, hydralisk_den, 80)
   wait_buildstart(1, hydralisk_den)
   build(2, hydralisk_den, 80)
   wait_buildstart(2, hydralisk_den)
   wait(500)
   tech(lurker_aspect, 80)
   wait(700)
   goto(hydra_upgrades)

      --air_units--
   wait_build(1, lair)
   build(1, spire, 90)
   wait_buildstart(1, spire)
   build(2, spire, 90)
   wait_buildstart(2, spire)
   wait(400)
   build(1, greater_spire, 100)
   wait_buildstart(1, greater_spire)
   goto(air_upgrades_zbath)

      --hydra_upgrades--
   upgrade(1, hydralisk_range, 80)
   wait(500)
   upgrade(1, hydralisk_speed, 80)
   stop()


      --defilers--
   build(1, defiler_mound, 80)
   wait_build(1, defiler_mound)
   place_guard(defiler, 0)
   tech(plague, 30)
   wait(2000)
   upgrade(1, defiler_mana, 30)
   stop()

      --ultras--
   build(1, ultralisk_cavern, 90)
   wait_build(1, ultralisk_cavern)
   defenseuse_gg(1, ultralisk)
   defensebuild_gg(1, ultralisk)
   upgrade(1, ultralisk_speed, 70)
   wait(2000)
   upgrade(1, ultralisk_armor, 70)
   stop()


      --evo_upgrades_zbath--
   build(2, evolution_chamber, 85)
   wait_buildstart(2, evolution_chamber)
   wait(200)
   build(3, evolution_chamber, 85)
   wait_build(3, evolution_chamber)
   upgrade(1, z_melee_attack, 70)
   upgrade(1, z_carapace, 70)
   upgrade(1, z_missile_attack, 70)
   wait(1500)
   upgrade(2, z_melee_attack, 70)
   upgrade(2, z_carapace, 70)
   upgrade(2, z_missile_attack, 70)
   wait(1500)
   upgrade(3, z_melee_attack, 70)
   upgrade(3, z_carapace, 70)
   upgrade(3, z_missile_attack, 70)
   stop()

      --air_upgrades_zbath--
   upgrade(1, z_flyer_attack, 70)
   wait(1500)
   upgrade(1, z_flyer_carapace, 70)
   wait(1500)
   upgrade(2, z_flyer_attack, 70)
   wait(1500)
   upgrade(2, z_flyer_carapace, 70)
   wait(1500)
   upgrade(3, z_flyer_attack, 70)
   wait(1500)
   upgrade(3, z_flyer_carapace, 70)
   stop()

# ###########################
# ==== Defense facility handler
# ###########################
# == This will make the decision to either wait until the hive to build some Anti-Air, or build it early.

      --defenses--
   race_jump(standard, standard, d_protoss)

      --standard--
   wait_build(1, hive)

      --d_protoss--
   build(1, creep_colony, 80)
   wait_buildstart(1, creep_colony)
   build(1, spore_colony, 80)
   build(2, creep_colony, 80)
   wait_buildstart(2, creep_colony)
   build(2, spore_colony, 2)
   build(3, creep_colony, 80)
   wait_buildstart(3, creep_colony)
   build(3, spore_colony, 2)
   build(4, creep_colony, 80)
   wait_buildstart(4, creep_colony)
   build(4, spore_colony, 80)
   creep(3)
   build(5, creep_colony, 80)
   wait_buildstart(5, creep_colony)
   build(5, spore_colony, 2)
   build(6, creep_colony, 80)
   wait_buildstart(6, creep_colony)
   build(6, spore_colony, 80)
   build(7, creep_colony, 80)
   wait_buildstart(7, creep_colony)
   build(8, creep_colony, 80)
   wait_buildstart(8, creep_colony)
   build(9, creep_colony, 80)
   wait_buildstart(9, creep_colony)
   build(10, creep_colony, 80)
   wait_buildstart(10, creep_colony)
   build(10, spore_colony, 80)
   stop()



# ###########################
# ==== Attack-related
# ###########################


      --hydras--
   notowns_jump(hydralisk_den, halt)
   defenseuse_gg(1, hydralisk)
   defenseuse_ga(1, hydralisk)
   defenseuse_ag(1, hydralisk)
   defenseuse_aa(1, hydralisk)
   defensebuild_ag(1, hydralisk)
   defensebuild_ga(1, hydralisk)
   defensebuild_aa(1, hydralisk)
   defensebuild_gg(1, hydralisk)
   train(20, hydralisk)
   wait_force(20, hydralisk)
   attack_add(20, hydralisk)
   attack_prepare()
   wait(200)
   attack_do()
   attack_clear()
   stop()


      --a_lings--
   notowns_jump(spawning_pool, halt)
   defensebuild_gg(1, zergling)
   defenseuse_gg(1, zergling)
   train(5, zergling)
#attack_add 5 zergling
   wait(10)
   train(10, zergling)
#attack_add 5 zergling
   wait(10)
   train(15, zergling)
#attack_add 5 zergling
   wait(10)
   stop()

      --a_luckers--
   notowns_jump(hydralisk_den, halt)
   defenseuse_gg(1, lurker)
   defensebuild_gg(1, lurker)
   train(1, lurker)
#attack_add 1 lurker
   wait(10)
   train(2, lurker)
#attack_add 1 lurker
   wait(10)
   train(3, lurker)
#attack_add 1 lurker
   wait(10)
   train(4, lurker)
#attack_add 1 lurker
   wait(10)
   train(5, lurker)
#attack_add 1 lurker
   wait(10)
   train(6, lurker)
#attack_add 1 lurker
   wait(10)
   train(7, lurker)
#attack_add 1 lurker
   wait(10)
   train(8, lurker)
#attack_add 1 lurker
   wait(10)
   stop()


      --a_hydras--
   notowns_jump(hydralisk_den, halt)
   defenseuse_gg(1, hydralisk)
   defenseuse_ga(1, hydralisk)
   defenseuse_ag(1, hydralisk)
   defenseuse_aa(1, hydralisk)
   defensebuild_ag(1, hydralisk)
   defensebuild_ga(1, hydralisk)
   defensebuild_aa(1, hydralisk)
   defensebuild_gg(1, hydralisk)
   train(5, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(10, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(15, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(20, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(25, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   train(30, hydralisk)
#attack_add 5 hydralisk
   wait(10)
   stop()

      --a_defilers--
   notowns_jump(defiler_mound, halt)
   train(1, defiler)
#attack_add 1 defiler
   wait(10)
   train(2, defiler)
#attack_add 1 defiler
   wait(10)
   train(3, defiler)
#attack_add 1 defiler
   wait(10)
   stop()


      --a_mutas--
   notowns_jump(spire, halt)
   defenseuse_gg(1, mutalisk)
   defensebuild_gg(1, mutalisk)
   defenseuse_gg(1, guardian)
   defensebuild_gg(1, guardian)
   defenseuse_aa(1, mutalisk)
   defensebuild_aa(1, mutalisk)
   defenseuse_ag(1, mutalisk)
   defensebuild_ag(1, mutalisk)
   defenseuse_ga(1, mutalisk)
   defensebuild_ga(1, mutalisk)
   train(4, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(8, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(12, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(16, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   train(20, mutalisk)
#attack_add 4 mutalisk
   wait(10)
   stop()

      --a_guards--
   notowns_jump(greater_spire, halt)
   defensebuild_gg(1, guardian)
   defenseuse_gg(1, guardian)
   train(2, guardian)
#attack_add 2 guardian
   wait(10)
   train(4, guardian)
#attack_add 2 guardian
   wait(10)
   train(6, guardian)
#attack_add 2 guardian
   wait(10)
   train(8, guardian)
#attack_add 2 guardian
   wait(10)
   train(10, guardian)
   wait(10)
   train(12, guardian)
   wait(10)
   stop()

      --a_devs--
   notowns_jump(greater_spire, halt)
   defenseuse_aa(1, devourer)
   defensebuild_aa(1, devourer)
   train(2, devourer)
#attack_add 2 devourer
   wait(10)
   train(4, devourer)
#attack_add 2 devourer
   wait(10)
   train(6, devourer)
#attack_add 2 devourer
   wait(10)
   stop()

      --a_ultras--
   notowns_jump(ultralisk_cavern, halt)
   defensebuild_gg(1, ultralisk)
   defenseuse_gg(1, ultralisk)
   train(2, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(4, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(6, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(7, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(10, ultralisk)
#attack_add 2 ultralisk
   wait(10)
   train(12, ultralisk)
   wait(10)
   stop()



      --halt--
   stop()





      --cash_zbath--
   wait(100)
   resources_jump(900, 900, cash_zbath)
   give_money()
   wait(100)
   goto(cash_zbath)
[/spoiler]

/e

I just noticed I goofed up the overlord upgrades and moved speed instead of capacity down.
User avatar
Archon_Wing
Posts: 903
Joined: Wed Jul 25, 2007 11:22 pm

Postby Archon_Wing » Sat Jan 02, 2010 11:15 am

evo/spire Upgrades: Usually I keep long waits between them (4500 for lvl 1 and 4800 for lvl 2) They usually finish seamlessly into the next level anyways so there really is no harm in the long waits; not really sure that makes a difference but that's what Blizzard uses and it works perfectly fine.

upgrade(1, zergling_speed, 60)
multirun(b_hatch5)


I think that the ling spd be best multirunned with a wait for spawning pool. I've found keeping lower than average priority items in the main thread can cause problems; like the AI decides "oh it's low priority, so I won't get it at all"... or anything else because it does not get anything else below. In any case, I'd make the hatchery multirun very high up in the script.

Apparently units have some kind of priority, because defensebuild seems to cause buildings to need a higher priority to be built. Of course priorities are relative, but it seems like that if my avg was 80 at the beginning, I have to start raising key buildings to 100 once defensebuild activates or else it'd take forever to get anything.

I'm also not sure what happens if you have defensebuild before the AI can build that unit, but I haven't seen much issue so far.

Gl with your script!
IskatuMesk
Posts: 329
Joined: Wed May 16, 2007 5:57 pm

Postby IskatuMesk » Sun Jan 03, 2010 12:14 am

Added 7.3b to the main topic.

Some amusing screenshots for your entertainment.


Image

^ lol battlecruisers


Image
Image

^ The stalemate on BGR is assured by all of the dudes trapped behind buildings...

I just noticed the ultras have no melee upgrades ugh did I break it again


Image

^ I have no idea.


I'll have to check those upgrades and the zergling speed later.

Wait, they don't even use zerglings. We don't need zergling speed we don't even get ADRENALINE WHY ARRRRRRRRRRRRGH
User avatar
Archon_Wing
Posts: 903
Joined: Wed Jul 25, 2007 11:22 pm

Postby Archon_Wing » Sun Jan 03, 2010 9:18 pm

The Zerg are extremely tough because they don't have to build different buildings to churn out their entire tech tree. So something like 25 hatcheries to produce the complete army is possible, whereas the Terran equivalent of 25 rax, 25 factory, 25 starport isn't. Terran supply depots don't "fly" either, so there's even less space to go around for buildings. "Space" and the lack of it, is definitely a huge problem for Terran for such wacky scripts.


Yea lol. I found myself not putting that many buildings in due to laziness, and if you order a large amount of buildings being made it causes servere crowding. :P

While it was possible to defend til Zons would break, ZAPOC seems very stable. :) Your only chance of winning is to somehow take the fight to the zerg before they get all those buildings up.
IskatuMesk
Posts: 329
Joined: Wed May 16, 2007 5:57 pm

Postby IskatuMesk » Sun Jan 03, 2010 10:06 pm

Yeah, I didn't think much of Myk's attack code when I first looked at it, but I figured eh let's try it. And it's all because of that code that this script works so well. 6.9f would always softlock after a certain point unless it was constantly attacked like from Ashara's protoss in small numbers. ZAPOC is really the next generation of Zerg I have been trying to make for so many years. I'm really proud of it.

I made some alterations like variable army consistency and that turned out really, really well.
IskatuMesk
Posts: 329
Joined: Wed May 16, 2007 5:57 pm

Postby IskatuMesk » Mon Jan 04, 2010 9:12 am

Here's my current unfinished Mighty Crusader script. It is crashing, it doesn't built units unless it's attacked, and it ignores cannons in expansions.

[spoiler]

Code: Select all

### NOTE: There is no way to determine the scripts flags or if it is a BW script or not!
###      please update the header below appropriately!
PMCx(1343, 101, aiscript): # Script Name: Mighty Crusader 1.3
#===================================== The Great Apocalypse: Mighty Crusader ========================
#===================== New-Generation non-cheating AI intended for vs humans. ========
#===================== Construction scheme inspired largely by Myk's O_Hammer protoss.
#=====================
#===================== Created by IskatuMesk, lord of all that is Carriers



   multirun(rapethewomen)

   start_town()
   farms_timing()
   transports_off()

   define_max(20, zealot)
   define_max(20, dark_templar)
   define_max(8, carrier)
   define_max(16, corsair)
   define_max(12, scout)
   define_max(12, archon)
   define_max(20, high_templar)
   define_max(6, arbiter)
   define_max(255, dragoon)
   define_max(255, dark_archon)
   define_max(10, probe)

   build(1, nexus, 100)
   build(5, probe, 100)
   multirun(init_pylons)
   wait_build(1, pylon)
   build(3, forge, 80)
   wait(50)
   multirun(gayways)
   wait_buildstart(1, forge)
   wait(100)
   multirun(eattheirbabies)
   wait_build(1, gateway)
   wait(100)
   build(1, cybernetics_core, 80)
   multirun(marchtoheavensglory)
   wait_buildstart(1, cybernetics_core)
   wait(100)
   build(2, cybernetics_core, 80)
   wait_buildstart(2, cybernetics_core)
   wait(50)
   multirun(pillagetheirhomes)
   wait(600)
   multirun(stargays)
   build(1, citadel_of_adun, 80)
   wait_buildstart(1, citadel_of_adun)
   wait(700)
   multirun(catholicpriestism)
   wait(1000)
   multirun(ifuckinglovecarriers)
   wait(100)
   multirun(mancatcher)
   wait(1000)
   multirun(robocock2pointoh)
   wait(2000)
#check_transports
   multirun(cannonmain)
   multirun(r_obs)
   multirun(expalewp)
   wait(125)
      --touchmyovaries--
   send_suicide(0)
   wait(4000)
   goto(touchmyovaries)

      --expalewp--
   multirun(exp_lewp)
   wait(3500)
   goto(expalewp)


# ========================
# RESEARCH
# ========================




#======== Used to be Ashara's research code, but I simplified it to cut down on multithreads. Holy hell the multithreads!
#========

      --eattheirbabies--
   wait(450)
   notowns_jump(forge, eattheirbabies)
   upgrade(1, p_plasma_shield, 80)
   upgrade(1, p_ground_weapon, 80)
   upgrade(1, p_armor, 80)
   wait(3000)
      --r_armor2--
   wait(250)
   notowns_jump(templar_archives, r_armor2)
   upgrade(2, p_plasma_shield, 80)
   upgrade(2, p_ground_weapon, 80)
   upgrade(2, p_armor, 80)
   wait(3500)
   upgrade(3, p_plasma_shield, 80)
   upgrade(3, p_armor, 80)
   upgrade(3, p_ground_weapon, 80)
   wait(100)
   stop()


      --pillagetheirhomes--
   wait(1250)
   notowns_jump(cybernetics_core, pillagetheirhomes)
   upgrade(1, p_plating, 80)
   upgrade(1, p_air_weapon, 80)
   wait(3500)
      --r_plate2--
   wait(150)
   notowns_jump(fleet_beacon, r_plate2)
   upgrade(2, p_plating, 80)
   upgrade(2, p_air_weapon, 80)
   wait(4000)
   upgrade(3, p_plating, 80)
   upgrade(3, p_air_weapon, 80)
   wait(100)
   stop()


      --burntheirhomes--
   wait(550)
   notowns_jump(robotics_support_bay, burntheirhomes)
   upgrade(1, scarab_damage, 1)
   wait(2600)
      --r_scarab2--
   wait(550)
   notowns_jump(robotics_support_bay, r_scarab2)
   upgrade(1, reaver_capacity, 1)
   stop()

      --liquifytheirpancreas--
   wait(1250)
   notowns_jump(fleet_beacon, liquifytheirpancreas)
   upgrade(1, carrier_capacity, 80)
   tech(disruption_web, 80)
   wait(1300)
   upgrade(1, corsair_mana, 80)
   wait(100)
   stop()

      --r_obs--
   wait(550)
   notowns_jump(observatory, r_obs)
   upgrade(1, observer_speed, 1)
   wait(2100)
      --r_obs2--
   wait(550)
   notowns_jump(observatory, r_obs2)
   upgrade(1, observer_sight, 1)
   stop()

      --r_goon--
   wait(1250)
   notowns_jump(cybernetics_core, r_goon)
   upgrade(1, dragoon_range, 1)
   stop()







# ========================
# CONSTRUCTION
# ========================

      --exp_lewp--
   wait(100)
   expand(99, cockblock)
   stop()

      --cockblock--
   start_town()
   build(1, nexus, 80)
   wait(100)
   multirun(init_pylons)
   wait_build(1, pylon)
   multirun(gayways_exp)
   wait(1000)
   multirun(stargays_exp)
   wait(2000)
   multirun(cannunsdeluxe)
   wait(50)
   stop()

      --init_pylons--
   build(1, pylon, 80)
   wait_buildstart(1, pylon)
   wait(100)
   build(2, pylon, 80)
   wait_buildstart(2, pylon)
   wait(100)
   build(3, pylon, 80)
   wait_buildstart(3, pylon)
   wait(100)
#creep 3
   build(4, pylon, 80)
   wait_buildstart(4, pylon)
   wait(100)
   build(5, pylon, 80)
   wait_buildstart(5, pylon)
   wait(100)
   build(6, pylon, 80)
   wait_buildstart(6, pylon)
   wait(100)
   build(7, pylon, 80)
   wait_buildstart(7, pylon)
   wait(100)
   build(8, pylon, 80)
   wait_buildstart(8, pylon)
   wait(100)
   build(9, pylon, 80)
   wait_buildstart(9, pylon)
   wait(100)
   build(10, pylon, 80)
   wait_buildstart(10, pylon)
   wait(100)
   build(11, pylon, 80)
   wait_buildstart(11, pylon)
   wait(100)
   build(12, pylon, 80)
   wait_buildstart(12, pylon)
   wait(100)
#creep 4
   build(13, pylon, 80)
   wait_buildstart(13, pylon)
   wait(100)
   build(14, pylon, 80)
   wait_buildstart(14, pylon)
   wait(100)
   build(15, pylon, 80)
   wait_buildstart(15, pylon)
   wait(100)
   build(16, pylon, 80)
   wait_buildstart(16, pylon)
   wait(100)
   build(17, pylon, 80)
   wait_buildstart(17, pylon)
   wait(100)
   build(18, pylon, 80)
   wait_buildstart(18, pylon)
   wait(100)
   build(19, pylon, 80)
   wait_buildstart(19, pylon)
   wait(100)
   build(20, pylon, 80)
   wait_buildstart(20, pylon)
   wait(100)
   build(21, pylon, 80)
   wait_buildstart(21, pylon)
   stop()


      --gayways_exp--
   build(1, gateway, 80)
   wait_buildstart(1, gateway)
   wait(100)
   build(2, gateway, 80)
   wait_buildstart(2, gateway)
   wait(100)
   build(3, gateway, 80)
   wait_buildstart(3, gateway)
   wait(100)
   build(4, gateway, 80)
   wait_buildstart(4, gateway)
   wait(100)
   build(5, gateway, 80)
   wait_buildstart(5, gateway)
   wait(100)
#creep 2
   build(6, gateway, 80)
   wait_buildstart(6, gateway)
   wait(100)
   build(7, gateway, 80)
   wait_buildstart(7, gateway)
   wait(100)
   build(8, gateway, 80)
   wait_buildstart(8, gateway)
   stop()

      --gayways--
   build(1, gateway, 80)
   wait_buildstart(1, gateway)
   wait(100)
   build(2, gateway, 80)
   wait_buildstart(2, gateway)
   wait(100)
   build(3, gateway, 80)
   wait_buildstart(3, gateway)
   wait(100)
   build(4, gateway, 80)
   wait_buildstart(4, gateway)
   wait(100)
   build(5, gateway, 80)
   wait_buildstart(5, gateway)
   wait(100)
#creep 2
   build(6, gateway, 80)
   wait_buildstart(6, gateway)
   wait(100)
   build(7, gateway, 80)
   wait_buildstart(7, gateway)
   wait(100)
   build(8, gateway, 80)
   wait_buildstart(8, gateway)
   wait(100)
#creep 3
   build(9, gateway, 80)
   wait_buildstart(9, gateway)
   wait(100)
   build(10, gateway, 80)
   wait_buildstart(10, gateway)
   wait(100)
   build(11, gateway, 80)
   wait_buildstart(11, gateway)
   wait(100)
   build(12, gateway, 80)
   wait_buildstart(12, gateway)
   wait(100)
#creep 4
   build(13, gateway, 80)
   wait_buildstart(13, gateway)
   wait(100)
   build(14, gateway, 80)
   wait_buildstart(14, gateway)
   wait(100)
   build(15, gateway, 80)
   wait_buildstart(15, gateway)
   wait(100)
   build(16, gateway, 80)
   wait_buildstart(16, gateway)
   wait(100)
   build(17, gateway, 80)
   wait_buildstart(17, gateway)
   wait(100)
#creep 5
   build(18, gateway, 80)
   wait_buildstart(18, gateway)
   wait(100)
   build(19, gateway, 80)
   wait_buildstart(19, gateway)
   wait(100)
   build(20, gateway, 80)
   wait_buildstart(20, gateway)
   wait(100)
   stop()



      --cannonmain--
   wait(220)
   notowns_jump(forge, cannonmain)
   build(1, photon_cannon, 80)
   wait_buildstart(1, photon_cannon)
   wait(100)
   build(2, photon_cannon, 80)
   wait_buildstart(2, photon_cannon)
   wait(100)
   build(3, photon_cannon, 80)
   wait_buildstart(3, photon_cannon)
   wait(100)
   build(4, photon_cannon, 80)
   wait_buildstart(4, photon_cannon)
#creep 2
   wait(100)
   build(5, photon_cannon, 80)
   wait_buildstart(5, photon_cannon)
   wait(100)
   build(6, photon_cannon, 80)
   wait_buildstart(6, photon_cannon)
   wait(100)
   build(7, photon_cannon, 80)
   wait_buildstart(7, photon_cannon)
#creep 3
   wait(100)
   build(8, photon_cannon, 80)
   wait_buildstart(8, photon_cannon)
   wait(100)
   build(9, photon_cannon, 80)
   wait_buildstart(9, photon_cannon)
   wait(100)
   build(10, photon_cannon, 80)
   wait_buildstart(10, photon_cannon)
#creep 4
   wait(100)
   build(11, photon_cannon, 80)
   wait_buildstart(11, photon_cannon)
   wait(100)
   build(12, photon_cannon, 80)
   wait_buildstart(12, photon_cannon)
   wait(100)
   build(13, photon_cannon, 80)
   wait_buildstart(13, photon_cannon)
   wait(100)
   stop()


      --cannunsdeluxe--
   build(1, photon_cannon, 80)
   wait_buildstart(1, photon_cannon)
   wait(100)
   build(2, photon_cannon, 80)
   wait_buildstart(2, photon_cannon)
   wait(100)
   build(3, photon_cannon, 80)
   wait_buildstart(3, photon_cannon)
   wait(100)
   build(4, photon_cannon, 80)
   wait_buildstart(4, photon_cannon)
#creep 2
   wait(100)
   build(5, photon_cannon, 80)
   wait_buildstart(5, photon_cannon)
   wait(100)
   build(6, photon_cannon, 80)
   wait_buildstart(6, photon_cannon)
#creep 3
   wait(100)
   build(7, photon_cannon, 80)
   wait_buildstart(7, photon_cannon)
   wait(100)
   build(8, photon_cannon, 80)
   wait_buildstart(8, photon_cannon)
   wait(100)
   build(9, photon_cannon, 80)
   wait_buildstart(9, photon_cannon)
   wait(100)
   build(10, photon_cannon, 80)
   wait_buildstart(10, photon_cannon)
#creep 4
   wait(100)
   build(11, photon_cannon, 80)
   wait_buildstart(11, photon_cannon)
   wait(100)
   build(12, photon_cannon, 80)
   wait_buildstart(12, photon_cannon)
   wait(100)
   build(13, photon_cannon, 80)
   wait_buildstart(13, photon_cannon)
   wait(100)

   build(14, photon_cannon, 80)
   wait_buildstart(14, photon_cannon)
   wait(100)
   build(15, photon_cannon, 80)
   wait_buildstart(15, photon_cannon)
   wait(100)
   build(16, photon_cannon, 80)
   wait_buildstart(16, photon_cannon)
   wait(100)
   build(17, photon_cannon, 80)
   wait_buildstart(17, photon_cannon)
   wait(100)
   build(18, photon_cannon, 80)
   wait_buildstart(18, photon_cannon)
   wait(100)
   build(19, photon_cannon, 80)
   wait_buildstart(19, photon_cannon)
   wait(100)
   build(20, photon_cannon, 80)
   wait_buildstart(20, photon_cannon)
   wait(100)
   build(21, photon_cannon, 80)
   wait_buildstart(21, photon_cannon)
   wait(100)
   stop()

      --stargays_exp--
   wait(220)
   notowns_jump(cybernetics_core, stargays)
   build(1, stargate, 80)
   wait_buildstart(1, stargate)
   wait(100)
   build(2, stargate, 80)
   wait_buildstart(2, stargate)
   wait(100)
   build(3, stargate, 80)
   wait_buildstart(3, stargate)
   defenseuse_aa(1, corsair)
   defensebuild_aa(1, corsair)
   defenseuse_aa(1, scout)
   defensebuild_aa(1, scout)
   wait(100)
   build(4, stargate, 80)
   wait_buildstart(4, stargate)
   wait(100)

   build(5, stargate, 80)
   wait_buildstart(5, stargate)
   wait(100)
   build(6, stargate, 80)
   wait_buildstart(6, stargate)
   wait(100)
   build(7, stargate, 80)
   wait_buildstart(7, stargate)
   wait(100)
   stop()

      --stargays--
   wait(220)
   notowns_jump(cybernetics_core, stargays)
   build(1, stargate, 80)
   wait_buildstart(1, stargate)
   wait(100)
   build(2, stargate, 80)
   wait_buildstart(2, stargate)
   wait(100)
   build(3, stargate, 80)
   wait_buildstart(3, stargate)
   wait(100)
   build(4, stargate, 80)
   wait_buildstart(4, stargate)
   wait(100)

   build(5, stargate, 80)
   wait_buildstart(5, stargate)
   wait(100)
   build(6, stargate, 80)
   wait_buildstart(6, stargate)
   wait(100)
   build(7, stargate, 80)
   wait_buildstart(7, stargate)
   wait(100)

   build(8, stargate, 80)
   wait_buildstart(8, stargate)
   wait(100)
   build(9, stargate, 80)
   wait_buildstart(9, stargate)
   wait(100)
   build(10, stargate, 80)
   wait_buildstart(10, stargate)
   wait(100)
   stop()

      --robocock2pointoh--
   wait(150)
   notowns_jump(cybernetics_core, robocock2pointoh)
   build(1, robotics_facility, 80)
   wait_buildstart(1, robotics_facility)
   build(2, robotics_facility, 80)
      --peekdownurblouse--
   wait(200)
   notowns_jump(robotics_facility, peekdownurblouse)
   build(1, observatory, 80)
   stop()

      --catholicpriestism--
   wait(100)
   notowns_jump(citadel_of_adun, catholicpriestism)
   upgrade(1, zealot_speed, 80)
   build(1, templar_archives, 80)
   wait_build(1, templar_archives)
   build(2, templar_archives, 80)
   tech(psionic_storm, 80)
   wait(1000)
   upgrade(1, templar_mana, 80)
   stop()

      --ifuckinglovecarriers--
   wait(50)
   notowns_jump(stargate, ifuckinglovecarriers)
   build(1, fleet_beacon, 80)
   wait_buildstart(1, fleet_beacon)
   wait(100)
   build(2, fleet_beacon, 80)
   wait(100)
   upgrade(1, carrier_capacity, 80)
   wait(500)
   tech(disruption_web, 80)
   wait(1000)
   upgrade(1, corsair_mana, 80)
   wait(50)
   stop()

      --mancatcher--
   wait(60)
   notowns_jump(fleet_beacon, mancatcher)
   build(1, arbiter_tribunal, 80)
      --arbyup--
   wait(100)
   notowns_jump(arbiter_tribunal, arbyup)
   tech(stasis_field, 80)
   wait(50)
   stop()

      --rapethewomen--
   wait(150)
   resources_jump(900, 900, rapethewomen)
   give_money()
   wait(50)
   goto(rapethewomen)




#===============================================
# ATTACK CODE
#===============================================
# Aggress with Zealots in early-game, then transition to Dark Templar and Archons exclusively for melee.
# Ideally, Templar Archives should finish before any major zerg attack hits us. Might need timing changes vs zbath or ZAPOC if the hydras come too fast.

      --marchtoheavensglory--
   multirun(zeehaloots)
   wait(3500)
   send_suicide(0)
   wait(100)
   defenseclear_gg()
   define_max(5, zealot)
   wait(500)
      --purgetheheretic--
   wait(100)
   multirun(a_dt)
   wait(70)
   multirun(a_ht)
   wait(70)
   multirun(kkkorsare)
   wait(70)
   multirun(skoot)
   wait(70)
   multirun(arkkkonz)
   wait(70)
#multirun negrosonparade
   multirun(mmmdeliciouscarriers)
   wait(70)
   multirun(gonnafreezemahowndudes)
   wait(600)
   clear_combatdata()
#defenseclear_gg
#defenseclear_ga
#defenseclear_ag
#defenseclear_aa
   goto(purgetheheretic)


      --gewnz--
   defenseuse_gg(1, dragoon)
   defensebuild_gg(1, dragoon)
   train(20, dragoon)
   wait_force(20, dragoon)
   stop()


      --kkkorsare--
   notowns_jump(stargate, wtfdawg)
   defenseuse_aa(1, corsair)
   defensebuild_aa(1, corsair)
   train(10, corsair)
   wait(125)
   stop()

      --negrosonparade--
   notowns_jump(templar_archives, wtfdawg)
   train(3, dark_archon)
   wait(125)
   stop()

      --gonnafreezemahowndudes--
   notowns_jump(arbiter_tribunal, wtfdawg)
   train(3, arbiter)
   wait(125)
   stop()


      --skoot--
   notowns_jump(stargate, wtfdawg)
   defenseuse_aa(1, scout)
   defensebuild_aa(1, scout)
   train(10, scout)
   wait(125)
   stop()

      --mmmdeliciouscarriers--
   notowns_jump(fleet_beacon, wtfdawg)
   defenseuse_aa(1, carrier)
   defensebuild_aa(1, carrier)
   defenseuse_ag(1, carrier)
   defensebuild_ag(1, carrier)
   defenseuse_gg(1, carrier)
   defensebuild_gg(1, carrier)
   defenseuse_ga(1, carrier)
   defensebuild_ga(1, carrier)
   train(6, carrier)
   wait(125)
   stop()

      --arkkkonz--
   notowns_jump(templar_archives, wtfdawg)
   defenseuse_gg(1, archon)
   defensebuild_gg(1, archon)
   train(8, archon)
   wait(125)
   stop()



      --zeehaloots--
   defenseuse_gg(1, zealot)
   defensebuild_gg(1, zealot)
   train(1, zealot)
   wait(10)
   train(2, zealot)
   wait(10)
   train(3, zealot)
   wait(10)
   train(4, zealot)
   wait(10)
   train(5, zealot)
   wait(10)
   train(6, zealot)
   wait(10)
   train(7, zealot)
   wait(10)
   train(8, zealot)
   wait(10)
   train(9, zealot)
   wait(10)
   train(10, zealot)
   wait(10)
   train(11, zealot)
   wait(10)
   train(12, zealot)
   wait(10)
   train(13, zealot)
   wait(10)
   train(14, zealot)
   wait(10)
   train(15, zealot)
   wait(10)
   train(16, zealot)
   wait(10)
   train(17, zealot)
   wait(10)
   train(18, zealot)
   stop()

      --a_dt--
   notowns_jump(templar_archives, wtfdawg)
   defenseuse_gg(1, dark_templar)
   defensebuild_gg(1, dark_templar)
   train(18, dark_templar)
   wait(125)
   stop()

      --a_ht--
   notowns_jump(templar_archives, wtfdawg)
   train(13, high_templar)
   wait(125)
   stop()

      --wtfdawg--
   stop()
[/spoiler]

It is not nearly ready for any VS battles yet... so don't bother, it'll just die 90% of the time.

/edit

After many attempts to fix the protoss I am abandoning that project.

I will update the Zerg in the near future for better vs Terran unit composition and then ZAPOC will essentially be complete. I have achieved what I set out to do, and that's all I can ask. It is time for me to step down for all time.

/UPDATE

Okay I gave the protoss one last try after a nap. I revised their attack code a little bit, opting for more of an Ashara-style go.

It works. Kind of. They rarely go past 100 supply.

Against Myk's zerg it's a 100% guaranteed crash once they start fighting. No crash against ZAPOC, but ZAPOC's timing push and critical mass are just far too strong for the protoss and their shitty unit production. Haven't tried it vs Zbath, but I'm sure Zbath will crush them even faster with its ling/muta rushes.

Major probems -

- Unit production SUCKS BALLS despite my best efforts.
- Builds only 2-3 cannons in main, no cannons at all in expansions. Cannons are necessary for this design to work - they're supposed to distract the zerg while carriers and such can move in. Instead the expansions go up, build a few production facilities, then die right after.
- Doesn't want to build AA until it's fully teched despite defense commands in the stargate section and the super fast initiation of the main attack script. This means that mutas have a feast before the protoss decide to do anything.
IskatuMesk
Posts: 329
Joined: Wed May 16, 2007 5:57 pm

Postby IskatuMesk » Fri Jan 08, 2010 4:11 pm

Added new protoss code to the first post.

Return to “StarCraft Modding”

Who is online

Users browsing this forum: No registered users and 1 guest