#Written by Killerrabbit and SWF541

#for not oversizing the array for having both 2000 and 2017 values
init_influence = {
	clear_array = influence_array_val
	clear_array = influence_array_calc
	clear_array = influence_array
}

startup_influence = {
	sort_influence = yes #the rest is on_startup
}

recalculate_influence = {
	hidden_effect = {
		sort_influence = yes
		calculate_influence_percentage = yes
	}
}

sort_influence = {
	resize_temp_array = { 
		array = influence_array_val_temp #values
		size = influence_array_val^num
	}
	resize_temp_array = { 
		array = influence_array_temp #tags
		size = influence_array_val^num
	}
	for_loop_effect = {
		end = influence_array_val^num
		value = v
		find_highest_in_array = {
			array = influence_array_val 
			value = max
			index = max_index
		}
		set_temp_variable = { influence_array_val_temp^v = max } #sets biggest at the earliest available position
		set_temp_variable = { influence_array_temp^v = influence_array^max_index } #sets biggest TAG at the earliest available position
		set_variable = { influence_array_val^max_index = -1 } #removes it from selection
	}
	clear_array = influence_array_val
	clear_array = influence_array_calc
	clear_array = influence_array
	set_variable = { influence_total = 0 }
	#restores destroyed arrays in the above process
	for_each_loop = {
		array = influence_array_val_temp
		add_to_array = { influence_array_val = v  }
		add_to_array = { influence_array_calc = v }
		add_to_variable = { influence_total = v }
	}
	for_each_loop = {
		array = influence_array_temp
		add_to_array = { influence_array = v  }
	}
	clear_temp_array = influence_array_val_temp
	clear_temp_array = influence_array_temp
	set_variable = { domestic_influence_amount_calc = domestic_influence_amount }
	add_to_variable = { influence_total = domestic_influence_amount_calc }
	
	for_each_loop = {
		array = influence_array_calc
		round_variable = influence_array_calc^i
		divide_variable = { influence_array_calc^i = influence_total }
		clamp_variable = { var = influence_array_calc^i min = 0 max = 1 }
		clamp_variable = { var = influence_array_val^i min = 0 max = influence_total }
	}
	
	round_variable = domestic_influence_amount_calc
	divide_variable = { domestic_influence_amount_calc = influence_total }
	clamp_variable = { var = domestic_influence_amount_calc min = 0 max = 1 }
	clamp_variable = { var = domestic_influence_amount min = 0 max = influence_total }
	
	#hostile_influence_target = yes
}

calculate_influence_percentage = {

	set_temp_variable = { influence_democratic = 0 }
	set_temp_variable = { influence_neutrality = 0 }
	set_temp_variable = { influence_communism = 0 }
	set_temp_variable = { influence_nationalist = 0 }
	set_temp_variable = { influence_fascism = 0 }

	for_loop_effect = {
		end = influence_array_calc^num
		if = {
			limit = { var:influence_array^v = { has_government = democratic } }
			add_to_temp_variable = { influence_democratic = influence_array_calc^v }	
		}
		else_if = {
			limit = { var:influence_array^v = { has_government = neutrality } }
			add_to_temp_variable = { influence_neutrality = influence_array_calc^v }	
		}
		else_if = {
			limit = { var:influence_array^v = { has_government = communism } }
			add_to_temp_variable = { influence_communism = influence_array_calc^v }	
		}
		else_if = {
			limit = { var:influence_array^v = { has_government = nationalist } }
			add_to_temp_variable = { influence_nationalist = influence_array_calc^v }	
		}
		else_if = {
			limit = { var:influence_array^v = { has_government = fascism } }
			add_to_temp_variable = { influence_fascism = influence_array_calc^v }	
		}
	}
	
	### see ideology_drifts.txt: ###
	clear_influence_count_ideas = yes

	if = { limit = { check_variable = { influence_democratic > 0.04 } } reset_democratic_influence_ideas = yes }
	if = { limit = { check_variable = { influence_neutrality > 0.04 } } reset_neutrality_influence_ideas = yes }
	if = { limit = { check_variable = { influence_communism > 0.04 } } reset_communism_influence_ideas = yes }
	if = { limit = { check_variable = { influence_nationalist > 0.04 } } reset_nationalist_influence_ideas = yes }
	if = { limit = { check_variable = { influence_fascism > 0.04 } } reset_fascism_influence_ideas = yes }
}

### Assign target for hostile influence ###

hostile_influence_target = {
	
}

### Actions ###

spread_influence = {
			
	PREV = { add_political_power = -80 }
	
	set_temp_variable = { influence_gain = PREV.influence_multiplier } #from global rank idea
	multiply_temp_variable = { influence_gain = 10 } #base gain
	for_loop_effect = {
		end = influence_array^num
		value = v
		if = {
			limit = {
				check_variable = { influence_array^v = PREV }
			}
			add_to_variable = { influence_array_val^v = influence_gain }
			set_country_flag = found
		}
	}
	if = {
		limit = { NOT = { has_country_flag = found } }
			add_to_array = { influence_array = PREV.id }
			add_to_array = { influence_array_val = influence_gain }
	}
	clr_country_flag = found
	recalculate_influence = yes
}

make_puppet_action = {
	#eventually remove explotation idea (shouldn't double up)
	for_loop_effect = {
		end = influence_array^num
		value = v

		meta_effect = {
			text = {
				if = {
					limit = { has_idea = [THISTAG]_tribute_idea }
					remove_ideas = [THISTAG]_tribute_idea
				}
			}
			THISTAG = "[?var:influence_array^v.GetTag]"
		}
	}
	
	PREV = {
		set_autonomy = {
			target = PREV
			autonomy_state = autonomy_satellite_state
			freedom_level = 0.5
		}
		add_named_threat = {
			threat = 5
			name = created_puppet_loc
		}
	}
	every_neighbor_country = {
		add_opinion_modifier = {
			target = PREV
			modifier = puppeted_neighbor
		}
	}
}

economic_exploitation_action = {
	
	meta_effect = {
		text = {
			add_ideas = [ROOTTAG]_tribute_idea
		}
		ROOTTAG = "[?var:influence_array^0.GetTag]"
	}
	
	#remove 10% influence
	set_temp_variable = { influence_reduce = influence_total } #from global rank idea
	multiply_temp_variable = { influence_reduce = 0.1 } #10%
	for_loop_effect = {
		end = influence_array^num
		value = v
		if = {
			limit = {
				check_variable = { influence_array^v = PREV }
			}
			subtract_from_variable = { influence_array_val^v = influence_reduce }
		}
	}
	recalculate_influence = yes
	
	#opinions
	add_opinion_modifier = {
		target = PREV
		modifier = exploited_us
	}
	every_neighbor_country = {
		add_opinion_modifier = {
			target = PREV
			modifier = exploited_neighbor
		}
	}
}


manipulate_politics_action = {				
	#Add +5 to our outlook
	if = {
		limit = {
			PREV = { has_government = fascism }
		}
		add_popularity = {
			ideology = fascism
			popularity = 0.05
		}
	}
	if = {
		limit = {
			PREV = { has_government = neutrality }
		}
		add_popularity = {
			ideology = neutrality
			popularity = 0.05
		}
	}
	if = {
		limit = {
			PREV = { has_government = communism }
		}
		add_popularity = {
			ideology = communism
			popularity = 0.05
		}
	}
	if = {
		limit = {
			PREV = { has_government = nationalist }
		}
		add_popularity = {
			ideology = nationalist
			popularity = 0.05
		}
	}
	if = {
		limit = {
			PREV = { has_government = democratic }
		}
		add_popularity = {
			ideology = democratic
			popularity = 0.05
		}
	}
	
	#add +5 to our party
	
	for_each_loop = {
		array = PREV.ruling_party
		value = v
		add_to_variable = { party_pop_array^v = 0.05 }
	}
	
	#remove 10% influence
	set_temp_variable = { influence_reduce = influence_total } #from global rank idea
	multiply_temp_variable = { influence_reduce = 0.1 } #10%
	for_loop_effect = {
		end = influence_array^num
		value = v
		if = {
			limit = {
				check_variable = { influence_array^v = PREV }
			}
			subtract_from_variable = { influence_array_val^v = influence_reduce }
		}
	}
	recalculate_influence = yes
	
	#reduce relations if different gov
	if = {
		limit = {
			NOT = { is_same_government_PREV = yes }
		}
		add_opinion_modifier = {
				target = PREV
				modifier = supported_opposition
		}
	}
}
