﻿# We use a variable inside the player so that the setting will be saved in between sessions
kCAFG_province_faith_scripted_gui = {
	scope = province
	saved_scopes = { local_player }

	is_shown = {
		has_global_variable = kCAFG_is_loaded_v2
		exists = this
		exists = scope:local_player
		scope:local_player = { has_variable = kCAFG_UI_province_faiths_visible }
		T_kCAFG_does_province_contain_any_faith = yes
	}

	is_valid = {
		exists = this
		T_kCAFG_does_province_contain_any_faith = yes
	}

	effect = {
		if = {
			limit = { scope:local_player = { has_variable = kCAFG_UI_province_faiths_visible } }
			scope:local_player = { remove_variable = kCAFG_UI_province_faiths_visible }
		}
		else = {
			scope:local_player = {
				set_variable = kCAFG_UI_province_faiths_visible
				remove_variable = kCAFG_UI_province_cultures_visible # Cannot have the two windows visible at the same time for now
			}
		}
	}
}

kCAFG_province_faith_update_request_scripted_gui = {
	scope = province
	is_valid = {
		has_variable = kCAFG_faith_UI_update_requested
	}

	effect = {
		remove_variable = kCAFG_faith_UI_update_requested
	}
}

kCAFG_province_faiths_setup_variables_scripted_gui = {
	scope = province
	saved_scopes = { local_player }

	effect = {
		save_temporary_scope_as = kCAFG_province

		if = {
			limit = {
				exists = scope:local_player
				scope:local_player = { has_variable = kCAFG_UI_viewed_province }
			}
			scope:local_player.var:kCAFG_UI_viewed_province = { save_temporary_scope_as = kCAFG_previous_province }
		}

		if = {
			limit = { exists = scope:kCAFG_previous_province }
			scope:kCAFG_previous_province = {
				# Subtract viewer count
				if = {
					limit = { has_variable = kCAFG_UI_viewers }
					change_variable = { name = kCAFG_UI_viewers subtract = 1 }
				}
				else = {
					set_variable = { name = kCAFG_UI_viewers value = 0 }
				}

				# Remove from viewed list if no viewers left
				if = {
					limit = {
						OR = {
							NOT = { has_variable = kCAFG_UI_viewers }
							var:kCAFG_UI_viewers <= 0
						}
					}

					remove_list_global_variable = {
						name = kCAFG_UI_viewed_provinces
						target = this
					}
					
					clear_variable_list = kCAFG_UI_ordered_province_faith_structs
				}
			}
		}

		if = {
			limit = {
				exists = scope:local_player
			}

			# Add to viewed list
			scope:local_player = {
				set_variable = {
					name = kCAFG_UI_viewed_province
					value = scope:kCAFG_province
				}
			}
		}
		
		if = {
			limit = { has_variable = kCAFG_UI_viewers }
			change_variable = { name = kCAFG_UI_viewers add = 1 }
		}
		else = {
			set_variable = { name = kCAFG_UI_viewers value = 1 }
		}

		add_to_global_variable_list = {
			name = kCAFG_UI_viewed_provinces
			target = scope:kCAFG_province
		}

		clear_variable_list = kCAFG_UI_ordered_province_faith_structs
		save_temporary_scope_as = kCAFG_province # used by V_kCAFG_faith_tension_target_baseline_complete
		county.holder.faith = { save_temporary_scope_as = kCAFG_target_faith } # used by V_kCAFG_faith_tension_target_baseline_complete
		ordered_in_list = {
			variable = kCAFG_province_faith_structs
			order_by = var:factor
			max = V_kCAFG_max_UI_display
			check_range_bounds = no

			save_temporary_scope_as = ordered_struct

			scope:kCAFG_province = {
				add_to_variable_list = {
					name = kCAFG_UI_ordered_province_faith_structs
					target = scope:ordered_struct
				}
			}
		}
	}
}

kCAFG_is_task_conversion_possible_scripted_gui = {
	scope = character
	saved_scopes = { kCAFG_province }
	is_valid = {
		exists = yes
		save_temporary_scope_as = councillor
		scope:kCAFG_province.county = { save_temporary_scope_as = county }
		liege = { save_temporary_scope_as = councillor_liege }
		custom_description = {
			text = "kCAFG_does_not_have_realm_law_preventing_task_conversion"
			scope:councillor_liege = {
				NOT = { has_realm_law_flag = F_kCAFG_tolerant_to_other_faiths }
			}
		}
		scope:kCAFG_province = { T_kCAFG_task_conversion_can_convert_province = yes }
	}
	effect = {
		save_temporary_scope_as = councillor
		scope:kCAFG_province.county = { save_temporary_scope_as = county }
		liege = { save_temporary_scope_as = councillor_liege }
		if = {
			limit = {
				scope:kCAFG_province = { T_kCAFG_task_conversion_can_convert_province = yes }
			}
		}
	}
}

kCAFG_is_converting_in_province_county_scripted_gui = {
	scope = character
	saved_scopes = { kCAFG_province }
	is_valid = {
		exists = yes
		is_performing_council_task = task_conversion
		councillor_task_target = scope:kCAFG_province.county.title_province
	}
	effect = {}
}

kCAFG_task_conversion_province_focus_scripted_gui = {
	scope = character
	saved_scopes = { kCAFG_province }

	is_valid = {
		exists = yes
		# Is province in councillor liege's realm
		scope:kCAFG_province.county = {
			OR = {
				holder = root.liege
				holder = { target_is_liege_or_above = root.liege }
			}
		}
	}

	is_shown = {
		exists = yes
		has_variable = kCAFG_task_conversion_focused_province
		var:kCAFG_task_conversion_focused_province = scope:kCAFG_province
	}

	effect = {
		if = {
			limit = {
				exists = yes
				is_councillor = yes
				scope:kCAFG_province = { exists = yes }
			}
			if = {
				limit = {
					# Is councillor converting
					is_performing_council_task = task_conversion
					councillor_task_target = scope:kCAFG_province.county.title_province
				}
				if = {
					limit = {
						NAND = {
							has_variable = kCAFG_task_conversion_focused_province
							var:kCAFG_task_conversion_focused_province = scope:kCAFG_province
						}
					}
					remove_variable = kCAFG_task_conversion_focused_province
					set_variable = {
						name = kCAFG_task_conversion_focused_province_wanted
						value = scope:kCAFG_province
					}
					set_council_task = {
						task_type = task_conversion
						target = scope:kCAFG_province.county.title_province
					}
					set_variable = {
						name = kCAFG_task_conversion_focused_province
						value = scope:kCAFG_province
					}
					remove_variable = kCAFG_task_conversion_focused_province_wanted
				}
			}
			else = {
				remove_variable = kCAFG_task_conversion_focused_province
				set_variable = {
					name = kCAFG_task_conversion_focused_province_wanted
					value = scope:kCAFG_province
				}
				set_council_task = {
					task_type = task_conversion
					target = scope:kCAFG_province.county.title_province
				}
				set_variable = {
					name = kCAFG_task_conversion_focused_province
					value = scope:kCAFG_province
				}
				remove_variable = kCAFG_task_conversion_focused_province_wanted
			}
		}
	}
}

# Linked to V_kCAFG_faith_tension_target_baseline_complete
kCAFG_province_faith_opinion_breakdown = {
	scope = faith
	saved_scopes = { kCAFG_target_faith kCAFG_province }

	effect = {
		# We change scope so that the value used by the tooltip works
		custom_tooltip = { text = kCAFG_target_faith_view_of_this_faith }
		if = {
			limit = { has_doctrine = doctrine_pluralism_pluralistic }
			custom_tooltip = { text = kCAFG_province_faith_tooltip_desc_pluralistic }
		}
		else_if = {
			limit = { has_doctrine = doctrine_pluralism_fundamentalist }
			custom_tooltip = { text = kCAFG_province_faith_tooltip_desc_fundamentalist }
		}
		scope:kCAFG_target_faith = {
			custom_tooltip = { text = kCAFG_this_faith_view_of_target_faith }
			if = {
				limit = { has_doctrine = doctrine_pluralism_pluralistic }
				custom_tooltip = { text = kCAFG_province_faith_tooltip_desc_pluralistic }
			}
			else_if = {
				limit = { has_doctrine = doctrine_pluralism_fundamentalist }
				custom_tooltip = { text = kCAFG_province_faith_tooltip_desc_fundamentalist }
			}
		}
		scope:kCAFG_province = {
			if = {
				limit = { has_holding_type = church_holding }
				custom_tooltip = { text = kCAFG_province_faith_tooltip_desc_province_has_church_holding }
			}
		}
		scope:kCAFG_province.county.holder = {
			if = {
				limit = { V_kCAFG_character_different_faith_county_opinion_mult != 1 }
				custom_tooltip = { text = kCAFG_province_faith_opinion_holder_different_faith_county_opinion_mult }
			}
		}
	}
}

### DEBUG ###

kCAFG_DEBUG_province_faith_convert = {
	scope = province
	saved_scopes = { faith local_player amount }

	is_shown = {
		scope:local_player.faith != scope:faith
	}

	is_valid = {
		NOT = { T_kCAFG_province_only_faith = { FAITH = scope:local_player.faith } }
	}

	effect = {
		E_kCAFG_convert_province_faith_factor = {
			SOURCE = scope:faith
			TARGET = scope:local_player.faith
			FACTOR = scope:amount
		}

		E_kCAFG_update_province_target_faith_tension = yes
		county = {
			E_kCAFG_update_county_faiths_list = yes
			E_kCAFG_update_county_faith = { REASON = flag:kCAFG_default_reason }
		}
	}
}

kCAFG_DEBUG_province_faith_reverse_convert = {
	scope = province
	saved_scopes = { faith local_player amount }

	is_shown = {
		scope:local_player.faith != scope:faith
	}

	is_valid = {
		T_kCAFG_does_province_contain_faith = { FAITH = scope:local_player.faith }
	}

	effect = {
		E_kCAFG_convert_province_faith_factor = {
			SOURCE = scope:local_player.faith
			TARGET = scope:faith
			FACTOR = scope:amount
		}
		
		E_kCAFG_update_province_target_faith_tension = yes
		county = {
			E_kCAFG_update_county_faiths_list = yes
			E_kCAFG_update_county_faith = { REASON = flag:kCAFG_default_reason }
		}
	}
}

kCAFG_DEBUG_province_faith_info_scripted_gui = {
	scope = province
	saved_scopes = { faith char }

	is_shown = {
		OR = {
			AND = {
				NOT = { exists = global_var:kCAFG_debug_marked_char }
				exists = scope:char
				NOT = { scope:char.faith = scope:faith }
			}
			AND = {
				exists = global_var:kCAFG_debug_marked_char
				NOT = { global_var:kCAFG_debug_marked_char.faith = scope:faith }
			}
		}
	}
}

kCAFG_province_active_faith_tolerance_law = {
	scope = province

	effect = {
		county.holder = {
			if = {
				limit = { is_independent_ruler = yes }
				save_temporary_scope_as = law_enforcer
			}
			else = {
				# Get the first liege whose law applies
				ordered_liege_or_above = {
					position = 0
					order_by = primary_title.tier
					limit = { T_kCAFG_overrides_faith_tolerance_law = yes }
					save_temporary_scope_as = law_enforcer
				}

				# Default to county holder
				if = {
					limit = { NOT = { exists = scope:law_enforcer } }
					save_temporary_scope_as = law_enforcer
				}
			}
		}

		if = {
			limit = { exists = scope:law_enforcer }
			scope:law_enforcer = {
				custom_tooltip = kCAFG_province_faiths_tolerance_law_enforcer_tt
			}
		}
	}
}