namespace = fp3_struggle

### EVENT LIST ####################################################################
## 0001 - 0020	Internal Management Events by Hugo Cortell
## 0021 - 0030	Invalidation Events by Hugo Cortell
## 0031	- 0040	Empty block by Hugo Cortell
## 0051 - 0060	FP3 Struggle Intro Events by Hugo Cortell
## 0061 - 0070	Realm Shattering Events by Hugo Cortell
## 0071	- 0300	Struggle Endings by Thalassic Design Dept (Ola, Eren, Hugo)
## XXXX - XXXX	Event Name Here by Author Name Here
## XXXX - XXXX	Event Name Here by Author Name Here
## XXXX - XXXX	Event Name Here by Author Name Here
## 9980 - 9999	Integrity Validation Tools by Hugo Cortell
###################################################################################

###################################
# FP3 Maintenance Events
# By Ewan Cowhig Croft
###################################

scripted_trigger fp3_struggle_0001_valid_ai_struggle_char_trigger = {
	# Basic checks.
	can_execute_decision = fp3_name_read_in_friday_prayer_decision
	is_ai = yes
	# Suitability for switchin' checks.
	OR = {
		# If they're gonna become a supporter, it should make sense.
		AND = {
			opinion = {
				target = title:d_sunni.holder
				value >= low_positive_opinion
			}
			OR = {
				# We check for the opposite, since you're flipflopping.
				has_trait = fp3_struggle_detractor
				NOR = {
					has_trait = fp3_struggle_supporter
					has_trait = fp3_struggle_detractor
				}
			}
		}
		# If they're gonna become a detractor, that should make sense too.
		AND = {
			opinion = {
				target = title:d_sunni.holder
				value <= low_negative_opinion
			}
			OR = {
				# We check for the opposite, since you're flipflopping.
				has_trait = fp3_struggle_supporter
				NOR = {
					has_trait = fp3_struggle_supporter
					has_trait = fp3_struggle_detractor
				}
			}
		}
	}
}

fp3_struggle.0001 = {
	hidden = yes
	scope = none
	scope = struggle

	# If the struggle ends, break the loop.
	trigger = { exists = struggle:persian_struggle }

	immediate = {
		if = {
			# If there isn't a caliph at present, then stop trying to make people talk about them.
			limit = { exists = title:d_sunni.holder }
			struggle:persian_struggle = {
				every_involved_ruler = {
					limit = { fp3_struggle_0001_valid_ai_struggle_char_trigger = yes }
					random = {
						chance = fp3_struggle_switch_sides_value
						execute_decision = fp3_name_read_in_friday_prayer_decision
					}
				}
				every_interloper_ruler = {
					limit = { fp3_struggle_0001_valid_ai_struggle_char_trigger = yes }
					random = {
						chance = fp3_struggle_switch_sides_value
						execute_decision = fp3_name_read_in_friday_prayer_decision
					}
				}
			}
		}
		
		# Cue this event up again for the next time around.
		trigger_event = {
			id = fp3_struggle.0001
			years = { 3 5 }
		}
	}
}

###################################
# FP3 Intro Events
# By Hugo Cortell, reworked by Ewan Cowhig Croft
###################################
fp3_struggle.0051 = { # BOOKMARK EVENT
	type = character_event
	window = fullscreen_event
	title = fp3_struggle.0051.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = {
					any_character_struggle = {
						is_struggle_type = persian_struggle
						is_struggle_phase = struggle_persia_phase_unrest
					}
				}
				desc = fp3_struggle.0051.desc.unrest
			}
			desc = fp3_struggle.0051.desc.stabilization
		}
		first_valid = {
			triggered_desc = {
				trigger = {
					any_character_struggle = {
						is_struggle_type = persian_struggle
						is_struggle_phase = struggle_persia_phase_stabilisation
					}
				}
				desc =  fp3_struggle.0051.desc.stabilization_actor
			}
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_supporter
				}
				desc = fp3_struggle.0051.desc.supporter
			}
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_detractor
				}
				desc = fp3_struggle.0051.desc.detractor
			}
			triggered_desc = {
				trigger = {
					fp3_struggle_is_the_caliph = yes
				}
				desc = fp3_struggle.0051.desc.caliph
			}
			triggered_desc = {
				trigger = {
					any_character_struggle = {
						involvement = involved
						is_struggle_type = persian_struggle
					}
				}
				desc = fp3_struggle.0051.desc.involved
			}
			triggered_desc = {
				trigger = {
					any_character_struggle = {
						involvement = interloper
						is_struggle_type = persian_struggle
					}
				}
				desc = fp3_struggle.0051.desc.interloper
			}
		}
	}
	theme = realm
	trigger = { # we need to prevent this from firing for all players when a new player joins in MP
		is_ai = no
		NOT = { has_character_flag = fp3_struggle_intro_event_flag }
		any_character_struggle = { is_struggle_type = persian_struggle }
 	}
	override_background = { reference = fp3_fullscreen_intro }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }

	cooldown = { years = 100 }

	widgets = {
		widget = {
 			gui = "event_window_widget_struggle_info"
 			container = "dynamic_content_widget"
 			controller = struggle_info
 			setup_scope = { struggle:persian_struggle = { save_scope_as = struggle } }
		}
	}
	immediate = {
		play_music_cue = strugglestart_cue
		add_character_flag = fp3_struggle_intro_event_flag
		add_to_global_variable_list = { # List is only checked for removal, comparing it in the trigger would be needlessly expensive
			name = fp3_intro_flag_character_list
			target = root
		}
		save_scope_value_as = {
			name = start
			value = yes
		}

		# LOC SCOPES
		character:34010	= { save_scope_as = Mutawakkil }	# Stabbed by guards
		character:34012	= { save_scope_as = Muntasir }		# Poisoned probably
		character:34013 = { save_scope_as = Mustain }		# Betrayed by bookmark character (?) (Note: this char is listed as 3933 in some other files for some reason)
		character:34014	= { save_scope_as = Mostaza }		# Bookmark ruler
	}
	option = {
		name = {
			text = {
				first_valid = {
					triggered_desc = {
						trigger = {
							any_character_struggle = { is_struggle_type = persian_struggle }
							has_title = character:34014.primary_title
						}
						desc = fp3_struggle.0051.b
					}
					desc = fp3_struggle.0051.a
				}
			}
		}
		clicksound = "event:/DLC/FP2/SFX/UI/fp2_struggle_start_select"
	}
}

#################################################
# Struggle Endings								#
# By Hugo Cortell, Maxence Voleau, Ola Jentzsch & Eren Humphrey #
###################################################################
# Script is set up in this way to prevent out of order executions #
###################################################################

### STRENGTHEN CALIPHATE ENDING ### 0071 = 0080 ###
fp3_struggle.0071 = { # Strengthen the Caliphate Ending
	type = character_event
	window = fullscreen_event
	title = fp3_struggle.0071.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = {
					fp3_struggle_is_the_caliph = yes
				}
				desc = fp3_struggle.0071.desc.caliph
			}
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_supporter
				}
				desc = fp3_struggle.0071.desc.supporter
			}
		}
	}
	theme = court
	override_background = { reference = fp3_fullscreen_strength }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }

	immediate = {
		fp3_ending_effects_assertion = yes
		character:34014 = { save_scope_as = Mostaza }		# Bookmark ruler
		play_music_cue = struggleend_cue
	}

	option = {
		name = fp3_struggle.0071.a
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
		
		ai_chance = {
			base = 75
			
			modifier = {
				factor = 0.1
				realm_size >= 250
			}
		}
	}

	option = {
		trigger = {
			has_dlc_feature = roads_to_power
			fp3_struggle_is_the_caliph = yes
			NOT = { government_has_flag = government_is_administrative }
		}
		name = fp3_struggle.0071.b
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
		
		convert_to_administrative_from_feudalism_effect = { GOVERNMENT_TO_ADOPT = flag:administrative }
		add_legitimacy_effect = { LEGITIMACY = admin_convert_legitimacy_value } #One Time Legitimacy Boost
		
		ai_chance = {
			base = 0
			
			modifier = {
				add = 25
				realm_size >= 75
			}
			modifier = {
				add = 25
				realm_size >= 100
			}
			modifier = {
				add = 25
				realm_size >= 125
			}
			modifier = {
				add = 25
				realm_size >= 150
			}
			modifier = {
				add = 50
				realm_size >= 200
			}
		}
	}

	after = {
		fp3_end_persian_struggle_effect = {
			ENDING = struggle_persia_ending_assertion_decision
			EVENT = fp3_struggle.0072
			FLAG = flag:fp3_struggle_strengthen_caliphate_ending
		}
	}
}

fp3_struggle.0072 = { # Notification for relevant people
	type = character_event
	window = fullscreen_event
	title = fp3_struggle.0071.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = {
					fp3_struggle_is_the_caliph = yes
				}
				desc = fp3_struggle.0072.desc.caliph
			}
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_supporter
				}
				desc = fp3_struggle.0072.desc.supporter
			}
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_detractor
				}
				desc = fp3_struggle.0072.desc.detractor
			}

			triggered_desc = {
				trigger = {
					any_character_struggle = {
						involvement = involved
						is_struggle_type = persian_struggle
					}
				}
				desc = fp3_struggle.0072.desc.involved
			}
			triggered_desc = {
				trigger = {
					any_character_struggle = {
						involvement = interloper
						is_struggle_type = persian_struggle
					}
				}
				desc = fp3_struggle.0072.desc.interloper
			}
			desc = fp3_struggle.0072.desc.uninvolved
		}
	}
	theme = court
	override_background = { reference = fp3_fullscreen_strength }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }

	trigger = {
		NOT = { has_character_flag = struggle_end_notification }
	}

	immediate = {
		show_as_tooltip = { struggle:persian_struggle = { end_struggle = yes } }
		add_character_flag = struggle_end_notification

		play_music_cue = struggleend_cue
	}

	option = {
		name = fp3_struggle.0072.a
		trigger = {
			OR = {
				fp3_struggle_is_the_caliph = yes
				has_trait = fp3_struggle_supporter
			}
		}
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}

	option = {
		name = fp3_struggle.0072.a
		trigger = {
			NOR = {
				fp3_struggle_is_the_caliph = yes
				has_trait = fp3_struggle_supporter
			}
		}
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
	}
	after = {
		remove_character_flag = struggle_end_notification
	}
}

### CONCESSION ENDING ### 0081 = 0090 ###

fp3_struggle.0081 = { #
	type = character_event
	window = fullscreen_event
	title = fp3_struggle.0082.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = { has_trait = fp3_struggle_supporter }
				desc = fp3_struggle.0082.desc.supporter
			}
			triggered_desc = {
				trigger = { has_trait = fp3_struggle_detractor }
				desc = fp3_struggle.0082.desc.detractor
			}
			triggered_desc = {
				trigger = {
					any_character_struggle = {
						involvement = involved
						is_struggle_type = persian_struggle
					}
				}
				desc = {
					desc = fp3_struggle.0082.desc.intro
					desc = fp3_struggle.0082.desc.involved
				}
			}
			triggered_desc = {
				trigger = {
					any_character_struggle = {
						involvement = interloper
						is_struggle_type = persian_struggle
					}
				}
				desc = {
					desc = fp3_struggle.0082.desc.intro
					desc = fp3_struggle.0082.desc.interloper
				}
			}
			desc = fp3_struggle.0082.desc.uninvolved
		}
	}
	theme = court
	override_background = { reference = fp3_fullscreen_concession }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }

	immediate = {
		play_music_cue = struggleend_cue
	}

	option = {
		name = fp3_struggle.0082.a
		show_as_tooltip = {
			struggle:persian_struggle = { end_struggle = yes }
			fp3_struggle_ending_concession_effects = yes
		}
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
	}

	after = {
		fp3_end_persian_struggle_effect = {
			ENDING = yes
			EVENT = fp3_struggle.0082
			FLAG = flag:fp3_struggle_concession_ending
		}
	}
}

fp3_struggle.0082 = { # Notification for relevant people
	type = character_event
	window = fullscreen_event
	title = fp3_struggle.0082.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = { has_trait = fp3_struggle_supporter }
				desc = fp3_struggle.0082.desc.supporter
			}
			triggered_desc = {
				trigger = { has_trait = fp3_struggle_detractor }
				desc = fp3_struggle.0082.desc.detractor
			}
			triggered_desc = {
				trigger = { exists = scope:involved }
				desc = {
					desc = fp3_struggle.0082.desc.intro
					desc = fp3_struggle.0082.desc.involved
				}
			}
			triggered_desc = {
				trigger = { exists = scope:interloper }
				desc = {
					desc = fp3_struggle.0082.desc.intro
					desc = fp3_struggle.0082.desc.interloper
				}
			}
			desc = fp3_struggle.0082.desc.uninvolved
		}
	}
	theme = court
	override_background = { reference = fp3_fullscreen_concession }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
	# There could, and should, be a event_window_widget_struggle_info widget here

	immediate = {
		if = {
			limit = {
				any_character_struggle = {
					involvement = involved
					is_struggle_type = persian_struggle
				}
			}
			save_scope_as = involved
		}
		else_if = {
			limit = {
				any_character_struggle = {
					involvement = interloper
					is_struggle_type = persian_struggle
				}
			}
			save_scope_as = interloper
		}
		show_as_tooltip = {
			struggle:persian_struggle ?= { end_struggle = yes }
			fp3_struggle_ending_concession_effects = yes
		}
		play_music_cue = struggleend_cue
	}

	option = {
		name = fp3_struggle.0082.b
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
	}
}

### FOUNDATION ENDINGS ### 0091 = 0180 ###
fp3_struggle.0091 = { # Rekindle Iran
	type = character_event
	window = fullscreen_event
	title = fp3_struggle.0091.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_supporter
				}
				desc = fp3_struggle.0091.desc.supporter
			}
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_detractor
				}
				desc = fp3_struggle.0091.desc.detractor
			}
		}
	}
	theme = court
	override_background = { reference = fp3_fullscreen_rekindle }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }

	immediate = {
		save_scope_as = struggle_ender
		# Save Sunni caliph or previous one as scope:struggle_liege
		fp3_save_sunni_caliph_or_previous_effect = yes
		title:e_persia = { save_scope_as = persia_loc } # Persia gets renamed under clan govs

		fp3_struggle_rekindle_iran_effects = yes

		play_music_cue = struggleend_cue

		dynasty:1029100 = { save_scope_as = sassanid_dynasty }
	}

	option = {
		name = fp3_struggle.0091.a
		
		show_as_tooltip = { struggle:persian_struggle = { end_struggle = yes } }
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}

	after = {
		fp3_end_persian_struggle_effect = {
			ENDING = struggle_persia_ending_rekindle_iran_decision
			EVENT = fp3_struggle.0092
			FLAG = flag:fp3_struggle_rekindle_iran_ending
		}
	}
}

fp3_struggle.0092 = { # Notification for relevant people
	type = character_event
	window = fullscreen_event
	title = fp3_struggle.0091.t
	desc = {
		desc = fp3_struggle.0092.intro
		first_valid = {
			triggered_desc = {
				trigger = {
					culture = { has_cultural_pillar = heritage_iranian }
				}
				desc = fp3_struggle.0092.desc.iranian
			}
			desc = fp3_struggle.0092.desc.non-iranian
		}
	}
	theme = court
	override_background = { reference = fp3_fullscreen_rekindle }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
	# There could, and should, be a event_window_widget_struggle_info widget here

	immediate = {
		show_as_tooltip = {
			struggle:persian_struggle = { end_struggle = yes }
			fp3_struggle_rekindle_iran_effects = yes
		}
		play_music_cue = struggleend_cue
	}

	option = {
		name = fp3_struggle.0092.a
		trigger = {
			culture = { has_cultural_pillar = heritage_iranian }
		}
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}

	option = {
		name = fp3_struggle.0092.a
		trigger = {
			NOT = {
				culture = { has_cultural_pillar = heritage_iranian }
			}
		}
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
	}
}

fp3_struggle.0095 = { # Temper the Caliphate, Shia Ending
	type = character_event
	window = fullscreen_event
	title = fp3_struggle.0095.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = {
					faith = {
						OR = {
							has_doctrine = muhammad_succession_shia_doctrine
							has_doctrine = muhammad_succession_zandaqa_doctrine
						}
					}
				}
				desc = fp3_struggle.0095.desc.shia_and_zandaqa
			}
			triggered_desc = {
				trigger = {
					faith = {
						has_doctrine = muhammad_succession_muhakkima_doctrine
					}
				}
				desc = fp3_struggle.0095.desc.muhakkima
			}
			desc = fp3_struggle.0095.desc.fallback
		}
	}
	theme = court
	override_background = { reference = fp3_fullscreen_temper }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }

	immediate = {
		root = { save_scope_as = struggle_ender }
		# Save Sunni caliph or previous one as scope:struggle_liege
		fp3_save_sunni_caliph_or_previous_effect = yes
		character:34005 = { save_scope_as = harun_the_rightly_guided }

		fp3_struggle_ending_shia_caliphate_effects = yes

		play_music_cue = struggleend_cue

		character:33911 = { save_scope_as = ali } 

	}

	option = {
		name = fp3_struggle.0095.a
		show_as_tooltip = { struggle:persian_struggle = { end_struggle = yes } }
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}

	after = {
		fp3_end_persian_struggle_effect = {
			ENDING = struggle_persia_ending_foundation_decision
			EVENT = fp3_struggle.0096
			FLAG = flag:fp3_struggle_shia_caliphate_ending
		}
	}
}

fp3_struggle.0096 = { # Notification for relevant people
	type = character_event
	window = fullscreen_event
	title = fp3_struggle.0095.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_supporter
				}
				desc = fp3_struggle.0096.desc.supporter
			}
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_detractor
				}
				desc = fp3_struggle.0096.desc.detractor
			}

			triggered_desc = {
				trigger = {
					any_character_struggle = {
						involvement = involved
						is_struggle_type = persian_struggle
					}
				}
				desc = fp3_struggle.0096.desc.involved
			}
			triggered_desc = {
				trigger = {
					any_character_struggle = {
						involvement = interloper
						is_struggle_type = persian_struggle
					}
				}
				desc = fp3_struggle.0096.desc.interloper
			}
			desc = fp3_struggle.0096.desc.uninvolved
		}
	}
	theme = court
	override_background = { reference = fp3_fullscreen_temper }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
	# There could, and should, be a event_window_widget_struggle_info widget here

	immediate = {
		play_music_cue = struggleend_cue
		show_as_tooltip = {
			fp3_struggle_ending_shia_caliphate_effects = yes
			struggle:persian_struggle = { end_struggle = yes }
		}
	}

	option = {
		name = fp3_struggle.0096.a
		trigger = {
			NOR = {
				has_trait = fp3_struggle_supporter
				faith = { has_doctrine = muhammad_succession_sunni_doctrine }
			}
		}
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}

	option = {
		name = fp3_struggle.0096.a
		trigger = {
			OR = {
				has_trait = fp3_struggle_supporter
				faith = { has_doctrine = muhammad_succession_sunni_doctrine }
			}
		}
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
	}
}

fp3_struggle.0100 = { # Temper the Caliphate, Vassalize Caliphate Ending
	type = character_event
	window = fullscreen_event
	title = fp3_struggle.0100.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = {
					faith = { 
						OR = {
							has_doctrine = muhammad_succession_shia_doctrine 
							has_doctrine = muhammad_succession_zandaqa_doctrine 
						}
					}
				}
				desc = fp3_struggle.0100.desc.shia_and_zandaqa
			}
			triggered_desc = {
				trigger = {
					faith = { has_doctrine = muhammad_succession_muhakkima_doctrine }
				}
				desc =  fp3_struggle.0100.desc.muhakkima
			}
			desc = fp3_struggle.0100.desc
		}
	}

	theme = court
	override_background = { reference = fp3_fullscreen_temper }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }

	immediate = {
		root = { save_scope_as = struggle_ender }
		title:d_sunni.holder = { save_scope_as = struggle_liege }
		fp3_struggle_ending_vassalize_caliph_effects = yes

		play_music_cue = struggleend_cue
	}

	option = {
		name = fp3_struggle.0100.a
		show_as_tooltip = { struggle:persian_struggle = { end_struggle = yes } }
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}

	after = {
		fp3_end_persian_struggle_effect = {
			ENDING = struggle_persia_ending_foundation_decision
			EVENT = fp3_struggle.0101
			FLAG = flag:fp3_struggle_vassalize_caliph_ending
		}
	}
}

fp3_struggle.0101 = { # Notification for relevant people
	type = character_event
	window = fullscreen_event
	title = fp3_struggle.0100.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_supporter
				}
				desc = fp3_struggle.0101.desc.supporter
			}
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_detractor
				}
				desc = fp3_struggle.0101.desc.detractor
			}

			triggered_desc = {
				trigger = {
					any_character_struggle = {
						involvement = involved
						is_struggle_type = persian_struggle
					}
				}
				desc = fp3_struggle.0101.desc.involved
			}
			triggered_desc = {
				trigger = {
					any_character_struggle = {
						involvement = interloper
						is_struggle_type = persian_struggle
					}
				}
				desc = fp3_struggle.0101.desc.interloper
			}
			desc = fp3_struggle.0101.desc.uninvolved
		}
	}
	theme = court
	override_background = { reference = fp3_fullscreen_temper }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }

	immediate = {
		show_as_tooltip = { struggle:persian_struggle = { end_struggle = yes } }

		play_music_cue = struggleend_cue
	}

	option = {
		name = fp3_struggle.0101.a
		trigger = {
			NOR = {
				has_trait = fp3_struggle_supporter
				faith = { has_doctrine = muhammad_succession_sunni_doctrine }
			}
		}
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}

	option = {
		name = fp3_struggle.0101.a
		trigger = {
			OR = {
				has_trait = fp3_struggle_supporter
				faith = { has_doctrine = muhammad_succession_sunni_doctrine }
			}
		}
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
	}
}

### SUNDERING THE CALIPHATE ### 0191 = 0200 ###
fp3_struggle.0191 = { # Sunder the Caliphate
	type = character_event
	title = fp3_struggle.0191.t
	desc = fp3_struggle.0191.desc
	theme = court
	left_portrait = {
		character = scope:sunderer
		animation = war_over_win
	}
	lower_right_portrait = scope:struggle_liege

	immediate = {
		# Select the caliph and destroy their title
		fp3_sundered_caliphate_effects = yes
	}

	option = {
		name = fp3_struggle.0191.a
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}
}

fp3_struggle.0192 = { # Notification for relevant people
	type = character_event
	title = fp3_struggle.0192.t

	desc = {
		first_valid = {
			triggered_desc = {
				trigger = {
					fp3_struggle_is_the_caliph = yes
				}
				desc = fp3_struggle.0192.desc.caliph
			}
			triggered_desc = {
				trigger = {
					OR = {
						has_trait = fp3_struggle_supporter
						is_vassal_of = scope:struggle_liege
					}
				}
				desc = fp3_struggle.0192.desc.supporter_or_vassal
			}
			triggered_desc = {
				trigger = {
					has_trait = fp3_struggle_detractor
				}
				desc = fp3_struggle.0192.desc.detractor
			}
		}
	}

	
	theme = court
	override_background = { reference = fp3_fullscreen_sunder }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }
	left_portrait = {
		character = scope:sunderer
		animation = war_over_win
	}
	lower_right_portrait = scope:struggle_liege

	option = {
		name = fp3_struggle.0192.c
		trigger = {
			NOR = {
				fp3_struggle_is_the_caliph = yes
				has_trait = fp3_struggle_supporter
			}
		}
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}

	option = {
		name = fp3_struggle.0192.b
		trigger = {
			OR = {
				fp3_struggle_is_the_caliph = yes
				has_trait = fp3_struggle_supporter
			}
		}
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_negative"
	}
}

###################################
# FP3 casus belli events
# By Joe Parkin
###################################

# Install loyal puppet - declared puppet ping
fp3_struggle.8000 = {
	type = letter_event
	opening = fp3_struggle.8000.t
	desc = {
		desc = fp3_struggle.8000.desc
	}
	sender = scope:attacker

	immediate = {
		send_interface_message = {
			type = event_struggle_neutral
			title = install_loyalist_puppet_declared_puppet
			left_icon = scope:attacker
			right_icon = scope:defender
			show_as_tooltip = {
				scope:attacker = {
					start_war = {
						casus_belli = "fp3_install_loyalist_cb"
						target = scope:defender
					}
				}
			}
		}
	}

	# Indeed?
	option = {
		name = fp3_struggle.8000.a
	}
}

# Install loyal puppet - declared defender ping
fp3_struggle.8001 = {
	type = letter_event
	opening = fp3_struggle.8000.t
	desc = {
		desc = fp3_struggle.8001.desc
	}
	sender = scope:attacker

	immediate = {
		send_interface_message = {
			type = event_struggle_bad
			title = install_loyalist_puppet_declared_defender
			left_icon = scope:attacker
			right_icon = scope:loyalist_puppet
			show_as_tooltip = {
				scope:attacker = {
					start_war = {
						casus_belli = "fp3_install_loyalist_cb"
						target = scope:defender
					}
				}
			}
		}
	}

	# Outrageous!
	option = {
		name = fp3_struggle.8001.a
	}
}

# Install loyal puppet - won puppet ping
fp3_struggle.8002 = {
	type = letter_event
	opening = fp3_struggle.8000.t
	desc = {
		desc = fp3_struggle.8002.desc
	}
	sender = scope:attacker

	immediate = {
		send_interface_message = {
			type = event_struggle_good
			title = install_loyalist_puppet_won_puppet
			left_icon = scope:attacker
			right_icon = scope:defender
			show_as_tooltip = {
				every_in_list = {
					list = title_to_steal
					save_scope_as = stolen_title
					root = { get_title = scope:stolen_title }
				}
				custom_tooltip = fp3_struggle.8002.alliance_tt
				if = {
					limit = { scope:defender.imprisoner ?= root }
					imprison = {
						target = scope:defender
						type = house_arrest
					}
				}
			}
		}
	}

	# Ok!
	option = {
		name = fp3_struggle.8002.a
	}
}


###################################
# Integrity Validation Events
# By Hugo Cortell
###################################
fp3_struggle.9980 = { # Validation of title
	type = character_event
	orphan = yes
	title = {
		desc = Hugo
		desc = game_concept_struggle_struggles
		desc = number_two
		desc = debug
	}
	desc = {
		desc = historical_commander_trait.0003.d
		desc = stress_threshold.3201.depressed.effect
	}

	theme = mental_break
	left_portrait = title:e_arabia.holder

	immediate = { title:e_arabia.holder = { add_piety = 30000 } } # Hard title validation

	option = {
		name = {
			text = {
				desc = martial_chivalry.2015.a
				desc = rivalry.1016.a.exposed
			}
		}
	}
}

fp3_struggle.9981 = { # Destroy e_arabia (used mostly for checking invalidations)
	hidden = yes
	orphan = yes
	immediate = { destroy_title = title:e_arabia }
}

fp3_struggle.9982 = { # Revision 2 nav event, to make QA's life easier and avoid unecessary crashes
	type = character_event
	title = {
		desc = Hugo
		desc = CHARACTER_POSS
		desc = intrigue_broken_modifier
		desc = game_concept_struggle
		desc = MENU
	}
	desc = {
		desc = bp1_yearly.9018.c
		desc = double_line_break
		desc = childhood.7400_mother_dead
		desc = double_line_break
		desc = yearly.7021.b
	}

	orphan = yes
	theme = mental_break

	option = { # Dynamically start a struggle
		trigger = { NOT = { exists = struggle:persian_struggle } }
		name = FRONTEND_MP_GAME_SETUP_HOST_NEW_GAME

		random_ruler = {
			limit = {
				top_liege = this
				location ?= { geographical_region = world_persian_empire }
			}
			primary_title = { save_scope_as = debug_caliph }
		}
		start_struggle = {
			struggle_type = persian_struggle
			start_phase = struggle_persia_phase_stabilisation
		}

		send_interface_message = { # Informs you of who the "debug caliph" is
			type = event_martial_bad
			title = trait_beauty_bad_1_desc
			left_icon = scope:debug_caliph
			right_icon = scope:debug_caliph.holder
		}
	}
	option = { # Go forward in the struggle flow
		name = dynn_Daflos_motto
		trigger = { exists = struggle:persian_struggle }

		if = {
			limit = { struggle:persian_struggle = { is_struggle_phase = struggle_persia_phase_unrest } }
			struggle:persian_struggle = { change_struggle_phase = { struggle_phase = struggle_persia_ending_phase_concession } }
		}
		else_if = {
			limit = { struggle:persian_struggle = { is_struggle_phase = struggle_persia_phase_stabilisation } }
			struggle:persian_struggle = { change_struggle_phase = { struggle_phase = struggle_persia_phase_unrest with_transition = yes } }
		}
	}
	option = { # Go backwards in the struggle flow
		name = default_retreat
		trigger = { exists = struggle:persian_struggle }

		if = {
			limit = { struggle:persian_struggle = { is_struggle_phase = struggle_persia_phase_unrest } }
			struggle:persian_struggle = { change_struggle_phase = { struggle_phase = struggle_persia_phase_stabilisation } }
		}
	}
	option = { name = EXIT_TO_DESKTOP } # Exit event without doing anything
}

fp3_struggle.9983 = { # Create Persian Empire Test
	hidden = yes
	orphan = yes
	immediate = {
		create_title_and_vassal_change = {
			type = created
			save_scope_as = change
		}
		title:e_persia = {
			change_title_holder = {
				holder = root
				change = scope:change
			}
		}
		resolve_title_and_vassal_change = scope:change
	}
}

fp3_struggle.9984 = { # Ending simulator - Allows you to end the struggle in a clean way, works better/is safer than commands
	type = character_event
	window = fullscreen_event
	title = ENDING_DECISION_AVAILABLE
	desc = ENDING_DECISION_BUTTON_LABEL_MULTIPLE
	orphan = yes
	theme = realm
	override_background = { reference = fp3_fullscreen_strength }
	override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" }

	widgets = {
		widget = {
			gui = "event_window_widget_struggle_info"
			container = "dynamic_content_widget"
			controller = struggle_info
			setup_scope = { struggle:persian_struggle = { save_scope_as = struggle } }
		}
	}

	immediate = {
		# Save Sunni caliph or previous one as scope:struggle_liege
		fp3_save_sunni_caliph_or_previous_effect = yes
	}

	option = { # Concession
		name = struggle_persia_ending_phase_concession
		save_scope_value_as = {
			name = ending_to_simulate
			value = flag:concession
		}
		trigger_event = fp3_struggle.9985
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}


	option = { # Assertion (Strengthen)
		name = struggle_persia_ending_assertion
		save_scope_value_as = {
			name = ending_to_simulate
			value = flag:strength
		}
		trigger_event = fp3_struggle.9985
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}

	option = { # Sunni Caliphate
		name = struggle_persia_ending_foundation_decision_option_shia
		save_scope_value_as = {
			name = ending_to_simulate
			value = flag:sunni
		}
		trigger_event = fp3_struggle.9985
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}

	option = { # Consume/Vassalize
		name = struggle_persia_ending_foundation_decision_option_vassalize
		save_scope_value_as = {
			name = ending_to_simulate
			value = flag:vassal
		}
		trigger_event = fp3_struggle.9985
		clicksound = "event:/DLC/FP3/SFX/UI/Notifications/Toasts/struggle_end_positive"
	}

	option = { name = EXIT_TO_DESKTOP }
}

fp3_struggle.9985 = { # Simulator Follow-up (keeps it hidden and clean to prevent QA panic)
	hidden = yes
	immediate = {
		struggle:persian_struggle = {
			# Ensure we are in the correct position to fire the ending
			if = { 
				limit = {
					scope:ending_to_simulate = flag:strength
					is_struggle_phase = struggle_persia_phase_unrest
				}
				change_struggle_phase = { struggle_phase = struggle_persia_phase_stabilisation }
			}
			else_if = {
				limit = {
					OR = {
						scope:ending_to_simulate = flag:sunni
						scope:ending_to_simulate = flag:vassal
					}
					is_struggle_phase = struggle_persia_phase_stabilisation
				}
				change_struggle_phase = { struggle_phase = struggle_persia_phase_unrest }
			}
		}
		# Cases for firing the correct phase
		switch = {
			trigger = scope:ending_to_simulate
			flag:concession	= { trigger_event = fp3_struggle.0081 }
			flag:sunni = { trigger_event = fp3_struggle.0095 }
			flag:vassal = { trigger_event = fp3_struggle.0100 }
			flag:strength = { trigger_event = fp3_struggle.0071 }
			
			fallback = {
				assert_if = {
					limit = { always = yes }
					text = "FP3 ENDING SIMULATION DEBUG TOOL ERROR: NO VALID scope:ending_to_simulate STATE!"
				}
			}
		}
	}
}
