# TODO: has_available_piece and can_stack_piece helpers for place/replace/move space/piece loops # TODO: can_place_available(s, faction, type) # TODO: disallow picking spaces with no effect (must remove if able) EVENT 1 log "1 Civic Action space each Support Phase requires Govt Control and any cube." capability SHADED 1 log "Civic Action requires at least 2 Troops and 2 Police." shaded_capability EVENT 2 log "Sweep costs 1 Resource per space." capability SHADED 2 log "Sweep Operations may target only 1 space per card." shaded_capability EVENT 3 log "Assault costs 1 Resource per space." capability SHADED 3 log "Assault Operations may target only 1 space per card." shaded_capability EVENT 4 prompt "Select unsabotaged pipelines." space 3 is_unsabotaged_pipeline(s) auto_resources GOVT (2*data.spaces[game.vm.s].econ) endspace SHADED 4 prompt "Sabotage the 3 pipelines with highest value and no cubes." space 3 is_highest_value_pipeline_without_cubes(s) sabotage endspace EVENT 5 prompt "Place Police onto Pipelines." space 1 is_pipeline(s) auto_place GOVT POLICE mark_space endspace space 1 is_pipeline(s) auto_place GOVT POLICE mark_space endspace space 1 is_pipeline(s) auto_place GOVT POLICE mark_space endspace space 1 is_pipeline(s) auto_place GOVT POLICE mark_space endspace space 1 is_pipeline(s) auto_place GOVT POLICE mark_space endspace space 1 is_pipeline(s) auto_place GOVT POLICE mark_space endspace prompt "Flip N Guerrillas there or adjacent to Active." piece 3 is_any_guerrilla(p) && is_underground(p) && is_with_or_adjacent_to_mark(s, game.vm.m) activate endpiece SHADED 5 prompt "Shift space adjacent to a 3-Econ LoC by 2 levels toward Active Opposition." space 1 is_adjacent_to_3econ_loc(s) shift_opposition shift_opposition endspace EVENT 6 prompt "Select Opposition or Neutral Departments adjacent to Sabotage." space 2 (!is_support(s) && is_adjacent_to_sabotage(s)) set_passive_support endspace SHADED 6 prompt "Sabotage a pipeline." space 1 is_pipeline(s) && !has_sabotage(s) sabotage endspace prompt "Shift an Adjacent Department." space 1 is_pop(s) && is_dept(s) && is_adjacent(s, game.vm.s) shift_opposition endspace EVENT 7 log "Each Sabotage phase, Govt may remove 1-3 Terror or Sabotage." capability SHADED 7 log "Sabotage phase - Sabotage LoCs with any Guerrillas equal to cubes." shaded_capability EVENT 8 current GOVT free_air_strike free_air_strike free_air_strike SHADED 8 resources GOVT -9 EVENT 9 log "Assault treats Mountain as City." capability SHADED 9 log "Assault in Mountain removes only 1 piece for 4 Troops." shaded_capability EVENT 10 log "Air Lift moves any number of Troops." capability SHADED 10 log "Air Lift moves only 1 Troops cube." shaded_capability EVENT 11 log "1 Police may enter each Sweep space." capability SHADED 11 log "Operation Activates Guerrillas via Troops or Police, not both." shaded_capability EVENT 12 resources GOVT (Math.min(game.aid,20)) aid 10 SHADED 12 log "No Air Strike or Activation by Patrlo until next Propaganda." momentum EVENT 13 log "Patrol conducts a free Assault in each LoC." capability SHADED 13 log "Patrols do not conduct a free Assault." shaded_capability EVENT 14 current GOVT space 1 is_dept(s) && !is_farc_zone(s) auto_place GOVT BASE auto_place GOVT TROOPS auto_place GOVT TROOPS auto_place GOVT TROOPS endspace SHADED 14 space 1 is_dept(s) piece 1 is_piece_in_event_space(p) && is_govt_base(p) remove endpiece piece 1 is_piece_in_event_space(p) && (is_troops(p) || is_police(p)) remove endpiece endspace EVENT 15 roll resources GOVT (game.vm.die*4) SHADED 15 space 1 is_city() && (is_neutral(s) || is_passive_support(s)) set_passive_opposition endspace EVENT 16 prompt "Select each Mountain Department." space 0 is_mountain(s) auto_resources (faction_with_most_pieces(game.vm.s)) 5 endspace SHADED 16 resources GOVT -10 EVENT 17 resources GOVT (Math.min(game.aid,20)) aid 6 SHADED 17 log "No Sweep or Assault in Depts until next Propaganda." momentum EVENT 18 resources GOVT (Math.min(game.aid,20)) aid 20 SHADED 18 resources GOVT -6 roll aid (-game.vm.die) EVENT 19 if game.current === GOVT # TODO: can_sweep || can_assault space 0 has_cube(s) && has_enemy_piece(s) free_sweep_assault endspace else # TODO: can_attack || can_terror space 0 has_piece(s, game.current, GUERRILLA) free_attack_terror endspace endif EVENT 20 current GOVT piece_undo_opt 6 is_farc_guerrilla(p) space_no_undo 1 is_adjacent(s, piece_space(game.vm.p)) move endspace endpiece SHADED 20 current FARC free_march piece_undo_opt 3 is_farc_guerrilla(p) && is_active(p) underground endpiece EVENT 21 resources FARC -6 piece_undo 1 is_farc_base(p) remove endpiece SHADED 21 resources FARC 6 space 1 (is_city(s) || is_dept(s)) && can_stack_base(s, FARC) auto_place FARC BASE endspace EVENT 22 space 1 is_opposition(s) set_neutral endspace SHADED 22 log "May Agitate also in up to 3 spaces with FARC piece and no Govt Control." momentum EVENT 23 space 1 is_dept(s) piece 0 is_piece_in_event_space(p) && is_any_guerrilla(p) && is_underground(p) activate endpiece piece 0 is_piece_in_event_space(p) && is_cartels_base(p) remove endpiece endspace SHADED 23 current GOVT piece_undo 3 is_troops(p) remove endpiece ineligible GOVT ineligible FARC EVENT 24 space 1 is_city(s) set_active_support endspace ineligible FARC SHADED 24 space 1 has_farc_piece(s) piece 2 is_piece_in_event_space(p) && is_troops(p) remove endpiece endspace space 1 is_city(s) && is_support(s) set_neutral endspace EVENT 25 space 1 is_mountain(s) piece 0 is_piece_in_event_space(p) && is_farc_piece(p) remove endpiece endspace SHADED 25 space 1 s === ANTIOQUIA || (is_dept(s) && is_adjacent(ANTIOQUIA, s)) place FARC [BASE,GUERRILLA] place FARC [BASE,GUERRILLA] place FARC [BASE,GUERRILLA] endspace EVENT 26 current CARTELS space 0 has_cartels_guerrilla(s) && has_farc_piece(s) free_attack endspace SHADED 26 prompt "Transfer 6 Resources from Cartels to FARC for each space with CB and FG." space 0 has_cartels_base(s) && has_farc_guerrilla(s) transfer CARTELS FARC 6 endspace EVENT 27 current GOVT free_govt_special_activity free_govt_special_activity free_govt_special_activity SHADED 27 log "Until next Propaganda, no Govt Special Activities where Guerrilla." momentum EVENT 28 space 1 is_next_to_venezuela(s) piece_opt 3 is_piece_in_event_space(p) && is_insurgent_piece(p) remove endpiece endspace SHADED 28 space 1 is_dept(s) && is_next_to_venezuela(s) && can_stack_base(s, FARC) auto_place FARC BASE endspace space 0 is_loc(s) && is_adjacent(CUCUTA, s) && is_empty(s) sabotage endspace EVENT 29 current GOVT space 1 has_farc_piece(s) && has_govt_piece(s) piece 0 is_piece_in_event_space(p) && is_farc_guerrilla(p) && is_underground(p) activate endpiece free_assault endspace SHADED 29 current [FARC,AUC] piece_undo 2 is_piece(p, game.current, GUERRILLA) && has_enemy_piece(s) free_ambush underground endpiece EVENT 30 space 1 is_farc_zone(s) remove_farc_zone piece 1 is_piece_in_event_space(p) && is_farc_base(p) remove endpiece endspace SHADED 30 current GOVT place_farc_zone EVENT 31 space 2 is_city(s) shift_support endspace space 1 is_dept(s) shift_support endspace SHADED 31 space 3 is_passive_opposition(s) set_active_opposition endspace EVENT 32 space 2 is_neutral(s) || is_passive_opposition(s) set_passive_support endspace SHADED 32 resources FARC 12 EVENT 33 space 1 is_next_to_ecuador(s) piece_opt 3 is_piece_in_event_space(p) && is_insurgent_piece(p) remove endpiece endspace SHADED 33 capability space 1 s === ECUADOR place (game.current) [BASE,GUERRILLA,TROOPS,POLICE] place (game.current) [BASE,GUERRILLA,TROOPS,POLICE] endspace EVENT 34 # -1 = all insurgent factions resources -1 -5 SHADED 34 current [FARC,AUC,CARTELS] space 1 is_zero_pop_dept(s) auto_place (game.current) GUERRILLA auto_place (game.current) GUERRILLA auto_place (game.current) BASE endspace EVENT 35 space 1 is_dept(s) piece 0 is_piece_in_event_space(p) && is_cartels_base(p) remove auto_place GOVT POLICE endpiece endspace aid 3 SHADED 35 space 1 is_dept(s) && has_cartels_base(s) shift_opposition shift_opposition endspace EVENT 36 eligible (game.current) asm game.vm.m = game.current current GOVT place_farc_zone asm game.current = game.vm.m prompt "Shift adjacent spaces toward Active Support." space 2 is_pop(s) && !is_active_support(s) && is_adjacent(game.vm.farc_zone, s) shift_support endspace EVENT 37 current GOVT space 0 has_cube(s) && has_farc_piece(s) free_sweep_assault_farc endspace SHADED 37 current AUC free_march space 1 set_has(game.vm.m, s) && has_underground_guerrilla(s, AUC) piece 1 is_piece_in_event_space(p) && is_auc_guerrilla(p) && is_underground(p) free_ambush endpiece endspace EVENT 38 space_opt 3 (has_cube(s) || is_support(s)) && has_active_guerrilla(s, AUC) piece 0 is_piece_in_event_space(p) && is_active_guerrilla(p, AUC) remove endpiece endspace SHADED 38 space 0 has_cube(s) || is_support(s) piece 0 is_piece_in_event_space(p) && is_active_guerrilla(p, AUC) underground endpiece endspace EVENT 39 prompt "Place Police into each of 6 Departments." # TODO: can_place space 6 is_dept(s) && !is_farc_zone(s) auto_place GOVT POLICE endspace SHADED 39 # UPTO prompt "In up to 3 Depts, replace 1 Police with AUC Guerrilla." space_opt 3 is_dept(s) && has_police(s) piece 1 is_piece_in_event_space(p) && is_police(p) remove auto_place AUC GUERRILLA endpiece endspace EVENT 40 prompt "Replace 3 AUC Guerrillas with Police." piece_undo 3 is_auc_guerrilla(p) set_piece_space remove auto_place GOVT POLICE endpiece SHADED 40 space 1 is_dept(s) && has_auc_piece(s) && has_cube(s) prompt "Move all cubes to any Cities." piece_no_undo 0 is_piece_in_event_space(p) && is_cube(p) save_space space_no_undo 1 is_city(s) move endspace restore_space endpiece endspace prompt "Place AUC pieces in Cities." space 2 is_city(s) place AUC [BASE,GUERRILLA] endspace EVENT 41 resources AUC -6 space 1 has_auc_piece(s) piece 0 is_piece_in_event_space(p) && is_auc_piece(p) remove endpiece endspace SHADED 41 prompt "Select each space with AUC and Cartels pieces." space 0 has_auc_piece(s) && has_cartels_piece(s) auto_resources AUC 3 endspace EVENT 42 space 2 is_neutral(s) set_passive_support endspace resources GOVT 3 SHADED 42 log (`No Sweep or Assault against ${faction_name[game.current]} until next Propaganda.`) asm game.senado = game.current momentum EVENT 43 space 1 is_dept(s) && has_troops(s) terror terror piece 0 is_piece_in_event_space(p) && is_farc_base(p) remove endpiece endspace SHADED 43 space 1 is_dept(s) && has_troops(s) terror terror endspace aid -9 EVENT 44 space 1 is_city(s) && !is_opposition(s) set_active_support endspace resources GOVT 3 SHADED 44 space 1 is_city(s) && is_support(s) set_neutral endspace resources GOVT -3 EVENT 45 space 0 has_cube(s) && has_terror(s) shift_support endspace SHADED 45 prompt "Select each space with AUC pieces." space 0 has_auc_piece(s) aid -1 endspace roll resources GOVT (-game.vm.die) EVENT 46 current [FARC,AUC,CARTELS] prompt "Execute free Terror with any Guerrilla." space 1 has_piece(s, game.current, GUERRILLA) piece 1 is_piece_in_event_space(p) && is_piece(p, game.current, GUERRILLA) free_terror terror terror_aid_cut endpiece prompt "Remove enemy pieces." piece 2 is_piece_in_event_space(p) && is_enemy_piece(p) remove endpiece if is_pop(game.vm.s) set_passive_support_or_passive_opposition endif endspace EVENT 47 piece 0 is_auc_guerrilla(p) && is_underground(p) activate endpiece space 0 has_police(s) && has_auc_piece(s) free_assault_auc endpiece SHADED 47 current AUC set_space CUCUTA prompt "Place AUC Guerrillas in Cúcuta." space 1 s === CUCUTA auto_place AUC GUERRILLA auto_place AUC GUERRILLA prompt "Execute free Terror in Cúcuta." piece 1 is_piece_in_event_space(p) && is_auc_guerrilla(p) && is_underground(p) free_terror terror_aid_cut endpiece endspace prompt "Flip any AUC Guerrillas Underground." piece 2 is_auc_guerrilla(p) && is_active(p) underground endpiece EVENT 48 prompt "Remove Opposition or FARC Base adjacent to 3-Econ pipeline." select_space_or_piece (s)=>(is_opposition(s)&&is_adjacent_to_3econ_pipeline(s)) (p,s)=>(is_farc_base(p)&&is_adjacent_to_3econ_pipeline(s)) if game.vm.p >= 0 remove endif if game.vm.s >= 0 shift_support endif SHADED 48 space 2 s !== BOGOTA && is_city(s) shift_opposition endspace EVENT 49 remove_permanently AUC GUERRILLA remove_permanently AUC GUERRILLA remove_permanently AUC GUERRILLA SHADED 49 space 1 is_dept(s) auto_place AUC GUERRILLA auto_place AUC BASE endspace EVENT 50 # UPTO current GOVT space 1 is_dept(s) && !is_farc_zone(s) auto_place GOVT POLICE endspace space_opt 1 is_dept(s) && !is_farc_zone(s) auto_place GOVT POLICE endspace space_opt 1 is_dept(s) && !is_farc_zone(s) auto_place GOVT POLICE endspace SHADED 50 # TODO: remove 2 / replace 2 / remove 1 + replace 1 ? piece 2 is_police(p) set_piece_space remove place_opt AUC GUERRILLA endpiece EVENT 51 if is_any_pipeline_sabotaged() prompt "Remove all Pipeline Sabotage." space 0 is_pipeline(s) && has_sabotage(s) remove_sabotage endspace return endif resources GOVT 12 SHADED 51 prompt "Sabotage Pipelines with or adjacent to FARC Guerrillas." space 3 is_pipeline(s) && is_with_or_adjacent_to_farc_guerrilla(s) sabotage endspace EVENT 52 space 2 is_city(s) || is_mountain(s) shift_support endspace SHADED 52 space 1 has_auc_piece(s) && can_stack_base(s, AUC) auto_place AUC BASE endspace resources AUC (count_pieces_on_map(AUC,BASE)) EVENT 53 current [FARC,AUC,CARTELS] prompt "Select Departments to move Guerrillas between." space 2 is_dept(s) mark_space endspace prompt "Move Guerrillas between Departments." piece 2 is_any_guerrilla(p) && (s === game.vm.m[0] || s === game.vm.m[1]) if piece_space(game.vm.p) === game.vm.m[0] set_space (game.vm.m[1]) else set_space (game.vm.m[0]) endif move underground endpiece EVENT 54 # UPTO piece_opt 2 is_any_guerrilla(p) set_piece_space remove if piece_faction(game.vm.p) === FARC place_opt [AUC,CARTELS] GUERRILLA endif if piece_faction(game.vm.p) === AUC place_opt [FARC,CARTELS] GUERRILLA endif if piece_faction(game.vm.p) === CARTELS place_opt [FARC,AUC] GUERRILLA endif endpiece EVENT 55 shipment 2 true remove_shipment endpiece prompt "Remove N Cartels Guerrillas." piece 5 is_cartels_guerrilla(p) remove endpiece aid 3 SHADED 55 prompt "Shift N spaces with Cartels pieces 1 level toward Active Opposition." space 3 has_cartels_piece(s) && !is_active_opposition(s) shift_opposition endspace EVENT 56 transfer CARTELS GOVT 15 SHADED 56 piece 0 is_cartels_piece(p) && is_city(s) auto_resources CARTELS 2 endpiece space 2 is_city(s) && can_stack_base(s, CARTELS) auto_place CARTELS BASE endspace EVENT 57 prompt "Replace Cartels pieces with Police." piece_opt 3 is_cartels_piece(p) set_piece_space remove auto_place GOVT POLICE endpiece SHADED 57 prompt "In 2 spaces replace 1 Police with any Cartels piece." space 2 has_police(s) piece 1 is_piece_in_event_space(p) && is_police(p) remove place CARTELS [BASE,GUERRILLA] endpiece endspace EVENT 58 resources CARTELS -6 piece 0 is_cartels_guerrilla(p) remove endpiece SHADED 58 current CARTELS prompt "Relocate up to 4 Police to any spaces." piece_opt 4 is_police(p) space 1 is_space(s) move endspace endpiece EVENT 59 current GOVT piece 0 is_cartels_guerrilla(p) && is_underground(p) activate endpiece space 0 can_assault(s, CARTELS) free_assault_cartels endspace SHADED 59 current CARTELS prompt "Flip all Cartels Guerrillas underground." piece 0 is_cartels_guerrilla(p) && is_active(p) underground endpiece prompt "Relocate Cartels Guerrillas anywhere." piece_opt 3 is_cartels_guerrilla(p) space 1 is_space(s) move endspace endpiece EVENT 60 space 2 has_cartels_piece(s) && ((is_city(s) && (game.vm.ss.length === 0 || is_city(game.vm.ss[0]))) || (is_dept(s) && game.vm.ss.length === 0)) piece 0 is_piece_in_event_space(p) && is_cartels_piece(p) remove endpiece endspace resources GOVT 6 SHADED 60 current CARTELS space 2 is_city(s) && can_stack_base(s, CARTELS) auto_place CARTELS BASE endspace # TODO: can_bribe space 1 is_space(s) free_bribe endspace EVENT 61 space 1 is_city(s) piece 0 is_piece_in_event_space(p) && is_cartels_piece(p) remove endpiece endspace resources CARTELS -6 SHADED 61 space 3 !has_cartels_piece(s) && can_stack_base(s, CARTELS) auto_place CARTELS BASE endspace EVENT 62 piece_opt 3 is_insurgent_piece(p) && is_zero_pop_forest(s) remove endpiece SHADED 62 space 3 s === GUAINIA || s === VAUPES || s === AMAZONAS auto_place CARTELS BASE endspace EVENT 63 current CARTELS space 0 has_cartels_guerrilla(s) piece 0 is_piece_in_event_space(p) && is_cartels_guerrilla(p) && count_pieces(s, CARTELS, GUERRILLA) > 1 remove endpiece piece 1 is_piece_in_event_space(p) && is_cartels_guerrilla(p) free_terror endpiece endspace terror_aid_cut ineligible CARTELS EVENT 64 prompt "Place Shipments with FARC Guerrillas." piece 2 is_farc_guerrilla(p) && has_cartels_base(s) && has_available_shipment() place_shipment endpiece SHADED 64 prompt "Select each Cartels Base in a City." piece 0 is_cartels_base(p) && is_city(s) auto_resources CARTELS 2 endpiece prompt "Select each Cartels Base in a Dept." piece 0 is_cartels_base(p) && is_dept(s) auto_resources CARTELS 1 endpiece EVENT 65 space 1 is_mountain(s) place_or_remove_shipment place_or_remove_insurgent_base endspace EVENT 66 piece 3 is_cartels_base(p) && is_forest(s) remove endpiece SHADED 66 space 0 is_forest(s) && has_cartels_base(s) && can_stack_base(s, CARTELS) auto_place CARTELS BASE endspace EVENT 67 resources CARTELS -20 SHADED 67 log "This Resources phase, Cartels add Resources equal to 4 x Bases." momentum EVENT 68 prompt "Remove 2 Cartels pieces or up to 2 Shipments in coastal spaces." select_shipment_or_cartels_piece_in_coastal_space if game.vm.p >= 0 remove piece 1 is_coastal_space(s) && is_cartels_piece(p) remove endpiece endif if game.vm.sh >= 0 remove_shipment shipment_opt 1 is_coastal_space(s) remove_shipment endshipment endif SHADED 68 prompt "Select each Cartels piece in coastal spaces." piece 0 is_cartels_piece(p) && is_coastal_space(s) auto_resources CARTELS 2 endpiece EVENT 69 prompt "Select source space." if game.current === GOVT space 1 has_cube(s) mark_space endspace else space 1 has_piece(s, game.current, GUERRILLA) mark_space endspace endif prompt "Select destination space." if game.current === GOVT space 1 (s !== game.vm.m[0]) && !is_farc_zone(s) && is_within_adjacent_depts(s, game.vm.m[0], 3) prompt "Move cubes to destination." piece_opt 0 (s === game.vm.m[0]) && is_cube(p) move endpiece # TODO: free sweep move or only flip? free_train_sweep_assault endspace else space 1 (s !== game.vm.m[0]) && is_within_adjacent_depts(s, game.vm.m[0], 3) prompt "Move Guerrillas to destination." piece_opt 0 console.log("CHECK",p,s) || ((s === game.vm.m[0]) && is_piece(p, game.current, GUERRILLA)) move endpiece free_rally_attack_terror endspace endif EVENT 70 prompt "Select each Forest without Guerrillas." space_no_undo 0 is_forest(s) && !has_any_guerrilla(s) auto_resources GOVT 6 endspace SHADED 70 current [FARC,AUC,CARTELS] space 0 is_forest(s) && has_piece(s, game.current, GUERRILLA) piece 1 is_piece_in_event_space(p) && is_piece(p, game.current, GUERRILLA) free_terror auto_resources (game.current) 3 endpiece endspace terror_aid_cut EVENT 71 prompt "Remove a Guerrilla from Chocó." set_space CHOCO piece 1 is_any_guerrilla(p) && s === CHOCO remove resources (piece_faction(game.vm.p)) -5 endpiece SHADED 71 capability space 1 s === PANAMA place (game.current) BASE place_opt (game.current) BASE endspace EVENT 72 space 2 has_cartels_guerrilla(s) piece 0 is_piece_in_event_space(p) && is_cartels_guerrilla(p) remove place [FARC,AUC] GUERRILLA endpiece endspace SHADED 72 prompt "Place all available Cartels Guerrillas into spaces with Cartels Bases." if count_pieces_on_map(CARTELS, BASE) > 0 while has_piece(AVAILABLE, CARTELS, GUERRILLA) space 1 has_cartels_base(s) auto_place CARTELS GUERRILLA endspace endwhile endif