﻿# Arrival in any province during travel
on_travel_plan_movement = {
	# It should be more likely to fire a danger event if it's valid for the given province
	trigger = {
		is_ruler = yes
		is_adult = yes 
	}

	on_actions = {
		travel_event_tombola
		delay = { days = 1 }
		travel_danger_events_on_action
		delay = { days = 2 }
		adventurer_talent_scouting_on_action
		delay = { days = 3 }
		adventurer_encourage_realtionships_on_action
		migration_events_on_action
		delay = { days = 1 }
	}

	events = {
		mpo_special_flavor_events.0001
	}

	# Increment the count of how many provinces the character has passed through
	# Used for loc in the travel completion event
	# Variable cleanup in the completion event (travel_completion_event.1000)
	effect = {
		# Wandering Lifestyle XP
		wandering_lifestyle_exp_post_travel_effect = yes
		# Increase xp for traveler trait
		traveler_progress_point_gain_effect = { CHANGE = 1 RANDOM_CHANGE = 1 }
		# Increment the count of how many provinces the character has passed through
		# Used for loc in the travel completion event
		# Variable cleanup in the completion event (travel_completion_event.1000)
		current_travel_plan = {
			if = {
				limit = { exists = var:travel_plan_provinces_traversed }
				change_variable = {
					name = travel_plan_provinces_traversed
					add = 1
				}
				if = {
					limit = {
						var:travel_plan_provinces_traversed > 50
						exists = root.var:travel_plan_start_date
						root = {
							NOT = { has_trait = lifestyle_traveler }
						}
					}
					root = {
						trigger_event = travel_events.0050
					}
				}
			}
		}
		#Track encountered cultures for worldly pilgrimage rewards
		if = {
			limit = {
				involved_activity ?= {
					has_activity_type = activity_pilgrimage
					has_activity_option = {
						category = special_type
						option = pilgrimage_type_worldly
					}
				}
				is_on_a_pilgrimage_trigger = yes
			}
			pilgrimages_track_encountered_cultures_effect = yes
		}		
		# We change your Legend if you travel through somewhere relevant
		if = {
			limit = {	
				current_travel_plan.current_location = {
					has_any_point_of_interest_flag = yes
				}
				has_legend_chapter_trigger = { CHAPTER = conclusion }
				NOT = {
					promoted_legend ?= {
						has_legend_chapter = {
							name = conclusion
							localization_key = legend_chapter_conclusion_point_of_interest
						}
					}
				}
			}
			current_travel_plan.current_location.county = { save_scope_as = county }
			random = {
				chance = 50
				send_interface_toast = {
					title = legend_chapter_change_toast
					left_icon = root
					right_icon = scope:county
					promoted_legend = {
						set_legend_chapter = {
							name = conclusion
							localization_key = legend_chapter_conclusion_point_of_interest
						}
					}
				}
			}
		}
		# Visited Points of Interest tracker, currently only for Adventurers
		points_of_interest_tracker_effect = yes

		# If you have the cultural ambassador travel option, we create a list of all the cultures you visit along your travel path and give out a slight bump at the end of your travel to cultural acceptance between your culture and their cultures
		current_travel_plan = {
			# Create a list of all the cultures you visit so we can consistently check if we should add a new one. Never want to apply the cultural acceptance bonus twice
			if = {
				limit = {
					has_travel_option = cultural_ambassador_option
					exists = var:cultural_ambassador_scope
					current_location = { is_sea_province = no }
				}
				if = {
					limit = {
						NOR = {
							has_variable_list = cultural_ambassador_culture_list
							current_location.culture = root.culture
							current_location = { is_sea_province = yes }
						}
					}
					add_to_variable_list = {
						name = cultural_ambassador_culture_list
						target = current_location.culture 
					}
				}
				else_if = {
					limit = {
						NOR = {
							is_target_in_variable_list = {
								name = cultural_ambassador_culture_list
								target = current_location.culture 
							}
							current_location.culture = root.culture
						}
					}
					add_to_variable_list = {
						name = cultural_ambassador_culture_list
						target = current_location.culture 
					}
					current_location = {
						culture = { save_scope_as = current_culture }
					}
					var:cultural_ambassador_scope = { save_scope_as = cultural_ambassador }
					root = {
						send_interface_toast = {
							type = event_toast_effect_good
							title = cultural_ambassador_toast.t
							left_icon = scope:cultural_ambassador
							scope:current_culture = {
								change_cultural_acceptance = {
									target = root.culture
									value = miniscule_cultural_acceptance_gain
									desc = cultural_ambassador_cultural_acceptance_gain_desc
								}
							}
						}
					}
				}
			}
		}
		# Achievements.
		if = {
			limit = { is_ai = no }
			ep2_im_in_my_elements_terrain_grabber_effect = yes
		}
		if = {
			limit = {
				is_hostage_warden = yes
				any_warden_hostage = {
					exists = location
					exists = home_court.location
					exists = root.location
					location = home_court.location
					location = root.location
				}
			}
			trigger_event = {
				id = bp2_yearly.6120
				days = 2
			}
		}
		#trigger contract completion event, if you have a contract with this location as contract destination
		if = {
			limit = {
				OR = { has_government = landless_adventurer_government has_government = landless_minority_government }
				any_character_active_contract = {
					var:task_contract_destination ?= root.current_travel_plan.current_location
					trigger_if = {
						limit = { exists = var:task_contract_object }
						var:task_contract_object = {
							current_travel_plan ?= {
								travel_plan_owner = root
							}
						}
					}
				}
			}
			every_character_active_contract = {
				limit = {
					var:task_contract_destination ?= root.current_travel_plan.current_location
					trigger_if = {
						limit = { exists = var:task_contract_object }
						var:task_contract_object = {
							current_travel_plan ?= {
								travel_plan_owner = root
							}
						}
					}
				}
				save_scope_as = task_contract
				if = {
					limit = {
						ep3_transport_contract_trigger = yes
					}
					task_contract_taker = {
						trigger_event = ep3_contract_event.0011
					}
				}
				else_if = {
					limit = {
						has_task_contract_type = laamp_help_increase_control_contract
					}
					task_contract_taker = {
						trigger_event = ep3_contract_event.0093
					}
				}
			}
		}
		
		#Surveyor MAA Mustering
		surveyor_perk_mustering_effect = yes

		#Charting the Realm Perk counter for mapmaking
		charting_the_realm_perk_effect = yes

		# Wanderer Journey Focus
		if = {
			limit = {
				has_focus = wanderer_journey_focus
			}
			add_stress = -2
		}
		# Wayfarer Fame
		if = {
			limit = {
				has_perk = far_and_wide_perk	
			}
			add_prestige_experience = 10
		}
		# Wayfarer Popularity
		of_the_people_effect = yes
		# Voyager Opinion
		voyager_gracious_host_impeccable_guest_effect = yes
		#Tutor Child Travel Option
		surveyor_tutor_child_effect = yes
		reminiscing_event_effect = yes		

		# General laamp effects.
		if = {
			limit = {
				current_travel_plan = { is_travel_with_domicile = yes }
			}
			# Trigger interface alert if provisions are critically low
			root = {
				if = {
					limit = {
						domicile = { domicile_uses_provisions = yes }
						domicile.provisions < provisions_threshold_critical_low_value
						NOT = { has_character_flag = notified_of_low_provisions }
					}
					send_interface_message = {
						type = danger_landless_adventurer_bad_with_text
						title = critically_low_provisions_alert
						left_icon = root
						# Add a small cooldown, or it will trigger for every province you enter!
						add_character_flag = {
							flag = notified_of_low_provisions
							years = 1
						}
						desc = critically_low_provisions_alert_desc
					}
				}
			}
			# Trigger the low provisions events if appropriate.
			trigger_event = { on_action = travel_laamps_provisions_on_action }
			# Small chance of seeing contracts on the road as you go.
			if = {
				limit = {
					is_ai = no
					location = { is_sea_province = no }
				}
				random = {
					chance = 5
					save_scope_value_as = {
						name = toggle_distance_ignore
						value = yes
					}
					populate_location_with_special_contracts_effect = {
						AREA_CHAR = location.county.holder
						AMOUNT = 1
					}
				}
			}
			# Clean up old contracts after you.
			if = {
				limit = { is_ai = no }
				save_scope_as = char_temp
				every_character_task_contract = {
					limit = {
						NOR = {
							has_variable = retain_despite_distance
							save_temporary_scope_as = contract_temp
							scope:char_temp = {
								any_character_active_contract = { this = scope:contract_temp }
							}
						}
						"task_contract_location.squared_distance(scope:char_temp.location)" > define:NTaskContract|ADVENTURER_DISTANCE_RESTRICTION
					}
					invalidate_contract = yes
				}
			}
		}
		if = {
			limit = {
				current_travel_plan ?= { has_travel_option = adventurers_make_local_deals_option }
				NOT = {
					is_target_in_variable_list = {
						name = haggle_provinces
						target = root.current_travel_plan.current_location
					}
				}
				root.current_travel_plan.current_location.available_loot > 0
			}
			add_gold = adventurers_make_local_deals_option_value
			add_to_variable_list = {
				name = haggle_provinces
				target = root.current_travel_plan.current_location 
			}
		}
		if = {
			limit = {
				current_travel_plan ?= { has_travel_option = adventurers_search_for_secrets_option }
				root.current_travel_plan.current_location = {
					any_character_in_location = {
						NOR = {
							this = root
							is_courtier_of = root
						}
						any_secret = {
							NOT = { is_known_by = root }
							is_blackmailable_secret_trigger = {
								PARTICIPANT = prev
								BLACKMAILER = root
							}
						}
					}
				}
			}
			random = {
				chance = root.intrigue
				root.current_travel_plan.current_location = {
					random_character_in_location = {
						limit = {
							NOR = {
								this = root
								is_courtier_of = root
							}
							any_secret = {
								NOT = { is_known_by = root }
								is_blackmailable_secret_trigger = {
									PARTICIPANT = prev
									BLACKMAILER = root
								}
							}
						}
						random_secret = {
							limit = {
								NOT = { is_known_by = root }
								is_blackmailable_secret_trigger = {
									PARTICIPANT = prev
									BLACKMAILER = root
								}
							}
							save_scope_as = secret_target
						}
						save_scope_as = secret_target_holder
					}
				}
				send_interface_message = {
					type = secret_discovered_message
					title = adventurers_search_for_secrets_option.title
					left_icon = scope:secret_target_holder
					scope:secret_target = {
						reveal_to_without_events_effect = {
							CHARACTER = root
						}
					}
				}
			}
		}
		if = {
			limit = {
				current_travel_plan ?= { has_travel_option = adventurers_proselytize_zealously_option }
				any_pool_character = {
					province = root.current_travel_plan.current_location
					is_physically_able_adult = yes
					NOR = {
						faith = root.faith
						has_relation_rival = root
						has_character_flag = ai_will_not_convert
						has_trait = zealous
					}
					OR = {
						is_pool_character = yes
						is_pool_guest = yes
					}
				}
			}
			random = {
				chance = root.learning
				random_pool_character = {
					province = root.current_travel_plan.current_location
					limit = {
						is_physically_able_adult = yes
						NOR = {
							faith = root.faith
							has_relation_rival = root
							has_character_flag = ai_will_not_convert
							has_trait = zealous
						}
						OR = {
							is_pool_character = yes
							is_pool_guest = yes
						}
					}
					save_scope_as = wanderer_to_convert
				}
				send_interface_message = {
					type = send_interface_message_good
					title = adventurers_proselytize_zealously_option.title
					left_icon = scope:wanderer_to_convert
					add_piety = miniscule_piety_value
					scope:wanderer_to_convert = {
						set_character_faith = root.faith
					}
				}
			}
		}
		if = {
			limit = {
				current_travel_plan ?= { has_travel_option = adventurers_gather_inspiration_option }
				any_courtier = {
					is_physically_able_ai_adult = yes
					NOT = { exists = inspiration }
				}
			}
			random = {
				chance = {
					value = root.stewardship
					divide = 6
					min = 1
				}
				random_courtier = {
					limit = {
						is_physically_able_ai_adult = yes
						NOT = { exists = inspiration }
					}
					save_scope_as = inspired_follower
					grant_inspiration_to_character_no_court_artifacts_effect = { CHARACTER = this }
				}
				send_interface_message = {
					type = send_interface_message_good
					title = adventurers_gather_inspiration_option.title
					left_icon = scope:inspired_follower
					scope:inspired_follower = {
						custom_tooltip = {
							text = adventurers_gather_inspiration_option.effect
						}
					}
				}
			}
		}
		if = {
			limit = {
				has_perk = church_and_state_perk
				has_government = landless_adventurer_government
				location = { has_holding_type = church_holding }
			}
			add_piety = miniscule_piety_gain
		}
		# laamp_base_1041/Ambush Travellers task contract minigame.
		current_travel_plan ?= {
			if = {
				limit = { has_variable = activate_laamp_base_1041_logic }
				travel_plan_owner.var:laamp_base_1041_travel_plan_contract_storage = {
					if = {
						limit = { var:event_ratio_tracker >= 1 }
						increment_variable_effect = {
							VAR = event_ratio_tracker
							VAL = -1
						}
					}
					else_if = {
						limit = { var:encounters_tally < var:encounters_max }
						root = { trigger_event = laamp_base_contract_schemes.1782 }
						set_variable = {
							name = event_ratio_tracker
							value = var:event_ratio
						}
						increment_variable_effect = {
							VAR = encounters_tally
							VAL = 1
						}
					}
				}
			}
		}
		#Special raiding migration event option
		if = {
			limit = {
				location ?= {
					has_holding = yes
				}
				is_migrating = yes
				has_character_flag = migration_raiding_flag
				location.county.holder = {
					NOR = {
						has_relation_friend = root
						has_relation_best_friend = root
						root = {
							is_tributary_of = prev
						}
						is_vassal_of = root
						root = {
							is_vassal_of = prev
						}
						is_allied_to = root
					}
				}
			}
			location.county.holder = {
				save_scope_as = local_ruler
			}
			trigger_event = migration_events.1051
		}
	}
}

travel_danger_events_on_action = {
	trigger = {
		is_migrating = no # No Danger events while migrating
		exists = current_travel_plan
	}
	random_events = {
		chance_of_no_event = {
			value = {
				add = 100
				if = {
					limit = {
						exists = root.current_travel_plan
						exists = root.location
					}
					subtract = root.current_travel_plan.current_danger_value
					add = root.current_travel_plan.travel_safety
				}
			}
			max = {
				value = 100
				subtract = define:NTravel|TRAVEL_DANGER_MINIMUM
			}
		}
		10 = 0
		100 = travel_danger_events.1000 # Danger! Hills Terrain
		100 = travel_danger_events.1002 # Danger! Mountain Terrain
		100 = travel_danger_events.1003 # Danger! Wetlands
		100 = travel_danger_events.1006 # Danger! Forest/Taiga
		100 = travel_danger_events.1007 # Danger! Desert/Desert Mountains
		100 = travel_danger_events.1008 # Danger! Occupied Territory
		100 = travel_danger_events.1011 # Danger! Winter - an entourage member suffered a frostbite
		100 = travel_danger_events.1012 # Danger! An entourage member is trying to eat a poisonous plant
		100 = travel_danger_events.1013 # Danger! Runaway entourage member
		100 = travel_danger_events.2000 # Danger! Jungle!
		100 = travel_danger_events.2001 # Danger! Flood!
		100 = travel_danger_events.3000 # Danger! Mountain/Desert Mountain - Somebody falls from the trail
		100 = travel_danger_events.3001 # Danger! Mountain/Desert Mountain - Winter present - Avalanche!
		100 = travel_danger_events.3003 # Danger! Snowbound
		100 = travel_danger_events.3004 # Danger! Sea - Ripped sails
		100 = travel_danger_events.3005 # Danger! Hills - Brushfire
		250 = epidemic_events.3000 # Danger! You travel through an infected province
		250 = epidemic_events.3010 # Danger! You travel through an infected province and you may get infected
		100 = travel_danger_events.4000 # Danger! Sea - Someone falls overboard
		100 = travel_danger_events.4010 # Danger! Illness - an entourage member falls ill
		100 = travel_danger_events.9000 # Danger! Wetlands, Floodplains, Forest, Jungle: Blood-sucking Insect Swarm
		100 = travel_danger_events.9010 # Danger! All terrains: Wagon wheel breaks
		25 = travel_danger_events.9020 # Danger! Sea, Desert, War: Emaciated
		250 = travel_danger_events.6000 # Danger! Forest/jungle - beast attacks
		250 = travel_danger_events.6010 # Danger! Siege - deserter bandits
		250 = travel_danger_events.6011 # Danger! Battle - deserter bandits
		250 = travel_danger_events.6012 # Danger! Army - deserter bandits
		250 = travel_danger_events.6013 # Danger! Occupied - deserter bandits
		10 = travel_danger_events.6020 # Danger! Sea - everyone dies
		100 = travel_danger_events.6030 # Danger! Spoiled food
		100 = travel_danger_events.6040 # Danger! Sickness
		100 = travel_events.1003 # Danger! Bandit attack
		100 = travel_events.1005 # Danger! Artifact washes overboard
		100 = travel_events.3070 # Danger! Bandits on a bridge
		100 = travel_events.3100 #Danger! Steppe - Feeble mounts
		100 = travel_events.3120 #Danger! Taiga/Jungle/Forest - Woods catch fire
		50 = travel_events.3130 #Danger! Rival - Rival sends professional assassin to get you
		100 = travel_events.3140 #Danger! Army in province - Army in province tries to capture you
		100 = travel_events.3160 #Danger! Forest/Taiga/Battle in province - Crows find you
		100 = travel_events.4007 # Danger! A storm at sea
		100 = travel_events.4016 # Danger! You experience heatstroke
		100 = travel_events.2016 # Danger! Visit a hill farm - Bull rush! (moved here because of extreme danger)
		100 = travel_danger_events.5000 # Danger! Your entourage members have a dispute
		100 = travel_danger_events.5010 # Danger! pariah event
		100 = travel_danger_events.7000 # Danger! an entourage member is bitten by a snake
		#Bilateral Ruler events
		100 = travel_events.2106 # Danger! You get attacked while passing through a capital province; will the Province Owner help you?
		100 = travel_events.4020 # Danger! Strong believers harass your caravan and demand payment
		100 = travel_events.4003 # You encounter vikings at sea
		250 = bp1_yearly.0100 # You are caught in a storm and a rival's property is the only shelter
		100 = travel_danger_events.1020 # Danger! Your horse is stuck and can die

		#Specific Falling Ill events during pilgrimage
		25 = pilgrimage.2008 # Fall ill
		50 = pilgrimage.2009 # Develop pneumonia

		200 = natural_disaster_flavor_events.0001 # As Scavengers Gather - Search the ruins for loot or survivors
		200 = natural_disaster_flavor_events.0010 # Desperate Souls - Decide how to deal with a throng of paupers
		
		# Laamp Travel Danger Events
		350 = ep3_laamp_flavour_ewan.4001	# Bandits! - Bandit raid.
		350 = ep3_laamp_flavour_ewan.4021	# Parched - Difficulty finding water.
		200 = ep3_laamp_flavour_ewan.4031	# Sickness in the Herd - Pack animals are sick or wounded.
		100 = ep3_laamp_flavour_ewan.4041	# Worn Down - Bad weather destroys wagons or pack animals.
		100 = ep3_laamp_flavour_ewan.4051	# Supplies Unaccounted For - Supplies go missing in large armies.
		100 = ep3_laamp_flavour_ewan.4061	# Eyes in the Night - local predator picking off people each evening.
		350 = ep3_laamp_flavour_ewan.4071	# Slavers - bastards try to kidnap people from the edges of your train.
		350 = ep3_laamp_flavour_ewan.4081	# Born of Desperation - hungry locals swarm at you, searching for food.
		350 = ep3_laamp_flavour_ewan.4091	# Night Attack - unknown group assaults your camp one evening.
	}
}

travel_events_on_action = {
	trigger = {
		NOT = { has_character_flag = in_pilgrimage_event_chain }
		#Barons don't need travel events - to avoid them bloating their court when getting add_courtier events
		highest_held_title_tier >= tier_county
	}

	effect = {
		#Invalidate Tribute Missions
		tribute_mission_invalidation_effect = yes
		# Invalidate travelling hostages
		hostage_travel_invalidation_effect = yes
		# Invalidate travelling wards
		ward_travel_invalidation_effect = yes
		# Invalidate travelling guardians
		guardian_travel_invalidation_effect = yes
	}

	random_events = {
		chance_of_no_event = {
			value = 80
			if = {
				limit = {
					is_ai = yes
				}
				add = 19 # Not very important that AI's get these
			}
			if = { # Less regular travel events when you're migrating
				limit = {
					is_migrating = yes
				}
				add = 15
			}
		}
		100 = 0 
		5 = travel_events.1000 #Peasant with no shoes
		10 = travel_events.2000 #Good omen? - Encounter a duck
		100 = travel_events.2002 #Crossing an ant path - Ignore or don't ignore your guide
		100 = travel_events.2003 #Visit the local military place (barrack/military camp/regiment grounds) - Try to improve your martial
		100 = travel_events.2004 #Visit (your own) crappy pasture - Try to address or ignore the issues
		100 = travel_events.2005 #Visit another ruler's pasture - Give advice or sabotage the pasture
		100 = travel_events.2006 #Visit a camel farm - Get defiled by a camel
		100 = travel_events.2007 #Visit an elephant pen - Train with the elephants
		150 = travel_events.2008 #Visit an elephant pen, your rival is on site - Attempt to crush your rival?
		150 = travel_events.2010 #Visit an orchard - Kid falls out of tree
		100 = travel_events.2012 #Visit a plantation - Fire!
		250 = travel_events.2013 #Visit a hillfort - Train to gain military skillz
		300 = travel_events.2014 #Visit a logging camp - Burn off some stress chopping wood
		100 = travel_events.2015 #Visit a peat quarry - Try not to fall asleep
		100 = travel_events.2017 #Visit a 'haunted' mansion (farm estate) - Enter at your own peril
		150 = travel_events.2025 #Visit your own farm estate - Tax or don't tax your hospitable subject
		150 = travel_events.2026 #Visit someone else's farm estate - Pay or don't pay for the hospitality
		150 = travel_events.2027 #Visit your own quarry - Encounter hungry workers
		150 = travel_events.2028 #Visit someone else's quarry - Encounter an architect
		100 = travel_events.2029 #Visit a cereal field - Encounter a heathen
		150 = travel_events.2031 #Visit another cereal field - Encounter a gardener
		150 = travel_events.2032 #Visit a ramparts/forest fort - Encounter a herbalist/physician
		100 = travel_events.2033 #Visit some hunting grounds - Your entourage prisoner escapes. Manhunt?
		100 = travel_events.2034 #Your escaped manhunted prisoner seeks revenge
		100 = travel_events.2036 #Your escaped prisoner is... pretty peaceful actually
		100 = travel_events.2037 #Visit some hunting grounds - Sadistic province owner is manhunting
		150 = travel_events.2038 #Visit some hunting grounds - Friendly competition with an entourage member
		100 = travel_events.2200 #A local knight wants to fight someone
		100 = travel_events.3000 #Rumours about grotesque creatures
		100 = travel_events.3010 #Lost pet
		200 = travel_events.3030 #Infatuated knight
		150 = travel_events.3040 #Bishop gets religious doubts
		100 = travel_events.3150 #Rival in your entourage plots against you
		100 = travel_events.3060 #Hermit
		100 = travel_events.3080 #Knight errant
		150 = travel_events.3090 #Temple visiting
		100 = travel_events.4000 # Encounter a mystic on the road
		100 = travel_events.4001 # Encounter an adoring fan
		100 = travel_events.4002 # You determine that the women/men of X region are real pretty
		100 = travel_events.4004 # Fishermen at sea!
		100 = travel_events.4005 # Encounter a caravan of merchants at sea
		100 = travel_events.4006 # A local bird lands on your boat and eats some supplies
		100 = travel_events.4008 # Shipwreck!
		15 = travel_events.4012 # You are being followed by a feral child
		100 = travel_events.4015 # Asking for directions from a diff. language character
		100 = travel_events.4017 # Swords for hire!
		100 = travel_events.4018 # A mendicant preacher!
		100 = travel_events.4019 # You pass by a peasant street food place, demand to sample some
		100 = travel_events.4021 # You witness a human sacrifice!
		100 = travel_events.4022 # You witness some tree worship in a Sanctity of Nature province
		100 = travel_events.4023 # Prester John! You find a same-religion ruler in a faraway land
		100 = travel_events.4028 # You come across a runestone!
		100 = travel_events.4029 # You come across dimwit strung up on a post
		100 = travel_events.4031 # You come across a knight stuck in his armour
		100 = travel_events.4032 # You come across a noble being assaulted by a random animal
		100 = travel_events.4033 # A witch who strangely isn't being burned
		100 = travel_events.4035 # You are a witch and you're being harassed by locals
		100 = travel_events.4036 # Caravaneers want to sell you some cool stuff
		100 = travel_events.4037 # You enter a place that is syncretic with your faith
		100 = travel_events.4038 # You enter a province which your faith is syncretic with
		100 = travel_events.4039 # You enter a ritual hospitality province and are offered a rest
		100 = travel_events.4040 # You meet a xenophile character who wants to learn about your culture
		100 = tour_travel.3010 # Local saint shrine
		100 = travel_events.4050 # hostage/ward/different culture courtier acts as cultural mediator
		200 = hunt.8200 # Falconry Practice
		500 = hunt.8210	#Pursued by a Shrine Maiden
		#Cultural Tradition events
		100 = travel_events.1200 #Friendly People
		100 = travel_events.1201 #Chivalry
		100 = travel_events.1202 #Hard workers
		100 = travel_events.1203 #Loyal subjects
		100 = travel_events.1204 #Pacifism
		100 = travel_events.1205 #Spartan
		100 = travel_events.1206 #Hunters
		100 = travel_events.1207 #Vegetarians
		100 = travel_events.1208 #Seafaring
		100 = travel_events.1209 #Storytellers
		100 = travel_events.1210 #Music theory
		100 = travel_events.1211 #Poetry
		100 = travel_events.1212 #Fishermen
		100 = travel_events.1213 #Mendicant mystic
		100 = travel_events.1214 #Warrior culture
		100 = travel_events.1215 #Martial admiration
		100 = travel_events.1216 #Philosopher

		#Bilateral Ruler events
		100 = travel_events.2100 #Someone is trying to assassinate a Target Ruler (local ruler or other travelling ruler)!

		#Mystical animal story
		300 = hunt_mystical_animal.1002
		
		# BP3 Travel Events
		150 = travel_events_oltner_2.1000 # Mirage of the Cultivated Sands
		150 = travel_events_oltner_2.1010 # Hospitable Hospices
		150 = travel_events_oltner_2.1020 # The Camel Herder's Feast
		150 = travel_events_oltner_2.1030 # The Caravan's Passage
		150 = travel_events_oltner_2.1040 # Oasis of Tranquility
		150 = travel_events_oltner_2.1050 # Equine Emissaries
		150 = travel_events_oltner_2.1060 # Steward of the Stables
		150 = travel_events_oltner_2.1070 # The Horse Healer
		150 = travel_events_oltner_2.1080 # Pungent Prodigy
		150 = travel_events_oltner_2.1090 # Sentry of the Silent Dunes
		150 = travel_events_oltner_2.1100 # Bovine Bounty
		150 = travel_events_oltner_2.1110 # The Smith's Clangor
		150 = travel_events_oltner_2.1120 # A Broken Blacksmith
		150 = travel_events_oltner_2.1130 # The Sentinel Hills
		150 = travel_events_oltner_2.1140 # Diminutive Defenders
		150 = travel_events_oltner_2.1150 # The Echo of Horns
		150 = travel_events_oltner_2.1160 # Trailside Bond
		150 = travel_events_oltner_2.1170 # Path of Rivalry
		200 = travel_events_oltner_2.1180 # Moonlit Confessions
		150 = travel_events_oltner_2.1190 # A Stolen Keepsake
		150 = travel_events_oltner_2.1200 # Guardian Angel
		200 = travel_events_oltner_2.1210 # Nighttime Serenade
		100 = travel_events_oltner_2.1220 # Rivals' End
		100 = travel_events_oltner_2.1240 # The Travelling Troupe
		50 = wanderer_lifestyle_events.35 # Dreams of Distant Lands - Followup
		150 = travel_events_bp3.1 # Seasons of Change
		150 = travel_events_bp3.5 # Caught Outside
		150 = travel_events_bp3.10 # The Pilgrims to <X>
		150 = travel_events_bp3.15 # The Songs of <X>
		50 = travel_events_bp3.20 # The <X> Guild
		150 = travel_events_bp3.25 # The Toils of War
		150 = travel_events_bp3.30 # The Mercenaries of <X>
		150 = travel_events_bp3.35 # The Teacher of Knights
		150 = travel_events_bp3.40 # The Local Champion
		150 = travel_events_bp3.45 # The Wandering Knight
		150 = travel_events_bp3.50 # A Band of Two
		150 = travel_events_bp3.55 # Traveling Traders
		150 = travel_events_bp3.60 # A Small Deal
		150 = travel_events_bp3.65 # Purse Pursuit
		25 = travel_events_bp3.70 # <X> Festival
		150 = travel_events_bp3.75 # Dreams Brewing
		100 = travel_events_bp3.80 # A Life of Service
		150 = travel_events_bp3.85 # Brewers of Fame
		150 = travel_events_bp3.90 # Patron of <X>
		150 = travel_events_bp3.95 # A Pilgrim's Tale
		150 = travel_events_bp3.100 # Land of Milk and... Fish?
		150 = travel_events_bp3.105 # A Woman/Man of Unusual Skills
		150 = travel_events_bp3.110 # Heart-to-Heart
		150 = travel_events_bp3.115 # Night by the Campfire
		75 = travel_events_bp3.120 # The Wrecked Boat

		#FP3 Travelling through foreign faith land:
		300 = travel_events_fp3.0010 #Dying Embers
		300 = travel_events_fp3.0030 #A Feast for Falcons
		200 = fp3_scholarship.1010 # The Last Magi

		#FP3 Travel Events
		150 = travel_events_fp3.0020 #Qanat Diving
		200 = travel_events_fp3.0040 #Mare's Milk
		150 = travel_events_fp3.0050 #Tomb Raiders

		#CE1 Travel Events
		100 = legend_spread_events.8010 #Someone challenges you to a duel
		100 = travel_events.5001 #You come across a local legend

		#EP3 Travel Events
		1000 = ep3_travel_events.3000 #Waters of the Jordan
		300 = ep3_travel_events.3002 #Where Armenians Govern
		200 = ep3_travel_events.3010 #Anatolian Silence
		400 = ep3_emperor_yearly.2180 #Pilgrims come across an estate
		200 = court_events.3071 #Hidden - trigger court event for local ruler

		# LAAMP travel events
		100 = ep3_laamp_flavor.0001 # Carrion Eaters
		300 = ep3_laamp_flavor.0060 # Dead Weight
		200 = ep3_travel_events.8000 #To Belong Somewhere
		200 = ep3_travel_events.8010 #Won't Be Missed
		1000 = ep3_story_cycle_violet_poet.1000 #Nature's Bounty

		#MPO Travel Events
		100 = mpo_events_tova.0003 #A Jest Too Far
		100 = mpo_events_tova.0004 #Upset Rank
		100 = mpo_events_tova.0005 #Unhappy Soldiers
		100 = travel_events_mpo.0001 #You spot eagles circling the sky
		100 = travel_events_mpo.0010 # You encounter a muslim trader, riding a white camel
		100 = mpo_events_anna.0015 #A Morsel of Meat - choose the fate of a fawn stuck in a trap
		100 = mpo_events_anna.0020 #Race Against Time - encounter a wounded messenger
		100 = mpo_events_anna.0025 #Familiar Tunes - encounter with a performer
		
		#TGP Travel Events - China
		100 = tgp_travel_events.0025
		100 = tgp_travel_events.0030
		100 = tgp_travel_events.0035
		100 = tgp_travel_events.0040
		100 = tgp_travel_events.0045
	}
}

migration_events_on_action = {
	trigger = {
		is_migrating = yes
	}

	effect = {
		# Invalidate travelling hostages
		hostage_travel_invalidation_effect = yes
		# Invalidate travelling wards
		ward_travel_invalidation_effect = yes
		# Invalidate travelling guardians
		guardian_travel_invalidation_effect = yes
	}

	random_events = {
		chance_of_no_event = {
			value = 80
			if = {
				limit = {
					is_ai = yes
				}
				add = 19 # Not very important that AI's get these
			}
		}
		200 = 0
		100 = migration_events.1000 #happened upon a nice spot... to steal from
		100 = migration_events.1010 #Wife wants you to travel in the yurt wagon
		50 = migration_events.1020 #Family member wants to take land from local herder
		50 = migration_events.1030 #Your herds can't find good grazing land
		100 = migration_events.1040 #Local ruler offers you a meal and a gift 
		50 = migration_events.1050 #Your warriors raid a settlement your people pass
		50 = migration_events.1060 #The going is slow and your warriors want to ride on ahead
		100 = mpo_migration_travel_events.0001 # A ruler offers herd
		100 = mpo_migration_travel_events.0010 # You decide to give some herd away
		100 = mpo_migration_travel_events.0020 # Your migration target has low fertility
		100 = mpo_migration_travel_events.0040 # Herd must cross a river
		100 = mpo_migration_travel_events.0050 # A courtier falls in love and wants to stay behind
		20 = mpo_migration_travel_events.0030 # Danger! Herd is sick
		20 = mpo_migration_travel_events.0060 # Danger! Crazy horse
	}
}

travel_event_tombola = {
	trigger = {
		highest_held_title_tier >= tier_county
	}
	random_on_action = {
		chance_of_no_event = {
			value = 0
			if = {
				limit = {
					is_ai = yes
					highest_held_title_tier >= tier_kingdom
				}
				add = 30 # No need to waste performance here
			}
			else_if = {
				limit = {
					is_ai = yes
					highest_held_title_tier >= tier_duchy
				}
				add = 70 # No need to waste performance here
			}
			else_if = {
				limit = {
					is_ai = yes
				}
				add = 95 # AI counts aren't particularly important
			}
		}
		1 = travel_events_on_action
		2 = on_tour_travel
		2 = pilgrimage_journey_events
		2 = hajj_journey_events
	}
}

# Arrival in a destination province during travel (a travel plan can have multiple sequential destinations)
on_travel_plan_arrival = {
	trigger = {
		NOR = {
			AND = {
				#Block these from popping when arriving at the pilgrimage destination
				involved_activity ?= { has_activity_type = activity_pilgrimage }
				root.location = involved_activity.activity_location
			}
			has_character_flag = in_pilgrimage_event_chain
		}
	}
	random_events = {
		100 = 0
		100 = travel_events.3020 #A warm welcome
	}
	effect = {
		# Achievements.
		if = {
			limit = { is_ai = no }
			ep2_im_in_my_elements_terrain_grabber_effect = yes
		}
		#trigger contract completion event, if you have a contract with this location as contract destination
		if = {
			limit = {
				has_government = landless_adventurer_government
				any_character_active_contract = {
					var:task_contract_destination ?= root.current_travel_plan.current_location
					trigger_if = {
						limit = { exists = var:task_contract_object }
						var:task_contract_object = {
							current_travel_plan ?= {
								travel_plan_owner = root
							}
						}
					}
				}
			}
			every_character_active_contract = {
				limit = {
					var:task_contract_destination ?= root.current_travel_plan.current_location
					trigger_if = {
						limit = { exists = var:task_contract_object }
						var:task_contract_object = {
							current_travel_plan ?= {
								travel_plan_owner = root
							}
						}
					}
				}
				save_scope_as = task_contract
				if = {
					limit = {
						ep3_transport_contract_trigger = yes
					}
					task_contract_taker = {
						trigger_event = ep3_contract_event.0011
					}
				}
				else_if = {
					limit = {
						root = {
							any_character_active_contract = {
								has_task_contract_type = laamp_help_increase_control_contract
							}
						}
					}
					task_contract_taker = {
						trigger_event = ep3_contract_event.0093
					}
				}
			}
		}
		
		voyager_souvenirs_aplenty_effect = yes
		reminiscing_event_effect = yes
		
		# Visited Points of Interest tracker, currently only for Adventurers
		points_of_interest_tracker_effect = yes
	}
}

# Starting a travel plan (starting to travel to the first destination)
on_travel_plan_start = {
	trigger = {
		OR = {
			is_ruler = yes
			AND = {
				is_playable_character = no
				involved_activity ?= { has_activity_type = activity_playdate }
			}
		}
		NOT = { has_variable = recently_invalidated_hostage }
	}
	effect = {
		if = {
			limit = {
				has_character_modifier = isolating_modifier
			}
			remove_character_modifier = isolating_modifier
			if = {
				limit = {
					has_variable_list = isolating_relatives
				}
				every_in_list = {
					variable = isolating_relatives
					limit = { is_alive = yes }
					remove_character_modifier = isolating_modifier
					remove_character_flag = blocked_from_leaving
				}
				clear_variable_list = isolating_relatives
			}
		}
		if = {
			limit = { is_ruler = yes }
			set_variable = {
				name = travel_plan_start_date
				value = current_date
			}
			current_travel_plan = {
				set_variable = {
					name = travel_plan_start_date
					value = current_date
				}
				set_variable = {
					name = travel_plan_provinces_traversed
					value = 1
				}
			}
			# Add Court Physician and Bodyguard if they aren't already in the entourage
			if = {
				limit = {
					employs_court_position = court_physician_court_position
					current_travel_plan = {
						any_entourage_character = {
							NOT = { has_court_position = court_physician_court_position }
						}
					}
					any_court_position_holder = {
						type = court_physician_court_position
						is_available = yes
						is_travel_entourage_character = no
					}
				}
				random_court_position_holder = {
					type = court_physician_court_position
					limit = {
						is_available = yes
						is_travel_entourage_character = no
					}
					save_scope_as = court_phys
				}
				current_travel_plan = {
					add_companion = scope:court_phys
				}
			}
			if = {
				limit = {
					employs_court_position = bodyguard_court_position
					current_travel_plan = {
						any_entourage_character = {
							NOT = { has_court_position = bodyguard_court_position }
						}
					}
					any_court_position_holder = {
						type = bodyguard_court_position
						is_available = yes
					}
				}
				random_court_position_holder = {
					type = bodyguard_court_position
					limit = {
						is_available = yes
						is_travel_entourage_character = no
					}
					save_scope_as = bodyguard
				}
				current_travel_plan = {
					add_companion = scope:bodyguard
				}
			}
			if = {
				limit = {
					employs_court_position = akolouthos_court_position
					current_travel_plan = {
						any_entourage_character = {
							NOT = { has_court_position = akolouthos_court_position }
						}
					}
					any_court_position_holder = {
						type = akolouthos_court_position
						is_available = yes
						is_travel_entourage_character = no
					}
				}
				random_court_position_holder = {
					type = akolouthos_court_position
					limit = {
						is_available = yes
						is_travel_entourage_character = no
					}
					save_scope_as = akolouthos
				}
				current_travel_plan = {
					add_companion = scope:akolouthos
				}
			}
			# Achievements.
			## I'm in my Element(s)
			if = {
				limit = { is_ai = no }
				# Reset our prior list.
				clear_variable_list = ep2_im_in_my_elements_achievement_terrain_list
				ep2_im_in_my_elements_terrain_grabber_effect = yes
			}
		}
		else = {
			if = {
				limit = {
					any_parent = {
						is_alive = yes
						is_ai = no
						location = root.location
						this != root.involved_activity.activity_host
					}
				}
				random_parent = {
					limit = {
						is_alive = yes
						is_ai = no
						location = root.location
						this != root.involved_activity.activity_host
					}
					save_scope_as = carer
				}
			}
			else_if = {
				limit = {
					any_relation = {
						type = guardian
						is_alive = yes
						is_ai = no
						location = root.location
						this != root.involved_activity.activity_host
					}
				}
				random_relation = {
					type = guardian
					limit = {
						is_alive = yes
						is_ai = no
						location = root.location
						this != root.involved_activity.activity_host
					}
					save_scope_as = carer
				}
			}
			else_if = {
				limit = {
					liege ?= {
						is_alive = yes
						is_ai = no
						is_close_family_of = root
						location = root.location
						this != root.involved_activity.activity_host
					}
				}
				liege = { save_scope_as = carer }
			}
			if = {
				limit = { exists = scope:carer }
				scope:carer = {
					add_to_variable_list = {
						name = playdate_guests
						target = root
					}
					# Fire event after a day, once lists are built
					trigger_event = { id = travel_start_event.1051 days = 1 }
				}
			}
		}
		# fishery yurt modifier
		if = {
			limit = {
				government_has_flag = government_is_nomadic
				domicile ?= {
					has_domicile_building_or_higher = fishing_yurt_01
				}
			}
			domicile.domicile_location.county = {
				switch = {
					trigger = has_county_modifier
					fishing_yurt_county_modifier_3 = { remove_county_modifier = fishing_yurt_county_modifier_3 }
					fishing_yurt_county_modifier_2 = { remove_county_modifier = fishing_yurt_county_modifier_2 }
					fishing_yurt_county_modifier_1 = { remove_county_modifier = fishing_yurt_county_modifier_1 }
				}
			}		
		}
		# Wayfarer Popularity
		of_the_people_effect = yes
		# Wayfarer Stress Loss
		if = {
			limit = {
				has_perk = the_home_away_from_home_perk
			}
			add_character_modifier = the_home_away_from_home_modifier
		}
		reminiscing_event_effect = yes
		#Surveyor MAA Mustering
		surveyor_perk_mustering_effect = yes
		#Tutor Child Travel Option
		surveyor_tutor_child_effect = yes

		if = {
			limit = {
				has_character_modifier = wanderer_restlessness_modifier
			}
			send_interface_message = {
				title = wanderer_restlessness_removal_title
				right_icon = root
				add_wanderer_lifestyle_xp = 250
				stress_impact = { base = -25 }
				remove_character_modifier = wanderer_restlessness_modifier
			}
		}

		# Caravan Master Task
		if = {
			limit = {
				has_variable = prepare_travels_value
				var:prepare_travels_value >= 1
			}
			current_travel_plan = {
				set_variable = {
					name = prepare_travels_modifier_value
					value = root.var:prepare_travels_value
				}
				add_travel_plan_modifier = prepare_travels_modifier
			}
			remove_variable = prepare_travels_value
		}
	}
	events = {
		travel_start_event.1000 #Generic start (no activity)
		travel_start_event.1010 #Travelling to a Tournament
		travel_start_event.1020 #Setting off on a Tour
		travel_start_event.1030 #Travelling to a Wedding
		travel_start_event.1040 #Travelling to a Feast
		travel_start_event.1050 #Travelling to a Playdate
		travel_start_event.1060 #Going on a Pilgrimage
		travel_start_event.1070 #Travelling to a Hunt
		travel_start_event.1080 #Travelling to a Witch Ritual
		travel_start_event.1090 #Travelling to a Travel Lifestyle Activity
		travel_start_event.1100 #Travelling to an Examination
		travel_start_event.1110 #Travelling to a Mandala Ritual
		travel_start_event.1120 #Travelling to a Debate

		ep3_contract_event.0002 #When doing a Contract as Landless Adventurer fill your entourage with relevant people
		diarchy.0002 # Do we need to enter a regency or not?
		ep3_laamp_flavour_ewan.1102 #Adventurer's child helps them pack
		ep3_laamp_flavour_ewan.1103 #Follow-up events for adventurer's child helping with packing
	}
}

# Completed a travel plan (arrived at final destination, or completed through script)
# A travel plan ends either via 'on_travel_plan_complete' or 'on_travel_plan_abort'
on_travel_plan_complete = {
	trigger = {
		is_ruler = yes
	}
	first_valid = {
		pilgrimage.9010 #Bury the old host after finishing the Pilgrimage
		pilgrimage.9001 #Nice Spiritual Journey
		ep3_laamps.8000 # You arrive at a place you have a claim on
		tgp_east_asia_mandala_events.8496 #You are due for a Mandala Succession?
		travel_completion_event.1000
	}
	events = {
		ep3_laamps.9971
	}

	effect = {
		if = {
			limit = {
				exists = var:travel_plan_start_date
			}
			remove_variable = travel_plan_start_date
		}
		# Remove regencies if possible.
		trigger_event = {
			id = diarchy.0112
			days = 1
		}
		current_travel_plan = {
			every_entourage_character = {
				limit = {
					is_ai = yes
					is_adult = yes
				}
				random_list = {
					20 = {
						modifier = {
							exists = current_travel_plan.var:travel_plan_provinces_traversed
							add = {
								value = current_travel_plan.var:travel_plan_provinces_traversed
								divide = 5 
							}
						}
						if = {
							limit = {
								NOT = { has_trait = lifestyle_traveler }
							}
							add_trait = lifestyle_traveler 
						}
					}
					80 = {}
				}
			}
		}
		# Achievements.
		if = {
			limit = { is_ai = no }
			ep2_im_in_my_elements_terrain_grabber_effect = yes
		}

		# Wayfarer Popularity
		of_the_people_effect = yes
		# Wayfarer Stress Loss
		wayfarer_the_home_away_from_home_modifier_effect = yes
		# Voyager - Souvenirs Aplenty Perk
		voyager_souvenirs_aplenty_completion_effect = yes
		if = {
			limit = {
				current_travel_plan = {
					has_travel_option = leisurely_option
				}
			}
			send_interface_toast = {
				type = event_generic_good
				title = leisurely_option_effect
				
				add_prestige_experience = {
					value = {
						value = current_travel_plan.var:travel_plan_provinces_traversed
						multiply = 15
					}
				}
			}
		}
		reminiscing_event_effect = yes

		# Remove Excursion modifier
		destination_remove_excursion_modifier_effect = yes

		if = {
			limit = {
				has_perk = travel_logs_perk
				has_trait = lifestyle_traveler
			}
			send_interface_toast = {
				type = event_generic_good
				title = travel_logs_title
				
				add_trait_xp = {
					trait = lifestyle_traveler
					track = danger
					value = {
						value = current_travel_plan.var:travel_plan_provinces_traversed
						divide = 2
						max = 30
						min = 1
					}
				}
			}
		}

		# Roaming flag
		remove_character_flag = roaming_character

		# Give us fresh contracts if necessary.
		if = {
			limit = {
				current_travel_plan = { is_travel_with_domicile = yes }
			}
			#inform about moving the domicile
			send_interface_message = {
				type = msg_domicile_moved
				left_icon = root
				right_icon = root.location.barony
			}
			# Set up additional firing contracts.
			player_adventurer_contract_generation_on_wait_in_place_effect = yes
			# Generate contracts if you are far away from your previous location.
			player_adventurer_contract_generation_on_domicile_moved_effect = yes
			# If necessary, remove them immediately.
			remove_laamp_from_exiled_county_automatically_effect = {
				PROVINCE = root.location
				LAAMP = root
			}
			if = {
				limit = {
					has_government = landless_adventurer_government
					has_perk = souvenirs_aplenty_perk
				}
				every_courtier_or_guest = {
					add_opinion = {
						modifier = respected_camp_leader_opinion
						opinion = 10
						target = root
					}
				}
				if = {
					limit = {
						has_trait = gallowsbait
						NOT = { has_variable = souvenirs_aplenty_cooldown }
					}
					set_variable = {
						name = souvenirs_aplenty_cooldown
						months = 3
					}
					random_list = {
						1 = {
							souvenirs_aplenty_gallowsbait_effect = { TRACK = bandit }
						}
						1 = {
							souvenirs_aplenty_gallowsbait_effect = { TRACK = trickster }
						}
						1 = {
							souvenirs_aplenty_gallowsbait_effect = { TRACK = thief }
						}
						1 = {
							souvenirs_aplenty_gallowsbait_effect = { TRACK = poacher }
						}
						1 = {
							souvenirs_aplenty_gallowsbait_effect = { TRACK = marauder }
						}
					}
				}
			}
			if = {
				limit = {
					has_government = landless_adventurer_government
					has_perk = of_the_people_perk
					NOT = { has_variable = of_the_people_cooldown }
					diplomacy >= 1
				}
				set_variable = {
					name = of_the_people_cooldown
					months = 3
				}
				send_interface_message = {
					type = event_generic_good
					title = of_the_people_perk_name
					left_icon = root
					
					add_prestige_experience = {
						value = diplomacy
						multiply = 15
					}
				}
			}
		}
		if = {
			limit = {
				has_focus = wanderer_destination_focus
				any_child = {
					is_available_ai_child = yes
					age >= 6
					location = root.location
					save_temporary_scope_as = temp_scope
					NOT = {
						root.current_travel_plan = {
							any_entourage_character = {
								this = scope:temp_scope
							}
						}
					}
				}
			}
			random = {
				chance = 20
				random_child = {
					limit = {
						is_available_ai_child = yes
						age >= 6
						location = root.location
						save_temporary_scope_as = temp_scope
						NOT = {
							root.current_travel_plan = {
								any_entourage_character = {
									this = scope:temp_scope
								}
							}
						}
					}
					save_scope_as = demanding_relation

					root = {
						current_travel_plan.final_destination_province = {
							save_scope_as = dest_province
						}
						trigger_event = {
							ID = mpo_events_tova.0001
							days = { 2 3 }
						}
					}
				}
			}
		}

		# Visited Points of Interest tracker, currently only for Adventurers
		points_of_interest_tracker_effect = yes

		zealous_missionary_conversion_effect = yes

		if = {
			limit = { has_character_modifier = laamp_provisions_forgiveness_travel_modifier }
			remove_character_modifier = laamp_provisions_forgiveness_travel_modifier
		}

		# fishery yurt modifier
		if = {
			limit = {
				government_has_flag = government_is_nomadic
				domicile ?= {
					has_domicile_building_or_higher = fishing_yurt_01
				}
			}
			domicile ?= {
				switch = {
					trigger = has_domicile_parameter
					fishing_yurt_riverside_lakeside_fertility_bonus_lvl_3 = { domicile_location.county = { add_county_modifier = fishing_yurt_county_modifier_3 } }
					fishing_yurt_riverside_lakeside_fertility_bonus_lvl_2 = { domicile_location.county = { add_county_modifier = fishing_yurt_county_modifier_2 } }
					fishing_yurt_riverside_lakeside_fertility_bonus_lvl_1 = { domicile_location.county = { add_county_modifier = fishing_yurt_county_modifier_1 } }
				}
			}		
		}

		if = { # A fallback for the contract "Settle Theological Arguments" if you have your domicile in the same location as the start province, due to how the 'Travel Plan' effect works
			limit = {
				is_ai = no
				has_government = landless_adventurer_government
				exists = domicile
				root.domicile.domicile_location = current_travel_plan.final_destination_province
				any_character_task_contract = {
					has_variable = opportunities_left_tally
					var:opportunities_left_tally = 0
				}
			}
			random_character_task_contract = {
				limit = {
					has_variable = opportunities_left_tally
					var:opportunities_left_tally = 0
				}
				save_scope_as = task_contract
				task_contract_employer = {
					save_scope_as = employer
				}
			}
			trigger_event = laamp_base_learning_contract_events.4017
		}
		tribute_mission_clean_up_variables_effect = yes
	}
}

# Aborted a travel plan (travel plan was not completed, or aborted through script)
# A travel plan ends either via 'on_travel_plan_complete' or 'on_travel_plan_abort'
# This usually means everyone gets teleported to their default location after this.
on_travel_plan_abort = {
	trigger = { is_ruler = yes }
	events = {
		travel_completion_event.1000
		ep3_laamps.9971
	}
	effect = {
		if = {
			limit = { has_variable = ep3_laamp_decision_1000_is_excavating }
			remove_variable = ep3_laamp_decision_1000_is_excavating
		}
		if = {
			limit = {
				exists = var:travel_plan_start_date
			}
			remove_variable = travel_plan_start_date
		}
		# Wayfarer Popularity
		of_the_people_effect = yes
		# Wayfarer Stress Loss
		wayfarer_the_home_away_from_home_modifier_effect = yes
		# Remove Excursion modifier
		destination_remove_excursion_modifier_effect = yes
		# Roaming flag
		if = {
			limit = { has_character_flag = roaming_character } #We check for this to not try to remove the flag from dead characters
			remove_character_flag = roaming_character
		}

		if = {
			limit = {
				current_travel_plan = { is_travel_with_domicile = yes }
				# Check we're still an adventurer, as we may have inherited land whilst travelling.
				has_government = landless_adventurer_government
			}
			#inform about moving the domicile
			send_interface_message = {
				type = msg_domicile_moved
				left_icon = root
				right_icon = root.location.barony
			}
			# Set up additional firing contracts.
			player_adventurer_contract_generation_on_wait_in_place_effect = yes
			# Generate contracts if you are far away from your previous location.
			player_adventurer_contract_generation_on_domicile_moved_effect = yes
			# If necessary, remove them immediately.
			remove_laamp_from_exiled_county_automatically_effect = {
				PROVINCE = root.location
				LAAMP = root
			}
		}
		if = {
			limit = {has_character_modifier = laamp_provisions_forgiveness_travel_modifier }
			remove_character_modifier = laamp_provisions_forgiveness_travel_modifier
		}
		if = {
			limit = {
				has_character_flag = petition_liege_character_flag
			}
			send_interface_toast = {
				type = event_toast_effect_neutral
				title = petition_liege_costs_refunded
				left_icon = root 
				remove_decision_cooldown = petition_liege_decision
				# refund prestige and influence cost
				if = {
					limit = { petition_liege_admin_valid_trigger = yes }
					change_influence_no_experience = standard_activity_cost
				}
				else = {
					add_prestige_no_experience = standard_activity_cost
				}
			}
			# remove variables and flags 
			petition_liege_variable_cleanup_effect = yes
		}
		if = {
			limit = {
				has_character_flag = petition_ceremonial_liege_character_flag
			}
			remove_decision_cooldown = petition_ceremonial_liege_decision
			remove_character_flag = petition_ceremonial_liege_character_flag
		}

		# Invalidating travels to a Nomadic Settlement Contract
		mpo_invalidating_settlement_contract_effect = yes

		#Invalidate Mandala Contracts
		mandala_invalidate_contracts_effect = yes

		#Hit absentee Tributary with Tribute Mission penalty
		requested_tribute_mission_penalty_effect = yes
		tribute_mission_clean_up_variables_effect = yes
	}
}

# Cancelled a travel plan. Travel plan was cancelled by player interaction, and has
# been rerouted back home. (the travel plan doesn't end yet until they arrive home)
# People in the travel plan were removed from associated activities.
on_travel_plan_cancel = {
	effect = {
		if = {
			limit = { has_variable = ep3_laamp_decision_1000_is_excavating }
			remove_variable = ep3_laamp_decision_1000_is_excavating
		}
		if = {
			limit = {
				has_character_flag = petition_liege_character_flag
			}
			send_interface_toast = {
				type = event_toast_effect_neutral
				title = petition_liege_costs_refunded
				left_icon = root 
				remove_decision_cooldown = petition_liege_decision
				# refund prestige and influence cost
				if = {
					limit = { petition_liege_admin_valid_trigger = yes }
					change_influence_no_experience = standard_activity_cost
				}
				else = {
					add_prestige_no_experience = standard_activity_cost
				}
			}
			# remove variables and flags 
			petition_liege_variable_cleanup_effect = yes
		}
		if = {
			limit = { has_variable = petition_ceremonial_liege_character_flag }
			send_interface_toast = {
				type = event_toast_effect_neutral
				title = petition_ceremonial_liege_costs_refunded
				left_icon = root 
				remove_decision_cooldown = petition_ceremonial_liege_decision
				# refund prestige and influence cost
				if = {
					limit = { petition_liege_admin_valid_trigger = yes }
					change_influence_no_experience = standard_activity_cost
				}
				else = { add_prestige_no_experience = standard_activity_cost }
			}
			# remove variables and flags 
			petition_liege_variable_cleanup_effect = yes
		}
		if = {
			limit = { has_variable = pledge_loyalty_to_liege_scope }
			pledge_loyalty_to_liege_refund_and_cleanup_effect = yes
		}
		if = {
			limit = {
				has_variable = homage_liege_scope
			}
			send_interface_toast = {
				type = event_toast_effect_neutral
				title = pay_homage_costs_refunded
				left_icon = root 
				# Remove variable preventing you from paying homage again
				if = {
					limit = {
						has_variable = pay_homage_grace
						exists = liege
						var:pay_homage_grace = liege
					}
					remove_variable = pay_homage_grace
				}
				# Remove variable preventing you from Pledging Loyalty to your liege again
				if = {
					limit = {
						has_variable = pledge_loyalty_to_liege_grace
						exists = liege
						var:pledge_loyalty_to_liege_grace = liege
					}
					remove_variable = pledge_loyalty_to_liege_grace
				}
				# refund any costs
				add_prestige = standard_activity_cost
				if = {
					limit = {
						has_variable = pay_homage_gold_value
					}
					add_gold = var:pay_homage_gold_value
				}
			}
			# Variable cleanup
			if = {
				limit = { has_variable = homage_type }
				remove_variable = homage_type
			}
			# Contract
			if = {
				limit = { has_variable = pay_homage_contract_type }
				remove_variable = pay_homage_contract_type
			}
			# Liege
			if = {
				limit = { has_variable = homage_liege_scope }
				remove_variable = homage_liege_scope
			}
			if = {
				limit = { has_variable = pay_homage_gold_value }
				remove_variable = pay_homage_gold_value
			}
		}
		#remove variables from Meditate in Seclusion decision, event religious_decision.0201
		trigger_event = religious_decision.0200

		#remove variables from Rites of Passage: Seclusion decision, event bp2_yearly.7024
		if = {
			limit = {
				OR = {
					has_variable = cleansing_type
					has_variable = chosen_rite_memory
					has_variable_list = possible_rites
				}
			}
			remove_variable = cleansing_type
			remove_variable = chosen_rite_memory
			clear_variable_list = possible_rites
			add_character_flag = unproven_adult_flag #flag to be able to take the decision again
		}
		# Roaming flag
		if = {
			limit = {
				has_character_flag = roaming_character
			}
			remove_character_flag = roaming_character
		}

		# Invalidating travels to a Nomadic Settlement Contract
		mpo_invalidating_settlement_contract_effect = yes

		#Invalidate Mandala Contracts
		mandala_invalidate_contracts_effect = yes

		#Hit absentee Tributary with Tribute Mission penalty
		requested_tribute_mission_penalty_effect = yes
		tribute_mission_clean_up_variables_effect = yes
	}
}

# If the travel is due to an activity and the activity is now complete, this will trigger.
on_travel_activity_complete = {
}

# If the travel is due to an activity and the activity is invalidated (not completed), this will trigger.
# After this on_action, the travel plan will be rerouted home.
on_travel_activity_invalidated = {
	
}

# If the travel is due to an activity and the activity has started while this travel plan is still underway, this
# will trigger. The travel plan is already routed home at this point.
# Root - The owner of the travel plan
# scope:travel_plan - The travel plan
on_travel_activity_arrival_too_late = {
	effect = {
		trigger_event = {
			id = activity_system.0401
		}
	}
}

# If the travel is due to an activity and we estimate that we will not arrive in time for it, this will trigger.
# It will only trigger once, until the estimations change to be in time again.
# Root - The owner of the travel plan
# scope:travel_plan - The travel plan
# scope:estimated_arrival_diff_days - difference in days between activity start and estimated arrival (negative is arriving late)
on_travel_activity_estimated_arrival_too_late = {
	effect = {
		trigger_event = {
			id = activity_system.0400
		}
	}
}

# If the travel leader gets removed (not replaced), this will trigger.
# Root - The owner of the travel plan
# scope:travel_plan - The travel plan
# scope:old_travel_leader - The now removed leader.
on_travel_leader_removed = {
	trigger = {
		is_playable_character = yes
	}
	events = {
		travel_events.1020 # Provides the option to employ a new travel leader from your entourage or your current location
	}
}

#On action triggered from the poi_grand_city point of interest:
on_visited_grand_city = {
	events = {
		delay = { days = 1 }
		travel_events_cities.1010
		travel_events_cities.1020
		travel_events_cities.1030
	}
}

#On action triggered from ep3 points of interest
on_visited_ep3_monument = {
	events = {
		ep3_travel_events.3001
	}
}

#Used in the debug interaction debug_move_domicile_interaction
on_travel_relocation_start = {
	effect = {
		every_courtier_or_guest = { #take everyone you have with you
			limit = {
				NOT = { exists = current_travel_plan }
			}
			root.current_travel_plan = {
				add_companion = prev
			}
		}
	}
}

#Used in the debug interaction debug_move_domicile_interaction
on_travel_relocation_end = {
	effect = {
	}
}

travel_laamps_provisions_on_action = {
	trigger = {
		exists = domicile
		domicile.provisions <= provisions_privation_threshold_start
		NOT = { government_has_flag = government_is_nomadic } # Yurts don't have provisions
	}

	events = {
		ep3_laamps_provisions.1080
	}
	
	random_events = {
		chance_of_no_event = {
			value = 10
		}
		100 = ep3_laamps_provisions.1000
		100 = ep3_laamps_provisions.1010
		100 = ep3_laamps_provisions.1020
		100 = ep3_laamps_provisions.1025
		100 = ep3_laamps_provisions.1030
		100 = ep3_laamps_provisions.1040
		100 = ep3_laamps_provisions.1050
		100 = ep3_laamps_provisions.1060
		500 = ep3_laamps_provisions.1070
	}
}

adventurer_talent_scouting_on_action = {
	trigger = {
		OR = {
			current_travel_plan ?= { has_travel_option = adventurers_scout_for_talent_option }
			has_perk = toe_the_line_perk
		}
	}
	random_events = {
		chance_of_no_event = {
			if = {
				limit = {
					is_ai = yes
				}
				add = 90
			}
			else = {
				add = 50
			}
		}
		100 = 0
		100 = ep3_travel_option_events.0001
	}
}

adventurer_encourage_realtionships_on_action = {
	trigger = {
		current_travel_plan ?= { has_travel_option = adventurers_encourage_relationships_option }
	}
	random_events = {
		chance_of_no_event = {
			value = 50
		}
		100 = 0
		100 = ep3_travel_option_events.0002
		100 = ep3_travel_option_events.0003
		100 = ep3_travel_option_events.0004
	}
}
