namespace = fp1_yearly

##################################################
# #Standard Yearlies
# 0001 - 0010	An Escaping Thrall Robs You
# 0011 - 0020	Locals Call for Courtier to be Declared Nithing
# 0021 - 0030	Two of your Knights wish to Holmgang over a Dispute
# 0031 - 0040	A Mighty Warrior with a Big Personality Arrives
# 0041 - 0050	[Russia/Steppe] Islamic Explorer Visits Court
# 0051 - 0070	[Rural] A Dead Character is Rumoured to have become a Draugr
# 0071 - 0090	[Rural] A Troll has been sighted & is attacking villages/peasants
# 0091 - 0100	Commissioning a Longship for Yourself
# 0101 - 0110	A Guest/Courtier Challenges you to Riddles
# 0111 - 0120	Nithing Pole Raised Against Courtier
#
# #Flavour Yearlies
# 0501 - 0510	Out for a Sail - you spot a ship in distress.
# 0511 - 0520	The Stench of Success - a courtier won't let an old trophy go.
# 0521 - 0530	Blood on the Snow - your child wishes to snowball fight.
# 0531 - 0540	[Dynasty] on Ice - your child wants to learn how to ice skate.
# 0541 - 0550	The Beast of [Capital] - your child is playing pranks on courtiers.
# 0551 - 0560	Fishy Business - a courtier won't stop eating rotten fish.
# 0561 - 0570	My Arm Against Yours - a knight challenges you to arm-wrestling.
# 0571 - 0580	Petty Vandalism - your child has vandalised a runestone.
# 0581 - 0590	When I Grow Up - your child wishes to be a shieldperson.
# 0591 - 0600	Raised Voices at the Thing - two of your counties are fighting at a regional thing.
# 0601 - 0610	The Hardest Part of Ruling - you're incredibly bored in a protracted thing session.
# 0611 - 0620	Leading by Example - one of your children hurts another whilst imitating you.
# 0621 - 0630	A Shiny New Toy - your child wants a specific piece of loot from a raid.
# 0631 - 0640	A Cynical Bent - you notice a knight not sacrificing after a raid.
# 0641 - 0650	Worthy of the Ocean - your longships are in disrepair.
# 0651 - 0660	Leviathan - you spot a whale whilst sailing.
# 0661 - 0670	A Novel Challenge - a knight challenges you to skiing.
# 0671 - 0680	A Slippery Slope - your child wants to go sledding.
# 0681 - 0690	Why Can't I Come? - your child wants to come raiding.
# 0691 - 0700	Attempted Atonement - a knight has converted after raiding a reformed faith.
#
# #Special Yearlies
# 1001 - 1030	A Mysterious Stranger Stays at Court
# 1031 - 1060	RIP
# 1061 - 1071	Commissioning a Longship for a Funeral
# 1071 - 1080	Sparklingly Clean
# 1081 - 1090	Explorer from Phantom Islands
##################################################










##################################################
# STANDARD YEARLIES

##################################################
# An Escaping Thrall Robs You
# by Ewan Cowhig Croft
# 0001 - 0010
##################################################

scripted_trigger suitably_terrible_knight_trigger = {
	is_available_ai = yes
	is_ruler = no
	# Just make sure they have at least one knight with believably-bad prowess. Deliberately "<", rather than "<=".
	prowess < high_skill_rating
	# And uhh, for obvious reasons...
	NOT = { has_trait = blind }
}

#	A thrall leaves your court in the night.
fp1_yearly.0001 = {
	type = character_event
	title = fp1_yearly.0001.t
	desc = fp1_yearly.0001.desc
	theme = stewardship
	left_portrait = {
		character = scope:scapegoat
		animation = shame
	}
	override_background = { reference = throne_room }

	trigger = {
		#DLC check.
		has_fp1_dlc_trigger = yes
		#Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0001 }
		is_landed = yes
		#Must be able to raid, or else your thrall economy is being phased out.
		can_raid_trigger = yes
		#Should be North Germanic, or the flavour won't make sense.
		culture = { has_cultural_pillar = heritage_north_germanic }
		#Needs a knight for scapegoating.
		any_knight = {
			count >= 1
			suitably_terrible_knight_trigger = yes
		}
	}

	weight_multiplier = {
		base = 1

		#Weight up a little for rulers that thralls are desperate to escape from.
		modifier = {
			add = 0.5
			has_trait = sadistic
		}
		modifier = {
			add = 0.25
			has_trait = callous
		}

		#And weight down for anyone who's a bit nicer. Not to suggest that the thralls are treated particularly well, but they're not being casually murdered for fun like a sadist might.
		modifier = {
			add = -0.5
			has_trait = compassionate
		}
		modifier = {
			add = -0.25
			has_trait = forgiving
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0001
			days = 1825
		}
		# Pick a fall guy.
		random_knight = {
			limit = { suitably_terrible_knight_trigger = yes }
			weight = {
				# Every point of prowess a knight has lowers the chance for it to be them by 2%.
				base = 0
				modifier = {
					add = {
						value = 50
						subtract = prowess
					}
				}
				# And every point of compassion another 1%.
				modifier = { add = ai_compassion }
			}
			save_scope_as = scapegoat
		}
		# Give the escaped thrall a gender for loc.
		random_dummy_gender_effect = yes
		# Remove the stolen jewels.
		remove_short_term_gold = medium_gold_value
	}

	# Send out descriptions of the thrall and the stolen goods.
	option = {
		name = fp1_yearly.0001.a

		duel = {
			skill = stewardship
			value = decent_skill_rating
			# The thrall is spotted and captured several villages away.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0001.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0001.a.tt_success
					left_icon = root
					add_prestige = medium_prestige_gain
					add_gold = medium_gold_value
				}
			}
			# The thrall slips the net, with your stolen goods.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0001.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0001.a.tt_failure
					left_icon = root
					custom_tooltip = fp1_yearly.0001.gold_stays_lost.tt
				}
			}
		}

		stress_impact = {
			diligent = medium_stress_impact_loss
			lazy = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 0.5
				ai_rationality = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = lazy
			}
		}
	}

	#Start a manhunt.
	option = {
		name = fp1_yearly.0001.b

		duel = {
			skill = martial
			value = decent_skill_rating
			#The thrall is caught before they can get far.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0001.b.tt_success
				send_interface_toast = {
					title = fp1_yearly.0001.b.tt_success
					left_icon = root
					add_prestige = medium_prestige_gain
					add_gold = medium_gold_value
				}
			}
			#The thrall slips the net, with your stolen goods.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0001.b.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0001.b.tt_failure
					left_icon = root
					custom_tooltip = fp1_yearly.0001.gold_stays_lost.tt
				}
			}
		}

		stress_impact = {
			diligent = medium_stress_impact_loss
			lazy = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 0.5
				ai_rationality = 0.25
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = diligent
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = lazy
			}
		}
	}

	#Fine scope:scapegoat.
	option = {
		name = fp1_yearly.0001.c

		#And no money was lost after all.
		add_prestige = medium_prestige_gain

		#Unless you're scope:scapegoat.
		scope:scapegoat = {
			pay_short_term_gold = {
				target = root
				gold = root.medium_gold_value
			}
			#Who is, understandably, a bit miffed.
			progress_towards_rival_effect = {
				REASON = rival_thrall_scapegoat
				CHARACTER = root
				OPINION = 0
			}
			add_opinion = {
				target = root
				modifier = angry_opinion
				opinion = -20
			}
		}

		stress_impact = {
			wrathful = minor_stress_impact_loss
			greedy = medium_stress_impact_loss
			vengeful = major_stress_impact_loss
			calm = minor_stress_impact_gain
			generous = medium_stress_impact_gain
			forgiving = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.25
				ai_compassion = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = wrathful
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = greedy
			}
			modifier = {	#Weight up for stress.
				add = 30
				has_trait = vengeful
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = calm
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = generous
			}
			modifier = {	#Weight down for stress.
				add = -30
				has_trait = forgiving
			}
		}
	}

	#Not your fault, scope:scapegoat. These things happen.
	option = {
		name = fp1_yearly.0001.d

		#Some assets are gone for good.
		custom_tooltip = fp1_yearly.0001.gold_stays_lost.tt

		#Welp, you _did_ show clemency.
		if = {
			limit = {
				can_add_hook = {
					type = favor_hook
					target = scope:scapegoat
				}
			}
			add_hook = {
				type = favor_hook
				target = scope:scapegoat
			}
		}
		scope:scapegoat = {
			add_opinion = {
				target = root
				modifier = relieved_opinion
				opinion = 20
			}
		}

		stress_impact = {
			calm = minor_stress_impact_loss
			generous = medium_stress_impact_loss
			forgiving = major_stress_impact_loss
			wrathful = minor_stress_impact_gain
			greedy = medium_stress_impact_gain
			vengeful = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_vengefulness = -0.5
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = calm
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = generous
			}
			modifier = {	#Weight up for stress.
				add = 30
				has_trait = forgiving
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = wrathful
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = greedy
			}
			modifier = {	#Weight down for stress.
				add = -30
				has_trait = vengeful
			}
		}
	}
}

##################################################
# Locals Call for Courtier to be Declared Nithing
# by Ewan Cowhig Croft
# 0011 - 0020
##################################################

scripted_trigger offensive_courtier_candidate_trigger = {
	#Filter out the basic miscs.
	is_available_ai_adult = yes
	#Have some commited some genuine malfeasance, or just be irritating to at least some people.
	OR = {
		#Having committed murder by poison is a solid way to become a nithing; this might be a secret, but we assume local rumours about a shady buyer of poisons abound...
		has_character_flag = murdered_by_poison
		#Legitimately being a witch, and a Germanic Pagan one at that, is a good reason, though all parties have to agree on that being a bad thing first.
		AND = {
			faith = { has_doctrine_parameter = witchcraft_illegal }
			root.faith = { has_doctrine_parameter = witchcraft_illegal }
			root.capital_county.faith = { has_doctrine_parameter = witchcraft_illegal }
			OR = {
				has_trait = witch
				any_secret = { type = secret_witch }
			}
		}
		#Irritating personality traits can be cause for suspicion.
		has_trait = wrathful
		has_trait = deceitful
		has_trait = craven
		has_trait = ambitious
		has_trait = arbitrary
		has_trait = paranoid
		has_trait = sadistic
		has_trait = stubborn
		has_trait = vengeful
		#And really anyone dealing with herbs, potions, poisons, or alchemy.
		has_trait = lifestyle_mystic
		has_trait = lifestyle_physician
		has_trait = lifestyle_herbalist
	}
	#If they're heir to a player, then they should only be the heir of the player making the decision.
	OR = {
		#Plus we need to filter out anyone who isn't an heir at all.
		any_heir_title = { count = 0 }
		any_heir_title = {
			is_title_created = yes
			holder = {
				is_ai = no
				this != root
			}
		}
	}
}

scripted_effect agree_to_courtier_becoming_nithing_effect = {
	# First, we remove any legal relations.
	## Specifically marriage.
	if = {
		limit = {
			any_spouse = { this = root }
			root.faith = {
				# _Technically_ they're 'dead' and this isn't a divorce, but if divorce was as easy as declaring your spouse legally dead, Henry VIII would've remained a good Catholic boi till the end of his days.
				NOT = { has_doctrine = doctrine_divorce_disallowed }
			}
		}
		divorce_effect = {
			DIVORCER = root
			DIVORCEE = scope:offensive_courtier
		}
	}
	## And concubinage.
	if = {
		limit = {
			scope:offensive_courtier = { is_concubine_of = root }
		}
		root = { remove_concubine = scope:offensive_courtier }
	}
	# Then we evict them.
	banish = yes # banish_effect not used for unlanded
	# Which naturally causes some friction.
	add_opinion = {
		target = root
		modifier = hate_opinion
		opinion = -75
	}
	## Including some ramifications later, potentially.
	hidden_effect = {
		if = {
			limit = {
				can_set_relation_potential_rival_trigger = { CHARACTER = scope:offensive_courtier }
			}
			set_relation_potential_rival = scope:offensive_courtier
		}
	}
	# And, finally, let the whole world know.
	add_character_modifier = {
		modifier = nithing_fp1_modifier
		years = 20
	}
}

#	Locals call for one of your courtiers to be exiled as a nithing.
fp1_yearly.0011 = {
	type = character_event
	title = fp1_yearly.0011.t
	desc = {
		desc = fp1_yearly.0011.desc
		# And if they have a hard-to-live with virtue...
		triggered_desc = {
			trigger = { exists = scope:priest }
			desc = fp1_yearly.0011.desc.priest
		}
	}
	theme = realm
	left_portrait = {
		character = scope:offensive_courtier
		animation = shock
	}
	right_portrait = {
		character = scope:priest
		animation = dismissal
	}

	trigger = {
		#DLC check.
		has_fp1_dlc_trigger = yes
		#Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0011 }
		is_landed = yes
		#Must have at least one suitable courtier.
		any_courtier = { offensive_courtier_candidate_trigger = yes }
		#Both yourself and your capital must be Germanic Pagans.
		religion = religion:germanic_religion
		capital_county.religion = religion:germanic_religion
	}

	weight_multiplier = {
		base = 1
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0011
			days = 3650
		}
		# Save the capital for loc.
		capital_barony = { save_scope_as = capital_barony }
		# Pick a suitable courtier to be the nithing.
		random_courtier = {
			limit = { offensive_courtier_candidate_trigger = yes }
			# Make sure we grab someone interesting.
			weight = {
				base = 1

				# Claimants are good picks.
				modifier = {
					add = 10
					is_claimant = yes
				}
				# Highly-skilled characters are good picks.
				modifier = {
					add = 5
					diplomacy >= decent_skill_rating
				}
				modifier = {
					add = 5
					martial >= decent_skill_rating
				}
				modifier = {
					add = 5
					stewardship >= decent_skill_rating
				}
				modifier = {
					add = 5
					intrigue >= decent_skill_rating
				}
				modifier = {
					add = 5
					learning >= decent_skill_rating
				}
				modifier = {
					add = 5
					prowess >= decent_skill_rating
				}
				# Characters with some relation to root are adequate picks.
				modifier = {
					add = 10
					has_important_relationship_trigger = { CHARACTER = root }
				}
			}
			# Nab them for use elsewhere.
			save_scope_as = offensive_courtier
		}
		# Does scope:offensive_courtier have any virtuous traits that are offensive to the commonfolk? If so, designate a priest to defend them.
		if = {
			limit = {
				scope:offensive_courtier = {
					OR = {
						# wrathful
						AND = {
							has_trait = wrathful
							faith = { trait_is_virtue = wrathful }
						}
						# deceitful
						AND = {
							has_trait = deceitful
							faith = { trait_is_virtue = deceitful }
						}
						# craven
						AND = {
							has_trait = craven
							faith = { trait_is_virtue = craven }
						}
						# ambitious
						AND = {
							has_trait = ambitious
							faith = { trait_is_virtue = ambitious }
						}
						# arbitrary
						AND = {
							has_trait = arbitrary
							faith = { trait_is_virtue = arbitrary }
						}
						# paranoid
						AND = {
							has_trait = paranoid
							faith = { trait_is_virtue = paranoid }
						}
						# sadistic
						AND = {
							has_trait = sadistic
							faith = { trait_is_virtue = sadistic }
						}
						# stubborn
						AND = {
							has_trait = stubborn
							faith = { trait_is_virtue = stubborn }
						}
						# vengeful
						AND = {
							has_trait = vengeful
							faith = { trait_is_virtue = vengeful }
						}
					}
				}
				any_learning_councillor = { exists = this }
			}
			random_learning_councillor = { save_scope_as = priest }
		}
	}

	# Family: disinherit & banish.
	option = {
		name = fp1_yearly.0011.a
		trigger = { house = scope:offensive_courtier.house }

		# The nithing is exiled utterly.
		scope:offensive_courtier = {
			disinherit_effect = { DISINHERITOR = root }
			agree_to_courtier_becoming_nithing_effect = yes
		}

		# Your capital is pretty happy about the nithing being given the boot.
		capital_county = {
			add_county_modifier = {
				modifier = nithing_exiled_fp1_modifier
				years = 10
			}
		}

		stress_impact = {
			vengeful = major_stress_impact_loss
			forgiving = massive_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.5
				ai_boldness = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = vengeful
			}
			modifier = {	# Weight down for stress.
				add = -40
				has_trait = forgiving
			}
		}
	}

	# Non-family: banish them.
	option = {
		name = fp1_yearly.0011.b
		trigger = {
			house != scope:offensive_courtier.house
		}

		# The nithing is exiled utterly.
		scope:offensive_courtier = { agree_to_courtier_becoming_nithing_effect = yes }

		# Your capital is pretty happy about the nithing being given the boot.
		capital_county = {
			add_county_modifier = {
				modifier = nithing_exiled_fp1_modifier
				years = 10
			}
		}

		stress_impact = {
			vengeful = major_stress_impact_loss
			forgiving = massive_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.5
				ai_boldness = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = vengeful
			}
			modifier = {	# Weight down for stress.
				add = -40
				has_trait = forgiving
			}
		}
	}

	# Harbour them against the angry mob.
	option = {
		name = fp1_yearly.0011.c

		# Get a favour, or at least some opinion.
		if = {
			limit = {
				can_add_hook = {
					type = favor_hook
					target = scope:offensive_courtier
				}
			}
			add_hook = {
				type = favor_hook
				target = scope:offensive_courtier
			}
		}
		else = {
			reverse_add_opinion = {
				modifier = fp1_saved_me_from_the_mob_opinion
				target = scope:offensive_courtier
			}
		}

		# Your capital county isn't super happy about this, though.
		capital_county = {
			add_county_modifier = {
				modifier = nithing_harboured_fp1_modifier
				years = 10
			}
		}

		stress_impact = {
			forgiving = major_stress_impact_loss
			vengeful = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight down for stress.
				add = 30
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = vengeful
			}
		}
	}

	# Refuse to rule.
	option = {
		name = fp1_yearly.0011.d

		# Not your circus, not your trained dancing bears.
		add_stress = massive_stress_loss

		# Both capital_county & scope:offensive_courtier are unhappy with your inaction.
		reverse_add_opinion = {
			modifier = fp1_abandoned_me_to_the_mob_opinion
			target = scope:offensive_courtier
		}
		capital_county = {
			add_county_modifier = {
				modifier = nithing_in_limbo_fp1_modifier
				years = 10
			}
		}

		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = -0.25
				ai_energy = -0.5
			}
		}
	}
}

##################################################
# Two of your Knights wish to Holmgang over a Dispute
# by Ewan Cowhig Croft
# 0021 - 0030
##################################################

scripted_trigger suitable_knight_for_dispute_trigger = {
	is_available_ai_adult = yes
	#Nab them for checking various things later in the event.
	save_temporary_scope_as = current_knight
	#Filter out rulers, as the loc mismatches such tonally.
	is_ruler = no
	#They have to be at least not non-argumentative.
	NOR = {
		has_trait = forgiving
		has_trait = craven
	}
	#For the sake of ease, they shouldn't have a positive special relationship with any other knight.
	NOT = {
		root = {
			any_knight = {
				has_friendly_relationship_trigger = { CHARACTER = scope:current_knight }
			}
		}
	}
	#Is the character hookable for the event results?
	root = {
		can_add_hook = {
			type = favor_hook
			target = scope:current_knight
		}
	}
}

scripted_trigger deviant_knight_trigger = {
	OR = {
		has_trait = deviant
		any_secret = { type = secret_deviant }
	}
}

scripted_effect holmgang_results_effect = {
	if = {
		limit = { government_has_flag = government_is_tribal }
		$LOSER$ = {
			death = {
				killer = $WINNER$
				death_reason = death_duel
			}
		}
	}
	else = {
		$LOSER$ = {
			increase_wounds_effect = { REASON = duel }
		}
	}
}

#	Two knights fight to the death over nothing.
fp1_yearly.0021 = {
	type = character_event
	title = fp1_yearly.0021.t
	desc = {
		desc = fp1_yearly.0021.desc.intro
		first_valid = {
			triggered_desc = {
				trigger = { scope:dispute_nature = flag:doggo }
				desc = fp1_yearly.0021.desc.doggo
			}
			triggered_desc = {
				trigger = { scope:dispute_nature = flag:spit_of_land }
				desc = fp1_yearly.0021.desc.spit_of_land
			}
			triggered_desc = {
				trigger = { scope:dispute_nature = flag:unrepeatable_insult }
				desc = fp1_yearly.0021.desc.unrepeatable_insult
			}
			triggered_desc = {
				trigger = { scope:dispute_nature = flag:escalating_prank_war }
				desc = fp1_yearly.0021.desc.escalating_prank_war
			}
			triggered_desc = {
				trigger = { scope:dispute_nature = flag:religious_differences }
				desc = fp1_yearly.0021.desc.religious_differences
			}
			triggered_desc = {
				trigger = { scope:dispute_nature = flag:stolen_pig }
				desc = fp1_yearly.0021.desc.stolen_pig
			}
			# Female Variant.
			triggered_desc = {
				trigger = {
					scope:dispute_nature = flag:defiled_longboat
					scope:defiling_knight = { is_female = yes }
				}
				desc = fp1_yearly.0021.desc.defiled_longboat.woman
			}
			# Male Variant.
			triggered_desc = {
				trigger = {
					scope:dispute_nature = flag:defiled_longboat
					scope:defiling_knight = { is_male = yes }
				}
				desc = fp1_yearly.0021.desc.defiled_longboat
			}
			triggered_desc = {
				trigger = { scope:dispute_nature = flag:board_game }
				desc = fp1_yearly.0021.desc.board_game
			}
		}
		desc = fp1_yearly.0021.desc.outro
	}
	theme = unfriendly
	left_portrait = {
		character = scope:first_knight
		animation = anger
	}
	right_portrait = {
		character = scope:second_knight
		animation = disgust
	}
	override_background = { reference = wilderness }

	trigger = {
		#DLC check.
		has_fp1_dlc_trigger = yes
		#Standard checks.
		is_available_at_peace_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0021 }
		is_landed = yes
		#Must be North Germanic.
		culture = { has_cultural_pillar = heritage_north_germanic }
		#Holmgangs must still be in fashion.
		NOT = {
			culture = { has_cultural_era_or_later = culture_era_high_medieval }
		}
		#Must have at least two knights available who can get into a dispute.
		any_knight = {
			count >= 2
			suitable_knight_for_dispute_trigger = yes
		}
	}

	weight_multiplier = {
		base = 1
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0021
			days = 1825
		}
		#Sort Actors.
		##Grab capital barony for loc.
		capital_barony = { save_scope_as = capital_barony }
		##Grab the first knight.
		random_knight = {
			limit = { suitable_knight_for_dispute_trigger = yes }
			save_scope_as = first_knight
		}
		##Grab the second knight.
		random_knight = {
			limit = {
				suitable_knight_for_dispute_trigger = yes
				this != scope:first_knight
			}
			save_scope_as = second_knight
		}
		##Just make them hate each other a little.
		scope:first_knight = {
			add_opinion = {
				target = scope:second_knight
				modifier = respect_opinion
				opinion = -40
			}
			reverse_add_opinion = {
				target = scope:second_knight
				modifier = respect_opinion
				opinion = -40
			}
			progress_towards_rival_effect = {
				REASON = rival_knights_slapfight
				CHARACTER = scope:second_knight
				OPINION = 0
			}
		}
		#Pick which dispute type they'll have.
		##Eight options of 12.5% chance each.
		random_list = {
			#Dispute over a pet killed in an accident.
			125 = {
				#No trigger, fallback.
				save_scope_value_as = {
					name = dispute_nature
					value = flag:doggo
				}
				select_local_animal_effect = { TYPE = any } # Save scope to limit possible animals: any/big/small/dangerous/harmless/prowling
				# And, if scope:second_knight actually has a doggo, kill it.
				scope:second_knight = {
					if = {
						limit = {
							any_owned_story = {
								type = story_cycle_pet_dog
								exists = story_owner.var:story_cycle_dog_name
							}
						}
						random_owned_story = {
							type = story_cycle_pet_dog
							limit = {
								exists = story_owner.var:story_cycle_dog_name
							}
							story_owner = {
								add_character_flag = {
									flag = dog_is_dying
								}
								trigger_event = pet_animal.1199
							}
						}
					}
				}
			}
			#Dispute over a spit of land that grows the best cabbages.
			125 = {
				#Both knights must care at least a little about money, and at least one a little too much.
				trigger = {
					NOR = {
						scope:first_knight = {
							OR = {
								has_trait = generous
								has_trait = profligate
								has_trait = improvident
							}
						}
						scope:second_knight = {
							OR = {
								has_trait = generous
								has_trait = profligate
								has_trait = improvident
							}
						}
					}
					OR = {
						scope:first_knight = { has_trait = greedy }
						scope:second_knight = { has_trait = greedy }
					}
				}
				save_scope_value_as = {
					name = dispute_nature
					value = flag:spit_of_land
				}
			}
			#Dispute over an unrepeatable insult involving a goat & a good drinking horn.
			125 = {
				#Both knights must be the type to let the insult escalate, and at least one to take it too far.
				trigger = {
					NOR = {
						scope:first_knight = { has_trait = calm }
						scope:second_knight = { has_trait = calm }
					}
					OR = {
						scope:first_knight = { has_trait = wrathful }
						scope:first_knight = { has_trait = wrathful}
					}
				}
				save_scope_value_as = {
					name = dispute_nature
					value = flag:unrepeatable_insult
				}
			}
			#Dispute resulting from an escalating prank war.
			125 = {
				#Both knights must be people who might get involved in such a thing, and one should be the type to take it too far.
				trigger = {
					NOR = {
						scope:first_knight = {
							OR = {
								has_trait = shy
								has_trait = reclusive
							}
						}
						scope:second_knight = {
							OR = {
								has_trait = shy
								has_trait = reclusive
							}
						}
					}
					OR = {
						scope:first_knight = { has_trait = vengeful }
						scope:second_knight = { has_trait = vengeful }
					}
				}
				save_scope_value_as = {
					name = dispute_nature
					value = flag:escalating_prank_war
				}
			}
			#Dispute over religious differences.
			125 = {
				#Both knights must find each other's faiths disagreeable.
				trigger = {
					scope:first_knight.faith = {
						faith_hostility_level = {
							target = scope:second_knight.faith
							value >= faith_hostile_level
						}
					}
					scope:second_knight.faith = {
						faith_hostility_level = {
							target = scope:first_knight.faith
							value >= faith_hostile_level
						}
					}
					#Quietly exclude sceptics also.
					NOR = {
						scope:first_knight = { has_trait = cynical }
						scope:second_knight = { has_trait = cynical }
					}
				}
				save_scope_value_as = {
					name = dispute_nature
					value = flag:religious_differences
				}
			}
			#Dispute over a stolen pig.
			125 = {
				trigger = {
					#Exempt faiths that don't eat pork: technically the pig could be as a pet or for non-edible purposes, but it scans best if we just don't bring this up.
					NOR = {
						scope:first_knight = {
							OR = {
								religion = religion:judaism_religion
								religion = religion:islam_religion
							}
						}
						scope:second_knight = {
							OR = {
								religion = religion:judaism_religion
								religion = religion:islam_religion
							}
						}
					}
				}
				save_scope_value_as = {
					name = dispute_nature
					value = flag:stolen_pig
				}
			}
			#Dispute resulting from someone making a sea-going vessel a bit saltier.
			125 = {
				#Requires at least one knight to be a deviant.
				trigger = {
					OR = {
						scope:first_knight = { deviant_knight_trigger = yes }
						scope:second_knight = { deviant_knight_trigger = yes }
					}
				}
				save_scope_value_as = {
					name = dispute_nature
					value = flag:defiled_longboat
				}
				#Specify who defiled who's longboat.
				if = {
					limit = {
						scope:first_knight = { deviant_knight_trigger = yes }
					}
					scope:first_knight = { save_scope_as = defiling_knight }
					scope:second_knight = { save_scope_as = unfortunate_knight }
				}
				else = {
					scope:second_knight = { save_scope_as = defiling_knight }
					scope:first_knight = { save_scope_as = unfortunate_knight }
				}
			}
			#Dispute resulting from the mysterious Viking board game.
			125 = {
				#No trigger, fallback.
				save_scope_value_as = {
					name = dispute_nature
					value = flag:board_game
				}
			}
		}
	}

	#Strictly forbid them.
	option = {
		name = fp1_yearly.0021.b

		#Then, we see if your rule is feared or jeered.
		duel = {
			skill = intrigue
			value = 12
			#You successfully terrify them into not fighting.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0021.b.tt_success
				send_interface_toast = {
					title = fp1_yearly.0021.b.tt_success
					left_icon = scope:first_knight
					add_dread = medium_dread_gain
					add_prestige = minor_prestige_gain
				}
			}
			#They begrudgingly agree not to fight, but shit-talk you for it.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0021.b.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0021.b.tt_failure
					left_icon = scope:first_knight
					add_dread = medium_dread_loss
					add_prestige = minor_prestige_loss
				}
			}
		}

		#Regardless of outcome, they dislike you for this.
		reverse_add_opinion = {
			target = scope:first_knight
			modifier = respect_opinion
			opinion = -30
		}
		reverse_add_opinion = {
			target = scope:second_knight
			modifier = respect_opinion
			opinion = -30
		}

		stress_impact = {
			arbitrary = minor_stress_impact_loss
			just = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = -0.25
				ai_vengefulness = -0.25
				ai_rationality = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = arbitrary
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = just
			}
		}
	}

	#Bet on scope:first_knight.
	option = {
		name = fp1_yearly.0021.c

		#Sort the duel.
		scope:first_knight = {
			duel = {
				skill = prowess
				target = scope:second_knight
				#scope:first_knight wins!
				50 = {
					compare_modifier = {
						value = scope:duel_value
						multiplier = 3.5
						min = -49
					}
					desc = fp1_yearly.0021.c.tt_success
					root = {
						send_interface_toast = {
							title = fp1_yearly.0021.c.tt_success
							left_icon = scope:first_knight
							add_gold = minor_gold_value
							holmgang_results_effect = {
								WINNER = scope:first_knight
								LOSER = scope:second_knight
							}
						}
					}
				}
				#scope:second_knight wins!
				50 = {
					compare_modifier = {
						value = scope:duel_value
						multiplier = -3.5
						min = -49
					}
					desc = fp1_yearly.0021.c.tt_failure
					root = {
						send_interface_toast = {
							title = fp1_yearly.0021.c.tt_failure
							left_icon = scope:second_knight
							remove_short_term_gold = minor_gold_value
							holmgang_results_effect = {
								WINNER = scope:second_knight
								LOSER = scope:first_knight
							}
						}
					}
				}
			}
		}

		stress_impact = {
			greedy = minor_stress_impact_loss
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 0.5
				ai_compassion = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = greedy
			}
		}
	}

	#Bet on scope:second_knight.
	option = {
		name = fp1_yearly.0021.d

		#Sort the duel.
		scope:first_knight = {
			duel = {
				skill = prowess
				target = scope:second_knight
				#scope:first_knight wins!
				50 = {
					compare_modifier = {
						value = scope:duel_value
						multiplier = 3.5
						min = -49
					}
					desc = fp1_yearly.0021.d.tt_failure
					root = {
						send_interface_toast = {
							title = fp1_yearly.0021.d.tt_failure
							left_icon = scope:first_knight
							remove_short_term_gold = minor_gold_value
							holmgang_results_effect = {
								WINNER = scope:first_knight
								LOSER = scope:second_knight
							}
						}
					}
				}
				#scope:second_knight wins!
				50 = {
					compare_modifier = {
						value = scope:duel_value
						multiplier = -3.5
						min = -49
					}
					desc = fp1_yearly.0021.d.tt_success
					root = {
						send_interface_toast = {
							title = fp1_yearly.0021.d.tt_success
							left_icon = scope:second_knight
							add_gold = minor_gold_value
							holmgang_results_effect = {
								WINNER = scope:second_knight
								LOSER = scope:first_knight
							}
						}
					}
				}
			}
		}

		stress_impact = {
			greedy = minor_stress_impact_loss
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 0.5
				ai_compassion = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = greedy
			}
		}
	}

	#Grant them permission.
	option = {
		name = fp1_yearly.0021.a

		#Sort the duel.
		scope:first_knight = {
			duel = {
				skill = prowess
				target = scope:second_knight
				#scope:first_knight wins!
				50 = {
					compare_modifier = {
						value = scope:duel_value
						multiplier = 3.5
						min = -49
					}
					desc = fp1_yearly.0021.a.tt_success
					root = {
						send_interface_toast = {
							title = fp1_yearly.0021.a.tt_success
							left_icon = scope:first_knight
							add_hook = {
								type = favor_hook
								target = scope:first_knight
							}
							holmgang_results_effect = {
								WINNER = scope:first_knight
								LOSER = scope:second_knight
							}
						}
					}
				}
				#scope:second_knight wins!
				50 = {
					compare_modifier = {
						value = scope:duel_value
						multiplier = -3.5
						min = -49
					}
					desc = fp1_yearly.0021.a.tt_failure
					root = {
						send_interface_toast = {
							title = fp1_yearly.0021.a.tt_failure
							left_icon = scope:second_knight
							add_hook = {
								type = favor_hook
								target = scope:second_knight
							}
							holmgang_results_effect = {
								WINNER = scope:second_knight
								LOSER = scope:first_knight
							}
						}
					}
				}
			}
		}

		stress_impact = {
			just = minor_stress_impact_loss
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = 0.5
				ai_vengefulness = 0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = just
			}
		}
	}
}

##################################################
# A Mighty Warrior with a Big Personality Arrives
# by Ewan Cowhig Croft
# 0031 - 0040
##################################################

scripted_trigger fp1_0031_any_valid_king_trigger = {
	#Make sure it's a kingdom that's known about.
	in_diplomatic_range = root
	#And that the warrior isn't lying about someone the friend cares for.
	NOR = {
		any_close_or_extended_family_member = { this = root }
		any_spouse = { this = root }
	}
	#We're quite happy to suggest that the warrior is lying, but make sure that it's not an excessively dodgy lie.
	OR = {
		any_child = { count = 0 }
		any_child = {
			count = all
			is_physically_able_adult = yes
		}
	}
}

#	A deceitful warrior is telling tall-tales at court.
fp1_yearly.0031 = {
	type = character_event
	title = fp1_yearly.0031.t
	desc = {
		desc = fp1_yearly.0031.desc.intro
		first_valid = {
			triggered_desc = {
				trigger = { scope:lie_nature = flag:sunk_longboat }
				desc = fp1_yearly.0031.desc.sunk_longboat
			}
			triggered_desc = {
				trigger = { scope:lie_nature = flag:wrestled_whale }
				desc = fp1_yearly.0031.desc.wrestled_whale
			}
			triggered_desc = {
				trigger = {
					scope:lie_nature = flag:charged_city
					exists = scope:fruit_knife
				}
				desc = fp1_yearly.0031.desc.charged_city_fruit_knife
			}
			triggered_desc = {
				trigger = {
					scope:lie_nature = flag:charged_city
					NOT = { exists = scope:fruit_knife }
				}
				desc = fp1_yearly.0031.desc.charged_city
			}
			triggered_desc = {
				trigger = { scope:lie_nature = flag:kept_iceland_afloat }
				desc = fp1_yearly.0031.desc.kept_iceland_afloat
			}
			triggered_desc = {
				trigger = { scope:lie_nature = flag:wooed_heir }
				desc = fp1_yearly.0031.desc.wooed_heir
			}
			triggered_desc = {
				trigger = { scope:lie_nature = flag:hunted_troll }
				desc = fp1_yearly.0031.desc.hunted_troll
			}
		}
		desc = fp1_yearly.0031.desc.outro
	}
	theme = intrigue
	left_portrait = {
		character = root
		animation = toast
		triggered_animation = {
			trigger = {
				has_trait = impatient
			}
			animation = boredom
		}
	}
	right_portrait = {
		character = scope:lying_warrior
		animation = storyteller
	}
	override_background = { reference = feast }

	trigger = {
		#DLC check.
		has_fp1_dlc_trigger = yes
		#Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0031 }
		is_landed = yes
		#Must be some form of North Germanic culture.
		culture = { has_cultural_pillar = heritage_north_germanic }
		#And that culture must not be too advanced.
		culture = {
			NOT = { has_cultural_era_or_later = culture_era_high_medieval }
		}
	}

	weight_multiplier = {
		base = 1
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0031
			days = 1825
		}
		#Save the capital for loc.
		capital_barony = { save_scope_as = capital_barony }
		#Create our lying warrior.
		create_character = {
			location = root.capital_province
			template = fp1_deceitful_warrior_character
			save_scope_as = lying_warrior
		}
		#Create our actual lie.
		##Six options for roughly 16.6% chance apiece.
		random_list = {
			#Swam home after their longboat sank from too much plunder.
			166 = {
				#Fallback: always available.
				save_scope_value_as = {
					name = lie_nature
					value = flag:sunk_longboat
				}
			}
			#Wrestled a wounded whale ashore single-handed.
			166 = {
				#Fallback: always available.
				save_scope_value_as = {
					name = lie_nature
					value = flag:wrestled_whale
				}
			}
			#Lead the charge on the walls of a great city.
			166 = {
				#Fallback: always available.
				save_scope_value_as = {
					name = lie_nature
					value = flag:charged_city
				}
				#And an Easter egg for Nick.
				random = {
					chance = 1
					save_scope_value_as = {
						name = fruit_knife
						value = yes
					}
					scope:lying_warrior = { give_nickname = nick_the_blessed }
				}
			}
			#Averted giant holmgang that would have sunk Iceland.
			166 = {
				trigger = {
					#Must not have any counties in Iceland, as the news'd travel otherwise.
					NOT = {
						any_realm_de_jure_duchy = { this = title:d_iceland }
					}
				}
				save_scope_value_as = {
					name = lie_nature
					value = flag:kept_iceland_afloat
				}
			}
			#Wooed the child of a foreign king.
			166 = {
				trigger = {
					any_kingdom = {
						is_title_created = yes
						holder = { fp1_0031_any_valid_king_trigger = yes }
					}
				}
				save_scope_value_as = {
					name = lie_nature
					value = flag:wooed_heir
				}
				#Designate a suitable kingdom.
				random_kingdom = {
					limit = {
						is_title_created = yes
						holder = { fp1_0031_any_valid_king_trigger = yes }
					}
					holder = { save_scope_as = disparaged_king }
				}
				#Set dummy appropriate gender.
				## If the faith is generally intolerant, then we invent a heterosexual target.
				if = {
					limit = {
						faith = {
							OR = {
								has_doctrine_parameter = homosexuality_illegal
								has_doctrine_parameter = homosexuality_shunned
							}
						}
					}
					# Then females get a male invention.
					if = {
						limit = {
							scope:lying_warrior = { is_female = yes }
						}
						dummy_male = { save_scope_as = invented_heir }
					}
					# And males get a female invention.
					if = {
						limit = {
							scope:lying_warrior = { is_male = yes }
						}
						dummy_female = { save_scope_as = invented_heir }
					}
				}
				## Otherwise, we randomise.
				else = {
					random_list = {
						100 = {
							dummy_female = { save_scope_as = invented_heir }
						}
						100 = {
							dummy_male = { save_scope_as = invented_heir }
						}
					}
				}
				## Ensure that scope:lying_warrior's preferences line up with their invented target.
				### Note: asexuals not specifically accounted for, since we can't reliably say which way(s) their preferences go, as we don't store that information.
				scope:lying_warrior = {
					if = {
						limit = {
							# Orthodox couplings.
							OR = {
								AND = {
									is_female = yes
									scope:invented_heir = { is_female = yes }
								}
								AND = {
									is_male = yes
									scope:invented_heir = { is_male = yes }
								}
							}
							# But a heterodox preference.
							has_sexuality = heterosexual
						}
						# Randomise scope:lying_warrior's sexuality to match their stories.
						random_list = {
							100 = { set_sexuality = bisexual }
							100 = { set_sexuality = homosexual }
						}
					}
				}
			}
			#Hunted troll.
			166 = {
				#Fallback: always available.
				save_scope_value_as = {
					name = lie_nature
					value = flag:hunted_troll
				}
				#Gotta make it believable.
				scope:lying_warrior = {
					hidden_effect = {
						increase_wounds_effect = { REASON = fight }
					}
				}
			}
		}
	}

	#Invite them to stay permanently.
	option = {
		name = fp1_yearly.0031.a

		add_courtier = scope:lying_warrior

		stress_impact = {
			trusting = minor_stress_impact_loss
			paranoid = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.25
				ai_sociability = 0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = trusting
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = paranoid
			}
		}
	}

	#Question their veracity.
	option = {
		name = fp1_yearly.0031.b

		#Standard intrigue duel; we make it a little easier, since you do have the choice of just gaining a courtier.
		duel = {
			skill = intrigue
			target = scope:lying_warrior
			#You expose their lies.
			60 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0031.b.tt_success
				send_interface_toast = {
					title = fp1_yearly.0031.b.tt_success
					left_icon = scope:lying_warrior
					add_prestige = minor_prestige_gain
					scope:lying_warrior = {
						#Dispose of scope:lying_warrior.
						hidden_effect = {
							death = { death_reason = death_vanished }
						}
					}
				}
			}
			#They run circles around your questions.
			40 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0031.b.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0031.b.tt_failure
					left_icon = scope:lying_warrior
					add_prestige = minor_prestige_loss
					scope:lying_warrior = {
						#Dispose of scope:lying_warrior.
						hidden_effect = {
							death = { death_reason = death_vanished }
						}
					}
				}
			}
		}

		stress_impact = {
			paranoid = medium_stress_impact_loss
			trusting = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.25
				ai_sociability = -0.5
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = paranoid
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = trusting
			}
		}
	}

	#Tell them to tell people of your generous halls.
	option = {
		name = fp1_yearly.0031.c

		#Get a nice little bonus/negate a negative for being talked up.
		if = {
			limit = { has_character_modifier = stingy_host_fp1_modifier }
			remove_character_modifier = stingy_host_fp1_modifier
		}
		else = {
			add_character_modifier = {
				modifier = generous_host_fp1_modifier
				years = 10
			}
		}

		#Dispose of scope:lying_warrior.
		hidden_effect = {
			scope:lying_warrior = {
				death = { death_reason = death_vanished }
			}
		}

		stress_impact = {
			gregarious = minor_stress_impact_loss
			arrogant = minor_stress_impact_loss
			shy = minor_stress_impact_gain
			humble = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.25
				ai_sociability = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = shy
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = humble
			}
		}
	}
}

##################################################
# [Russia/Steppe] Islamic Explorer Visits Court
# by Ewan Cowhig Croft
# 0041 - 0050
##################################################

scripted_trigger suitable_islamic_realm_trigger = {
	#First off, we need people who will consider root a savage.
	NOR = {
		government_has_flag = government_is_tribal
		government_has_flag = government_is_nomadic
	}
	#Next, filter down to the correct religion.
	religion = religion:islam_religion
	#Making sure to only grab rulers from the Middle East.
	capital_province = {
		OR = {
			geographical_region = world_asia_minor
			geographical_region = world_middle_east_jerusalem
			geographical_region = world_middle_east_arabia
			geographical_region = world_middle_east_persia
			geographical_region = world_india_rajastan
		}
	}
	#And then misc checks to make sure that the tone is correct.
	top_liege = {
		NOR = {
			#Such as the liege not having much contact with Germanic Paganism.
			religion = religion:germanic_religion
			any_vassal_or_below = { religion = religion:germanic_religion }
			#The realm not being positioned next door to root.
			character_is_realm_neighbor = root.top_liege
			#And the realm generally not being inside the same (admittedly large) area.
			any_realm_county = {
				title_province = { geographical_region = dlc_fp1_region_russian_steppe }
			}
		}
	}
}

#	An Islamic explorer stops by for a visit.
fp1_yearly.0041 = {
	type = character_event
	title = fp1_yearly.0041.t
	desc = fp1_yearly.0041.desc
	theme = stewardship
	left_portrait = {
		character = scope:explorer
		animation = disapproval
	}
	right_portrait = {
		character = scope:sponsoring_liege
		animation = personality_rational
	}
	override_background = { reference = throne_room }

	trigger = {
		#DLC check.
		has_fp1_dlc_trigger = yes
		#Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0041 }
		is_landed = yes
		#Must be a Norse pagan tribal.
		government_has_flag = government_is_tribal
		religion = religion:germanic_religion
		#With a capital in the steppe/Russia.
		capital_province = { geographical_region = dlc_fp1_region_russian_steppe }
		#Just for good measure, you should probably be a small-ish realm.
		realm_size <= medium_realm_size
		#No same-realm Muslims.
		top_liege = {
			NOR = {
				religion = religion:islam_religion
				any_vassal_or_below = { religion = religion:islam_religion }
			}
		}
		#A suitable Islamic realm for the explorer to have come from must exists.
		any_kingdom = {
			holder ?= { suitable_islamic_realm_trigger = yes }
		}
	}

	weight_multiplier = {
		base = 1
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0041
			days = 3650
		}
		#Grab home barony for loc.
		capital_barony = { save_scope_as = capital_barony }
		#Assign a home realm for the explorer.
		random_kingdom = {
			limit = {
				holder ?= { suitable_islamic_realm_trigger = yes}
			}
			holder = { save_scope_as = sponsoring_liege }
		}
		#Create the Islamic explorer.
		create_character = {
			location = root.capital_province
			template = fp1_islamic_explorer_character
			save_scope_as = explorer
		}
		hidden_effect = {
			scope:explorer = {
				add_random_tiered_trait_xp_effect = {
					TRAIT = lifestyle_mystic
					LEVEL_1 = yes
					LEVEL_3 = yes
				}
				add_random_tiered_trait_xp_effect = {
					TRAIT = lifestyle_physician
					LEVEL_1 = yes
					LEVEL_3 = yes
				}
			}
		}
	}

	#Host a small blot.
	option = {
		name = fp1_yearly.0041.a

		#Diplomacy duel to see how well you present yourself.
		duel = {
			skill = diplomacy
			value = decent_skill_rating
			#Your blot impresses the explorer.
			40 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0041.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0041.a.tt_success
					left_icon = scope:explorer
					add_prestige = medium_prestige_gain
					add_character_modifier = {
						modifier = exotic_foreign_lord_fp1_modifier
						years = 10
					}
				}
			}
			#Your pagan ways disgust the explorer.
			60 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0041.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0041.a.tt_failure
					left_icon = scope:explorer
					add_prestige = minor_prestige_loss
					add_character_modifier = {
						modifier = horrifying_foreign_lord_fp1_modifier
						years = 5
					}
				}
			}
		}

		stress_impact = {
			zealous = medium_stress_impact_loss
			cynical = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = 0.5
				ai_sociability = 0.25
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = zealous
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = cynical
			}
		}
	}

	#Invite them to stay and convert you.
	option = {
		name = fp1_yearly.0041.b
		#Prohibit the AI from converting to far-away religions unless they're genuinely very interested in scope:explorer's faith.
		trigger = {
			OR = {
				is_ai = no
				AND = {
					NOR = {
						has_trait = zealous #Zealous characters never convert on a whim.
						has_trait = cynical	#Cynical characters aren't really interested in what anyone is selling.
						has_trait = arrogant #Arrogant characters believe their faith is already the best, even if they don't care much about it.
						has_trait = paranoid #Paranoid characters don't trust scope:explorer's tales.
					}
					OR = {
						has_trait = humble	#Humble characters like to give everyone a fair chance to explain their POV.
						has_trait = trusting #Trusting characters can be talked into many things, given time & charisma.
					}
				}
			}
		}

		#Get scope:explorer as a courtier.
		add_courtier = scope:explorer
		#Sort conversion.
		set_character_faith_with_conversion = scope:explorer.faith
		#Get scope:sponsoring_liege as a friend, if possible.
		if = {
			limit = {
				can_set_relation_friend_trigger = { CHARACTER = scope:sponsoring_liege }
			}
			set_relation_friend = { reason = friend_converted_explorer target = scope:sponsoring_liege }
			reverse_add_opinion = {
				target = scope:sponsoring_liege
				modifier = pious_opinion
				opinion = 50
			}
		}

		stress_impact = {
			humble = medium_stress_impact_loss
			trusting = major_stress_impact_loss
			paranoid = minor_stress_impact_gain
			arrogant = medium_stress_impact_gain
			zealous = massive_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.25
				ai_zeal = -0.75
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = humble
			}
			modifier = {	#Weight up for stress.
				add = 30
				has_trait = trusting
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = paranoid
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = arrogant
			}
			modifier = {	#Weight down for stress.
				add = -50
				has_trait = zealous
			}
		}
	}

	#Give them the boot.
	option = {
		name = fp1_yearly.0041.c

		#Consolation prize for giving them the boot.
		## Stress loss handled in stress_impact.

		stress_impact = {
			base = minor_stress_loss
			zealous = minor_stress_impact_loss
			shy = major_stress_impact_loss
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = -0.25
				ai_sociability = -0.5
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = zealous
			}
			modifier = {	#Weight down for stress.
				add = -30
				has_trait = shy
			}
		}
	}

	#Clean-up characters, if appropriate.
	after = {
		# We use a separate event delayed by a day so that scope:explorer isn't dead in the toasts.
		trigger_event = {
			id = fp1_yearly.0042
			days = 1
		}
	}
}

#	Clean up unused explorer.
fp1_yearly.0042 = {
	hidden = yes

	immediate = {
		#Get rid of scope:explorer, unless they've decided to stay.
		scope:explorer = {
			if = {
				limit = {
					NOT = { is_courtier_of = root }
				}
				hidden_effect = {
					death = { death_reason = death_vanished }
				}
			}
		}
	}
}

##################################################
# [Rural] A Dead Character is Rumoured to have become a Draugr
# by Ewan Cowhig Croft
# 0051 - 0070
##################################################

#	You are informed of the reputed-draugr.
fp1_yearly.0051 = {
	type = character_event
	title = fp1_yearly.0051.t
	desc = fp1_yearly.0051.desc
	theme = unfriendly
	left_portrait = {
		character = scope:draugr
		animation = personality_vengeful
	}
	override_background = { reference = throne_room }

	trigger = {
		#DLC check.
		has_fp1_dlc_trigger = yes
		#Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0051 }
		is_landed = yes
		#Must have a draugr candidate ready; this is set on the on_death on_action.
		has_variable = potential_draugr
		#Must be a tribal...
		government_has_flag = government_is_tribal
		#With a rural, North Germanic capital.
		capital_county = {
			#Checking the capital, not the character, since it's a local superstition rather than something ye're insisiting on.
			culture = { has_cultural_pillar = heritage_north_germanic }
			development_level <= terrible_development_level
		}
	}

	weight_multiplier = {
		base = 1
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0051
			days = 7300
		}
		#Grab our capital for loc.
		capital_county = { save_scope_as = capital_county }
		#Then grab our draugr.
		var:potential_draugr = { save_scope_as = draugr }
	}

	#Investigate in person.
	option = {
		name = fp1_yearly.0051.a

		#You go off to investigate in person.
		custom_tooltip = fp1_yearly.0051.a.tt
		##5 possible outcomes, weighing down the chance of nothing happening slightly due to low value, gives us x4 options of 22.5% & one of 10%.
		hidden_effect = {
			random_list = {
				#A pack of wolves!
				225 = {
					trigger_event = {
						id = fp1_yearly.0061
						months = 1
					}
				}
				#A fearsome bear!
				225 = {
					trigger_event = {
						id = fp1_yearly.0062
						months = 1
					}
				}
				#A nithing living in the mound!
				225 = {
					trigger_event = {
						id = fp1_yearly.0063
						months = 1
					}
				}
				#An orphan living in the mound!
				225 = {
					trigger_event = {
						id = fp1_yearly.0064
						months = 1
					}
				}
				#Absolutely bugger-all!
				100 = {
					trigger_event = {
						id = fp1_yearly.0065
						months = 1
					}
				}
			}
		}

		stress_impact = {
			diligent = medium_stress_impact_loss
			brave = medium_stress_impact_loss
			lazy = medium_stress_impact_gain
			craven = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_energy = 0.25
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = diligent
			}
			modifier = {	#Weight down for stress.
				add = 20
				has_trait = brave
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = lazy
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = craven
			}
		}
	}

	#Try various folk solutions.
	option = {
		name = fp1_yearly.0051.c

		#Let's see how your hearth wisdom is, chummer.
		duel = {
			skill = learning
			value = decent_skill_rating
			#Your potions and spells reassure the locals.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0051.c.tt_success
				send_interface_toast = {
					title = fp1_yearly.0051.c.tt_success
					left_icon = scope:draugr
					capital_county = {
						add_county_modifier = {
							modifier = draugr_remedies_succeeded_fp1_modifier
							years = 10
						}
					}
					add_stress = medium_stress_loss
				}
			}
			#Your rituals are insufficient.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0051.c.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0051.c.tt_failure
					left_icon = scope:draugr
					capital_county = {
						add_county_modifier = {
							modifier = draugr_remedies_failed_fp1_modifier
							years = 10
						}
					}
					add_stress = medium_stress_gain
				}
			}
		}

		stress_impact = {
			lazy = minor_stress_impact_loss
			diligent = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_energy = 0.5
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = diligent
			}
		}
	}

	#Have them exhumed and the corpse destroyed.
	option = {
		name = fp1_yearly.0051.b

		#Peasants are happy.
		send_interface_toast = {
			title = fp1_yearly.0051.b.body_destroyed
			left_icon = root
			capital_county = {
				add_county_modifier = {
					modifier = draugr_remedies_succeeded_fp1_modifier
					years = 10
				}
			}
		}

		#But either the family of the deceased are not...
		if = {
			limit = {
				scope:draugr = {
					OR = {
						#Nab their entire house.
						AND = {
							house ?= {
								any_house_member = {
									count >= 1
									is_alive = yes
								}
							}
						}
						#Any close family outside of that house (bastards, house-founder siblings, etc).
						any_close_or_extended_family_member = {
							count >= 1
							is_alive = yes
						}
						#And any spouses still kicking around.
						any_former_spouse = {
							count >= 1
							is_alive = yes
						}
					}
				}
			}
			#Nab scope:draugr's nearest'n'dearest.
			scope:draugr = {
				if = {
					limit = { exists = house }
					house = {
						every_house_member = {
							limit = { is_alive = yes }
							add_to_list = close_to_draugr_list
						}
					}
				}
				every_close_or_extended_family_member = {
					limit = { is_alive = yes }
					add_to_list = close_to_draugr_list
				}
				every_former_spouse = {
					limit = { is_alive = yes }
					add_to_list = close_to_draugr_list
				}
			}
			#And make them unhappy at the thing wot u dun.
			every_in_list = {
				list = close_to_draugr_list
				custom = fp1_yearly.0051.b.list
				add_opinion = {
					target = root
					modifier = fp1_desecrated_corpse_of_loved_one
				}
			}
		}
		#... Or you have to spend a little prestige for defiling the dead.
		else = { add_prestige = medium_prestige_loss }

		stress_impact = {
			vengeful = minor_stress_impact_loss
			callous = medium_stress_impact_loss
			arbitrary = medium_stress_impact_loss
			forgiving = minor_stress_impact_gain
			compassionate = medium_stress_impact_gain
			just = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.25
				ai_compassion = -0.25
				ai_honor = -0.5
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = vengeful
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = callous
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = arbitrary
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = forgiving
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = compassionate
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = just
			}
		}
	}
}

#	The draugr is earmarked.
fp1_yearly.0052 = {
	hidden = yes

	trigger = {
		#DLC check.
		has_fp1_dlc_trigger = yes
		#Must be within the player's court.
		is_knight = yes
		court_owner = { is_ai = no }
		#Must be an intimidating fighter.
		prowess >= extremely_high_skill_rating
		#Aaaaand must have a personality that makes people think they'd come back to harass the living.
		calc_true_if = {
			amount >= 2
			has_trait = wrathful
			has_trait = arrogant
			has_trait = deceitful
			has_trait = craven
			has_trait = ambitious
			has_trait = arbitrary
			has_trait = cynical
			has_trait = vengeful
			has_trait = sadistic
		}
	}

	immediate = {
		save_scope_as = potential_draugr
		court_owner = {
			set_variable = {
				name = potential_draugr
				value = scope:potential_draugr
				years = 5
			}
		}
	}
}

#	The draugr was a pack of wolves!
fp1_yearly.0061 = {
	type = character_event
	title = fp1_yearly.0061.t
	desc = fp1_yearly.0061.desc
	theme = martial
	left_portrait = {
		character = root
		animation = shock
	}
	override_background = { reference = wilderness }

	trigger = {
		is_available_even_at_war_adult = yes
	}

	#Fight the wolves.
	option = {
		name = fp1_yearly.0061.a

		#You rally your soldiers to fight off the pack!
		duel = {
			skill = martial
			value = high_skill_rating
			#You slaughter the pack!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0061.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0061.a.tt_success
					left_icon = root
					capital_county = {
						add_county_modifier = {
							modifier = draugr_remedies_succeeded_fp1_modifier
							years = 10
						}
					}
					add_prestige = medium_prestige_gain
				}
			}
			#You barely escape with your life!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0061.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0061.a.tt_failure
					left_icon = root
					capital_county = {
						add_county_modifier = {
							modifier = draugr_monstrous_wolfpack_fp1_modifier
							years = 10
						}
					}
					increase_wounds_effect = { REASON = wolves }
				}
			}
		}

		stress_impact = {
			brave = major_stress_impact_loss
			craven = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_honor = 0.25
			}
			modifier = {	#Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	#Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	#Retreat!
	option = {
		name = fp1_yearly.0061.b

		#The wolves will be eating people for some time to come.
		capital_county = {
			add_county_modifier = {
				modifier = draugr_monstrous_wolfpack_fp1_modifier
				years = 10
			}
		}
		#And e'eryone knows why.
		add_prestige = medium_prestige_loss

		stress_impact = {
			craven = major_stress_impact_loss
			brave = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = -0.25
				ai_boldness = -0.5
			}
			modifier = {	#Weight up for stress.
				add = 30
				has_trait = craven
			}
			modifier = {	#Weight down for stress.
				add = -30
				has_trait = brave
			}
		}
	}
}

#	The draugr was a bear!
fp1_yearly.0062 = {
	type = character_event
	title = fp1_yearly.0062.t
	desc = fp1_yearly.0062.desc
	theme = martial
	left_portrait = {
		character = root
		animation = shock
	}
	override_background = { reference = wilderness }

	trigger = {
		is_available_even_at_war_adult = yes
	}

	#Fight the bear.
	option = {
		name = fp1_yearly.0062.a

		#You meet the bear's challenge!
		duel = {
			skill = prowess
			value = high_skill_rating
			#You kill the bear!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0062.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0062.a.tt_success
					left_icon = root
					capital_county = {
						add_county_modifier = {
							modifier = draugr_remedies_succeeded_fp1_modifier
							years = 10
						}
					}
					add_prestige = medium_prestige_gain
				}
			}
			#You only just escape with your life!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0062.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0062.a.tt_failure
					left_icon = root
					capital_county = {
						add_county_modifier = {
							modifier = draugr_monstrous_bear_fp1_modifier
							years = 10
						}
					}
					increase_wounds_effect = { REASON = bear }
				}
			}
		}

		stress_impact = {
			brave = major_stress_impact_loss
			craven = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_honor = 0.25
			}
			modifier = {	#Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	#Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	#Retreat!
	option = {
		name = fp1_yearly.0062.b

		#The bear will be eating people for some time to come.
		capital_county = {
			add_county_modifier = {
				modifier = draugr_monstrous_bear_fp1_modifier
				years = 10
			}
		}
		#And e'eryone knows why.
		add_prestige = medium_prestige_loss

		stress_impact = {
			craven = major_stress_impact_loss
			brave = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = -0.25
				ai_boldness = -0.5
			}
			modifier = {	#Weight up for stress.
				add = 30
				has_trait = craven
			}
			modifier = {	#Weight down for stress.
				add = -30
				has_trait = brave
			}
		}
	}
}

#	The draugr was a nithing!
fp1_yearly.0063 = {
	type = character_event
	title = fp1_yearly.0063.t
	desc = fp1_yearly.0063.desc
	theme = intrigue
	left_portrait = {
		character = root
		animation = disgust
	}
	right_portrait = {
		character = scope:draugr_nithing
		animation = shock
	}
	override_background = { reference = wilderness }

	trigger = {
		is_available_even_at_war_adult = yes
	}

	immediate = {
		#Create us a nithing!
		create_character = {
			location = root.capital_province
			template = fp1_capital_county_nithing_character
			save_scope_as = draugr_nithing
		}
		hidden_effect = {
			scope:draugr_nithing = { nithing_character_creation_scripted_effect = yes }
		}
	}

	#Try to catch the nithing before they slip away.
	option = {
		name = fp1_yearly.0063.a

		#You attempt to catch the criminal.
		duel = {
			skill = intrigue
			value = high_skill_rating
			#Your trap works!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0063.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0063.a.tt_success
					left_icon = root
					capital_county = {
						add_county_modifier = {
							modifier = draugr_remedies_succeeded_fp1_modifier
							years = 10
						}
					}
					add_prestige = medium_prestige_gain
					#To the dungeon with you, m'nithing.
					imprison = {
						target = scope:draugr_nithing
						type = dungeon
					}
				}
			}
			#The nithing slips the net!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0063.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0063.a.tt_failure
					left_icon = root
					capital_county = {
						add_county_modifier = {
							modifier = draugr_nithing_fp1_modifier
							years = 10
						}
					}
					custom_tooltip = fp1_yearly.0063.a.tt_failure.draugr_nithing_escapes
					hidden_effect = {
						scope:draugr_nithing = {
							death = { death_reason = death_vanished }
						}
					}
				}
			}
		}

		stress_impact = {
			paranoid = minor_stress_impact_loss
			vengeful = medium_stress_impact_loss
			just = medium_stress_impact_loss
			forgiving = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_honor = 0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = paranoid
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = vengeful
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = just
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = forgiving
			}
		}
	}

	#Leave them to it.
	option = {
		name = fp1_yearly.0063.b

		#The nithing will continue to do your capital a mischief for quite a while.
		capital_county = {
			add_county_modifier = {
				modifier = draugr_nithing_fp1_modifier
				years = 10
			}
		}
		#But at least it's less ignoble than running from wild animals.
		add_prestige = minor_prestige_loss

		stress_impact = {
			just = medium_stress_impact_loss
			vengeful = medium_stress_impact_loss
			arbitrary = minor_stress_impact_gain
			forgiving = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.25
				ai_honor = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = just
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = vengeful
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = arbitrary
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = forgiving
			}
		}
	}
}

#	The draugr was an orphan!
fp1_yearly.0064 = {
	type = character_event
	title = fp1_yearly.0064.t
	desc = fp1_yearly.0064.desc
	theme = friendly
	left_portrait = {
		character = root
		animation = shock
	}
	right_portrait = {
		character = scope:draugr_orphan
		animation = fear
	}
	override_background = { reference = wilderness }

	trigger = {
		is_available_even_at_war_adult = yes
	}

	immediate = {
		#Create us an orphan!
		create_character = {
			location = root.capital_province
			template = fp1_capital_county_orphan_character
			save_scope_as = draugr_orphan
		}
		#And every possible result sorts the issue for you.
		capital_county = {
			add_county_modifier = {
				modifier = draugr_remedies_succeeded_fp1_modifier
				years = 10
			}
		}
	}

	#Move them on.
	option = {
		name = fp1_yearly.0064.a

		#The orphan disappears.
		custom_tooltip = fp1_yearly.0064.a.tt
		hidden_effect = {
			scope:draugr_orphan = {
				death = { death_reason = death_vanished }
			}
		}

		stress_impact = {
			sadistic = minor_stress_impact_loss
			callous = major_stress_impact_loss
			compassionate = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = 0.25
				ai_compassion = -0.5
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = sadistic
			}
			modifier = {	#Weight up for stress.
				add = 30
				has_trait = callous
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = compassionate
			}
		}
	}

	#Fling them into prison.
	option = {
		name = fp1_yearly.0064.b

		#You uhh, you get a prisoner.
		imprison = {
			target = scope:draugr_orphan
			type = dungeon
		}
		reverse_add_opinion = {
			target = scope:draugr_orphan
			modifier = imprisoned_me
		}
		#... Just for good measure, let's make sure they won't forget this.
		hidden_effect = { set_relation_potential_rival = scope:draugr_orphan }

		stress_impact = {
			callous = minor_stress_impact_loss
			sadistic = major_stress_impact_loss
			compassionate = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.25
				ai_compassion = -0.75
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = callous
			}
			modifier = {	#Weight up for stress.
				add = 30
				has_trait = sadistic
			}
			modifier = {	#Weight down for stress.
				add = -30
				has_trait = compassionate
			}
		}
	}

	#Take them to court.
	option = {
		name = fp1_yearly.0064.c

		#One shiny new child for you.
		add_courtier = scope:draugr_orphan
		#And they're pretty happy about being whisked out of the grave they were living in.
		reverse_add_opinion = {
			target = scope:draugr_orphan
			modifier = loyal_servant
		}
		add_hook = {
			target = scope:draugr_orphan
			type = loyalty_hook
		}

		stress_impact = {
			trusting = minor_stress_impact_loss
			compassionate = major_stress_impact_loss
			paranoid = minor_stress_impact_gain
			callous = medium_stress_impact_gain
			sadistic = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.25
				ai_compassion = -0.75
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = trusting
			}
			modifier = {	#Weight up for stress.
				add = 30
				has_trait = compassionate
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = paranoid
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = callous
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = sadistic
			}
		}
	}

	#Adopt them.
	option = {
		name = fp1_yearly.0064.d
		#And, if you've no kids of your own right now...
		trigger = {
			any_child = {
				count = 0
				is_alive = yes
			}
		}

		#One shiny new child for you.
		if = {
			limit = { is_female = yes }
			scope:draugr_orphan = { set_mother = root }
		}
		else = {
			scope:draugr_orphan = { set_father = root }
		}
		hidden_effect = {
			#We take care of the sundries in a hidden effect so as not to put too much into the tooltip.
			scope:draugr_orphan = { set_house = root.house }
			add_courtier = scope:draugr_orphan
		}
		#And they're pretty happy about being the child of a lord all of a sudden.
		reverse_add_opinion = {
			target = scope:draugr_orphan
			modifier = love_opinion
			opinion = 100
		}
		add_hook = {
			target = scope:draugr_orphan
			type = loyalty_hook
		}

		stress_impact = {
			trusting = medium_stress_impact_loss
			compassionate = massive_stress_impact_loss
			paranoid = medium_stress_impact_gain
			callous = major_stress_impact_gain
			sadistic = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.25
				ai_compassion = -0.75
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = trusting
			}
			modifier = {	#Weight up for stress.
				add = 50
				has_trait = compassionate
			}
			modifier = {	#Weight down for stress.
				add = 20
				has_trait = paranoid
			}
			modifier = {	#Weight down for stress.
				add = -30
				has_trait = callous
			}
			modifier = {	#Weight down for stress.
				add = -30
				has_trait = sadistic
			}
		}
	}
}

#	The draugr was... didn't exist!
fp1_yearly.0065 = {
	type = character_event
	title = fp1_yearly.0065.t
	desc = fp1_yearly.0065.desc
	theme = physical_health
	left_portrait = {
		character = root
		animation = boredom
	}
	override_background = { reference = wilderness }

	trigger = {
		is_available_even_at_war_adult = yes
	}

	#Must have been the wind?
	option = {
		name = fp1_yearly.0065.a

		#Welp, at least the fresh air does you good!
		add_character_modifier = {
			modifier = draugr_healthy_hiking_fp1_modifier
			years = 10
		}


		#The locals grumble a little regardless.
		send_interface_toast = {
			title = fp1_yearly.0065.a.locals_grumble
			left_icon = root
			capital_county = {
				add_county_modifier = {
					modifier = draugr_nothing_found_fp1_modifier
					years = 10
				}
			}
		}

		stress_impact = {
			#Usually bad form to give stress in one-event options, but it's a little funny to see your character's reaction to there being literally nothing to see.
			trusting = miniscule_stress_impact_loss
			paranoid = miniscule_stress_impact_gain
		}
		ai_chance = {
			#Only option.
			base = 100
		}
	}
}

##################################################
# The Deep Places of the World
# by Ewan Cowhig Croft
# 0071 - 0090
##################################################

scripted_trigger fp1_0071_loveli_lakes_trigger = {
	has_trait = shieldmaiden
	is_courtier_of = root
	is_available_ai_adult = yes
	is_healthy = yes
}

scripted_trigger fp1_0071_valid_marshal_for_delegation_trigger = {
	exists = this
	is_available_ai_adult = yes
}

scripted_effect fp1_0071_apply_hungry_troll_modifier_effect = {
	capital_county = {
		add_county_modifier = {
			modifier = fp1_yearly_0071_troll_attacks_modifier
			years = 30
		}
	}
}

#	[Rural] A Troll has been sighted & is attacking villages/peasants
fp1_yearly.0071 = {
	type = character_event
	title = fp1_yearly.0071.t
	desc = {
		desc = fp1_yearly.0071.desc.intro
		# Troll type.
		first_valid = {
			# A towering bear.
			triggered_desc = {
				trigger = { scope:troll_type = flag:bear }
				desc = fp1_yearly.0071.desc.troll_type.bear
			}
			# An ancient wolf.
			triggered_desc = {
				trigger = { scope:troll_type = flag:wolf }
				desc = fp1_yearly.0071.desc.troll_type.wolf
			}
			# A colossal wolverine.
			triggered_desc = {
				trigger = { scope:troll_type = flag:wolverine }
				desc = fp1_yearly.0071.desc.troll_type.wolverine
			}
			# A stealthy lynx.
			triggered_desc = {
				trigger = { scope:troll_type = flag:lynx }
				desc = fp1_yearly.0071.desc.troll_type.lynx
			}
			# An enraged moose.
			triggered_desc = {
				trigger = { scope:troll_type = flag:moose }
				desc = fp1_yearly.0071.desc.troll_type.moose
			}
		}
		# Outro type.
		first_valid = {
			triggered_desc = {
				trigger = { exists = scope:loveli_lakes }
				desc = fp1_yearly.0071.desc.outro.loveli_lakes
			}
			desc = fp1_yearly.0071.desc.outro.fallback
		}
	}
	theme = hunting
	left_portrait = {
		character = root
		animation = disbelief
	}
	right_portrait = {
		character = scope:marshal
		animation = dismissal
	}
	lower_left_portrait = scope:loveli_lakes
	override_background = { reference = throne_room }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0071 }
		is_landed = yes
		# Must be a tribal in Scandinavia.
		government_has_flag = government_is_tribal
		fp1_is_in_scandinavia = yes
		# With a rural, North Germanic capital.
		capital_county = {
			# Checking the capital, not the character, since it's a local superstition rather than something ye're insisiting on.
			culture = { has_cultural_pillar = heritage_north_germanic }
			development_level <= terrible_development_level
			# And ensure it doesn't already have a troll problem.
			NOT = { has_county_modifier = fp1_yearly_0071_troll_attacks_modifier }
		}
	}

	weight_multiplier = {
		base = 1

		# Weight down a little if you're a hunter, since it means you're probably trimming the local wildlife down quite dramatically.
		modifier = {
			add = -0.5
			has_trait = lifestyle_hunter
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0071
			days = 1825
		}
		# Roll to determine what type of beast we get.
		## Five options of 20% each.
		random_list = {
			# A towering bear.
			200 = {
				save_scope_value_as = {
					name = troll_type
					value = flag:bear
				}
			}
			# An ancient wolf.
			200 = {
				save_scope_value_as = {
					name = troll_type
					value = flag:wolf
				}
			}
			# A colossal wolverine.
			200 = {
				save_scope_value_as = {
					name = troll_type
					value = flag:wolverine
				}
			}
			# A stealthy lynx.
			200 = {
				save_scope_value_as = {
					name = troll_type
					value = flag:lynx
				}
			}
			# An enraged moose.
			200 = {
				save_scope_value_as = {
					name = troll_type
					value = flag:moose
				}
			}
		}
		## Did a møøse bite root's sister?
		if = {
			limit = {
				scope:troll_type = flag:moose
				# We could go for a more complex implementation, but as we want to keep the meme rare (and therefore less stale), we hard-lock it down to just shieldmaidens.
				any_sibling = { fp1_0071_loveli_lakes_trigger = yes }
			}
			random_sibling = {
				limit = { fp1_0071_loveli_lakes_trigger = yes }
				save_scope_as = loveli_lakes
			}
		}
		# Grab the martial, if possible, for delegation.
		if = {
			limit = {
				any_martial_councillor = { fp1_0071_valid_marshal_for_delegation_trigger = yes }
			}
			random_martial_councillor = {
				limit = { fp1_0071_valid_marshal_for_delegation_trigger = yes }
				save_scope_as = marshal
			}
		}
	}

	# I'll kill the beast myself!
	option = {
		name = fp1_yearly.0071.a

		# Inform root that they'll get a follow-up event.
		custom_tooltip = fp1_yearly.0071.a.tt
		# Calc which event to send out.
		## A towering bear.
		if = {
			limit = { scope:troll_type = flag:bear }
			trigger_event = {
				id = fp1_yearly.0081
				days = 14
			}
		}
		## An ancient wolf.
		else_if = {
			limit = { scope:troll_type = flag:wolf }
			trigger_event = {
				id = fp1_yearly.0082
				days = 14
			}
		}
		## A colossal wolverine.
		else_if = {
			limit = { scope:troll_type = flag:wolverine }
			trigger_event = {
				id = fp1_yearly.0083
				days = 14
			}
		}
		## A stealthy lynx.
		else_if = {
			limit = { scope:troll_type = flag:lynx }
			trigger_event = {
				id = fp1_yearly.0084
				days = 14
			}
		}
		## An enraged moose.
		else = {
			trigger_event = {
				id = fp1_yearly.0085
				days = 14
			}
		}

		stress_impact = {
			brave = minor_stress_impact_loss
			craven = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = 0.5
				ai_vengefulness = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = craven
			}
		}
	}

	# Scope:marshal, take care of this.
	option = {
		name = fp1_yearly.0071.b
		trigger = { exists = scope:marshal }

		# Martial duel for the marshal.
		scope:marshal = {
			duel = {
				skill = martial
				value = very_high_skill_rating
				# Your marshal and their troops hunt down the beast.
				50 = {
					compare_modifier = {
						value = scope:duel_value
						multiplier = 3.5
						min = -49
					}
					desc = fp1_yearly.0071.b.tt_success
					root = {
						send_interface_toast = {
							title = fp1_yearly.0071.b.tt_success
							left_icon = scope:marshal
							# Huzzah! Everyone's a hero!
							scope:marshal = { add_prestige = major_prestige_gain }
							add_prestige = medium_prestige_gain
						}
					}
				}
				# The beast eludes scope:marshal and continues to stalk the province.
				50 = {
					compare_modifier = {
						value = scope:duel_value
						multiplier = -3.5
						min = -49
					}
					desc = fp1_yearly.0071.b.tt_failure
					root = {
						send_interface_toast = {
							title = fp1_yearly.0071.b.tt_failure
							left_icon = scope:marshal
							# Welp, that's a lot of failure involved for everyone.
							scope:marshal = { add_prestige = major_prestige_loss }
							add_prestige = medium_prestige_loss
							# Capital_county isn't happy.
							fp1_0071_apply_hungry_troll_modifier_effect = yes
						}
					}
				}
			}
		}

		stress_impact = {
			craven = minor_stress_impact_loss
			lazy = medium_stress_impact_loss
			brave = minor_stress_impact_gain
			diligent = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = -0.25
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = craven
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = lazy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = diligent
			}
		}
	}

	# It's probably just a bear. Deal with it yourselves, cravens.
	option = {
		name = fp1_yearly.0071.c

		# Gain some prestige for your toughness.
		add_prestige = minor_prestige_gain
		# But your capital county is upset.
		fp1_0071_apply_hungry_troll_modifier_effect = yes

		stress_impact = {
			cynical = minor_stress_impact_loss
			craven = medium_stress_impact_loss
			brave = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = -0.25
				ai_honor = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = cynical
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = craven
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = brave
			}
		}
	}
}

scripted_effect fp1_0081_invalidation_toast_effect = {
	send_interface_toast = {
		title = fp1_yearly.0081.hunt_invalidated
		left_icon = root
		custom_tooltip = fp1_yearly.0081.hunt_invalidated.tt
	}
}

scripted_effect fp1_0081_troll_duel_victory_effect = {
	# Add unique character modifier.
	add_character_modifier = {
		modifier = $MODIFIER$
		years = 20
	}
	# And prestige.
	add_prestige = major_prestige_gain
	# Low chance for characters to become styled "Troll-Slayer".
	if = {
		limit = {
			has_any_nickname = no
			AND = {
				has_bad_nickname = yes
				is_ai = yes
			}
		}
		random = {
			chance = 25
			give_nickname = nick_troll_slayer
		}
	}
	# Or automatically if they're players with bad nicknames.
	else_if = {
		limit = {
			has_bad_nickname = yes
			is_ai = no
		}
		give_nickname = nick_troll_slayer
	}
}

scripted_effect fp1_0081_troll_duel_effect = {
	duel = {
		skill = prowess
		value = high_skill_rating
		# You murderise the animal.
		50 = {
			compare_modifier = {
				value = scope:duel_value
				multiplier = 3.5
				min = -49
			}
			desc = $SUCCESS_TITLE$
			send_interface_toast = {
				title = $SUCCESS_TITLE$
				left_icon = root
				# Apply victory effects.
				fp1_0081_troll_duel_victory_effect = { MODIFIER = $MODIFIER$ }
			}
		}
		# The animal wounds you and your retinue carries you off.
		50 = {
			compare_modifier = {
				value = scope:duel_value
				multiplier = -3.5
				min = -49
			}
			desc = $FAILURE_TITLE$
			send_interface_toast = {
				title = $FAILURE_TITLE$
				left_icon = root
				# Capital_county is unhappy.
				fp1_0071_apply_hungry_troll_modifier_effect = yes
				# The beast kills you.
				death = { death_reason = $REASON$ }
			}
		}
	}
}

scripted_effect fp1_0081_troll_duel_alternate_effect = {
	duel = {
		skill = $SKILL$
		value = high_skill_rating
		# You murderise the animal.
		50 = {
			compare_modifier = {
				value = scope:duel_value
				multiplier = 3.5
				min = -49
			}
			desc = $SUCCESS_TITLE$
			send_interface_toast = {
				title = $SUCCESS_TITLE$
				left_icon = root
				# Apply victory effects.
				fp1_0081_troll_duel_victory_effect = { MODIFIER = $MODIFIER$ }
			}
		}
		# The animal wounds you and your retinue carries you off.
		50 = {
			compare_modifier = {
				value = scope:duel_value
				multiplier = -3.5
				min = -49
			}
			desc = $FAILURE_TITLE$
			send_interface_toast = {
				title = $FAILURE_TITLE$
				left_icon = root
				# The beast merely maims you.
				custom_tooltip = $FAILURE_TITLE$.tt
				hidden_effect = { maimed_in_battle_effect = yes }
				# Capital_county is unhappy.
				fp1_0071_apply_hungry_troll_modifier_effect = yes
			}
		}
	}
}

scripted_effect fp1_0081_flee_option_effect = {
	# Lose prestige.
	add_prestige = medium_prestige_loss
	# Your capital county doesn't do too well, either.
	fp1_0071_apply_hungry_troll_modifier_effect = yes
}

#	Troll: towering bear.
fp1_yearly.0081 = {
	type = character_event
	title = fp1_yearly.0081.t
	desc = fp1_yearly.0081.desc
	theme = hunting
	left_portrait = {
		character = root
		animation = shock
	}

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		is_landed = yes
		# Must be a tribal...
		government_has_flag = government_is_tribal
		# With a rural, North Germanic capital.
		capital_county = {
			# Checking the capital, not the character, since it's a local superstition rather than something ye're insisiting on.
			culture = { has_cultural_pillar = heritage_north_germanic }
			development_level <= terrible_development_level
		}
	}

	on_trigger_fail = { fp1_0081_invalidation_toast_effect = yes }

	immediate = { play_music_cue = "mx_cue_combat_stinger" }

	# Charge in, blade swinging.
	option = {
		name = fp1_yearly.0081.a
		trigger = {
			NOT = { has_trait = berserker }
		}

		# Risky prowess duel.
		fp1_0081_troll_duel_effect = {
			SUCCESS_TITLE = fp1_yearly.0081.a.tt_success
			FAILURE_TITLE = fp1_yearly.0081.a.tt_failure
			MODIFIER = fp1_yearly_0071_troll_victory_bear_modifier
			REASON = death_bear
		}

		#We need to check that they didn't die - if we apply stress to a dead character the error-log complains
		if = {
			limit = {
				is_alive = yes
			}
			stress_impact = {
				brave = major_stress_impact_loss
				craven = major_stress_impact_gain
			}
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = 0.5
				ai_vengefulness = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# (Berserker) Auto-win due to Hulkery.
	option = {
		name = fp1_yearly.0081.b
		trigger = { has_trait = berserker }
		trait = berserker

		# Explain what's happening.
		custom_tooltip = fp1_yearly.0081.b.tt
		# And apply victory effects.
		fp1_0081_troll_duel_victory_effect = { MODIFIER = fp1_yearly_0071_troll_victory_bear_modifier }

		stress_impact = {
			berserker = massive_stress_impact_loss
			wrathful = major_stress_impact_loss
			calm = major_stress_impact_gain
		}
		ai_chance = {
			# The AI should basically always take this option, since it's both an automatic win and something representing a sudden & total loss of control.
			base = 10000
		}
	}

	# Diplomacy: at it, Wolves of [Capital]!
	option = {
		name = fp1_yearly.0081.c

		# Risky diplomacy duel.
		fp1_0081_troll_duel_alternate_effect = {
			SKILL = diplomacy
			SUCCESS_TITLE = fp1_yearly.0081.c.tt_success
			FAILURE_TITLE = fp1_yearly.0081.c.tt_failure
			MODIFIER = fp1_yearly_0071_troll_victory_bear_modifier
		}

		stress_impact = {
			brave = medium_stress_impact_loss
			craven = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.5
				ai_vengefulness = 0.5
				ai_honor = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# FLEE!
	option = {
		name = fp1_yearly.0081.d

		# Apply flee effects.
		fp1_0081_flee_option_effect = yes

		stress_impact = {
			craven = major_stress_impact_loss
			brave = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = -0.5
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight up for stress; weight up even further for cravens not wanting to immediately die.
				add = 1000
				has_trait = craven
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = brave
			}
		}
	}
}

#	Troll: ancient wolf.
fp1_yearly.0082 = {
	type = character_event
	title = fp1_yearly.0082.t
	desc = fp1_yearly.0082.desc
	theme = hunting
	left_portrait = {
		character = root
		animation = shock
	}

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		is_landed = yes
		# Must be a tribal...
		government_has_flag = government_is_tribal
		# With a rural, North Germanic capital.
		capital_county = {
			# Checking the capital, not the character, since it's a local superstition rather than something ye're insisiting on.
			culture = { has_cultural_pillar = heritage_north_germanic }
			development_level <= terrible_development_level
		}
	}

	on_trigger_fail = { fp1_0081_invalidation_toast_effect = yes }

	immediate = { play_music_cue = "mx_cue_combat_stinger" }

	# Charge in, blade swinging.
	option = {
		name = fp1_yearly.0082.a
		trigger = {
			NOT = { has_trait = berserker }
		}

		# Risky prowess duel.
		fp1_0081_troll_duel_effect = {
			SUCCESS_TITLE = fp1_yearly.0082.a.tt_success
			FAILURE_TITLE = fp1_yearly.0082.a.tt_failure
			MODIFIER = fp1_yearly_0071_troll_victory_wolf_modifier
			REASON = death_wolf
		}

		#We need to check that they didn't die - if we apply stress to a dead character the error-log complains
		if = {
			limit = {
				is_alive = yes
			}
			stress_impact = {
				brave = major_stress_impact_loss
				craven = major_stress_impact_gain
			}
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = 0.5
				ai_vengefulness = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# (Berserker) Auto-win due to Hulkery.
	option = {
		name = fp1_yearly.0082.b
		trigger = { has_trait = berserker }
		trait = berserker

		# Explain what's happening.
		custom_tooltip = fp1_yearly.0082.b.tt
		# And apply victory effects.
		fp1_0081_troll_duel_victory_effect = { MODIFIER = fp1_yearly_0071_troll_victory_wolf_modifier }

		stress_impact = {
			berserker = massive_stress_impact_loss
			wrathful = major_stress_impact_loss
			calm = major_stress_impact_gain
		}
		ai_chance = {
			# The AI should basically always take this option, since it's both an automatic win and something representing a sudden & total loss of control.
			base = 10000
		}
	}

	# Martial: rally! Form a circle!
	option = {
		name = fp1_yearly.0082.c

		# Risky martial duel.
		fp1_0081_troll_duel_alternate_effect = {
			SKILL = martial
			SUCCESS_TITLE = fp1_yearly.0082.c.tt_success
			FAILURE_TITLE = fp1_yearly.0082.c.tt_failure
			MODIFIER = fp1_yearly_0071_troll_victory_wolf_modifier
		}

		stress_impact = {
			brave = medium_stress_impact_loss
			craven = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.5
				ai_vengefulness = 0.5
				ai_honor = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# FLEE!
	option = {
		name = fp1_yearly.0082.d

		# Apply flee effects.
		fp1_0081_flee_option_effect = yes

		stress_impact = {
			craven = major_stress_impact_loss
			brave = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = -0.5
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight up for stress; weight up even further for cravens not wanting to immediately die.
				add = 1000
				has_trait = craven
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = brave
			}
		}
	}
}

#	Troll: colossal wolverine.
fp1_yearly.0083 = {
	type = character_event
	title = fp1_yearly.0083.t
	desc = fp1_yearly.0083.desc
	theme = hunting
	left_portrait = {
		character = root
		animation = shock
	}

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		is_landed = yes
		# Must be a tribal...
		government_has_flag = government_is_tribal
		# With a rural, North Germanic capital.
		capital_county = {
			# Checking the capital, not the character, since it's a local superstition rather than something ye're insisiting on.
			culture = { has_cultural_pillar = heritage_north_germanic }
			development_level <= terrible_development_level
		}
	}

	on_trigger_fail = { fp1_0081_invalidation_toast_effect = yes }

	immediate = { play_music_cue = "mx_cue_combat_stinger" }

	# Charge in, blade swinging.
	option = {
		name = fp1_yearly.0083.a
		trigger = {
			NOT = { has_trait = berserker }
		}

		# Risky prowess duel.
		fp1_0081_troll_duel_effect = {
			SUCCESS_TITLE = fp1_yearly.0083.a.tt_success
			FAILURE_TITLE = fp1_yearly.0083.a.tt_failure
			MODIFIER = fp1_yearly_0071_troll_victory_wolverine_modifier
			REASON = death_wolverine
		}

		#We need to check that they didn't die - if we apply stress to a dead character the error-log complains
		if = {
			limit = {
				is_alive = yes
			}
			stress_impact = {
				brave = major_stress_impact_loss
				craven = major_stress_impact_gain
			}
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = 0.5
				ai_vengefulness = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# (Berserker) Auto-win due to Hulkery.
	option = {
		name = fp1_yearly.0083.b
		trigger = { has_trait = berserker }
		trait = berserker

		# Explain what's happening.
		custom_tooltip = fp1_yearly.0083.b.tt
		# And apply victory effects.
		fp1_0081_troll_duel_victory_effect = { MODIFIER = fp1_yearly_0071_troll_victory_wolverine_modifier }

		stress_impact = {
			berserker = massive_stress_impact_loss
			wrathful = major_stress_impact_loss
			calm = major_stress_impact_gain
		}
		ai_chance = {
			# The AI should basically always take this option, since it's both an automatic win and something representing a sudden & total loss of control.
			base = 10000
		}
	}

	# Stewardship: there's a lodge near here, fall back for reinforcements!
	option = {
		name = fp1_yearly.0083.c

		# Risky stewardship duel.
		fp1_0081_troll_duel_alternate_effect = {
			SKILL = stewardship
			SUCCESS_TITLE = fp1_yearly.0083.c.tt_success
			FAILURE_TITLE = fp1_yearly.0083.c.tt_failure
			MODIFIER = fp1_yearly_0071_troll_victory_wolverine_modifier
		}

		stress_impact = {
			brave = medium_stress_impact_loss
			craven = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.5
				ai_vengefulness = 0.5
				ai_honor = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# FLEE!
	option = {
		name = fp1_yearly.0083.d

		# Apply flee effects.
		fp1_0081_flee_option_effect = yes

		stress_impact = {
			craven = major_stress_impact_loss
			brave = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = -0.5
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight up for stress; weight up even further for cravens not wanting to immediately die.
				add = 1000
				has_trait = craven
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = brave
			}
		}
	}
}

#	Troll: stealthy lynx.
fp1_yearly.0084 = {
	type = character_event
	title = fp1_yearly.0084.t
	desc = fp1_yearly.0084.desc
	theme = hunting
	left_portrait = {
		character = root
		animation = shock
	}

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		is_landed = yes
		# Must be a tribal...
		government_has_flag = government_is_tribal
		# With a rural, North Germanic capital.
		capital_county = {
			# Checking the capital, not the character, since it's a local superstition rather than something ye're insisiting on.
			culture = { has_cultural_pillar = heritage_north_germanic }
			development_level <= terrible_development_level
		}
	}

	on_trigger_fail = { fp1_0081_invalidation_toast_effect = yes }

	immediate = { play_music_cue = "mx_cue_combat_stinger" }

	# Charge in, blade swinging.
	option = {
		name = fp1_yearly.0084.a
		trigger = {
			NOT = { has_trait = berserker }
		}

		# Risky prowess duel.
		fp1_0081_troll_duel_effect = {
			SUCCESS_TITLE = fp1_yearly.0084.a.tt_success
			FAILURE_TITLE = fp1_yearly.0084.a.tt_failure
			MODIFIER = fp1_yearly_0071_troll_victory_lynx_modifier
			REASON = death_lynx
		}

		#We need to check that they didn't die - if we apply stress to a dead character the error-log complains
		if = {
			limit = {
				is_alive = yes
			}
			stress_impact = {
				brave = major_stress_impact_loss
				craven = major_stress_impact_gain
			}
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = 0.5
				ai_vengefulness = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# (Berserker) Auto-win due to Hulkery.
	option = {
		name = fp1_yearly.0084.b
		trigger = { has_trait = berserker }
		trait = berserker

		# Explain what's happening.
		custom_tooltip = fp1_yearly.0084.b.tt
		# And apply victory effects.
		fp1_0081_troll_duel_victory_effect = { MODIFIER = fp1_yearly_0071_troll_victory_lynx_modifier }

		stress_impact = {
			berserker = massive_stress_impact_loss
			wrathful = major_stress_impact_loss
			calm = major_stress_impact_gain
		}
		ai_chance = {
			# The AI should basically always take this option, since it's both an automatic win and something representing a sudden & total loss of control.
			base = 10000
		}
	}

	# Intrigue: quiet; you two flank it, we'll flush it towards you...
	option = {
		name = fp1_yearly.0084.c

		# Risky diplomacy duel.
		fp1_0081_troll_duel_alternate_effect = {
			SKILL = intrigue
			SUCCESS_TITLE = fp1_yearly.0084.c.tt_success
			FAILURE_TITLE = fp1_yearly.0084.c.tt_failure
			MODIFIER = fp1_yearly_0071_troll_victory_lynx_modifier
		}

		stress_impact = {
			brave = medium_stress_impact_loss
			craven = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.5
				ai_vengefulness = 0.5
				ai_honor = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# FLEE!
	option = {
		name = fp1_yearly.0084.d

		# Apply flee effects.
		fp1_0081_flee_option_effect = yes

		stress_impact = {
			craven = major_stress_impact_loss
			brave = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = -0.5
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight up for stress; weight up even further for cravens not wanting to immediately die.
				add = 1000
				has_trait = craven
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = brave
			}
		}
	}
}

#	Troll: enraged moose.
fp1_yearly.0085 = {
	type = character_event
	title = fp1_yearly.0085.t
	desc = {
		# Account for sibling violence.
		first_valid = {
			triggered_desc = {
				trigger = { exists = scope:loveli_lakes }
				desc = fp1_yearly.0085.desc.loveli_lakes
			}
			desc = fp1_yearly.0085.desc.fallback
		}
	}
	theme = hunting
	left_portrait = {
		character = root
		animation = shock
	}
	right_portrait = {
		character = scope:loveli_lakes
		animation = anger
	}

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		is_landed = yes
		# Must be a tribal...
		government_has_flag = government_is_tribal
		# With a rural, North Germanic capital.
		capital_county = {
			# Checking the capital, not the character, since it's a local superstition rather than something ye're insisiting on.
			culture = { has_cultural_pillar = heritage_north_germanic }
			development_level <= terrible_development_level
		}
	}

	on_trigger_fail = { fp1_0081_invalidation_toast_effect = yes }

	immediate = { play_music_cue = "mx_cue_combat_stinger" }

	# Charge in, blade swinging.
	option = {
		name = fp1_yearly.0085.a
		trigger = {
			NOT = { has_trait = berserker }
		}

		# Risky prowess duel.
		fp1_0081_troll_duel_effect = {
			SUCCESS_TITLE = fp1_yearly.0085.a.tt_success
			FAILURE_TITLE = fp1_yearly.0085.a.tt_failure
			MODIFIER = fp1_yearly_0071_troll_victory_moose_modifier
			REASON = death_moose
		}

		#We need to check that they didn't die - if we apply stress to a dead character the error-log complains
		if = {
			limit = {
				is_alive = yes
			}
			stress_impact = {
				brave = major_stress_impact_loss
				craven = major_stress_impact_gain
			}
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = 0.5
				ai_vengefulness = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# (Berserker) Auto-win due to Hulkery.
	option = {
		name = fp1_yearly.0085.b
		trigger = { has_trait = berserker }
		trait = berserker

		# Explain what's happening.
		custom_tooltip = fp1_yearly.0085.b.tt
		# And apply victory effects.
		fp1_0081_troll_duel_victory_effect = { MODIFIER = fp1_yearly_0071_troll_victory_moose_modifier }

		stress_impact = {
			berserker = massive_stress_impact_loss
			wrathful = major_stress_impact_loss
			calm = major_stress_impact_gain
		}
		ai_chance = {
			# The AI should basically always take this option, since it's both an automatic win and something representing a sudden & total loss of control.
			base = 10000
		}
	}

	# Learning: remember its weak spot, spears and bows only!
	option = {
		name = fp1_yearly.0085.c

		# Risky learning duel.
		fp1_0081_troll_duel_alternate_effect = {
			SKILL = learning
			SUCCESS_TITLE = fp1_yearly.0085.c.tt_success
			FAILURE_TITLE = fp1_yearly.0085.c.tt_failure
			MODIFIER = fp1_yearly_0071_troll_victory_moose_modifier
		}

		stress_impact = {
			brave = medium_stress_impact_loss
			craven = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.5
				ai_vengefulness = 0.5
				ai_honor = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# FLEE!
	option = {
		name = fp1_yearly.0085.d

		# Apply flee effects.
		fp1_0081_flee_option_effect = yes

		stress_impact = {
			craven = major_stress_impact_loss
			brave = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = -0.5
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight up for stress; weight up even further for cravens not wanting to immediately die.
				add = 1000
				has_trait = craven
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = brave
			}
		}
	}
}

##################################################
# A Ship fit for a [ROOT.Char.GetTitleAsName]
# by Ewan Cowhig Croft
# 0090 - 0100
##################################################

#	Commissioning a Longship for Yourself
fp1_yearly.0091 = {
	type = character_event
	title = fp1_yearly.0091.t
	desc = fp1_yearly.0091.desc
	theme = martial
	left_portrait = {
		character = root
		animation = personality_rational
	}
	override_background = { reference = fp1_beached_longships }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0091 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		fp1_is_coastal_norse_tribal = yes
	}

	weight_multiplier = {
		base = 1

		# Weight up for having sea-faring traits.
		modifier = {
			add = 0.5
			has_trait = viking
		}
		modifier = {
			add = 0.5
			has_trait = adventurer
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0091
			days = 10950
		}
	}

	# A leviathan, to carry my spoils!
	option = {
		name = fp1_yearly.0091.a
		trigger = {
			can_make_expensive_purchase_trigger = { PRICE = fp1_0091_standard_ship_gold_cost }
		}

		# Get a modifier enhancing loot capacity.
		add_character_modifier = {
			modifier = fp1_flagship_leviathan_modifier
			years = 10
		}
		# And charge the gold cost.
		remove_short_term_gold = major_gold_value

		stress_impact = {
			profligate = massive_stress_impact_loss
			ambitious = major_stress_impact_loss
			content = major_stress_impact_gain
			greedy = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_energy = 0.5
				ai_greed = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 50
				has_trait = profligate
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = ambitious
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = content
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = greedy
			}
		}
	}

	# A monster, to intimidate my vassals!
	option = {
		name = fp1_yearly.0091.b
		trigger = {
			can_make_expensive_purchase_trigger = { PRICE = fp1_0091_standard_ship_gold_cost }
		}

		# Get a modifier giving more tax from cowed vassals.
		add_character_modifier = {
			modifier = fp1_flagship_monster_modifier
			years = 10
		}
		# And charge the gold cost.
		remove_short_term_gold = major_gold_value

		stress_impact = {
			profligate = massive_stress_impact_loss
			callous = major_stress_impact_loss
			sadistic = major_stress_impact_loss
			compassionate = major_stress_impact_gain
			greedy = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_vengefulness = 0.5
				ai_greed = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 50
				has_trait = profligate
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = callous
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = sadistic
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = greedy
			}
		}
	}

	# A dragon, to roar my name!
	option = {
		name = fp1_yearly.0091.c
		trigger = {
			can_make_expensive_purchase_trigger = { PRICE = fp1_0091_standard_ship_gold_cost }
		}

		# Get a modifier granting diplomacy per prestige level
		add_character_modifier = {
			modifier = fp1_flagship_dragon_modifier
			years = 10
		}
		# And charge the gold cost.
		remove_short_term_gold = major_gold_value

		stress_impact = {
			profligate = massive_stress_impact_loss
			arrogant = major_stress_impact_loss
			humble = major_stress_impact_gain
			greedy = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_sociability = 0.5
				ai_greed = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 50
				has_trait = profligate
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = humble
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = greedy
			}
		}
	}

	# These are all ludicrously costly...
	option = {
		name = fp1_yearly.0091.d

		# Consiliatory stress loss for hanging on to your cash.
		## Stress loss handled in stress impact.

		stress_impact = {
			base = minor_stress_loss
			greedy = medium_stress_impact_loss
			arrogant = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 0.5
				ai_boldness = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = arrogant
			}
		}
	}
}

##################################################
# A Guest/Courtier Challenges you to Riddles
# by Ewan Cowhig Croft
# 0101 - 0110
##################################################

scripted_trigger fp1_valid_riddler_at_court_trigger = {
	# We want characters of minor or major interest, ideally.
	is_of_major_or_minor_interest_trigger = { CHARACTER = root }
	# And we want to make sure they're available and can speak.
	is_available_ai_adult = yes
}

#	Someone in your court challenges you to an idle game of riddles.
fp1_yearly.0101 = {
	type = character_event
	title = fp1_yearly.0101.t
	desc = fp1_yearly.0101.desc
	theme = diplomacy
	left_portrait = {
		character = root
		animation = personality_rational
	}
	right_portrait = {
		character = scope:riddler
		animation = schadenfreude
	}

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0101 }
		is_landed = yes
		# Valid for North Germanics only.
		culture = { has_cultural_pillar = heritage_north_germanic }
		# Has a valid courtier/guest who can quiz you.
		any_courtier_or_guest = { fp1_valid_riddler_at_court_trigger = yes }
		# Doesn't have an established extreme hatred of riddles.
		NOT = { has_character_flag = fp1_yearly_0101_really_hates_riddles }
	}

	weight_multiplier = {
		base = 1

		# Weight up for traits that make you a known woman/man of letters.
		modifier = {
			add = 0.5
			has_trait = journaller
		}
		modifier = {
			add = 0.5
			has_trait = scholar
		}
		modifier = {
			add = 0.5
			has_trait = theologian
		}
		modifier = {
			add = 0.5
			has_trait = administrator
		}
		modifier = {
			add = 0.5
			has_trait = architect
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0101
			days = 1825
		}
		# Designate a suitable riddler.
		## First, we grab all possibles & sort them into a list.
		every_courtier_or_guest = {
			limit = { fp1_valid_riddler_at_court_trigger = yes }
			add_to_list = potential_valid_riddlers_list
		}
		## Then, we order that list appropriately.
		ordered_in_list = {
			list = potential_valid_riddlers_list
			order_by = { value = fp1_best_available_riddler_value }
			save_scope_as = riddler
		}
	}

	# Entertaining, I'll play! [diplo]
	option = {
		name = fp1_yearly.0101.a

		# Duel the courtier for it.
		duel = {
			skill = diplomacy
			target = scope:riddler
			# You win the game!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0101.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0101.a.tt_success
					left_icon = scope:riddler
					# Gain opinion with your court for participating.
					every_courtier_or_guest = {
						limit = { is_available_adult = yes }
						custom = fp1_yearly.0101.a.every_courtier_and_guest
						add_opinion = {
							target = root
							modifier = amused_opinion
							opinion = 20
						}
					}
					# And a little prestige as a side-prize.
					add_prestige = miniscule_prestige_gain
				}
			}
			# You lose the game!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0101.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0101.a.tt_failure
					left_icon = scope:riddler
					# Gain opinion with your court for participating.
					every_courtier_or_guest = {
						limit = { is_available_adult = yes }
						custom = fp1_yearly.0101.a.every_courtier_and_guest
						add_opinion = {
							target = root
							modifier = amused_opinion
							opinion = 20
						}
					}
					# And lose a little prestige.
					add_prestige = minor_prestige_loss
				}
			}
		}

		stress_impact = {
			arrogant = minor_stress_impact_loss
			gregarious = medium_stress_impact_loss
			shy = minor_stress_impact_gain
			impatient = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.75
				ai_boldness = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = gregarious
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = shy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = impatient
			}
		}
	}

	# Entertaining, I'll play! [learning]
	option = {
		name = fp1_yearly.0101.b

		duel = {
			skill = learning
			target = scope:riddler
			# You win the game!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0101.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0101.a.tt_success
					left_icon = scope:riddler
					# Gain opinion with your court for participating.
					every_courtier_or_guest = {
						limit = { is_available_adult = yes }
						custom = fp1_yearly.0101.a.every_courtier_and_guest
						add_opinion = {
							target = root
							modifier = amused_opinion
							opinion = 20
						}
					}
					# And a little prestige as a side-prize.
					add_prestige = miniscule_prestige_gain
				}
			}
			# You lose the game!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0101.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0101.a.tt_failure
					left_icon = scope:riddler
					# Gain opinion with your court for participating.
					every_courtier_or_guest = {
						limit = { is_available_adult = yes }
						custom = fp1_yearly.0101.a.every_courtier_and_guest
						add_opinion = {
							target = root
							modifier = amused_opinion
							opinion = 20
						}
					}
					# And lose a little prestige.
					add_prestige = minor_prestige_loss
				}
			}
		}

		stress_impact = {
			arrogant = minor_stress_impact_loss
			gregarious = medium_stress_impact_loss
			shy = minor_stress_impact_gain
			impatient = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.75
				ai_boldness = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = gregarious
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = shy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = impatient
			}
		}
	}

	# Here's one: who has no brain and belongs in the dungeon?
	option = {
		name = fp1_yearly.0101.c

		# Toss them in the dungeon.
		imprison_character_effect = {
			IMPRISONER = root
			TARGET = scope:riddler
		}
		hidden_effect = {
			# Make sure that it's _definitely_ the dungeon.
			scope:riddler = { change_prison_type = dungeon }
			# And that no one will ever try to get you involved in a game ever again.
			add_character_flag = fp1_yearly_0101_really_hates_riddles
		}
		# Gain some dread to balance out that tyranny.
		add_dread = medium_dread_gain
		# People may remember your over-reaction...
		if = {
			limit = { has_any_nickname = no }
			custom_tooltip = fp1_yearly.0101.c.tt
			hidden_effect = {
				random_list = {
					60 = {
						# The court dares not mock you.
					}
					40 = {
						# You hear a whispered nickname behind your back...
						random_list = {
							20 = {
								send_interface_toast = {
									title = fp1_yearly.0101.c.tt_nickname
									left_icon = root
									give_nickname = nick_the_stonefaced
								}
							}
							20 = {
								send_interface_toast = {
									title = fp1_yearly.0101.c.tt_nickname
									left_icon = root
									give_nickname = nick_the_dry
								}
							}
							20 = {
								send_interface_toast = {
									title = fp1_yearly.0101.c.tt_nickname
									left_icon = root
									give_nickname = nick_the_joyless
								}
							}
							20 = {
								send_interface_toast = {
									title = fp1_yearly.0101.c.tt_nickname
									left_icon = root
									give_nickname = nick_lacks_laughs
								}
							}
							20 = {
								send_interface_toast = {
									title = fp1_yearly.0101.c.tt_nickname
									left_icon = root
									give_nickname = nick_the_dull
								}
							}
						}
					}
				}
			}
		}

		stress_impact = {
			sadistic = minor_stress_impact_loss
			impatient = medium_stress_impact_loss
			vengeful = medium_stress_impact_loss
			gregarious = minor_stress_impact_gain
			compassionate = medium_stress_impact_gain
			patient = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.5
				ai_compassion = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = sadistic
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = impatient
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = vengeful
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = gregarious
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = patient
			}
		}
	}

	# Thanks, but I'm a [title], and have things to do.
	option = {
		name = fp1_yearly.0101.d

		# Lose a little prestige, but less than if you were beaten.
		add_prestige = miniscule_prestige_loss
		# Scope:riddler is disappointed in you.
		scope:riddler = {
			add_opinion = {
				target = root
				modifier = disappointed_opinion
				opinion = -20
			}
		}

		stress_impact = {
			shy = minor_stress_impact_loss
			impatient = medium_stress_impact_loss
			arrogant = minor_stress_impact_gain
			gregarious = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = -0.5
				ai_sociability = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = shy
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = impatient
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = gregarious
			}
		}
	}
}

##################################################
# Accursed
# by Ewan Cowhig Croft
# 0111 - 0120
##################################################

scripted_trigger fp1_0111_superstitious_courtier_trigger = {
	# Basic checks.
	is_available_ai_adult = yes
	OR = {
		fp1_is_norse = yes
		religion = religion:germanic_religion
	}
	# Rule out a few key traits.
	NOR = {
		# Cynical characters don't believe.
		has_trait = cynical
		# Brave characters don't succumb to threats.
		has_trait = brave
		# Trusting characters believe the gods or their friends will help them.
		has_trait = trusting
	}
	# Witches aren't fussed: they're confident in their counterspells.
	NOR = {
		has_trait = witch
		any_secret = { type = secret_witch }
	}
	# Anyone who's already been cursed is about as screwed as they can be.
	NOT = { has_character_modifier = fp1_cursed_by_nithing_pole_modifier }
	# And we ideally want to be able to add a strong hook, at least.
	save_temporary_scope_as = current_courtier
	root = {
		can_add_hook = {
			target = scope:current_courtier
			type = loyalty_hook
		}
	}
}

scripted_trigger fp1_0111_suspicious_courtier_trigger = {
	# Basic checks.
	is_available_ai_adult = yes
	this != scope:accursed
	OR = {
		fp1_is_norse = yes
		religion = religion:germanic_religion
	}
	# Would-be sorcerers need to either know what they're doing, or else have absolutely no clue.
	OR = {
		intrigue >= fp1_0111_sorcerer_intrigue_high
		learning >= fp1_0111_sorcerer_learning_high
		intrigue <= fp1_0111_sorcerer_intrigue_low
		learning <= fp1_0111_sorcerer_learning_low
	}
	# ... and to have at least two of various pairs of matched traits.
	calc_true_if = {
		amount >= 2
		OR = {
			has_trait = lazy
			has_trait = arbitrary
		}
		OR = {
			has_trait = wrathful
			has_trait = impatient
		}
		OR = {
			has_trait = calm
			has_trait = patient
		}
		OR = {
			has_trait = sadistic
			has_trait = arrogant
		}
		OR = {
			has_trait = callous
			has_trait = ambitious
		}
		OR = {
			has_trait = deceitful
			has_trait = craven
		}
		OR = {
			has_trait = brave
			has_trait = trusting
		}
		OR = {
			has_trait = paranoid
			has_trait = vengeful
		}
	}
	# Filter out known witches: *way* too obvious.
	NOT = { has_trait = witch }
}

scripted_trigger fp1_0111_discountable_courtier_trigger = {
	# Basic checks.
	is_available_ai_adult = yes
	this != scope:accursed
	OR = {
		fp1_is_norse = yes
		religion = religion:germanic_religion
	}
	# Discountables must not meet minimum requirements to be suspicious.
	fp1_0111_suspicious_courtier_trigger = no
	# On top of that, as long as they have at least one disqualifying statistic, they're gucci.
	OR = {
		has_trait = gallant
		has_trait = honest
		has_trait = just
		has_trait = compassionate
		has_trait = forgiving
		# Zealous characters require witchcraft to be at least somewhat shameful.
		AND = {
			has_trait = zealous
			faith = {
				NOT = { has_doctrine_parameter = witchcraft_accepted }
			}
		}
	}
	# Ensure that no witches are thrown into the discountables pile, as that's just cruel.
	NOR = {
		has_trait = witch
		any_secret = { type = secret_witch }
	}
}

scripted_effect fp1_0111_randomise_sorcerer_identity_effect = {
	random_list = {
		100 = {
			trigger = {
				NOT = { exists = scope:suspect_a }
			}
			save_scope_as = suspect_a
		}
		100 = {
			trigger = {
				NOT = { exists = scope:suspect_b }
			}
			save_scope_as = suspect_b
		}
		100 = {
			trigger = {
				NOT = { exists = scope:suspect_c }
			}
			save_scope_as = suspect_c
		}
	}
}

scripted_effect fp1_0111_accursed_receives_curse_effect = {
	# Firstly, they gain a *colossal* amount of stress.
	add_stress = monumental_stress_gain
	# Then they take a negative modifier.
	add_character_modifier = {
		modifier = fp1_cursed_by_nithing_pole_modifier
		years = 20
	}
	# And become paranoid if possible.
	if = {
		limit = {
			number_of_personality_traits < personality_trait_limit
			NOR = {
				has_trait = trusting
				has_trait = paranoid
			}
		}
		add_trait = paranoid
	}
}

scripted_effect fp1_0111_correct_accusation_effect = {
	# Give $CHARACTER$ a witch secret & expose it.
	$CHARACTER$ = {
		# Hide the witch effect, so that you can't just *see* who the witch is by who'll be exposed.
		hidden_effect = {
			random_secret = {
				type = secret_witch
				expose_secret = root
			}
		}
		# Simply show a nice, easy tooltip.
		show_as_tooltip = { add_trait = witch }
	}
	# Rightfully imprison them.
	rightfully_imprison_character_effect = {
		TARGET = $CHARACTER$
		IMPRISONER = root
	}
	# Gain a nicely chonky chunk of prestige.
	add_prestige = medium_prestige_gain
	# Receive a strong hook on, and oodles of opinion with, scope:accursed.
	add_hook = {
		type = loyalty_hook
		target = scope:accursed
	}
	reverse_add_opinion = {
		target = scope:accursed
		modifier = relieved_opinion
		opinion = 75
	}
}

scripted_effect fp1_0111_false_accusation_effect = {
	# $CHARACTER$ is, understandably, upset.
	reverse_add_opinion = {
		target = $CHARACTER$
		modifier = falsely_accused
	}
	# And you lose some prestige for your failure.
	add_prestige = medium_prestige_loss
	# Scope:accursed has a melt-down.
	scope:accursed = { fp1_0111_accursed_receives_curse_effect = yes }
}

scripted_effect fp1_0111_select_accusation_effect = {
	# Inform root about the potential consequences of their guess.
	show_as_tooltip = {
		random_list = {
			# Guessed correctly.
			100 = {
				show_chance = no
				desc = fp1_yearly.0111.tt.correct_guess
				fp1_0111_correct_accusation_effect = { CHARACTER = $CHARACTER$ }
			}
			# Guessed incorrectly.
			100 = {
				show_chance = no
				desc = fp1_yearly.0111.tt.wrong_guess
				fp1_0111_false_accusation_effect = { CHARACTER = $CHARACTER$ }
			}
		}
	}
	# And handle the actual results.
	## Guessed correctly!
	if = {
		limit = { $CHARACTER$ = scope:culprit }
		send_interface_toast = {
			title = fp1_yearly.0111.tt.correct_accusation
			left_icon = $CHARACTER$
			right_icon = scope:accursed
			# Calculate actual effects: we have to keep these hidden so as not to spoil the mystery.
			hidden_effect = {
				fp1_0111_correct_accusation_effect = { CHARACTER = $CHARACTER$ }
			}
			# And throw in a tooltip to make the toast seem less empty.
			custom_tooltip = fp1_yearly.0111.tt.correct_accusation.tt
		}
	}
	## Otherwise, you dun goofed.
	else = {
		send_interface_toast = {
			title = fp1_yearly.0111.tt.false_accusation
			left_icon = $CHARACTER$
			right_icon = scope:accursed
			# Calculate actual effects: we have to keep these hidden so as not to spoil the mystery.
			hidden_effect = {
				fp1_0111_false_accusation_effect = { CHARACTER = $CHARACTER$ }
			}
			# And throw in a tooltip to make the toast seem less empty.
			custom_tooltip = fp1_yearly.0111.tt.false_accusation.tt
		}
	}
}

#	Nithing Pole Raised Against Courtier
fp1_yearly.0111 = {
	type = character_event
	title = fp1_yearly.0111.t
	desc = {
		desc = fp1_yearly.0111.desc.intro
		# Skill clue.
		first_valid = {
			triggered_desc = {
				trigger = {
					scope:clue_skill = flag:intrigue
					intrigue >= fp1_0111_sorcerer_intrigue_high
				}
				desc = fp1_yearly.0111.desc.skill.intrigue_high
			}
			triggered_desc = {
				trigger = {
					scope:clue_skill = flag:learning
					learning >= fp1_0111_sorcerer_learning_high
				}
				desc = fp1_yearly.0111.desc.skill.learning_high
			}
			triggered_desc = {
				trigger = {
					scope:clue_skill = flag:intrigue
					intrigue <= fp1_0111_sorcerer_intrigue_low
				}
				desc = fp1_yearly.0111.desc.skill.intrigue_low
			}
			triggered_desc = {
				trigger = {
					scope:clue_skill = flag:learning
					learning <= fp1_0111_sorcerer_learning_low
				}
				desc = fp1_yearly.0111.desc.skill.learning_low
			}
			desc = fp1_yearly.0111.desc.skill.fallback
		}
		# Grammatical stop.
		desc = fp1_yearly.0111.desc.first_connector
		# Trait clue #1.
		first_valid = {
			triggered_desc = {
				trigger = { scope:clue_trait_1 = flag:lazy_or_arbitrary }
				desc = fp1_yearly.0111.desc.trait_1.lazy_or_arbitrary
			}
			triggered_desc = {
				trigger = { scope:clue_trait_1 = flag:wrathful_or_impatient }
				desc = fp1_yearly.0111.desc.trait_1.wrathful_or_impatient
			}
			triggered_desc = {
				trigger = { scope:clue_trait_1 = flag:calm_or_patient }
				desc = fp1_yearly.0111.desc.trait_1.calm_or_patient
			}
			triggered_desc = {
				trigger = { scope:clue_trait_1 = flag:sadistic_or_arrogant }
				desc = fp1_yearly.0111.desc.trait_1.sadistic_or_arrogant
			}
			triggered_desc = {
				trigger = { scope:clue_trait_1 = flag:callous_or_ambitious }
				desc = fp1_yearly.0111.desc.trait_1.callous_or_ambitious
			}
			triggered_desc = {
				trigger = { scope:clue_trait_1 = flag:deceitful_or_craven }
				desc = fp1_yearly.0111.desc.trait_1.deceitful_or_craven
			}
			triggered_desc = {
				trigger = { scope:clue_trait_1 = flag:brave_or_trusting }
				desc = fp1_yearly.0111.desc.trait_1.brave_or_trusting
			}
			triggered_desc = {
				trigger = { scope:clue_trait_1 = flag:paranoid_or_vengeful }
				desc = fp1_yearly.0111.desc.trait_1.paranoid_or_vengeful
			}
			desc = fp1_yearly.0111.desc.trait_1.fallback
		}
		# Grammatical stop.
		desc = fp1_yearly.0111.desc.second_connector
		# Trait clue #2.
		first_valid = {
			triggered_desc = {
				trigger = { scope:clue_trait_2 = flag:lazy_or_arbitrary }
				desc = fp1_yearly.0111.desc.trait_2.lazy_or_arbitrary
			}
			triggered_desc = {
				trigger = { scope:clue_trait_2 = flag:wrathful_or_impatient }
				desc = fp1_yearly.0111.desc.trait_2.wrathful_or_impatient
			}
			triggered_desc = {
				trigger = { scope:clue_trait_2 = flag:calm_or_patient }
				desc = fp1_yearly.0111.desc.trait_2.calm_or_patient
			}
			triggered_desc = {
				trigger = { scope:clue_trait_2 = flag:sadistic_or_arrogant }
				desc = fp1_yearly.0111.desc.trait_2.sadistic_or_arrogant
			}
			triggered_desc = {
				trigger = { scope:clue_trait_2 = flag:callous_or_ambitious }
				desc = fp1_yearly.0111.desc.trait_2.callous_or_ambitious
			}
			triggered_desc = {
				trigger = { scope:clue_trait_2 = flag:deceitful_or_craven }
				desc = fp1_yearly.0111.desc.trait_2.deceitful_or_craven
			}
			triggered_desc = {
				trigger = { scope:clue_trait_2 = flag:brave_or_trusting }
				desc = fp1_yearly.0111.desc.trait_2.brave_or_trusting
			}
			triggered_desc = {
				trigger = { scope:clue_trait_2 = flag:paranoid_or_vengeful }
				desc = fp1_yearly.0111.desc.trait_2.paranoid_or_vengeful
			}
			desc = fp1_yearly.0111.desc.trait_2.fallback
		}
		desc = fp1_yearly.0111.desc.outro
	}
	theme = intrigue
	left_portrait = {
		character = root
		animation = personality_rational
	}
	right_portrait = {
		character = scope:accursed
		animation = fear
	}
	lower_left_portrait = scope:suspect_a
	lower_center_portrait = scope:suspect_b
	lower_right_portrait = scope:suspect_c
	override_background = { reference = corridor_night }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0111 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		faith = {
			NOT = { has_doctrine_parameter = witchcraft_accepted }
		}
		OR = {
			fp1_is_norse_tribal = yes
			# Allow this after feudalisation, but not for kings and emperors with more important things going on.
			AND = {
				fp1_is_norse = yes
				highest_held_title_tier <= tier_duchy
			}
		}
		# Make sure we have a suitably superstitious character for scope:courtier.
		any_courtier = {
			fp1_0111_superstitious_courtier_trigger = yes
			save_temporary_scope_as = accursed
		}
		# And that they've got enemies available.
		any_courtier_or_guest = {
			# Count one more than we need so that we've still got a valid scope:accursed even if they accidentally take up a suspect slot.
			count >= 4
			fp1_0111_suspicious_courtier_trigger = yes
		}
	}

	weight_multiplier = {
		base = 1

		# Witches see more of this type of thing in their court.
		modifier = {
			add = 1
			has_trait = witch
		}
		# And zealots are more likely to be appealed to by terrified courtiers.
		modifier = {
			add = 0.5
			has_trait = zealous
		}
	}

	immediate = {
		play_music_cue = "mx_cue_murder"
		add_character_flag = {
			flag = had_event_fp1_yearly_0111
			days = 7300
		}
		# Designate a suitable superstitious courtier.
		random_courtier = {
			limit = { fp1_0111_superstitious_courtier_trigger = yes }
			weight = {
				base = 0
				# Weigh up the paranoid.
				modifier = {
					add = 100
					has_trait = paranoid
				}
				# Weigh up zealots.
				modifier = {
					add = 50
					has_trait = zealous
				}
				# And the vengeful, just a little, for assuming everyone thinks like them.
				modifier = {
					add = 25
					has_trait = vengeful
				}
			}
			save_scope_as = accursed
		}
		# Next, grab all valid suspicious courtiers
		every_courtier_or_guest = {
			limit = {
				fp1_0111_suspicious_courtier_trigger = yes
			}
			add_to_list = suspicious_courtiers_list
		}
		# And all valid discountables.
		every_courtier_or_guest = {
			limit = { fp1_0111_discountable_courtier_trigger = yes }
			add_to_list = discountable_courtiers_list
		}
		# Process candidates.
		## First, scope:culprit.
		random_in_list = {
			list = suspicious_courtiers_list
			weight = {
				base = 1
				# Weight up anyone with the witch secret for the main suspect.
				modifier = {
					add = 1000
					any_secret = { type = secret_witch }
				}
			}
			save_scope_as = culprit
		}
		## Then, scope:red_herring.
		random_in_list = {
			list = suspicious_courtiers_list
			limit = {
				NOR = {
					this = scope:culprit
					# Forbid secret witches: that's *too* much of a red herring.
					any_secret = { type = secret_witch }
				}
			}
			save_scope_as = red_herring
		}
		## Try for a scope:discountable.
		if = {
			limit = {
				any_in_list = {
					list = discountable_courtiers_list
					count >= 1
				}
			}
			random_in_list = {
				list = discountable_courtiers_list
				save_scope_as = discountable
			}
		}
		## If no scope:discountable is available, pick a scope:scarlet_herring.
		else = {
			random_in_list = {
				list = suspicious_courtiers_list
				limit = {
					NOR = {
						this = scope:culprit
						this = scope:red_herring
						# Forbid secret witches: that's *too* much of a red herring.
						any_secret = { type = secret_witch }
					}
				}
				save_scope_as = scarlet_herring
			}
		}
		# Then hand out suspect tags at random, so that it's not just always scope:suspect_a.
		## First, sort scope:culprit.
		scope:culprit = { fp1_0111_randomise_sorcerer_identity_effect = yes }
		## Next, scope:red_herring.
		scope:red_herring = { fp1_0111_randomise_sorcerer_identity_effect = yes }
		## If we have a scope:discountable, finish with them.
		if = {
			limit = { exists = scope:discountable }
			scope:discountable = { fp1_0111_randomise_sorcerer_identity_effect = yes }
		}
		## Otherwise, it's scope:scarlet_herring's turn.
		else = {
			scope:scarlet_herring = { fp1_0111_randomise_sorcerer_identity_effect = yes }
		}
		# Process clues.
		scope:culprit = {
			# First, we pick one of scope:culprit's skills to examine.
			## The base is just a straight 50:50 shot between intrigue & learning, but we weight it a list by education.
			random_list = {
				# Intrigue.
				1000 = {
					save_scope_value_as = {
						name = clue_skill
						value = flag:intrigue
					}
					# Weight up for education.
					modifier = {
						add = 250
						has_trait_rank = {
							trait = education_intrigue
							rank = 1
						}
					}
					modifier = {
						add = 500
						has_trait_rank = {
							trait = education_intrigue
							rank = 2
						}
					}
					modifier = {
						add = 750
						has_trait_rank = {
							trait = education_intrigue
							rank = 3
						}
					}
					modifier = {
						add = 1000
						has_trait_rank = {
							trait = education_intrigue
							rank >= 4
						}
					}
				}
				# Learning.
				1000 = {
					save_scope_value_as = {
						name = clue_skill
						value = flag:learning
					}
					# Weight up for education.
					modifier = {
						add = 250
						has_trait_rank = {
							trait = education_learning
							rank = 1
						}
					}
					modifier = {
						add = 500
						has_trait_rank = {
							trait = education_learning
							rank = 2
						}
					}
					modifier = {
						add = 750
						has_trait_rank = {
							trait = education_learning
							rank = 3
						}
					}
					modifier = {
						add = 1000
						has_trait_rank = {
							trait = education_learning
							rank >= 4
						}
					}
				}
			}
			# Then, we want to look through their traits and pick a first pair to comment on.
			## Eight options of 12.5% each.
			random_list = {
				# Lazy or arbitrary
				125 = {
					trigger = {
						OR = {
							has_trait = lazy
							has_trait = arbitrary
						}
					}
					save_scope_value_as = {
						name = clue_trait_1
						value = flag:lazy_or_arbitrary
					}
				}
				# Wrathful or impatient.
				125 = {
					trigger = {
						OR = {
							has_trait = wrathful
							has_trait = impatient
						}
					}
					save_scope_value_as = {
						name = clue_trait_1
						value = flag:wrathful_or_impatient
					}
				}
				# Calm or patient.
				125 = {
					trigger = {
						OR = {
							has_trait = calm
							has_trait = patient
						}
					}
					save_scope_value_as = {
						name = clue_trait_1
						value = flag:calm_or_patient
					}
				}
				# Sadistic or arrogant.
				125 = {
					trigger = {
						OR = {
							has_trait = sadistic
							has_trait = arrogant
						}
					}
					save_scope_value_as = {
						name = clue_trait_1
						value = flag:sadistic_or_arrogant
					}
				}
				# Callous or ambitious.
				125 = {
					trigger = {
						OR = {
							has_trait = callous
							has_trait = ambitious
						}
					}
					save_scope_value_as = {
						name = clue_trait_1
						value = flag:callous_or_ambitious
					}
				}
				# Deceitful or craven.
				125 = {
					trigger = {
						OR = {
							has_trait = deceitful
							has_trait = craven
						}
					}
					save_scope_value_as = {
						name = clue_trait_1
						value = flag:deceitful_or_craven
					}
				}
				# Brave or trusting.
				125 = {
					trigger = {
						OR = {
							has_trait = brave
							has_trait = trusting
						}
					}
					save_scope_value_as = {
						name = clue_trait_1
						value = flag:brave_or_trusting
					}
				}
				# Paranoid or vengeful.
				125 = {
					trigger = {
						OR = {
							has_trait = paranoid
							has_trait = vengeful
						}
					}
					save_scope_value_as = {
						name = clue_trait_1
						value = flag:paranoid_or_vengeful
					}
				}
			}
			# Finally, pick a secondary trait pairing.
			## Technically eight options of 12.5% each, but one of these is discounted for the first pairing, so it's actually seven pairings of 14.3% each.
			random_list = {
				# Lazy or arbitrary
				125 = {
					trigger = {
						OR = {
							has_trait = lazy
							has_trait = arbitrary
						}
						NOT = { scope:clue_trait_1 = flag:lazy_or_arbitrary }
					}
					save_scope_value_as = {
						name = clue_trait_2
						value = flag:lazy_or_arbitrary
					}
				}
				# Wrathful or impatient.
				125 = {
					trigger = {
						OR = {
							has_trait = wrathful
							has_trait = impatient
						}
						NOT = { scope:clue_trait_1 = flag:wrathful_or_impatient }
					}
					save_scope_value_as = {
						name = clue_trait_2
						value = flag:wrathful_or_impatient
					}
				}
				# Calm or patient.
				125 = {
					trigger = {
						OR = {
							has_trait = calm
							has_trait = patient
						}
						NOT = { scope:clue_trait_1 = flag:calm_or_patient }
					}
					save_scope_value_as = {
						name = clue_trait_2
						value = flag:calm_or_patient
					}
				}
				# Sadistic or arrogant.
				125 = {
					trigger = {
						OR = {
							has_trait = sadistic
							has_trait = arrogant
						}
						NOT = { scope:clue_trait_1 = flag:sadistic_or_arrogant }
					}
					save_scope_value_as = {
						name = clue_trait_2
						value = flag:sadistic_or_arrogant
					}
				}
				# Callous or ambitious.
				125 = {
					trigger = {
						OR = {
							has_trait = callous
							has_trait = ambitious
						}
						NOT = { scope:clue_trait_1 = flag:callous_or_ambitious }
					}
					save_scope_value_as = {
						name = clue_trait_2
						value = flag:callous_or_ambitious
					}
				}
				# Deceitful or craven.
				125 = {
					trigger = {
						OR = {
							has_trait = deceitful
							has_trait = craven
						}
						NOT = { scope:clue_trait_1 = flag:deceitful_or_craven }
					}
					save_scope_value_as = {
						name = clue_trait_2
						value = flag:deceitful_or_craven
					}
				}
				# Brave or trusting.
				125 = {
					trigger = {
						OR = {
							has_trait = brave
							has_trait = trusting
						}
						NOT = { scope:clue_trait_1 = flag:brave_or_trusting }
					}
					save_scope_value_as = {
						name = clue_trait_2
						value = flag:brave_or_trusting
					}
				}
				# Paranoid or vengeful.
				125 = {
					trigger = {
						OR = {
							has_trait = paranoid
							has_trait = vengeful
						}
						NOT = { scope:clue_trait_1 = flag:paranoid_or_vengeful }
					}
					save_scope_value_as = {
						name = clue_trait_2
						value = flag:paranoid_or_vengeful
					}
				}
			}
		}
		# Aaaaaaand make scope:culprit an actual witch.
		hidden_effect = {
			scope:culprit = { give_witch_secret_or_trait_effect = yes }
		}
	}

	# Scope:suspect_a, clearly.
	option = {
		name = fp1_yearly.0111.a

		# Display tooltip & apply effects.
		fp1_0111_select_accusation_effect = { CHARACTER = scope:suspect_a }

		stress_impact = {
			paranoid = major_stress_impact_loss
			zealous = major_stress_impact_loss
			trusting = major_stress_impact_gain
			cynical = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = 0.5
				ai_vengefulness = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = paranoid
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = zealous
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = trusting
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = cynical
			}
		}
	}

	# Scope:suspect_b, I think...
	option = {
		name = fp1_yearly.0111.b

		# Display tooltip & apply effects.
		fp1_0111_select_accusation_effect = { CHARACTER = scope:suspect_b }

		stress_impact = {
			paranoid = major_stress_impact_loss
			zealous = major_stress_impact_loss
			trusting = major_stress_impact_gain
			cynical = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = 0.5
				ai_vengefulness = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = paranoid
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = zealous
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = trusting
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = cynical
			}
		}
	}

	# Sounds like scope:suspect_c!
	option = {
		name = fp1_yearly.0111.c

		# Display tooltip & apply effects.
		fp1_0111_select_accusation_effect = { CHARACTER = scope:suspect_c }

		stress_impact = {
			paranoid = major_stress_impact_loss
			zealous = major_stress_impact_loss
			trusting = major_stress_impact_gain
			cynical = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = 0.5
				ai_vengefulness = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = paranoid
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = zealous
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = trusting
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = cynical
			}
		}
	}

	# Scope:accursed, it's all in your mind, alright?
	option = {
		name = fp1_yearly.0111.d
		trigger = {
			NOT = { has_trait = witch }
		}

		# Diplomacy challenge to convince scope:accursed that the nithing pole means nothing.
		duel = {
			skill = diplomacy
			target = scope:accursed
			# You talk them down.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0111.d.tt_success
				send_interface_toast = {
					title = fp1_yearly.0111.d.tt_success
					left_icon = scope:accursed
					# Gain a favour if possible.
					if = {
						limit = {
							can_add_hook = {
								type = favor_hook
								target = scope:accursed
							}
						}
						add_hook = {
							type = favor_hook
							target = scope:accursed
							years = 20
						}
					}
					# And always a lot of opinion.
					reverse_add_opinion = {
						target = scope:accursed
						modifier = trust_opinion
						opinion = 50
					}
					# Plus a decent chunk of prestige.
					add_prestige = medium_prestige_gain
				}
			}
			# They freak the hell out.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0111.d.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0111.d.tt_failure
					left_icon = scope:accursed
					# Scope:accursed has a melt-down.
					scope:accursed = { fp1_0111_accursed_receives_curse_effect = yes }
				}
			}
		}

		stress_impact = {
			trusting = major_stress_impact_loss
			cynical = major_stress_impact_loss
			paranoid = major_stress_impact_gain
			zealous = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = -0.25
				ai_zeal = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = trusting
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = cynical
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = paranoid
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = zealous
			}
		}
	}

	# (Witch) Worry not, I have a counter-spell.
	option = {
		name = fp1_yearly.0111.e
		trigger = { has_trait = witch }
		trait = witch

		# Gain a favour if possible.
		if = {
			limit = {
				can_add_hook = {
					type = favor_hook
					target = scope:accursed
				}
			}
			add_hook = {
				type = favor_hook
				target = scope:accursed
				years = 20
			}
		}
		# And always a lot of opinion.
		reverse_add_opinion = {
			target = scope:accursed
			modifier = trust_opinion
			opinion = 50
		}
		# Plus a decent chunk of prestige.
		add_prestige = medium_prestige_gain

		stress_impact = {
			trusting = major_stress_impact_loss
			cynical = major_stress_impact_loss
			paranoid = major_stress_impact_gain
			zealous = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = -0.25
				ai_zeal = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = trusting
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = cynical
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = paranoid
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = zealous
			}
		}
	}
}












##################################################
# FLAVOUR YEARLIES

##################################################
# FLAVOUR YEARLIES EFFECTS

scripted_effect fp1_pick_outdoorsy_child_for_winter_effect = {
	random_child = {
		# Try to pick an outdoorsy child first.
		limit = {
			child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
			OR = {
				childhood_loud_child_trigger = yes
				childhood_nice_child_trigger = yes
			}
		}
		# Otherwise, any is good.
		alternative_limit = {
			child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
		}
		save_scope_as = child
	}
}

##################################################
# Out for a Sail
# by Ewan Cowhig Croft
# 0501 - 0510
##################################################

#	You encounter a distressed raiding vessel whilst out sailing.
fp1_yearly.0501 = {
	type = character_event
	title = fp1_yearly.0501.t
	desc = fp1_yearly.0501.desc
	theme = realm
	left_portrait = {
		character = root
		animation = shock
	}
	override_background = { reference = fp1_ocean_norse }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0501 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		fp1_is_coastal_norse_tribal = yes
	}

	weight_multiplier = {
		base = 1

		# Weight up for having sea-faring traits.
		modifier = {
			add = 0.5
			has_trait = viking
		}
		modifier = {
			add = 0.5
			has_trait = adventurer
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0501
			days = 1825
		}
		# Generate a gender for the fisher people.
		random_dummy_gender_soldier_effect = { SCOPE_NAME = fisherpeople }
	}

	# Stop and try to help them!
	option = {
		name = fp1_yearly.0501.a

		# Martial duel to organise your sailors.
		duel = {
			skill = martial
			value = 10
			# You succeed in saving the crew and some of their haul!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0501.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0501.a.tt_success
					left_icon = root
					add_prestige = medium_prestige_gain
				}
			}
			# You fail, and many are lost to the storm.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0501.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0501.a.tt_failure
					left_icon = root
					add_prestige = miniscule_prestige_loss
				}
			}
		}

		stress_impact = {
			diligent = minor_stress_impact_loss
			compassionate = medium_stress_impact_loss
			lazy = minor_stress_impact_gain
			callous = medium_stress_impact_gain
			sadistic = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.75
				ai_energy = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = diligent
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = lazy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = callous
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = sadistic
			}
		}
	}

	# Salvage the cargo, kill the survivors.
	option = {
		name = fp1_yearly.0501.b

		# Prowess duel to storm the boat.
		duel = {
			skill = prowess
			value = 10
			# You storm the boat easily.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0501.b.tt_success
				send_interface_toast = {
					title = fp1_yearly.0501.b.tt_success
					left_icon = root
					add_gold = minor_gold_value
				}
			}
			# Survivors slip to shore.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0501.b.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0501.b.tt_failure
					left_icon = root
					add_gold = minor_gold_value
					add_tyranny = minor_tyranny_gain
				}
			}
		}

		stress_impact = {
			greedy = minor_stress_impact_loss
			callous = minor_stress_impact_loss
			sadistic = medium_stress_impact_loss
			compassionate = medium_stress_impact_gain
			generous = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_greed = 0.25
				ai_compassion = -0.5
				ai_honor = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = greedy
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = callous
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = sadistic
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = generous
			}
		}
	}

	# Sail on by.
	option = {
		name = fp1_yearly.0501.c

		# Minor dread gain from your crew.
		add_dread = miniscule_dread_gain

		stress_impact = {
			lazy = minor_stress_impact_loss
			callous = minor_stress_impact_loss
			arbitrary = minor_stress_impact_loss
			diligent = minor_stress_impact_gain
			compassionate = minor_stress_impact_gain
			just = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = -0.25
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = callous
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arbitrary
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = just
			}
		}
	}
}

##################################################
# The Stench of Success
# by Ewan Cowhig Croft
# 0511 - 0520
##################################################

scripted_trigger fp1_keeps_stinking_hunting_trophy = {
	# Standard checks.
	is_available_ai_adult = yes
	# Do they have the right personality?
	calc_true_if = {
		amount >= 2
		has_trait = greedy
		has_trait = lazy
		has_trait = wrathful
		has_trait = arrogant
		has_trait = brave
		has_trait = gregarious
		has_trait = ambitious
		has_trait = callous
		has_trait = sadistic
		has_trait = stubborn
		has_trait = vengeful
	}
	NOR = {
		has_trait = diligent
		has_trait = humble
		has_trait = shy
		has_trait = fickle
	}
	# Filter out anyone who'd be a better hunter than this.
	NOR = {
		has_trait = lifestyle_hunter
		has_court_position = master_of_hunt_court_position
	}
	# Finally, remove people who are currently hurt, so that berserkers can smash 'em up.
	NOT = { has_trait = wounded }
}

#	One of your courtiers is extremely proud of a hunting trophy and won't let it go.
fp1_yearly.0511 = {
	type = character_event
	title = fp1_yearly.0511.t
	desc = fp1_yearly.0511.desc
	theme = hunting
	left_portrait = {
		character = root
		animation = disgust
	}
	right_portrait = {
		character = scope:stinker
		animation = personality_honorable
	}
	override_background = { reference = study }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0511 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		fp1_is_norse_tribal = yes
		fp1_is_in_scandinavia_or_colonies = yes
		# Must have a suitable random courtier.
		any_courtier = { fp1_keeps_stinking_hunting_trophy = yes }
	}

	weight_multiplier = {
		base = 1

		# Weight up a little for special traits.
		modifier = {
			add = 0.5
			has_trait = lifestyle_hunter
		}
		modifier = {
			add = 0.5
			has_trait = berserker
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0511
			days = 1825
		}
		# Designate a suitable courtier.
		random_courtier = {
			# Try to grab someone relevant.
			limit = {
				fp1_keeps_stinking_hunting_trophy = yes
				is_of_major_or_minor_interest_trigger = { CHARACTER = root }
			}
			# Otherwise, any valid character will do.
			alternative_limit = { fp1_keeps_stinking_hunting_trophy = yes }
			save_scope_as = stinker
		}
		# Pick a local animal for the head to be from.
		select_local_animal_effect = { TYPE = any } # Save scope to limit possible animals: any/big/small/dangerous/harmless/prowling
		# Give them the trophy.
		scope:stinker = {
			add_character_modifier = {
				modifier = fp1_0511_carries_stinking_trophy_modifier
				years = 5
			}
		}
	}

	# It's very nice, scope:stinker. So very, very nice.
	option = {
		name = fp1_yearly.0511.a

		# Scope:stinker is very happy with you.
		reverse_add_opinion = {
			target = scope:stinker
			modifier = pleased_opinion
			opinion = 75
		}
		# Everyone else is not.
		every_courtier_or_guest = {
			custom = custom.every_courtier_and_guest
			limit = {
				this != scope:stinker
			}
			add_opinion = {
				target = root
				modifier = angry_opinion
				opinion = -20
			}
		}

		stress_impact = {
			deceitful = minor_stress_impact_loss
			patient = minor_stress_impact_loss
			shy = medium_stress_impact_loss
			impatient = minor_stress_impact_gain
			honest = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.25
				ai_sociability = -0.25
				ai_boldness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = deceitful
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = patient
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = shy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = impatient
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = honest
			}
		}
	}

	# [HighGod], [HealthGod], and [FortuneGod] too, get *rid* of it!
	option = {
		name = fp1_yearly.0511.b

		# Scope:stinker is incredibly upset.
		reverse_add_opinion = {
			target = scope:stinker
			modifier = cruelty_opinion
			opinion = -50
		}
		scope:stinker = { remove_character_modifier = fp1_0511_carries_stinking_trophy_modifier }
		# Everyone else is not.
		every_courtier_or_guest = {
			custom = custom.every_courtier_and_guest
			limit = {
				this != scope:stinker
			}
			add_opinion = {
				target = root
				modifier = grateful_opinion
				opinion = 20
			}
		}

		stress_impact = {
			wrathful = minor_stress_impact_loss
			impatient = medium_stress_impact_loss
			compassionate = minor_stress_impact_gain
			patient = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.25
				ai_sociability = 0.25
				ai_compassion = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = wrathful
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = impatient
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = patient
			}
		}
	}

	# (Berserker) root SMASH!
	option = {
		name = fp1_yearly.0511.c
		trigger = { has_trait = berserker }
		trait = berserker

		# Scope:stinker is incredibly upset.
		reverse_add_opinion = {
			target = scope:stinker
			modifier = cruelty_opinion
			opinion = -75
		}
		scope:stinker = { remove_character_modifier = fp1_0511_carries_stinking_trophy_modifier }
		# Scope:stinker will remember this.
		progress_towards_rival_effect = {
			REASON = rival_berserker_smash
			CHARACTER = scope:stinker
			OPINION = 0
		}
		# But man, wasn't that *therapeutic*?
		## Stress loss handled in stress_impact.

		stress_impact = {
			berserker = massive_stress_loss
			impatient = minor_stress_impact_loss
			wrathful = minor_stress_impact_loss
			patient = medium_stress_impact_gain
			calm = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.5
				ai_boldness = 0.5
				ai_compassion = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = impatient
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = wrathful
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = patient
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = calm
			}
		}
	}

	# (Hunter) How about we get you a *new* trophy this eve?
	option = {
		name = fp1_yearly.0511.d
		# Elite hunters who don't fly off the handle.
		trigger = {
			has_trait = lifestyle_hunter
			NOT = { has_trait = berserker }
		}
		trait = lifestyle_hunter

		# Scope:stinker benefits.
		scope:stinker = {
			# They're happy with you.
			add_opinion = {
				target = root
				modifier = pleased_opinion
				opinion = 50
			}
			# And won't make the same mistake.
			add_trait = lifestyle_hunter
			# Plus they ditch the old trophy.
			remove_character_modifier = fp1_0511_carries_stinking_trophy_modifier
		}
		# Best friends?
		progress_towards_friend_effect = {
			CHARACTER = scope:stinker
			OPINION = 0
			REASON = friend_fp1_stink_new_trophy
		}
		# Everyone else is just glad the stink is gone.
		every_courtier_or_guest = {
			custom = custom.every_courtier_and_guest
			limit = {
				this != scope:stinker
			}
			add_opinion = {
				target = root
				modifier = grateful_opinion
				opinion = 10
			}
		}


		stress_impact = {
			compassionate = minor_stress_impact_loss
			gregarious = minor_stress_impact_loss
			patient = medium_stress_impact_loss
			impatient = medium_stress_impact_gain
			lazy = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_energy = 0.5
				ai_honor = 0.25
				ai_sociability = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = compassionate
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = patient
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = impatient
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = lazy
			}
		}
	}

	# Yes, scope:stinker, it's rank, now please leave.
	option = {
		name = fp1_yearly.0511.e

		# Scope:stinker is quite upset.
		reverse_add_opinion = {
			target = scope:stinker
			modifier = cruelty_opinion
			opinion = -25
		}
		# But people respect you telling it like it is.
		add_prestige = minor_prestige_gain

		stress_impact = {
			honest = medium_stress_impact_loss
			deceitful = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.25
				ai_sociability = -0.25
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = honest
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = deceitful
			}
		}
	}

	after = {
		remove_variable = animal_type
	}
}

##################################################
# Blood on the Snow
# by Ewan Cowhig Croft
# 0521 - 0530
##################################################

#	Your child challenges your mastery of snowball warfare.
fp1_yearly.0521 = {
	type = character_event
	title = fp1_yearly.0521.t
	desc = fp1_yearly.0521.desc
	theme = war
	left_portrait = {
		character = root
		animation = fear
	}
	right_portrait = {
		character = scope:child
		animation = personality_bold
	}
	override_background = { reference = market }
	widget = {
		gui = "event_window_widget_vfx_snow"
		container = "foreground_shader_vfx_container"
	}

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0521 }
		is_playable_character = yes
		# Must have at least one suitable child.
		any_child = {
			child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
		}
		# Gotta have snow in the capital.
		character_capital_has_winter_trigger = yes
	}

	weight_multiplier = {
		base = 1

		# Weight up for outdoorsy kids.
		modifier = {
			add = 1
			any_child = { childhood_loud_child_trigger = yes }
		}
		modifier = {
			add = 1
			any_child = { childhood_nice_child_trigger = yes }
		}

		# Weight according to winter scale.
		character_capital_has_snow_suitable_for_activities = { CHARACTER = root }
	}

	immediate = {
		play_music_cue = "mx_cue_war_declared"
		add_character_flag = {
			flag = had_event_fp1_yearly_0521
			days = 1825
		}
		# Designate a suitable child.
		fp1_pick_outdoorsy_child_for_winter_effect = yes
	}

	# Good shot! Come here y'little rascal!
	option = {
		name = fp1_yearly.0521.a

		# You get into a friendly snowball fight.
		custom_tooltip = fp1_yearly.0521.a.tt
		# Gain some opinion with them.
		reverse_add_opinion = {
			target = scope:child
			modifier = love_opinion
			opinion = 20
		}

		stress_impact = {
			gregarious = minor_stress_impact_loss
			forgiving = minor_stress_impact_loss
			vengeful = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.5
				ai_energy = 0.25
				ai_vengefulness = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = vengeful
			}
		}
	}

	# Throw a match against them.
	option = {
		name = fp1_yearly.0521.b

		# You take a dive.
		custom_tooltip = fp1_yearly.0521.b.tt
		# Gain more opinion.
		reverse_add_opinion = {
			target = scope:child
			modifier = love_opinion
			opinion = 40
		}
		# But lose a little prestige.
		add_prestige = minor_prestige_loss

		stress_impact = {
			forgiving = minor_stress_impact_loss
			humble = minor_stress_impact_loss
			vengeful = minor_stress_impact_gain
			arrogant = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_sociability = 0.25
				ai_honor = -0.1
				ai_vengefulness = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = forgiving
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = humble
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = vengeful
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = arrogant
			}
		}
	}

	# Beat them into the ground with superior martial know-how.
	option = {
		name = fp1_yearly.0521.c
		# If you've got berserker, you flip out when taking things too seriously instead.
		trigger = {
			NOR = {
				has_trait = berserker
				has_trait = strategist
			}
		}

		# Confirm to the player.
		custom_tooltip = fp1_yearly.0521.c.tt
		# Sure would be embarrassing if you lost this snowball fight your voluntarily taking too seriously, amirite?
		duel = {
			skill = martial
			target = scope:child
			# You successfully beat the child.
			40 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0521.c.tt_success
				send_interface_toast = {
					title = fp1_yearly.0521.c.tt_success
					left_icon = scope:child
					# Minor prestige for uhh... your ruthlessness?
					add_prestige = minor_prestige_gain
					# Scope:child is a bit upset.
					reverse_add_opinion = {
						target = scope:child
						modifier = disappointed_opinion
						opinion = -30
					}
				}
			}
			# Scope:child trounces you.
			60 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0521.c.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0521.c.tt_failure
					left_icon = scope:child
					# Clearly you're taking this *way* too seriously.
					reverse_add_opinion = {
						target = scope:child
						modifier = respect_opinion
						opinion = -40
					}
				}
			}
		}

		stress_impact = {
			vengeful = medium_stress_impact_loss
			arrogant = medium_stress_impact_loss
			forgiving = medium_stress_impact_gain
			humble = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.5
				ai_sociability = 0.25
				ai_honor = 0.1
				ai_compassion = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = vengeful
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = humble
			}
		}
	}

	# (Strategist) Insta-beat 'em.
	option = {
		name = fp1_yearly.0521.d
		trigger = {
			has_trait = strategist
			NOT = { has_trait = berserker }
		}
		trait = strategist

		# Confirm to the player.
		custom_tooltip = fp1_yearly.0521.d.tt
		# Minor prestige for uhh... your ruthlessness?
		add_prestige = minor_prestige_gain
		# Scope:child is a bit awed.
		reverse_add_opinion = {
			target = scope:child
			modifier = respect_opinion
			opinion = 20
		}

		stress_impact = {
			vengeful = medium_stress_impact_loss
			arrogant = medium_stress_impact_loss
			forgiving = medium_stress_impact_gain
			humble = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.5
				ai_sociability = 0.25
				ai_honor = 0.1
				ai_compassion = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = vengeful
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = humble
			}
		}
	}

	# (Berserker) RRRAAAAARRRGGGHHH!
	option = {
		name = fp1_yearly.0521.e
		trigger = { has_trait = berserker }
		trait = berserker

		# The snowball triggers your berserk rage.
		custom_tooltip = fp1_yearly.0521.e.tt
		# Berserkergang relieves stress.
		## Stress loss handled in stress impact.
		# Scope:child is *terrified*.
		reverse_add_opinion = {
			target = scope:child
			modifier = scared_opinion
			opinion = -100
		}

		stress_impact = {
			berserker = massive_stress_loss
			impatient = minor_stress_impact_loss
			wrathful = minor_stress_impact_loss
			patient = medium_stress_impact_gain
			calm = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.75
				ai_compassion = -1
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = impatient
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = wrathful
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = patient
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = calm
			}
		}
	}

	# Don't bother parent whilst they're working. Run along.
	option = {
		name = fp1_yearly.0521.f

		# Welp, that's that dealt with.
		add_stress = minor_stress_loss
		# Scope:child is mildly hurt.
		reverse_add_opinion = {
			target = scope:child
			modifier = hurt_opinion
			opinion = -10
		}

		# Too gentle a response to give stress, to be honest.
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = -0.25
				ai_energy = -0.5
				ai_sociability = -0.75
			}
		}
	}
}

##################################################
# [Dynasty] on Ice
# by Ewan Cowhig Croft
# 0531 - 0540
##################################################

scripted_trigger fp1_child_not_had_decisive_skating_lessons_trigger = {
	NOR = {
		has_character_flag = child_had_event_fp1_yearly_0531
		has_character_modifier = fp1_avoiding_the_snow_modifier
	}
}

#	Teaching your Child to Ice Skate
fp1_yearly.0531 = {
	type = character_event
	title = fp1_yearly.0531.t
	desc = fp1_yearly.0531.desc
	theme = education
	left_portrait = {
		character = root
		animation = admiration
	}
	right_portrait = {
		character = scope:child
		animation = shame
	}
	override_background = { reference = courtyard }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0531 }
		is_playable_character = yes
		# Must be a suitable culture.
		culture_uses_frequent_winter_transportation_trigger = yes
		# Must have at least one suitable child.
		any_child = {
			child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
			# Can't have successfully learnt/been encouraged away from already.
			fp1_child_not_had_decisive_skating_lessons_trigger = yes
		}
		# Gotta have snow in the capital.
		character_capital_has_winter_trigger = yes
	}

	weight_multiplier = {
		base = 1

		# Weight up for outdoorsy kids.
		modifier = {
			add = 1
			any_child = { childhood_loud_child_trigger = yes }
		}
		modifier = {
			add = 1
			any_child = { childhood_nice_child_trigger = yes }
		}

		# Weight according to winter scale.
		character_capital_has_snow_suitable_for_activities = { CHARACTER = root }
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0531
			days = 1825
		}
		# Pick a suitable child; this is a slightly modified fp1_pick_outdoorsy_child_for_winter, as we need to filter out a few things.
		random_child = {
			# Try to pick an outdoorsy child first.
			limit = {
				child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
				OR = {
					has_trait = rowdy
					childhood_loud_child_trigger = yes
					childhood_nice_child_trigger = yes
				}
				# Can't have successfully learnt/been encouraged away from already.
				fp1_child_not_had_decisive_skating_lessons_trigger = yes
			}
			# Otherwise, any is good.
			alternative_limit = {
				child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
				# Can't have successfully learnt/been encouraged away from already.
				fp1_child_not_had_decisive_skating_lessons_trigger = yes
			}
			save_scope_as = child
		}
	}

	# It's easy! Alright, you can watch me...
	option = {
		name = fp1_yearly.0531.a

		duel = {
			skill = diplomacy
			value = 10
			# You successfully explain what's up to scope:child.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0531.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0531.a.tt_success
					left_icon = scope:child
					scope:child = {
						# Gain some opinion with them.
						add_opinion = {
							target = root
							modifier = love_opinion
							opinion = 20
						}
						# And this boosts their confidence & balance.
						add_prowess_skill = medium_skill_bonus
						add_diplomacy_skill = medium_skill_bonus
						# Flag them as having learnt and not needing to learn again.
						add_character_flag = {
							flag = child_had_event_fp1_yearly_0531
							years = 20
						}
					}
				}
			}
			# You just frustrate them further.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0531.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0531.a.tt_failure
					left_icon = scope:child
					# They grow frustrated.
					reverse_add_opinion = {
						target = scope:child
						modifier = respect_opinion
						opinion = -20
					}
					scope:child = { add_stress = major_stress_gain }
				}
			}
		}

		stress_impact = {
			diligent = minor_stress_impact_loss
			lazy = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.5
				ai_energy = 0.5
				ai_compassion = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = lazy
			}
		}
	}

	# Don't we have maids for you to pester?
	option = {
		name = fp1_yearly.0531.b

		# You focus on your work.
		add_character_modifier = {
			modifier = fp1_focusing_on_rule_modifier
			years = 10
		}
		# They grow frustrated.
		reverse_add_opinion = {
			target = scope:child
			modifier = hurt_opinion
			opinion = -40
		}
		# And will remember this in later life.
		hidden_effect = {
			if = {
				limit = {
					can_set_relation_potential_rival_trigger = { CHARACTER = scope:child }
				}
				set_relation_potential_rival = scope:child
			}
		}

		stress_impact = {
			callous = minor_stress_impact_loss
			lazy = major_stress_impact_loss
			compassionate = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = -0.25
				ai_energy = -0.5
				ai_sociability = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = callous
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = lazy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
		}
	}

	# Play indoors, you'll catch the cold.
	option = {
		name = fp1_yearly.0531.c

		# Your advice is taken.
		scope:child = {
			add_character_modifier = {
				modifier = fp1_avoiding_the_snow_modifier
				years = 10
			}
		}
		# They're a tad bummed though.
		reverse_add_opinion = {
			target = scope:child
			modifier = disappointed_opinion
			opinion = -20
		}

		stress_impact = {
			cynical = minor_stress_impact_loss
			paranoid = minor_stress_impact_loss
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.25
				ai_boldness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = cynical
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = paranoid
			}
		}
	}
}

##################################################
# The Beast of [Capital]
# by Ewan Cowhig Croft
# 0541 - 0550
##################################################

scripted_trigger fp1_0541_valid_child_prankster_trigger = {
	# Is available for events.
	is_available_ai_child = yes
	# Child is in the correct age bracket.
	child_not_infant_trigger = yes
	child_not_teen_trigger = yes
	# Must not be a quiet child.
	childhood_quiet_child_trigger = no
}

scripted_trigger fp1_0541_valid_courtier_victim_trigger = {
	# Is available for events.
	is_available_ai_adult = yes
	# Isn't especially brave or good at dealing with kids.
	NOR = {
		has_trait = calm
		has_trait = patient
		has_trait = humble
		has_trait = brave
		has_trait = shy
		has_trait = gregarious
		has_trait = trusting
		has_trait = compassionate
		has_trait = forgiving
	}
	# And, in case you act disproportionately, they aren't a good relationship.
	has_friendly_relationship_with_root_trigger = no
}

#	Young child with animal furs is pretending to be a large animal.
fp1_yearly.0541 = {
	type = character_event
	title = fp1_yearly.0541.t
	desc = fp1_yearly.0541.desc
	theme = family
	left_portrait = {
		character = scope:courtier
		animation = rage
	}
	right_portrait = {
		character = scope:child
		animation = schadenfreude
	}
	override_background = { reference = corridor_day }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0541 }
		is_landed = yes
		# Intended for Norse-ish tribals.
		fp1_is_norse_tribal = yes
		fp1_is_in_scandinavia_or_colonies = yes
		# Has a valid child.
		any_child = { fp1_0541_valid_child_prankster_trigger = yes }
		# Has a valid courtier.
		any_courtier = { fp1_0541_valid_courtier_victim_trigger = yes }
	}

	weight_multiplier = {
		base = 1

		# Weight up for active/mean kids.
		modifier = {
			add = 1
			any_child = { childhood_loud_child_trigger = yes }
		}
		modifier = {
			add = 1
			any_child = { childhood_mean_child_trigger = yes }
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0541
			days = 1825
		}
		# Pick an appropriate child.
		random_child = {
			# Prefer rowdy or mean-spirited children.
			limit = {
				fp1_0541_valid_child_prankster_trigger = yes
				OR = {
					childhood_loud_child_trigger = yes
					childhood_mean_child_trigger = yes
				}
			}
			# Though otherwise any valid child is acceptable.
			alternative_limit = { fp1_0541_valid_child_prankster_trigger = yes }
			save_scope_as = child
		}
		# And an appropriate courtier.
		random_courtier = {
			limit = {
				fp1_0541_valid_courtier_victim_trigger = yes
				is_of_major_or_minor_interest_trigger = { CHARACTER = root }
			}
			alternative_limit = { fp1_0541_valid_courtier_victim_trigger = yes }
			save_scope_as = courtier
		}
		select_local_animal_effect = { TYPE = dangerous } # Save scope to limit possible animals: any/big/small/dangerous/harmless/prowling
	}

	# This is honestly just bloody hilarious.
	option = {
		name = fp1_yearly.0541.a

		# Scope:child is pretty damned happy.
		reverse_add_opinion = {
			target = scope:child
			modifier = amused_opinion
			opinion = 40
		}
		# Scope:courtier loses opinion, though.
		reverse_add_opinion = {
			target = scope:courtier
			modifier = respect_opinion
			opinion = -50
		}
		# Other courtiers are sceptical.
		every_courtier_or_guest = {
			custom = custom.every_courtier_and_guest
			limit = {
				NOR = {
					this = scope:child
					this = scope:courtier
				}
			}
			add_opinion = {
				target = root
				modifier = amused_opinion
				opinion = -10
			}
		}

		stress_impact = {
			gregarious = minor_stress_impact_loss
			vengeful = minor_stress_impact_loss
			arbitrary = minor_stress_impact_loss
			just = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.25
				ai_vengefulness = 0.25
				ai_sociability = 0.25
				ai_compassion = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = vengeful
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arbitrary
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = just
			}
		}
	}

	# Punish scope:child.
	option = {
		name = fp1_yearly.0541.b

		# Scope:courtier is happy, and you gain a favour hook if possible.
		if = {
			limit = {
				can_add_hook = {
					type = favor_hook
					target = scope:courtier
				}
			}
			add_hook = {
				type = favor_hook
				target = scope:courtier
				years = 5
			}
		}
		reverse_add_opinion = {
			target = scope:courtier
			modifier = pleased_opinion
			opinion = 20
		}
		# Scope:child is upset.
		reverse_add_opinion = {
			target = scope:child
			modifier = hurt_opinion
			opinion = -30
		}

		stress_impact = {
			just = minor_stress_impact_loss
			forgiving = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.25
				ai_honor = 0.25
				ai_vengefulness = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = just
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = forgiving
			}
		}
	}

	# Evict scope:courtier.
	option = {
		name = fp1_yearly.0541.c

		# Scope:child is very happy.
		reverse_add_opinion = {
			target = scope:child
			modifier = amused_opinion
			opinion = 30
		}
		# Scope:courtier is gobsmacked, might become a rival, and leaves.
		reverse_add_opinion = {
			target = scope:courtier
			modifier = respect_opinion
			opinion = -30
		}
		scope:child = { save_scope_as = relationship_reason_involved_character }
		progress_towards_rival_effect = {
			REASON = rival_harassed_exiled
			CHARACTER = scope:courtier
			OPINION = 0
		}
		clear_saved_scope = relationship_reason_involved_character
		scope:courtier = { select_and_move_to_pool_effect = yes }

		stress_impact = {
			arbitrary = major_stress_impact_loss
			just = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.5
				ai_compassion = -0.5
				ai_rationality = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arbitrary
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = just
			}
		}
	}

	# I really, profoundly do not care.
	option = {
		name = fp1_yearly.0541.d

		# Gain a little prestige for telling them to sod off.
		add_prestige = minor_prestige_gain
		# Both scope:child & scope:courtier are a tad upset.
		reverse_add_opinion = {
			target = scope:courtier
			modifier = disappointed_opinion
			opinion = -10
		}
		reverse_add_opinion = {
			target = scope:child
			modifier = disappointed_opinion
			opinion = -10
		}

		stress_impact = {
			arbitrary = minor_stress_impact_loss
			lazy = medium_stress_impact_loss
			just = medium_stress_impact_gain
			diligent = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = -0.5
				ai_sociability = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arbitrary
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = lazy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = just
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = diligent
			}
		}
	}
}

##################################################
# Fishy Business
# by Ewan Cowhig Croft
# 0551 - 0560
##################################################

scripted_trigger fp1_0551_appropriately_smelly_courtier_trigger = {
	# Standard checks.
	is_available_ai_adult = yes
	# Must have some quality that's inspired this odd attitude.
	OR = {
		# Enjoys eating oddities.
		has_trait = lifestyle_hunter
		has_trait = gluttonous
		has_trait = vengeful
		# Weird health foods.
		has_trait = whole_of_body
		has_trait = lifestyle_mystic
		has_trait = lifestyle_physician
		# Refuses to admit wrong-doing.
		has_trait = arrogant
		has_trait = stubborn
		has_trait = sadistic
	}
	# And nothing that would rule it out.
	NOR = {
		has_trait = temperate
		has_trait = fickle
		has_trait = compassionate
	}
}

#	One of your courtiers has taken a liking to foul food stuffs.
fp1_yearly.0551 = {
	type = character_event
	title = fp1_yearly.0551.t
	desc = fp1_yearly.0551.desc
	theme = unfriendly
	left_portrait = {
		character = root
		animation = disapproval
	}
	right_portrait = {
		character = scope:antisocialite
		animation = personality_greedy
	}
	override_background = { reference = feast }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0551 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		fp1_is_norse_tribal = yes
		fp1_is_in_scandinavia = yes
		# Has a suitable courtier.
		any_courtier = { fp1_0551_appropriately_smelly_courtier_trigger = yes }
	}

	weight_multiplier = { base = 1 }

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0551
			days = 1825
		}
		# Grab an appropriate courtier.
		random_courtier = {
			limit = {
				fp1_0551_appropriately_smelly_courtier_trigger = yes
				is_of_major_or_minor_interest_trigger = { CHARACTER = root }
			}
			alternative_limit = { fp1_0551_appropriately_smelly_courtier_trigger = yes }
			save_scope_as = antisocialite
		}
	}

	# Let's have a chat.
	option = {
		name = fp1_yearly.0551.a

		# See if you can politely convince scope:antisocialite to be a bit more respectful.
		duel = {
			skill = diplomacy
			target = scope:antisocialite
			# You put your point across eloquently.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -45
				}
				desc = fp1_yearly.0551.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0551.a.tt_success
					left_icon = scope:antisocialite
					reverse_add_opinion = {
						target = scope:antisocialite
						modifier = respect_opinion
						opinion = 20
					}
					every_courtier_or_guest = {
						custom = custom.every_courtier_and_guest
						limit = {
							this != scope:antisocialite
						}
						add_opinion = {
							target = root
							modifier = grateful_opinion
							opinion = 20
						}
					}
					# And a bit of prestige to sweeten the pot.
					add_prestige = minor_prestige_gain
				}
			}
			# Scope:socialite is incredibly insulted.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -45
				}
				desc = fp1_yearly.0551.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0551.a.tt_failure
					left_icon = scope:antisocialite
					reverse_add_opinion = {
						target = scope:antisocialite
						modifier = insult_opinion
						opinion = -40
					}
					progress_towards_rival_effect = {
						REASON = rival_smells_of_fish
						CHARACTER = scope:antisocialite
						OPINION = 0
					}
				}
			}
		}

		stress_impact = {
			gregarious = minor_stress_impact_loss
			honest = minor_stress_impact_loss
			shy = minor_stress_impact_gain
			lazy = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.5
				ai_compassion = 0.25
				ai_rationality = 0.25
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = honest
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = shy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = lazy
			}
		}
	}

	# Perhaps I could simply move my quarters further away?
	option = {
		name = fp1_yearly.0551.b
		trigger = {
			NOT = { has_trait = gluttonous }
		}

		# Make it clear that scope:antisocialite will continue their smelly rampage.
		custom_tooltip = fp1_yearly.0551.b.tt
		# Gain a weak hook on the courtier.
		if = {
			limit = {
				can_add_hook = {
					target = scope:antisocialite
					type = favor_hook
					years = 5
				}
			}
			add_hook = {
				target = scope:antisocialite
				type = favor_hook
				years = 5
			}
		}
		# And some opinion.
		reverse_add_opinion = {
			target = scope:antisocialite
			modifier = grateful_opinion
			opinion = 30
		}
		# Lose a bit of respect with everyone else.
		every_courtier_or_guest = {
			custom = custom.every_courtier_and_guest
			# Speedily filter out the root cause.
			limit = {
				this != scope:antisocialite
			}
			add_opinion = {
				target = root
				modifier = respect_opinion
				opinion = -20
			}
		}

		stress_impact = {
			arbitrary = medium_stress_impact_loss
			shy = major_stress_impact_loss
			honest = minor_stress_impact_gain
			gregarious = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = -0.5
				ai_rationality = -0.5
				ai_sociability = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = arbitrary
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = shy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = honest
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = gregarious
			}
		}
	}

	# (Gluttonous) Do... do you have any more of that?
	option = {
		name = fp1_yearly.0551.b_alt
		trigger = { has_trait = gluttonous }
		trait = gluttonous

		# Make it clear that scope:antisocialite will continue their smelly rampage.
		custom_tooltip = fp1_yearly.0551.b_alt.tt
		# Gain a strong hook on the courtier.
		if = {
			limit = {
				can_add_hook = {
					target = scope:antisocialite
					type = loyalty_hook
				}
			}
			add_hook = {
				target = scope:antisocialite
				type = loyalty_hook
			}
		}
		# Become friends, if possible.
		if = {
			limit = {
				can_set_relation_friend_trigger = { CHARACTER = scope:antisocialite }
			}
			set_relation_friend = { reason = friend_delectable_herring target = scope:antisocialite }
		}
		# And some opinion.
		reverse_add_opinion = {
			target = scope:antisocialite
			modifier = respect_opinion
			opinion = 50
		}
		# Lose a *fair* of respect with everyone else.
		every_courtier_or_guest = {
			custom = custom.every_courtier_and_guest
			# Speedily filter out the root cause.
			limit = {
				this != scope:antisocialite
			}
			add_opinion = {
				target = root
				modifier = respect_opinion
				opinion = -40
			}
		}

		stress_impact = {
			arbitrary = medium_stress_impact_loss
			shy = major_stress_impact_loss
			honest = minor_stress_impact_gain
			gregarious = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = -0.5
				ai_rationality = -0.5
				ai_sociability = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = arbitrary
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = shy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = honest
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = gregarious
			}
		}
	}

	# You know what? Dungeon. *Now*.
	option = {
		name = fp1_yearly.0551.c

		# No one objects to the imprisonment.
		rightfully_imprison_character_effect = {
			TARGET = scope:antisocialite
			IMPRISONER = root
		}
		hidden_effect = {
			scope:antisocialite = { change_prison_type = dungeon }
		}
		# Immediate gratitude from your courtiers et al.
		every_courtier_or_guest = {
			custom = custom.every_courtier_and_guest
			# Speedily filter out the root cause.
			limit = {
				this != scope:antisocialite
			}
			add_opinion = {
				target = root
				modifier = grateful_opinion
				opinion = 20
			}
		}

		stress_impact = {
			arbitrary = minor_stress_impact_loss
			callous = minor_stress_impact_loss
			sadistic = minor_stress_impact_loss
			just = medium_stress_impact_gain
			compassionate = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.5
				ai_honor = -0.5
				ai_compassion = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arbitrary
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = callous
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = sadistic
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = just
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = compassionate
			}
		}
	}

	# What a shame, it seems my attention is required *far* away.
	option = {
		name = fp1_yearly.0551.d

		# What a relief.
		## Stress loss handled in stress_impact.
		# Lose a bit of respect with everyone else.
		every_courtier_or_guest = {
			custom = custom.every_courtier_and_guest
			# Speedily filter out the root cause.
			limit = {
				this != scope:antisocialite
			}
			add_opinion = {
				target = root
				modifier = respect_opinion
				opinion = -10
			}
		}
		# Gain a mild modifier.
		add_character_modifier = {
			modifier = fp1_yearly_0551_absent_lord_modifier
			years = 5
		}

		stress_impact = {
			base = major_stress_loss
			shy = minor_stress_impact_loss
			gregarious = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 0.5
				ai_sociability = -0.25
				ai_boldness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = shy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = gregarious
			}
		}
	}
}

##################################################
# My Arm Against Yours
# by Ewan Cowhig Croft
# 0561 - 0570
##################################################

scripted_trigger fp1_0561_is_friendly_knight_trigger = {
	# Standard checks.
	is_available_ai_adult = yes
	is_landed = no
	# Has some sociable qualities.
	OR = {
		ai_sociability >= low_positive_ai_value
		ai_boldness >= low_positive_ai_value
		ai_energy >= low_positive_ai_value
		ai_honor >= low_positive_ai_value
		has_trait = wrathful
		has_trait = arrogant
		has_trait = brave
		has_trait = gregarious
		has_trait = ambitious
		has_trait = lifestyle_reveler
	}
	# No special relationship with root.
	has_any_good_relationship_with_root_trigger = no
	has_any_bad_relationship_with_root_trigger = no
	# Doesn't absolutely hate root.
	opinion = {
		target = root
		value >= low_negative_opinion
	}
}

#	One of your knights challenges you to a friendly arm wrestle.
fp1_yearly.0561 = {
	type = character_event
	title = fp1_yearly.0561.t
	desc = fp1_yearly.0561.desc
	theme = friendly
	left_portrait = {
		character = root
		animation = personality_bold
	}
	right_portrait = {
		character = scope:knight
		animation = admiration
	}
	override_background = { reference = tavern }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_at_peace_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0561 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		fp1_is_norse_tribal = yes
		# Has an appropriate available knight.
		any_knight = { fp1_0561_is_friendly_knight_trigger = yes }
		# Must be a suitable challengee.
		prowess >= mediocre_skill_rating
		is_healthy = yes
		can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root }
	}

	weight_multiplier = {
		base = 1

		# Weight down/up a little according to prowess.
		modifier = {
			add = -0.25
			prowess <= low_skill_rating
		}
		modifier = {
			add = -0.25
			prowess <= mediocre_skill_rating
		}
		modifier = {
			add = 0.25
			prowess >= high_skill_rating
		}
		modifier = {
			add = 0.25
			prowess >= very_high_skill_rating
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0561
			days = 1825
		}
		# Grab an appropriate knight to wrassle.
		random_knight = {
			limit = {
				fp1_0561_is_friendly_knight_trigger = yes
				is_of_major_or_minor_interest_trigger = { CHARACTER = root }
			}
			alternative_limit = { fp1_0561_is_friendly_knight_trigger = yes }
			# We want to weight up higher prowess knights, but not that dramatically.
			weight = {
				base = 0
				modifier = {
					add = {
						value = prowess
						multiply = 0.5
					}
				}
			}
			save_scope_as = knight
		}
	}

	# Accept the challenge.
	option = {
		name = fp1_yearly.0561.a
		trigger = {
			NOR = {
				has_trait = strong
				has_trait = physique_good
			}
		}

		# Basic prowess challenge.
		duel = {
			skill = prowess
			target = scope:knight
			# You win: some minor prestige, more opinion.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0561.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0561.a.tt_success
					left_icon = scope:knight
					add_prestige = minor_prestige_gain
					reverse_add_opinion = {
						target = scope:knight
						modifier = impressed_opinion
						opinion = 30
					}
				}
			}
			# You lose: well, not a huge deal, and still good fun.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0561.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0561.a.tt_failure
					left_icon = scope:knight
					add_prestige = miniscule_prestige_loss
					reverse_add_opinion = {
						target = scope:knight
						modifier = amused_opinion
						opinion = 10
					}
				}
			}
		}
		# Either way you step friendship.
		progress_towards_friend_effect = {
			CHARACTER = scope:knight
			OPINION = 0
			REASON = friend_arm_wrestled
		}

		stress_impact = {
			gregarious = minor_stress_impact_loss
			arrogant = minor_stress_impact_loss
			shy = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_energy = 0.5
				ai_honor = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = shy
			}
		}
	}

	# (Strong/Physique_Good) *cracks knuckles*
	option = {
		name = fp1_yearly.0561.b
		trigger = {
			OR = {
				has_trait = strong
				has_trait = physique_good
			}
		}
		trait = strong
		trait = physique_good_1
		trait = physique_good_2
		trait = physique_good_3

		# Effortless victory grants prestige & opinion.
		custom_tooltip = fp1_yearly.0561.b.tt
		add_prestige = medium_prestige_gain
		reverse_add_opinion = {
			target = scope:knight
			modifier = impressed_opinion
			opinion = 30
		}

		stress_impact = {
			gregarious = minor_stress_impact_loss
			arrogant = minor_stress_impact_loss
			shy = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_energy = 0.5
				ai_honor = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = shy
			}
		}
	}

	# Attempt to cheat.
	option = {
		name = fp1_yearly.0561.c

		# Modest intrigue challenge.
		duel = {
			skill = intrigue
			target = scope:knight
			# You win, making it look *dramatic*!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0561.c.tt_success
				send_interface_toast = {
					title = fp1_yearly.0561.c.tt_success
					left_icon = scope:knight
					# Gain prestige for your win!
					add_prestige = medium_prestige_gain
					# But your foe might know something...
					reverse_add_opinion = {
						target = scope:knight
						modifier = suspicion_opinion
						opinion = -5
					}
				}
			}
			# Your cheating is discovered...
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0561.c.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0561.c.tt_failure
					left_icon = scope:knight
					# This is embarrassing.
					add_prestige = minor_prestige_loss
					# Welp, scope:knight is pissed.
					reverse_add_opinion = {
						target = scope:knight
						modifier = weak_opinion
						opinion = -40
					}
					progress_towards_rival_effect = {
						REASON = rival_cheated_at_armwrestle
						CHARACTER = scope:knight
						OPINION = 0
					}
				}
			}
		}

		stress_impact = {
			deceitful = medium_stress_impact_loss
			honest = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_energy = 0.5
				ai_honor = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = deceitful
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = honest
			}
		}
	}

	# Ignore scope:knight and continue eating.
	option = {
		name = fp1_yearly.0561.d

		# Gain minor prestige for just not bothering.
		add_prestige = miniscule_prestige_gain
		# Hurt the knight's feelings a little.
		reverse_add_opinion = {
			target = scope:knight
			modifier = hurt_opinion
			opinion = -10
		}

		stress_impact = {
			arrogant = minor_stress_impact_loss
			gluttonous = minor_stress_impact_loss
			shy = medium_stress_impact_loss
			lazy = medium_stress_impact_loss
			humble = minor_stress_impact_gain
			gregarious = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = -0.5
				ai_sociability = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = gluttonous
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = shy
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = lazy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = humble
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = gregarious
			}
		}
	}
}

##################################################
# Petty Vandalism
# by Ewan Cowhig Croft
# 0571 - 0580
##################################################

scripted_trigger fp1_0571_suitable_vandal_child_available_trigger = {
	# Is available for events.
	is_available_ai_child = yes
	# Child is old enough to have travelled that far.
	age >= 10
	# Must not be a quiet child.
	childhood_quiet_child_trigger = no
}

scripted_trigger fp1_0571_suitable_annoyed_courtier_trigger = {
	# Is available for events.
	is_available_ai_adult = yes
	# Likely to be annoyed at the vandalism.
	NOR = {
		has_trait = calm
		has_trait = patient
		has_trait = shy
		has_trait = craven
		has_trait = arbitrary
		has_trait = fickle
		has_trait = lazy
		has_trait = trusting
	}
}

scripted_trigger fp1_0571_suitable_vandal_site_trigger = {
	tier = tier_county
	fp1_county_has_stele_trigger = yes
	squared_distance = {
		target = root.capital_county
		value <= squared_distance_small
	}
}

#	A runestone in your lands has been damaged by one of your children.
fp1_yearly.0571 = {
	type = character_event
	title = fp1_yearly.0571.t
	desc = fp1_yearly.0571.desc
	theme = family
	left_portrait = {
		character = scope:courtier
		animation = disapproval
	}
	right_portrait = {
		character = scope:child
		animation = shame
	}
	override_background = { reference = fp1_runestone }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0571 }
		is_landed_or_landless_administrative = yes
		# Filter to flavour-appropriate characters.
		fp1_is_norse = yes
		# Must have an appropriate runestone in your territory.
		any_held_title = { fp1_0571_suitable_vandal_site_trigger = yes }
		# A valid child.
		any_child = { fp1_0571_suitable_vandal_child_available_trigger = yes }
		# And a courtier who might not appreciate things.
		any_courtier = { fp1_0571_suitable_annoyed_courtier_trigger = yes }

	}

	weight_multiplier = {
		base = 1

		# If you're setting a good example, kids are less likely to imitate.
		modifier = {
			add = 0.5
			has_trait = just
		}
		# And the reverse.
		modifier = {
			add = -0.5
			has_trait = arbitrary
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0571
			days = 1825
		}
		# Select a runestone location.
		random_held_title = {
			limit = { fp1_0571_suitable_vandal_site_trigger = yes }
			save_scope_as = vandal_site
		}
		# Grab a suitable child.
		random_child = {
			# Prefer rowdy or mean-spirited children.
			limit = {
				fp1_0541_valid_child_prankster_trigger = yes
				OR = {
					childhood_loud_child_trigger = yes
					childhood_mean_child_trigger = yes
				}
			}
			# Though otherwise any valid child is acceptable.
			alternative_limit = { fp1_0571_suitable_vandal_child_available_trigger = yes }
			save_scope_as = child
		}
		# And the courtier.
		random_courtier = {
			# Try to get someone who dislikes the child first.
			limit = {
				fp1_0571_suitable_annoyed_courtier_trigger = yes
				opinion = {
					target = scope:child
					value <= neutral_opinion
				}
			}
			# Otherwise, whoever is fine.
			alternative_limit = { fp1_0571_suitable_annoyed_courtier_trigger = yes }
			save_scope_as = courtier
		}
		# Quietly make the two potential rivals for later.
		hidden_effect = {
			if = {
				limit = {
					scope:child = {
						can_set_relation_potential_rival_trigger = { CHARACTER = scope:courtier }
					}
				}
				scope:child = { set_relation_potential_rival = scope:courtier }
			}
		}
	}

	# Look, you can't be defacing expensive monuments, 'kay?
	option = {
		name = fp1_yearly.0571.a

		# Diplomacy challenge to persuade the child.
		duel = {
			skill = diplomacy
			target = scope:child
			# Child sees how they've gone wrong.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0571.tt_success
				send_interface_toast = {
					title = fp1_yearly.0571.tt_success
					left_icon = scope:child
					# If the child's personality can accept it, make them honourable.
					scope:child = {
						if = {
							limit = {
								number_of_personality_traits < personality_trait_standard
								NOR = {
									has_trait = arbitrary
									has_trait = just
								}
							}
							add_trait = just
						}
					}
					# Otherwise, just give opinion.
					reverse_add_opinion = {
						target = scope:child
						modifier = respect_opinion
						opinion = 30
					}
				}
			}
			# Child doesn't understand what the issue even is.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0571.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0571.tt_failure
					left_icon = scope:child
					# If the child's personality can accept it, make them arbitrary.
					scope:child = {
						if = {
							limit = {
								number_of_personality_traits < personality_trait_standard
								NOT = { has_trait = just }
							}
							add_trait = arbitrary
						}
					}
					# Otherwise, just give opinion.
					reverse_add_opinion = {
						target = scope:child
						modifier = respect_opinion
						opinion = -20
					}
				}
			}
		}
		# Courtier is satisfied that something has been done.
		reverse_add_opinion = {
			target = scope:courtier
			modifier = impressed_opinion
			opinion = 30
		}
		# The runestone is destroyed.
		scope:vandal_site = { fp1_remove_stele_effect = yes }

		stress_impact = {
			trusting = medium_stress_impact_loss
			vengeful = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.25
				ai_greed = -0.5
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = trusting
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = vengeful
			}
		}
	}

	# I'll be fining the cost of the runestone from your things.
	option = {
		name = fp1_yearly.0571.b

		# Gain opinion with the courtier.
		reverse_add_opinion = {
			target = scope:courtier
			modifier = pleased_opinion
			opinion = 30
		}
		# The runestone is repaired.
		custom_tooltip = fp1_yearly.0571.b.tt
		# Lose opinion with the child, and fine them gold.
		scope:child = {
			add_opinion = {
				target = root
				modifier = respect_opinion
				opinion = -40
			}
			remove_short_term_gold = root.raise_stele_gold_cost
		}

		stress_impact = {
			vengeful = minor_stress_impact_loss
			greedy = medium_stress_impact_loss
			forgiving = minor_stress_impact_gain
			generous = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 0.5
				ai_vengefulness = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = vengeful
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = generous
			}
		}
	}

	# Look, you can't be defacing expensive monuments, 'kay?
	option = {
		name = fp1_yearly.0571.b.2

		# Gain lots of opinion with your child.
		reverse_add_opinion = {
			target = scope:child
			modifier = pleased_opinion
			opinion = 70
		}
		# Lose some with your courtier.
		reverse_add_opinion = {
			target = scope:courtier
			modifier = respect_opinion
			opinion = -40
		}
		# The runestone is repaired.
		custom_tooltip = fp1_yearly.0571.b.tt
		remove_short_term_gold = root.raise_stele_gold_cost
		# If your child is still growing, this may leave a mark.
		scope:child = {
			## Making them more arbitrary.
			if = {
				limit = {
					# If they have room.
					number_of_personality_traits < personality_trait_standard
					# And don't already feel strongly either way.
					NOR = {
						has_trait = just
						has_trait = arbitrary
					}
				}
				add_trait = arbitrary
			}
			## And less attached to money.
			if = {
				limit = {
					NOR = {
						has_trait = profligate
						has_trait = greedy
					}
				}
				add_trait = profligate
			}
		}

		stress_impact = {
			forgiving = minor_stress_impact_loss
			generous = minor_stress_impact_loss
			lazy = medium_stress_impact_loss
			arbitrary = medium_stress_impact_loss
			vengeful = minor_stress_impact_gain
			greedy = medium_stress_impact_gain
			diligent = medium_stress_impact_gain
			just = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = -0.5
				ai_honor = -0.5
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = forgiving
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = generous
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = arbitrary
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = vengeful
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = just
			}
		}
	}

	# *Sigh* This isn't worth the bother.
	option = {
		name = fp1_yearly.0571.c

		# Gain lots of opinion with your child.
		reverse_add_opinion = {
			target = scope:child
			modifier = pleased_opinion
			opinion = 50
		}
		# Lose some with your courtier.
		reverse_add_opinion = {
			target = scope:courtier
			modifier = respect_opinion
			opinion = -30
		}
		# Lose the runestone.
		scope:vandal_site = { fp1_remove_stele_effect = yes }

		stress_impact = {
			forgiving = minor_stress_impact_loss
			lazy = medium_stress_impact_loss
			arbitrary = medium_stress_impact_loss
			vengeful = minor_stress_impact_gain
			diligent = medium_stress_impact_gain
			just = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = -0.5
				ai_honor = -0.5
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = forgiving
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = arbitrary
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = vengeful
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = just
			}
		}
	}
}

##################################################
# When I Grow Up
# by Ewan Cowhig Croft
# 0581 - 0590
##################################################

scripted_trigger fp1_0581_wrong_gender_child_wishes_to_fight_trigger = {
	NOT = { has_character_flag = fp1_dreams_of_shieldpersondom }
	trigger_if = { # Has the Royal Court and thus can modify pillars
		limit = { has_dlc_feature = diverge_culture }
		# For ease, they must share your faith or your culture.
		OR = {
			culture = root.culture
			faith = root.faith
		}
	}
	trigger_else = {
		# For ease, they must share your faith.
		faith = root.faith
	}
	# Have an appropriate matching personality.
	OR = {
		childhood_loud_child_trigger = yes
		childhood_mean_child_trigger = yes
	}
	# Be the wrong gender to fight.
	NOT = { can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root } }
	# Aaaand be available to play.
	child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
}

scripted_trigger fp1_0581_valid_courtier_to_bully_trigger = {
	# No positive relationship with root.
	has_any_good_relationship_with_root_trigger = no
	# And they have a negative opinion of you; player only action, so we only care about making sure the player might dislike this character.
	opinion = {
		target = root
		value <= medium_negative_opinion
	}
}

#	Your wrong-gender child wants to fight and raid in a few years.
fp1_yearly.0581 = {
	type = character_event
	title = fp1_yearly.0581.t
	desc = {
		desc = fp1_yearly.0581.desc.intro
		# Currently causes too much risk of scrolling copy.
		triggered_desc = {
			trigger = { always = no }
			desc = fp1_yearly.0581.desc.victim
		}
		desc = fp1_yearly.0581.desc.outro
	}
	theme = martial
	left_portrait = {
		character = root
		animation = personality_rational
	}
	right_portrait = {
		character = scope:child
		animation = admiration
	}
	lower_right_portrait = scope:victim
	override_background = { reference = corridor_day }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0581 }
		# Filter to shieldmaiden-having culture.
		culture = { has_cultural_parameter = has_access_to_shieldmaidens }
		trigger_if = { # Has the Royal Court and thus can modify pillars
			limit = { has_dlc_feature = diverge_culture }
			culture = { NOT = { has_cultural_parameter = martial_custom_equal_combatant } }
		}
		trigger_else = {
			# Can't be following an equal faith.
			faith = { NOT = { has_doctrine_parameter = combatant_can_be_either_gender_if_no_roco } }
		}
		# Any child of yours might want to be a shieldperson when they grow up.
		any_child = { fp1_0581_wrong_gender_child_wishes_to_fight_trigger = yes }
	}

	weight_multiplier = {
		base = 1

		# Shieldmaidens are something of an inspiration, and thus
		modifier = {
			add = 1
			has_trait = shieldmaiden
		}

		# If you're of low prowess, then there's less to aspire to.
		modifier = {
			add = -0.5
			prowess <= medium_skill_rating
		}
		# But if you're of high prowess, then there's plenty.
		modifier = {
			add = 0.5
			prowess >= very_high_skill_rating
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0581
			days = 1825
		}
		# Nab an appropriate child.
		random_child = {
			limit = { fp1_0581_wrong_gender_child_wishes_to_fight_trigger = yes }
			# Weight up the most promising fighter amongst your valid children.
			weight = {
				base = 0
				modifier = {
					add = {
						value = prowess
						multiply = 100
					}
				}
			}
			save_scope_as = child
		}
		# See if there's someone at court you can set the child to bully.
		if = {
			limit = {
				# Keep this player-specific for ease of presentation.
				is_ai = no
				any_courtier_or_guest = { fp1_0581_valid_courtier_to_bully_trigger = yes }
			}
			random_courtier_or_guest = {
				# Try to pick rivals et al first.
				limit = {
					has_any_bad_relationship_with_root_trigger = yes
					fp1_0581_valid_courtier_to_bully_trigger = yes
				}
				# Otherwise just any random dick will do.
				alternative_limit = { fp1_0581_valid_courtier_to_bully_trigger = yes }
				save_scope_as = victim
			}
		}
	}

	# My child, you shall make the world itself *tremble*.
	option = {
		name = fp1_yearly.0581.a
		trigger = { has_trait = shieldmaiden }
		trait = shieldmaiden

		# Scope:child is significantly more likely to try to become a shieldmaiden.
		custom_tooltip = fp1_yearly.0581.a.tt
		scope:child = { add_character_flag = fp1_dreams_of_shieldpersondom }
		# Scope:child gains prowess.
		scope:child = { add_prowess_skill = massive_skill_bonus }
		# Scope:child gains opinion.
		reverse_add_opinion = {
			target = scope:child
			modifier = love_opinion
			opinion = 60
		}

		stress_impact = {
			shieldmaiden = major_stress_impact_loss
			brave = major_stress_impact_loss
			ambitious = major_stress_impact_loss
			compassionate = major_stress_impact_gain
			humble = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = 0.75
				ai_zeal = 0.5
				ai_energy = 0.25
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = humble
			}
			# Raiders & adventurers want their prodigy to follow in their footsteps.
			modifier = {
				add = 20
				has_trait = viking
			}
			modifier = {
				add = 20
				has_trait = adventurer
			}
			modifier = {
				add = 20
				has_trait = brave
			}
			modifier = {
				add = 20
				has_trait = shieldmaiden
			}
			modifier = {
				add = 20
				has_trait = ambitious
			}
		}
	}

	# A noble goal! Have at thee, rogue!
	option = {
		name = fp1_yearly.0581.b
		trigger = {
			NOT = { has_trait = shieldmaiden }
		}

		# Scope:child is significantly more likely to try to become a shieldmaiden.
		custom_tooltip = fp1_yearly.0581.b.tt
		scope:child = { add_character_flag = fp1_dreams_of_shieldpersondom }
		# Scope:child gains prowess.
		scope:child = { add_prowess_skill = medium_skill_bonus }
		# Scope:child gains opinion.
		reverse_add_opinion = {
			target = scope:child
			modifier = love_opinion
			opinion = 30
		}

		stress_impact = {
			compassionate = minor_stress_impact_loss
			gregarious = minor_stress_impact_loss
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_honor = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = compassionate
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			# Raiders & adventurers want their prodigy to follow in their footsteps.
			modifier = {
				add = 20
				has_trait = viking
			}
			modifier = {
				add = 20
				has_trait = adventurer
			}
			modifier = {
				add = 20
				has_trait = brave
			}
			modifier = {
				add = 20
				has_trait = shieldmaiden
			}
			modifier = {
				add = 20
				has_trait = ambitious
			}
		}
	}

	# Perhaps. You should practice by ambushing scope:victim.
	option = {
		name = fp1_yearly.0581.c
		trigger = { exists = scope:victim }

		# Scope:child gains prowess.
		scope:child = { add_prowess_skill = medium_skill_bonus }
		# Scope:victim gains wounded.
		scope:victim = {
			increase_wounds_no_death_effect = { REASON = duel }
		}
		# Scope:victim loses opinion of you.
		reverse_add_opinion = {
			target = scope:victim
			modifier = angry_opinion
			opinion = -20
		}
		# Scope:child adds scope:victim as a potential rival.
		hidden_effect = {
			scope:child = {
				progress_towards_rival_effect = {
					REASON = rival_hit_with_stick
					CHARACTER = scope:victim
					OPINION = -30
				}
			}
		}

		stress_impact = {
			vengeful = minor_stress_impact_loss
			sadistic = minor_stress_impact_loss
			forgiving = minor_stress_impact_gain
			compassionate = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.5
				ai_boldness = 0.25
				ai_compassion = -0.25
				ai_honor = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = vengeful
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = sadistic
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
		}
	}

	# Stop troubling me with foolish dreams.
	option = {
		name = fp1_yearly.0581.d

		# Gain a minor beneficial modifier for having your child avoid you.
		add_character_modifier = {
			modifier = fp1_ignoring_annoyances_modifier
			years = 10
		}
		# Scope:child loses opinion of you.
		reverse_add_opinion = {
			target = scope:child
			modifier = disappointed_opinion
			opinion = -30
		}

		stress_impact = {
			callous = minor_stress_impact_loss
			sadistic = minor_stress_impact_loss
			impatient = minor_stress_impact_loss
			compassionate = minor_stress_impact_gain
			patient = minor_stress_impact_gain
			shieldmaiden = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = -0.25
				ai_compassion = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = callous
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = sadistic
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = impatient
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = patient
			}
			modifier = {	# Weight down for stress.
				add = -50
				has_trait = shieldmaiden
			}
		}
	}

	# Hah! We shall see, little one.
	option = {
		name = fp1_yearly.0581.e

		reverse_add_opinion = {
			target = scope:child
			modifier = pleased_opinion
			opinion = 15
		}

		# Fairly mild option, so doesn't incur stress.
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = -0.25
				ai_boldness = -0.5
			}
		}
	}
}

##################################################
# Raised Voices at the Thing
# by Ewan Cowhig Croft
# 0591 - 0600
##################################################

scripted_trigger fp1_0591_secondary_county_trigger = {
	holder = root
	culture = { has_innovation = innovation_all_things }
}

scripted_trigger fp1_0591_fighting_counties_at_thing_trigger = {
	tier = tier_county
	culture = { has_innovation = innovation_all_things }
	any_neighboring_county = { fp1_0591_secondary_county_trigger = yes }
}

#	One of your counties is engaged in an argument with another.
fp1_yearly.0591 = {
	type = character_event
	title = fp1_yearly.0591.t
	desc = {
		desc = fp1_yearly.0591.desc
		random_valid = {
			desc = fp1_yearly.0591.desc.border_dispute		#
			desc = fp1_yearly.0591.desc.stolen_flocks		#
			desc = fp1_yearly.0591.desc.kidnapped_child		#
			desc = fp1_yearly.0591.desc.drunken_arson		#
			desc = fp1_yearly.0591.desc.lost_dog			#
			desc = fp1_yearly.0591.desc.disrupted_wedding
			desc = fp1_yearly.0591.desc.suspicious_will		#
			desc = fp1_yearly.0591.desc.sheltered_criminal	#
			desc = fp1_yearly.0591.desc.bad_luck			#
			desc = fp1_yearly.0591.desc.fly_tipping			#
		}
	}
	theme = realm
	left_portrait = {
		character = root
		animation = disgust
	}
	override_background = { reference = fp1_runestone_circle }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0591 }
		is_landed_or_landless_administrative = yes
		# Filter to flavour-appropriate characters.
		culture = { has_innovation = innovation_all_things }
		# Ensure you have at least two counties that can fight with each other.
		any_held_title = { fp1_0591_fighting_counties_at_thing_trigger = yes }
	}

	weight_multiplier = {
		base = 1

		# Weight up a little for mainland Scandinavia.
		modifier = {
			add = 0.5
			fp1_is_in_scandinavia = yes
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0591
			days = 1825
		}
		# Grab the counties.
		random_held_title = {
			limit = { fp1_0591_fighting_counties_at_thing_trigger = yes }
			save_scope_as = county_a
			random_neighboring_county = {
				limit = { fp1_0591_secondary_county_trigger = yes }
				save_scope_as = county_b
			}
		}
		# Set a dummy gender for loc.
		random_dummy_gender_soldier_effect = { SCOPE_NAME = dummy_gender }
	}

	# Side with scope:county_a.
	option = {
		name = fp1_yearly.0591.a

		# Levy bonus county modifier.
		scope:county_a = {
			add_county_modifier = {
				modifier = fp1_yearly_0591_levy_modifier
				years = 10
			}
		}
		# And spurn the other county.
		scope:county_b = {
			add_county_modifier = {
				modifier = fp1_yearly_0591_spurned_modifier
				years = 10
			}
		}

		stress_impact = {
			lazy = minor_stress_impact_loss
			diligent = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 0.5
				ai_honor = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = diligent
			}
		}
	}

	# Side with scope:county_b.
	option = {
		name = fp1_yearly.0591.b

		# Building cost county modifier.
		scope:county_b = {
			add_county_modifier = {
				modifier = fp1_yearly_0591_building_modifier
				years = 10
			}
		}
		# And spurn the other county.
		scope:county_a = {
			add_county_modifier = {
				modifier = fp1_yearly_0591_spurned_modifier
				years = 10
			}
		}

		stress_impact = {
			lazy = minor_stress_impact_loss
			diligent = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 0.5
				ai_honor = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = diligent
			}
		}
	}

	# Deliberately wind them both up.
	option = {
		name = fp1_yearly.0591.c

		# Popular opinion bonus modifiers in both (as they're too busy fighting each other).
		scope:county_a = {
			add_county_modifier = {
				modifier = fp1_yearly_0591_otherwise_occupied_modifier
				years = 10
			}
		}
		scope:county_b = {
			add_county_modifier = {
				modifier = fp1_yearly_0591_otherwise_occupied_modifier
				years = 10
			}
		}

		stress_impact = {
			deceitful = minor_stress_impact_loss
			arbitrary = medium_stress_impact_loss
			honest = minor_stress_impact_gain
			just = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 0.5
				ai_vengefulness = 0.25
				ai_honor = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = deceitful
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = arbitrary
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = honest
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = just
			}
		}
	}

	# Let them fight it out.
	option = {
		name = fp1_yearly.0591.d

		# Stress loss: not your problem, honestly.
		## Covered in stress impact.

		stress_impact = {
			base = major_stress_loss
			lazy = medium_stress_impact_loss
			diligent = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = -0.25
				ai_energy = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = lazy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = diligent
			}
		}
	}
}

##################################################
# The Hardest Part of Ruling
# by Ewan Cowhig Croft
# 0601 - 0610
##################################################

scripted_trigger fp1_0601_valid_county_for_things_trigger = {
	tier = tier_county
	culture = { has_innovation = innovation_all_things }
}

#	An incredibly boring local assembly tries your patience.
fp1_yearly.0601 = {
	type = character_event
	title = fp1_yearly.0601.t
	desc = fp1_yearly.0601.desc
	theme = realm
	left_portrait = {
		character = root
		animation = boredom
	}
	override_background = { reference = fp1_runestone_circle }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0601 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		culture = { has_innovation = innovation_all_things }
		any_held_title = { fp1_0601_valid_county_for_things_trigger = yes }
	}

	weight_multiplier = {
		base = 1

		# Weight up a little for mainland Scandinavia.
		modifier = {
			add = 0.5
			fp1_is_in_scandinavia = yes
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0601
			days = 1825
		}
		# Designate a suitable random county.
		random_held_title = {
			limit = { fp1_0601_valid_county_for_things_trigger = yes }
			save_scope_as = county
		}
		# Set a dummy gender for loc.
		random_dummy_gender_soldier_effect = { SCOPE_NAME = dummy_gender }
	}

	# Fight to stay awake.
	option = {
		name = fp1_yearly.0601.a

		# Diplomacy duel to see how well you disguise it.
		duel = {
			skill = diplomacy
			value = decent_skill_rating
			# You power through and remain composed.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0601.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0601.a.tt_success
					left_icon = root
					add_prestige = medium_prestige_gain
				}
			}
			# You slump right out of your seat.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0601.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0601.a.tt_failure
					left_icon = root
					add_prestige = medium_prestige_loss
				}
			}
		}

		stress_impact = {
			just = minor_stress_impact_loss
			diligent = medium_stress_impact_loss
			arbitrary = minor_stress_impact_gain
			lazy = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 1
				ai_sociability = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = just
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = arbitrary
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = lazy
			}
		}
	}

	# (Diplomacy) Daydream of more interesting diplomatic problems.
	option = {
		name = fp1_yearly.0601.b
		trigger = { has_trait = education_diplomacy }
		trait = education_diplomacy_1
		trait = education_diplomacy_2
		trait = education_diplomacy_3
		trait = education_diplomacy_4
		trait = education_diplomacy_5

		# Gain a minor modifier boosting diplomacy.
		add_character_modifier = {
			modifier = fp1_daydreaming_about_diplomacy_modifier
			years = 5
		}

		stress_impact = {
			lazy = minor_stress_impact_loss
			arrogant = minor_stress_impact_loss
			diligent = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_sociability = -0.25
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = diligent
			}
		}
	}

	# (Martial) Daydream up new strategies.
	option = {
		name = fp1_yearly.0601.c
		trigger = { has_trait = education_martial }
		trait = education_martial_1
		trait = education_martial_2
		trait = education_martial_3
		trait = education_martial_4
		trait = education_martial_5

		# Gain a minor modifier boosting martial.
		add_character_modifier = {
			modifier = fp1_daydreaming_about_martial_modifier
			years = 5
		}

		stress_impact = {
			lazy = minor_stress_impact_loss
			arrogant = minor_stress_impact_loss
			diligent = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_sociability = -0.25
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = diligent
			}
		}
	}

	# (Stewardship) Daydream up new taxes to charge them.
	option = {
		name = fp1_yearly.0601.d
		trigger = { has_trait = education_stewardship }
		trait = education_stewardship_1
		trait = education_stewardship_2
		trait = education_stewardship_3
		trait = education_stewardship_4
		trait = education_stewardship_5

		# Gain a minor modifier boosting stewardship.
		add_character_modifier = {
			modifier = fp1_daydreaming_about_stewardship_modifier
			years = 5
		}

		stress_impact = {
			lazy = minor_stress_impact_loss
			arrogant = minor_stress_impact_loss
			diligent = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_sociability = -0.25
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = diligent
			}
		}
	}

	# (Intrigue) Daydream up new ways to keep them under control.
	option = {
		name = fp1_yearly.0601.e
		trigger = { has_trait = education_intrigue }
		trait = education_intrigue_1
		trait = education_intrigue_2
		trait = education_intrigue_3
		trait = education_intrigue_4
		trait = education_intrigue_5

		# Gain a minor modifier boosting intrigue.
		add_character_modifier = {
			modifier = fp1_daydreaming_about_intrigue_modifier
			years = 5
		}

		stress_impact = {
			lazy = minor_stress_impact_loss
			arrogant = minor_stress_impact_loss
			diligent = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_sociability = -0.25
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = diligent
			}
		}
	}

	# (Learning) Daydream of your favourite book.
	option = {
		name = fp1_yearly.0601.f
		trigger = { has_trait = education_learning }
		trait = education_learning_1
		trait = education_learning_2
		trait = education_learning_3
		trait = education_learning_4
		trait = education_learning_5

		# Gain a minor modifier boosting learning.
		add_character_modifier = {
			modifier = fp1_daydreaming_about_learning_modifier
			years = 5
		}

		stress_impact = {
			lazy = minor_stress_impact_loss
			arrogant = minor_stress_impact_loss
			diligent = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_sociability = -0.25
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = diligent
			}
		}
	}

	# Give in and doze off.
	option = {
		name = fp1_yearly.0601.g

		# Lose stress since... I mean, who cares?
		## Stress loss handled in stress_impact.
		# Buuuuut also lose prestige.
		add_prestige = minor_prestige_loss
		# Low-random chance for players to occasionally become known as "the Snorer" here.
		hidden_effect = {
			if = {
				limit = {
					is_ai = no
					has_any_nickname = no
				}
				random = {
					chance = 1
					send_interface_toast = {
						title = fp1_yearly.0601.g.nickname
						left_icon = root
						give_nickname = nick_the_snorer
					}
				}
			}
		}

		stress_impact = {
			base = major_stress_loss
			lazy = medium_stress_impact_loss
			diligent = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = -0.25
				ai_sociability = -0.5
				ai_energy = -1
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = lazy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = diligent
			}
		}
	}
}

##################################################
# Leading by Example
# by Ewan Cowhig Croft
# 0611 - 0620
##################################################

scripted_trigger fp1_0611_aggressive_child_candidate_trigger = {
	# Age gate so that they're never the same as scope:child_b.
	age >= 10
	# Must be around.
	child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
	# And have the right personality for this.
	OR = {
		childhood_mean_child_trigger = yes
		childhood_loud_child_trigger = yes
	}
}

scripted_trigger fp1_0611_victim_child_candidate_trigger = {
	# Age gate so that they're never the same as scope:child_a.
	age < 10
	# Must be around.
	child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
	# We're not fussed about personality here, anything is good.
}

#	One of your children wounds another whilst imitating you.
fp1_yearly.0611 = {
	type = character_event
	title = fp1_yearly.0611.t
	desc = fp1_yearly.0611.desc
	theme = education
	left_portrait = {
		character = scope:child_a
		animation = shame
	}
	right_portrait = {
		character = scope:child_b
		animation = anger
	}
	override_background = { reference = bedchamber }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0611 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		fp1_is_norse_tribal = yes
		# You must qualify for imitation in some way.
		OR = {
			has_trait = viking
			has_trait = berserker
			has_trait = adventurer
			has_character_flag = has_recently_performed_raid
		}
		# Gotta have one child who qualifies as the aggressor.
		any_child = { fp1_0611_aggressive_child_candidate_trigger = yes }
		# And one child who qualifies as the bully.
		any_child = { fp1_0611_victim_child_candidate_trigger = yes }
	}

	weight_multiplier = {
		base = 1

		# Weight up a little for each qualifying trait.
		modifier = {
			add = 0.25
			has_trait = viking
		}
		modifier = {
			add = 0.25
			has_trait = berserker
		}
		modifier = {
			add = 0.25
			has_trait = adventurer
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0611
			days = 1825
		}
		# Grab the first child.
		random_child = {
			limit = { fp1_0611_aggressive_child_candidate_trigger = yes }
			save_scope_as = child_a
		}
		# And the second.
		random_child = {
			limit = { fp1_0611_victim_child_candidate_trigger = yes }
			save_scope_as = child_b
		}
		# Wound scope:child_b.
		scope:child_b = {
			increase_wounds_no_death_effect = { REASON = duel }
		}
	}

	# Explain to scope:child_a that they need to wait till they're older.
	option = {
		name = fp1_yearly.0611.a

		# Diplomacy duel to see if you manage the feelings involved.
		duel = {
			skill = diplomacy
			value = high_skill_rating
			# You successfully explain that fighting is not playing.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0611.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0611.a.tt_success
					left_icon = scope:child_a
					right_icon = scope:child_b
					scope:child_b = {
						progress_towards_friend_effect = {
							CHARACTER = scope:child_a
							OPINION = 50
							REASON = friend_child_apologize
						}
					}
				}
			}
			# You only engender feelings of bitterness between the two.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0611.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0611.a.tt_failure
					left_icon = scope:child_a
					right_icon = scope:child_b
					scope:child_b = {
						progress_towards_rival_effect = {
							REASON = rival_hit_with_sharp_stick
							CHARACTER = scope:child_a
							OPINION = -50
						}
					}
				}
			}
		}

		stress_impact = {
			honest = minor_stress_impact_loss
			forgiving = minor_stress_impact_loss
			vengeful = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_honor = 0.25
				ai_vengefulness = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = honest
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = vengeful
			}
		}
	}

	# Laud scope:child_a for their goals.
	option = {
		name = fp1_yearly.0611.b

		# Scope:child_a is very happy & gains some prowess.
		scope:child_a = { add_prowess_skill = medium_skill_bonus }
		reverse_add_opinion = {
			target = scope:child_a
			modifier = love_opinion
			opinion = 40
		}
		# Scope:child_b is very unhappy and grows close to a rivalry with scope:child_a.
		scope:child_b = {
			progress_towards_rival_effect = {
				REASON = rival_hit_with_sharp_stick
				CHARACTER = scope:child_a
				OPINION = -20
			}
		}
		reverse_add_opinion = {
			target = scope:child_b
			modifier = trust_opinion
			opinion = -20
		}

		stress_impact = {
			callous = minor_stress_impact_loss
			sadistic = minor_stress_impact_loss
			compassionate = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = -0.5
				ai_honor = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = callous
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = sadistic
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
		}
	}

	# Teach scope:child_b how to deal with bullies.
	option = {
		name = fp1_yearly.0611.c

		# Scope:child_b is very happy & gains some prowess.
		scope:child_b = { add_prowess_skill = medium_skill_bonus }
		reverse_add_opinion = {
			target = scope:child_b
			modifier = love_opinion
			opinion = 40
		}
		# Scope:child_a is unhappy.
		reverse_add_opinion = {
			target = scope:child_a
			modifier = trust_opinion
			opinion = -20
		}

		stress_impact = {
			fickle = minor_stress_impact_loss
			compassionate = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_honor = 0.5
				ai_vengefulness = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = fickle
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
		}
	}

	# Tell them to take it to their nurse.
	option = {
		name = fp1_yearly.0611.d

		# Lose stress.
		## Stress loss handled in stress_impact.
		# But also opinion with both children.
		reverse_add_opinion = {
			target = scope:child_a
			modifier = trust_opinion
			opinion = -20
		}
		reverse_add_opinion = {
			target = scope:child_b
			modifier = hurt_opinion
			opinion = -20
		}
		# And we set up a hidden rivalry anyway.
		hidden_effect = {
			scope:child_b = {
				if = {
					limit = {
						can_set_relation_potential_rival_trigger = { CHARACTER = scope:child_a }
					}
					set_relation_potential_rival = scope:child_a
				}
			}
		}

		stress_impact = {
			base = medium_stress_loss
			lazy = minor_stress_impact_loss
			callous = minor_stress_impact_loss
			diligent = minor_stress_impact_gain
			compassionate = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = -0.5
				ai_energy = -0.5
				ai_boldness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = callous
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
		}
	}
}

##################################################
# A Shiny New Toy
# by Ewan Cowhig Croft
# 0621 - 0630
##################################################

scripted_trigger fp1_0621_valid_child_wants_loot_trigger = {
	# Must be around.
	child_suitable_to_play_with_character_one_sided = { CHARACTER = scope:raider }
	# Quiet children aren't going to come down to the beach.
	childhood_quiet_child_trigger = no
}

#	Your child asks you which piece of raid loot is theirs.
fp1_yearly.0621 = {
	type = character_event
	title = fp1_yearly.0621.t
	desc = fp1_yearly.0621.desc
	theme = war
	left_portrait = {
		character = scope:raider
		animation = personality_rational
	}
	right_portrait = {
		character = scope:child
		animation = admiration
	}
	override_background = { reference = fp1_beached_longships }

	# Triggers handled in the setup event.

	# Weight multipliers handled in the setup event.

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0621
			days = 1825
		}
		# Grab a suitable child.
		random_child = {
			limit = { fp1_0621_valid_child_wants_loot_trigger = yes }
			# Weight up greedier children.
			weight = {
				base = 0
				modifier = { add = ai_greed }
			}
			save_scope_as = child
		}
		# Save a dummy gender for raid victims; reflects your child's biases rather than your actual experiences.
		random_dummy_gender_soldier_effect = { SCOPE_NAME = dummy_gender }
	}

	# Of course you can take the big trophy.
	option = {
		name = fp1_yearly.0621.a

		# Scope:child gains lots of opinion of you.
		reverse_add_opinion = {
			target = scope:child
			modifier = love_opinion
			opinion = 50
		}
		# But you lose some gold.
		remove_short_term_gold = minor_gold_value

		stress_impact = {
			generous = medium_stress_impact_loss
			greedy = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_greed = -0.5
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = greedy
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = generous
			}
		}
	}

	# Nothing now: maybe when you're older, you can earn your own.
	option = {
		name = fp1_yearly.0621.b

		# Scope:child gains some opinion of you.
		reverse_add_opinion = {
			target = scope:child
			modifier = respect_opinion
			opinion = 10
		}

		# A fairly mild response, so no stress to be garnered.
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = 0.5
				ai_boldness = 0.5
			}
		}
	}

	# Away with you! This is for the adults.
	option = {
		name = fp1_yearly.0621.c

		# Gain some prestige.
		add_prestige = minor_prestige_gain
		# Scope:child is upset.
		reverse_add_opinion = {
			target = scope:child
			modifier = hurt_opinion
			opinion = -20
		}

		stress_impact = {
			impatient = minor_stress_impact_loss
			greedy = medium_stress_impact_loss
			patient = minor_stress_impact_gain
			generous = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.25
				ai_compassion = -0.25
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = impatient
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = patient
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = generous
			}
		}
	}
}

#	Setup event to sort triggers, scopes, etc.
fp1_yearly.0622 = {
	hidden = yes
	scope = army

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Root must have been leading the army personally.
		army_commander = scope:raider
		# And some actual loot must have been recovered.
		raid_loot >= 10
		# In which case we take a look at scope:raider & see how they stack up.
		scope:raider = {
			# Standard checks.
			is_available_adult_or_is_commanding = yes
			NOT = { has_character_flag = had_event_fp1_yearly_0621 }
			is_landed = yes
			# Filter to flavour-appropriate characters.
			fp1_is_coastal_norse_tribal = yes
			# And must have a valid child laying about.
			any_child = { fp1_0621_valid_child_wants_loot_trigger = yes}
		}
	}

	weight_multiplier = {
		base = 1

		# Weight up a little for dedicated raiders.
		modifier = {
			add = 1
			scope:raider = { has_trait = viking }
		}
		# Or if you've brought home a truly excessive amount of loot.
		modifier = {
			add = 1
			raid_loot >= 200
		}
	}

	immediate = {
		save_scope_as = raiding_army
		scope:raider = { trigger_event = fp1_yearly.0621 }
	}
}

##################################################
# A Cynical Bent
# by Ewan Cowhig Croft
# 0631 - 0640
##################################################

scripted_trigger fp1_0631_suitable_cynical_knight_trigger = {
	# Must be in the correct army.
	knight_army ?= $ARMY$
	# Has to share scope:raider's faith.
	faith = scope:raider.faith
	# Can't be zealous.
	NOT = { has_trait = zealous }
	# And must have at least decent learning.
	learning >= decent_skill_rating
}

#	You notice a courtier refuses to sacrifice after a raid.
fp1_yearly.0631 = {
	type = character_event
	title = fp1_yearly.0631.t
	desc = fp1_yearly.0631.desc
	theme = faith
	left_portrait = {
		character = scope:cynic
		animation = personality_cynical
	}
	override_background = { reference = fp1_beached_longships }

	# Triggers handled in the setup event.

	# Weight multipliers handled in the setup event.

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0631
			days = 1825
		}
		# Grab an appropriate knight.
		random_knight = {
			limit = {
				fp1_0631_suitable_cynical_knight_trigger = { ARMY = scope:raiding_army }
			}
			# Weight up cynical knights.
			weight = {
				base = 0
				modifier = {
					add = {
						value = ai_zeal
						multiply = -1
					}
				}
			}
			save_scope_as = cynic
		}
	}

	# Lecture them for their impiety.
	option = {
		name = fp1_yearly.0631.a

		# Learning duel over piety.
		duel = {
			skill = learning
			target = scope:cynic
			# You succeed in shaming scope:knight.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0631.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0631.a.tt_success
					left_icon = scope:cynic
					add_piety = medium_piety_gain
					reverse_add_opinion = {
						target = scope:cynic
						modifier = annoyed_opinion
						opinion = -20
					}
				}
			}
			# Scope:knight makes you look like a fool.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0631.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0631.a.tt_failure
					left_icon = scope:cynic
					add_piety = minor_piety_loss
					reverse_add_opinion = {
						target = scope:cynic
						modifier = respect_opinion
						opinion = -30
					}
				}
			}
		}

		stress_impact = {
			gregarious = minor_stress_impact_loss
			generous = minor_stress_impact_loss
			vengeful = minor_stress_impact_loss
			zealous = major_stress_impact_loss
			greedy = major_stress_impact_loss
			shy = medium_stress_impact_gain
			forgiving = medium_stress_impact_gain
			# Event cannot be triggered if you have cynical.
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = 0.5
				ai_greed = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = generous
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = vengeful
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = zealous
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = shy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = forgiving
			}
		}
	}

	# Quietly keep your own tribute too.
	option = {
		name = fp1_yearly.0631.b

		# Gain a little gold.
		add_gold = tiny_gold_value
		# Lose a little piety.
		add_piety = miniscule_piety_loss

		stress_impact = {
			greedy = medium_stress_impact_loss
			generous = medium_stress_impact_gain
			zealous = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 0.5
				ai_zeal = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = generous
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = zealous
			}
		}
	}

	# Shrug and move on.
	option = {
		name = fp1_yearly.0631.c

		# Gain opinion with scope:knight.
		reverse_add_opinion = {
			target = scope:cynic
			modifier = grateful_opinion
			opinion = 20
		}

		stress_impact = {
			forgiving = medium_stress_impact_loss
			vengeful = medium_stress_impact_gain
			zealous = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = -0.25
				ai_greed = -0.25
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = vengeful
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = zealous
			}
		}
	}
}

#	Setup event to sort triggers, scopes, etc.
fp1_yearly.0632 = {
	hidden = yes
	scope = army

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Root must have been leading the army personally.
		army_commander = scope:raider
		# And some actual loot must have been recovered.
		raid_loot >= 10
		# In which case we take a look at scope:raider & see how they stack up.
		scope:raider = {
			# Standard checks.
			is_available_adult_or_is_commanding = yes
			NOT = { has_character_flag = had_event_fp1_yearly_0631 }
			is_landed = yes
			# Filter to flavour-appropriate characters.
			fp1_is_coastal_norse_tribal = yes
			# And there's an appropriate knightly target.
			any_knight = {
				fp1_0631_suitable_cynical_knight_trigger = { ARMY = root }
			}
			# And remove any dedicated cynics.
			NOT = { has_trait = cynical }
		}
	}

	weight_multiplier = {
		base = 1

		# Weight up a little for the zealous, who are more likely to notice.
		modifier = {
			add = 1
			scope:raider = { has_trait = zealous }
		}
	}

	immediate = {
		save_scope_as = raiding_army
		scope:raider = { trigger_event = fp1_yearly.0631 }
	}
}

##################################################
# Worthy of the Ocean
# by Ewan Cowhig Croft
# 0641 - 0650
##################################################

scripted_trigger fp1_0641_raider_with_longships_trigger = {
	can_raid_trigger = yes
	culture = { has_innovation = innovation_longboats }
	any_sub_realm_county = { is_coastal_county = yes }
}

scripted_trigger fp1_0641_neighbouring_ruler_with_stealable_ships_trigger = {
	# Doesn't have a friendly relationship with root.
	has_friendly_relationship_with_root_trigger = no
	# Has stealable longboats.
	fp1_0641_raider_with_longships_trigger = yes
}

#	Your longships seem to be in poor nick.
fp1_yearly.0641 = {
	type = character_event
	title = fp1_yearly.0641.t
	desc = fp1_yearly.0641.desc
	theme = intrigue
	left_portrait = {
		character = root
		animation = personality_rational
	}
	right_portrait = {
		character = scope:neighbour
		animation = dismissal
	}
	override_background = { reference = fp1_beached_longships }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0641 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		fp1_0641_raider_with_longships_trigger = yes
	}

	weight_multiplier = {
		base = 1

		# Weight down a little if you're a raider or diligent, used to keeping your longships in tip-top condition.
		modifier = {
			add = -0.5
			has_trait = viking
		}
		modifier = {
			add = -0.5
			has_trait = diligent
		}
		# And up a little for adventurers and the lazy, who wear their ships hard & can't be arsed respectively.
		modifier = {
			add = 0.5
			has_trait = adventurer
		}
		modifier = {
			add = 0.5
			has_trait = lazy
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0641
			days = 1825
		}
		# Try to grab a suitable neighbour.
		if = {
			limit = {
				any_neighboring_and_across_water_realm_same_rank_owner = { fp1_0641_neighbouring_ruler_with_stealable_ships_trigger = yes }
			}
			random_neighboring_and_across_water_realm_same_rank_owner = {
				# Prefer rivals first.
				limit = {
					any_neighboring_and_across_water_realm_same_rank_owner = {
						any_relation = {
							type = rival
							this = root
						}
						fp1_0641_neighbouring_ruler_with_stealable_ships_trigger = yes
					}
				}
				# Otherwise, just whoever.
				alternative_limit = {
					any_neighboring_and_across_water_realm_same_rank_owner = { fp1_0641_neighbouring_ruler_with_stealable_ships_trigger = yes }
				}
				save_scope_as = neighbour
			}
		}
	}

	# Pay to fix them.
	option = {
		name = fp1_yearly.0641.a
		trigger = {
			can_make_expensive_purchase_trigger = { PRICE = minor_gold_value }
		}

		# The boat are repaired without issue.
		custom_tooltip = fp1_yearly.0641.a.tt
		# Lose a little gold.
		remove_treasury_or_gold = minor_treasury_or_gold_value

		stress_impact = {
			generous = minor_stress_impact_loss
			honest = minor_stress_impact_loss
			greedy = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.5
				ai_greed = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = generous
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = honest
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = greedy
			}
		}
	}

	# Steal some from a neighbouring ruler.
	option = {
		name = fp1_yearly.0641.b
		trigger = { exists = scope:neighbour }

		# Intrigue duel to nab the boats in the night.
		duel = {
			skill = intrigue
			target = scope:neighbour
			# You heist the longships gleefully.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0641.b.tt_success
				send_interface_toast = {
					title = fp1_yearly.0641.b.tt_success
					left_icon = scope:neighbour
					add_character_modifier = {
						modifier = fp1_excellent_longships_modifier
						years = 10
					}
					reverse_add_opinion = {
						target = scope:neighbour
						modifier = angry_opinion
						opinion = -50
					}
				}
			}
			# You're caught and have to leg it.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0641.b.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0641.b.tt_failure
					left_icon = scope:neighbour
					add_character_modifier = {
						modifier = fp1_rotting_longships_modifier
						years = 10
					}
					reverse_add_opinion = {
						target = scope:neighbour
						modifier = annoyed_opinion
						opinion = -20
					}
				}
			}
		}
		# Try to earmark scope:neighbour as a potential rival.
		hidden_effect = {
			if = {
				limit = {
					can_set_relation_potential_rival_trigger = { CHARACTER = scope:neighbour }
				}
				set_relation_potential_rival = scope:neighbour
			}
		}

		stress_impact = {
			arbitrary = minor_stress_impact_loss
			greedy = medium_stress_impact_loss
			deceitful = medium_stress_impact_loss
			just = minor_stress_impact_gain
			generous = medium_stress_impact_gain
			honest = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 0.5
				ai_rationality = 0.25
				ai_honor = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arbitrary
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = greedy
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = deceitful
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = just
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = generous
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = honest
			}
		}
	}

	# Commission new vessels from a fancy shipwright.
	option = {
		name = fp1_yearly.0641.c
		trigger = {
			can_make_expensive_purchase_trigger = { PRICE = medium_gold_value }
		}

		# Gain a modifier boosting naval speed & reducing embark cost.
		add_character_modifier = {
			modifier = fp1_excellent_longships_modifier
			years = 10
		}
		# Lose a bit more gold.
		remove_treasury_or_gold = medium_treasury_or_gold_value

		stress_impact = {
			diligent = minor_stress_impact_loss
			generous = medium_stress_impact_loss
			lazy = minor_stress_impact_gain
			greedy = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.5
				ai_greed = -1
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = diligent
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = generous
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = lazy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = greedy
			}
		}
	}

	# Bah, let them rot. What's the harm?
	option = {
		name = fp1_yearly.0641.d

		# Gain a modifier reducing naval speed & increasing embark cost.
		add_character_modifier = {
			modifier = fp1_rotting_longships_modifier
			years = 10
		}
		# Someone else's problem, right?
		## Stress loss handled in stress impact.

		stress_impact = {
			base = major_stress_loss
			lazy = medium_stress_impact_loss
			greedy = medium_stress_impact_loss
			diligent = medium_stress_impact_gain
			generous = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.25
				ai_greed = -0.5
				ai_energy = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = generous
			}
		}
	}
}

##################################################
# Leviathan
# by Ewan Cowhig Croft
# 0651 - 0660
##################################################

#	You're out sailing when you spot a whale.
fp1_yearly.0651 = {
	type = character_event
	title = fp1_yearly.0651.t
	desc = fp1_yearly.0651.desc
	theme = hunt_activity
	left_portrait = {
		character = root
		animation = shock
	}
	override_background = { reference = fp1_ocean_norse }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0651 }
		is_playable_character = yes
		is_landed = yes
		# Must have a coastal capital.
		capital_county = { is_coastal_county = yes }
	}

	weight_multiplier = {
		base = 1

		# Weight up for the Norse a bit.
		modifier = {
			add = 1
			fp1_is_norse = yes
		}
		# Raiders spend more time at sea. Probably. Vikings do at least.
		modifier = {
			add = 1
			has_trait = viking
		}
		# Adventurers spend more time at sea. Also probably.
		modifier = {
			add = 1
			has_trait = adventurer
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0651
			years = 50
		}
	}

	# Static gold is used rather than dynamic throughout this event. This is to account for whale value not adjusting with your scale (even if it probably should with region): a gold mine for a poor tribal is a month's tax for a highly developed king.

	# Get the harpoons!
	option = {
		name = fp1_yearly.0651.a

		# Prowess challenge to slaughter the whale.
		duel = {
			skill = prowess
			value = decent_skill_rating
			# You haul the whale to shore and butcher it.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0651.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0651.a.tt_success
					left_icon = root
					# Per the comment below the immediate block, the static gold is deliberate.
					add_gold = 100
				}
			}
			# The beast escapes you.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0651.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0651.a.tt_failure
					left_icon = root
					add_prestige = minor_prestige_loss
				}
			}
		}

		stress_impact = {
			vengeful = miniscule_stress_impact_loss	# From Hell's Heart I stab at thee, etc.
			brave = major_stress_impact_loss
			craven = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_energy = 0.5
				ai_compassion = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 5
				has_trait = vengeful
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# Just bring me the carcass.
	option = {
		name = fp1_yearly.0651.b

		# Gain some minor gold.
		## Per the comment below the immediate block, the static gold is deliberate.
		add_gold = 50

		stress_impact = {
			greedy = minor_stress_impact_loss
			generous = minor_stress_impact_gain
			compassionate = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = -0.25
				ai_energy = -0.25
				ai_compassion = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = generous
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
		}
	}

	# (Hunter) A *grand* quarry!
	option = {
		name = fp1_yearly.0651.c
		trigger = { has_trait = lifestyle_hunter }
		trait = lifestyle_hunter
		# You face a *true* leviathan.
		custom_tooltip = fp1_yearly.0651.c.tt
		# More difficult prowess challenge for greater rewards.
		duel = {
			skill = prowess
			value = very_high_skill_rating
			# You haul the whale to shore and butcher it.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0651.c.tt_success
				send_interface_toast = {
					title = fp1_yearly.0651.c.tt_success
					left_icon = root
					# Per the comment below the immediate block, the static gold is deliberate.
					add_gold = 300
				}
			}
			# The beast escapes you.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0651.c.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0651.c.tt_failure
					left_icon = root
					increase_wounds_effect = { REASON = hunting_accident }
					add_prestige = minor_prestige_loss
				}
			}
		}

		stress_impact = {
			vengeful = miniscule_stress_impact_loss	# From Hell's Heart I stab at thee, etc.
			brave = major_stress_impact_loss
			craven = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.75
				ai_energy = 0.75
				ai_compassion = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 5
				has_trait = vengeful
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = craven
			}
		}
	}

	# A creature of fearsome majesty, leave it.
	option = {
		name = fp1_yearly.0651.d

		# The whale goes free.
		custom_tooltip = fp1_yearly.0651.d.tt
		# You gain a little prestige for your kindness.
		add_prestige = minor_prestige_gain

		stress_impact = {
			generous = minor_stress_impact_loss
			compassionate = medium_stress_impact_loss
			craven = major_stress_impact_loss
			greedy = medium_stress_impact_gain
			sadistic = medium_stress_impact_gain
			brave = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_boldness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = generous
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = compassionate
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = craven
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = sadistic
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = brave
			}
		}
	}
}

##################################################
# A Novel Challenge
# by Ewan Cowhig Croft
# 0661 - 0670
##################################################

scripted_trigger fp1_0661_knight_appropriate_for_skiing_trigger = {
	# Has to be around.
	is_available_ai_adult = yes
	# And in the capital.
	location = root.location
	# And have no disqualifying traits.
	NOR = {
		# Personality blockers.
		has_trait = shy
		has_trait = lazy
		has_trait = humble
		has_trait = craven
		# Not that it's impossible, just unlikely for the period & tech level.
		has_trait = one_legged
	}
	# Finally, no negative relationship with root.
	has_any_bad_relationship_with_root_trigger = no
}

#	One of your knights challenges you to skiing.
fp1_yearly.0661 = {
	type = character_event
	title = fp1_yearly.0661.t
	desc = fp1_yearly.0661.desc
	theme = friendly
	left_portrait = {
		character = root
		animation = personality_rational
	}
	right_portrait = {
		character = scope:knight
		animation = personality_bold
	}
	override_background = { reference = feast }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_at_peace_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0661 }
		is_playable_character = yes
		# Must be a suitable culture.
		culture_uses_frequent_winter_transportation_trigger = yes
		# Gotta have snow in the capital.
		character_capital_has_winter_trigger = yes
		# And have an available knight.
		any_knight = { fp1_0661_knight_appropriate_for_skiing_trigger = yes }
	}

	weight_multiplier = {
		base = 1

		# Weight according to winter scale.
		character_capital_has_snow_suitable_for_activities = { CHARACTER = root }
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0661
			days = 1825
		}
		# Grab an appropriate knight.
		random_knight = {
			limit = { fp1_0661_knight_appropriate_for_skiing_trigger = yes }
			save_scope_as = knight
		}
	}

	# How unusual! I accept!
	option = {
		name = fp1_yearly.0661.a
		trigger = {
			NOT = { has_trait = winter_soldier }
		}

		# Prowess duel vs. scope:knight.
		duel = {
			skill = prowess
			target = scope:knight
			# It's close, but you win!
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0661.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0661.a.tt_success
					left_icon = scope:knight
					add_prestige = minor_prestige_gain
					progress_towards_friend_effect = {
						CHARACTER = scope:knight
						OPINION = 30
						REASON = friend_ski_race
					}
				}
			}
			# Scope:knight skids to victory.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0661.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0661.a.tt_failure
					left_icon = scope:knight
					add_prestige = minor_prestige_loss
					progress_towards_friend_effect = {
						CHARACTER = scope:knight
						OPINION = 10
						REASON = friend_ski_race
					}
				}
			}
		}

		stress_impact = {
			brave = medium_stress_impact_loss
			craven = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 0.5
				ai_boldness = 0.5
				ai_honor = 0.5
				ai_sociability = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = brave
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = craven
			}
		}
	}

	# Winter Soldier: Out in the snow? I accept.
	option = {
		name = fp1_yearly.0661.a.2
		trigger = { has_trait = winter_soldier }
		trait = winter_soldier

		custom_tooltip = fp1_yearly.0661.a.2.tt
		add_prestige = minor_prestige_gain
		progress_towards_friend_effect = {
			CHARACTER = scope:knight
			OPINION = 50
			REASON = friend_ski_race
		}

		stress_impact = {
			diligent = minor_stress_impact_loss
			lazy = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 0.5
				ai_boldness = 0.5
				ai_honor = 0.5
				ai_sociability = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = lazy
			}
		}
	}

	# Hobble the competition, then race.
	option = {
		name = fp1_yearly.0661.b

		# Intrigue duel vs. scope:knight.
		duel = {
			skill = intrigue
			target = scope:knight
			# My, what an *effortless* win you have there.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0661.b.tt_success
				send_interface_toast = {
					title = fp1_yearly.0661.b.tt_success
					left_icon = scope:knight
					add_prestige = medium_prestige_gain
					reverse_add_opinion = {
						target = scope:knight
						modifier = suspicion_opinion
						opinion = -5
					}
				}
			}
			# Scope:knight discovers you in the act.
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0661.b.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0661.b.tt_failure
					left_icon = scope:knight
					add_prestige = medium_prestige_loss
					progress_towards_rival_effect = {
						REASON = rival_attempted_to_cheat_race
						CHARACTER = scope:knight
						OPINION = -40
					}
				}
			}
		}

		stress_impact = {
			arbitrary = minor_stress_impact_loss
			deceitful = medium_stress_impact_loss
			just = minor_stress_impact_gain
			honest = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 0.5
				ai_boldness = 0.5
				ai_sociability = 0.25
				ai_honor = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arbitrary
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = deceitful
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = just
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = honest
			}
		}
	}

	# *Competitive* skiing? With no hunting? Get lost.
	option = {
		name = fp1_yearly.0661.c

		# Some minor opt-out prestige.
		add_prestige = miniscule_prestige_gain
		# You upset scope:knight a bit, though.
		reverse_add_opinion = {
			target = scope:knight
			modifier = disappointed_opinion
			opinion = -10
		}

		stress_impact = {
			lazy = minor_stress_impact_loss
			craven = minor_stress_impact_loss
			lifestyle_hunter = medium_stress_impact_loss
			brave = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = -0.25
				ai_boldness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = craven
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = lifestyle_hunter
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = brave
			}
		}
	}
}

##################################################
# A Slippery Slope
# by Ewan Cowhig Croft
# 0671 - 0680
##################################################

scripted_trigger fp1_0671_available_older_sibling_trigger = {
	this != scope:child
	child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
	# Should be older than scope:child.
	age > scope:child.age
	# Mustn't have a terribly negative relationship with scope:child.
	NOT = {
		has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:child }
	}
	opinion = {
		target = scope:child
		value >= medium_negative_opinion
	}
}

#	Your child wants you to go sledding with them.
fp1_yearly.0671 = {
	type = character_event
	title = fp1_yearly.0671.t
	desc = fp1_yearly.0671.desc
	theme = family
	left_portrait = {
		character = root
		animation = happiness
	}
	right_portrait = {
		character = scope:child
		animation = admiration
	}
	lower_right_portrait = scope:sibling
	override_background = { reference = bedchamber }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0671 }
		is_landed = yes
		# Gotta have snow in the capital.
		character_capital_has_winter_trigger = yes
		# And an available child.
		any_child = {
			child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
		}
	}

	weight_multiplier = {
		base = 1

		# Weight according to winter scale.
		character_capital_has_snow_suitable_for_activities = { CHARACTER = root }
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0671
			days = 1825
		}
		# Grab a suitable child.
		random_child = {
			limit = {
				child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
			}
			save_scope_as = child
		}
		# If there's a suitable sibling, nab them for later.
		if = {
			limit = {
				any_child = { fp1_0671_available_older_sibling_trigger = yes }
			}
			random_child = {
				limit = { fp1_0671_available_older_sibling_trigger = yes }
				save_scope_as = sibling
			}
		}
		add_character_flag = {
			flag = use_sickness_clothes
			days = 1
		}
	}

	# (Strong/Physique_Good) Hah, let me just haul this table out for us!
	option = {
		name = fp1_yearly.0671.a
		trigger = {
			OR = {
				has_trait = strong
				has_trait = physique_good
			}
		}
		trait = strong
		trait = physique_good_1
		trait = physique_good_2
		trait = physique_good_3

		# Gain huge opinion boost with scope:child.
		reverse_add_opinion = {
			target = scope:child
			modifier = love_opinion
			opinion = 50
		}
		# Grow closer to becoming friends with scope:child, if possible.
		progress_towards_friend_effect = {
			CHARACTER = scope:child
			OPINION = 0
			REASON = friend_sledding
		}

		stress_impact = {
			gregarious = minor_stress_impact_loss
			diligent = minor_stress_impact_loss
			lazy = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_energy = 0.5
				ai_sociability = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = lazy
			}
		}
	}

	# Come on, let's get a tray from the kitchen.
	option = {
		name = fp1_yearly.0671.b
		trigger = {
			NOR = {
				has_trait = strong
				has_trait = physique_good
			}
		}

		# Gain large opinion boost with scope:child.
		reverse_add_opinion = {
			target = scope:child
			modifier = love_opinion
			opinion = 25
		}

		stress_impact = {
			gregarious = minor_stress_impact_loss
			diligent = minor_stress_impact_loss
			lazy = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_energy = 0.5
				ai_sociability = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = lazy
			}
		}
	}

	# Go ask your [sibling].
	option = {
		name = fp1_yearly.0671.c
		trigger = { exists = scope:sibling }

		# Scope:child & scope:sibling both gain opinion of each other.
		scope:child = {
			progress_towards_friend_effect = {
				CHARACTER = scope:sibling
				OPINION = 30
				REASON = friend_sledding
			}
		}

		# Quite a mild response, so no stress involved.
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_energy = -0.25
				ai_sociability = -0.25
			}
		}
	}

	# Away with you, I'm busy.
	option = {
		name = fp1_yearly.0671.d

		# Lose stress.
		## Stress loss handled in stress_impact.
		# But also opinion with scope:child.
		reverse_add_opinion = {
			target = scope:child
			modifier = disappointed_opinion
			opinion = -20
		}

		stress_impact = {
			base = major_stress_loss
			lazy = minor_stress_impact_loss
			callous = minor_stress_impact_loss
			compassionate = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = -0.25
				ai_sociability = -0.25
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = lazy
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = callous
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
		}
	}

	# Get out of your pajamas.
	after = { remove_character_flag = use_sickness_clothes }
}

##################################################
# Why Can't I Come?
# by Ewan Cowhig Croft
# 0681 - 0690
##################################################

scripted_trigger fp1_0681_haughty_knights_trigger = {
	# Has enough prowess that they're proud of it.
	prowess >= medium_skill_rating
	# And lacks any humbling traits.
	NOR = {
		has_trait = humble
		has_trait = compassionate
		has_trait = forgiving
	}
}

scripted_trigger fp1_0681_child_that_might_like_raiding_trigger = {
	# Must be around.
	child_suitable_to_play_with_character_one_sided = { CHARACTER = root }
	# We want basically anyone who might think it's exciting.
	NOT = { has_trait = pensive }
}

#	One of your children wants to know why they can't come raiding.
fp1_yearly.0681 = {
	type = character_event
	title = fp1_yearly.0681.t
	desc = fp1_yearly.0681.desc
	theme = war
	left_portrait = {
		character = root
		animation = personality_content
	}
	right_portrait = {
		character = scope:child
		animation = admiration
	}
	override_background = { reference = study }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_at_peace_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0681 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		fp1_is_coastal_norse_tribal = yes
		# Raiding must be recent or ever-present.
		OR = {
			has_trait = viking
			has_character_flag = has_recently_performed_raid
		}
		# At least some of your knights should be snobbish.
		any_knight = { fp1_0681_haughty_knights_trigger = yes }
		# And you must have a suitable child.
		any_child = { fp1_0681_child_that_might_like_raiding_trigger = yes }
	}

	weight_multiplier = {
		base = 1

		# Weight up a bit for adventurers & vikings.
		modifier = {
			add = 0.5
			has_trait = adventurer
		}
		modifier = {
			add = 0.5
			has_trait = viking
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0681
			days = 1825
		}
		# Grab a suitable child.
		random_child = {
			limit = { fp1_0681_child_that_might_like_raiding_trigger = yes }
			save_scope_as = child
		}
	}

	# I'm leaving you to guard [capital], ok?
	option = {
		name = fp1_yearly.0681.a

		# Gain opinion with scope:child.
		reverse_add_opinion = {
			target = scope:child
			modifier = trust_opinion
			opinion = 20
		}

		stress_impact = {
			compassionate = minor_stress_impact_loss
			callous = minor_stress_impact_gain
			sadistic = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.75
				ai_sociability = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = callous
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = sadistic
			}
		}
	}

	# _Hah_! You'll never be a true warrior, child.
	option = {
		name = fp1_yearly.0681.b

		# Gain opinion with all of your haughty knights.
		every_knight = {
			limit = { fp1_0681_haughty_knights_trigger = yes }
			custom = fp1_yearly.0681.b.haughty_knights
			add_opinion = {
				target = root
				modifier = respect_opinion
				opinion = 15
			}
		}
		# Lose opinion with scope:child.
		reverse_add_opinion = {
			target = scope:child
			modifier = hurt_opinion
			opinion = -30
		}
		# Add hidden potential rivalry if possible.
		hidden_effect = {
			if = {
				limit = {
					can_set_relation_potential_rival_trigger = { CHARACTER = scope:child }
				}
				set_relation_potential_rival = scope:child
			}
		}

		stress_impact = {
			callous = minor_stress_impact_loss
			sadistic = minor_stress_impact_loss
			compassionate = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.25
				ai_compassion = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = callous
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = sadistic
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
		}
	}

	# We'll talk about it when you're older.
	option = {
		name = fp1_yearly.0681.c

		# Gain some minor opinion with your knights.
		every_knight = {
			custom = custom.every_knight
			add_opinion = {
				target = root
				modifier = respect_opinion
				opinion = 5
			}
		}
		# But lose opinion with scope:child.
		reverse_add_opinion = {
			target = scope:child
			modifier = disappointed_opinion
			opinion = -10
		}

		# Mild response, incurs no stress.
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = -0.25
				ai_boldness = -0.25
				ai_sociability = -0.25
			}
		}
	}
}

##################################################
# Attempted Atonement
# by Ewan Cowhig Croft
# 0691 - 0700
##################################################

scripted_trigger fp1_0692_valid_convertable_knight_trigger = {
	# Must be in the army's location.
	location = root.location
	# & share scope:raider's faith, which isn't reformed.
	faith = {
		this = scope:raider.faith
		has_doctrine_parameter = unreformed
	}
	# Shouldn't have anything that might block them from converting.
	NOR = {
		has_trait = arrogant
		has_trait = content
		has_trait = cynical
		has_trait = zealous
		has_trait = paranoid
		# Sadists are too busy for introspection.
		has_trait = sadistic
	}
	# And should be landless.
	is_courtier_of = scope:raider
	# Children can be rebellious, but we should probably filter them out too.
	NOT = {
		any_parent = { this = scope:raider }
	}
}

scripted_trigger fp1_0691_knight_still_valid_convertable_trigger = {
	# Has all the appropriate variables; they come as a matched pair, but just in case.
	has_variable = raid_convert_county
	has_variable = raid_convert_faith
	# Standard checks.
	is_available_ai_adult = yes
	is_courtier_of = root
	# Make sure that they're still of root's faith, and that root hasn't converted to their new faith.
	faith = root.faith
	NOT = { this.var:raid_convert_faith = root.faith }
	# Shouldn't have become committed to a religious stance, but just check they've not managed to sneak-acquire traits in the meanwhilst.
	NOR = {
		has_trait = zealous
		has_trait = cynical
	}
}

#	One of your knights finds new faith after a raid.
fp1_yearly.0691 = {
	type = character_event
	title = fp1_yearly.0691.t
	desc = fp1_yearly.0691.desc
	theme = war
	left_portrait = {
		character = root
		animation = shock
	}
	right_portrait = {
		character = scope:knight
		animation = personality_zealous
	}
	override_background = { reference = throne_room }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_at_peace_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_0691 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		fp1_is_norse_tribal = yes
		# There must be at least one knight who's had a crisis of conscience.
		any_knight = { fp1_0691_knight_still_valid_convertable_trigger = yes }
	}

	weight_multiplier = {
		base = 1

		# Knights feel more comfortable converting away if you're not particularly religious.
		modifier = {
			add = 0.5
			has_trait = cynical
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_0691
			days = 3650
		}
		# Grab a suitable knight.
		random_knight = {
			limit = { fp1_0691_knight_still_valid_convertable_trigger = yes }
			weight = {
				base = 0
				# Weight up fickle & trusting characters.
				## Fickle characters are more likely to heel-face-turn on their pillaging faith.
				modifier = {
					add = 100
					has_trait = fickle
				}
				## Trusting characters are more gullible, and they *did* take thralls.
				modifier = {
					add = 100
					has_trait = trusting
				}
			}
			save_scope_as = knight
		}
		# Convert them & boost their zeal.
		scope:knight = {
			set_character_faith = this.var:raid_convert_faith
			add_trait = zealous
		}
		# Grab the source county for loc.
		scope:knight.var:raid_convert_county = { save_scope_as = county }
	}

	# Surely I can talk you out of this foreign faith?
	option = {
		name = fp1_yearly.0691.a

		# Learning duel to get them to recant & stay.
		duel = {
			skill = learning
			target = scope:knight
			# You bring them back to the light.
			40 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				desc = fp1_yearly.0691.a.tt_success
				send_interface_toast = {
					title = fp1_yearly.0691.a.tt_success
					left_icon = scope:knight
					# They reconvert.
					scope:knight = { set_character_faith = root.faith }
					# And you either get a hook on them...
					if = {
						limit = {
							can_add_hook = {
								target = scope:knight
								type = favor_hook
							}
						}
						add_hook = {
							target = scope:knight
							type = favor_hook
						}
					}
					# Or a goodly chunk of opinion.
					else = {
						reverse_add_opinion = {
							target = scope:knight
							modifier = grateful_opinion
							opinion = 30
						}
					}
				}
			}
			# They refuse and leave.
			60 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				desc = fp1_yearly.0691.a.tt_failure
				send_interface_toast = {
					title = fp1_yearly.0691.a.tt_failure
					left_icon = scope:knight
					# They leave.
					scope:knight = { select_and_move_to_pool_effect = yes }
					# And they're none too happy with you.
					reverse_add_opinion = {
						target = scope:knight
						modifier = insult_opinion
						opinion = -25
					}
				}
			}
		}

		stress_impact = {
			humble = minor_stress_impact_loss
			zealous = major_stress_impact_loss
			arrogant = minor_stress_impact_gain
			cynical = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = 0.75
				ai_boldness = 0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = humble
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = zealous
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = cynical
			}
		}
	}

	# GetFaith.GetReligion.GetName? You've gone mad. Guards!
	option = {
		name = fp1_yearly.0691.b

		# Quietly move scope:knight to the pool so you're no longer their liege.
		hidden_effect = {
			scope:knight = { move_to_pool = yes }
		}
		# Throw scope:knight in the dungeon immediately.
		rightfully_imprison_character_effect = {
			TARGET = scope:knight
			IMPRISONER = root
		}
		hidden_effect = {
			scope:knight = { change_prison_type = dungeon }
		}
		# Scope:knight is understandably angry.
		reverse_add_opinion = {
			target = scope:knight
			modifier = hate_opinion
			opinion = -50
		}
		# Quietly mark them for future rivalry.
		hidden_effect = {
			if = {
				limit = {
					can_set_relation_potential_rival_trigger = { CHARACTER = scope:knight }
				}
				set_relation_potential_rival = scope:knight
			}
		}
		# But, hey, piety & same-faith courtier & guest opinion.
		every_courtier_or_guest = {
			limit = {
				faith = root.faith
				NOT = { has_trait = cynical }
			}
			custom = fp1_yearly.0691.b.same_faith_courtiers_and_guests
			add_opinion = {
				target = root
				modifier = pious_opinion
				opinion = 10
			}
		}

		stress_impact = {
			vengeful = major_stress_impact_loss
			zealous = major_stress_impact_loss
			forgiving = major_stress_impact_gain
			cynical = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = 0.5
				ai_vengefulness = 0.5
				ai_energy = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = vengeful
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = zealous
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = cynical
			}
		}
	}

	# You may go if you wish.
	option = {
		name = fp1_yearly.0691.c

		# Gain a little prestige.
		add_prestige = minor_prestige_gain
		# And the knight's gratitude.
		reverse_add_opinion = {
			target = scope:knight
			modifier = grateful_opinion
			opinion = 35
		}
		# But lose the knight.
		scope:knight = { select_and_move_to_pool_effect = yes }

		stress_impact = {
			forgiving = major_stress_impact_loss
			cynical = major_stress_impact_loss
			vengeful = major_stress_impact_gain
			zealous = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = forgiving
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = cynical
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = vengeful
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = zealous
			}
		}
	}
}

#	Set-up event for raiding.
fp1_yearly.0692 = {
	hidden = yes
	scope = army

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# We only want to convert to reformed faiths.
		scope:county.faith = {
			NOT = { has_doctrine_parameter = unreformed }
		}
		# Check various prerequisites with scope:raider.
		scope:raider = {
			# Scope:raider shouldn't have had this event recently either.
			#NOT = { has_character_flag = had_event_fp1_yearly_0691 }
			# We don't want all raiding to result in tons of variables floating about.
			fp1_is_norse_tribal = yes
			# There must be at least one eligible knight in the raid army.
			any_knight = { fp1_0692_valid_convertable_knight_trigger = yes }
		}
	}

	immediate = {
		# Designate a suitable knight.
		scope:raider = {
			random_knight = {
				# Preferring those who might be more open to new ideas.
				limit = {
					fp1_0692_valid_convertable_knight_trigger = yes
					OR = {
						has_trait = humble
						has_trait = honest
						has_trait = ambitious
						has_trait = gregarious
						has_trait = arbitrary
						has_trait = trusting
						has_trait = fickle
					}
				}
				# But otherwise just anyone valid.
				alternative_limit = { fp1_0692_valid_convertable_knight_trigger = yes }
				# Remember the county it happened in.
				set_variable = {
					name = raid_convert_county
					value = scope:county
					years = 5
				}
				# And the faith they'd like to convert to.
				set_variable = {
					name = raid_convert_faith
					value = scope:county.faith
					years = 5
				}
			}
		}
	}
}










##################################################
# SPECIAL YEARLIES

##################################################
# A Mysterious Stranger Stays at Court
# by Ewan Cowhig Croft
# 1001 - 1030
##################################################

scripted_trigger valid_germanic_faith_trigger = {
	#Small enough that it probably doesn't need a trigger, but might need to be more complex in future.
	religion = religion:germanic_religion
}

scripted_trigger valid_non_germanic_reformed_faith_trigger = {
	NOR = {
		faith = { has_doctrine_parameter = unreformed }
		religion = religion:germanic_religion
	}
}

scripted_effect fp1_mysterious_stranger_follow_up_event_picker_effect = {
	if = {
		limit = { scope:ms_type = flag:godi }
		trigger_event = fp1_yearly.1011
	}
	else_if = {
		limit = { scope:ms_type = flag:missionary }
		trigger_event = fp1_yearly.1012
	}
	else_if = {
		limit = { scope:ms_type = flag:nithing }
		trigger_event = fp1_yearly.1013
	}
	else_if = {
		limit = { scope:ms_type = flag:warrior }
		trigger_event = fp1_yearly.1014
	}
	#Trigger vagrant as the last possible thing.
	else = { trigger_event = fp1_yearly.1015 }
}

scripted_effect mysterious_stranger_disappears_effect = {
	custom_tooltip = fp1_yearly.1001.mysterious_stranger_disappears.tt
	hidden_effect = {
		scope:stranger = {
			death = { death_reason = death_vanished }
		}
	}
}

#	You notice a stranger has been hanging around the court.
fp1_yearly.1001 = {
	type = character_event
	title = fp1_yearly.1001.t
	desc = {
		desc = fp1_yearly.1001.desc.intro
		first_valid = {
			triggered_desc = {
				trigger = { scope:ms_behaviour_1 = flag:sneaks }
				desc = fp1_yearly.1001.desc.behaviour_1.sneaks
			}
			triggered_desc = {
				trigger = { scope:ms_behaviour_1 = flag:leaves_early }
				desc = fp1_yearly.1001.desc.behaviour_1.leaves_early
			}
			triggered_desc = {
				trigger = { scope:ms_behaviour_1 = flag:earnest }
				desc = fp1_yearly.1001.desc.behaviour_1.earnest
			}
			triggered_desc = {
				trigger = { scope:ms_behaviour_1 = flag:confident }
				desc = fp1_yearly.1001.desc.behaviour_1.confident
			}
			triggered_desc = {
				trigger = { scope:ms_behaviour_1 = flag:talkative }
				desc = fp1_yearly.1001.desc.behaviour_1.talkative
			}
			triggered_desc = {
				trigger = { scope:ms_behaviour_1 = flag:eats_their_fill }
				desc = fp1_yearly.1001.desc.behaviour_1.eats_their_fill
			}
		}
		first_valid = {
			triggered_desc = {
				trigger = { scope:ms_behaviour_2 = flag:sneaks }
				desc = fp1_yearly.1001.desc.behaviour_2.sneaks
			}
			triggered_desc = {
				trigger = { scope:ms_behaviour_2 = flag:leaves_early }
				desc = fp1_yearly.1001.desc.behaviour_2.leaves_early
			}
			triggered_desc = {
				trigger = { scope:ms_behaviour_2 = flag:earnest }
				desc = fp1_yearly.1001.desc.behaviour_2.earnest
			}
			triggered_desc = {
				trigger = { scope:ms_behaviour_2 = flag:confident }
				desc = fp1_yearly.1001.desc.behaviour_2.confident
			}
			triggered_desc = {
				trigger = { scope:ms_behaviour_2 = flag:talkative }
				desc = fp1_yearly.1001.desc.behaviour_2.talkative
			}
			triggered_desc = {
				trigger = { scope:ms_behaviour_2 = flag:eats_their_fill }
				desc =  fp1_yearly.1001.desc.behaviour_2.eats_their_fill
			}
		}
		desc = fp1_yearly.1001.desc.outro
	}
	theme = intrigue
	left_portrait = {
		character = scope:stranger
		animation = personality_honorable
	}
	override_background = { reference = feast }

	trigger = {
		#DLC check.
		has_fp1_dlc_trigger = yes
		#Standard checks.
		is_available_even_at_war_adult = yes
		is_landed = yes
		NOT = { has_character_flag = had_event_fp1_yearly_1001 }
		#Scandinavian culture group, and within Scandinavia (plus a few other places).
		culture = { has_cultural_pillar = heritage_north_germanic }
		capital_province ?= { geographical_region = dlc_fp1_region_mysterious_stranger_locations }
	}

	weight_multiplier = {
		base = 1
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_1001
			days = 7300
		}
		#Spawn a suitable mysterious stranger.
		##Each of these has a list of traits that overlap with 1-2 other spawnable categories, as well as some unique tells.
		##The idea is that they're structured enough to be able to guess (sorta) first time, but random enough that you won't always guess correctly. At the same time, learning the tells over time, and what makes a character definitely/definitely not a specific type of stranger, rewards repeated play.
		random_list = {
			#Spawn a godi.
			100 = {
				#Requires some contact with Germanic Paganism.
				trigger = {
					OR = {
						valid_germanic_faith_trigger = yes
						any_sub_realm_county = { valid_germanic_faith_trigger = yes }
						any_neighboring_top_liege_realm_owner = { valid_germanic_faith_trigger = yes }
					}
				}
				#Create the character & set up details for later.
				create_character = {
					location = root.capital_province
					template = fp1_ms_godi_character
					save_scope_as = stranger
				}
				save_scope_value_as = {
					name = ms_type
					value = flag:godi
				}
				#Figure out what faith the godi would actually have.
				##Only a random chance for now: this is to give same-religion separate-faith godis a chance to spawn if you're Germanic Pagan yourself.
				random = {
					chance = 50
					if = {
						limit = { valid_germanic_faith_trigger = yes }
						faith = { save_scope_as = ms_faith }
					}
				}
				if = {
					limit = {
						NOT = { exists = scope:ms_faith }
						any_sub_realm_county = { valid_germanic_faith_trigger = yes }
					}
					random_sub_realm_county = {
						limit = { valid_germanic_faith_trigger = yes }
						faith = { save_scope_as = ms_faith }
					}
				}
				else_if  = {
					limit = {
						any_neighboring_top_liege_realm_owner = { valid_germanic_faith_trigger = yes }
					}
					random_neighboring_top_liege_realm_owner = {
						limit = { valid_germanic_faith_trigger = yes }
						faith = { save_scope_as = ms_faith }
					}
				}
				else = {
					#If you hit this stage, go back to your own Germanic Pagan faith.
					faith = { save_scope_as = ms_faith }
				}
			}
			#Spawn a missionary from a reformed faith.
			100 = {
				#Requires some contact with a reformed faith that isn't Germanic Pagan.
				trigger = {
					OR = {
						valid_non_germanic_reformed_faith_trigger = yes
						any_sub_realm_county = { valid_non_germanic_reformed_faith_trigger = yes }
						any_neighboring_top_liege_realm_owner = { valid_non_germanic_reformed_faith_trigger = yes }
					}
				}
				#Create the character & set up details for later.
				create_character = {
					location = root.capital_province
					template = fp1_ms_reformed_missionary_character
					save_scope_as = stranger
				}
				save_scope_value_as = {
					name = ms_type
					value = flag:missionary
				}
				#Figure out what faith the missionary would actually have.
				if = {
					limit = { valid_non_germanic_reformed_faith_trigger = yes }
					faith = { save_scope_as = ms_faith }
				}
				else_if = {
					limit = {
						any_sub_realm_county = { valid_non_germanic_reformed_faith_trigger = yes }
					}
					random_sub_realm_county = {
						limit = { valid_non_germanic_reformed_faith_trigger = yes }
						faith = { save_scope_as = ms_faith }
					}
				}
				else = {
					random_neighboring_top_liege_realm_owner = {
						limit = { valid_non_germanic_reformed_faith_trigger = yes }
						faith = { save_scope_as = ms_faith }
					}
				}
			}
			#Spawn a nithing.
			100 = {
				#No requirements.
				#Create the character & set up details for later.
				create_character = {
					location = root.capital_province
					template = fp1_ms_nithing_character
					save_scope_as = stranger
				}
				save_scope_value_as = {
					name = ms_type
					value = flag:nithing
				}
			}
			#Spawn a warrior.
			100 = {
				#No requirements.
				#Create the character & set up details for later.
				create_character = {
					location = root.capital_province
					template = fp1_ms_warrior_character
					save_scope_as = stranger
				}
				save_scope_value_as = {
					name = ms_type
					value = flag:warrior
				}
			}
			#Spawn an ordinary vagrant.
			##These guys are the wild cards: they have no restrictions on anything, save that they suck at everything. Their job is to be confusing and make you uncertain.
			100 = {
				#No requirements.
				#Create the character & set up details for later.
				create_character = {
					location = root.capital_province
					template = fp1_ms_vagrant_character
					save_scope_as = stranger
				}
				save_scope_value_as = {
					name = ms_type
					value = flag:vagrant
				}
			}
		}
		#Set behaviours.
		##Each stranger type exhibits two of three possible behaviour patterns in the event description. All behaviour patterns overlap with at least one other stranger type, with the vagrant having access to all of them.
		random_list = {
			#Godi
			100 = {
				trigger = { scope:ms_type = flag:godi }
				random_list = {
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:sneaks
						}
					}
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:leaves_early
						}
					}
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:earnest
						}
					}
				}
				random_list = {
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:sneaks }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:sneaks
						}
					}
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:leaves_early }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:leaves_early
						}
					}
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:earnest }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:earnest
						}
					}
				}
			}
			#Missionary
			100 = {
				trigger = { scope:ms_type = flag:missionary }
				random_list = {
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:confident
						}
					}
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:leaves_early
						}
					}
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:talkative
						}
					}
				}
				random_list = {
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:confident }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:confident
						}
					}
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:leaves_early }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:leaves_early
						}
					}
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:talkative }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:talkative
						}
					}
				}
			}
			#Nithing
			100 = {
				trigger = { scope:ms_type = flag:nithing }
				random_list = {
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:sneaks
						}
					}
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:eats_their_fill
						}
					}
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:earnest
						}
					}
				}
				random_list = {
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:sneaks }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:sneaks
						}
					}
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:eats_their_fill }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:eats_their_fill
						}
					}
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:earnest }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:earnest
						}
					}
				}
			}
			#Warrior
			100 = {
				trigger = { scope:ms_type = flag:warrior }
				random_list = {
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:confident
						}
					}
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:eats_their_fill
						}
					}
					33 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:talkative
						}
					}
				}
				random_list = {
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:confident }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:confident
						}
					}
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:eats_their_fill }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:eats_their_fill
						}
					}
					33 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:talkative }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:talkative
						}
					}
				}
			}
			#Vagrant
			100 = {
				trigger = { scope:ms_type = flag:vagrant }
				random_list = {
					20 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:sneaks
						}
					}
					20 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:leaves_early
						}
					}
					20 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:earnest
						}
					}
					20 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:confident
						}
					}
					20 = {
						save_scope_value_as = {
							name = ms_behaviour_1
							value = flag:talkative
						}
					}
				}
				random_list = {
					20 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:sneaks }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:sneaks
						}
					}
					20 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:leaves_early }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:leaves_early
						}
					}
					20 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:earnest }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:earnest
						}
					}
					20 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:confident }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:confident
						}
					}
					20 = {
						trigger = {
							NOT = { scope:ms_behaviour_1 = flag:talkative }
						}
						save_scope_value_as = {
							name = ms_behaviour_2
							value = flag:talkative
						}
					}
				}
			}
		}
		#And sometimes just remove an eye for funsies.
		random = {
			chance = 5
			scope:stranger = { add_trait = one_eyed }
		}
	}

	#Ignore them: they're probably harmless.
	##This leads to a standardised effect: something mildly beneficial/annoying, if the player is unsure or doesn't want to gamble much.
	option = {
		name = fp1_yearly.1001.a

		#Let the player know that something will happen.
		custom_tooltip = fp1_yearly.1001.probably_harmless.tt

		#Configure for standard effects.
		save_scope_value_as = {
			name = ms_effect
			value = flag:standard
		}

		#Figure out which follow-up event to send.
		fp1_mysterious_stranger_follow_up_event_picker_effect = yes

		stress_impact = {
			trusting = minor_stress_impact_loss
			gregarious = minor_stress_impact_loss
			paranoid = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = -0.5
				ai_compassion = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = trusting
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = paranoid
			}
		}
	}

	#Make them a guest of honour!
	##This leads to a critical effect: we dial up the consequences, in case the player is certain they know who the stranger is/wants to risk it for a biscuit.
	option = {
		name = fp1_yearly.1001.b

		#Warn the player that they're signing up for a dramatic event.
		custom_tooltip = fp1_yearly.1001.guest_of_honour.tt

		#Configure for critical effects.
		save_scope_value_as = {
			name = ms_effect
			value = flag:critical
		}

		#Figure out which follow-up event to send.
		fp1_mysterious_stranger_follow_up_event_picker_effect = yes

		stress_impact = {
			trusting = medium_stress_impact_loss
			gregarious = medium_stress_impact_loss
			paranoid = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = -0.5
				ai_compassion = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = trusting
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = gregarious
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = paranoid
			}
		}
	}

	#Give 'em the boot.
	##Opt-out with mild consequence.
	option = {
		name = fp1_yearly.1001.c

		#The mysterious stranger vanishes.
		mysterious_stranger_disappears_effect = yes

		#Everyone thinks you're a bit mean-spirited, but that's it.
		if = {
			limit = { has_character_modifier = generous_host_fp1_modifier }
			remove_character_modifier = generous_host_fp1_modifier
		}
		else = {
			add_character_modifier = {
				modifier = stingy_host_fp1_modifier
				years = 5
			}
		}

		stress_impact = {
			paranoid = minor_stress_impact_loss
			shy = medium_stress_impact_loss
			trusting = minor_stress_impact_gain
			gregarious = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.5
				ai_compassion = 0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = paranoid
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = shy
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = trusting
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = gregarious
			}
		}
	}
}

scripted_trigger mysterious_stranger_godi_same_faith_trigger = {
	#Small enough that it probably doesn't need a trigger, but might need to be more complex in future.
	faith = scope:ms_faith
}

scripted_trigger mysterious_stranger_godi_same_religion_trigger = {
	NOT = { mysterious_stranger_godi_same_faith_trigger = yes }
	religion = scope:ms_faith.religion
}

scripted_effect mysterious_stranger_add_possible_converts_to_specific_list_effect = {
	random_in_list = {
		list = possible_converts_pool_list
		limit = {
			NOT = { is_in_list = possible_converts_specific_list }
		}
		weight = {
			base = 0
			#Give a base percentage chance, scale down 2% per point of learning.
			modifier = {
				add = {
					value = 50
					subtract = learning
				}
			}
			#Weight up assorted traits that make you more likely to believe the godi.
			modifier = {
				add = 5
				has_trait = arbitrary
			}
			modifier = {
				add = 5
				has_trait = fickle
			}
			modifier = {
				add = 10
				has_trait = trusting
			}
		}
		add_to_list = possible_converts_specific_list
	}
}

scripted_effect mysterious_stranger_different_religion_convert_courtiers_effect = {
	#Firstly, nab all the courtiers who might be susceptible to conversion, excepting any who'd mess you up too much.
	every_courtier = {
		limit = {
			is_available_ai_adult = yes
			#We only want to look at people of root's faith.
			faith = root.faith
			NOR = {
				#Exclude the self-righteous.
				has_trait = zealous
				has_trait = faith_warrior
				has_trait = heresiarch
				has_trait = crusader_king
				#Aaaand exclude the actually-righteous.
				piety_level >= medium_piety_level
				#We also don't want council conversions, since that could make for some awkward chaplains.
				is_councillor_of = root
				#Filter out likely heirs, so that we don't mess up succession too much.
				is_primary_heir_of = root
				is_player_heir_of = root
			}
		}
		add_to_list = possible_converts_pool_list
	}
	#Nab specific courtiers for conversion.
	mysterious_stranger_add_possible_converts_to_specific_list_effect = yes
	mysterious_stranger_add_possible_converts_to_specific_list_effect = yes
	mysterious_stranger_add_possible_converts_to_specific_list_effect = yes
	#Nab even more if it's a a critical effect.
	if = {
		limit = { scope:ms_effect = flag:critical }
		mysterious_stranger_add_possible_converts_to_specific_list_effect = yes
		mysterious_stranger_add_possible_converts_to_specific_list_effect = yes
		mysterious_stranger_add_possible_converts_to_specific_list_effect = yes
	}
}

#	Results: Godi.
fp1_yearly.1011 = {
	type = character_event
	title = fp1_yearly.1011.t
	desc = {
		first_valid = {
			#Critical - separate religion.
			triggered_desc = {
				trigger = {
					scope:ms_effect = flag:critical
					NOR = {
						mysterious_stranger_godi_same_faith_trigger = yes
						mysterious_stranger_godi_same_religion_trigger = yes
					}
				}
				desc = fp1_yearly.1011.desc.separate_religion.critical
			}
			#Standard - separate religion.
			triggered_desc = {
				trigger = {
					scope:ms_effect = flag:standard
					NOR = {
						mysterious_stranger_godi_same_faith_trigger = yes
						mysterious_stranger_godi_same_religion_trigger = yes
					}
				}
				desc = fp1_yearly.1011.desc.separate_religion.standard
			}
			#Critical - same religion, separate faith.
			triggered_desc = {
				trigger = {
					scope:ms_effect = flag:critical
					mysterious_stranger_godi_same_religion_trigger = yes
				}
				desc = fp1_yearly.1011.desc.same_religion.critical
			}
			#Standard - same religion, separate faith.
			triggered_desc = {
				trigger = {
					scope:ms_effect = flag:standard
					mysterious_stranger_godi_same_religion_trigger = yes
				}
				desc = fp1_yearly.1011.desc.same_religion.standard
			}
			#Critical - same faith.
			triggered_desc = {
				trigger = {
					scope:ms_effect = flag:critical
					mysterious_stranger_godi_same_faith_trigger = yes
				}
				desc = fp1_yearly.1011.desc.same_faith.critical
			}
			#Standard - same faith (fallback).
			desc = fp1_yearly.1011.desc.same_faith.standard
		}
	}
	theme = intrigue
	left_portrait = {
		character = scope:stranger
		#The Godi respects fellow Germanic Pagans.
		triggered_animation = {
			trigger = {
				root = {
					OR = {
						mysterious_stranger_godi_same_faith_trigger = yes
						mysterious_stranger_godi_same_religion_trigger = yes
					}
				}
			}
			animation = personality_zealous
		}
		#Less so those outside their religion.
		triggered_animation = {
			trigger = {
				root = {
					NAND = {
						mysterious_stranger_godi_same_faith_trigger = yes
						mysterious_stranger_godi_same_religion_trigger = yes
					}
				}
			}
			animation = anger
		}
	}
	override_background = { reference = bedchamber }

	immediate = {
		scope:stranger = {
			#Boost education by a step.
			##Ordered backwards so that they don't sequentially overwrite each other.
			if = {
				limit = { has_trait = education_learning_3 }
				hidden_effect = { remove_trait = education_learning_3 }
				add_trait = education_learning_4
			}
			if = {
				limit = { has_trait = education_learning_2 }
				hidden_effect = { remove_trait = education_learning_2 }
				add_trait = education_learning_3
			}
			if = {
				limit = { has_trait = education_learning_1 }
				hidden_effect = { remove_trait = education_learning_1 }
				add_trait = education_learning_2
			}
			if = {
				limit = { has_trait = education_intrigue_3 }
				hidden_effect = { remove_trait = education_intrigue_3 }
				add_trait = education_intrigue_4
			}
			if = {
				limit = { has_trait = education_intrigue_2 }
				hidden_effect = { remove_trait = education_intrigue_2 }
				add_trait = education_intrigue_3
			}
			if = {
				limit = { has_trait = education_intrigue_1 }
				hidden_effect = { remove_trait = education_intrigue_1 }
				add_trait = education_intrigue_2
			}
			#Boost stats.
			add_diplomacy_skill = { 5 10 }
			add_martial_skill = { 5 10 }
			add_stewardship_skill = { 3 8 }
			add_intrigue_skill = { 10 15 }
			add_learning_skill = { 10 15 }
			add_prowess_skill = { 5 10 }
			#Change faith.
			hidden_effect = { set_character_faith = scope:ms_faith }
			#Finally: give them an eye-patch, assuming they're going to impersonate Odin. And aren't already missing an eye.
			if = {
				limit = {
					religion = root.religion
					NOT = { has_trait = one_eyed }
				}
				add_character_flag = wears_fake_eye_patch
			}
			#Reveal the godi's true stats.
			hidden_effect = { force_character_skill_recalculation = yes }
		}
		#Organise a list of courtiers who might be affected for conversion.
		mysterious_stranger_different_religion_convert_courtiers_effect = yes
		#Godi is not even of your religion, giving negative effects.
		if = {
			limit = {
				NOR = {
					mysterious_stranger_godi_same_faith_trigger = yes
					mysterious_stranger_godi_same_religion_trigger = yes
				}
			}
			#If the godi is not of your religion, they convert a bunch of your courtiers.
			every_in_list = {
				list = possible_converts_specific_list
				custom = fp1_yearly.1011.possible_converts_specific_list
				set_character_faith = scope:ms_faith
			}
			#You also lose some piety, or realm priest opinion if appropriate. Amount depends on whether you endorsed the godi or not.
			if = {
				limit = { scope:ms_effect = flag:critical }
				if = {
					limit = {
						faith = { has_doctrine = doctrine_theocracy_lay_clergy }
						#Double-check that they actually have a realm priest at the moment.
						any_learning_councillor = { exists = this }
					}
					add_piety = medium_piety_loss
					every_learning_councillor = {
						add_opinion = {
							target = root
							modifier = fp1_honoured_heathen_opinion
						}
					}
				}
				else = { add_piety = major_piety_loss }
			}
			else = { add_piety = medium_piety_loss }
		}
		#Godi is of your religion, but not of your faith.
		else_if = {
			limit = { mysterious_stranger_godi_same_religion_trigger = yes }
			#Better piety gain if you endorsed them.
			if = {
				limit = { scope:ms_effect = flag:critical }
				add_piety = medium_piety_gain
			}
			else = { add_piety = minor_piety_gain }
		}
		#Otherwise, the godi is of your faith.
		else = {
			#As elsewhere, better piety gain if you endorsed them.
			if = {
				limit = { scope:ms_effect = flag:critical }
				add_piety = major_piety_gain
			}
			else = { add_piety = medium_piety_gain }
		}
	}

	#Surely that cannot *truly* have been the Allfather? [spoilers: it wasn't]
	option = {
		name = fp1_yearly.1011.a
		trigger = {
			OR = {
				mysterious_stranger_godi_same_faith_trigger = yes
				mysterious_stranger_godi_same_religion_trigger = yes
			}
		}

		#The godi vanishes.
		mysterious_stranger_disappears_effect = yes

		ai_chance = {
			#Only option.
			base = 100
		}
	}

	#Bastard!
	option = {
		name = fp1_yearly.1011.b
		trigger = {
			NOR = {
				mysterious_stranger_godi_same_faith_trigger = yes
				mysterious_stranger_godi_same_religion_trigger = yes
			}
		}

		#The godi vanishes.
		mysterious_stranger_disappears_effect = yes

		ai_chance = {
			#Only option.
			base = 100
		}
	}
}

#	Results: Reformed Missionary.
fp1_yearly.1012 = {
	type = character_event
	title = fp1_yearly.1012.t
	desc = {
		first_valid = {
			#Critical - different faith.
			triggered_desc = {
				trigger = {
					scope:ms_effect = flag:critical
					faith != scope:ms_faith
				}
				desc = fp1_yearly.1012.desc.different_faith.critical
			}
			#Standard - different faith.
			triggered_desc = {
				trigger = {
					scope:ms_effect = flag:standard
					faith != scope:ms_faith
				}
				desc = fp1_yearly.1012.desc.different_faith.standard
			}
			#Critical - same faith.
			triggered_desc = {
				trigger = {
					scope:ms_effect = flag:critical
					faith = scope:ms_faith
				}
				desc = fp1_yearly.1012.desc.same_faith.critical
			}
			#Standard - same faith (fallback).
			desc = fp1_yearly.1012.desc.same_faith.standard
		}
	}
	theme = intrigue
	left_portrait = {
		character = scope:stranger
		#The missionary is pleased if they share your faith.
		triggered_animation = {
			trigger = {
				root = { faith = scope:ms_faith }
			}
			animation = happiness
		}
		#Otherwise, they'll pray for you.
		triggered_animation = {
			trigger = {
				NOT = {
					root = { faith = scope:ms_faith }
				}
			}
			animation = personality_zealous
		}
	}
	override_background = { reference = bedchamber }

	immediate = {
		scope:stranger = {
			#Boost education by a step.
			##Ordered backwards so that they don't sequentially overwrite each other.
			if = {
				limit = { has_trait = education_learning_3 }
				hidden_effect = { remove_trait = education_learning_3 }
				add_trait = education_learning_4
			}
			if = {
				limit = { has_trait = education_learning_2 }
				hidden_effect = { remove_trait = education_learning_2 }
				add_trait = education_learning_3
			}
			if = {
				limit = { has_trait = education_learning_1 }
				hidden_effect = { remove_trait = education_learning_1 }
				add_trait = education_learning_2
			}
			#Boost stats.
			add_diplomacy_skill = { 5 10 }
			add_martial_skill = { 5 10 }
			add_stewardship_skill = { 3 8 }
			add_intrigue_skill = { 5 10 }
			add_learning_skill = { 10 15 }
			add_prowess_skill = { 5 10 }
			add_trait = theologian
			#Change faith.
			hidden_effect = { set_character_faith = scope:ms_faith }
			#If scope:stranger's faith allows monks, make them a monk.
			if = {
				limit = {
					faith = { has_doctrine_parameter = take_vows_active }
				}
				add_trait = devoted
				#Huahua! Don't you see, they were wearing a toupee the whole time!
			}
			#Reveal the missionary's true stats.
			hidden_effect = { force_character_skill_recalculation = yes }
		}
		#Organise a list of courtiers who might be affected for conversion.
		mysterious_stranger_different_religion_convert_courtiers_effect = yes
		#The missionary does not share your faith.
		if = {
			limit = {
				faith != scope:ms_faith
			}
			#They convert a bunch of your courtiers.
			every_in_list = {
				list = possible_converts_specific_list
				custom = fp1_yearly.1012.possible_converts_specific_list
				set_character_faith = scope:ms_faith
			}
			#You also lose some piety, or realm priest opinion if appropriate. Amount depends on whether you endorsed the missionary or not.
			if = {
				limit = { scope:ms_effect = flag:critical }
				if = {
					limit = {
						faith = { has_doctrine = doctrine_theocracy_lay_clergy }
						#Double-check that they actually have a realm priest at the moment.
						any_learning_councillor = { exists = this }
					}
					add_piety = medium_piety_loss
					every_learning_councillor = {
						add_opinion = {
							target = root
							modifier = fp1_honoured_heathen_opinion
						}
					}
				}
				else = { add_piety = major_piety_loss }
			}
			else = { add_piety = medium_piety_loss }
		}
		#Otherwise, the missionary has the same faith as you.
		else = {
			#If endorsed, they offers you a hook on & opinion with your realm priest (assuming such is valid).
			if = {
				limit = {
					scope:ms_effect = flag:critical
					faith = { has_doctrine = doctrine_theocracy_lay_clergy }
					#Double-check that you actually have a realm priest, and that a weak hook can be added.
					any_learning_councillor = {
						exists = this
						save_temporary_scope_as = learning_councillor
						root = {
							can_add_hook = {
								type = favor_hook
								target = scope:learning_councillor
							}
						}
					}
				}
				random_learning_councillor = {
					limit = {
						can_add_hook = {
							type = favor_hook
							target = root
						}
					}
					save_temporary_scope_as = learning_councillor
					root = {
						add_hook = {
							type = favor_hook
							target = scope:learning_councillor
						}
					}
					add_opinion = {
						target = root
						modifier = impressed_opinion
						opinion = 30
					}
				}
				add_piety = medium_piety_gain
			}
			#Otherwise, they just offers you more piety when endorsed.
			else_if = {
				limit = { scope:ms_effect = flag:critical }
				add_piety = major_piety_gain
			}
			#Otherwise, you just get a bit of piety.
			else = { add_piety = medium_piety_gain }
		}
	}

	#Different faith: they offer to convert you, you accept.
	option = {
		name = fp1_yearly.1012.a
		trigger = {
			faith != scope:ms_faith
			#Block the AI from making stupid conversions.
			OR = {
				is_ai = no
				AND = {
					scope:ms_faith.fervor >= 30
					OR = {
						AND = {
							faith.fervor <= 25
							has_trait = cynical
						}
						AND = {
							faith.fervor <= 15
							NOT = { has_trait = zealous }
						}
						faith.fervor <= 5
					}
				}
			}
		}

		#Perform the conversion.
		set_character_faith_with_conversion = scope:ms_faith

		#Recoup lost piety, and get paid a little extra.
		custom_tooltip = fp1_yearly.1012.a.recoup_lost_piety.tt
		hidden_effect = {
			if = {
				limit = { scope:ms_effect = flag:critical }
				add_piety_no_experience = major_piety_gain
				#^Technically, you gain a little extra here if you have a theocratic faith, but adding another scripted trigger in just these two spots would make the event very hard to read.
			}
			else = { add_piety_no_experience = medium_piety_gain }
		}
		if = {
			limit = { scope:ms_effect = flag:critical }
			add_piety = medium_piety_gain
		}
		else = { add_piety = minor_piety_gain }

		stress_impact = {
			cynical = minor_stress_impact_loss
			zealous = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = -0.5
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = cynical
			}
			modifier = {	#Weight down for stress.
				add = -30
				has_trait = zealous
			}
		}
	}

	#Different faith: they offer to convert you, you turn them down, they leave.
	option = {
		name = fp1_yearly.1012.b
		trigger = {
			faith != scope:ms_faith
		}

		#The missionary vanishes.
		mysterious_stranger_disappears_effect = yes

		stress_impact = {
			forgiving = minor_stress_impact_loss
			cynical = minor_stress_impact_loss
			vengeful = minor_stress_impact_gain
			zealous = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = -0.5
				ai_vengefulness = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = forgiving
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = cynical
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = vengeful
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = zealous
			}
		}
	}

	#Different faith: they offer to convert you, you have them tossed in the dungeon.
	option = {
		name = fp1_yearly.1012.c
		trigger = {
			faith != scope:ms_faith
		}

		imprison = {
			target = scope:stranger
			type = dungeon
		}

		stress_impact = {
			vengeful = minor_stress_impact_loss
			zealous = medium_stress_impact_loss
			forgiving = minor_stress_impact_gain
			cynical = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = 0.25
				ai_vengefulness = 0.5
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = vengeful
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = zealous
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = forgiving
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = cynical
			}
		}
	}

	#Same faith: offers to stay, you accept.
	option = {
		name = fp1_yearly.1012.d
		trigger = { faith = scope:ms_faith }

		#Add the (rather chuffed) courtier to your court.
		add_courtier = scope:stranger
		reverse_add_opinion = {
			target = scope:stranger
			modifier = pleased_opinion
			opinion = 30
		}

		stress_impact = {
			trusting = minor_stress_impact_loss
			gregarious = minor_stress_impact_loss
			paranoid = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.5
				ai_zeal = 0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = trusting
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = paranoid
			}
		}
	}

	#Same faith: offers to stay, you decline.
	option = {
		name = fp1_yearly.1012.e
		trigger = { faith = scope:ms_faith}

		#The missionary vanishes.
		mysterious_stranger_disappears_effect = yes

		stress_impact = {
			paranoid = medium_stress_impact_loss
			gregarious = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = -0.25
				ai_rationality = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = paranoid
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = gregarious
			}
		}
	}
}

#	Results: Nithing.
fp1_yearly.1013 = {
	type = character_event
	title = fp1_yearly.1013.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = { scope:ms_effect = flag:critical }
				desc = fp1_yearly.1013.desc.critical
			}
			desc = fp1_yearly.1013.desc.standard
		}
		first_valid = {
			triggered_desc = {
				trigger = {
					scope:stranger = { has_trait = sodomite }
				}
				desc = fp1_yearly.1013.desc.outro.sodomite
			}
			desc = fp1_yearly.1013.desc.outro
		}
	}
	theme = intrigue
	left_portrait = {
		character = scope:stranger
		triggered_animation = {
			trigger = {
				scope:stranger = { has_trait = sodomite }
			}
			animation = stress
		}
		triggered_animation = {
			trigger = {
				NOT = {
					scope:stranger = { has_trait = sodomite }
				}
			}
			animation = schadenfreude
		}
	}
	override_background = { reference = study }

	immediate = {
		scope:stranger = {
			#Boost education by two steps.
			if = {
				limit = { has_trait = education_martial_1 }
				hidden_effect = { remove_trait = education_martial_1 }
				add_trait = education_martial_3
			}
			if = {
				limit = { has_trait = education_intrigue_1 }
				hidden_effect = { remove_trait = education_intrigue_1 }
				add_trait = education_intrigue_3
			}
			#Boost stats.
			add_diplomacy_skill = { 3 5 }
			add_martial_skill = { 8 12 }
			add_stewardship_skill = { 3 5 }
			add_intrigue_skill = { 8 12 }
			add_learning_skill = { 3 5 }
			add_prowess_skill = { 5 10 }
			#Add nithing things.
			nithing_character_creation_scripted_effect = yes
			#Give them a suitable crime.
			random_list = {
				65 = { add_trait = murderer }
				25 = {
					trigger = {
						faith = { has_doctrine_parameter = witchcraft_illegal }
					}
					add_trait = witch
				}
				10 = {
					trigger = {
						is_male = yes
						faith = { has_doctrine = doctrine_homosexuality_crime }
					}
					add_trait = sodomite
				}
			}
			#Reveal the nithing's true stats.
			hidden_effect = { force_character_skill_recalculation = yes }
		}
		#The nithing robs you, with a harsher effect if you endorsed them!
		if = {
			limit = { scope:ms_effect = flag:critical }
			save_scope_value_as = {
				name = nithing_stolen_loot
				value = massive_gold_value
			}
		}
		else = {
			save_scope_value_as = {
				name = nithing_stolen_loot
				value = major_gold_value
			}
		}
		remove_short_term_gold = scope:nithing_stolen_loot
	}

	#Curses!
	option = {
		name = {
			trigger = {
				NOT = {
					scope:stranger = { has_trait = sodomite }
				}
			}
			text = fp1_yearly.1013.a
		}
		name = {
			trigger = {
				scope:stranger = { has_trait = sodomite }
			}
			text = fp1_yearly.1013.a.sodomite
		}

		#The nithing vanishes.
		mysterious_stranger_disappears_effect = yes

		#No stress: the player has just eaten a nasty result.
		ai_chance = {
			#Only option.
			base = 100
		}
	}

	#I will not rest till that nithing is found! (rage outlet for angry players)
	option = {
		name = fp1_yearly.1013.b
		trigger = { is_ai = no }

		#Make the nithing a wanted individual.
		scope:stranger = {
			#The nithing runs for it.
			hidden_effect = {
				move_to_pool = yes
				# And give them their ill-gotten earnings.
				## We do this here so that their dying doesn't just give you or anyone else the cash back otherwise.
				add_gold = scope:nithing_stolen_loot
			}
			#But they've made a powerful enemy!
			set_relation_rival = {
				target = root
				reason = rival_nithing
			}
		}


		stress_impact = {
			#Minor penalty for RP reasons: we've already given the player a hefty negative, no need to pile on.
			forgiving = minor_stress_impact_loss
			vengeful = major_stress_impact_loss
		}
		ai_chance = {
			#Irrelevant option.
			base = 100
		}
	}
}

#	Results: Warrior.
fp1_yearly.1014 = {
	type = character_event
	title = fp1_yearly.1014.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = { scope:ms_effect = flag:critical }
				desc = fp1_yearly.1014.desc.critical
			}
			desc = fp1_yearly.1014.desc.standard
		}
		desc = fp1_yearly.1014.desc.outro
	}
	theme = intrigue
	left_portrait = {
		character = scope:stranger
		animation = personality_bold
	}
	override_background = { reference = corridor_night }

	immediate = {
		#If they were endorsed, the warrior gets better stats than they would otherwise.
		if = {
			limit = { scope:ms_effect = flag:critical }
			scope:stranger = {
				#Boost education by two steps.
				if = {
					limit = { has_trait = education_martial_1 }
					hidden_effect = { remove_trait = education_martial_1 }
					add_trait = education_martial_3
				}
				if = {
					limit = { has_trait = education_intrigue_1 }
					hidden_effect = { remove_trait = education_intrigue_1 }
					add_trait = education_intrigue_3
				}
				#Boost stats.
				add_diplomacy_skill = { 3 5 }
				add_martial_skill = { 10 12 }
				add_stewardship_skill = { 3 5 }
				add_intrigue_skill = { 3 5 }
				add_learning_skill = { 3 5 }
				add_prowess_skill = { 14 18 }
				#Give him a reputation.
				add_prestige_level = 2
				#Slight chance to add an additional trait or two.
				random_list = {
					25 = {
						trigger = { exists = title:e_byzantium.holder }
						add_trait = varangian
					}
					25 = { add_trait = berserker }
					25 = { add_trait = physique_good_2 }
					25 = {
						add_trait = lifestyle_blademaster
						add_trait_xp = {
			                trait = lifestyle_blademaster
			                value = {
			                    integer_range = {
			                        min = medium_lifestyle_random_xp_low
			                        max = medium_lifestyle_random_xp_high
								}
			                }
			            }
			        }
				}
				#Reveal the warrior's true stats.
				hidden_effect = { force_character_skill_recalculation = yes }
			}
		}
		else = {
			scope:stranger = {
				#Boost education by one step.
				if = {
					limit = { has_trait = education_martial_1 }
					hidden_effect = { remove_trait = education_martial_1 }
					add_trait = education_martial_2
				}
				if = {
					limit = { has_trait = education_intrigue_1 }
					hidden_effect = { remove_trait = education_intrigue_1 }
					add_trait = education_intrigue_2
				}
				#Boost stats.
				add_diplomacy_skill = { 3 5 }
				add_martial_skill = { 5 10 }
				add_stewardship_skill = { 3 5 }
				add_intrigue_skill = { 3 5 }
				add_learning_skill = { 3 5 }
				add_prowess_skill = { 8 12 }
				#Slight chance to add an additional trait or two.
				random_list = {
					50 = {}
					12 = {
						trigger = { exists = title:e_byzantium.holder }
						add_trait = varangian
					}
					12 = { add_trait = berserker }
					12 = { add_trait = physique_good_1 }
					14 = {
						add_trait = lifestyle_blademaster
						add_trait_xp = {
			                trait = lifestyle_blademaster
			                value = {
			                    integer_range = {
			                        min = small_lifestyle_random_xp_low
			                        max = small_lifestyle_random_xp_high
								}
			                }
			            }
					}
				}
				#Reveal the warrior's true stats.
				hidden_effect = { force_character_skill_recalculation = yes }
			}
		}
	}

	#I'll certainly hire you!
	option = {
		name = fp1_yearly.1014.a

		#Gain the warrior, who is also pretty happy to be here.
		add_courtier = scope:stranger
		reverse_add_opinion = {
			target = scope:stranger
			modifier = loyal_servant
		}

		#And pay the price.
		if = {
			limit = { scope:ms_effect = flag:critical }
			remove_short_term_gold = medium_gold_value
		}
		else = { remove_short_term_gold = minor_gold_value }

		stress_impact = {
			gregarious = minor_stress_impact_loss
			greedy = medium_stress_impact_gain
		}
		ai_chance = {
			#Always a no if the AI can't afford the warrior.
			base = -1000
			ai_value_modifier = {
				ai_sociability = 0.5
				ai_greed = -0.5
			}
			#Enable option for the AI if they've the gold to spare.
			modifier = {
				add = 1000
				scope:ms_effect = flag:critical
				short_term_gold >= medium_gold_value
			}
			modifier = {
				add = 1000
				scope:ms_effect = flag:standard
				short_term_gold >= minor_gold_value
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = greedy
			}
		}
	}

	#Pass. Move along, Conan.
	option = {
		name = fp1_yearly.1014.b

		#The warrior vanishes.
		mysterious_stranger_disappears_effect = yes

		#Have some mild consolation prestige
		add_prestige = minor_prestige_gain

		stress_impact = {
			greedy = minor_stress_impact_loss
			gregarious = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 0.5
				ai_sociability = -0.5
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = greedy
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = gregarious
			}
		}
	}
}

#	Results: Vagrant.
fp1_yearly.1015 = {
	type = character_event
	title = fp1_yearly.1015.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = { scope:ms_effect = flag:critical }
				desc = fp1_yearly.1015.desc.critical
			}
			desc = fp1_yearly.1015.desc.standard
		}
		desc = fp1_yearly.1015.desc.outro
	}
	theme = intrigue
	#The vagrant's reaction varies a bit depending on your treatment of them.
	left_portrait = {
		character = scope:stranger
		triggered_animation = {
			trigger = { scope:ms_effect = flag:critical }
			animation = ecstasy
		}
		triggered_animation = {
			trigger = { scope:ms_effect = flag:standard }
			animation = happiness
		}
	}
	override_background = { reference = corridor_night }

	immediate = {
		#Vagrants get no stat reveal, as they genuinely suck.
		#Lose a bit of prestige for letting them hang around so long, losing more if you endorsed them.
		if = {
			limit = { scope:ms_effect = flag:critical }
			add_prestige = medium_prestige_loss
		}
		else = { add_prestige = minor_prestige_loss }
	}

	#Eh, I guess you can stay here.
	option = {
		name = fp1_yearly.1015.a

		#You gain the vagrant as a courtier
		add_courtier = scope:stranger
		#And a hook on them: weak if you didn't endorse them, strong if you did.
		if = {
			limit = { scope:ms_effect = flag:critical }
			add_hook = {
				type = loyalty_hook
				target = scope:stranger
			}
		}
		else = {
			add_hook = {
				type = favor_hook
				target = scope:stranger
				years = 50	#You did literally scoop them up off the streets. They won't soon forget that.
			}
		}
		#Either way, they think more of you for it.
		reverse_add_opinion = {
			target = scope:stranger
			modifier = loyal_servant
		}

		stress_impact = {
			gregarious = minor_stress_impact_loss
			humble = medium_stress_impact_loss
			shy = minor_stress_impact_gain
			arrogant = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.5
				ai_compassion = 0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = gregarious
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = humble
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = shy
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = arrogant
			}
		}
	}

	#What?! Get out!
	option = {
		name = fp1_yearly.1015.b

		#The vagrant vanishes.
		mysterious_stranger_disappears_effect = yes

		stress_impact = {
			shy = minor_stress_impact_loss
			arrogant = medium_stress_impact_loss
			gregarious = minor_stress_impact_gain
			humble = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = -0.5
				ai_compassion = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = shy
			}
			modifier = {	#Weight up for stress.
				add = 20
				has_trait = arrogant
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = gregarious
			}
			modifier = {	#Weight down for stress.
				add = -20
				has_trait = humble
			}
		}
	}
}

# Big RIP to fp1_yearly.1031 through fp1_yearly.1061: it would have been the greatest and bestest event chain ever, but alas, it has been cut, and now no one shall know of its grandeur. It was too beautiful for this world.

##################################################
# Commissioning a Longship for a Funeral
# by Ewan Cowhig Croft
# 1061 - 1070
##################################################

scripted_trigger fp1_funeral_longship_generic_mourner_trigger = {
	is_landed = yes
	is_available_even_at_war_adult = yes
	NOT = { has_character_flag = had_event_fp1_yearly_1062 }
	faith = root.faith
	NOR = {
		any_relation = {
			type = rival
			this = root
		}
		AND = {
			is_ai = yes
			opinion = {
				target = root
				value >= low_negative_opinion
			}
		}
	}
}

scripted_trigger fp1_funeral_longship_likes_parties = {
	has_trait = lifestyle_reveler
	has_trait_xp = {
		trait = lifestyle_reveler
		value >= 100
	}
	# Faith must not consider this a bad thing.
	faith = {
		NOT = { trait_is_virtue = shy }
	}
}

scripted_trigger fp1_funeral_longship_likes_duels = {
	has_trait = lifestyle_blademaster
	has_trait_xp = {
		trait = lifestyle_blademaster
		value >= 100
	}
	# Faith must not consider this a bad thing.
	faith = {
		NOT = { has_doctrine_parameter = holy_wars_forbidden }
	}
}

scripted_trigger fp1_funeral_longship_likes_hunting = {
	hunt_lifestyle_track_greater_equal_trigger = { TRACK = hunter GREATER_EQUAL = 100 }
	# Faith must not consider this a bad thing.
	faith = {
		NOT = { has_doctrine_parameter = holy_wars_forbidden }
	}
}

scripted_trigger fp1_funeral_longship_likes_magic = {
	has_trait = lifestyle_mystic
	has_trait_xp = {
		trait = lifestyle_mystic
		value >= 100
	}
	# Faith must consider this an actively good thing (since Norse paganism's complicated relationship with witchcraft _tended_ towards the negative).
	faith = { has_doctrine_parameter = witchcraft_accepted }
}


#	The family member is earmarked.
fp1_yearly.1061 = {
	hidden = yes

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Germanic faith.
		religion = religion:germanic_religion
		# Shouldn't ever happen, but just in case, exempt sky burials so that the character is never buried twice.
		NOT = {
			faith = { has_doctrine_parameter = sky_burials_active }
		}
		# And we shouldn't really be erecting glorious mounds to long lives that were actually cut short too early.
		age >= 30
		# Must be significant in some way.
		OR = {
			highest_held_title_tier >= tier_duchy
			piety_level >= high_prestige_level
			prestige_level >= high_piety_level
			# Monarch of Parties.
			fp1_funeral_longship_likes_parties = yes
			# Monarch of Duels.
			fp1_funeral_longship_likes_duels = yes
			# Monarch of Hunting.
			fp1_funeral_longship_likes_hunting = yes
			# Monarch of Magic.
			fp1_funeral_longship_likes_magic = yes
		}
		# With a landed player heir of at least duchy tier, or close family, a soulmate, or best friend who's the same.
		OR = {
			player_heir ?= { fp1_funeral_longship_generic_mourner_trigger = yes }
			any_close_family_member = { fp1_funeral_longship_generic_mourner_trigger = yes }
			any_relation = {
				type = soulmate
				fp1_funeral_longship_generic_mourner_trigger = yes
			}
			any_relation = {
				type = best_friend
				fp1_funeral_longship_generic_mourner_trigger = yes
			}
		}
	}

	immediate = {
		save_scope_as = ship_funeral_candidate
		# Determine why they were a big deal.
		## First check their title tier.
		if = {
			limit = { highest_held_title_tier = tier_duchy }
			save_scope_value_as = {
				name = reason_title
				value = flag:duchy
			}
		}
		else_if = {
			limit = { highest_held_title_tier = tier_kingdom }
			save_scope_value_as = {
				name = reason_title
				value = flag:kingdom
			}
		}
		else_if = {
			limit = { highest_held_title_tier = tier_empire }
			save_scope_value_as = {
				name = reason_title
				value = flag:empire
			}
		}
		## Then look at their prestige/piety levels.
		if = {
			limit = { prestige_level = high_prestige_level }
			save_scope_value_as = {
				name = reason_prestige
				value = flag:high
			}
		}
		else_if = {
			limit = { prestige_level = very_high_prestige_level }
			save_scope_value_as = {
				name = reason_prestige
				value = flag:very_high
			}
		}
		else_if = {
			limit = { prestige_level >= max_prestige_level }
			save_scope_value_as = {
				name = reason_prestige
				value = flag:max
			}
		}
		if = {
			limit = { prestige_level = high_prestige_level }
			save_scope_value_as = {
				name = reason_piety
				value = flag:high
			}
		}
		else_if = {
			limit = { prestige_level = very_high_prestige_level }
			save_scope_value_as = {
				name = reason_piety
				value = flag:very_high
			}
		}
		else_if = {
			limit = { prestige_level >= max_prestige_level }
			save_scope_value_as = {
				name = reason_piety
				value = flag:max
			}
		}
		## And finally their aptness at certain lifestyles.
		### Partying.
		if = {
			limit = { fp1_funeral_longship_likes_parties = yes }
			save_scope_value_as = {
				name = reason_lifestyle_partying
				value = yes
			}
		}
		### Hunting.
		if = {
			limit = { fp1_funeral_longship_likes_duels = yes }
			save_scope_value_as = {
				name = reason_lifestyle_duelling
				value = yes
			}
		}
		### Duels.
		if = {
			limit = { fp1_funeral_longship_likes_hunting = yes }
			save_scope_value_as = {
				name = reason_lifestyle_hunting
				value = yes
			}
		}
		### Magic.
		if = {
			limit = { fp1_funeral_longship_likes_magic = yes }
			save_scope_value_as = {
				name = reason_lifestyle_magickerationing
				value = yes
			}
		}
		# Next, determine who gets to hold the funeral.
		## First, we compile a list.
		if = {
			limit = {
				player_heir ?= { fp1_funeral_longship_generic_mourner_trigger = yes }
			}
			player_heir = { add_to_list = potential_mourners_list }
		}
		every_close_family_member = {
			limit = { fp1_funeral_longship_generic_mourner_trigger = yes }
			add_to_list = potential_mourners_list
		}
		every_relation = {
			type = soulmate
			limit = { fp1_funeral_longship_generic_mourner_trigger = yes }
			add_to_list = potential_mourners_list
		}
		every_relation = {
			type = best_friend
			limit = { fp1_funeral_longship_generic_mourner_trigger = yes }
			add_to_list = potential_mourners_list
		}
		## Then, we grab the person in the list with the most direct connection, preferring player heirs, levelled relationships, then close family, in that order. Players get a generic boost up this list.
		ordered_in_list = {
			list = potential_mourners_list
			order_by = { value = fp1_funeral_longship_preferred_mourner_value }
			save_scope_as = mourner
		}
		# Finally, fire an event for scope:mourner to inform them that a ship burial is available.
		if = {
			limit = { exists = scope:mourner }
			scope:mourner = {
				# Set the used character flag here rather than later, so that scope:mourner doesn't queue up multiple ship funerals due to a wave of sudden bereavements.
				add_character_flag = {
					flag = had_event_fp1_yearly_1062
					days = 7300
				}
				trigger_event = {
					id = fp1_yearly.1062
					months = 2
				}
			}
		}
	}
}

#	Inform scope:mourner of a valid ship burial.
fp1_yearly.1062 = {
	type = character_event
	title = fp1_yearly.1062.t
	desc = fp1_yearly.1062.desc
	theme = death
	left_portrait = {
		character = scope:mourner
		animation = sadness
	}
	right_portrait = {
		character = scope:ship_funeral_candidate
		animation = personality_zealous
	}
	override_background = { reference = temple }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		# Must still be the same faith as scope:ship_funeral_candidate, for ease of loc and such.
		faith = scope:ship_funeral_candidate.faith
	}

	# A small stone ship.
	option = {
		name = fp1_yearly.1062.a
		trigger = {
			can_make_expensive_purchase_trigger = { PRICE = medium_gold_value }
		}

		# Remove the appropriate amount of coin.
		set_variable = {
			name = ship_burial_reimbursement
			value = medium_gold_value
		}
		remove_short_term_gold = medium_gold_value
		# Set up the ship burial type scope.
		save_scope_value_as = {
			name = burial_type
			value = flag:stone_small
		}
		# Inform & trigger next event.
		custom_tooltip = fp1_yearly.1062.a.tt
		trigger_event = {
			id = fp1_yearly.1063
			months = 2
		}

		stress_impact = {
			generous = minor_stress_impact_loss
			greedy = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = 0.25
				ai_greed = -0.25
				ai_boldness = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = generous
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = greedy
			}
		}
	}

	# A grand stone ship.
	option = {
		name = fp1_yearly.1062.b
		trigger = {
			can_make_expensive_purchase_trigger = { PRICE = major_gold_value }
		}

		# Remove the appropriate amount of coin.
		set_variable = {
			name = ship_burial_reimbursement
			value = major_gold_value
		}
		remove_short_term_gold = major_gold_value
		# Set up the ship burial type scope.
		save_scope_value_as = {
			name = burial_type
			value = flag:stone_grand
		}
		# Inform & trigger next event.
		custom_tooltip = fp1_yearly.1062.a.tt
		trigger_event = {
			id = fp1_yearly.1063
			months = 2
		}

		stress_impact = {
			generous = medium_stress_impact_loss
			greedy = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.25
				ai_boldness = 0.25
				ai_zeal = 0.25
				ai_greed = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = generous
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = greedy
			}
		}
	}

	# An purpose-built ornate grave ship.
	option = {
		name = fp1_yearly.1062.c
		trigger = {
			can_make_expensive_purchase_trigger = { PRICE = massive_gold_value }
		}

		# Remove the appropriate amount of coin.
		set_variable = {
			name = ship_burial_reimbursement
			value = massive_gold_value
		}
		remove_treasury_or_gold = massive_treasury_or_gold_value
		# Set up the ship burial type scope.
		save_scope_value_as = {
			name = burial_type
			value = flag:wooden_ornate
		}
		# Inform & trigger next event.
		custom_tooltip = fp1_yearly.1062.a.tt
		trigger_event = {
			id = fp1_yearly.1063
			months = 2
		}

		stress_impact = {
			generous = major_stress_impact_loss
			greedy = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_zeal = 0.5
				ai_greed = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = generous
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = greedy
			}
		}
	}

	# This is all *outrageously* expensive.
	option = {
		name = fp1_yearly.1062.d

		# Lose prestige if you're related to scope:ship_funeral_candidate.
		if = {
			limit = {
				OR = {
					scope:ship_funeral_candidate.dynasty = scope:mourner.dynasty
					scope:ship_funeral_candidate = { is_close_family_of = scope:mourner }
				}
			}
			add_prestige = medium_prestige_loss
			stress_impact = {
				greedy = medium_stress_impact_loss
				generous = medium_stress_impact_gain
			}
		}
		# Else, take a stress hit.
		else = {
			stress_impact = {
				base = medium_stress_gain
				greedy = medium_stress_impact_loss
				generous = medium_stress_impact_gain
			}
		}

		# Stress_impact handled in above if statements.
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 0.5
				ai_boldness = -0.25
				ai_zeal = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = generous
			}
		}
	}
}

scripted_effect fp1_funeral_longship_clear_variables_effect = {
	remove_variable = candidate_achievement_count
	remove_variable = ship_burial_reimbursement
}

fp1_yearly.1063 = {
	type = character_event
	title = fp1_yearly.1063.t
	desc = {
		desc = fp1_yearly.1063.desc.intro
		# Notable features of scop:ship_burial_candidate block.
		## Single achievement.
		triggered_desc = {
			trigger = { var:candidate_achievement_count = 1 }
			desc = {
				desc = fp1_yearly.1063.desc.achievements.single.intro
				first_valid = {
					# Title tier.
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:duchy
						}
						desc = fp1_yearly.1063.desc.achievements.title.duchy
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:kingdom
						}
						desc = fp1_yearly.1063.desc.achievements.title.kingdom
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:empire
						}
						desc = fp1_yearly.1063.desc.achievements.title.empire
					}
					# Prestige level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:high
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:very_high
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:max
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.max
					}
					# Piety level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:high
						}
						desc = fp1_yearly.1063.desc.achievements.piety.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:very_high
						}
						desc = fp1_yearly.1063.desc.achievements.piety.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:max
						}
						desc = fp1_yearly.1063.desc.achievements.piety.max
					}
					# Lifestyles.
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_partying }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.partying
					}
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_duelling }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.duelling
					}
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_hunting }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.hunting
					}
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_magickerationing }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.magickerationing
					}
				}
				desc = fp1_yearly.1063.desc.achievements.single.outro
			}
		}
		## Two achievements.
		triggered_desc = {
			trigger = { var:candidate_achievement_count = 2 }
			desc = {
				desc = fp1_yearly.1063.desc.achievements.double.intro
				first_valid = {
					# Title tier.
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:duchy
						}
						desc = fp1_yearly.1063.desc.achievements.title.duchy
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:kingdom
						}
						desc = fp1_yearly.1063.desc.achievements.title.kingdom
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:empire
						}
						desc = fp1_yearly.1063.desc.achievements.title.empire
					}
					# Prestige level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:high
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:very_high
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:max
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.max
					}
					# Piety level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:high
						}
						desc = fp1_yearly.1063.desc.achievements.piety.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:very_high
						}
						desc = fp1_yearly.1063.desc.achievements.piety.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:max
						}
						desc = fp1_yearly.1063.desc.achievements.piety.max
					}
					# Lifestyles.
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_partying }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.partying
					}
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_duelling }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.duelling
					}
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_hunting }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.hunting
					}
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_magickerationing }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.magickerationing
					}
				}
				desc = fp1_yearly.1063.desc.achievements.double.connector
				first_valid = {
					# Title tier.
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:duchy
							NOT = { scope:primary_reason = flag:reason_title }
						}
						desc = fp1_yearly.1063.desc.achievements.title.duchy
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:kingdom
							NOT = { scope:primary_reason = flag:reason_title }
						}
						desc = fp1_yearly.1063.desc.achievements.title.kingdom
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:empire
							NOT = { scope:primary_reason = flag:reason_title }
						}
						desc = fp1_yearly.1063.desc.achievements.title.empire
					}
					# Prestige level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:high
							NOT = { scope:primary_reason = flag:reason_prestige }
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:very_high
							NOT = { scope:primary_reason = flag:reason_prestige }
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:max
							NOT = { scope:primary_reason = flag:reason_prestige }
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.max
					}
					# Piety level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:high
							NOT = { scope:primary_reason = flag:reason_piety }
						}
						desc = fp1_yearly.1063.desc.achievements.piety.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:very_high
							NOT = { scope:primary_reason = flag:reason_piety }
						}
						desc = fp1_yearly.1063.desc.achievements.piety.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:max
							NOT = { scope:primary_reason = flag:reason_piety }
						}
						desc = fp1_yearly.1063.desc.achievements.piety.max
					}
					# Lifestyles.
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_partying
							NOT = { scope:primary_reason = flag:reason_partying }
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.partying
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_duelling
							NOT = { scope:primary_reason = flag:reason_duelling }
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.duelling
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_hunting
							NOT = { scope:primary_reason = flag:reason_hunting }
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.hunting
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_magickerationing
							NOT = { scope:primary_reason = flag:reason_magickerationing }
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.magickerationing
					}
				}
				desc = fp1_yearly.1063.desc.achievements.double.outro
			}
		}
		## Three or more achievements.
		triggered_desc = {
			trigger = { var:candidate_achievement_count >= 3 }
			desc = {
				desc = fp1_yearly.1063.desc.achievements.triple.intro
				first_valid = {
					# Title tier.
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:duchy
						}
						desc = fp1_yearly.1063.desc.achievements.title.duchy
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:kingdom
						}
						desc = fp1_yearly.1063.desc.achievements.title.kingdom
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:empire
						}
						desc = fp1_yearly.1063.desc.achievements.title.empire
					}
					# Prestige level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:high
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:very_high
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:max
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.max
					}
					# Piety level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:high
						}
						desc = fp1_yearly.1063.desc.achievements.piety.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:very_high
						}
						desc = fp1_yearly.1063.desc.achievements.piety.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:max
						}
						desc = fp1_yearly.1063.desc.achievements.piety.max
					}
					# Lifestyles.
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_partying }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.partying
					}
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_duelling }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.duelling
					}
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_hunting }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.hunting
					}
					triggered_desc = {
						trigger = { exists = scope:reason_lifestyle_magickerationing }
						desc = fp1_yearly.1063.desc.achievements.lifestyles.magickerationing
					}
				}
				first_valid = {
					# Title tier.
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:duchy
							NOT = { scope:primary_reason = flag:reason_title }
						}
						desc = fp1_yearly.1063.desc.achievements.title.duchy
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:kingdom
							NOT = { scope:primary_reason = flag:reason_title }
						}
						desc = fp1_yearly.1063.desc.achievements.title.kingdom
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:empire
							NOT = { scope:primary_reason = flag:reason_title }
						}
						desc = fp1_yearly.1063.desc.achievements.title.empire
					}
					# Prestige level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:high
							NOT = { scope:primary_reason = flag:reason_prestige }
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:very_high
							NOT = { scope:primary_reason = flag:reason_prestige }
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:max
							NOT = { scope:primary_reason = flag:reason_prestige }
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.max
					}
					# Piety level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:high
							NOT = { scope:primary_reason = flag:reason_piety }
						}
						desc = fp1_yearly.1063.desc.achievements.piety.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:very_high
							NOT = { scope:primary_reason = flag:reason_piety }
						}
						desc = fp1_yearly.1063.desc.achievements.piety.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:max
							NOT = { scope:primary_reason = flag:reason_piety }
						}
						desc = fp1_yearly.1063.desc.achievements.piety.max
					}
					# Lifestyles.
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_partying
							NOT = { scope:primary_reason = flag:reason_partying }
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.partying
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_duelling
							NOT = { scope:primary_reason = flag:reason_duelling }
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.duelling
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_hunting
							NOT = { scope:primary_reason = flag:reason_hunting }
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.hunting
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_magickerationing
							NOT = { scope:primary_reason = flag:reason_magickerationing }
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.magickerationing
					}
				}
				desc = fp1_yearly.1063.desc.achievements.triple.connector
				first_valid = {
					# Title tier.
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:duchy
							NOR = {
								scope:primary_reason = flag:reason_title
								scope:secondary_reason = flag:reason_title
							}
						}
						desc = fp1_yearly.1063.desc.achievements.title.duchy
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:kingdom
							NOR = {
								scope:primary_reason = flag:reason_title
								scope:secondary_reason = flag:reason_title
							}
						}
						desc = fp1_yearly.1063.desc.achievements.title.kingdom
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_title
							scope:reason_title = flag:empire
							NOR = {
								scope:primary_reason = flag:reason_title
								scope:secondary_reason = flag:reason_title
							}
						}
						desc = fp1_yearly.1063.desc.achievements.title.empire
					}
					# Prestige level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:high
							NOR = {
								scope:primary_reason = flag:reason_prestige
								scope:secondary_reason = flag:reason_prestige
							}
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:very_high
							NOR = {
								scope:primary_reason = flag:reason_prestige
								scope:secondary_reason = flag:reason_prestige
							}
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_prestige
							scope:reason_prestige = flag:max
							NOR = {
								scope:primary_reason = flag:reason_prestige
								scope:secondary_reason = flag:reason_prestige
							}
						}
						desc = fp1_yearly.1063.desc.achievements.prestige.max
					}
					# Piety level.
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:high
							NOR = {
								scope:primary_reason = flag:reason_piety
								scope:secondary_reason = flag:reason_piety
							}
						}
						desc = fp1_yearly.1063.desc.achievements.piety.high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:very_high
							NOR = {
								scope:primary_reason = flag:reason_piety
								scope:secondary_reason = flag:reason_piety
							}
						}
						desc = fp1_yearly.1063.desc.achievements.piety.very_high
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_piety
							scope:reason_piety = flag:max
							NOR = {
								scope:primary_reason = flag:reason_piety
								scope:secondary_reason = flag:reason_piety
							}
						}
						desc = fp1_yearly.1063.desc.achievements.piety.max
					}
					# Lifestyles.
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_partying
							NOR = {
								scope:primary_reason = flag:reason_partying
								scope:secondary_reason = flag:reason_partying
							}
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.partying
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_duelling
							NOR = {
								scope:primary_reason = flag:reason_duelling
								scope:secondary_reason = flag:reason_duelling
							}
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.duelling
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_hunting
							NOR = {
								scope:primary_reason = flag:reason_hunting
								scope:secondary_reason = flag:reason_hunting
							}
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.hunting
					}
					triggered_desc = {
						trigger = {
							exists = scope:reason_lifestyle_magickerationing
							NOR = {
								scope:primary_reason = flag:reason_magickerationing
								scope:secondary_reason = flag:reason_magickerationing
							}
						}
						desc = fp1_yearly.1063.desc.achievements.lifestyles.magickerationing
					}
				}
				desc = fp1_yearly.1063.desc.achievements.triple.outro
			}
		}
		# Burial type block.
		## Small stone ship.
		triggered_desc = {
			trigger = { scope:burial_type = flag:stone_small }
			desc = fp1_yearly.1063.desc.ship_stone_small
		}
		## Grand stone ship.
		triggered_desc = {
			trigger = { scope:burial_type = flag:stone_grand }
			desc = fp1_yearly.1063.desc.ship_stone_grand
		}
		## Ornate wooden ship.
		triggered_desc = {
			trigger = { scope:burial_type = flag:wooden_ornate }
			desc = fp1_yearly.1063.desc.ship_wood_ornate
		}
		desc = fp1_yearly.1063.desc.outro
	}
	theme = death
	left_portrait = {
		character = scope:mourner
		animation = grief
	}
	right_portrait = {
		character = scope:ship_funeral_candidate
		animation = sadness
	}
	override_background = { reference = temple }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_even_at_war_adult = yes
		# Must still be the same faith as scope:ship_funeral_candidate, for ease of loc and such.
		faith = scope:ship_funeral_candidate.faith
	}

	on_trigger_fail = {
		# Return invested monies.
		send_interface_toast = {
			title = fp1_yearly.1063.trigger_failure.tt
			left_icon = scope:ship_funeral_candidate
			add_gold = var:ship_burial_reimbursement
		}
		# Clear up variables.
		fp1_funeral_longship_clear_variables_effect = yes
	}

	immediate = {
		# Work out how many achievements scope:ship_funeral_candidate actually had.
		set_variable = {
			name = candidate_achievement_count
			value = 0
		}
		## First, tier.
		if = {
			limit = { exists = scope:reason_title }
			change_variable = {
				name = candidate_achievement_count
				add = 1
			}
		}
		## Then, prestige.
		if = {
			limit = { exists = scope:reason_prestige }
			change_variable = {
				name = candidate_achievement_count
				add = 1
			}
		}
		## Next, piety.
		if = {
			limit = { exists = scope:reason_piety }
			change_variable = {
				name = candidate_achievement_count
				add = 1
			}
		}
		## Finally, lifestyles.
		if = {
			limit = { exists = scope:reason_lifestyle_partying }
			change_variable = {
				name = candidate_achievement_count
				add = 1
			}
		}
		if = {
			limit = { exists = scope:reason_lifestyle_duelling }
			change_variable = {
				name = candidate_achievement_count
				add = 1
			}
		}
		if = {
			limit = { exists = scope:reason_lifestyle_hunting }
			change_variable = {
				name = candidate_achievement_count
				add = 1
			}
		}
		if = {
			limit = { exists = scope:reason_lifestyle_magickerationing }
			change_variable = {
				name = candidate_achievement_count
				add = 1
			}
		}
		# Flag reasons so that they don't repeat; due to variable issues, we just calc this every time.
		# Primary reason.
		## comment_folder = {
			# Cycle through tier.
			if = {
				limit = { exists = scope:reason_title }
				save_scope_value_as = {
					name = primary_reason
					value = flag:reason_title
				}
			}
			# Then prestige.
			else_if = {
				limit = { exists = scope:reason_prestige }
				save_scope_value_as = {
					name = primary_reason
					value = flag:reason_prestige
				}
			}
			# Piety.
			else_if = {
				limit = { exists = scope:reason_piety }
				save_scope_value_as = {
					name = primary_reason
					value = flag:reason_piety
				}
			}
			# And lifestyles.
			else_if = {
				limit = { exists = scope:reason_lifestyle_partying }
				save_scope_value_as = {
					name = primary_reason
					value = flag:reason_partying
				}
			}
			else_if = {
				limit = { exists = scope:reason_lifestyle_duelling }
				save_scope_value_as = {
					name = primary_reason
					value = flag:reason_duelling
				}
			}
			else_if = {
				limit = { exists = scope:reason_lifestyle_hunting }
				save_scope_value_as = {
					name = primary_reason
					value = flag:reason_hunting
				}
			}
			else_if = {
				limit = { exists = scope:reason_lifestyle_magickerationing }
				save_scope_value_as = {
					name = primary_reason
					value = flag:reason_magickerationing
				}
			}
		##}
		# Secondary reason.
		## Comment folder for easy organisation = {
			# Cycle through tier.
			if = {
				limit = {
					exists = scope:reason_title
					NOT = { scope:primary_reason = flag:reason_title }
				}
				save_scope_value_as = {
					name = secondary_reason
					value = flag:reason_title
				}
			}
			# Then prestige.
			else_if = {
				limit = {
					exists = scope:reason_prestige
					NOT = { scope:primary_reason = flag:reason_prestige }
				}
				save_scope_value_as = {
					name = secondary_reason
					value = flag:reason_prestige
				}
			}
			# Piety.
			else_if = {
				limit = {
					exists = scope:reason_piety
					NOT = { scope:primary_reason = flag:reason_piety }
				}
				save_scope_value_as = {
					name = secondary_reason
					value = flag:reason_piety
				}
			}
			# And lifestyles.
			else_if = {
				limit = {
					exists = scope:reason_lifestyle_partying
					NOT = { scope:primary_reason = flag:reason_partying }
				}
				save_scope_value_as = {
					name = secondary_reason
					value = flag:reason_partying
				}
			}
			else_if = {
				limit = {
					exists = scope:reason_lifestyle_duelling
					NOT = { scope:primary_reason = flag:reason_duelling }
				}
				save_scope_value_as = {
					name = secondary_reason
					value = flag:reason_duelling
				}
			}
			else_if = {
				limit = {
					exists = scope:reason_lifestyle_hunting
					NOT = { scope:primary_reason = flag:reason_hunting }
				}
				save_scope_value_as = {
					name = secondary_reason
					value = flag:reason_hunting
				}
			}
			else_if = {
				limit = {
					exists = scope:reason_lifestyle_magickerationing
					NOT = { scope:primary_reason = flag:reason_magickerationing }
				}
				save_scope_value_as = {
					name = secondary_reason
					value = flag:reason_magickerationing
				}
			}
		##}
		# If scope:ship_funeral_candidate is a hunter, set up a suitable place for them to have been hunting (for loc).
		scope:ship_funeral_candidate = {
			if = {
				limit = {
					hunt_lifestyle_track_greater_equal_trigger = { TRACK = hunter GREATER_EQUAL = 100 }
				}
				if = {
					limit = { highest_held_title_tier >= tier_county }
					primary_title = { save_scope_as = hunting_lands }
				}
				else = {
					scope:mourner.primary_title = { save_scope_as = hunting_lands }
				}
			}
		}
	}

	# Boats to boats, tumuli to tumuli.
	option = {
		name = fp1_yearly.1063.a

		# Small stone ships give a modest chunk.
		if = {
			limit = { scope:burial_type = flag:stone_small }
			add_prestige = minor_prestige_gain
		}
		# Grand stone ships give a decent chunk.
		if = {
			limit = { scope:burial_type = flag:stone_grand }
			add_prestige = medium_prestige_gain
		}
		# Ornate wooden ships give a large chunk.
		if = {
			limit = { scope:burial_type = flag:wooden_ornate }
			add_prestige = major_prestige_gain
		}
		# Stress relief is the same regardless of what level you opted for.
		add_stress = major_stress_loss

		# No extra stress impact for single-option events, usually.
		ai_chance = {
			# Only option.
			base = 100
		}
	}

	after = {
		# Clear up remaining values on the character.
		fp1_funeral_longship_clear_variables_effect = yes
	}
}

##################################################
# Sparklingly Clean
# by Ewan Cowhig Croft
# 1071 - 1080
##################################################

#	You decide to put a little extra effort into your appearance.
fp1_yearly.1071 = {
	type = character_event
	title = fp1_yearly.1071.t
	desc = fp1_yearly.1071.desc
	theme = physical_health
	left_portrait = {
		character = root
		animation = happiness
	}
	override_background = { reference = bedchamber }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_available_at_peace_adult = yes
		is_healthy = yes
		NOT = { has_character_flag = had_event_fp1_yearly_1071 }
		is_landed = yes
		# Filter to flavour-appropriate characters.
		fp1_is_norse = yes
	}

	weight_multiplier = {
		base = 1

		# Weight up a bit for the healthy types.
		modifier = {
			add = 0.5
			has_trait = diligent
		}
		modifier = {
			add = 0.5
			has_trait = whole_of_body
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_yearly_1071
			days = 3650
		}
	}

	# Hygiene is the key to a long life!
	option = {
		name = fp1_yearly.1071.a

		# Add a modifier boosting health.
		add_character_modifier = {
			modifier = fp1_bathing_health_modifier
			years = 10
		}

		stress_impact = {
			diligent = medium_stress_impact_loss
			lazy = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 0.75
				ai_sociability = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = lazy
			}
		}
	}

	# I suppose I could take a little extra care...
	option = {
		name = fp1_yearly.1071.b

		# Add a modifier boosting attraction.
		add_character_modifier = {
			modifier = fp1_bathing_attraction_modifier
			years = 10
		}

		stress_impact = {
			diligent = medium_stress_impact_loss
			lazy = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.75
				ai_energy = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = diligent
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = lazy
			}
		}
	}

	# Just the usual is fine.
	option = {
		name = fp1_yearly.1071.c

		# Lose a bit of stress for taking it easy.
		## Stress loss handled in stress_impact.

		stress_impact = {
			base = medium_stress_loss
			lazy = medium_stress_impact_loss
			diligent = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = -0.1
				ai_energy = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = lazy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = diligent
			}
		}
	}
}

##################################################
# Explorer from Phantom Islands
# by Ewan Cowhig Croft
# 1081 - 1090
##################################################

#	An explorer of the Atlantic wishes to share their tales with you.
fp1_yearly.1081 = {
	type = character_event
	title = fp1_yearly.1081.t
	desc = {
		desc = fp1_yearly.1081.desc.intro
		first_valid = {
			triggered_desc = {
				trigger = { scope:phantom_island = flag:greenland }
				desc = fp1_yearly.1081.desc.greenland
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:vinland }
				desc = fp1_yearly.1081.desc.vinland
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:antilia }
				desc = fp1_yearly.1081.desc.antilia
			}
			triggered_desc = {
				trigger = {
					scope:phantom_island = flag:fortunate_isles
					religion = religion:hellenism_religion
				}
				desc = fp1_yearly.1081.desc.fortunate_isles.hellenist
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:fortunate_isles }
				desc = fp1_yearly.1081.desc.fortunate_isles.other
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:st_brendans_island }
				desc = fp1_yearly.1081.desc.st_brendans_island
			}
			triggered_desc = {
				trigger = {
					scope:phantom_island = flag:isle_of_the_blessed
					OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion }
				}
				desc = fp1_yearly.1081.desc.isle_of_the_blessed.christian
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:isle_of_the_blessed }
				desc = fp1_yearly.1081.desc.isle_of_the_blessed.other
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:ard_majhulah }
				desc = fp1_yearly.1081.desc.ard_majhulah
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:the_sticky_sea }
				desc = fp1_yearly.1081.desc.the_sticky_sea
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:purple_islands }
				desc = fp1_yearly.1081.desc.purple_islands
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:hy_brasil }
				desc = fp1_yearly.1081.desc.hy_brasil
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:thule }
				desc = fp1_yearly.1081.desc.thule
			}
			triggered_desc = {
				trigger = {
					scope:phantom_island = flag:great_ireland
					religion = { is_in_family = rf_abrahamic }
				}
				desc = fp1_yearly.1081.desc.great_ireland.abrahamic
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:great_ireland }
				desc = fp1_yearly.1081.desc.great_ireland.other
			}
			triggered_desc = {
				trigger = { scope:phantom_island = flag:sunset_empire }
				desc = fp1_yearly.1081.desc.sunset_empire
			}
		}
		desc = fp1_yearly.1081.desc.outro
	}
	theme = friendly
	left_portrait = {
		character = root
		animation = toast
		triggered_animation = {
			trigger = {
				scope:phantom_island = flag:sunset_empire 
				has_trait = craven
			}
			animation = fear
		}
	}
	right_portrait = {
		character = scope:norse_explorer
		animation = storyteller
	}
	override_background = { reference = study }

	trigger = {
		#DLC check.
		has_fp1_dlc_trigger = yes
		#No need for these character modifiers to appear in the wild and feel less unique.
		is_ai = no
		#Standard checks.
		is_available_even_at_war_adult = yes
		NOT = { has_character_flag = had_event_fp1_yearly_1081 }
		#Must be North Germanic.
		culture = { has_cultural_pillar = heritage_north_germanic }
		#Has to keep their capital in general Scandinavian core sphere of influence.
		capital_province = {
			OR = {
				geographical_region = world_europe_west
				geographical_region = world_europe_north
				geographical_region = world_europe_east
			}
		}
		#The Norse must still be in their hyper-exploratory phase.
		NOT = {
			culture = { has_cultural_era_or_later = culture_era_high_medieval }
		}
	}

	weight_multiplier = {
		base = 1

		#Learned characters attract people with curious stories.
		modifier = {
			add = 1
			has_trait = scholar
		}
		modifier = {
			add = 1
			learning >= very_high_skill_rating
		}
	}

	immediate = {
		#Once per lifetime.
		add_character_flag = { flag = had_event_fp1_yearly_1081 }
		#Select which phantom island we're looking at!
		##12 items with an 8.3% chance each to be selected, with the remaining 0.4% going to the thirteenth item: Sunset Invasion.
		random_list = {
			#Greenland
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:greenland
				}
			}
			#Vinland
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:vinland
				}
			}
			#Antilia
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:antilia
				}
				#If Portugal exists, then obviously they were time-travelling Portuguese.
				if = {
					limit = {
						is_target_in_global_variable_list = {
							name = unavailable_unique_decisions
							target = flag:form_portugal_decision
						}
					}
					culture:portuguese = { save_scope_as = antilia_culture }
				}
				#If Galician exists, they must have been from Galicia!
				else_if = {
					limit = { has_global_variable = visigothic_culture_split }
					culture:galician = { save_scope_as = antilia_culture }
				}
				#Otherwise, bog-standard Visigoths.
				else = {
					culture:visigothic = { save_scope_as = antilia_culture }
				}
			}
			#Fortunate Isles
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:fortunate_isles
				}
			}
			#St. Brendan's Island
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:st_brendans_island
				}
			}
			#Isle of the Blessed
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:isle_of_the_blessed
				}
			}
			#Ard Majhūlah
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:ard_majhulah
				}
			}
			#The Sticky Sea
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:the_sticky_sea
				}
			}
			#Purple Islands
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:purple_islands
				}
			}
			#Hy Brasil
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:hy_brasil
				}
			}
			#Thule
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:thule
				}
			}
			#Great Ireland
			83 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:great_ireland
				}
			}
			#Sunset Empire
			4 = {
				save_scope_value_as = {
					name = phantom_island
					value = flag:sunset_empire
				}
			}
		}
		#Create an explorer, selecting an appropriate template according to whether or not their story is truthful.
		if = {
			limit = {
				OR = {
					scope:phantom_island = flag:greenland
					scope:phantom_island = flag:purple_islands
					scope:phantom_island = flag:sunset_empire	#Mostly here just to freak people out for funsies.
				}
				#Technically, Vinland & the Sargasso Sea are real locations as well, but our loc clearly indicates that the explorer has never been there, and is repeating second-hand tales at best.
			}
			create_character = {
				location = root.capital_province
				template = fp1_truthful_explorer_character
				save_scope_as = norse_explorer
			}
		}
		else = {
			create_character = {
				location = root.capital_province
				template = fp1_deceitful_explorer_character
				save_scope_as = norse_explorer
			}
		}
	}

	#Memorise the interesting trivia.
	option = {
		name = fp1_yearly.1081.a

		#Nice little diplo modifier.
		add_character_modifier = {
			modifier = phantom_island_trivia_fp1_modifier
			years = 20
		}

		stress_impact = {
			humble = minor_stress_impact_loss
			arrogant = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.25
				ai_boldness = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = humble
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = arrogant
			}
		}
	}

	#Poke holes in the story.
	option = {
		name = fp1_yearly.1081.b

		#Nice little intrigue modifier.
		add_character_modifier = {
			modifier = phantom_island_critique_fp1_modifier
			years = 20
		}

		stress_impact = {
			paranoid = minor_stress_impact_loss
			trusting = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.25
				ai_compassion = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = paranoid
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = trusting
			}
		}
	}

	#Wish them well and on their way.
	option = {
		name = {
			trigger = {
				NOT = { scope:phantom_island = flag:sunset_empire }
			}
			text = fp1_yearly.1081.c
		}
		name = {
			trigger = { scope:phantom_island = flag:sunset_empire }
			text = fp1_yearly.1081.c.sunset_empire
		}

		# Assuming you don't have Aztecs, then get a solid bit of stress relief.
		if = {
			limit = {
				NOT = { scope:phantom_island = flag:sunset_empire }
			}
			stress_impact = {
				base = major_stress_loss
				trusting = minor_stress_impact_loss
				paranoid = minor_stress_impact_gain
			}
		}
		# Otherwise...
		else = {
			stress_impact = {
				base = major_stress_gain
				trusting = minor_stress_impact_loss
				paranoid = minor_stress_impact_gain
			}
		}

		# Stress impact handled in above if blocks.
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.25
				ai_energy = -0.25
			}
			modifier = {	#Weight up for stress.
				add = 10
				has_trait = trusting
			}
			modifier = {	#Weight down for stress.
				add = -10
				has_trait = paranoid
			}
		}
	}

	after = {
		#Dispose of our explorer.
		scope:norse_explorer = {
			hidden_effect = {
				death = { death_reason = death_vanished }
			}
		}
	}
}
