

update_operation_ai = {
	# # old target is no longer relevant
	# if = {
	# 	limit = {
	# 		NOT = { check_variable = { generic_operation_target = 0 } }
	# 		var:generic_operation_target = {
	# 			OR = {
	# 				exists = no
	# 				has_capitulated = yes
	# 				is_ally_with = PREV
	# 			}
	# 		}
	# 	}
	# 	set_variable = { generic_operation_target = 0 }
	# }


	# # pick an operation target
	# get_highest_scored_country = {
	# 	scorer = ai_generic_operation_target_scorer
	# 	var = generic_operation_target
	# }
	
	# # this variable will be our limiting factor for actually doing operations
	
	# # check if we have any operatives that are captured
	# # find the captor so they can be rescued
	# set_temp_variable = { captor = 0 }
	
	# every_operative = {
	# 	limit = { is_operative_captured = yes }
	# 	add_to_temp_variable = { min_needed_operative_for_operations = 1 }
	# 	if = {
	# 		limit = { check_variable = { captor = 0 } }
	# 		set_temp_variable = { captor = operative_captor }
	# 	}
	# }
	# set_variable = { rescue_operative_from = 0 }
	# if = {
	# 	limit = { NOT = { check_variable = { captor = 0 } } }
	# 	set_variable = { rescue_operative_from = captor } # used in ai strat generic_operation_ai_rescue
	# 	add_to_temp_variable = { min_needed_operative_for_operations = 2 }
	# }
	
	
	# # if we have too few of operatives clear operative target
	# set_temp_variable = { t = min_needed_operative_for_operations }
	# subtract_from_temp_variable = { t = 2 }
	# if = {
	# 	limit = { num_of_operatives < t }
	# 	set_variable = { generic_operation_target = 0 }
	# }
	
	# if = {
	# 	# if found a target pick an operation
	# 	limit = { 
	# 		NOT = { check_variable = { generic_operation_target = 0 } }
	# 		# if we are already preparing for current one no need to recalc
	# 		OR = {
	# 			check_variable = { generic_operation_type_to_run = 0 }
	# 			NOT = { 
	# 				is_preparing_operation = {
	# 					target = var:generic_operation_target
	# 					operation = var:generic_operation_type_to_run
	# 				}
	# 			}
	# 		}
	# 	}
		
	# 	if = {
	# 		limit = { 
	# 			num_of_operatives > min_needed_operative_for_operations
	# 		}
			
	# 		# these two arrays are filled with operation tokens and corresponding score
	# 		clear_temp_array = operation_types
	# 		clear_temp_array = operation_types_scores
			
	# 		# civilian infiltration
	# 		set_temp_variable = { score = 100 }
	# 		add_to_temp_array = { operation_types = token:operation_infiltrate_civilian }
	# 		add_to_temp_array = { operation_types_scores = score }
			
	# 		# army infiltration
	# 		set_temp_variable = { score = 50 }
	# 		add_to_temp_variable = { score = num_armies }
	# 		clamp_temp_variable = { var = score max = 180 }
	# 		add_to_temp_array = { operation_types = token:operation_infiltrate_armed_forces_army }
	# 		add_to_temp_array = { operation_types_scores = score }
			
	# 		# air infiltration
	# 		set_temp_variable = { score = 50 }
	# 		add_to_temp_variable = { t = num_deployed_planes }
	# 		divide_temp_variable = { t = 10 }
	# 		add_to_temp_variable = { score = t }
	# 		clamp_temp_variable = { var = score max = 180 }
	# 		add_to_temp_array = { operation_types = token:operation_infiltrate_armed_forces_airforce }
	# 		add_to_temp_array = { operation_types_scores = score }
			
	# 		# navy infiltration
	# 		var:generic_operation_target = {
	# 			if = {
	# 				limit = { 
	# 					has_navy_size = { size > 0 } 
	# 					PREV = {
	# 						has_navy_size = { size > 0 } 
	# 					}
	# 				}
	# 				set_temp_variable = { score = num_ships }
					
	# 				set_temp_variable = { t = num_ships_with_type@carrier }
	# 				multiply_temp_variable = { t = 20 }
	# 				add_to_temp_variable = { score = t }
					
	# 				set_temp_variable = { t = num_ships_with_type@capital }
	# 				multiply_temp_variable = { t = 10 }
	# 				add_to_temp_variable = { score = t }
					
	# 				clamp_temp_variable = { var = score max = 180 }
					
	# 				add_to_temp_array = { operation_types = token:operation_infiltrate_armed_forces_navy }
	# 				add_to_temp_array = { operation_types_scores = score }
	# 			}
	# 		}
			
	# 		# get token for boost resistance
	# 		var:generic_operation_target = {
	# 			# only do on fascist
	# 			if = {
	# 				limit = { 
	# 					PREV = {
	# 						NOT = { tag = ENG } # ENG already does it against GER
	# 						NOT = { has_government = fascism } 
	# 						NOT = {
	# 							has_operation_token = {
	# 								tag = var:generic_operation_target
	# 								token = token_resistance_contacts
	# 							}
	# 						}
	# 					}
	# 					has_government = fascism
	# 					check_variable = { occupied_countries^num > 0 }
	# 					has_added_tension_amount > 20
	# 				}
					
	# 				# ~number of occupied_states
	# 				set_temp_variable = { t = 1 }
	# 				add_to_temp_variable = { t = num_controlled_states }
	# 				subtract_from_temp_variable = { t = num_owned_states }
	# 				clamp_temp_variable = { var = t min = 1 }
					
	# 				set_temp_variable = { score = t }
	# 				multiply_temp_variable = { score = 15 }
	# 				add_to_temp_variable = { score = 50 }
	# 				clamp_temp_variable = { var = score max = 200 }
					
	# 				add_to_temp_array = { operation_types = token:operation_make_resistance_contacts }
	# 				add_to_temp_array = { operation_types_scores = score }
	# 			}
	# 		}
	# 		# boost resistance
	# 		if = {
	# 			limit = { 
	# 				has_operation_token = {
	# 					tag = var:generic_operation_target
	# 					token = token_resistance_contacts
	# 				}
	# 			}
			
	# 			add_to_temp_array = { operation_types = token:operation_boost_resistance }
	# 			add_to_temp_array = { operation_types_scores = 1000 }
	# 		}
			
	# 		for_each_loop = {
	# 			array = operation_types
				
	# 			# randomization by half
	# 			set_temp_variable = { t = random }
	# 			multiply_temp_variable = { t = 0.5 }
	# 			add_to_temp_variable = { t = 0.5 }
	# 			multiply_temp_variable = { operation_types_scores^i = t }
				
	# 			if = {
	# 				limit = {
	# 					num_finished_operations = {
	# 						target = var:generic_operation_target
	# 						operation = var:v
	# 						value > 0
	# 					}
						
	# 					# lower score if we have a finished operation
	# 					multiply_temp_variable = { operation_types_scores^i = 0.5 }
								
	# 					# cancel if more than 1 is executed
	# 					if = {
	# 						limit = {
	# 							num_finished_operations = {
	# 								target = var:generic_operation_target
	# 								operation = var:v
	# 								value > 1
	# 							}
								
	# 							set_temp_variable = { operation_types_scores^i = -1 }
	# 						}
	# 					}
	# 				}
	# 			}
	# 		}
			
	# 		# highest score will be selected
	# 		find_highest_in_array = {
	# 			array = operation_types_scores
	# 		}
	# 		if = {
	# 			limit = { check_variable = { v > 0 } }
	# 			set_variable = { generic_operation_type_to_run = operation_types^i } # used in ai strat generic_operation_ai
	# 		}
	# 	}
	# 	else =
	# 	{
	# 		set_variable = { generic_operation_type_to_run = 0 }
	# 	}
	# }
}