﻿# Adds $FLAG$ to the character if a player
add_achievement_flag_effect = {
	if = {
		limit = {
			is_ai = no
		}
		add_character_flag = $FLAG$
	}
}

# Adds $VALUE$ to the character $VARIABLE$ if a player, sets to zero first if not already a present variable
add_achievement_variable_effect = {
	if = {
		limit = {
			is_ai = no
		}
		if = {
			limit = {
				NOT = { has_variable = $VARIABLE$ }
			}
			set_variable = {
				name = $VARIABLE$
				value = 0
			}
		}
		change_variable = {
			name = $VARIABLE$
			add = $VALUE$
		}
	}
}

# Sets $VALUE$ to the global variable named $VARIABLE$ if a player
add_achievement_global_variable_effect = {
	if = {
		limit = {
			is_ai = no
		}
		set_global_variable = {
			name = $VARIABLE$
			value = $VALUE$
		}
	}
}

# Adds $FLAG$ to list of unavailable achievements if a player
add_to_global_unavailable_achievements_list_effect = {
	if = {
		limit = {
			is_ai = no
		}
		add_to_global_variable_list = {
			name = unavailable_achievements
			target = $FLAG$
		}
	}
}

fp2_had_friend_with_benefits = { # History's Best Friend
	if = {
		limit = {
			is_ai = no
			has_fp2_dlc_trigger = yes
			has_relation_best_friend = scope:had_sex_with_effect_partner
			AND = { # Implicit for readability
				culture = { has_cultural_tradition = tradition_fp2_ritualised_friendship }
				scope:had_sex_with_effect_partner.culture = { has_cultural_tradition = tradition_fp2_ritualised_friendship }
			}
		}
			add_achievement_global_variable_effect = { # (Has additional check for consistency)
			VARIABLE = fp2_historys_best_friends_achievement_unlocked
			VALUE = yes
		}
	}
}

fp2_holiday_in_iberia_check = {
	if = { 
		limit = { exists = global_var:fp2_holiday_in_iberia_achievement_unlocked }
		add_achievement_global_variable_effect = {
			VARIABLE = fp2_holiday_in_iberia_achievement_unlocked
			VALUE = yes
		}
	}
}

ep2_im_in_my_elements_terrain_grabber_effect = {
	# Grab various terrain types and add them to a list.
	## Plains
	if = {
		limit = {
			location = { terrain = plains }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:plains
		}
	}
	## Sea
	else_if = {
		limit = {
			location = { terrain = sea }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:sea
		}
	}
	## Coastal_sea
	else_if = {
		limit = {
			location = { terrain = coastal_sea }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:coastal_sea
		}
	}
	## Farmlands
	else_if = {
		limit = {
			location = { terrain = farmlands }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:farmlands
		}
	}
	## Hills
	else_if = {
		limit = {
			location = { terrain = hills }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:hills
		}
	}
	## Mountains
	else_if = {
		limit = {
			location = { terrain = mountains }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:mountains
		}
	}
	## Desert
	else_if = {
		limit = {
			location = { terrain = desert }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:desert
		}
	}
	## Desert_mountains
	else_if = {
		limit = {
			location = { terrain = desert_mountains }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:desert_mountains
		}
	}
	## Oasis
	else_if = {
		limit = {
			location = { terrain = oasis }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:oasis
		}
	}
	## Jungle
	else_if = {
		limit = {
			location = { terrain = jungle }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:jungle
		}
	}
	## Forest
	else_if = {
		limit = {
			location = { terrain = forest }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:forest
		}
	}
	## Taiga
	else_if = {
		limit = {
			location = { terrain = taiga }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:taiga
		}
	}
	## Wetlands
	else_if = {
		limit = {
			location = { terrain = wetlands }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:wetlands
		}
	}
	## Steppe
	else_if = {
		limit = {
			location = { terrain = steppe }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:steppe
		}
	}
	## Floodplains
	else_if = {
		limit = {
			location = { terrain = floodplains }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:floodplains
		}
	}
	## Drylands
	else_if = {
		limit = {
			location = { terrain = drylands }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:drylands
		}
	}
	## Terraced Hills
	else_if = {
		limit = {
			location = { terrain = terraced_hills }
		}
		add_to_variable_list = {
			name = ep2_im_in_my_elements_achievement_terrain_list
			target = flag:terraced_hills
		}
	}
	# Error suppression.
	if = {
		limit = {
			always = no
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:plains
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:sea
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:coastal_sea
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:farmlands
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:hills
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:mountains
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:desert
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:desert_mountains
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:oasis
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:jungle
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:forest
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:taiga
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:wetlands
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:steppe
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:floodplains
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:drylands
			}
			is_target_in_variable_list = {
				name = ep2_im_in_my_elements_achievement_terrain_list
				target = flag:terraced_hills
			}
		}
	}
}

player_succeeded_at_a_thousand_and_one_nights_achievement_effect = {
	scope:host = {
		if = {
			limit = {
				exists = global_var:started_a_thousand_and_one_nights_achievement
				is_ai = no
			}
			set_global_variable = {
				name = finished_a_thousand_and_one_nights_achievement
				value = yes
			}
		}
	}
}

process_tour_achievement_tallies_effect = {
	scope:host = {
		if = {
			limit = {
				exists = global_var:started_the_grandest_tour_achievement
				is_ai = no
				scope:stop_host_scope.highest_held_title_tier >= tier_kingdom
			}
			scope:activity = {
				add_to_variable_list = {
					name = the_grandest_tour_achievement_tally_list
					target = scope:stop_host_scope
				}
			}
		}
		if = {
			limit = {
				exists = global_var:started_imperial_march_achievement
				is_ai = no
				scope:activity = {
					has_activity_option = {
						category = special_type
						option = tour_type_intimidation
					}
				}
				scope:stop_host_scope = { is_powerful_vassal = yes }
			}
			scope:activity = {
				add_to_variable_list = {
					name = imperial_march_achievement_list
					target = scope:stop_host_scope
				}
			}
		}
	}
}
