namespace = fp2_struggle

######################################
# EL CID'S BIZARRE ADVENTURE SYSTEM
# By Hugo Cortell
######################################
fp2_struggle.2045 = {
	hidden = yes

	trigger = {
		is_landless_adventurer = no	
	}

	immediate = {
		if = { # Startup changes (give the cid his full nickname when he starts adventuring)
			limit = { NOT = { has_character_flag = has_already_begun_travelling } }
			
			remove_nickname = yes
			give_nickname = nick_the_cid_campeador
			add_character_flag = has_already_begun_travelling # Prevents yearly pulse from stacking up requests
			add_character_flag = blocked_from_leaving # Prevents el cid from vacationing in far away lands
		}

		if = {
			limit = { NOT = { has_character_flag = finished_el_cids_travels } } # In case several requests for the event are stacked up
			if = { # Being a guest is used as a boolean to check if the character is in an "evaluation" phase or already in a court. DO NOT USE THE GUEST SYSTEM FOR THIS.
				limit = { 
					OR = {
						is_pool_guest = yes
						is_pool_character = yes
						is_foreign_court_guest = yes
					} 
				}
				random_county_in_region = { # Naturally biased in favor of larger states
					limit = { exists = holder.liege }
					weight = {
						base = 1
						modifier = {
							add = 10
							holder.liege = { has_relation_friend = root }
						}
						modifier = {
							add = 30
							holder.liege = { has_relation_best_friend = root }
						}
						compare_modifier = {
							value = holder.prestige_level
							multiplier = 1.5
						}
					}
					region = world_europe_west_iberia # Locks el cid's forced travels to iberia
					holder.liege = { trigger_event = fp2_struggle.2051 }
				}
			}
			else = {
				if = {
					limit = { exists = liege }
					liege = { trigger_event = fp2_struggle.2050 } # This is you, you get the event, while el cid gets the "system event"
				}
				else = {
					employer = { trigger_event = fp2_struggle.2050 } # ditto
				}
			}
		}
	}
}


#############################################################
# Unease About El Sidi
# By The Content Design Team (And scripted by Hugo Cortell)
#############################################################

scripted_trigger el_cid_too_important_trigger = {
	OR = {
		any_extended_family_member = { this = scope:fp2_2050_el_cid }
		scope:fp2_2050_el_cid = { is_vassal_of = ROOT }
		has_relation_best_friend = scope:fp2_2050_el_cid
		is_spouse_of = scope:fp2_2050_el_cid
	}
}

fp2_struggle.2050 = {
	type = character_event
	title = {
		random_valid = {
			triggered_desc = { # Muslim Titles
				trigger = { religion = religion:islam_religion }
				desc = {
					random_valid = {
						desc = fp2_struggle.2050.t_muslim_one
						desc = fp2_struggle.2050.t_muslim_two
						desc = fp2_struggle.2050.t_muslim_three
						desc = fp2_struggle.2050.t_muslim_four
					}
				}
			}
	
			triggered_desc = { # Generic (Christian, nickname-like) Titles
				trigger = { NOT = { religion = religion:islam_religion } }
				desc = {
					random_valid = {
						desc = fp2_struggle.2050.t_generic_one
						desc = fp2_struggle.2050.t_generic_two
						desc = fp2_struggle.2050.t_generic_three
						desc = fp2_struggle.2050.t_generic_four
					}
				}
			}
		}
	}
	desc = { # See immediate for flags
		first_valid = {
			triggered_desc = {
				trigger = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:generic_court }
				desc = fp2_struggle.2050.desc_court
			}
			triggered_desc = {
				trigger = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:jelly_knights }
				desc = fp2_struggle.2050.desc_knights
			}
			triggered_desc = {
				trigger = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:upset_nobles }
				desc = fp2_struggle.2050.desc_nobles
			}
			triggered_desc = {
				trigger = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:faith_discomfort }
				desc = fp2_struggle.2050.desc_faith
			}
			desc = board_games.0001.desc.i_am_winning.trait.rowdy # Theoretically impossible to trigger, but if something breaks, players will see this and report it for sure
		}
	} 

	theme = corruption
	override_background = { reference = throne_room }
	left_portrait = {
		character = root
		animation = personality_rational
	}
	right_portrait = {
		character = scope:fp2_2050_el_cid
		animation = throne_room_two_handed_passive_1
	}

	immediate = {
		character:107590 = { save_scope_as = fp2_2050_el_cid }

		random_list = { # Spin the wheel to decide who and why wishes ill on el cid
			10 = { # Generic "the court thinks he is bad"
				save_scope_value_as = {
					name = fp2_2050_reason_for_kicking_out_el_cid
					value = flag:generic_court
				}
			}
			10 = { # Your knights are all sore losers
				modifier = {
					add = 30
					any_knight = {
						OR = {
							has_relation_rival = scope:fp2_2050_el_cid
							has_relation_nemesis = scope:fp2_2050_el_cid
						}
					}
				}
				save_scope_value_as = {
					name = fp2_2050_reason_for_kicking_out_el_cid
					value = flag:jelly_knights
				}
			}
			10 = { # Nobles dislike upstart poor people
				modifier = {
					add = 30
					any_vassal = {
						OR = {
							has_relation_rival = scope:fp2_2050_el_cid
							has_relation_nemesis = scope:fp2_2050_el_cid
						}
					}
				}
				save_scope_value_as = {
					name = fp2_2050_reason_for_kicking_out_el_cid
					value = flag:upset_nobles
				}
			}
			10 = { # Generic faith concerns from your bishop
				save_scope_value_as = {
					name = fp2_2050_reason_for_kicking_out_el_cid
					value = flag:faith_discomfort
				}
			}
		}
	}

	option = { # Family, Friend or Vassal
		name = fp2_struggle.2050.a

		trigger = { el_cid_too_important_trigger = yes }

		hidden_effect = {
			scope:fp2_2050_el_cid = { add_character_flag = finished_el_cids_travels } # At this point we can imagine that this character has settled, this stops the cycle to prevent spam
		}

		custom_tooltip = fp2_struggle.2050.a.serve_tooltip
		send_interface_toast = {
			type = event_toast_effect_good
			title = fp2_struggle.2050.a.notif.t
			right_icon = scope:fp2_2050_el_cid

			reverse_add_opinion = {
				target = scope:fp2_2050_el_cid
				modifier = stood_by_me_opinion
				opinion = 10
				years = 20
			}
		}

		stress_impact = {
			fickle = minor_stress_impact_gain
		}

		ai_chance = { base = 1000 }
	}

	option = { # No, I stand by my knight and he can stay!
		name = fp2_struggle.2050.b

		trigger = { 
			is_ai = no
			NOT = { scope:fp2_2050_el_cid = { is_vassal_of = ROOT } }
		}
		
		custom_tooltip = fp2_struggle.2050.a.serve_tooltip
		send_interface_toast = {
			type = event_toast_effect_good
			title = fp2_struggle.2050.a.notif.t
			right_icon = scope:fp2_2050_el_cid
		
			if = {
				limit = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:generic_court }
				add_character_modifier = {
					modifier = fp2_kept_accused_traitor_in_court_modifier
					years = 10
				}
			}
			else_if = {
				limit = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:jelly_knights }
				add_character_modifier = {
					modifier = fp2_kept_op_knight_in_court_modifier
					years = 10
				}
			}
			else_if = {
				limit = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:upset_nobles }
				add_character_modifier = {
					modifier = fp2_kept_upstart_knight_in_court_modifier
					years = 10
				}
			}
			else_if = {
				limit = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:faith_discomfort }
				add_character_modifier = {
					modifier = fp2_kept_godless_mercenary_in_court_modifier
					years = 10
				}
			}

			reverse_add_opinion = {
				target = scope:fp2_2050_el_cid
				modifier = stood_by_me_opinion
				opinion = 10
				years = 20
			}
			scope:fp2_2050_el_cid = {
				trigger_event = {
					id = fp2_struggle.2045
					years = { 4 12 }
				}
			}
		}

		stress_impact = {
			fickle = minor_stress_impact_gain
		}
	}

	option = { # Okay, please do not give me malus
		name = fp2_struggle.2050.c

		trigger = {
			NOT = { scope:fp2_2050_el_cid = { is_vassal_of = ROOT } }
		}

		send_interface_toast = {
			type = event_toast_effect_bad
			title = fp2_struggle.2051.t
			right_icon = scope:fp2_2050_el_cid
		
			scope:fp2_2050_el_cid = { 
				move_to_pool = yes 
				trigger_event = {
					id = fp2_struggle.2045
					days = { 1 4 }
				}
			}
		}

		stress_impact = {
			generous = minor_stress_impact_gain
		}

		ai_chance = { base = 1 }
	}

	option = { # Vanish el cid, even though he is your vassal (suggested by Max)
		name = fp2_struggle.2050.c

		trigger = {
			is_ai = no
			scope:fp2_2050_el_cid = { is_vassal_of = ROOT } 
		}

		# The only reason to ever select this option is to gain those "repossessed" lands, but it is very mean.
		# It will give you tyranny, but it won't directly anger your vassals as they are *narratively* the reason why this is happening.
		# The primary reason this exists is to prevent ludonarrative dissonance with the event's description. It is less resource intensive than making new loc.

		# We set the tyranny and opinion loss based on how much was lost (Placed outside the toast to prevent clutter)
		add_tyranny = {
			value = medium_tyranny_gain
			multiply = scope:fp2_2050_el_cid.primary_title.tier
		}

		if = {
			limit = { can_set_relation_rival_trigger = { CHARACTER = scope:fp2_2050_el_cid } }
			set_relation_rival = scope:fp2_2050_el_cid
		}
		if = { # This is not out of order, it is WAD. If can_set_relation_rival_trigger fails, you just lose a friend but not gain a rival.
			limit = { has_relation_friend = scope:fp2_2050_el_cid }
			remove_relation_friend = scope:fp2_2050_el_cid
		}

		if = {
			limit = { scope:fp2_2050_el_cid.primary_title.tier < tier_kingdom }
			scope:fp2_2050_el_cid = {
				add_opinion = {
					modifier = betrayed_me_opinion
					target = root
					opinion = -100
				}
			}
		}
		else = {
			scope:fp2_2050_el_cid = {
				add_opinion = {
					modifier = betrayed_me_opinion
					target = root
					opinion = -200
				}
			}
		}

		create_title_and_vassal_change = { # This tells the engine to start paying closer attention to title changes (and not butt in)
			type = revoked
			save_scope_as = change
		}
		scope:fp2_2050_el_cid = {
			every_held_title = {
				change_title_holder = {
					holder = root
					change = scope:change
				}
			}
		}
		resolve_title_and_vassal_change = scope:change # Tells the engine that it is safe to go about its buisness with titles

		show_as_tooltip = { scope:fp2_2050_el_cid = { move_to_pool = yes } }	# Just jomini things~
		hidden_effect = {														# Prevents rendering of toast on option highlight
			send_interface_toast = {
				type = event_toast_effect_bad
				title = fp2_struggle.2051.t
				right_icon = scope:fp2_2050_el_cid
			
				show_as_tooltip = { # Condensed version to fit into the toast
					if = {
						limit = { scope:fp2_2050_el_cid.primary_title.tier > tier_duchy }
						scope:fp2_2050_el_cid = {
							if = {
								limit = { has_relation_nemesis = ROOT }
								set_relation_nemesis = ROOT
							}
							add_opinion = {
								modifier = betrayed_me_opinion
								target = root
								opinion = -200
							}
						}
					}
					else = {
						if = {
							limit = { has_relation_rival = ROOT }
							set_relation_rival = ROOT
						}
						add_opinion = {
							modifier = betrayed_me_opinion
							target = root
							opinion = -100
						}
					}
				}
	
				# Standard stuff
				scope:fp2_2050_el_cid = { 
					move_to_pool = yes 
					trigger_event = {
						id = fp2_struggle.2045
						days = { 1 4 }
					}
				}
			}
		}

		stress_impact = { # This kind of action comes with quite a bit of stress
			generous		= minor_stress_impact_gain
			brave			= medium_stress_impact_gain
			forgiving		= major_stress_impact_gain
			gregarious		= medium_stress_impact_gain
			honest			= minor_stress_impact_gain
			humble			= medium_stress_impact_gain
			just			= major_stress_impact_gain
			trusting		= medium_stress_impact_gain
			compassionate	= major_stress_impact_gain
			august			= minor_stress_impact_gain
			gallant			= medium_stress_impact_gain
		}
	}
}


############################################################
# El Cid Arrives At Your Court
# By The Content Design Team (And scripted by Hugo Cortell)
############################################################
fp2_struggle.2051 = {
	type = character_event
	title = fp2_struggle.2051.t
	desc = fp2_struggle.2051.desc

	theme = vassal
	override_background = { reference = throne_room }
	left_portrait = {
		character = root
		animation = personality_rational
	}
	right_portrait = {
		character = scope:fp2_2050_el_cid
		animation = throne_room_one_handed_passive_1
	}

	immediate = {
		character:107590 = { save_scope_as = fp2_2050_el_cid }
		add_visiting_courtier = scope:fp2_2050_el_cid
	}

	option = { # You will enjoy a high position at my court!
		name = fp2_struggle.2051.a

		send_interface_toast = {
			type = event_toast_effect_good
			title = fp2_struggle.2050.a.notif.t
			right_icon = scope:fp2_2050_el_cid

			pay_treasury_or_gold = {
				target = scope:fp2_2050_el_cid
				value = medium_treasury_or_gold_value
			}
			add_courtier = scope:fp2_2050_el_cid
		}
		
		if = {
			limit = { exists = cp:councillor_marshal }
			fire_councillor = cp:councillor_marshal
		}
		assign_councillor_type = {
			type = councillor_marshal
			target = scope:fp2_2050_el_cid
		}

		scope:fp2_2050_el_cid = {
			add_opinion = {
				target = root
				modifier = hired_me_opinion
				opinion = 20
			}
			add_opinion = {
				target = root
				modifier = given_luxuries_opinion
				opinion = 10
			}

			trigger_event = {
				id = fp2_struggle.2045
				years = { 4 12 }
			}
		}

		trigger = { is_ai = no }
	}

	option = { # Welcome or whatever
		name = fp2_struggle.2051.b

		send_interface_toast = {
			type = event_toast_effect_good
			title = fp2_struggle.2050.a.notif.t
			right_icon = scope:fp2_2050_el_cid

			pay_treasury_or_gold = {
				target = scope:fp2_2050_el_cid
				value = minor_treasury_or_gold_value
			}
			add_courtier = scope:fp2_2050_el_cid
		}
		scope:fp2_2050_el_cid = {
			trigger_event = {
				id = fp2_struggle.2045
				years = { 4 10 }
			}
		}

		ai_chance = { base = 65 }
	}

	option = { # Away with you vile beggar!
		name = fp2_struggle.2051.c

		send_interface_toast = {
			type = event_toast_effect_bad
			title = fp2_struggle.2051.t
			right_icon = scope:fp2_2050_el_cid
		
			custom_tooltip = fp2_struggle.2050.c.notif
			scope:fp2_2050_el_cid = { 
				move_to_pool = yes 
				trigger_event = {
					id = fp2_struggle.2045
					days = { 1 4 }
				}
			}
		}

		ai_chance = { base = 45 }
	}
}
