MD_auto_agency_can_select_upgrade_0_trigger = { always = yes } MD_auto_agency_can_select_upgrade_1_trigger = { always = yes } MD_auto_agency_can_select_upgrade_2_trigger = { has_tech = computing3 has_done_agency_upgrade = upgrade_form_department } MD_auto_agency_can_select_upgrade_3_trigger = { always = yes } MD_auto_agency_can_select_upgrade_4_trigger = { always = yes } MD_auto_agency_can_select_upgrade_5_trigger = { always = yes } MD_auto_agency_can_select_upgrade_6_trigger = { always = yes } MD_auto_agency_can_select_upgrade_7_trigger = { has_tech = internet3 } MD_auto_agency_can_select_upgrade_8_trigger = { always = yes } MD_auto_agency_can_select_upgrade_9_trigger = { always = yes } MD_auto_agency_can_select_upgrade_10_trigger = { always = yes } MD_auto_agency_can_select_upgrade_11_trigger = { always = yes } MD_auto_agency_can_select_upgrade_12_trigger = { always = yes } MD_auto_agency_can_select_upgrade_13_trigger = { always = yes } MD_auto_agency_can_select_upgrade_14_trigger = { always = yes } MD_auto_agency_can_select_upgrade_15_trigger = { always = yes } MD_auto_agency_can_select_upgrade_16_trigger = { always = yes } MD_auto_agency_can_select_upgrade_17_trigger = { has_done_agency_upgrade = upgrade_form_department } MD_auto_agency_can_select_upgrade_18_trigger = { has_done_agency_upgrade = upgrade_form_department } MD_auto_agency_can_select_upgrade_19_trigger = { has_done_agency_upgrade = upgrade_crypto_strength has_tech = artificial_intelligence_4 } MD_auto_agency_can_select_upgrade_20_trigger = { has_done_agency_upgrade = upgrade_form_department } MD_auto_agency_can_select_upgrade_21_trigger = { has_done_agency_upgrade = upgrade_establish_cyber_operations_division has_done_agency_upgrade = upgrade_form_department } MD_auto_agency_can_select_upgrade_22_trigger = { has_done_agency_upgrade = upgrade_establish_cyber_operations_division has_done_agency_upgrade = upgrade_form_department } MD_auto_agency_can_select_upgrade_23_trigger = { has_done_agency_upgrade = upgrade_establish_cyber_operations_division has_done_agency_upgrade = upgrade_form_department } MD_auto_agency_can_select_upgrade_24_trigger = { has_done_agency_upgrade = upgrade_establish_cyber_operations_division has_done_agency_upgrade = upgrade_form_department has_done_agency_upgrade = upgrade_cyber_warfare_operational_planning } MD_auto_agency_slot_available_0_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^0 value = global.agency_max_upgrades^0 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_1_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^1 value = global.agency_max_upgrades^1 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_2_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^2 value = global.agency_max_upgrades^2 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_3_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^3 value = global.agency_max_upgrades^3 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_4_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^4 value = global.agency_max_upgrades^4 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_5_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^5 value = global.agency_max_upgrades^5 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_6_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^6 value = global.agency_max_upgrades^6 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_7_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^7 value = global.agency_max_upgrades^7 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_8_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^8 value = global.agency_max_upgrades^8 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_9_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^9 value = global.agency_max_upgrades^9 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_10_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^10 value = global.agency_max_upgrades^10 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_11_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^11 value = global.agency_max_upgrades^11 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_12_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^12 value = global.agency_max_upgrades^12 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_13_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^13 value = global.agency_max_upgrades^13 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_14_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^14 value = global.agency_max_upgrades^14 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_15_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^15 value = global.agency_max_upgrades^15 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_16_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^16 value = global.agency_max_upgrades^16 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_17_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^17 value = global.agency_max_upgrades^17 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_18_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^18 value = global.agency_max_upgrades^18 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_19_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^19 value = global.agency_max_upgrades^19 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_20_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^20 value = global.agency_max_upgrades^20 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_21_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^21 value = global.agency_max_upgrades^21 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_22_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^22 value = global.agency_max_upgrades^22 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_23_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^23 value = global.agency_max_upgrades^23 compare = greater_than_or_equals } } } MD_auto_agency_slot_available_24_trigger = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^24 value = global.agency_max_upgrades^24 compare = greater_than_or_equals } } } # Mirrors the per-index pair MD_auto_agency_select_random tests (can_select + # slot_available) so the start gate can never refuse a pick the selector would make. MD_auto_agency_can_upgrade = { OR = { AND = { MD_auto_agency_slot_available_0_trigger = yes MD_auto_agency_can_select_upgrade_0_trigger = yes } AND = { MD_auto_agency_slot_available_1_trigger = yes MD_auto_agency_can_select_upgrade_1_trigger = yes } AND = { MD_auto_agency_slot_available_2_trigger = yes MD_auto_agency_can_select_upgrade_2_trigger = yes } AND = { MD_auto_agency_slot_available_3_trigger = yes MD_auto_agency_can_select_upgrade_3_trigger = yes } AND = { MD_auto_agency_slot_available_4_trigger = yes MD_auto_agency_can_select_upgrade_4_trigger = yes } AND = { MD_auto_agency_slot_available_5_trigger = yes MD_auto_agency_can_select_upgrade_5_trigger = yes } AND = { MD_auto_agency_slot_available_6_trigger = yes MD_auto_agency_can_select_upgrade_6_trigger = yes } AND = { MD_auto_agency_slot_available_7_trigger = yes MD_auto_agency_can_select_upgrade_7_trigger = yes } AND = { MD_auto_agency_slot_available_8_trigger = yes MD_auto_agency_can_select_upgrade_8_trigger = yes } AND = { MD_auto_agency_slot_available_9_trigger = yes MD_auto_agency_can_select_upgrade_9_trigger = yes } AND = { MD_auto_agency_slot_available_10_trigger = yes MD_auto_agency_can_select_upgrade_10_trigger = yes } AND = { MD_auto_agency_slot_available_11_trigger = yes MD_auto_agency_can_select_upgrade_11_trigger = yes } AND = { MD_auto_agency_slot_available_12_trigger = yes MD_auto_agency_can_select_upgrade_12_trigger = yes } AND = { MD_auto_agency_slot_available_13_trigger = yes MD_auto_agency_can_select_upgrade_13_trigger = yes } AND = { MD_auto_agency_slot_available_14_trigger = yes MD_auto_agency_can_select_upgrade_14_trigger = yes } AND = { MD_auto_agency_slot_available_15_trigger = yes MD_auto_agency_can_select_upgrade_15_trigger = yes } AND = { MD_auto_agency_slot_available_16_trigger = yes MD_auto_agency_can_select_upgrade_16_trigger = yes } AND = { MD_auto_agency_slot_available_17_trigger = yes MD_auto_agency_can_select_upgrade_17_trigger = yes } AND = { MD_auto_agency_slot_available_18_trigger = yes MD_auto_agency_can_select_upgrade_18_trigger = yes } AND = { MD_auto_agency_slot_available_19_trigger = yes MD_auto_agency_can_select_upgrade_19_trigger = yes } AND = { MD_auto_agency_slot_available_20_trigger = yes MD_auto_agency_can_select_upgrade_20_trigger = yes } AND = { MD_auto_agency_slot_available_21_trigger = yes MD_auto_agency_can_select_upgrade_21_trigger = yes } AND = { MD_auto_agency_slot_available_22_trigger = yes MD_auto_agency_can_select_upgrade_22_trigger = yes } AND = { MD_auto_agency_slot_available_23_trigger = yes MD_auto_agency_can_select_upgrade_23_trigger = yes } AND = { MD_auto_agency_slot_available_24_trigger = yes MD_auto_agency_can_select_upgrade_24_trigger = yes } } } MD_auto_agency_can_start = { check_variable = { automate_agency_upgrades_choice > 1 } NOT = { has_active_mission = spy_agency_upgrade_in_progress } # Set by every vanilla upgrade's modifiers_during_progress — blocks us when a # native upgrade is running that we didn't start. check_variable = { modifier@MD_auto_agency_in_progress_boolean = 0 } check_variable = { agency_selected_upgrade = -1 } has_intelligence_agency = yes # Run while something is still undone, or whenever the player has an explicit # queue. Without this, manually-queued extra levels of an upgrade would stall # forever once every upgrade has been done once. OR = { MD_auto_agency_can_upgrade = yes AND = { has_variable = agency_queue^num check_variable = { agency_queue^num > 0 } } } } # The v_* helpers all read the temp variable `v` (caller's loop index) and guard the # meta_effect substitution at the apply site from reading out-of-range upgrade slots. MD_auto_agency_v_index_valid = { check_variable = { v > -1 } check_variable = { v < global.agency_upgrades^num } } MD_auto_agency_v_slot_available = { NOT = { check_variable = { var = agency_upgrades_completed_and_queued^v value = global.agency_max_upgrades^v compare = greater_than_or_equals } } } MD_auto_agency_v_can_select = { OR = { AND = { check_variable = { v = 0 } MD_auto_agency_can_select_upgrade_0_trigger = yes } AND = { check_variable = { v = 1 } MD_auto_agency_can_select_upgrade_1_trigger = yes } AND = { check_variable = { v = 2 } MD_auto_agency_can_select_upgrade_2_trigger = yes } AND = { check_variable = { v = 3 } MD_auto_agency_can_select_upgrade_3_trigger = yes } AND = { check_variable = { v = 4 } MD_auto_agency_can_select_upgrade_4_trigger = yes } AND = { check_variable = { v = 5 } MD_auto_agency_can_select_upgrade_5_trigger = yes } AND = { check_variable = { v = 6 } MD_auto_agency_can_select_upgrade_6_trigger = yes } AND = { check_variable = { v = 7 } MD_auto_agency_can_select_upgrade_7_trigger = yes } AND = { check_variable = { v = 8 } MD_auto_agency_can_select_upgrade_8_trigger = yes } AND = { check_variable = { v = 9 } MD_auto_agency_can_select_upgrade_9_trigger = yes } AND = { check_variable = { v = 10 } MD_auto_agency_can_select_upgrade_10_trigger = yes } AND = { check_variable = { v = 11 } MD_auto_agency_can_select_upgrade_11_trigger = yes } AND = { check_variable = { v = 12 } MD_auto_agency_can_select_upgrade_12_trigger = yes } AND = { check_variable = { v = 13 } MD_auto_agency_can_select_upgrade_13_trigger = yes } AND = { check_variable = { v = 14 } MD_auto_agency_can_select_upgrade_14_trigger = yes } AND = { check_variable = { v = 15 } MD_auto_agency_can_select_upgrade_15_trigger = yes } AND = { check_variable = { v = 16 } MD_auto_agency_can_select_upgrade_16_trigger = yes } AND = { check_variable = { v = 17 } MD_auto_agency_can_select_upgrade_17_trigger = yes } AND = { check_variable = { v = 18 } MD_auto_agency_can_select_upgrade_18_trigger = yes } AND = { check_variable = { v = 19 } MD_auto_agency_can_select_upgrade_19_trigger = yes } AND = { check_variable = { v = 20 } MD_auto_agency_can_select_upgrade_20_trigger = yes } AND = { check_variable = { v = 21 } MD_auto_agency_can_select_upgrade_21_trigger = yes } AND = { check_variable = { v = 22 } MD_auto_agency_can_select_upgrade_22_trigger = yes } AND = { check_variable = { v = 23 } MD_auto_agency_can_select_upgrade_23_trigger = yes } AND = { check_variable = { v = 24 } MD_auto_agency_can_select_upgrade_24_trigger = yes } } } MD_auto_agency_v_not_maxed_in_queue = { NOT = { check_variable = { var = agency_upgrades_in_queue_count^v value = global.agency_max_upgrades^v compare = greater_than_or_equals } } } # Called from every vanilla upgrade's `available` to block manual clicks while the # auto-agency is running or has a queue primed. MD_auto_agency_manual_upgrade_available = { custom_override_tooltip = { tooltip = cannot_manually_upgrade_agency_tt NOT = { has_active_mission = spy_agency_upgrade_in_progress } check_variable = { agency_queue^num < 1 } } }