##################################################
# INFO
# Extra contracts for laamps. Various types of contracts with interesting things to get and do, like wars, travel, artifacts and more.
#
##################################################



##################################################
# GROUPS (for populate_task_contracts_for_area)
#
# laamp_contracts_war_group
# laamp_contracts_criminal_group
# laamp_contracts_transport_group
# laamp_contracts_diplomacy_group
# laamp_contracts_intrigue_group
#
#
# NOTICEBOARD GROUPS (for Visit Settlement - ep3_laamp_decision_event.1025)
# laamp_contracts_noticeboard_group
#



##################################################
#
# laamp_raid_contract - Raid for Captives
# laamp_join_war_contract - Stand with Us
# laamp_help_claimant_contract - Press My Claims
# laamp_steal_artifact_contract - Reclaim Artifact
# laamp_construction_contract - Construction Work
# laamp_treasure_hunting_contract - Treasure Hunting
# laamp_cultural_minority_contract - Protect Heritage
# laamp_religious_minority_contract - Reward the Faithful
# laamp_prison_break_contract - Prison Break
# laamp_treasure_map_contract - Treasure Map
# laamp_legitimist_support_contract
# laamp_join_faction_contract - Support Faction
# laamp_help_faith_conversion_contract - Missionary Duties
# laamp_fight_faith_conversion_contract - Protect the Adherents
# laamp_help_train_commanders_contract - Knight's Coach
# laamp_help_find_secrets_contract - Private Eye
# laamp_help_fabricate_claim_contract - Forgotten Claims
# laamp_help_increase_control_contract - Fight Corruption
#
##################################################

## Raid for Captives
# scope:employer = ruler wanting to capture prisoners
# task_contract_target = character to declare war on
# task_contract_destination = capital of task_contract_target
laamp_raid_contract = {
	group = laamp_contracts_war_group
	icon = "gfx/interface/icons/casus_bellis/request_mercenary.dds"
	travel = no
	use_diplomatic_range = no

	# Validity Triggers
	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		employer_has_treasury_to_offer_job_trigger = yes
		valid_laamp_sensible_start_trigger = yes
		# Specific flavour triggers.
		scope:employer = {
			OR = {
				any_relation = {
					type = rival
					is_ai = yes
					is_adult = yes
					is_landed = yes
					capital_province.building_max_garrison < root.current_military_strength
					is_within_diplo_range = { CHARACTER = scope:employer }
					any_courtier_or_guest = {
						count >= 3
						OR = {
							AND = {
								has_dynasty = yes
								dynasty = prev.dynasty
							}
							is_consort_of = prev
						}
					}
				}
				any_neighboring_top_liege_realm_owner = {
					is_ai = yes
					is_adult = yes
					is_landed = yes
					capital_province.building_max_garrison < root.current_military_strength
					house_has_feud_relation_with_trigger = { TARGET = scope:employer }
					any_courtier_or_guest = {
						count >= 3
						OR = {
							AND = {
								has_dynasty = yes
								dynasty = prev.dynasty
							}
							is_consort_of = prev
						}
					}
				}
			}
		}
	}
	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
	}
	valid_to_continue = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_keep = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_somewhat_rare_value
		add = laamp_contracts_weight_up_mercenary_value
		add = laamp_contracts_weight_up_martial_slight_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				save_scope_as = task_contract_employer
				if = {
					limit = {
						NOT = { exists = scope:task_contract.task_contract_target }
					}
					if = {
						limit = {
							any_neighboring_top_liege_realm_owner = {
								is_ai = yes
								is_adult = yes
								is_landed = yes
								capital_province.building_max_garrison < root.current_military_strength
								house_has_feud_relation_with_trigger = { TARGET = scope:task_contract_employer }
								any_courtier_or_guest = {
									count >= 3
									OR = {
										AND = {
											has_dynasty = yes
											dynasty = prev.dynasty
										}
										is_consort_of = prev
									}
								}
							}
						}
						random_neighboring_top_liege_realm_owner = {
							limit = {
								is_ai = yes
								is_adult = yes
								is_landed = yes
								capital_province.building_max_garrison < root.current_military_strength
								house_has_feud_relation_with_trigger = { TARGET = scope:task_contract_employer }
								any_courtier_or_guest = {
									count >= 3
									OR = {
										AND = {
											has_dynasty = yes
											dynasty = prev.dynasty
										}
										is_consort_of = prev
									}
								}
							}
							save_scope_as = task_contract_target
							capital_province = {
								save_scope_as = task_contract_destination
							}
						}
					}
					else = {
						random_relation = {
							type = rival
							limit = {
								is_ai = yes
								is_adult = yes
								is_landed = yes
								capital_province.building_max_garrison < root.current_military_strength
								is_within_diplo_range = { CHARACTER = scope:task_contract_employer }
								any_courtier_or_guest = {
									count >= 3
									OR = {
										AND = {
											has_dynasty = yes
											dynasty = prev.dynasty
										}
										is_consort_of = prev
									}
								}
							}
							save_scope_as = task_contract_target
							capital_province = {
								save_scope_as = task_contract_destination
							}
						}
					}
				}
				else_if = {
					limit = {
						NOT = { exists = scope:task_contract.task_contract_destination }
					}
					scope:task_contract_target = {
						capital_province = {
							save_scope_as = task_contract_destination
						}
					}
				}
			}
			set_task_contract_target = scope:task_contract_target
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract_employer
			}
			set_variable = {
				name = task_contract_target
				value = scope:task_contract_target
			}
			set_variable = {
				name = task_contract_destination
				value = scope:task_contract_destination	
			}
		}
	}
	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0003
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_destination = {
				save_scope_as = task_contract_destination
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_raid_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
	}

	# Rewards
	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					scope:task_contract.var:task_contract_employer = {
						save_scope_as = task_contract_employer
					}
					#saving scopes for custom tooltip
					save_scope_as = attacker
					scope:task_contract.var:task_contract_target = {
						save_scope_as = defender
					}
					custom_tooltip = ep3_laamp_raid_contract_cb_prisoners.tt_attacker
					custom_tooltip = ep3_laamp_raid_contract_cb_prisoners.tt_gold
					trigger_event = ep3_contract_event.0004
					show_as_tooltip = {
						if = {
							limit = {
								faith != scope:defender.faith
							}
							add_piety = minor_piety_gain 
						}
					}
					# Huck 'em into our contact list.
					add_contact = scope:task_contract_employer
					# Give hook as well as contact
					add_hook_if_possible_default_length_effect = {
						TARGET = scope:task_contract_employer 
						TYPE = contact_list_weak_hook
					}
					war_contracts_completed_tracker_effect = yes
				}
			} 
		}		
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					scope:task_contract.task_contract_employer = {
						save_scope_as = task_contract_employer
					}
					save_scope_value_as = {
						name = task_contract_outcome
						value = flag:failure
					}
					save_scope_value_as = {
						name = task_contract_tier
						value = scope:task_contract.task_contract_tier
					}
					trigger_event = ep3_contract_event.0004
				}
				show_as_tooltip = {
					task_contract_taker = {
						add_prestige = task_contract_failure_prestige_loss_full_value
						reverse_add_opinion = {
							opinion = -50
							modifier = failed_task_contract_opinion
							target = scope:task_contract.task_contract_employer
						}
					}
				}
			}
		}
	}
}

## Stand with Us
# scope:employer = ruler needing help in a civil/religious/de_hure war
# scope:task_contract_war = civil/religious/de_hure war to join on the side of employer
laamp_join_war_contract = {
	group = laamp_contracts_war_group
	icon = "gfx/interface/icons/trait_level_tracks/mercenary.dds"
	travel = no
	use_diplomatic_range = no

	# Validity Triggers
	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		employer_has_treasury_to_offer_job_trigger = yes
		# Specific flavour triggers.
		scope:employer = {
			any_character_war = {
				ep3_adventurer_mercenary_war_trigger = {
					EMPLOYER = scope:employer
					LAAMP = root
				}
				save_temporary_scope_as = temp_war
			}
		}
		#don't spawn contracts for the same wars
		NOT = {
			any_character_task_contract = {
				task_contract_type = laamp_join_war_contract
				var:task_contract_war ?= scope:temp_war
			}
		}
		#or if you are already an ally in a war with someone in that war, to prevent being an ally and an enemy at the same time
		scope:temp_war = {
			any_war_participant = {
				NOT = {
					is_allied_in_war = root
				}
			}
		}
	}
	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		custom_tooltip = {
			text = laamp_join_war_contract.valid_war
			any_character_task_contract = {
				task_contract_type = laamp_join_war_contract
				exists = var:task_contract_war
				task_contract_employer = scope:employer
			}
		}
	}
	valid_to_continue = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_keep = {
		exists = root.var:task_contract_war
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_very_rare_value
		add = laamp_contracts_weight_up_mercenary_value
		add = laamp_contracts_weight_up_martial_slight_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				random_character_war = {
					limit = {
						is_war_leader = prev
						OR = {
							using_civil_war_cb_trigger = yes
							using_non_ghw_holy_war_cb_trigger = yes
							using_de_jure_cb_trigger = yes
							using_conquest_cb_trigger = yes
						}
						any_war_participant = {
							this != scope:task_contract.task_contract_taker
						}
					}
					save_scope_as = task_contract_war
				}
				save_scope_as = task_contract_employer
			}
			set_variable = {
				name = task_contract_war
				value = scope:task_contract_war
			}
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract_employer
			}
			scope:task_contract_war = {
				if = {
					limit = {
						is_attacker = scope:task_contract_employer
					}
					primary_defender = {
						save_scope_as = task_contract_target
					}
				}
				else = {
					primary_attacker = {
						save_scope_as = task_contract_target
					}
				}
			}
			set_task_contract_target = scope:task_contract_target
			set_variable = {
				name = task_contract_target
				value = scope:task_contract_target
			}
		}
	}

	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0008
		}
		set_variable = {
			name = task_contract_grace_period
			days = 90
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_join_war_contract
				}
			}

			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
	}

	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				var:task_contract_war = {
					save_scope_as = war
				}
				task_contract_employer = {
					save_scope_as = task_contract_employer
					save_scope_as = attacker
				}
				task_contract_taker = {
					save_scope_as = task_contract_taker
					save_scope_as = defender
					custom_tooltip = laamp_join_war_contract.contribution_based_reward_gold
					if = {
						limit = {
							faith != scope:task_contract.var:task_contract_target.faith
						}
						custom_tooltip = laamp_join_war_contract.contribution_based_reward_piety
					}
					save_scope_value_as = {
						name = task_contract_reward
						value = flag:success_standard
					}
					save_scope_value_as = {
						name = war_contribution_value
						value = "scope:war.war_contribution(scope:task_contract_taker)"
					}
					if = {
						limit = {
							exists = scope:task_contract_employer.var:valuable_prisoners
						}
						save_scope_value_as = {
							name = war_valuable_prisoners
							value = scope:task_contract_employer.var:valuable_prisoners
						}
					}
					save_scope_value_as = {
						name = task_contract_tier
						value = scope:task_contract.task_contract_tier
					}
					trigger_event = ep3_contract_event.0013
					# Huck 'em into our contact list.
					add_contact = scope:task_contract_employer
					# Give hook as well as contact
					add_hook_if_possible_default_length_effect = {
						TARGET = scope:task_contract_employer 
						TYPE = contact_list_weak_hook
					}
					war_contracts_completed_tracker_effect = yes
				}
			}
		}
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				if = {
					limit = {
						NOT = { has_variable = task_contract_grace_period }
					}
					save_scope_as = task_contract
					var:task_contract_war = {
						save_scope_as = war
					}
					task_contract_employer = {
						save_scope_as = task_contract_employer
					}
					task_contract_taker = {
						add_prestige = task_contract_failure_prestige_loss_full_value
						save_scope_value_as = {
							name = task_contract_reward
							value = flag:failure_standard
						}
						save_scope_value_as = {
							name = task_contract_tier
							value = scope:task_contract.task_contract_tier
						}
						trigger_event = ep3_contract_event.0013
					}
				}
			}
		}
	}
}

## Help Legitimate claim
# scope:employer = ruler with a valid claim
# task_contract_target = character to declare war on
# task_contract_destination = capital of task_contract_target
laamp_help_claimant_contract = {
	group = laamp_contracts_war_group
	icon = "gfx/interface/icons/casus_bellis/claim_cb.dds"
	travel = no
	use_diplomatic_range = no

	# Validity Triggers
	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		employer_has_treasury_to_offer_job_trigger = yes
		valid_laamp_sensible_start_trigger = yes
		# Specific flavour triggers.
		scope:employer = {
			is_at_war = no
			NAND = {
				government_allows = administrative
				liege = { government_allows = administrative }
			}
			liege = { has_realm_law_flag = vassal_all_wars_banned }
			NOT = {
				vassal_contract_has_flag = vassal_contract_war_override
			}		
			any_claim = {
				holder ?= {
					NOT = { is_allied_to = scope:employer }
					NOT = { any_liege_or_above = { this = scope:employer } }
					scope:employer = {
						has_cb_on = {
							target = prev
							cb = claim_cb
						}
					}
				}
			}
		}
	}
	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
	}
	valid_to_continue = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_keep = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_somewhat_rare_value
		add = laamp_contracts_weight_up_mercenary_value
		add = laamp_contracts_weight_up_martial_slight_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				save_scope_as = task_contract_employer
				if = {
					limit = {
						NOT = { exists = scope:task_contract.task_contract_target }
					}
					random_claim = {
						limit = {
							holder ?= {
								NOT = { is_allied_to = root }
								NOT = { any_liege_or_above = { this = root } }
								scope:task_contract_employer = {
									has_cb_on = {
										target = prev
										cb = claim_cb
									}
								}
							}
						}
						save_scope_as = task_contract_title
						holder = {
							save_scope_as = task_contract_target
						}
					}
				}
			}
			set_task_contract_target = scope:task_contract_target
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract_employer
			}
			set_variable = {
				name = task_contract_target
				value = scope:task_contract_target
			}
			set_variable = {
				name = task_contract_title
				value = scope:task_contract_title	
			}
		}
	}
	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0060
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}

			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_help_claimant_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
	}

	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				var:task_contract_title = {
					save_scope_as = task_contract_title
				}
				task_contract_employer = {
					save_scope_as = task_contract_employer
					save_scope_as = attacker
					show_as_tooltip = {
						get_title = scope:task_contract_title
					}
				}
				task_contract_taker = {
					save_scope_as = task_contract_taker
					save_scope_as = defender
					custom_tooltip = laamp_join_war_contract.contribution_based_reward_gold
					if = {
						limit = {
							faith != scope:task_contract.var:task_contract_target.faith
						}
						custom_tooltip = laamp_join_war_contract.contribution_based_reward_piety
					}
					save_scope_value_as = {
						name = task_contract_reward
						value = flag:success_standard
					}
					save_scope_value_as = {
						name = task_contract_tier
						value = scope:task_contract.task_contract_tier
					}
					trigger_event = ep3_contract_event.0013
					# Huck 'em into our contact list.
					add_contact = scope:task_contract_employer
					# Give hook as well as contact
					add_hook_if_possible_default_length_effect = {
						TARGET = scope:task_contract_employer 
						TYPE = contact_list_weak_hook
					}
					war_contracts_completed_tracker_effect = yes
				}
			}
		}
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_as = task_contract
				var:task_contract_title = {
					save_scope_as = task_contract_title
				}
				task_contract_employer = {
					save_scope_as = task_contract_employer
				}
				task_contract_taker = {
					add_prestige = task_contract_failure_prestige_loss_full_value
					save_scope_value_as = {
						name = task_contract_reward
						value = flag:failure_standard
					}
					save_scope_value_as = {
						name = task_contract_tier
						value = scope:task_contract.task_contract_tier
					}
					trigger_event = ep3_contract_event.0013
				}
			}
		}
	}
}

## Reclaim Artifact
# scope:employer = ruler wanting to steal an artifact
# task_contract_target = character to steal an artifact from
# task_contract_object = an artifact to steal
laamp_steal_artifact_contract = {
	group = laamp_contracts_criminal_group
	icon = "gfx/interface/icons/character_interactions/icon_scheme_steal_back_artifact.dds"
	travel = yes
	use_diplomatic_range = no
	is_criminal = yes

	# Validity Triggers
	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		employer_has_treasury_to_offer_job_trigger = yes
		valid_laamp_sensible_start_trigger = yes
		# Specific flavour triggers.
		scope:employer = {
			OR = {
				#target any artifact you have a claim on
				any_claimed_artifact = {
					artifact_owner = {
						is_within_diplo_range = { CHARACTER = root }
					}
				}
				#or if you are greedy target at least a masterwork artifact of someone that is up to 1 tier above you
				AND = {
					ai_greed >= 50
					any_neighboring_top_liege_realm_owner = {
						highest_held_title_tier <= {
							value = scope:employer.highest_held_title_tier
							add = 1
						}
						any_character_artifact = {
							artifact_high_rarity_trigger = yes
						}
					}
				}
			}
		}
	}

	valid_to_keep = {
		exists = root.var:task_contract_object
		root.var:task_contract_object = {
			artifact_owner != root.task_contract_employer
		}
		task_contract_target = {
			NOT = {
				has_opinion_modifier = {
					target = root.task_contract_taker
					modifier = stole_artifact_from_me
				}
			}
		}
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
	}
	valid_to_continue = {
		exists = root.var:task_contract_object
		root.var:task_contract_object = {
			artifact_owner != root.task_contract_employer
		}
		task_contract_target = {
			NOT = {
				has_opinion_modifier = {
					target = root.task_contract_taker
					modifier = stole_artifact_from_me
				}
			}
		}
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_quite_rare_value
		add = laamp_contracts_weight_up_intrigue_value
		if = {
			limit = {
				employs_court_position = master_thief_camp_officer
			}
			add = 50
		}
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	# On_Actions
	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				if = {
					limit = {
						any_claimed_artifact = {
							artifact_owner = {
								is_within_diplo_range = { CHARACTER = scope:task_contract.task_contract_taker }
							}
							save_temporary_scope_as = claimed_artifact
						}
					}
					scope:claimed_artifact = {
						save_scope_as = task_contract_object
						artifact_owner = {
							save_scope_as = task_contract_target
						}
					}
				}
				else = {
					random_neighboring_top_liege_realm_owner = {
						limit = {
							highest_held_title_tier <= {
								value = scope:task_contract.task_contract_employer.highest_held_title_tier
								add = 1
							}
							any_character_artifact = {
								artifact_high_rarity_trigger = yes
								save_temporary_scope_as = claimed_artifact
							}
						}
						scope:claimed_artifact = {
							save_scope_as = task_contract_object
						}
						save_scope_as = task_contract_target
					}
				}
			}
			set_task_contract_target = scope:task_contract_target
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract.task_contract_employer
			}
			set_variable = {
				name = task_contract_target
				value = scope:task_contract_target
			}
			set_variable = {
				name = task_contract_object
				value = scope:task_contract_object
			}
			# Make our gold rewards static.
			grab_gold_fuzz_number_effect = yes
			set_variable = {
				name = gold_success_standard
				value = task_contract_taker.task_contract_success_gold_gain_full_value
			}
		}
	}

	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0009
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_destination = {
				save_scope_as = task_contract_destination
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}

			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_steal_artifact_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
	}
	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				var:task_contract_object = {
					save_scope_as = task_contract_object
				}
				task_contract_taker = {
					send_interface_toast = {
						title = laamp_transport_contract.success
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						root = {
							save_scope_value_as = { name = extra_reward value = flag:no }
							# Standard Rewards.
							laamp_rewards_disburse_ordinary_currency_effect = {
								GOLD = scope:task_contract.var:gold_success_standard
								PRESTIGE = task_contract_success_prestige_gain_full_value
								PIETY = 0
								PROVISIONS = task_contract_success_provisions_gain_minor_value
								OPINION = task_contract_opinion_standard_reward_value
								OPINION_TYPE = succeeded_task_contract_opinion
								CONTACT = yes
								CONTACT_HOOK = yes
								EXTRA_REWARD = scope:extra_reward
							}
						}
					}
					# Update gallowsbait score.
					laamp_rewards_apply_criminal_xp_effect = {
						TRACK = thief
						XP_MIN = gallowsbait_xp_medium_gain
						XP_MAX = gallowsbait_xp_medium_gain
					}
				}
				hidden_effect = {
					scope:task_contract_object = {
						set_owner = scope:task_contract.task_contract_employer
					}
				}
			}
		}
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_as = task_contract
				save_scope_value_as = { name = extra_reward value = flag:no }
				# Standard Penalties.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = 0
					PRESTIGE = task_contract_failure_prestige_loss_full_value
					PIETY = 0
					PROVISIONS = task_contract_failure_provisions_gain_minor_value
					OPINION = task_contract_opinion_standard_failure_value
					OPINION_TYPE = failed_task_contract_opinion
					CONTACT = no
					CONTACT_HOOK = no
					EXTRA_REWARD = scope:extra_reward
				}
				task_contract_taker = {
					# Update gallowsbait score.
					laamp_rewards_apply_criminal_xp_effect = {
						TRACK = thief
						XP_MIN = gallowsbait_xp_minor_gain
						XP_MAX = gallowsbait_xp_minor_gain
					}
				}
			}
		}
	}
}

## Construction Work
# scope:employer = ruler wanting to build a holding
# task_contract_destination = province where the holding is being built
laamp_construction_contract = {
	group = laamp_contracts_transport_group
	icon = "gfx/interface/icons/vassal_stances/builder.dds"
	travel = no
	use_diplomatic_range = no

	# Validity Triggers
	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		employer_has_treasury_to_offer_job_trigger = yes
		valid_laamp_sensible_start_trigger = yes
		# Specific flavour triggers.
		scope:employer = {
			NOT = { government_has_flag = government_is_tribal }
			any_held_title = {
				county_has_empty_province_trigger = yes
			}
			short_term_gold > main_building_tier_1_cost
			OR = {
				has_trait = architect
				AND = {
					has_royal_court = yes
					employs_court_position = royal_architect_court_position
					any_court_position_holder = {
						type = royal_architect_court_position
						is_available_ai_adult = yes
					}
				}
				ai_has_builder_or_pious_builder_personality = yes 
			}
		}		
	}
	valid_to_keep = {
		var:task_contract_destination ?= {
			has_ongoing_construction = yes
		}
	}
	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
	}
	valid_to_continue = {
		#once you are there, you need to stay to complete the contract
		trigger_if = {
			limit = {
				var:task_contract_destination.county = {
					has_county_modifier = massive_construction_efforts_modifier		
				}
			}
			task_contract_taker.capital_county = var:task_contract_destination.county
		}
		NOT = { #start_city_construction_decision invalidation
			var:task_contract_destination = {
				has_variable = laamp_city_construction
			}
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_default_value
		add = laamp_contracts_weight_up_transport_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}
	# On_Actions
	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			if = {
				limit = {
					NOT = { has_variable = task_contract_destination }
				}
				task_contract_employer = {
					ordered_held_title = {
						limit = { county_has_empty_province_trigger = yes }
						order_by = development_level
						random_county_province = {
							limit = { province_has_no_holding_trigger = yes }
							save_scope_as = task_contract_destination
							random_list = {
								1 = {
									begin_create_holding = {
										type = castle_holding
										refund_cost = { gold = 0 }
									}
								}
								1 = {
									modifier = {
										add = 10
										county = { county_has_no_city_trigger = yes }
									}
									begin_create_holding = {
										type = church_holding
										refund_cost = { gold = 0 }
									}
								}
								1 = {
									modifier = {
										add = 10
										county = { county_has_no_church_trigger = yes }
									}
									begin_create_holding = {
										type = city_holding
										refund_cost = { gold = 0 }
									}
								}
							}
						}
					}
					remove_short_term_gold = main_building_tier_1_cost
				}
				set_variable = {
					name = task_contract_destination
					value = scope:task_contract_destination
				}
			}
			else = {
				var:task_contract_destination = {
					save_scope_as = task_contract_destination
				}
			}
			# Make our gold rewards static.
			grab_gold_fuzz_number_effect = yes
			set_variable = {
				name = gold_success_standard
				value = task_contract_taker.task_contract_success_gold_gain_full_value
			}
			# Make sure critical values are a bit higher.
			save_scope_value_as = { name = gold_safety_margin value = flag:yes }
			set_variable = {
				name = gold_success_critical
				value = task_contract_taker.task_contract_success_gold_gain_critical_value
			}
		}
	}

	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0001
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_destination = {
				save_scope_as = task_contract_destination
			}

			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_construction_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			var:task_contract_destination.county = {
				remove_county_modifier = massive_construction_efforts_modifier		
			}
			task_contract_taker = {
				remove_character_modifier = ep3_construction_contract_modifier
			}
		}
	}

	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					send_interface_toast = {
						title = laamp_transport_contract.success
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						scope:task_contract.var:task_contract_destination = {
							switch = {
								trigger = has_holding_type
								castle_holding = {
									scope:task_contract.task_contract_taker = {
										add_prestige = task_contract_success_prestige_gain_critical_value
									}
								}
								church_holding = {
									scope:task_contract.task_contract_taker = {
										add_piety = task_contract_success_piety_gain_critical_value
									}
								}
								city_holding = {
									scope:task_contract.task_contract_taker = {
										add_gold = scope:task_contract.var:gold_success_standard
									}
								}
							}
						}
						if = {
							limit = {
								is_ai = no
							}
							scope:task_contract.task_contract_employer = {
								pay_short_term_gold = {
									target = scope:task_contract.task_contract_taker
									gold = scope:task_contract.var:gold_success_standard
								}
							}
						}
						else = {
							add_gold = scope:task_contract.var:gold_success_standard
						}
						reverse_add_opinion = {
							modifier = succeeded_task_contract_opinion
							target = scope:task_contract.task_contract_employer
							opinion = 20
						}
						# Huck 'em into our contact list.
						add_contact = scope:task_contract.task_contract_employer
					}
				}
			}
		}
		success_critical = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					send_interface_toast = {
						title = laamp_transport_contract.success
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						scope:task_contract.var:task_contract_destination = {
							switch = {
								trigger = has_holding_type
								castle_holding = {
									scope:task_contract.task_contract_taker = {
										add_prestige = task_contract_success_prestige_gain_full_value
									}
								}
								church_holding = {
									scope:task_contract.task_contract_taker = {
										add_piety = task_contract_success_piety_gain_full_value
									}
								}
								city_holding = {
									scope:task_contract.task_contract_taker = {
										add_gold = scope:task_contract.var:gold_success_critical
									}
								}
							}
						}
						if = {
							limit = {
								is_ai = no
							}
							scope:task_contract.task_contract_employer = {
								pay_short_term_gold = {
									target = scope:task_contract.task_contract_taker
									gold = scope:task_contract.var:gold_success_critical
								}
							}
						}
						else = {
							add_gold = scope:task_contract.var:gold_success_critical
						}
						reverse_add_opinion = {
							modifier = critically_succeeded_task_contract_opinion
							target = scope:task_contract.task_contract_employer
							opinion = 50
						}
						# Huck 'em into our contact list.
						add_contact = scope:task_contract.task_contract_employer
						# Give hook as well as contact
						add_hook_if_possible_default_length_effect = {
							TARGET = scope:task_contract.task_contract_employer 
							TYPE = contact_list_weak_hook
						}
					}
				}
			}
		}
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					add_prestige = task_contract_failure_prestige_loss_full_value
					reverse_add_opinion = {
						opinion = -50
						modifier = failed_task_contract_opinion
						target = scope:task_contract.task_contract_employer
					}
				}
				var:task_contract_destination.county ?= {
					remove_county_modifier = massive_construction_efforts_modifier
				}
			}
		}
	}
}

## Treasure Hunting
# scope:employer = ruler wanting a treasure
# task_contract_destination = province where you go to find a treasure - set in the treasure_hunting_contract_decision decision
laamp_treasure_hunting_contract = {
	group = laamp_contracts_transport_group
	icon = "gfx/interface/icons/inspirations/adventure_inspiration.dds"
	travel = no
	use_diplomatic_range = no

	# Validity Triggers
	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		employer_has_treasury_to_offer_job_trigger = yes
		valid_laamp_sensible_start_trigger = yes
		# Specific flavour triggers.
		#There can only be one contract of this type at a time, so that the decision is easier to manage
		any_character_task_contract = {
			NOT = { has_task_contract_type = laamp_treasure_hunting_contract }
		}
		scope:employer = {
			highest_held_title_tier > tier_duchy
		}
	}
	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
	}
	valid_to_continue = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_keep = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_somewhat_rare_value
		add = laamp_contracts_weight_up_transport_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			save_scope_as = task_contract_taker
		}
		task_contract_employer = {
			save_scope_as = task_contract_employer
		}
		scope:task_contract_taker = {
			trigger_event = ep3_contract_event.0005
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_destination ?= {
				save_scope_as = task_contract_destination
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_treasure_hunting_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
		}
	}

	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					send_interface_toast = {
						title = laamp_transport_contract.success
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						add_prestige = task_contract_success_prestige_gain_full_value
						if = {
							limit = {
								is_ai = no
							}
							scope:task_contract.task_contract_employer = {
								pay_short_term_gold = {
									target = scope:task_contract.task_contract_taker
									gold = task_contract_success_gold_gain_full_value
								}
							}
						}
						else = {
							add_short_term_gold = task_contract_success_gold_gain_full_value
						}
						reverse_add_opinion = {
							modifier = succeeded_task_contract_opinion
							target = scope:task_contract.task_contract_employer
							opinion = 20
						}
						# Huck 'em into our contact list.
						add_contact = scope:task_contract.task_contract_employer
						# Give hook as well as contact
						add_hook_if_possible_default_length_effect = {
							TARGET = scope:task_contract.task_contract_employer 
							TYPE = contact_list_weak_hook
						}
					}
				}
			}
		}
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					add_prestige = task_contract_failure_prestige_loss_full_value
					reverse_add_opinion = {
						opinion = -50
						modifier = failed_task_contract_opinion
						target = scope:task_contract.task_contract_employer
					}
				}
			}
		}
	}
}

## Protect Heritage
# scope:employer = a minority vassal of the same culture as root wanting to get title revocation rights vassal contract
# task_contract_target = liege of task_contract_employer
# task_contract_destination = capital of task_contract_employer
laamp_cultural_minority_contract = {
	group = laamp_contracts_diplomacy_group
	icon = "gfx/interface/icons/character_interactions/icon_culture.dds"
	travel = yes
	use_diplomatic_range = no

	# Validity Triggers
	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		employer_has_treasury_to_offer_job_trigger = yes
		valid_laamp_sensible_start_trigger = yes
		# Specific flavour triggers.
		scope:employer = {
			top_liege != this
			has_vassal_stance = minority
			liege ?= {
				is_ai = yes
			}
			vassal_contract_obligation_level_can_be_increased = title_revocation_rights
			culture = {
				this != scope:employer.liege.culture
			}
		}
	}
	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
	}
	valid_to_continue = {
		save_temporary_scope_as = task_contract
		var:task_contract_target = {
			any_vassal = {
				scope:task_contract.var:task_contract_employer = this
			}
		}
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_keep = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_almost_rare_value
		add = laamp_contracts_weight_up_diplomacy_value
		add = laamp_contracts_weight_up_diplomacy_slight_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	# On_Actions
	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				liege = {
					save_scope_as = task_contract_target
				}
				capital_province = {
					save_scope_as = task_contract_destination
				}
			}
			set_task_contract_target = scope:task_contract_target
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract.task_contract_employer
			}
			set_variable = {
				name = task_contract_target
				value = scope:task_contract_target
			}
			set_variable = {
				name = task_contract_destination
				value = scope:task_contract_destination	
			}
			# Make our gold rewards static.
			grab_gold_fuzz_number_effect = yes
			set_variable = {
				name = gold_success_standard
				value = task_contract_taker.task_contract_success_gold_gain_full_value
			}
		}
	}

	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0020
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_destination = {
				save_scope_as = task_contract_destination
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_cultural_minority_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						any_vassal = {
							count = all
							scope:task_contract_employer != this
						}
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:not_vassal
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
	}

	# Rewards
	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					send_interface_toast = {
						type = event_toast_effect_good
						title = laamp_transport_contract.success
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						root = {
							save_scope_value_as = { name = extra_reward value = flag:no }
							# Standard Rewards.
							laamp_rewards_disburse_ordinary_currency_effect = {
								GOLD = scope:task_contract.var:gold_success_standard
								PRESTIGE = task_contract_success_prestige_gain_full_value
								PIETY = 0
								PROVISIONS = task_contract_success_provisions_gain_minor_value
								OPINION = task_contract_opinion_standard_reward_value
								OPINION_TYPE = succeeded_task_contract_opinion
								CONTACT = yes
								CONTACT_HOOK = yes
								EXTRA_REWARD = scope:extra_reward
							}
						}
						if = {
							limit = {
								scope:task_contract.task_contract_taker.culture != scope:task_contract.task_contract_employer.culture
							}
							scope:task_contract.task_contract_taker.culture = {
								change_cultural_acceptance = {
									target = scope:task_contract.task_contract_employer.culture
									value = low_positive_culture_acceptance
									desc = cultural_acceptance_laamp_cultural_minority_contract
								}
							}
						}
						show_as_tooltip = {
							scope:task_contract.task_contract_employer = {
								vassal_contract_set_obligation_level = {
									type = title_revocation_rights
									level = 1
								}
							}
						}
					}
				}
			}
		}		
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					send_interface_toast = {
						type = event_toast_effect_bad
						title = laamp_transport_contract.transport_failed
						root = {
							save_scope_value_as = { name = extra_reward value = flag:no }
							# Standard Penalties.
							laamp_rewards_disburse_ordinary_currency_effect = {
								GOLD = 0
								PRESTIGE = task_contract_failure_prestige_loss_full_value
								PIETY = 0
								PROVISIONS = task_contract_failure_provisions_gain_minor_value
								OPINION = task_contract_opinion_standard_failure_value
								OPINION_TYPE = failed_task_contract_opinion
								CONTACT = no
								CONTACT_HOOK = no
								EXTRA_REWARD = scope:extra_reward
							}
						}
					}
				}
			}
		}
	}
}

## Reward the Faithful
# scope:employer = a minority vassal of the same faith as root wanting to get religious rights vassal contract
# task_contract_target = liege of task_contract_employer
# task_contract_destination = capital of task_contract_employer
laamp_religious_minority_contract = {
	group = laamp_contracts_diplomacy_group
	icon = "gfx/interface/icons/character_interactions/religious.dds"
	travel = yes
	use_diplomatic_range = no

	# Validity Triggers
	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		employer_has_treasury_to_offer_job_trigger = yes
		valid_laamp_sensible_start_trigger = yes
		# Specific flavour triggers.
		scope:employer = {
			top_liege != this
			has_vassal_stance = minority
			liege ?= {
				is_ai = yes
			}
			vassal_contract_obligation_level_can_be_increased = religious_rights
			faith != liege.faith
		}
	}
	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
	}
	valid_to_continue = {
		save_temporary_scope_as = task_contract
		var:task_contract_target = {
			any_vassal = {
				scope:task_contract.var:task_contract_employer = this
			}
		}
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_keep = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_almost_rare_value
		add = laamp_contracts_weight_up_diplomacy_value
		add = laamp_contracts_weight_up_diplomacy_slight_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	# On_Actions
	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				liege = {
					save_scope_as = task_contract_target
				}
				capital_province = {
					save_scope_as = task_contract_destination
				}
			}
			set_task_contract_target = scope:task_contract_target
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract.task_contract_employer
			}
			set_variable = {
				name = task_contract_target
				value = scope:task_contract_target
			}
			set_variable = {
				name = task_contract_destination
				value = scope:task_contract_destination	
			}
			# Make our gold rewards static.
			grab_gold_fuzz_number_effect = yes
			set_variable = {
				name = gold_success_standard
				value = task_contract_taker.task_contract_success_gold_gain_full_value
			}
		}
	}
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0021
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_destination = {
				save_scope_as = task_contract_destination
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}

			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_religious_minority_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						any_vassal = {
							count = all
							scope:task_contract_employer != this
						}
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:not_vassal
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
	}

	# Rewards
	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					send_interface_toast = {
						type = event_toast_effect_good
						title = laamp_transport_contract.success
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						save_scope_value_as = { name = extra_reward value = flag:no }
						root = {
							# Standard Rewards.
							laamp_rewards_disburse_ordinary_currency_effect = {
								GOLD = 0
								PRESTIGE = 0
								PIETY = task_contract_success_piety_gain_full_value
								PROVISIONS = 0
								OPINION = task_contract_opinion_standard_reward_value
								OPINION_TYPE = succeeded_task_contract_opinion
								CONTACT = yes
								CONTACT_HOOK = yes
								EXTRA_REWARD = scope:extra_reward
							}
						}
						show_as_tooltip = {
							scope:task_contract.task_contract_employer = {
								vassal_contract_set_obligation_level = {
									type = religious_rights
									level = 1
								}
							}
						}
					}
				}
			}
		}		
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					send_interface_toast = {
						type = event_toast_effect_bad
						title = laamp_transport_contract.transport_failed
						save_scope_value_as = { name = extra_reward value = flag:no }
						root = {
							# Standard Penalties.
							laamp_rewards_disburse_ordinary_currency_effect = {
								GOLD = 0
								PRESTIGE = 0
								PIETY = task_contract_failure_piety_loss_full_value
								PROVISIONS = task_contract_failure_provisions_gain_minor_value
								OPINION = task_contract_opinion_standard_failure_value
								OPINION_TYPE = failed_task_contract_opinion
								CONTACT = no
								CONTACT_HOOK = no
								EXTRA_REWARD = scope:extra_reward
							}
						}
					}
				}
			}
		}
	}
}

## Prison Break
# scope:employer = a character that has a spouse, family member, soulmate or best friend imprisoned by another character
# task_contract_target = imprisoner
# task_contract_destination = capital of task_contract_target
# task_contract_object = the imprisoned character to be rescued
laamp_prison_break_contract = {
	group = laamp_contracts_intrigue_group
	icon = "gfx/interface/icons/casus_bellis/fp3_free_house_member.dds"
	travel = no
	use_diplomatic_range = no

	# Validity Triggers
	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		employer_has_treasury_to_offer_job_trigger = yes
		valid_laamp_sensible_start_trigger = yes
		# Specific flavour triggers.
		scope:employer = {
			OR = {
				any_spouse = {
					is_imprisoned = yes
					NOR = {
						is_imprisoned_by = scope:employer
						is_imprisoned_by = root
					}
				}
				any_close_family_member = {
					is_imprisoned = yes
					NOR = {
						is_imprisoned_by = scope:employer
						is_imprisoned_by = root
					}		
				}
				any_relation = {
					type = soulmate
					is_imprisoned = yes
					NOR = {
						is_imprisoned_by = scope:employer
						is_imprisoned_by = root
					}
				}
				any_relation = {
					type = best_friend
					is_imprisoned = yes
					NOR = {
						is_imprisoned_by = scope:employer
						is_imprisoned_by = root
					}
				}
			}
		}
	}
	valid_to_keep = {
		exists = root.var:task_contract_object
		root.var:task_contract_object = {
			is_imprisoned = yes
		}
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
	}
	valid_to_continue = {
		var:task_contract_object ?= {
			is_imprisoned = yes
			is_alive = yes
		}
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_very_rare_value
		add = laamp_contracts_weight_up_intrigue_value
		scope:employer = {
			if = {
				limit = { has_trait = compassionate }
				add = task_contract_weight_bonus_employer_has_associated_traits_value
			}
			multiply = task_contract_weight_by_tier_value
		}
		add = task_contract_weight_employer_contact_list_value
	}

	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				every_spouse = {
					limit = {
						is_imprisoned = yes
						NOR = {
							is_imprisoned_by = scope:task_contract.task_contract_employer
							is_imprisoned_by = scope:task_contract.task_contract_taker
						}
					}
					add_to_list = character_to_breakout
				}
				every_close_family_member = {
					limit = {
						is_imprisoned = yes
						NOR = {
							is_imprisoned_by = scope:task_contract.task_contract_employer
							is_imprisoned_by = scope:task_contract.task_contract_taker
						}	
					}
					add_to_list = character_to_breakout
				}
				every_relation = {
					type = soulmate
					limit = {
						is_imprisoned = yes
						NOR = {
							is_imprisoned_by = scope:task_contract.task_contract_employer
							is_imprisoned_by = scope:task_contract.task_contract_taker
						}
					}
					add_to_list = character_to_breakout
				}
				every_relation = {
					type = best_friend
					limit = {
						is_imprisoned = yes
						NOR = {
							is_imprisoned_by = scope:task_contract.task_contract_employer
							is_imprisoned_by = scope:task_contract.task_contract_taker
						}
					}
					add_to_list = character_to_breakout
				}
				ordered_in_list = {
					list = character_to_breakout
					order_by = prison_break_value	
					save_scope_as = task_contract_object
				}
			}
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract.task_contract_employer
			}
			set_variable = {
				name = task_contract_object
				value = scope:task_contract_object
			}
			scope:task_contract_object = {
				imprisoner = {
					save_scope_as = task_contract_target
					capital_province = {
						save_scope_as = task_contract_destination
					}
				}
				add_character_flag = being_prisonbroken_by_laamp
			}
			set_task_contract_target = scope:task_contract_target
			set_variable = {
				name = task_contract_target
				value = scope:task_contract_target
			}
			set_variable = {
				name = task_contract_destination
				value = scope:task_contract_destination
			}
			# Make our gold rewards static.
			grab_gold_fuzz_number_effect = yes
			set_variable = {
				name = gold_success_standard
				value = task_contract_taker.task_contract_success_gold_gain_full_value
			}
		}
	}
	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0030
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_destination = {
				save_scope_as = task_contract_destination
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}
			var:task_contract_object = {
				save_scope_as = task_contract_object
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_prison_break_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
			else_if = {
				limit = {
					scope:task_contract_object = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:escortee_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
			else_if = {
				limit = {
					scope:task_contract_object = {
						is_imprisoned = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:prisoner_free
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
	}

	# Rewards
	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					send_interface_toast = {
						type = event_toast_effect_good
						title = laamp_transport_contract.success
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						save_scope_value_as = { name = extra_reward value = flag:no }
						# Standard Rewards.
						scope:task_contract = {
							laamp_rewards_disburse_ordinary_currency_effect = {
								GOLD = scope:task_contract.var:gold_success_standard
								PRESTIGE = task_contract_success_prestige_gain_full_value
								PIETY = 0
								PROVISIONS = task_contract_success_provisions_gain_minor_value
								OPINION = task_contract_opinion_standard_reward_value
								OPINION_TYPE = succeeded_task_contract_opinion
								CONTACT = yes
								CONTACT_HOOK = yes
								EXTRA_REWARD = scope:extra_reward
							}
						}
						scope:task_contract.var:task_contract_object = {
							scope:task_contract.var:task_contract_target = {
								save_scope_as = imprisoner
							}
							escape_from_prison_effect = yes
						}
					}
				}
			}
		}		
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_as = task_contract
				task_contract_taker = {
					send_interface_toast = {
						type = event_toast_effect_bad
						title = laamp_transport_contract.transport_failed
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						save_scope_value_as = { name = extra_reward value = flag:no }
						# Standard Penalties.
						scope:task_contract = {
							laamp_rewards_disburse_ordinary_currency_effect = {
								GOLD = 0
								PRESTIGE = task_contract_failure_prestige_loss_full_value
								PIETY = 0
								PROVISIONS = task_contract_failure_provisions_gain_minor_value
								OPINION = task_contract_opinion_standard_failure_value
								OPINION_TYPE = failed_task_contract_opinion
								CONTACT = no
								CONTACT_HOOK = no
								EXTRA_REWARD = scope:extra_reward
							}
						}
					}
				}
			}
		}
	}
}

## Treasure Map
# scope:employer = root
# task_contract_target = root
# contract_treasure_location = ep3_laamp_decision_event.1025
# contract_picked_up_in_location = ep3_laamp_decision_event.1025
laamp_treasure_map_contract = {
	group = laamp_contracts_noticeboard_group #These are created in the Visit Local Settlement-decision
	icon = "gfx/interface/icons/character_interactions/icon_contract_escort.dds"

	# Validity Triggers
	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		employer_has_treasury_to_offer_job_trigger = yes
		valid_laamp_sensible_start_trigger = yes
		# Specific flavour triggers.
		#There can only be one contract of this type at a time
		any_task_contract = {
			NOT = { has_task_contract_type = laamp_treasure_map_contract }
		}
	}
	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		#We're not already enrolled in a treasure map contract
		NOT = { 
			any_character_artifact = { has_variable = 1025_treasure_map } 
		}
	}
	valid_to_continue = {
		#We haven't already located the treasure
		trigger_if = {
			limit = {
				NOT = { has_variable = 0045_used_map }
			}
			root.task_contract_taker = {
				any_character_artifact = { has_variable = 1025_treasure_map }
			}
		}
		#The employer is still alive and free
		root.task_contract_employer = { 
			is_alive = yes
			is_imprisoned = no
			NOT = { has_trait = incapable }
		}
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_keep = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_somewhat_rare_value
		add = laamp_contracts_weight_up_transport_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = { save_scope_as = task_contract_taker }
		task_contract_employer = { save_scope_as = task_contract_employer }

		#Create quest item Treasure Map
		scope:task_contract_taker = {
			create_artifact = {
				name = treasure_map
				description = treasure_map_desc
				modifier = artifact_monthly_minor_prestige_1_modifier
				type = miscellaneous
				visuals = pocket_map
				max_durability = 10
				history = { 
					type = given
					actor = scope:task_contract_employer
					recipient = scope:task_contract_taker
					location = scope:task_contract.var:contract_picked_up_in_location
				}
				save_scope_as = newly_created_map
			}
			#Set variables
			scope:newly_created_map ?= { 
				set_variable = 1025_treasure_map
				set_variable = {
					name = picked_up_in_location
					value = scope:task_contract.var:contract_picked_up_in_location
				}
				set_variable = {
					name = artifact_treasure_location
					value = scope:task_contract.var:contract_treasure_location
				}
				if = {
					limit = { 
						exists = var:picked_up_in_location
						exists = var:artifact_treasure_location
					}
					set_artifact_description = treasure_map_desc
				}
			}
			#Chuck the employer in there as well
			add_courtier = scope:task_contract_employer
			scope:task_contract_employer = {
				add_character_flag = {
					flag = blocked_from_leaving
					years = 11 #The map should break first, and is set to 10 years
				}
			}
			trigger_event = ep3_contract_event.0043
		}
	}

	#Employer died? Map decayed?
	on_invalidated = {
		#Employer unavailable
		if = { 
			limit = {
				task_contract_employer = { 
					OR = {
						is_alive = no
						has_trait = incapable
						is_imprisoned = yes
					}
				}
			}
			task_contract_employer = { save_scope_as = task_contract_employer }
			#Save the location of the employer
			var:contract_picked_up_in_location = { save_scope_as = original_contract_location }
			#Save contract
			save_scope_as = task_contract
			#Save tier, realistically always 1
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			#Save the destination
			var:contract_treasure_location ?= { save_scope_as = task_contract_destination }
			#Destroy the historical artifact if the LAAMP is an AI
			if = {
				limit = { 
					has_variable = has_unique_historical_artifact
					task_contract_taker = { is_ai = yes }
				}
				var:has_unique_historical_artifact = { save_scope_as = historical_artifact }
				hidden_effect = { destroy_artifact = scope:historical_artifact }
			}
			#Send the appropriate event
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_treasure_map_contract
				}
				#Dead
				if = {
					limit = { 
						scope:task_contract_employer = { is_alive = no }
					}
					trigger_event = ep3_contract_event.0041
				}
				#Incapable
				if = {
					limit = { 
						scope:task_contract_employer = { has_trait = incapable }
					}
					trigger_event = ep3_contract_event.0041
				}
				#Imprisoned
				if = {
					limit = { 
						scope:task_contract_employer = { is_imprisoned = yes }
					}
					#Save the invalidation flag
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:unlanded_employer_is_imprisoned
					}
					trigger_event = ep3_contract_event.0012
				}
			}
			#No longer excavating
			remove_variable ?= ep3_laamp_decision_1000_is_excavating
		}
		#Decay-destroyed map is handled via on_artifact_broken_through_decay, leading to ep3_contract_event.0040
	}

	task_contract_reward = {
		#Something to display in the Contract Reward window. Not actually used.
		success_qualified = {
			effect = {
				save_scope_as = task_contract
				if = { # Camp building extra Criminal Rewards: +50%.
					limit = {
						task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards }
					}
					save_scope_value_as = { name = extra_reward value = flag:yes }
				}
				else = { # Standard Reward.
					save_scope_value_as = { name = extra_reward value = flag:no }
				}
				#Check for provision overflows
				save_scope_value_as = {
					name = provisions_to_add_value
					value = {
						value = task_contract_taker.domicile.max_provisions
						max = old_adventurer_stashed_provisions_value
					}
				}
				save_scope_value_as = {
					name = total_provisions_after_reward_value
					value = {
						value = task_contract_taker.domicile.provisions
						add = scope:provisions_to_add_value
					}
				}
				#If there is an overflow
				if = {
					limit = { scope:total_provisions_after_reward_value > task_contract_taker.domicile.max_provisions }
					save_scope_value_as = {
						name = provisions_to_add_value
						value = {
							value = task_contract_taker.domicile.max_provisions
							subtract = task_contract_taker.domicile.provisions
						}
					}
					save_scope_value_as = {
						name = provisions_overflow_value
						value = {
							value = scope:total_provisions_after_reward_value
							subtract = task_contract_taker.domicile.max_provisions
						}
					}
					save_scope_value_as = {
						name = provisions_transformed_to_gold_value
						value = {
							value = scope:total_provisions_after_reward_value
							subtract = task_contract_taker.domicile.max_provisions
							multiply = 0.05
						}
					}
				}
				task_contract_taker = {
					scope:task_contract.task_contract_employer = {
						pay_short_term_gold = {
							target = scope:task_contract.task_contract_taker
							gold = {
								value = {
									value = old_adventurer_stashed_gold_value
									#Extra rewards
									if = {
										limit = { scope:extra_reward = flag:yes }
										multiply = task_contract_extra_reward_multiplier_value
									}
								}
							}
						}
					}	
					stress_impact = {
						base = major_stress_impact_loss
						honest = minor_stress_impact_loss
					}		
					#1000 seems like a fine, round number for some old adventurer to have stashed somewhere
					domicile ?= {
						change_provisions = {
							#We're capped
							if = {
								limit = { provisions >= max_provisions }
								value = 0 #No provisions, you're full
							}
							#We're not capped and our max cap is less than 1000
							else_if = {
								limit = { max_provisions < old_adventurer_stashed_provisions_value }
								value = {
									value = max_provisions
									subtract = provisions
								}
							}
							#We're not capped and our max cap is equal to -or more- than 1000
							else = { 
								value = {
									value = max_provisions
									subtract = provisions
									max = old_adventurer_stashed_provisions_value
								}
							}
						}
					}
					#Inform the player about the overflow
					if = {
						limit = { exists = scope:provisions_transformed_to_gold_value }
						custom_tooltip = {
							text = overflowing_provisions_to_gold.tt
							add_gold = scope:provisions_transformed_to_gold_value
						}
					}
				}
			}
		}
		#Handled in ep3_contract_event.0050
		success_standard = {
			visible = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				if = { # Camp building extra Criminal Rewards: +50%.
					limit = {
						task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards }
					}
					save_scope_value_as = { name = extra_reward value = flag:yes }
				}
				else = { # Standard Reward.
					save_scope_value_as = { name = extra_reward value = flag:no }
				}
				#Check for provision overflows
				if = {
					limit = { task_contract_taker.domicile.max_provisions < old_adventurer_stashed_provisions_value }
					save_scope_value_as = {
						name = provisions_to_add_value
						value = task_contract_taker.domicile.max_provisions
					}
				}
				else = {
					save_scope_value_as = {
						name = provisions_to_add_value 
						value = old_adventurer_stashed_provisions_value
					}
				}
				save_scope_value_as = {
					name = total_provisions_after_reward_value
					value = {
						value = task_contract_taker.domicile.provisions
						add = scope:provisions_to_add_value
					}
				}
				#If there is an overflow
				if = {
					limit = { scope:total_provisions_after_reward_value > task_contract_taker.domicile.max_provisions }
					save_scope_value_as = {
						name = provisions_to_add_value
						value = {
							value = task_contract_taker.domicile.max_provisions
							subtract = task_contract_taker.domicile.provisions
						}
					}
					save_scope_value_as = {
						name = provisions_overflow_value
						value = {
							value = scope:total_provisions_after_reward_value
							subtract = task_contract_taker.domicile.max_provisions
						}
					}
					save_scope_value_as = {
						name = provisions_transformed_to_gold_value
						value = {
							value = scope:total_provisions_after_reward_value
							subtract = task_contract_taker.domicile.max_provisions
							multiply = 0.05
						}
					}
				}
				#The actual toast
				task_contract_taker = {
					send_interface_toast = {
						title = laamp_transport_contract.success
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						#Historical Artifact 'transferred owner'
						if = {
							limit = { 
								scope:task_contract = { has_variable = has_unique_historical_artifact }
							}
							scope:task_contract = {
								var:has_unique_historical_artifact = { save_scope_as = historical_artifact }
							}
							show_as_tooltip = {
								scope:historical_artifact = { set_owner = scope:task_contract.task_contract_employer }
							}
						}
						#Random Jewellry 'transferred owner'
						if = {
							limit = { 
								scope:task_contract = { has_variable = has_jewelry_artifact }
							}
							scope:task_contract = {
								var:has_jewelry_artifact = { save_scope_as = jewelry_artifact }
							}
							show_as_tooltip = {
								scope:jewelry_artifact = { set_owner = scope:task_contract.task_contract_employer }
							}
						}
						#Gold reward
						if = {
							limit = { is_ai = no }
							scope:task_contract.task_contract_employer = {
								if = {
									limit = { exists = scope:historical_artifact }
									scope:task_contract.task_contract_employer = {
										pay_short_term_gold = {
											target = scope:task_contract.task_contract_taker
											gold = {
												value = {
													value = old_adventurer_stashed_gold_value
													multiply = 4
													#Extra rewards
													if = {
														limit = { scope:extra_reward = flag:yes }
														multiply = task_contract_extra_reward_multiplier_value
													}
												}
											}
										}
									}
								}
								else_if = {
									limit = { exists = scope:jewelry_artifact }
									pay_short_term_gold = {
										target = scope:task_contract.task_contract_taker
										gold = {
											value = {
												value = old_adventurer_stashed_gold_value
												multiply = {
													value = scope:task_contract.var:has_jewelry_artifact.artifact_rarity
													subtract = 1
												}
												#Extra rewards
												if = {
													limit = { scope:extra_reward = flag:yes }
													multiply = task_contract_extra_reward_multiplier_value
												}
											}
										}
									}
								}
								else_if = {
									limit = {
										scope:task_contract = { has_variable = treasure_gold_great }
									}
									pay_short_term_gold = {
										target = scope:task_contract.task_contract_taker
										gold = {
											value = {
												value = old_adventurer_stashed_gold_value
												multiply = 1.5
												#Extra rewards
												if = {
													limit = { scope:extra_reward = flag:yes }
													multiply = task_contract_extra_reward_multiplier_value
												}
											}
										}
									}
								}
								else_if = {
									limit = {
										scope:task_contract = {
											OR = {
												has_variable = treasure_gold_mediocre
												has_variable = treasure_gold_poor
											}
										}
									}
									pay_short_term_gold = {
										target = scope:task_contract.task_contract_taker
										gold = {
											value = {
												value = old_adventurer_stashed_gold_value
												multiply = 1.25	
												#Extra rewards
												if = {
													limit = { scope:extra_reward = flag:yes }
													multiply = task_contract_extra_reward_multiplier_value
												}
											}
										}
									}
								}
								else_if = {
									limit = {
										scope:task_contract = { has_variable = treasure_pillaged }
									}
									pay_short_term_gold = {
										target = scope:task_contract.task_contract_taker
										gold = {
											value = {
												value = old_adventurer_stashed_gold_value
												#Extra rewards
												if = {
													limit = { scope:extra_reward = flag:yes }
													multiply = task_contract_extra_reward_multiplier_value
												}
											}
										}
									}
								}
							}	
						}
						#For AI
						else = {
							add_short_term_gold = {
								value = {
									value = old_adventurer_stashed_gold_value
									#Extra rewards
									if = {
										limit = { scope:extra_reward = flag:yes }
										multiply = task_contract_extra_reward_multiplier_value
									}
								}
							}
						}
						#Prestige reward
						if = {
							limit = { exists = scope:historical_artifact }
							add_prestige = {
								value = {
									value = major_prestige_gain
									#Extra rewards
									if = {
										limit = { scope:extra_reward = flag:yes }
										multiply = task_contract_extra_reward_multiplier_value
									}
								}
							}
						}
						#Stress loss -- less stress loss if you gained more gold and vice versa (for doing a good thing)
						if = {
							limit = {
								NOT = { exists = scope:historical_artifact }
							}
							if = {
								limit = {
									OR = {
										exists = scope:jewelry_artifact
										scope:task_contract = { has_variable = treasure_gold_great }
									}
								}
								stress_impact = {
									base = minor_stress_impact_loss
									honest = minor_stress_impact_loss
								}
							}
							else_if = {
								limit = {
									scope:task_contract = {
										OR = {
											has_variable = treasure_gold_mediocre
											has_variable = treasure_gold_poor
										}
									}
								}
								stress_impact = {
									base = medium_stress_impact_loss
									honest = minor_stress_impact_loss
								}
							}
							else_if = {
								limit = {
									scope:task_contract = { has_variable = treasure_pillaged }
								}
								stress_impact = {
									base = major_stress_impact_loss
									honest = minor_stress_impact_loss
								}
							}
						}
						#Lose some Gallowsbait xp
						if = {
							limit = {
								#... you can't steal a view
								NOT = { 
									scope:task_contract = { has_variable = has_scenic_riches }
								}
							}
							#Lose some Gallowsbait xp
							if = {
								limit = { 
									has_trait = gallowsbait
									has_trait_xp = {
										trait = gallowsbait
										track = thief
										value > 0
									}
								}
								laamp_rewards_apply_criminal_xp_effect = {
									TRACK = thief
									XP_MIN = negative_small_lifestyle_random_xp_low
									XP_MAX = negative_small_lifestyle_random_xp_low
								}
							}
						}
						#Inform the player about the overflow
						if = {
							limit = { exists = scope:provisions_transformed_to_gold_value }
							custom_tooltip = {
								text = overflowing_provisions_to_gold.tt
								add_gold = scope:provisions_transformed_to_gold_value
							}
						}
						#Throw the historical artifact back in the pool
						if = {
							limit = { exists = scope:historical_artifact }
							hidden_effect = { destroy_artifact = scope:historical_artifact }
						}
					}		
					#1000 seems like a fine, round number for some old adventurer to have stashed somewhere
					domicile ?= {
						change_provisions = {
							#We're capped
							if = {
								limit = { provisions = max_provisions }
								value = 0 #No provisions, you're full
							}
							#We're not capped and our max cap is less than 1000
							else_if = {
								limit = { max_provisions < old_adventurer_stashed_provisions_value }
								value = {
									value = max_provisions
									subtract = provisions
								}
							}
							#We're not capped and our max cap is equal to -or more- than 1000
							else = { 
								value = {
									value = max_provisions
									subtract = provisions
									max = old_adventurer_stashed_provisions_value
								}
							}
						}
					}
					#Sweep, sweep.
					hidden_effect = {
						if = {
							limit = {
								any_character_artifact = { has_variable = 1025_treasure_map }
							}
							random_character_artifact = {
								limit = { has_variable = 1025_treasure_map }
								destroy_artifact = this
							}
						}
					}
					#No longer excavating
					remove_variable ?= ep3_laamp_decision_1000_is_excavating
				}
			}
		}
		#Handled in ep3_contract_event.0045
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_as = task_contract
				scope:task_contract = {
					if = {
						limit = { has_variable = has_unique_historical_artifact }
						task_contract_taker = { #Pretty inconsequential, since you couldn't really determine ahead of time
							send_interface_toast = {
								title = laamp_transport_contract.transport_failed
								left_icon = scope:task_contract.task_contract_taker
								right_icon = scope:task_contract.task_contract_employer
								#And this adventurer doesn't want to see you again
								progress_towards_rival_effect = {
									REASON = rival_mia_contract
									CHARACTER = scope:task_contract.task_contract_employer
									OPINION = 0
								}
								reverse_add_opinion = {
									modifier = stole_artifact_from_me
									target = scope:task_contract.task_contract_employer
									opinion = -50
								}
								add_prestige = medium_prestige_loss
							}
						}	
					}
					else = {
						task_contract_taker = { #Pretty inconsequential, since you couldn't really determine ahead of time
							send_interface_toast = {
								title = laamp_transport_contract.transport_failed
								left_icon = scope:task_contract.task_contract_taker
								right_icon = scope:task_contract.task_contract_employer
								#And this adventurer doesn't want to see you again
								hidden_effect = { #For narrative reasons. For mechanical reasons, this character won't get picked in Visit Settlement again
									progress_towards_rival_effect = {
										REASON = rival_mia_contract
										CHARACTER = scope:task_contract.task_contract_employer
										OPINION = 0
									}
								}	
								reverse_add_opinion = {
									modifier = disappointed_opinion
									target = scope:task_contract.task_contract_employer
									opinion = -30
								}
								add_prestige = minor_prestige_loss
							}
						}	
					}
					task_contract_taker = {
						#Sweep, sweep. (Let the player know the map will be destroyed when failing)
						if = {
							limit = {
								any_character_artifact = { has_variable = 1025_treasure_map }
							}
							random_character_artifact = {
								limit = { has_variable = 1025_treasure_map }
								destroy_artifact = this
							}
						}
						#No longer excavating
						remove_variable ?= ep3_laamp_decision_1000_is_excavating
					}
				}
			}
		}
	}
}


laamp_legitimist_support_contract = {
	group = laamp_contracts_legitimist_group
	icon = "gfx/interface/icons/scheme_types/diplomacy.dds"

	travel = yes
	use_diplomatic_range = yes

	weight = {
		value = task_contract_weight_interesting_very_rare_value
		add = task_contract_weight_employer_contact_list_value
	}

	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		has_realm_law = camp_purpose_legitimists
		scope:employer = {
			opinion = {
				target = root
				value > 60
			}
		}
		scope:employer.primary_title.tier >= tier_kingdom
	}

	valid_to_continue = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	valid_to_keep = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	on_create = {
		scope:contract = {
			task_contract_employer = {
				add_character_flag = legitimist_supporter
			}
		}
	}

	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_employer = {
			save_scope_as = petitioned_ruler
		}
		task_contract_taker = {
			trigger_event = ep3_laamps.8101
		}
	}

	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				task_contract_employer = {
					save_scope_as = recipient
				}
				task_contract_taker = {
					custom_tooltip = laamp_legitimist_support_contract_success
				}
			}
		}
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				task_contract_taker = {
					custom_tooltip = laamp_legitimist_support_contract_failure
				}
			}
		}
	}
}

## Support Faction
# scope:employer = ruler needing help in a faction
# scope:task_contract_faction = faction to join
laamp_join_faction_contract = {
	group = laamp_contracts_war_group
	icon = "gfx/interface/icons/character_interactions/faction.dds"
	travel = no
	use_diplomatic_range = no

	# Validity Triggers
	valid_to_create = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		employer_has_treasury_to_offer_job_trigger = yes
		# Specific flavour triggers.
		scope:employer = {
			is_a_faction_member = yes
			joined_faction = {
				save_temporary_scope_as = temp_faction
			}
		}
		is_a_faction_member = no
		#don't spawn contracts for the same factions or faction targets
		NOT = {
			any_character_task_contract = {
				task_contract_type = laamp_join_faction_contract
				OR = {
					var:task_contract_faction ?= scope:temp_faction
					task_contract_employer = scope:temp_faction.faction_target
				}
			}
		}
		is_adult = yes
		is_imprisoned = no
		NOR = {
			is_allied_to = scope:temp_faction.faction_target
			scope:temp_faction.faction_target = { has_strong_hook = root }
			has_trait = incapable
			has_character_flag = joining_faction_block
			has_relation_friend = scope:temp_faction.faction_target
			has_relation_lover = scope:temp_faction.faction_target
			has_secret_relation_lover = scope:temp_faction.faction_target
			scope:temp_faction.faction_target = { is_contact_of = root }
		}
	}
	valid_to_keep = {
		exists = root.var:task_contract_faction
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		custom_tooltip = {
			text = NOT_FACTION_JOIN_CREATE_CONDITION_NOT_FACTION_MEMBER
			is_a_faction_member = no
		}
		#passes_faction_hard_block from 00_rules.txt
		scope:employer ?= {
			joined_faction ?= {
				faction_target ?= {
					save_temporary_scope_as = target
				}
			}
		}
		custom_description = {
			text = "FACTION_CANT_JOIN_CREATE_ADULT"
			is_adult = yes
		}
		custom_description = {
			text = "FACTION_CANT_JOIN_CREATE_ALLIED"
			trigger_if = {
				limit = { exists = scope:target }
				NOT = { is_allied_to = scope:target }
			}
		}
		custom_description = {
			text = "FACTION_CANT_JOIN_CREATE_HOOK"
			trigger_if = {
				limit = { exists = scope:target }
				scope:target = {
					NOT = { has_strong_hook = root }
				}
			}
		}
		custom_description = {
			text = "FACTION_CANT_JOIN_CREATE_IMPRISONED"
			trigger_if = {
				limit = {
					joined_faction ?= {
						faction_is_at_war = yes
					}
				}
			}
			trigger_else = {
				is_imprisoned = no
			}
		}
		custom_description = {
			text = "FACTION_CANT_JOIN_CREATE_INCAPABLE"
			NOT = { has_trait = incapable }
		}
		custom_description = {
			text = "character_blocked_from_joining"
			NOT = { has_character_flag = joining_faction_block }
		}
		custom_description = {
			text = "faction_relation_blocks_joining_friend"
			trigger_if = {
				limit = { exists = scope:target }
				NOT = {
					root = { has_relation_friend = scope:target }
				}
			}
		}
		custom_description = {
			text = "faction_relation_blocks_joining_lover"
			trigger_if = {
				limit = { exists = scope:target }
				NOR = {
					root = { has_relation_lover = scope:target }
					root = { has_secret_relation_lover = scope:target }
				}
			}
		}
	}
	valid_to_continue = {
		exists = root.var:task_contract_faction
		var:task_contract_faction = {
			any_faction_member = {
				this = root.task_contract_taker
			}
		}
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_almost_rare_value
		add = laamp_contracts_weight_up_mercenary_value
		add = laamp_contracts_weight_up_martial_slight_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				joined_faction = {
					save_scope_as = task_contract_faction
				}
				save_scope_as = task_contract_employer
			}
			set_variable = {
				name = task_contract_faction
				value = scope:task_contract_faction
			}
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract_employer
			}
			scope:task_contract_faction = {
				faction_target = {
					save_scope_as = task_contract_target
				}
			}
			set_task_contract_target = scope:task_contract_target
			set_variable = {
				name = task_contract_target
				value = scope:task_contract_target
			}
		}
	}

	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0070
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_join_faction_contract
				}
			}

			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
			else_if = {
				limit = {
					NOT = {	exists = scope:task_contract_faction }
					NOT = { exists = var:suppress_invalidation_event }
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:faction_disbanded
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
		task_contract_taker = {
			remove_variable = task_contract_faction
		}
	}

	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_as = task_contract
				var:task_contract_faction = {
					save_scope_as = faction
				}
				task_contract_employer = {
					save_scope_as = task_contract_employer
					save_scope_as = attacker
				}
				task_contract_taker = {
					save_scope_as = task_contract_taker
					save_scope_as = defender
					custom_tooltip = laamp_join_war_contract.contribution_based_reward_gold
					if = {
						limit = {
							faith != scope:task_contract.var:task_contract_target.faith
						}
						custom_tooltip = laamp_join_war_contract.contribution_based_reward_piety
					}
					save_scope_value_as = {
						name = task_contract_reward
						value = flag:success_standard
					}
					save_scope_value_as = {
						name = task_contract_tier
						value = scope:task_contract.task_contract_tier
					}
					war_contracts_completed_tracker_effect = yes
					send_interface_toast = {
						title = laamp_transport_contract.success
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						# Huck 'em into our contact list.
						add_contact = scope:task_contract.task_contract_employer
						# Give hook as well as contact
						add_hook_if_possible_default_length_effect = {
							TARGET = scope:task_contract.task_contract_employer 
							TYPE = contact_list_weak_hook
						}
						if = {
							limit = {
								exists = scope:task_contract.var:task_contract_title
							}
							scope:attacker = {
								save_scope_as = actor
							}
							save_scope_as = recipient
							scope:task_contract.var:task_contract_title = {
								add_to_list = offered_titles
							}
							negotiate_settlement_interaction_effect = yes
						}
					}
				}
			}
		}
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_as = task_contract
				var:task_contract_faction = {
					save_scope_as = faction
				}
				task_contract_employer = {
					save_scope_as = task_contract_employer
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_reward
						value = flag:failure_standard
					}
					save_scope_value_as = {
						name = task_contract_tier
						value = scope:task_contract.task_contract_tier
					}
					send_interface_toast = {
						title = laamp_transport_contract.transport_failed
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						add_prestige = task_contract_failure_prestige_loss_full_value
					}
				}
			}
		}
	}
}

## Missionary Duties
# scope:employer = ruler converting the county
# scope:task_contract_target = court chaplain doing the convert council task
# scope:task_contract_destination = county that has the council task active
# scope:task_contract_councillor = always the councillor performing the task
laamp_help_faith_conversion_contract = {
	group = laamp_contracts_learning_group
	icon = "/gfx/interface/icons/council_task_types/task_conversion.dds"
	travel = yes
	use_diplomatic_range = yes

	valid_to_create = {
		any_task_contract = {
			task_contract_type = laamp_help_faith_conversion_contract
			NOT = {	task_contract_location = scope:employer.location }
		}
		council_task_contract_valid_employer_trigger = {
			COUNCILLOR_TYPE = councillor_court_chaplain
			COUNCIL_TASK_TYPE = task_conversion
		}
	}

	valid_to_accept = {
		council_task_contract_valid_employer_trigger = {
			COUNCILLOR_TYPE = councillor_court_chaplain
			COUNCIL_TASK_TYPE = task_conversion
		}
	}

	valid_to_keep = {
		exists = root.var:task_contract_councillor_liege
		exists = root.var:task_contract_councillor
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_continue = {
		exists = root.var:task_contract_councillor_liege
		exists = root.var:task_contract_councillor
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_almost_rare_value
		add = laamp_contracts_weight_up_learning_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = { save_scope_as = task_contract_employer }
			if = {
				limit = {
					scope:task_contract_employer.cp:councillor_court_chaplain ?= { is_performing_council_task = task_conversion }
				}
				set_task_contract_target = scope:task_contract_employer.cp:councillor_court_chaplain
				scope:task_contract_employer.cp:councillor_court_chaplain = { save_scope_as = task_contract_councillor }
			}
			else = {
				set_task_contract_target = scope:task_contract_employer.liege
				scope:task_contract_employer = { save_scope_as = task_contract_councillor }
			}
			set_variable = {
				name = task_contract_destination
				value = root.task_contract_target.councillor_task_target
			}
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract_employer
			}
			set_variable = {
				name = task_contract_target
				value = root.task_contract_target
			}
			set_variable = {
				name = task_contract_councillor
				value = scope:task_contract_councillor
			}
			# Make our gold rewards static.
			grab_gold_fuzz_number_effect = yes
			set_variable = {
				name = gold_success_standard
				value = task_contract_taker.task_contract_success_gold_gain_full_value
			}
		}
	}

	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0085
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_destination = {
				save_scope_as = task_contract_destination
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_help_faith_conversion_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
	}

	# Rewards
	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_value_as = { name = extra_reward value = flag:no }
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = scope:task_contract.var:gold_success_standard
					PRESTIGE = task_contract_success_prestige_gain_half_value
					PIETY = task_contract_success_piety_gain_full_value
					PROVISIONS = task_contract_failure_provisions_gain_minor_value
					OPINION = task_contract_opinion_standard_reward_value
					OPINION_TYPE = succeeded_task_contract_opinion
					CONTACT = yes
					CONTACT_HOOK = yes
					EXTRA_REWARD = scope:extra_reward
				}
				gain_patron_and_hook_from_council_task_contract_effect = yes
			} 
		}		
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_value_as = { name = extra_reward value = flag:no }
				# Standard Penalties.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = 0
					PRESTIGE = task_contract_failure_prestige_loss_full_value
					PIETY = 0
					PROVISIONS = task_contract_failure_provisions_gain_minor_value
					OPINION = task_contract_opinion_standard_failure_value
					OPINION_TYPE = failed_task_contract_opinion
					CONTACT = no
					CONTACT_HOOK = no
					EXTRA_REWARD = scope:extra_reward
				}
			}
		}
	}
}

## Protect the Adherents
# scope:employer = pool character resisting county conversion
# scope:task_contract_target = court chaplain doing the convert council task
# scope:task_contract_destination = county that has the council task active
# scope:task_contract_object = task_contract_target's liege
laamp_fight_faith_conversion_contract = {
	group = laamp_contracts_learning_group
	icon = "/gfx/interface/icons/council_task_types/task_conversion.dds"
	travel = no
	use_diplomatic_range = yes

	valid_to_create = {
		NOT = {
			any_task_contract = {
				task_contract_type = laamp_fight_faith_conversion_contract
				task_contract_location = scope:employer.location
			}
		}
		scope:employer = {
			top_liege != this
			any_liege_or_above = {
				cp:councillor_court_chaplain ?= {
					is_performing_council_task = task_conversion
					councillor_task_target = scope:employer.location
				}
				faith != root.faith
				faith != scope:employer.faith
			}
		}
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
	}

	valid_to_continue = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	valid_to_keep = {
		exists = root.var:task_contract_councillor_liege
		exists = root.var:task_contract_councillor
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	valid_to_accept = {
		# Standard triggers.
		valid_laamp_basic_accept_only_trigger = yes
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_almost_rare_value
		add = laamp_contracts_weight_up_learning_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				save_scope_as = task_contract_employer
				if = {
					limit = {
						NOT = { exists = scope:task_contract.task_contract_destination }
					}
					random_liege_or_above = {
						limit = {
							cp:councillor_court_chaplain ?= {
								is_performing_council_task = task_conversion
								councillor_task_target = scope:task_contract_employer.location
								save_temporary_scope_as = temp_councillor								
							}
							faith != scope:task_contract.task_contract_taker.faith
							faith != scope:task_contract_employer.faith
						}
						save_scope_as = task_contract_councillor_liege
						scope:temp_councillor = {
							save_scope_as = task_contract_councillor
						}
					}
					scope:task_contract = {
						#save how the contract was generated for easier debugging
						set_variable = {
							name = spawned_by
							value = flag:populate_effect
						}
					}
				}
				else = {
					scope:task_contract = {
						task_contract_target = {
							save_scope_as = task_contract_councillor
							liege = {
								save_scope_as = task_contract_councillor_liege
							}
						}
						#save how the contract was generated for easier debugging
						set_variable = {
							name = spawned_by
							value = flag:on_action
						}
					}
				}
			}
			# Error suppression
			if = {
				limit = { exists = var:spawned_by
					OR = {
						var:spawned_by = flag:populate_effect
						var:spawned_by = flag:on_action
					}
				} 
			}
			set_variable = {
				name = task_contract_councillor_liege
				value = scope:task_contract_councillor_liege
			}
			set_variable = {
				name = task_contract_councillor
				value = scope:task_contract_councillor
			}
			if = {
				limit = {
					NOT = { exists = scope:task_contract.task_contract_target }
				}
				set_task_contract_target = scope:task_contract.var:task_contract_councillor
			}
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract_employer
			}
			set_variable = {
				name = task_contract_target
				value = scope:task_contract.task_contract_target
			}
			if = {
				limit = {
					exists = scope:task_contract.task_contract_destination
				}
				set_variable = {
					name = task_contract_destination
					value = scope:task_contract.task_contract_destination
				}
			}
			else = {
				set_variable = {
					name = task_contract_destination
					value = scope:task_contract.var:task_contract_councillor.councillor_task_target
				}
			}
			# Make our gold rewards static.
			grab_gold_fuzz_number_effect = yes
			set_variable = {
				name = gold_success_standard
				value = task_contract_taker.task_contract_success_gold_gain_full_value
			}
		}
	}

	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0082
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_destination = {
				save_scope_as = task_contract_destination
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_fight_faith_conversion_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
	}

	# Rewards
	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_value_as = { name = extra_reward value = flag:no }
				# Standard Rewards.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = scope:task_contract.var:gold_success_standard
					PRESTIGE = task_contract_success_prestige_gain_half_value
					PIETY = task_contract_success_piety_gain_full_value
					PROVISIONS = task_contract_success_provisions_gain_minor_value
					OPINION = task_contract_opinion_standard_reward_value
					OPINION_TYPE = succeeded_task_contract_opinion
					CONTACT = yes
					CONTACT_HOOK = yes
					EXTRA_REWARD = scope:extra_reward
				}
			} 
		}		
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_value_as = { name = extra_reward value = flag:no }
				# Standard Penalties.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = 0
					PRESTIGE = 0
					PIETY = -25
					PROVISIONS = 0
					OPINION = task_contract_opinion_standard_failure_value
					OPINION_TYPE = failed_task_contract_opinion
					CONTACT = no
					CONTACT_HOOK = no
					EXTRA_REWARD = scope:extra_reward
				}
			}
		}
	}
}

## Knight's Coach
# scope:employer = ruler or marshal needing help in train commanders council task
# scope:task_contract_target = marshal or ruler, depending on who's the employer
# var:knights_to_train = list of all knights you have to train
laamp_help_train_commanders_contract = {
	group = laamp_contracts_martial_group
	icon = "/gfx/interface/icons/council_task_types/task_train_commanders.dds"
	travel = yes
	use_diplomatic_range = yes

	valid_to_create = {
		council_task_contract_valid_employer_trigger = {
			COUNCILLOR_TYPE = councillor_marshal
			COUNCIL_TASK_TYPE = task_train_commanders
		}
		trigger_if = {
			limit = {
				scope:employer.cp:councillor_marshal ?= {
					is_performing_council_task = task_train_commanders
				}
			}
			scope:employer = {
				any_knight = { }		
			}
		}
		trigger_else = {
			scope:employer.liege = {
				any_knight = { }		
			}
		}
	}

	valid_to_accept = {
		council_task_contract_valid_employer_trigger = {
			COUNCILLOR_TYPE = councillor_marshal
			COUNCIL_TASK_TYPE = task_train_commanders
		}
	}
	valid_to_keep = {
		exists = root.var:task_contract_councillor_liege
		exists = root.var:task_contract_councillor
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	valid_to_continue = {
		time_since_contract_taken <= 720
		has_variable_list = knights_to_train
		any_in_list = {
			variable = knights_to_train
			is_alive = yes
			is_knight = yes
		}
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_almost_rare_value
		add = laamp_contracts_weight_up_martial_slight_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract_employer
			}
			
			assign_council_task_scopes_in_contract_effect = {
				COUNCILLOR_TYPE = councillor_marshal
				COUNCIL_TASK_TYPE = task_train_commanders
			}
			#save all knights to train
			scope:task_contract_councillor_liege = {
				ordered_knight = {
					order_by = {
						value = prowess
						multiply = -1
					}
					max = 3
					add_to_list = knights_list
					scope:task_contract = {
						add_to_variable_list = {
							name = knights_to_train
							target = prev
						}
					}
				}
			}
			#keep track of success and failure
			set_variable = {
				name = knights_trained
				value = 0
			}
			set_variable = {
				name = knights_failed
				value = 0
			}
			set_variable = {
				name = knights_limit
				value = {
					value = list_size:knights_list
					subtract = 1
				}
			}
			#get a list of traits you can teach		
			task_contract_taker = {
				every_character_trait = {
					limit = {
						has_trait_category = commander
					}
					scope:task_contract = {
						add_to_variable_list = {
							name = takers_commander_traits
							target = prev
						}
					}
				}
			}
			# Make our gold rewards static.
			grab_gold_fuzz_number_effect = yes
			set_variable = {
				name = gold_success_standard
				value = task_contract_taker.task_contract_success_gold_gain_full_value
			}
			# Make sure critical values are a bit higher.
			save_scope_value_as = { name = gold_safety_margin value = flag:yes }
			set_variable = {
				name = gold_success_critical
				value = task_contract_taker.task_contract_success_gold_gain_critical_value
			}
		}
	}

	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0090
		}
	}

	on_invalidated = {
		save_scope_as = task_contract
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			task_contract_target = {
				save_scope_as = task_contract_target
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_help_train_commanders_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
			else = {
				scope:task_contract = {
					if = {
						limit = {
							NAND = {
								var:knights_trained = 0
								var:knights_failed = 0
							}
						}
						if = {
							limit = {
								var:knights_trained >= scope:task_contract.var:knights_failed
							}
							complete_task_contract = success_standard
						}
						else = {
							complete_task_contract = failure_standard
						}
					}
				}
			}
		}
	}

	task_contract_reward = {
		success_critical = {
			effect = {
				save_scope_value_as = { name = extra_reward value = flag:no }
				save_scope_as = task_contract
				task_contract_taker = {
					play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract"
					send_interface_toast = {
						title = laamp_transport_contract.success
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						scope:task_contract = {
							# Standard Rewards.
							laamp_rewards_disburse_ordinary_currency_effect = {
								GOLD = scope:task_contract.var:gold_success_critical
								PRESTIGE = task_contract_success_prestige_gain_half_value
								PIETY = 0
								PROVISIONS = task_contract_success_provisions_gain_minor_value
								OPINION = task_contract_opinion_excelled_reward_value
								OPINION_TYPE = critically_succeeded_task_contract_opinion
								CONTACT = yes
								CONTACT_HOOK = yes
								EXTRA_REWARD = scope:extra_reward
							}
							gain_patron_and_hook_from_council_task_contract_effect = yes
						}
					}
				}
			}
		}
		success_standard = {
			effect = {
				save_scope_value_as = { name = extra_reward value = flag:no }
				save_scope_as = task_contract
				task_contract_taker = {
					play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract"
					send_interface_toast = {
						title = laamp_transport_contract.success
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						scope:task_contract = {
							# Standard Rewards.
							laamp_rewards_disburse_ordinary_currency_effect = {
								GOLD = scope:task_contract.var:gold_success_standard
								PRESTIGE = task_contract_success_prestige_gain_half_value
								PIETY = 0
								PROVISIONS = task_contract_success_provisions_gain_minor_value
								OPINION = task_contract_opinion_standard_reward_value
								OPINION_TYPE = succeeded_task_contract_opinion
								CONTACT = yes
								CONTACT_HOOK = yes
								EXTRA_REWARD = scope:extra_reward
							}
						}
					}
				}
			}
		}
		failure_standard = {
			positive = no
			effect = {
				save_scope_value_as = { name = extra_reward value = flag:no }
				save_scope_as = task_contract
				task_contract_taker = {
					play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract"
					send_interface_toast = {
						title = laamp_transport_contract.transport_failed
						left_icon = scope:task_contract.task_contract_taker
						right_icon = scope:task_contract.task_contract_employer
						scope:task_contract = {
							# Standard Penalties.
							laamp_rewards_disburse_ordinary_currency_effect = {
								GOLD = 0
								PRESTIGE = task_contract_failure_prestige_loss_full_value
								PIETY = 0
								PROVISIONS = task_contract_failure_provisions_gain_minor_value
								OPINION = task_contract_opinion_standard_failure_value
								OPINION_TYPE = failed_task_contract_opinion
								CONTACT = no
								CONTACT_HOOK = no
								EXTRA_REWARD = scope:extra_reward
							}
						}
					}
				}
			}
		}
	}
}

## Private Eye
# scope:employer = spymaster or ruler finding secrets
# scope:task_contract_target = holder of the claimed title
# scope:task_contract_destination = county that has the council task active
# scope:task_contract_object = employer's liege or court chaplain, depending on who's the employer
laamp_help_find_secrets_contract = {
	group = laamp_contracts_intrigue_group
	icon = "/gfx/interface/icons/council_task_types/task_find_secrets.dds"
	travel = yes
	use_diplomatic_range = yes

	valid_to_create = {
		council_task_contract_valid_employer_trigger = {
			COUNCILLOR_TYPE = councillor_spymaster
			COUNCIL_TASK_TYPE = task_find_secrets
		}
	}

	valid_to_keep = {
		exists = root.var:task_contract_councillor_liege
		exists = root.var:task_contract_councillor
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_accept = {
		council_task_contract_valid_employer_trigger = {
			COUNCILLOR_TYPE = councillor_spymaster
			COUNCIL_TASK_TYPE = task_find_secrets
		}
	}

	valid_to_continue = {
		time_since_contract_taken <= 720
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_almost_rare_value
		add = laamp_contracts_weight_up_intrigue_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract_employer
			}
			set_variable = {
				name = task_contract_destination
				value = scope:task_contract.task_contract_location
			}
			set_variable = {
				name = secrets_found
				value = 0
			}
			assign_council_task_scopes_in_contract_effect = {
				COUNCILLOR_TYPE = councillor_spymaster
				COUNCIL_TASK_TYPE = task_find_secrets
			}
			# Make our gold rewards static.
			grab_gold_fuzz_number_effect = yes
			set_variable = {
				name = gold_success_standard
				value = task_contract_taker.task_contract_success_gold_gain_full_value
			}
		}
	}

	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0100
		}
	}

	on_invalidated = {
		save_scope_as = task_contract
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			task_contract_target = {
				save_scope_as = task_contract_target
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_help_find_secrets_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
			else = {
				scope:task_contract = {
					if = {
						limit = {
							var:knights_trained >= scope:task_contract.var:knights_failed
						}
						complete_task_contract = success_standard
					}
					else = {
						complete_task_contract = failure_standard
					}
				}
			}
		}
	}

	task_contract_reward = {
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_value_as = { name = extra_reward value = flag:no }
				# Standard Rewards.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = scope:task_contract.var:gold_success_standard
					PRESTIGE = task_contract_success_prestige_gain_half_value
					PIETY = 0
					PROVISIONS = task_contract_success_provisions_gain_minor_value
					OPINION = task_contract_opinion_standard_reward_value
					OPINION_TYPE = succeeded_task_contract_opinion
					CONTACT = yes
					CONTACT_HOOK = yes
					EXTRA_REWARD = scope:extra_reward
				}
				gain_patron_and_hook_from_council_task_contract_effect = yes
			}
		}
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_value_as = { name = extra_reward value = flag:no }
				# Standard Penalties.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = 0
					PRESTIGE = -25
					PIETY = 0
					PROVISIONS = 0
					OPINION = task_contract_opinion_standard_failure_value
					OPINION_TYPE = failed_task_contract_opinion
					CONTACT = no
					CONTACT_HOOK = no
					EXTRA_REWARD = scope:extra_reward
				}
			}
		}
	}
}

## Forgotten Claims
# scope:employer = court chaplain or ruler fabricating a claim
# scope:task_contract_target = holder of the claimed title
# scope:task_contract_destination = county that has the council task active
# scope:task_contract_councillor_liege = always liege of the councillor performing the task
# scope:task_contract_councillor = always the councillor performing the task
laamp_help_fabricate_claim_contract = {
	group = laamp_contracts_intrigue_group
	icon = "/gfx/interface/icons/council_task_types/task_fabricate_claim.dds"
	travel = yes
	use_diplomatic_range = yes

	valid_to_create = {
		council_task_contract_valid_employer_trigger = {
			COUNCILLOR_TYPE = councillor_court_chaplain
			COUNCIL_TASK_TYPE = task_fabricate_claim
		}
	}

	valid_to_keep = {
		exists = root.var:task_contract_councillor_liege
		exists = root.var:task_contract_councillor
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}
	valid_to_accept = {
		council_task_contract_valid_employer_trigger = {
			COUNCILLOR_TYPE = councillor_court_chaplain
			COUNCIL_TASK_TYPE = task_fabricate_claim
		}
	}
	valid_to_continue = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_almost_rare_value
		add = laamp_contracts_weight_up_intrigue_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			assign_council_task_scopes_in_contract_effect = {
				COUNCILLOR_TYPE = councillor_court_chaplain
				COUNCIL_TASK_TYPE = task_fabricate_claim
			}
			if = {
				limit = {
					exists = scope:task_contract.task_contract_destination
				}
				set_variable = {
					name = task_contract_destination
					value = scope:task_contract.task_contract_destination
				}
			}
			else = {
				set_variable = {
					name = task_contract_destination
					value = scope:task_contract_councillor.councillor_task_target
				}
			}
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract.task_contract_employer
			}
			set_variable = {
				name = task_contract_target
				value = scope:task_contract.var:task_contract_destination.province_owner
			}
			set_task_contract_target = scope:task_contract.var:task_contract_target
			# Make our gold rewards static.
			grab_gold_fuzz_number_effect = yes
			set_variable = {
				name = gold_success_critical
				value = task_contract_taker.task_contract_success_gold_gain_full_value
			}
			set_variable = {
				name = gold_success_standard
				value = task_contract_taker.task_contract_success_gold_gain_full_value
			}
		}
	}

	# On_Actions
	on_accepted = {
		task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0080
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_destination = {
				save_scope_as = task_contract_destination
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_help_fabricate_claim_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
	}

	# Rewards
	task_contract_reward = {
		success_critical = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_value_as = { name = extra_reward value = flag:no }
				# Standard Rewards.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = scope:task_contract.var:gold_success_critical
					PRESTIGE = task_contract_success_prestige_gain_half_value
					PIETY = 0
					PROVISIONS = task_contract_success_provisions_gain_minor_value
					OPINION = task_contract_opinion_excelled_reward_value
					OPINION_TYPE = critically_succeeded_task_contract_opinion
					CONTACT = yes
					CONTACT_HOOK = yes
					EXTRA_REWARD = scope:extra_reward
				}
				if = {
					limit = {
						exists = var:attached_scheme
					}
					var:attached_scheme = {
						scheme_target_title = {
							save_scope_as = claimed_title
						}
					}
				}
				else = {
					scope:task_contract.var:task_contract_destination.county = {
						save_scope_as = claimed_title
					}
				}
				var:task_contract_councillor_liege = {
					add_pressed_claim = scope:claimed_title
				}
				task_contract_taker = {
					show_as_tooltip = {
						add_pressed_claim = scope:claimed_title
					}
				}
				gain_patron_and_hook_from_council_task_contract_effect = yes
			} 
		}
		success_standard = {
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
				save_scope_value_as = { name = extra_reward value = flag:no }
				# Standard Rewards.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = scope:task_contract.var:gold_success_standard
					PRESTIGE = task_contract_success_prestige_gain_half_value
					PIETY = 0
					PROVISIONS = task_contract_success_provisions_gain_minor_value
					OPINION = task_contract_opinion_standard_reward_value
					OPINION_TYPE = succeeded_task_contract_opinion
					CONTACT = no
					CONTACT_HOOK = no
					EXTRA_REWARD = scope:extra_reward
				}
				if = {
					limit = {
						exists = var:attached_scheme
					}
					var:attached_scheme = {
						scheme_target_title = {
							save_scope_as = claimed_title
						}
					}
				}
				else = {
					scope:task_contract.var:task_contract_destination.county = {
						save_scope_as = claimed_title
					}
				}
				var:task_contract_councillor_liege = {
					add_pressed_claim = scope:claimed_title
				}
				task_contract_taker = {
					hidden_effect = {
						remove_claim = scope:claimed_title
					}
				}
				gain_patron_and_hook_from_council_task_contract_effect = yes
			}
		}		
		failure_standard = {
			positive = no
			effect = {
				task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
				save_scope_value_as = { name = extra_reward value = flag:no }
				# Standard Penalties.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = 0
					PRESTIGE = task_contract_failure_prestige_loss_full_value
					PIETY = 0
					PROVISIONS = task_contract_failure_provisions_gain_minor_value
					OPINION = task_contract_opinion_standard_failure_value
					OPINION_TYPE = failed_task_contract_opinion
					CONTACT = no
					CONTACT_HOOK = no
					EXTRA_REWARD = scope:extra_reward
				}
			}
		}
	}
}

## Fight Corruption
# scope:employer = marshal or ruler increasing control
# scope:task_contract_target = holder of the claimed title
# scope:task_contract_destination = county that has the council task active
# scope:task_contract_councillor_liege = always liege of the councillor performing the task
# scope:task_contract_councillor = always the councillor performing the task
laamp_help_increase_control_contract = {
	group = laamp_contracts_intrigue_group
	icon = "/gfx/interface/icons/council_task_types/task_increase_control.dds"
	travel = no
	use_diplomatic_range = yes

	valid_to_create = {
		valid_laamp_basic_trigger = {
			EMPLOYER = scope:employer
			LAAMP = root
		}
		OR = {
			scope:employer = {
				NOT = { var:issued_help_increase_control_contract_recently ?= root }
				top_liege = this
				any_councillor = {
					OR = {
						has_council_position = councillor_marshal
						AND = {
							is_kurultai_trigger = yes
							highest_skill = martial
						}
					}
				}
				any_sub_realm_county = {
					OR = {
						has_county_corruption_trigger = yes
						county_control <= low_county_control
					}
				}
			}
			scope:employer = {
				NOT = { var:issued_help_increase_control_contract_recently ?= root }
				OR = {
					has_council_position = councillor_marshal
					AND = {
						is_kurultai_trigger = yes
						highest_skill = martial
					}
				}
				is_councillor_of = top_liege				
				top_liege = {
					NOT = {
						has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:employer }
					}
					any_sub_realm_county = {
						OR = {
							has_county_corruption_trigger = yes
							county_control <= low_county_control
						}
					}
				}
			}
		}
	}

	valid_to_keep = {
		var:task_contract_councillor_liege ?= {
			any_sub_realm_county = {
				OR = {
					has_county_corruption_trigger = yes
					county_control <= low_county_control
				}
			}
		}
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	valid_to_continue = {
		# Standard triggers.
		valid_laamp_basic_trigger = {
			EMPLOYER = root.task_contract_employer
			LAAMP = root.task_contract_taker
		}
	}

	valid_to_accept = {
	}

	weight = {
		# Standard weights.
		value = task_contract_weight_interesting_almost_rare_value
		add = laamp_contracts_weight_up_martial_value
		add = task_contract_weight_employer_contact_list_value
		scope:employer = { multiply = task_contract_weight_by_tier_value }
	}

	on_create = {
		scope:contract = {
			save_scope_as = task_contract
			task_contract_employer = {
				set_variable = {
					name = issued_help_increase_control_contract_recently
					value = scope:task_contract.task_contract_taker
					years = 10
				}
				save_scope_as = task_contract_employer
				if = {
					limit = {
						top_liege = this
					}
					scope:task_contract_employer = {
						save_scope_as = task_contract_councillor_liege
						random_councillor = {
							limit = {
								OR = {
									has_council_position = councillor_marshal
									AND = {
										is_kurultai_trigger = yes
										highest_skill = martial
									}
								}
							}
							save_scope_as = task_contract_councillor
						}
					}
				}
				else = {
					scope:task_contract_employer = {
						save_scope_as = task_contract_councillor
						top_liege = {
							save_scope_as = task_contract_councillor_liege
						}
					}
				}
			}
			set_variable = {
				name = task_contract_councillor_liege
				value = scope:task_contract_councillor_liege
			}
			set_variable = {
				name = task_contract_councillor
				value = scope:task_contract_councillor
			}
			set_variable = {
				name = task_contract_employer
				value = scope:task_contract.task_contract_employer
			}
			set_variable = {
				name = support
				value = 0
			}
			set_variable = {
				name = control
				value = 0
			}
			set_variable = {
				name = num_of_corrupt_counties
				value = 0
			}
			#save the liege as the target
			set_task_contract_target = scope:task_contract_councillor_liege
			#save all counties with low control or corruption modifier in liege's realm
			scope:task_contract_councillor_liege = {
				ordered_sub_realm_county = {
					order_by = {
						value = county_opinion
						multiply = -1
					}
					max = 6
					check_range_bounds = no
					limit = {
						OR = {
							has_county_corruption_trigger = yes
							county_control <= low_county_control
						}
					}
					scope:task_contract = {
						add_to_variable_list = {
							name = corrupt_counties
							target = prev
						}
					}
				}
			}
			# We do this a bit later on because otherwise it was having some slight issues if only one county was valid.
			set_variable = {
				name = num_of_corrupt_counties
				value = {
					every_in_list = {
						variable = corrupt_counties
						add = 1
					}
				}
			}
			random_in_list = {
				variable = corrupt_counties
				title_province = {
					save_scope_as = destination
				}
			}
			set_variable = {
				name = task_contract_destination
				value = scope:destination
			}
			# Make our gold rewards static.
			grab_gold_fuzz_number_effect = yes
			set_variable = {
				name = gold_success_critical
				value = {
					value = task_contract_taker.task_contract_success_gold_gain_full_value
					multiply = scope:task_contract.var:num_of_corrupt_counties
				}
			}
			set_variable = {
				name = gold_success_standard
				value = {
					value = task_contract_taker.task_contract_success_gold_gain_full_value
					multiply = scope:task_contract.var:num_of_corrupt_counties
					multiply = 0.5
				}
			}
		}
	}

	# On_Actions
	on_accepted = {
		save_scope_as = task_contract
		task_contract_taker = {
			trigger_event = ep3_contract_event.0092
		}
	}

	on_invalidated = {
		if = {
			limit = {
				root.task_contract_taker = {
					any_character_active_contract = {
						this = root
					}
				}
			}
			task_contract_employer = {
				save_scope_as = task_contract_employer
			}
			save_scope_value_as = {
				name = task_contract_tier
				value = root.task_contract_tier
			}
			var:task_contract_destination = {
				save_scope_as = task_contract_destination
			}
			var:task_contract_target = {
				save_scope_as = task_contract_target
			}
			task_contract_taker = {
				set_variable = {
					name = invalidated_task_contract_type
					value = flag:laamp_help_increase_control_contract
				}
			}
			if = {
				limit = {
					task_contract_employer = {
						is_alive = no
					}
				}
				task_contract_employer.primary_title.holder ?= {
					save_scope_as = employer_heir
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:employer_dead
					}
					trigger_event = ep3_contract_event.0012
				
				}
			}
			else_if = {
				limit = {
					scope:task_contract_target = {
						is_alive = no
					}
				}
				task_contract_taker = {
					save_scope_value_as = {
						name = task_contract_invalidation_reason
						value = flag:target_dead
					}
					trigger_event = ep3_contract_event.0012
				}
			}
		}
	}

	# Rewards
	task_contract_reward = {
		success_critical = {
			effect = {
				save_scope_value_as = { name = extra_reward value = flag:no }
				save_scope_as = task_contract
				set_variable = {
					name = gold_success_critical
					value = {
						value = task_contract_taker.task_contract_success_gold_gain_full_value
						multiply = var:control
					}
				}
				set_variable = {
					name = gold_success_standard
					value = {
						value = task_contract_taker.task_contract_success_gold_gain_full_value
						multiply = var:control
						multiply = 0.5
					}
				}
				# Standard Rewards.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = scope:task_contract.var:gold_success_critical
					PRESTIGE = task_contract_success_prestige_gain_half_value
					PIETY = 0
					PROVISIONS = task_contract_success_provisions_gain_minor_value
					OPINION = task_contract_opinion_excelled_reward_value
					OPINION_TYPE = critically_succeeded_task_contract_opinion
					CONTACT = yes
					CONTACT_HOOK = yes
					EXTRA_REWARD = scope:extra_reward
				}
				gain_patron_and_hook_from_council_task_contract_effect = yes
				hidden_effect = {
					scope:task_contract.task_contract_taker= { return_home = yes }
				}
			} 
		}
		success_standard = {
			effect = {
				save_scope_value_as = { name = extra_reward value = flag:no }
				save_scope_as = task_contract
				set_variable = {
					name = gold_success_critical
					value = {
						value = task_contract_taker.task_contract_success_gold_gain_full_value
						multiply = var:control
					}
				}
				set_variable = {
					name = gold_success_standard
					value = {
						value = task_contract_taker.task_contract_success_gold_gain_full_value
						multiply = var:control
						multiply = 0.5
					}
				}
				# Standard Rewards.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = scope:task_contract.var:gold_success_standard
					PRESTIGE = task_contract_success_prestige_gain_half_value
					PIETY = 0
					PROVISIONS = task_contract_success_provisions_gain_minor_value
					OPINION = task_contract_opinion_standard_reward_value
					OPINION_TYPE = succeeded_task_contract_opinion
					CONTACT = no
					CONTACT_HOOK = no
					EXTRA_REWARD = scope:extra_reward
				}
				gain_patron_and_hook_from_council_task_contract_effect = yes
				hidden_effect = {
					scope:task_contract.task_contract_taker = {
						return_home = yes
					}
				}
			}
		}		
		failure_standard = {
			positive = no
			effect = {
				save_scope_value_as = { name = extra_reward value = flag:no }
				save_scope_as = task_contract
				# Standard Penalties.
				laamp_rewards_disburse_ordinary_currency_effect = {
					GOLD = 0
					PRESTIGE = task_contract_failure_prestige_loss_full_value
					PIETY = 0
					PROVISIONS = task_contract_failure_provisions_gain_minor_value
					OPINION = task_contract_opinion_standard_failure_value
					OPINION_TYPE = failed_task_contract_opinion
					CONTACT = no
					CONTACT_HOOK = no
					EXTRA_REWARD = scope:extra_reward
				}
				hidden_effect = {
					scope:task_contract.task_contract_taker = {
						return_home = yes
					}
				}
			}
		}
	}
}
