﻿claim_throne = {
	# Basic Setup
	skill = learning
	desc = claim_throne_desc_general
	success_desc = "CLAIM_THRONE_SUCCESS_DESC"
	discovery_desc = "CLAIM_THRONE_DISCOVERY_DESC"
	icon = icon_scheme_claim_throne
	illustration = "gfx/interface/illustrations/event_scenes/corridor.dds"
	category = hostile
	target_type = character
	is_secret = yes
	maximum_breaches = 5
	cooldown = { years = 2 }
	
	# Parameters
	speed_per_skill_point = t2_spsp_owner_value
	speed_per_target_skill_point = t1_spsp_target_value
	target_spymaster_speed_per_skill_point = 0
	base_progress_goal = t1_base_phase_length_value
	maximum_secrecy = 95
	base_maximum_success = t2_base_max_success_value
	phases_per_agent_charge = 1
	success_chance_growth_per_skill_point = t2_scgpsp_value

	# Core Triggers
	allow = {
		is_adult = yes
		is_imprisoned = no
		OR = {
		AND = {
		is_landed = yes
		highest_held_title_tier > tier_barony
		}
		AND = {
		 is_ai = no
		 is_courtier = yes
		}
		}

		OR = {
			has_perk = meritocracy_perk # Scheme unlocked by the Meritocracy Perk
			AND = {
				is_diarch_of_target = scope:target
				scope:target = {
					NOT = { has_diarchy_parameter = can_be_instantly_dismissed }
				}
			}
			AND = {
				is_powerful_vassal_of = scope:target
				any_character_struggle = {
					involvement = involved
					has_struggle_phase_parameter = unlocks_claim_throne_for_powerful_vassals
					is_secondary_character_involvement_involved_trigger = {
						CHAR = scope:target
					}
				}
			}
			AND = {
				any_character_struggle = {
					involvement = involved
					has_struggle_phase_parameter = unlocks_claim_throne_for_all
					is_secondary_character_involvement_involved_trigger = {
						CHAR = scope:target
					}
				}
			}
			AND = {
				exists = title:d_sunni.holder
				is_vassal_of = title:d_sunni.holder
				any_character_struggle = {
					involvement = involved
					has_struggle_phase_parameter = unlocks_claim_throne_for_caliph_vassals
				}
			}
		}
	}
	valid = {
		is_incapable = no
		scope:owner = {
			exists = liege
			liege = scope:target
		}
		scope:target = {
			is_landed = yes
			exists = location
		}
		custom_description = {
			text = already_has_strong_claim_on
			object = scope:target
			scope:owner = {
				NOT = { has_strong_claim_on = scope:target.primary_title }
			}
		}
		# Special AI exceptions
		NOT = {
			scope:owner = {
				is_ai = yes
				has_opinion_modifier = {
					target = scope:target
					modifier = repentant_opinion
				}
			}
		}
	}

	# Agents
	agent_leave_threshold = -10
	agent_join_chance = {
		base = 0
		
		ai_agent_join_chance_basic_suite_modifier = yes
		ai_agent_join_chance_hostile_grievous_modifier = yes
	}
	agent_groups_owner_perspective = { courtiers guests scripted_relations }
	agent_groups_target_character_perspective = { courtiers vassals }
	valid_agent = { is_valid_agent_standard_trigger = yes }

	odds_prediction = {
		add = hostile_scheme_base_odds_prediction_target_is_char_value
		add = odds_skill_contribution_learning_value
		add = agent_groups_owner_perspective_value
		add = agent_groups_target_character_perspective_value
		min = 0
	}

	# Base Chances
	base_success_chance = {
		base = 0
		scheme_type_skill_success_chance_modifier = { SKILL = LEARNING }
		
		compare_modifier = {
			desc = "SCHEME_MY_LEARNING"
			value = scope:owner.learning
			multiplier = 2
		}

		compare_modifier = {
			desc = "SCHEME_MY_INTRIGUE"
			value = scope:owner.intrigue
		}

		# Countermeasures.
		apply_indirect_scheme_success_chance_adjustments_modifier = yes
		
		modifier = {
			desc = "SCHEME_I_AM_COUNCILLOR_OF_TARGET"
			add = 25
			scope:owner = {
				is_councillor_of = scope:target
			}
		}

		modifier = {
			add = -30
			always = scope:exposed
			desc = "SCHEME_IS_EXPOSED"
		}

		# Diarchs are better at schemes within their liege's realm
		diarch_scheming_within_realm_bonus_modifier = yes

		# house_head_request_interaction
		## This scheme is hostile but doesn't use hostile_scheme_base_chance_modifier, so we add this value here
		modifier = {
			add = hostile_scheme_variable_list_value
			scope:owner = {
				has_variable_list = supporting_hostile_schemes
			}
			desc = HOUSE_HEAD_SCHEME_SUPPORT_DESC
		}
		modifier = {
			add = -10
			scope:owner = { has_character_modifier = hostile_schemes_distracted_modifier }
			desc = hostile_schemes_distracted_modifier
		}
	}
	base_secrecy = {
		add = secrecy_base_value
		add = countermeasure_apply_secrecy_maluses_value
	}

	# On Actions
	on_start = {
		set_variable = {
			name = apply_countermeasures
			value = flag:indirect
		}
		# Fallback agents — a balanced config if you start the scheme from script.
		if = {
			limit = {
				scheme_owner = {
					NOT = { has_variable = agents_added }
				}
			}
			add_agent_slot = agent_diplomat
			add_agent_slot = agent_diplomat
			add_agent_slot = agent_scribe
			add_agent_slot = agent_cleric
			add_agent_slot = agent_justiciar
		}
	}
	on_phase_completed = {
		suppress_scheme_follow_up_event_till_input_given_effect = yes
		claim_throne_scheme_prep_effect = yes
		cap_schemes_and_fire_reminders_effect = yes
	}
	on_hud_click  = { claim_throne_scheme_prep_effect = yes }
	on_monthly = {
		hostile_scheme_monthly_discovery_chance_effect = yes
		if = {
			limit = {
				NOT = { exists = scope:discovery_event_happening }
			}			
			scheme_owner = {
				trigger_event = {
					on_action = claim_throne_ongoing
					days = { 1 30 }
				}
			}
		}
	}
	on_semiyearly = {
		if = {
			limit = {
				scheme_owner = { is_ai = yes }
			}
			claim_throne_scheme_prep_effect = yes
		}
	}
	on_invalidated = {
		if = {
			limit = { exists = scheme_target_character.primary_title }
			scheme_target_character.primary_title = { save_scope_as = target_title }
		}
		scope:owner = {
			trigger_event = { id = claim_throne_outcome.9999 days = 1 }
		}
		if = {
			limit = {
				scope:target = { 
					NOT = { in_diplomatic_range = scope:owner } 
				}
			}
			scope:owner = {
				send_interface_toast = {
					title = fabricate_hook_failed_reset_message
					left_icon = scope:target
					custom_description_no_bullet = {
						object = scope:target
						text = scheme_target_not_in_diplomatic_range
					}
				}
			}
		}
	}	
}
