namespace = fp1_trade_events

##################################################
# #Standard Trade Events
# 0001 - 0010	Raid or Trade - a raid potentially becomes a trading mission instead
# 0011 - 0020	A Comfortable Accomodation - a trade ceasefire has expired and can be renewed.
# 0021 - 0040	Visitors from Afar - courtiers swap between two places that trade with each other.
# 0041 - 0060	Belligerents with Benefits - beneficial modifiers are swapped between the capital and a foreign trade location.
#
# #Special Trade Events
# 1101 - 1130	An Alternative Arrangement - offer land to a raid-trade partner
# 1131 - 1170	The Northerner Menace - you buy off an SA's troops, or offer them a position under you.
# 1171 - 1180	A Holy Helping Hand - someone you have a raid-trade agreement with offers the hand of a child and conversion aid.
##################################################










##################################################
# STANDARD TRADE EVENTS

##################################################
# Take or Trade?
# by Ewan Cowhig Croft
# 0001 - 0010
##################################################

#	Hidden setup: could this raid become a trade mission instead?
fp1_trade_events.0001 = {
	hidden = yes
	scope = army

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Make sure that the army hasn't landed straight into combat or w/e.
		is_army_in_combat = no
		# Various checks related to scope:raider, including most of the stuff for fp1_trade_events.0002's trigger block.
		scope:raider = {
			#You must be leading your own forces.
			this = root.army_commander
			# Standard checks.
			is_available_adult_or_is_commanding = yes
			NOT = { has_character_flag = had_event_fp1_trade_events_0002 }
			# Must be either river-capable raiders, or have invested in a suitable dynasty legacy.
			OR = {
				culture = { has_innovation = innovation_longboats }
				dynasty ?= { has_dynasty_perk = fp1_adventure_legacy_2 }
			}
			# Must be at peace; not strictly, but this is the easiest way to reduce edge cases.
			is_at_war = no
			# Shouldn't hypothetically need to check whether or not scope:raider can actually raid the target, since that should be handled code-side before the on_action even fires.
		}
		# Is the target intimidating to this raid army?
		army_size < fp1_trade_events_eligible_settlement_value
	}

	immediate = {
		random = {
			chance = 20
			modifier = {
				add = 20
				scope:raider = {
					culture = { has_cultural_pillar = heritage_north_germanic }
					dynasty = { has_dynasty_perk = fp1_adventure_legacy_2 }
				}
			}
			save_scope_as = raid_army
			scope:raider = { trigger_event = fp1_trade_events.0002 }
		}
	}
}

scripted_effect fp1_trade_events_offer_trade_deal_raider_perspective_effect = {
	# Add the truce.
	add_truce_both_ways = {
		character = scope:raider
		days = fp1_trade_events_truce_length_value
		name = TRUCE_TRADE_DEAL
	}
	# Add some mutual opinion gain.
	add_opinion = {
		target = scope:raider
		modifier = pleased_opinion
		opinion = 20
	}
	# Raid loot for the army.
	scope:raid_army = { add_loot = fp1_trade_events_cash_settlement_value }
}

scripted_effect fp1_trade_events_offer_trade_deal_defender_perspective_effect = {
	# Add the truce.
	show_as_tooltip = {
		add_truce_both_ways = {
			character = scope:raider
			days = fp1_trade_events_truce_length_value
			name = TRUCE_TRADE_DEAL
		}
	}
	# Add some mutual opinion gain.
	reverse_add_opinion = {
		target = scope:raider
		modifier = pleased_opinion
		opinion = 20
	}
	# Minor beneficial modifier gain for the county.
	scope:county = {
		add_county_modifier = {
			modifier = trade_instead_of_raid_fp1_modifier
			days = fp1_trade_events_truce_length_value
		}
	}
}

#	You have the chance to trade peacefully instead of raiding.
fp1_trade_events.0002 = {
	type = character_event
	title = fp1_trade_events.0002.t
	desc = fp1_trade_events.0002.desc
	theme = raid
	left_portrait = {
		character = scope:raider
		animation = personality_honorable
	}
	right_portrait = {
		character = scope:county.holder
		animation = disapproval
	}
	lower_right_portrait = scope:top_liege
	override_background = { reference = burning_building }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_trade_events_0002
			days = 365
		}
		# Grab top_liege, if they're a separate character.
		if = {
			limit = {
				scope:county.holder != scope:county.holder.top_liege
			}
			scope:county.holder.top_liege = { save_scope_as = top_liege }
		}
	}

	# Offer trade: local holder.
	option = {
		name = fp1_trade_events.0002.a

		# Show offer results.
		show_as_tooltip = {
			random_list = {
				# We only want to show the two possibilities, actual percentages don't matter, since the results are decided in the recipient's event.
				100 = {
					show_chance = no
					desc = fp1_trade_events.0002.a.accepted
					scope:county.holder = { fp1_trade_events_offer_trade_deal_raider_perspective_effect = yes }
				}
				100 = {
					show_chance = no
					desc = fp1_trade_events.0002.a.rejected
					custom_tooltip = fp1_trade_events.0002.a.tt
				}
			}
		}
		# Send the actual offer.
		scope:county.holder = { trigger_event = fp1_trade_events.0003 }
		# Charge a little prestige to make it a trade-off.
		add_prestige = minor_prestige_loss

		stress_impact = {
			calm = medium_stress_impact_loss
			compassionate = major_stress_impact_loss
			wrathful = medium_stress_impact_gain
			callous = major_stress_impact_gain
			sadistic = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_greed = -0.5
			}
			opinion_modifier = { opinion_target = scope:county.holder.top_liege }
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = calm
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = wrathful
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = callous
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = sadistic
			}
		}
	}
	
	# Offer trade: top liege.
	option = {
		name = fp1_trade_events.0002.b
		trigger = {
			scope:county.holder != scope:county.holder.top_liege
		}

		# Show offer results.
		show_as_tooltip = {
			random_list = {
				# We only want to show the two possibilities, actual percentages don't matter, since the results are decided in the recipient's event.
				100 = {
					show_chance = no
					desc = fp1_trade_events.0002.a.accepted
					scope:county.holder.top_liege = { fp1_trade_events_offer_trade_deal_raider_perspective_effect = yes }
				}
				100 = {
					show_chance = no
					desc = fp1_trade_events.0002.a.rejected
					custom_tooltip = fp1_trade_events.0002.a.tt
				}
			}
		}
		# Send the actual offer.
		scope:county.holder.top_liege = { trigger_event = fp1_trade_events.0003 }
		# Charge a little prestige to make it a trade-off.
		add_prestige = minor_prestige_loss

		stress_impact = {
			calm = medium_stress_impact_loss
			compassionate = major_stress_impact_loss
			wrathful = medium_stress_impact_gain
			callous = major_stress_impact_gain
			sadistic = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_greed = -0.5
			}
			opinion_modifier = { opinion_target = scope:county.holder.top_liege }
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = calm
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = wrathful
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = callous
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = sadistic
			}
		}
	}
	
	# Pillage it anyway.
	option = {
		name = fp1_trade_events.0002.c

		# Nahhhhh, screw it.
		custom_tooltip = fp1_trade_events.0002.c.tt

		stress_impact = {
			wrathful = medium_stress_impact_loss
			callous = major_stress_impact_loss
			sadistic = major_stress_impact_loss
			calm = medium_stress_impact_gain
			compassionate = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 0.5
				ai_compassion = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = wrathful
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = callous
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = sadistic
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = calm
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = compassionate
			}
		}
	}
	
	# Pillage & don't poke me about this again.
	option = {
		name = fp1_trade_events.0002.d
		# AI don't need an opt-out.
		trigger = { is_ai = no }

		# Furthermore, screw it for a very long time.
		custom_tooltip = fp1_trade_events.0002.d.tt
		add_character_flag = { flag = had_event_fp1_trade_events_0002 }

		stress_impact = {
			wrathful = medium_stress_impact_loss
			callous = major_stress_impact_loss
			sadistic = major_stress_impact_loss
			calm = medium_stress_impact_gain
			compassionate = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 0.5
				ai_compassion = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = wrathful
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = callous
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = sadistic
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = calm
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = compassionate
			}
		}
	}
}

scripted_effect fp1_set_prime_trade_partner_effect = {
	# Store the variable for general tracking.
	set_variable = {
		name = fp1_prime_trade_deal
		value = scope:recipient
		days = fp1_trade_events_truce_length_value
	}
	# Fire off the renewal event from the date of expiry.
	trigger_event = {
		id = fp1_trade_events.0011
		days = fp1_trade_events_truce_renewal_date_value
	}
	# Trigger the on_action.
	if = {
		limit = {
			NOT = { has_character_flag = fp1_trade_events_cycle_start }
		}
		add_character_flag = fp1_trade_events_cycle_start
		trigger_event = { on_action = fp1_trade_events_cycle }
	}
}

#	A raider in your lands would prefer commerce to pillage.
fp1_trade_events.0003 = {
	type = character_event
	title = fp1_trade_events.0003.t
	desc = fp1_trade_events.0003.desc
	theme = raid
	left_portrait = {
		character = scope:raider
		animation = personality_bold
	}
	right_portrait = {
		character = scope:recipient
		animation = disapproval
	}
	override_background = { reference = burning_building }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
	}

	immediate = {
		# Grab a scope:recipient for the portraits, since this may have gone to two different characters.
		save_scope_as = recipient
	}

	# Unexpected, but highly welcome.
	option = {
		name = fp1_trade_events.0003.a

		# Apply effects & inform scope:raider.
		hidden_effect = {
			scope:raider = {
				send_interface_toast = {	
					title = fp1_trade_events.0003.a.tt_success
					left_icon = scope:recipient
					scope:recipient = { fp1_trade_events_offer_trade_deal_raider_perspective_effect = yes }
				}
				# Quietly work out if this would become their pre-eminent trade deal.
				## Due to no existing prime trade deal.
				if = {
					limit = {
						NOT = { has_variable = fp1_prime_trade_deal }
					}
					fp1_set_prime_trade_partner_effect = yes
				}
				## Due to a dead/landless prime trade deal or cancelled truces.
				else_if = {
					limit = {
						has_variable = fp1_prime_trade_deal
						var:fp1_prime_trade_deal = {
							OR = {
								is_alive = no
								is_landed = no
								NOR = {
									has_truce = scope:raider
									scope:raider = { has_truce = var:fp1_prime_trade_deal }
								}
							}
						}
					}
					fp1_set_prime_trade_partner_effect = yes
				}
				## Due to scope:recipient being of a higher tier than their current one.
				else_if = {
					limit = {
						has_variable = fp1_prime_trade_deal
						scope:recipient.primary_title.tier > var:fp1_prime_trade_deal.primary_title.tier 
					}
					fp1_set_prime_trade_partner_effect = yes
				}
			}
		}
		fp1_trade_events_offer_trade_deal_defender_perspective_effect = yes

		stress_impact = {
			compassionate = medium_stress_impact_loss
			forgiving = major_stress_impact_loss
			callous = medium_stress_impact_gain
			sadistic = major_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 = 20
				has_trait = compassionate
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = callous
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = sadistic
			}
			modifier = {	# Weight down for stress.
				add = -40
				has_trait = vengeful
			}
		}
	}
	
	# *Trade*? With these murderers?!
	option = {
		name = fp1_trade_events.0003.b

		# Gain some prestige for turning down these marauders.
		add_prestige = minor_prestige_gain
		# Inform scope:raider that negotiations have failed.
		hidden_effect = {
			scope:raider = {
				send_interface_toast = {	
					title = fp1_trade_events.0003.b.tt_failure
					left_icon = scope:recipient
					custom_tooltip = fp1_trade_events.0003.b.tt_failure
				}
			}
		}

		stress_impact = {
			compassionate = medium_stress_impact_gain
			forgiving = major_stress_impact_gain
			callous = medium_stress_impact_loss
			sadistic = major_stress_impact_loss
			vengeful = major_stress_impact_loss
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 0.5
				ai_vengefulness = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 20
				has_trait = callous
			}
			modifier = {	# Weight up for stress.
				add = 30
				has_trait = sadistic
			}
			modifier = {	# Weight up for stress.
				add = 40
				has_trait = vengeful
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = forgiving
			}
		}
	}
}

##################################################
#  Comfortable Accomodation
# by Ewan Cowhig Croft
# 0011 - 0020
##################################################

scripted_trigger fp1_prime_trade_partner_still_valid_trigger = {
	exists = $RAIDER$.var:fp1_prime_trade_deal
	$RAIDER$.var:fp1_prime_trade_deal = {
		this = $RECIPIENT$
		is_alive = yes
		is_landed = yes
		# Make sure the truce hasn't been cancelled.
		has_truce = $RAIDER$
		$RAIDER$ = { has_truce = var:fp1_prime_trade_deal }
		# And that the characters haven't wound up in the same realm somehow.
		NOT = { top_liege = $RAIDER$.top_liege }
	}
}

scripted_effect fp1_trade_events_trade_renewed_raider_perspective_effect = {
	# Add the truce.
	add_truce_both_ways = {
		character = scope:recipient
		days = fp1_trade_events_truce_length_value
		name = TRUCE_TRADE_DEAL
	}
	# Nudge towards friendship.
	progress_towards_friend_effect = {
		CHARACTER = scope:recipient
		OPINION = 30
		REASON = friend_fp1_renewed_trade_deal
	}
	# Gain some prestige.
	add_prestige = major_prestige_gain
	# Sort deal veterancy.
	set_variable = {
		name = fp1_renewed_trade_deal
		value = scope:recipient
		days = fp1_trade_events_truce_length_value
	}
}

scripted_effect fp1_trade_events_trade_renewed_defender_perspective_effect = {
	# Truce added in scope:raider's perspective.
	show_as_tooltip = {
		add_truce_both_ways = {
			character = scope:raider
			days = fp1_trade_events_truce_length_value
			name = TRUCE_TRADE_DEAL
		}
	}
	# Nudge towards friendship.
	show_as_tooltip = {
		progress_towards_friend_effect = {
			CHARACTER = scope:raider
			OPINION = 30
			REASON = friend_fp1_renewed_trade_deal
		}
	}
	# Since prestige is the independence reward, we give a little bit of static cash.
	add_gold = 50
}

scripted_effect fp1_trade_events_trade_renewal_rejected_effect = {
	add_prestige = minor_prestige_loss
	custom_tooltip = fp1_trade_events.0011.b.tt
}

#	A trade ceasefire has expired and can be renewed.
fp1_trade_events.0011 = {
	type = character_event
	title = fp1_trade_events.0011.t
	desc = {
		first_valid = {
			# Not your first renewal.
			triggered_desc = {
				trigger = {
					exists = var:fp1_renewed_trade_deal
					var:fp1_renewed_trade_deal = var:fp1_prime_trade_deal
				}
				desc = fp1_trade_events.0011.desc.subsequent_renewal
			}
			# First time renewing this particular deal.
			desc = fp1_trade_events.0011.desc.first_renewal
		}
		desc = fp1_trade_events.0011.desc.outro
	}
	theme = stewardship
	left_portrait = {
		character = scope:raider
		animation = personality_rational
	}
	right_portrait = {
		character = scope:recipient
		animation = personality_bold
	}
	override_background = { reference = market }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		is_landed = yes
		# Scope:raider's prime trade deal must still be valid.
		fp1_prime_trade_partner_still_valid_trigger = {
			RECIPIENT = scope:recipient
			RAIDER = scope:raider
		}
	}

	# A grand offer!
	option = {
		name = fp1_trade_events.0011.a
		# Make sure players in MP don't cheese anything.
		trigger = {
			fp1_prime_trade_partner_still_valid_trigger = {
				RECIPIENT = scope:recipient
				RAIDER = scope:raider
			}
		}

		# You offer a renewal to scope:recipient.
		random_list = {
			100 = {
				show_chance = no
				desc = fp1_trade_events.0011.a.accepted
				show_as_tooltip = { fp1_trade_events_trade_renewed_raider_perspective_effect = yes }
			}
			100 = {
				show_chance = no
				desc = fp1_trade_events.0011.a.rejected
				show_as_tooltip = { fp1_trade_events_trade_renewal_rejected_effect = yes }
			}
		}
		scope:recipient = { trigger_event = fp1_trade_events.0012 }

		stress_impact = {
			honest = minor_stress_impact_loss
			arbitrary = medium_stress_impact_gain
			fickle = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_honor = 0.5
				ai_sociability = 0.25
				ai_rationality = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = honest
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = arbitrary
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = fickle
			}
		}
	}
	
	# This has run its course...
	option = {
		name = fp1_trade_events.0011.b

		# A bit of consolation prestige for your hard-work.
		add_prestige = minor_prestige_gain
		# Confirm that the deal will lapse as expected.
		custom_tooltip = fp1_trade_events.0011.b.tt

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

#	A trading partner proposes an extension.
fp1_trade_events.0012 = {
	type = character_event
	title = fp1_trade_events.0012.t
	desc = {
		first_valid = {
			# Not your first renewal.
			triggered_desc = {
				trigger = {
					exists = var:fp1_renewed_trade_deal
					var:fp1_renewed_trade_deal = var:fp1_prime_trade_deal
				}
				desc = fp1_trade_events.0012.desc.subsequent_renewal
			}
			# First time renewing this particular deal.
			desc = fp1_trade_events.0012.desc.first_renewal
		}
		desc = fp1_trade_events.0012.desc.outro
	}
	theme = stewardship
	left_portrait = {
		character = scope:recipient
		animation = personality_rational
	}
	right_portrait = {
		character = scope:raider
		animation = admiration
	}
	override_background = { reference = market }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Scope:raider's prime trade deal must still be valid.
		fp1_prime_trade_partner_still_valid_trigger = {
			RECIPIENT = scope:recipient
			RAIDER = scope:raider
		}
	}

	# A most agreeable proposal.
	option = {
		name = fp1_trade_events.0012.a
		# Make sure players in MP don't cheese anything.
		trigger = {
			fp1_prime_trade_partner_still_valid_trigger = {
				RECIPIENT = scope:recipient
				RAIDER = scope:raider
			}
		}

		# You agree to a renewal with scope:raider.
		fp1_trade_events_trade_renewed_defender_perspective_effect = yes
		# Inform scope:raider.
		scope:raider = {
			hidden_effect = {
				send_interface_toast = {
					title = fp1_trade_events.0012.a.tt_success
					left_icon = scope:recipient
					fp1_trade_events_trade_renewed_raider_perspective_effect = yes
				}
			}
		}

		stress_impact = {
			honest = minor_stress_impact_loss
			arbitrary = medium_stress_impact_gain
			fickle = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			opinion_modifier = { opinion_target = scope:raider}
			ai_value_modifier = {
				ai_honor = 0.5
				ai_sociability = 0.25
				ai_rationality = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = honest
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = arbitrary
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = fickle
			}
		}
	}
	
	# I'm done with this GetWomanMan.
	option = {
		name = fp1_trade_events.0012.b

		# A bit of consolation prestige for your independence.
		add_prestige = minor_prestige_gain
		# Confirm that the deal will lapse as expected.
		custom_tooltip = fp1_trade_events.0012.b.tt
		# Inform scope:raider, who is disappointed.
		scope:raider = {
			add_opinion = {
				target = scope:recipient
				modifier = disappointed_opinion
				opinion = -20
			}
			hidden_effect = {
				send_interface_toast = {	
					title = fp1_trade_events.0012.b.tt_failure
					left_icon = scope:recipient
					fp1_trade_events_trade_renewal_rejected_effect = yes
				}
			}
		}

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

##################################################
# Visitors from Afar
# by Ewan Cowhig Croft
# 0021 - 0040
##################################################

scripted_effect fp1_trade_events_0021_acquire_courtier_effect = {
	# Acquire selection and boost opinion.
	add_courtier = $SELECTION$
	progress_towards_friend_effect = {
		CHARACTER = $SELECTION$
		OPINION = 100
		REASON = friend_accepted_courtier
	}
	# Ditch the rest.
	hidden_effect = {
		scope:merchant = {
			if = {
				limit = {
					NOT = { this = $SELECTION$ }
				}
				death = { death_reason = death_vanished }
			}
		}
		scope:priest = {
			if = {
				limit = {
					NOT = { this = $SELECTION$ }
				}
				death = { death_reason = death_vanished }
			}
		}
		if = {
			limit = {
				exists = scope:spy
				NOT = { scope:spy = $SELECTION$ }
			}
			scope:spy = {
				death = { death_reason = death_vanished }
			}
		}
	}
}

#	Courtiers swap between two places that trade with each other.
fp1_trade_events.0021 = {
	type = character_event
	title = fp1_trade_events.0021.t
	desc = fp1_trade_events.0021.desc
	theme = alliance
	left_portrait = {
		character = scope:merchant
		animation = personality_greedy
	}
	right_portrait = {
		character = scope:priest
		animation = personality_zealous
	}
	lower_center_portrait = scope:spy
	lower_right_portrait = var:fp1_prime_trade_deal
	override_background = { reference = docks }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		## Allow when commanding to be fairer to people out raiding, which we incentivise you to do personally to get pacts to begin with.
		is_available_adult_or_is_commanding = yes
		NOT = { has_character_flag = had_event_fp1_trade_events_0021 }
		is_landed = yes
		# Scope:raider's prime trade deal must still be valid.
		fp1_prime_trade_partner_still_valid_trigger = {
			RECIPIENT = root.var:fp1_prime_trade_deal
			RAIDER = root
		}
	}

	weight_multiplier = {
		base = 1
		
		# Weight up a little for certain lifestyle traits, as these spread stories of your success and accomplishments.
		modifier = {
			add = 0.25
			has_trait = diplomat
		}
		modifier = {
			add = 0.25
			has_trait = avaricious
		}
		# Weight up for this being a renewed treaty.
		modifier = {
			add = 1
			exists = root.var:fp1_renewed_trade_deal
			exists = root.var:fp1_prime_trade_deal
			root.var:fp1_prime_trade_deal = root.var:fp1_renewed_trade_deal
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_trade_events_0021
			days = 1825
		}
		# Save some things for loc & future events.
		save_scope_as = raider
		var:fp1_prime_trade_deal = { save_scope_as = partner }
		# Create our players.
		## A merchant.
		create_character = {
			template = fp1_trade_partner_merchant
			location = root.capital_province
			save_scope_as = merchant
		}
		## A priest.
		create_character = {
			template = fp1_trade_partner_priest
			location = root.capital_province
			save_scope_as = priest
		}
		## And a spy, if appropriate.
		if = {
			limit = {
				NOT = { has_trait = trusting }
				intrigue >= high_skill_rating
			}
			create_character = {
				template = fp1_trade_partner_spy
				location = root.capital_province
				save_scope_as = spy
			}
		}
	}

	# I could use someone to count my coin...
	option = {
		name = fp1_trade_events.0021.a

		# Select the merchant.
		fp1_trade_events_0021_acquire_courtier_effect = { SELECTION = scope:merchant }

		stress_impact = {
			trusting = minor_stress_impact_loss
			generous = medium_stress_impact_gain
			paranoid = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 0.5
				ai_sociability = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = trusting
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = generous
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = paranoid
			}
		}
	}
	
	# Welcome to my service, [priest.GetFirstName]!
	option = {
		name = fp1_trade_events.0021.b

		# Select the priest.
		fp1_trade_events_0021_acquire_courtier_effect = { SELECTION = scope:priest }

		stress_impact = {
			trusting = minor_stress_impact_loss
			zealous = medium_stress_impact_gain
			paranoid = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.25
				ai_zeal = -0.5
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = trusting
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = zealous
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = paranoid
			}
		}
	}
	
	# And who is this accompanying you?
	option = {
		name = fp1_trade_events.0021.c
		trigger = { exists = scope:spy }
		skill = intrigue

		fp1_trade_events_0021_acquire_courtier_effect = { SELECTION = scope:spy }

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

	# Move along, foreigners, my agreement is with [recipient.GetFirstName].
	option = {
		name = fp1_trade_events.0021.d

		# Gain some prestige for your haughtiness.
		add_prestige = medium_prestige_gain
		# But annoy your trading partner.
		reverse_add_opinion = {
			target = var:fp1_prime_trade_deal
			modifier = annoyed_opinion
			opinion = -40
		}
		# Dispose of the guests.
		hidden_effect = {
			scope:merchant = {
				death = { death_reason = death_vanished }
			}
			scope:priest = {
				death = { death_reason = death_vanished }
			}
			if = {
				limit = { exists = scope:spy }
				scope:spy = {
					death = { death_reason = death_vanished }
				}
			}
		}

		stress_impact = {
			paranoid = medium_stress_impact_loss
			shy = medium_stress_impact_loss
			compassionate = minor_stress_impact_gain
			gregarious = major_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 up for stress.
				add = 20
				has_trait = shy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = gregarious
			}
		}
	}

	after = {
		# Send a companion event to var:fp1_prime_trade_deal.
		#var:fp1_prime_trade_deal = { trigger_event = fp1_trade_events.0031 }
		var:fp1_prime_trade_deal = {
			trigger_event = {
				id = fp1_trade_events.0031
				days = 1
			}
		}
	}
}

fp1_trade_events.0031 = {
	type = character_event
	title = fp1_trade_events.0031.t
	desc = fp1_trade_events.0031.desc
	theme = alliance
	left_portrait = {
		character = scope:warrior
		animation = personality_bold
	}
	lower_right_portrait = scope:raider
	override_background = { reference = throne_room }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		## Allow when commanding - we want to make trading compacts a bit more equal.
		is_available_adult = yes
		NOT = { has_character_flag = had_event_fp1_trade_events_0031 }
		is_landed = yes
		# Scope:raider's prime trade deal must still be valid.
		fp1_prime_trade_partner_still_valid_trigger = {
			RECIPIENT = scope:raider.var:fp1_prime_trade_deal
			RAIDER = scope:raider
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_trade_events_0031
			days = 1825
		}
		# Create scope:warrior.
		create_character = {
			template = fp1_trade_partner_warrior
			location = scope:raider.var:fp1_prime_trade_deal.capital_province
			save_scope_as = warrior
		}
	}

	# We can always use another sword!
	option = {
		name = fp1_trade_events.0031.a

		# Gain the warrior, who's understandably pretty hyped.
		add_courtier = scope:warrior
		progress_towards_friend_effect = {
			CHARACTER = scope:warrior
			OPINION = 100
			REASON = friend_accepted_courtier
		}

		stress_impact = {
			trusting = minor_stress_impact_loss
			paranoid = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.5
				ai_boldness = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = trusting
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = paranoid
			}
		}
	}
	
	# Be gone, bandit.
	option = {
		name = fp1_trade_events.0031.b

		# Gain some prestige for your haughtiness.
		add_prestige = medium_prestige_gain
		# But annoy your trading partner, though not as much as snubbing an open delegation on the inverse.
		reverse_add_opinion = {
			target = scope:raider
			modifier = annoyed_opinion
			opinion = -20
		}
		# Dispose of the guest.
		hidden_effect = {
			scope:warrior = {
				death = { death_reason = death_vanished }
			}
		}

		stress_impact = {
			paranoid = medium_stress_impact_loss
			shy = medium_stress_impact_loss
			compassionate = minor_stress_impact_gain
			gregarious = major_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 up for stress.
				add = 20
				has_trait = shy
			}
			modifier = {	# Weight down for stress.
				add = -10
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = gregarious
			}
		}
	}
}

##################################################
# Belligerents with Benefits
# by Ewan Cowhig Croft
# 0041 - 0060
##################################################

scripted_trigger fp1_trade_events_0041_advanced_culture_comparison_trigger = {
	scope:raider.culture = {
		# Must have separate cultures for one to be more advanced.
		this != scope:partner.culture
		# And scope:partner's must be in a later era than scope:raider's.
		## Tribal.
		trigger_if = {
			limit = {
				NOT = { has_cultural_era_or_later = culture_era_early_medieval }
			}
			scope:partner.culture = { has_cultural_era_or_later = culture_era_early_medieval }
		}
		## Early Medieval.
		trigger_if = {
			limit = {
				NOT = { has_cultural_era_or_later = culture_era_high_medieval }
			}
			scope:partner.culture = { has_cultural_era_or_later = culture_era_high_medieval }
		}
		## High Medieval.
		trigger_if = {
			limit = {
				NOT = { has_cultural_era_or_later = culture_era_late_medieval }
			}
			scope:partner.culture = { has_cultural_era_or_later = culture_era_late_medieval }
		}
		## And you can't be later than the Late Medieval, so we ignore that'un.
	}
}

scripted_trigger fp1_trade_events_0041_valid_partner_counties_trigger = {
	has_county_modifier = recently_looted_modifier
	NOT = { has_county_modifier = fp1_trade_events_raid_consultants_modifier }
}

scripted_effect fp1_trade_events_0041_offer_consultation_deal_raider_perspective_effect = {
	# You pay coin and get discounts to construction in your domain.
	remove_treasury_or_gold = massive_gold_value
	# Give a modifier with development growth to underdeveloped holdings.
	every_held_title = {
		title_tier = county
		limit = {
			development_level <= 15
		}
		custom = fp1_trade_events.0041.foreign_architects_growth.tt
		add_county_modifier = {
			modifier = fp1_trade_events_foreign_architects_modifier
			years = 20
		}
	}
	# And one without it to holdings that are adequately developed.
	every_held_title = {
		title_tier = county
		limit = {
			development_level >= 16
		}
		custom = fp1_trade_events.0041.foreign_architects_no_growth.tt
		add_county_modifier = {
			modifier = fp1_trade_events_foreign_architects_no_growth_modifier
			years = 20
		}
	}
	# Plus stepped friendship with scope:partner.
	progress_towards_friend_effect = {
		CHARACTER = scope:partner
		OPINION = 30
		REASON = friend_fp1_renewed_trade_deal
	}
	# Scope:partner gets some help with raiding.
	custom_tooltip = fp1_trade_events.0041.partner_gets_raid_aid.tt
}

scripted_effect fp1_trade_events_0041_offer_consultation_deal_partner_perspective_effect = {
	# You pay coin and get raid protection increases in one duchy.
	remove_treasury_or_gold = scandinavian_adventurer_fp1_0041_gold_value
	# Give modifiers that make that duchy better able to withstand raids.
	$TARGET_DUCHY$ = {
		save_scope_as = target_duchy
		every_in_de_jure_hierarchy = {
			limit = {
				tier = tier_county
				holder = {
					OR = {
						any_liege_or_above = { this = scope:partner }
						this = scope:partner
					}
				}
			}
			custom = fp1_trade_events.0041.partner.benefiting_counties.tt
			add_county_modifier = {
				modifier = fp1_trade_events_raid_consultants_modifier
				years = 20
			}
			# Grab the holders for happiness purposes.
			holder = {
				if = {
					limit = {
						this != scope:partner
					}
					add_to_list = happy_with_raid_proofing_list
				}
			}
		}
	}
	# Anyone who holds lands here other than you is duly grateful.
	every_in_list = {
		list = happy_with_raid_proofing_list
		add_opinion = {
			target = scope:partner
			modifier = grateful_opinion
			opinion = 30
		}
	}
	# Plus, stepped friendship with scope:raider (actual effect handled scope:raider-side).
	show_as_tooltip = {
		progress_towards_friend_effect = {
			CHARACTER = scope:raider
			OPINION = 30
			REASON = friend_fp1_renewed_trade_deal
		}
	}
	# Scope:raider gets help with civic works.
	custom_tooltip = fp1_trade_events.0041.raider_gets_civic_aid.tt
}

scripted_effect fp1_trade_events_0041_consultation_rejected_effect = {
	# Lose a fair bit of prestige.
	add_prestige = medium_prestige_loss
}

#	Beneficial modifiers are swapped between the capital and a foreign trade location.
fp1_trade_events.0041 = {
	type = character_event
	title = fp1_trade_events.0041.t
	desc = fp1_trade_events.0041.desc
	theme = alliance
	left_portrait = {
		character = scope:raider
		animation = personality_forgiving
	}
	right_portrait = {
		character = scope:partner
		animation = personality_content
	}
	override_background = { reference = docks }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		## Allow when commanding to be fairer to people out raiding, which we incentivise you to do personally to get pacts to begin with.
		is_available_adult_or_is_commanding = yes
		NOT = { has_character_flag = had_event_fp1_trade_events_0041 }
		is_landed = yes
		# Scope:raider's prime trade deal must still be valid & available.
		fp1_prime_trade_partner_still_valid_trigger = {
			RECIPIENT = root.var:fp1_prime_trade_deal
			RAIDER = root
		}
		root.var:fp1_prime_trade_deal = { is_available_adult_or_is_commanding = yes }
		# And they've gotta be able to take the deal in some fashion.
		root.var:fp1_prime_trade_deal = {
			any_sub_realm_county = { fp1_trade_events_0041_valid_partner_counties_trigger = yes }
		}
		# Plus, there must be a trade to be made.
		## Meaning one must be tribal, the other feudal.
		government_has_flag = government_is_tribal
		root.var:fp1_prime_trade_deal = {
			NOT = { government_has_flag = government_is_tribal }
		}
		## And that scope:partner can't raid for some other reason.
		root.var:fp1_prime_trade_deal = { can_raid_trigger = no }
	}

	weight_multiplier = {
		base = 1
		
		# Weight up a little for certain lifestyle traits, as these spread stories of your success and accomplishments.
		modifier = {
			add = 0.25
			has_trait = diplomat
		}
		modifier = {
			add = 0.25
			has_trait = avaricious
		}
		# Weight up for this being a renewed treaty.
		modifier = {
			add = 1
			exists = root.var:fp1_renewed_trade_deal
			exists = root.var:fp1_prime_trade_deal
			root.var:fp1_prime_trade_deal = root.var:fp1_renewed_trade_deal
		}
	}

	immediate = {
		add_character_flag = {
			flag = had_event_fp1_trade_events_0041
			days = 3625
		}
		# Save some things for loc & future events.
		save_scope_as = raider
		var:fp1_prime_trade_deal = { save_scope_as = partner }
	}

	# Could they build me a palace in the [partner.GetCulture] style?
	option = {
		name = {
			trigger = { fp1_trade_events_0041_advanced_culture_comparison_trigger = yes }
			text = fp1_trade_events.0041.a.advanced
		}
		name = {
			trigger = { fp1_trade_events_0041_advanced_culture_comparison_trigger = no }
			text = fp1_trade_events.0041.a.fallback
		}
		trigger = {
			can_make_expensive_purchase_trigger = { PRICE = scandinavian_adventurer_fp1_0041_gold_value }
		}

		# Show possible results depending on scope:partner's response.
		random_list = {
			100 = {
				show_chance = no
				desc = fp1_trade_events.0041.a.offer_accepted
				show_as_tooltip = { fp1_trade_events_0041_offer_consultation_deal_raider_perspective_effect = yes }
			}
			100 = {
				show_chance = no
				desc = fp1_trade_events.0041.a.offer_rejected
				show_as_tooltip = { fp1_trade_events_0041_consultation_rejected_effect = yes }
			}
		}
		# And send scope:partner their event.
		scope:partner = { trigger_event = fp1_trade_events.0051 }

		stress_impact = {
			trusting = minor_stress_impact_loss
			paranoid = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.5
				ai_boldness = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = trusting
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = paranoid
			}
		}
	}
	
	# Let's keep this informal.
	option = {
		name = fp1_trade_events.0041.b

		# Stress loss; handled in stress_impact block.

		stress_impact = {
			base = medium_stress_impact_loss
			paranoid = medium_stress_impact_loss
			gregarious = major_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 = -30
				has_trait = gregarious
			}
		}
	}
}

scripted_effect fp1_trade_events_0051_inform_scope_raider_effect = {
	hidden_effect = {
		scope:raider = {
			send_interface_toast = {
				title = fp1_trade_events.0051.offer_accepted
				left_icon = scope:partner
				fp1_trade_events_0041_offer_consultation_deal_raider_perspective_effect = yes
			}
		}
	}
}

fp1_trade_events.0051 = {
	type = character_event
	title = fp1_trade_events.0051.t
	desc = fp1_trade_events.0051.desc
	theme = alliance
	left_portrait = {
		character = scope:partner
		animation = personality_forgiving
	}
	right_portrait = {
		character = scope:raider
		animation = personality_content
	}
	override_background = { reference = docks }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks done scope:raider's side.
		# Scope:raider's prime trade deal must still be valid.
		fp1_prime_trade_partner_still_valid_trigger = {
			RECIPIENT = scope:raider.var:fp1_prime_trade_deal
			RAIDER = scope:raider
		}
	}

	immediate = {
		# Build a list of valid duchies.
		## First, we sort through all valid counties and add their duchies to a list.
		every_sub_realm_county = {
			limit = { fp1_trade_events_0041_valid_partner_counties_trigger = yes }
			duchy = { add_to_list = duchies_valid_for_raid_proofing_list }
		}
		## Then we order the list to pick the largest duchies.
		ordered_in_list = {
			list = duchies_valid_for_raid_proofing_list
			max = 3
			order_by = {
				value = 0

				# Then we add a point for every de jure county that's also de facto part of the sub-realm.
				every_in_de_jure_hierarchy = {
					limit = {
						tier = tier_county
						holder = {
							OR = {
								this = scope:partner
								any_liege_or_above = { this = scope:partner }
							}
						}
					}
					add = 1

					# And again for every one that has _also_ been raided recently, since that's a good indicator of raid-density.
					if = {
						limit = {
							any_county_province = { has_province_modifier = recently_looted_modifier }
						}
						add = 1
					}
				}
			}
			if = {
				limit = {
					NOT = { exists = scope:option_1 }
				}
				save_scope_as = option_1
			}
			if = {
				limit = {
					NOT = {
						this = scope:option_1
						exists = scope:option_2
					}
				}
				save_scope_as = option_2
			}
			if = {
				limit = {
					NOT = {
						this = scope:option_1
						this = scope:option_2
						exists = scope:option_3
					}
				}
				save_scope_as = option_3
			}
		}
	}

	# Scope:option_1 could use some experts...
	option = {
		name = fp1_trade_events.0051.a

		# Apply effects to scope:option_1.
		fp1_trade_events_0041_offer_consultation_deal_partner_perspective_effect = { TARGET_DUCHY = scope:option_1 }
		# Inform scope:raider of the decision.
		fp1_trade_events_0051_inform_scope_raider_effect = yes

		stress_impact = {
			compassionate = minor_stress_impact_loss
			callous = medium_stress_impact_gain
			sadistic = medium_stress_impact_gain
			greedy = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.5
				ai_rationality = 0.5
				ai_greed = -0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = compassionate
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = callous
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = sadistic
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = greedy
			}
		}
	}
	
	# Scope:option_2 might be a good place for them?
	option = {
		name = fp1_trade_events.0051.b
		trigger = { exists = scope:option_2 }

		# Apply effects to scope:option_2.
		fp1_trade_events_0041_offer_consultation_deal_partner_perspective_effect = { TARGET_DUCHY = scope:option_2 }
		# Inform scope:raider of the decision.
		fp1_trade_events_0051_inform_scope_raider_effect = yes

		stress_impact = {
			compassionate = minor_stress_impact_loss
			callous = medium_stress_impact_gain
			sadistic = medium_stress_impact_gain
			greedy = major_stress_impact_gain
		}
		ai_chance = {
			# AI should always pick the first & mostly-best option.
			base = 0
		}
	}
	
	# I think I'd prefer to shore up scope:option_3.
	option = {
		name = fp1_trade_events.0051.c
		trigger = { exists = scope:option_3 }

		# Apply effects to scope:option_3.
		fp1_trade_events_0041_offer_consultation_deal_partner_perspective_effect = { TARGET_DUCHY = scope:option_3 }
		# Inform scope:raider of the decision.
		fp1_trade_events_0051_inform_scope_raider_effect = yes

		stress_impact = {
			compassionate = minor_stress_impact_loss
			callous = medium_stress_impact_gain
			sadistic = medium_stress_impact_gain
			greedy = major_stress_impact_gain
		}
		ai_chance = {
			# AI should always pick the first & mostly-best option.
			base = 0
		}
	}

	# What an outrageous proposal!
	option = {
		name = fp1_trade_events.0051.d

		# Gain a little consolation prestige.
		add_prestige = minor_prestige_gain
		# Inform scope:raider of the decision.
		hidden_effect = {
			scope:raider = {
				send_interface_toast = {
					title = fp1_trade_events.0051.offer_rejected
					left_icon = scope:partner
					fp1_trade_events_0041_consultation_rejected_effect = yes
				}
			}
		}

		stress_impact = {
			callous = minor_stress_impact_loss
			sadistic = minor_stress_impact_loss
			compassionate = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = -0.25
				ai_rationality = -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 = -30
				has_trait = compassionate
			}
		}
	}
}










##################################################
# SPECIAL TRADE EVENTS

##################################################
# The Northerner Menace
# by Ewan Cowhig Croft
# 1131 - 1170
##################################################

#	You buy off an SA's troops, or offer them a position under you.
fp1_trade_events.1131 = {
	type = character_event
	title = fp1_trade_events.1131.t
	desc = fp1_trade_events.1131.desc
	theme = war
	left_portrait = {
		character = scope:defender
		animation = worry
	}
	right_portrait = {
		character = scope:attacker
		animation = personality_greedy
	}
	override_background = { reference = fp1_beached_longships }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Make sure the war is still ongoing
		any_character_war = {
			using_cb = fp1_scandi_adventurer_conquest
			primary_attacker = scope:attacker
			primary_defender = scope:defender
		}
	}

	immediate = {
		# Grab the CB for general reference.
		random_character_war = {
			limit = {
				using_cb = fp1_scandi_adventurer_conquest
				primary_attacker = scope:attacker
				primary_defender = scope:defender
			}
			save_scope_as = sa_war
		}
	}

	# Never! Back to your frozen hellscape of a home, scum!
	option = {
		name = fp1_trade_events.1131.a

		# Gain a bit of prestige for your boasting.
		add_prestige = medium_prestige_gain
		# Stress gain trade-off handled in stress impact.
		# Clarify that this is merely another trade-off option.
		custom_tooltip = fp1_trade_events.1131.d.tt

		stress_impact = {
			base = medium_stress_gain
			arrogant = minor_stress_impact_loss
			ambitious = minor_stress_impact_loss
			stubborn = minor_stress_impact_loss
			vengeful = minor_stress_impact_loss
			humble = medium_stress_impact_gain
			content = medium_stress_impact_gain
			fickle = medium_stress_impact_gain
			forgiving = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_vengefulness = 0.5
				ai_energy = 0.25
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = arrogant
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = ambitious
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = stubborn
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = vengeful
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = humble
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = content
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = fickle
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = forgiving
			}
		}
	}
	
	# Well, if it's land they want...
	option = {
		name = fp1_trade_events.1131.b
		trigger = {
			# Must be able to vassalise a duke.
			highest_held_title_tier >= tier_kingdom
			# Target duchy doesn't contain a player that isn't scope:defender.
			NOT = {
				any_player = {
					# First, see if they're a vassal of scope:defender.
					any_liege_or_above = { this = scope:defender }
					# And if they are, make sure they have no titles held within the appropriate lands.
					save_temporary_scope_as = vassal_player
					any_in_list = {
						list = target_titles
						holder = scope:vassal_player
					}
				}
			}
			# Scope:defender must control at least some lands outside of the target duchy.
			any_held_title = {
				NOT = { is_in_list = target_titles }
			}
		}

		# You allow them to win the war...
		scope:sa_war = { end_war = attacker }
		add_prestige = major_prestige_loss
		# ... but then immediately vassalise them.
		create_title_and_vassal_change = {
			type = swear_fealty
			save_scope_as = change
		}
		scope:attacker = {
			change_liege = {
				liege = scope:defender
				change = scope:change
			}
		}
		resolve_title_and_vassal_change = scope:change
		# This also gives a nice long truce so that they can't immediately usurp you.
		hidden_effect = {
			cancel_truce_both_ways = scope:attacker
		}
		add_truce_both_ways = {
			character = scope:attacker
			days = 7300
			name = FP1_SCANDINAVIAN_ADVENTURER_VASSAL_TRUCE_NAME
		}
		# Plus we whack some opinion in there for good measure.
		progress_towards_friend_effect = {
			CHARACTER = scope:attacker
			OPINION = 50
			REASON = friend_fp1_renewed_trade_deal
		}
		# Finally, add a breather before the next SA.
		fp1_add_realm_size_appropriate_sa_reprieve_effect = yes

		stress_impact = {
			generous = minor_stress_impact_loss
			humble = minor_stress_impact_loss
			content = minor_stress_impact_loss
			fickle = minor_stress_impact_loss
			forgiving = minor_stress_impact_loss
			greedy = major_stress_impact_gain
			arrogant = major_stress_impact_gain
			ambitious = major_stress_impact_gain
			stubborn = major_stress_impact_gain
			vengeful = major_stress_impact_gain
		}
		ai_chance = {
			# Base 0 so that only a particular kind of AI will go for this.
			base = 0
			ai_value_modifier = {
				ai_rationality = 0.25
				ai_greed = -0.5
				ai_vengefulness = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = generous
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = humble
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = content
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = fickle
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = ambitious
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = stubborn
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = vengeful
			}
		}
	}
	
	# In my experience, soldiers prefer gold to glory.
	option = {
		name = fp1_trade_events.1131.c
		trigger = {
			can_make_expensive_purchase_trigger = { PRICE = monumental_gold_value }
		}

		# Pay scope:attacker's troops to sod off...
		custom_tooltip = fp1_trade_events.1131.c.tt
		remove_treasury_or_gold = monumental_treasury_or_gold_value
		# ... thereby winning the war.
		scope:sa_war = {
			set_variable = no_gold_reparations 
			end_war = defender
		}
		reverse_add_opinion = {
			target = scope:attacker
			modifier = humiliated_opinion
			opinion = -50
		}
		# Add a breather before the next SA.
		fp1_add_realm_size_appropriate_sa_reprieve_effect = yes

		stress_impact = {
			generous = minor_stress_impact_loss
			humble = minor_stress_impact_loss
			content = minor_stress_impact_loss
			fickle = minor_stress_impact_loss
			forgiving = minor_stress_impact_loss
			greedy = major_stress_impact_gain
			arrogant = major_stress_impact_gain
			ambitious = major_stress_impact_gain
			stubborn = major_stress_impact_gain
			vengeful = major_stress_impact_gain
		}
		ai_chance = {
			# Base allowed to stay high, since the fiscal purchase here is pretty high and the AI usually won't make it anyway.
			base = 100
			ai_value_modifier = {
				ai_rationality = 0.25
				ai_greed = -0.5
				ai_vengefulness = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = generous
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = humble
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = content
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = fickle
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = forgiving
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = arrogant
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = ambitious
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = stubborn
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = vengeful
			}
		}
	}

	# Then we'll banish these Nords to the sea.
	option = {
		name = fp1_trade_events.1131.d

		# Opt-out.
		custom_tooltip = fp1_trade_events.1131.d.tt

		# No stress impact for the opt-out.
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = -0.25
				ai_vengefulness = -0.25
			}
		}
	}
}

##################################################
# A Holy Helping Hand
# by Ewan Cowhig Croft
# 1171 - 1180
##################################################

scripted_trigger fp1_trade_events_1171_child_can_marry_trigger = {
	# Rule out some unlikely candidates.
	is_available_healthy_ai_adult = yes
	is_ruler = no
	OR = {
		is_courtier_of = root.var:fp1_prime_trade_deal
		host ?= root.var:fp1_prime_trade_deal

	}
	# Make sure they're compatible.
	could_marry_character_trigger = { CHARACTER = root }
}

scripted_effect fp1_trade_events_1171_marry_partner_child_effect = {
	# Marry scope:prospective_spouse.
	## First, we divorce the old one. No need for checks, since we're basically regarding that marriage as invalid under the new faith.
	if = {
		limit = { is_married = yes }
		every_spouse = {
			save_temporary_scope_as = current_spouse
			scope:raider = {
				divorce_effect = {
					DIVORCER = scope:raider
					DIVORCEE = scope:current_spouse
				}
			}
		}
	}
	## Then we perform the new marriage.
	if = {
		limit = {
			has_ep2_dlc_trigger = yes
		}
		create_grand_wedding_betrothal = {
			SPOUSE_1 = root
			SPOUSE_2 = scope:prospective_spouse
			HOST = root
			PROMISEE = scope:partner
		}
	}
	else = { marry = scope:prospective_spouse }
	create_alliance = {
		target = scope:partner
		allied_through_owner = scope:raider
		allied_through_target = scope:prospective_spouse
	}
	# Convert to scope:partner's faith.
	set_character_faith_with_conversion = scope:partner.faith
	if = {
		limit = { 
			scope:partner.faith = { has_doctrine = doctrine_monotheist }
		}
		custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
	}
	# Do so in a very public and celebrated manner, gaining piety.
	add_piety = massive_piety_gain
	# Paid a dowry by scope:partner.
	scope:partner = {
		pay_short_term_gold = {
			target = scope:raider
			gold = massive_gold_value
		}
	}
}

#	Someone you have a raid-trade agreement with offers the hand of a child and conversion aid.
fp1_trade_events.1171 = {
	type = character_event
	title = fp1_trade_events.1171.t
	desc = fp1_trade_events.1171.desc
	theme = alliance
	left_portrait = {
		character = scope:raider
		animation = personality_rational
	}
	right_portrait = {
		character = scope:partner
		animation = admiration
	}
	lower_center_portrait = scope:prospective_spouse
	override_background = { reference = docks }

	trigger = {
		# DLC check.
		has_fp1_dlc_trigger = yes
		# Standard checks.
		## Allow when commanding to be fairer to people out raiding, which we incentivise you to do personally to get pacts to begin with.
		is_available_adult_or_is_commanding = yes
		NOT = { has_character_flag = had_event_fp1_trade_events_1171 }
		is_landed = yes
		# Scope:raider's prime trade deal must still be valid & available.
		fp1_prime_trade_partner_still_valid_trigger = {
			RECIPIENT = root.var:fp1_prime_trade_deal
			RAIDER = root
		}
		root.var:fp1_prime_trade_deal = { is_available_adult_or_is_commanding = yes }
		# Must be of a disorganised faith and separate religion.
		faith = {
			has_doctrine_parameter = unreformed
			NOT = { religion = root.var:fp1_prime_trade_deal.religion }
			# For that matter, either root must be unmarried, or scope:partner can't have syncretic folk traditions (and so respect for their marriage.)
			OR = {
				root = { is_married = no }
				NOT = { has_doctrine = tenet_unreformed_syncretism }
			}
		}
		# Plus, general considerations.
		root.var:fp1_prime_trade_deal = {
			# They must really like scope:raider.
			opinion = {
				target = root
				value >= high_positive_opinion
			}
			# Have a free child.
			any_child = { fp1_trade_events_1171_child_can_marry_trigger = yes }
			# Not be cynical, so they may care about souls.
			NOT = { has_trait = cynical }
			# For the sake of sanity, filter out players.
			is_ai = yes
			# Since it's AI, and specific enough already, we're happy to let them plunge into debt over this.
		}
		# Finally, just double check the
		NAND = {
			has_variable_list = humsacd_hofs
			is_target_in_variable_list = {
				name = humsacd_hofs
				target = root.var:fp1_prime_trade_deal.faith
			}
		}
	}
	weight_multiplier = {
		base = 1
		
		# Weight up a little for certain lifestyle traits, as these spread stories of your success and accomplishments.
		modifier = {
			add = 0.25
			has_trait = diplomat
		}
		modifier = {
			add = 0.25
			has_trait = avaricious
		}
		# Weight up for this being a renewed treaty.
		modifier = {
			add = 1
			exists = root.var:fp1_renewed_trade_deal
			exists = root.var:fp1_prime_trade_deal
			root.var:fp1_prime_trade_deal = root.var:fp1_renewed_trade_deal
		}
	}

	immediate = {
		# Once per lifetime.
		add_character_flag = { flag = had_event_fp1_trade_events_1171 }
		# Grab our actors.
		save_scope_as = raider
		var:fp1_prime_trade_deal = { save_scope_as = partner }
		## Including a suitable spouse.
		scope:partner = {
			random_child = {
				limit = { fp1_trade_events_1171_child_can_marry_trigger = yes }
				save_scope_as = prospective_spouse
			}
		}
	}

	# SheHe _does_ make quite a compelling case...
	option = {
		name = fp1_trade_events.1171.a

		# Gain assorted mixed awesome benefits.
		fp1_trade_events_1171_marry_partner_child_effect = yes
		# Step friendship.
		progress_towards_friend_effect = {
			CHARACTER = scope:partner
			OPINION = 50
			REASON = friend_fp1_converted_faith_married
		}

		stress_impact = {
			cynical = minor_stress_impact_loss
			trusting = minor_stress_impact_loss
			greedy = minor_stress_impact_loss
			paranoid = medium_stress_impact_gain
			zealous = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_boldness = 0.5
				ai_greed = 0.5
				ai_zeal = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = cynical
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = trusting
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = greedy
			}
			modifier = {	# Weight down for stress.
				add = -20
				has_trait = paranoid
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = zealous
			}
		}
	}
	
	# Let us swear an oath of fraternity!
	option = {
		name = fp1_trade_events.1171.b
		trigger = {
			can_set_relation_best_friend_trigger = { CHARACTER = scope:partner }
		}

		# Gain assorted mixed awesome benefits.
		hidden_effect = { fp1_trade_events_1171_marry_partner_child_effect = yes }
		custom_tooltip = fp1_trade_events.1171.b.tt
		# Also, become best friends.
		set_relation_best_friend = { reason = best_friend_coverted_and_saved_my_soul copy_reason = friend target = scope:partner }

		stress_impact = {
			cynical = minor_stress_impact_loss
			trusting = minor_stress_impact_loss
			gregarious = minor_stress_impact_loss
			paranoid = medium_stress_impact_gain
			shy = major_stress_impact_gain
			zealous = major_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = 0.5
				ai_boldness = 0.5
				ai_zeal = -0.75
			}
			modifier = {	# Weight up for stress.
				add = 10
				has_trait = cynical
			}
			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 = -20
				has_trait = paranoid
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = shy
			}
			modifier = {	# Weight down for stress.
				add = -30
				has_trait = zealous
			}
		}
	}
	
	# No manner of bribes can tempt me away.
	option = {
		name = {
			trigger = { has_trait = cynical }
			text = fp1_trade_events.1171.c.cynical
		}
		name = {
			trigger = {
				NOT = { has_trait = cynical }
			}
			text = fp1_trade_events.1171.c.fallback
		}

		# Needless to say, scope:partner is offended.
		reverse_add_opinion = {
			target = scope:partner
			modifier = insulted_opinion
			opinion = -40
		}
		# But hey, what a thing to turn down, amirite?
		add_prestige = major_prestige_gain

		# No stress for the opt-out.
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = 0.5
				ai_sociability = -0.5
			}
		}
	}
}

