cosmonarchy-bw-prerelease/CMBW-editor/ai/cm_protoss_atown.asc3
2023-09-08 12:32:19 -04:00

846 lines
20 KiB
Plaintext

script_name Expansion Protoss Campaign Area Town
script_id PARx
start_areatown
wait 1
bld 1 nexus 180
multi expansion_worker_start
w_bldstart 1 nexus
var Set try_expand_var 0 13
w_bld 1 nexus
multi count_expansion
bld 1 pylon 98
placeholder_count Local AtL|Jump 1 Group_Buildings expansion_normal 13
var Ex|Jump skip_building_var 1 idle 13
:expansion_normal
multi request_pylon
w_bld 1 pylon
multi request_static_defense
call main_wait_1200
multi production_cycle
call main_wait_1800
var Ex|Wait build_done_var 1 13
call main_wait_1200
multi request_strident_stratum
call main_wait_1200
multi request_embassy
call main_wait_600
multi request_crucible
call main_wait_600
multi build_order_expansion
goto idle
:count_expansion
wait 12
local 255 Ex 0 nexus count_expansion
var add town_count_var 1 13
local 255 Ex_W 0 nexus blank
var sub town_count_var 1 13
goto count_expansion
:save_money_for_expansion
wait 12
time AtM 5760 Frames save_money_for_expansion # 5 minutes
res 13 AtL Ore 450 save_money_for_expansion
var Ex|Wait try_expand_var 1 13
var Set can_build_static_defense_var 0 13
var Set can_queue_early_military_var 0 13
var Ex|Wait try_expand_var 0 13
call build_bool
goto save_money_for_expansion
:expansion_worker_start
wait 24
local 255 Ex 0 nexus expansion_worker_start
bld 1 scribe 98
w_bldstart 1 nexus
bld 2 scribe 98
w_bld 1 nexus
bld 4 scribe 98
maynard 4
:expansion_worker_standard_start
multi worker_track
:expansion_worker_standard_loop
wait 150
local 255 AtL 28 scribe|artisan expansion_worker_standard_loop
res 13 AtL_W Ore 50 blank
call worker_conditions
c_queues train scribe|artisan 13
res 13 AtL_C Any 100 worker_request_advanced
queue 1 scribe nexus 255 Local Loc.63 200
wait 150
goto expansion_worker_standard_loop
:worker_track
wait 120
local 255 AtL_W 10 scribe|artisan blank
var Add mining_count_var 1 13
local 255 AtM_W 9 scribe|artisan blank
var Sub mining_count_var 1 13
goto worker_track
:worker_conditions
wait 12
res 13 AtL Ore 500 blank_return
var Ex|WF(360) under_attack_var 0 13
return
:worker_request_advanced
local 255 AtL 28 scribe|artisan blank_return
local 255 Ex 0 strident_stratum blank_return
local 255 AtL 10 artisan blank_return
queue 1 artisan strident_stratum 255 Local Loc.63 200
wait 150
return
:idle
wait 25500
goto idle
:blank
stop
:blank_return
return
:main_wait_150
wait 24
res 13 AtL Any 500 blank_return
wait 150
return
:main_wait_300
wait 24
res 13 AtL Any 500 blank_return
wait 300
return
:main_wait_450
wait 24
call main_wait_300
call main_wait_150
return
:main_wait_600
wait 24
res 13 AtL Any 800 blank_return
res 13 AtL Any 500 main_wait_300
wait 600
return
:main_wait_750
wait 24
call main_wait_600
call main_wait_150
return
:main_wait_900
wait 24
res 13 AtL Any 1100 blank_return
res 13 AtL Any 800 main_wait_600
res 13 AtL Any 500 main_wait_300
wait 900
return
:main_wait_1200
wait 24
call main_wait_900
call main_wait_300
return
:main_wait_1500
wait 24
call main_wait_1200
call main_wait_300
return
:main_wait_1800
wait 24
call main_wait_900
call main_wait_900
return
:main_wait_2400
wait 24
call main_wait_1200
call main_wait_1200
return
:main_wait_3600
wait 24
call main_wait_1200
call main_wait_1200
return
:build_bool
# These are used no matter what!
var Add can_worker_var 1 13
var Add can_expand_var 1 13
var Set can_attack_var 1 13
var Set build_gas_var 1 13
var Set build_done_var 1 13
# These are not used if skip_building_var is true!
var Set can_build_static_defense_var 1 13
var Set can_queue_early_military_var 1 13
var Set can_build_production_var 1 13
return
:build_order_expansion
bring 13 AtL_W 1 gateway|grand_library|lattice|sequestered_icon|stargate|argosy Loc.63 blank
var Ex|Jump pref_ranger 1 build_ranger_fin2 13
var Ex|Jump pref_templar 1 build_templar_fin2 13
var Ex|Jump pref_skylord 1 build_skylord_fin2 13
goto build_general_fin2
:build_general_fin2
placeholder_count Local AtL|Jump 2 Group_Buildings blank 13
call main_wait_600
call need_gateway
call main_wait_300
call need_embassy
call main_wait_450
call need_cenotaph
call main_wait_300
call wLattice2
call main_wait_300
call need_stargate
call main_wait_300
call need_automatonregister
call main_wait_300
call need_grandlibrary
call need_ancestralarchives
call main_wait_1200
call need_fleetbeacon
call main_wait_600
call main_wait_900
call need_sanctumofsorrow
stop
:build_ranger_fin2
placeholder_count Local AtL|Jump 2 Group_Buildings blank 13
call wLattice2
call need_automatonregister
call main_wait_600
call need_syntheticsynod
wait 24
call need_gateway
call main_wait_600
call need_sequesteredicon
call main_wait_600
call need_cenotaph
call main_wait_300
call need_embassy
call main_wait_600
call need_stargate
call main_wait_450
call need_argosy
call main_wait_300
call need_astralomen
call main_wait_600
call need_fleetbeacon
call main_wait_600
call need_grandlibrary
call main_wait_600
call need_ancestralarchives
call main_wait_600
call main_wait_600
call need_monumentofsin
stop
:build_templar_fin2
placeholder_count Local AtL|Jump 2 Group_Buildings blank 13
call need_gateway
wait 24
call need_cenotaph
call main_wait_300
call need_grandlibrary
call need_ancestralarchives
call main_wait_600
call wLattice2
call main_wait_300
call need_embassy
call main_wait_600
call need_automatonregister
call main_wait_300
call need_sanctumofsorrow
call main_wait_300
call need_sequesteredicon
call need_syntheticsynod
call main_wait_300
call need_stargate
call need_astralomen
call main_wait_600
call need_argosy
call main_wait_1200
call need_monumentofsin
call main_wait_1200
call need_fleetbeacon
stop
:build_skylord_fin2
placeholder_count Local AtL|Jump 2 Group_Buildings blank 13
call need_gateway
bring 13 AtL_W 1 gateway Loc.63 blank
call need_cenotaph
call main_wait_450
call need_stargate
call main_wait_300
call need_embassy
call main_wait_300
call need_argosy
call main_wait_150
bring 13 AtL_W 1 stargate Loc.63 blank
call need_astralomen
call main_wait_1200
bring 13 AtL_W 1 argosy Loc.63 blank
call need_fleetbeacon
call main_wait_300
call main_wait_600
call build_lattice
call main_wait_900
bring 13 AtL_W 1 argosy Loc.63 blank
call need_monumentofsin
call main_wait_600
call build_grandlibrary
bring 13 AtL_W 1 grand_library Loc.63 blank
call need_ancestralarchives
call main_wait_600
bring 13 AtL_W 1 lattice Loc.63 blank
call need_automatonregister
call main_wait_600
call build_sequesteredicon
bring 13 AtL_W 1 sequestered_icon Loc.63 blank
call need_syntheticsynod
call main_wait_300
call main_wait_300
call need_grandlibrary
call need_prostrationstage
call main_wait_300
bring 13 AtL_W 1 prostration_stage Loc.63 blank
call need_sanctumofsorrow
stop
:need_embassy
p_need 1 embassy
return
:build_gateway
wait 12
notowns nexus build_gateway
add_bld 255 gateway 1 99 98
return
:need_gateway
p_need 1 gateway
return
:build_grandlibrary
wait 12
notowns nexus build_grandlibrary
add_bld 255 grand_library 1 99 99
return
:need_grandlibrary
p_need 1 grand_library
return
:build_lattice
wait 12
notowns nexus build_lattice
add_bld 255 lattice 1 99 98
return
:wLattice2
p_need 1 lattice
return
:build_sequesteredicon
wait 12
notowns nexus build_sequesteredicon
add_bld 255 sequestered_icon 1 99 99
return
:need_sequesteredicon
p_need 1 sequestered_icon
return
:build_stargate
wait 12
notowns nexus build_stargate
add_bld 255 stargate 1 99 98
return
:need_stargate
p_need 1 stargate
return
:build_argosy
wait 12
notowns nexus build_argosy
add_bld 255 argosy 1 99 99
return
:need_argosy
p_need 1 argosy
return
:build_prostrationstage
wait 12
notowns nexus build_prostrationstage
add_bld 255 prostration_stage 1 99 99
return
:need_prostrationstage
p_need 1 prostration_stage
return
:build_roguegallery
wait 12
notowns nexus build_roguegallery
add_bld 255 rogue_gallery 1 99 98
return
:need_roguegallery
p_need 1 rogue_gallery
return
:need_cenotaph
wait 12
bring 13 AtL 1 cenotaph Loc.63 blank_return
p_need 1 cenotaph
return
:need_ancestralarchives
wait 12
bring 13 AtL 1 ancestral_archives Loc.63 blank_return
p_need 1 ancestral_archives
return
:need_automatonregister
wait 12
bring 13 AtL 1 automaton_register Loc.63 blank_return
p_need 1 automaton_register
return
:need_syntheticsynod
wait 12
bring 13 AtL 1 synthetic_synod Loc.63 blank_return
p_need 1 synthetic_synod
return
:need_astralomen
wait 12
bring 13 AtL 1 astral_omen Loc.63 blank_return
p_need 1 astral_omen
return
:need_fleetbeacon
wait 12
bring 13 AtL 1 fleet_beacon Loc.63 blank_return
p_need 1 fleet_beacon
return
:need_sanctumofsorrow
wait 12
bring 13 AtL 1 sanctum_of_sorrow Loc.63 blank_return
# p_need 1 sanctum_of_sorrow
return
:need_monumentofsin
wait 12
bring 13 AtL 1 monument_of_sin Loc.63 blank_return
p_need 1 monument_of_sin
return
:request_pylon
local 255 AtL 3 pylon request_pylon_loop
add_bld 255 pylon 1 30 99
wait 600
goto request_pylon
:request_pylon_loop
unit_check 13 13 63 Greater|Wait 0 3 embassy|crucible|strident_stratum|gateway|cenotaph|grand_library|rogue_gallery|prostration_stage|sanctum_of_sorrow|ancestral_archives|lattice|automaton_register|ardent_authority|sequestered_icon|auxiliary_oasis|unitary_union|synthetic_synod|stargate|astral_omen|argosy|fleet_beacon|monument_of_sin pylon
add_bld 255 pylon 1 30 99
wait 720
goto request_pylon
:request_static_defense
var Ex|Wait can_build_static_defense_var 1 13
wait 24
notowns nexus request_static_defense
notowns pylon request_static_defense
res 13 AtL_C Ore 150 request_static_defense_check
goto request_static_defense
:request_static_defense_check
var AtL|Multi mining_count_var 3 request_matrix_check 13
:request_warden_check
local 255 AtL_M 10 warden request_matrix_check
local 255 AtL 10 warden blank_return
local 255 AtL 4 warden request_warden_check2
add_bld 255 warden 1 4 95
var Ex|Jump under_attack_var 1 add_return_wait_480 13
goto add_return_wait_960
:request_warden_check2
var Ex|Jump under_attack_var 1 request_warden_check3 13
var AtM|Jump mining_count_var 2 add_return_wait_960 13
add_bld 255 warden 1 7 95
goto add_return_wait_480
:request_warden_check3
add_bld 255 warden 1 10 95
goto add_return_wait_480
:request_matrix_check
local 255 AtL 10 matrix blank
local 255 AtL 4 matrix request_matrix_check2
add_bld 255 matrix 1 4 95
stop
:request_matrix_check2
var Ex|Jump under_attack_var 1 request_matrix_check3 13
var AtM|Jump mining_count_var 2 blank 13
add_bld 255 matrix 1 7 95
stop
:request_matrix_check3
add_bld 255 matrix 1 10 95
stop
:request_embassy
wait 24
local 255 AtM 3 Group_Factories request_embassy
local 255 AtL 1 embassy blank
bring 13 AtL 3 embassy Loc.63 blank
notowns nexus request_embassy
res 13 AtM Any 49 request_embassy
bld 1 embassy 98
stop
:request_crucible
wait 24
local 255 AtM 3 Group_Factories request_crucible
local 255 AtL 2 crucible blank
notowns nexus request_crucible
res 13 AtM Any 99 request_crucible
add_bld 255 crucible 1 2 98
wait 2440
goto request_crucible
:request_strident_stratum
wait 24
local 255 AtM 4 Group_Factories request_strident_stratum
local 255 AtL 1 strident_stratum blank
bring 13 AtL 3 strident_stratum Loc.63 blank
notowns nexus request_strident_stratum
res 13 AtM Any 149 request_strident_stratum
add_bld 255 strident_stratum 1 2 98
stop
:production_cycle
var Set can_build_production_var 1 13
:production_cycle_conditions
wait 24
var Ex|Jump mining_count_var 0 production_cycle_conditions 13
local 255 Ex 0 nexus production_cycle_conditions
local 255 AtM 4 scribe|artisan production_cycle_conditions
bring 13 AtM 3 Group_Factories Loc.63 production_cycle_conditions
bring 13 AtL 21 Group_Factories Loc.63 production_cycle_conditions_5
bring 13 AtL 16 Group_Factories Loc.63 production_cycle_conditions_4
bring 13 AtL 11 Group_Factories Loc.63 production_cycle_conditions_3
bring 13 AtL 6 Group_Factories Loc.63 production_cycle_conditions_2
goto production_cycle_loop
:production_cycle_conditions_2
var Ex|Jump mining_count_var 1 production_cycle_conditions 13
goto production_cycle_loop
:production_cycle_conditions_3
var Ex|Jump mining_count_var 2 production_cycle_conditions 13
goto production_cycle_loop
:production_cycle_conditions_4
var Ex|Jump mining_count_var 3 production_cycle_conditions 13
goto production_cycle_loop
:production_cycle_conditions_5
var Ex|Jump mining_count_var 4 production_cycle_conditions 13
goto production_cycle_loop
:production_cycle_loop
wait 12
var AtL|Call prod_cycle_var 1 production_cycle_wait 13
var Set prod_cycle_var 0 13
var Ex|Wait can_build_production_var 1 13
call production_cycle_check
wait 110
call main_wait_150
goto production_cycle_conditions
:production_cycle_wait
bring 13 AtM 3 gateway|cenotaph|grand_library|rogue_gallery|prostration_stage|ancestral_archives|lattice|automaton_register|sequestered_icon|synthetic_synod|stargate|astral_omen|argosy|fleet_beacon|monument_of_sin Loc.63 blank_return
local 255 AtM 1 gateway|cenotaph|grand_library|rogue_gallery|prostration_stage|ancestral_archives|lattice|automaton_register|sequestered_icon|synthetic_synod|stargate|astral_omen|argosy|fleet_beacon|monument_of_sin blank_return
var AtL|Jump mining_count_var 3 blank_return 13
var Ex|Jump mining_count_var 2 production_cycle_wait2 13
call main_wait_750
return
:production_cycle_wait2
call main_wait_450
return
:production_cycle_check
var Ex|Call pref_ranger 1 production_cycle_ranger 13
var Ex|Call pref_templar 1 production_cycle_templar 13
var Ex|Call pref_skylord 1 production_cycle_skylord 13
var AtL|Jump mining_count_var 4 production_cycle_check_high 13
call production_cycle_templar
call production_cycle_ranger
call production_cycle_skylord
return
:production_cycle_check_high
call production_cycle_skylord
call production_cycle_ranger
call production_cycle_templar
return
:production_cycle_ranger
var AtL|Call pref_lattice 1 production_cycle_lattice 13
var AtL|Call pref_automatonregister 1 production_cycle_automatonregister 13
var AtL|Call pref_ardentauthority 1 production_cycle_ardentauthority 13
var AtL|Call pref_sequesteredicon 1 production_cycle_sequesteredicon 13
var AtL|Call pref_syntheticsynod 1 production_cycle_syntheticsynod 13
res 13 AtL Any 800 production_cycle_ranger_high
call production_cycle_lattice
call production_cycle_automatonregister
call production_cycle_sequesteredicon
return
:production_cycle_ranger_high
call production_cycle_syntheticsynod
call production_cycle_sequesteredicon
call production_cycle_ardentauthority
call production_cycle_automatonregister
return
:production_cycle_templar
var AtL|Call pref_gateway 1 production_cycle_gateway 13
var AtL|Call pref_cenotaph 1 production_cycle_cenotaph 13
var AtL|Call pref_grandlibrary 1 production_cycle_grandlibrary 13
var AtL|Call pref_roguegallery 1 production_cycle_roguegallery 13
var AtL|Call pref_prostrationstage 1 production_cycle_prostrationstage 13
var AtL|Call pref_ancestralarchives 1 production_cycle_ancestralarchives 13
res 13 AtL Any 800 production_cycle_templar_high
call production_cycle_gateway
call production_cycle_cenotaph
call production_cycle_grandlibrary
call production_cycle_roguegallery
return
:production_cycle_templar_high
call production_cycle_ancestralarchives
call production_cycle_prostrationstage
call production_cycle_grandlibrary
return
:production_cycle_skylord
var AtL|Call pref_stargate 1 production_cycle_stargate 13
var AtL|Call pref_astralomen 1 production_cycle_astralomen 13
var AtL|Call pref_argosy 1 production_cycle_argosy 13
var AtL|Call pref_fleetbeacon 1 production_cycle_fleetbeacon 13
var AtL|Call pref_monumentofsin 1 production_cycle_monumentofsin 13
res 13 AtL Any 800 production_cycle_skylord_high
call production_cycle_stargate
call production_cycle_astralomen
call production_cycle_argosy
return
:production_cycle_skylord_high
call production_cycle_fleetbeacon
call production_cycle_monumentofsin
call production_cycle_argosy
return
:production_cycle_gateway
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 gateway 1 20 98
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_cenotaph
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 cenotaph 1 20 98
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_grandlibrary
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 grand_library 1 20 99
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_roguegallery
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 rogue_gallery 1 20 98
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_prostrationstage
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 prostration_stage 1 20 99
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_ancestralarchives
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 ancestral_archives 1 20 100
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_lattice
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 lattice 1 20 98
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_automatonregister
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 automaton_register 1 20 98
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_ardentauthority
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 ardent_authority 1 20 98
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_sequesteredicon
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 sequestered_icon 1 20 99
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_syntheticsynod
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 synthetic_synod 1 20 101
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_stargate
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 stargate 1 20 98
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_astralomen
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 astral_omen 1 20 98
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_argosy
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 argosy 1 20 99
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_fleetbeacon
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 fleet_beacon 1 20 100
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_monumentofsin
wait 12
var AtL|Jump prod_cycle_var 1 blank_return 13
notowns nexus blank_return
bring 13 Ex 0 scribe|artisan Loc.63 blank_return
add_bld 255 monument_of_sin 1 20 101
wait 180
call main_wait_900
goto production_cycle_success
:production_cycle_success
var Set prod_cycle_var 1 13
:addReturn
wait 24
return
:add_return_wait_480
wait 30
call main_wait_450
return
:add_return_wait_960
wait 60
call main_wait_900
return