﻿namespace = ppr_contract_events

######################################################################
# 0001-0009: Retrieve a Holy Relic
######################################################################

# Contract accepted: set out for the saint's tomb
ppr_contract_events.0001 = {
	type = character_event
	title = ppr_contract_events.0001.t
	desc = ppr_contract_events.0001.desc
	theme = faith
	left_portrait = {
		character = root
		animation = personality_zealous
	}
	right_portrait = {
		character = scope:employer
		animation = prayer_standing
	}
	override_background = { reference = temple }

	immediate = {
		ppr_set_contract_scopes_effect = yes
	}

	option = {
		name = ppr_contract_events.0001.a
		trigger = { exists = scope:task_contract_destination }
		custom_tooltip = ppr_contract_events.0001.a.tt
		if = {
			limit = { location = scope:task_contract_destination }
			trigger_event = ppr_contract_events.0002
		}
		else = {
			start_travel_plan = {
				destination = scope:task_contract_destination
				on_arrival_destinations = all
				on_arrival_event = ppr_contract_events.0002
				on_travel_planner_cancel_event = ppr_contract_events.0009
			}
		}
		ai_chance = { base = 100 }
	}

	option = {
		name = ppr_contract_events.abandon
		scope:task_contract = { invalidate_contract = yes }
		ai_chance = { base = 0 }
	}
}

# Arrived at the tomb: win over the guardians
ppr_contract_events.0002 = {
	type = character_event
	title = ppr_contract_events.0002.t
	desc = ppr_contract_events.0002.desc
	theme = faith
	left_portrait = {
		character = root
		animation = prayer_standing
	}
	override_background = { reference = temple }

	trigger = {
		any_character_active_contract = { has_task_contract_type = ppr_retrieve_relic }
	}

	immediate = {
		ppr_find_contract_effect = { TYPE = ppr_retrieve_relic }
		ppr_set_contract_scopes_effect = yes
		scope:task_contract = {
			save_scope_value_as = {
				name = ppr_difficulty
				value = ppr_relic_guardians_difficulty_value
			}
		}
	}

	# Recount the saint's life and miracles
	option = {
		name = ppr_contract_events.0002.a
		skill = learning
		duel = {
			skill = learning
			value = scope:ppr_difficulty
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				min = 5
				desc = ppr_contract_events.0002.a.success
				send_interface_toast = {
					type = event_generic_good
					title = ppr_contract_events.0002.a.success
					left_icon = root
					scope:task_contract = {
						set_variable = {
							name = ppr_relic_outcome
							value = flag:critical
						}
					}
					ppr_relic_head_home_effect = yes
				}
			}
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				min = 15
				desc = ppr_contract_events.0002.failure
				send_interface_toast = {
					type = event_generic_bad
					title = ppr_contract_events.0002.failure
					left_icon = root
					scope:task_contract = { complete_task_contract = failure_standard }
				}
			}
		}
		ai_chance = { base = 100 }
	}

	# Plead with the monks
	option = {
		name = ppr_contract_events.0002.b
		skill = diplomacy
		duel = {
			skill = diplomacy
			value = scope:ppr_difficulty
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				min = 5
				desc = ppr_contract_events.0002.b.success
				send_interface_toast = {
					type = event_generic_good
					title = ppr_contract_events.0002.b.success
					left_icon = root
					ppr_relic_head_home_effect = yes
				}
			}
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				min = 15
				desc = ppr_contract_events.0002.failure
				send_interface_toast = {
					type = event_generic_bad
					title = ppr_contract_events.0002.failure
					left_icon = root
					scope:task_contract = { complete_task_contract = failure_standard }
				}
			}
		}
		ai_chance = { base = 100 }
	}

	# A generous gift to the shrine
	option = {
		name = ppr_contract_events.0002.c
		trigger = { gold >= minor_gold_value }
		remove_short_term_gold = minor_gold_value
		ppr_relic_head_home_effect = yes
		ai_chance = { base = 10 }
	}
}

# Back at the employer's capital: hand over the relic
ppr_contract_events.0003 = {
	type = character_event
	title = ppr_contract_events.0003.t
	desc = ppr_contract_events.0003.desc
	theme = faith
	left_portrait = {
		character = root
		animation = acknowledging_crozier
	}
	right_portrait = {
		character = scope:employer
		animation = admiration
	}
	override_background = { reference = throne_room }

	trigger = {
		any_character_active_contract = { has_task_contract_type = ppr_retrieve_relic }
	}

	immediate = {
		ppr_find_contract_effect = { TYPE = ppr_retrieve_relic }
		ppr_set_contract_scopes_effect = yes
	}

	option = {
		name = ppr_contract_events.0003.a
		if = {
			limit = { exists = scope:ppr_saint }
			ppr_grant_saint_relic_effect = {
				OWNER = scope:employer
				SAINT = scope:ppr_saint
			}
		}
		# Every relic type of this saint may already have been drawn
		if = {
			limit = { NOT = { exists = scope:newly_created_artifact } }
			custom_tooltip = ppr_contract_events.0003.no_relic_tt
		}
		scope:task_contract = {
			if = {
				limit = { var:ppr_relic_outcome ?= flag:critical }
				complete_task_contract = success_critical
			}
			else = {
				complete_task_contract = success_standard
			}
		}
		ai_chance = { base = 100 }
	}
}

# Travel cancelled while on the relic errand
ppr_contract_events.0009 = {
	type = character_event
	hidden = yes

	immediate = {
		random_character_active_contract = {
			limit = { has_task_contract_type = ppr_retrieve_relic }
			save_scope_as = ppr_cancelled_contract
		}
		if = {
			limit = { exists = scope:ppr_cancelled_contract }
			send_interface_message = {
				type = diplo_contract_scheme_invalidated_message
				title = contract_invalidated_title
				right_icon = scope:ppr_cancelled_contract.task_contract_employer
				scope:ppr_cancelled_contract = { invalidate_contract = yes }
			}
		}
	}
}

######################################################################
# 0010-0019: Preach the Word
######################################################################

# A sermon (repeated three times)
ppr_contract_events.0010 = {
	type = character_event
	title = ppr_contract_events.0010.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = { exists = scope:ppr_tenet }
				desc = ppr_contract_events.0010.desc_tenet
			}
			desc = ppr_contract_events.0010.desc
		}
	}
	theme = faith
	left_portrait = {
		character = root
		animation = preaching
	}
	right_portrait = {
		character = scope:employer
		animation = interested
	}
	override_background = { reference = market }

	trigger = {
		any_character_active_contract = { has_task_contract_type = ppr_preach_tenet }
	}

	immediate = {
		ppr_find_contract_effect = { TYPE = ppr_preach_tenet }
		ppr_set_contract_scopes_effect = yes
		if = {
			limit = { NOT = { has_character_flag = is_in_task_contract_event_chain } }
			add_character_flag = is_in_task_contract_event_chain
		}
		hidden_effect = {
			current_travel_plan ?= {
				if = {
					limit = { is_paused = no }
					pause_travel_plan = yes
				}
			}
		}
		scope:employer = {
			random_personal_tenet = {
				limit = {
					ppr_tenet_not_core_for_trigger = { CHARACTER = scope:employer }
				}
				save_scope_as = ppr_tenet
			}
		}
		scope:task_contract = {
			save_scope_value_as = {
				name = ppr_difficulty
				value = ppr_preaching_difficulty_value
			}
		}
	}

	# A learned sermon
	option = {
		name = ppr_contract_events.0010.a
		skill = learning
		duel = {
			skill = learning
			value = scope:ppr_difficulty
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				min = 5
				desc = ppr_contract_events.0010.success
				send_interface_toast = {
					type = event_generic_good
					title = ppr_contract_events.0010.success
					left_icon = root
					ppr_preach_success_effect = yes
				}
			}
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				min = 15
				desc = ppr_contract_events.0010.failure
				send_interface_toast = {
					type = event_generic_bad
					title = ppr_contract_events.0010.failure
					left_icon = root
					ppr_preach_failure_effect = yes
				}
			}
		}
		ai_chance = { base = 100 }
	}

	# Stir the crowd
	option = {
		name = ppr_contract_events.0010.b
		skill = diplomacy
		duel = {
			skill = diplomacy
			value = scope:ppr_difficulty
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				min = 5
				desc = ppr_contract_events.0010.success
				send_interface_toast = {
					type = event_generic_good
					title = ppr_contract_events.0010.success
					left_icon = root
					ppr_preach_success_effect = yes
				}
			}
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				min = 15
				desc = ppr_contract_events.0010.failure
				send_interface_toast = {
					type = event_generic_bad
					title = ppr_contract_events.0010.failure
					left_icon = root
					ppr_preach_failure_effect = yes
				}
			}
		}
		ai_chance = { base = 100 }
	}

	# Arrange a small "miracle"
	option = {
		name = ppr_contract_events.0010.c
		skill = intrigue
		duel = {
			skill = intrigue
			value = scope:ppr_difficulty
			60 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				min = 10
				desc = ppr_contract_events.0010.success
				send_interface_toast = {
					type = event_generic_good
					title = ppr_contract_events.0010.success
					left_icon = root
					ppr_preach_success_effect = yes
				}
			}
			40 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -39
				}
				min = 10
				desc = ppr_contract_events.0010.c.exposed
				send_interface_toast = {
					type = event_generic_bad
					title = ppr_contract_events.0010.c.exposed
					left_icon = root
					ppr_preach_failure_effect = yes
					add_piety = minor_piety_loss
					if = { limit = { has_pam_dlc_trigger = yes } change_spiritual_fulfillment = minor_spiritual_fulfillment_loss }
				}
			}
		}
		stress_impact = {
			honest = minor_stress_impact_gain
			zealous = minor_stress_impact_gain
		}
		ai_chance = { base = 50 }
	}

	after = {
		scope:task_contract = {
			increment_variable_effect = { VAR = ppr_sermons_left VAL = -1 }
		}
		if = {
			limit = { scope:task_contract.var:ppr_sermons_left > 0 }
			trigger_event = {
				id = ppr_contract_events.0010
				days = { 3 7 }
			}
		}
		else = {
			trigger_event = {
				id = ppr_contract_events.0015
				days = 1
			}
		}
	}
}

# Conclusion of the preaching contract
ppr_contract_events.0015 = {
	type = character_event
	title = ppr_contract_events.0015.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = { scope:task_contract.var:ppr_score_tally >= 2 }
				desc = ppr_contract_events.0015.desc_good
			}
			triggered_desc = {
				trigger = { scope:task_contract.var:ppr_score_tally >= 1 }
				desc = ppr_contract_events.0015.desc_mixed
			}
			desc = ppr_contract_events.0015.desc_bad
		}
	}
	theme = faith
	left_portrait = {
		character = root
		animation = prayer_standing
	}
	right_portrait = {
		character = scope:employer
		animation = thinking
	}
	override_background = { reference = temple }

	trigger = {
		any_character_active_contract = { has_task_contract_type = ppr_preach_tenet }
	}

	immediate = {
		ppr_find_contract_effect = { TYPE = ppr_preach_tenet }
		ppr_set_contract_scopes_effect = yes
	}

	option = {
		name = ppr_contract_events.0015.a
		scope:task_contract = {
			if = {
				limit = { var:ppr_score_tally >= 3 }
				complete_task_contract = success_critical
			}
			else_if = {
				limit = { var:ppr_score_tally >= 2 }
				complete_task_contract = success_standard
			}
			else_if = {
				limit = { var:ppr_score_tally >= 1 }
				complete_task_contract = success_qualified
			}
			else = {
				complete_task_contract = failure_standard
			}
		}
		ai_chance = { base = 100 }
	}

	after = {
		remove_character_flag ?= is_in_task_contract_event_chain
		hidden_effect = {
			current_travel_plan ?= {
				if = {
					limit = { is_paused = yes }
					resume_travel_plan = yes
				}
			}
		}
	}
}

######################################################################
# 0020-0029: Confront the Heresiarch
######################################################################

# Contract accepted: set out after the heresiarch
ppr_contract_events.0020 = {
	type = character_event
	title = ppr_contract_events.0020.t
	desc = ppr_contract_events.0020.desc
	theme = faith
	left_portrait = {
		character = root
		animation = personality_zealous
	}
	right_portrait = {
		character = scope:task_contract_target
		animation = zealous_superior
	}
	override_background = { reference = council_chamber }

	immediate = {
		ppr_set_contract_scopes_effect = yes
		scope:task_contract_target.location ?= { save_scope_as = ppr_heresiarch_location }
	}

	option = {
		name = ppr_contract_events.0020.a
		trigger = { exists = scope:ppr_heresiarch_location }
		custom_tooltip = ppr_contract_events.0020.a.tt
		if = {
			limit = { location = scope:ppr_heresiarch_location }
			trigger_event = ppr_contract_events.0021
		}
		else = {
			start_travel_plan = {
				destination = scope:ppr_heresiarch_location
				on_arrival_destinations = all
				on_arrival_event = ppr_contract_events.0021
				on_travel_planner_cancel_event = ppr_contract_events.0029
			}
		}
		ai_chance = { base = 100 }
	}

	option = {
		name = ppr_contract_events.abandon
		scope:task_contract = { invalidate_contract = yes }
		ai_chance = { base = 0 }
	}
}

# Face to face with the heresiarch
ppr_contract_events.0021 = {
	type = character_event
	title = ppr_contract_events.0021.t
	desc = ppr_contract_events.0021.desc
	theme = faith
	left_portrait = {
		character = root
		animation = personality_zealous
	}
	right_portrait = {
		character = scope:task_contract_target
		animation = preaching
	}
	override_background = { reference = market }

	trigger = {
		any_character_active_contract = {
			has_task_contract_type = ppr_confront_heresiarch
			var:task_contract_target ?= {
				is_alive = yes
				has_trait = heresiarch
			}
		}
	}

	immediate = {
		ppr_find_contract_effect = { TYPE = ppr_confront_heresiarch }
		ppr_set_contract_scopes_effect = yes
	}

	# Debate them before the faithful
	option = {
		name = ppr_contract_events.0021.a
		skill = learning
		duel = {
			skill = learning
			target = scope:task_contract_target
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				min = 5
				desc = ppr_contract_events.0021.a.success
				send_interface_toast = {
					type = event_generic_good
					title = ppr_contract_events.0021.a.success
					left_icon = root
					right_icon = scope:task_contract_target
					scope:task_contract = { complete_task_contract = success_critical }
					scope:task_contract_target = {
						ppr_heresiarch_recants_effect = { EMPLOYER = scope:employer }
					}
				}
			}
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				min = 15
				desc = ppr_contract_events.0021.failure
				send_interface_toast = {
					type = event_generic_bad
					title = ppr_contract_events.0021.failure
					left_icon = root
					right_icon = scope:task_contract_target
					scope:task_contract = { complete_task_contract = failure_standard }
					scope:task_contract_target = { add_piety = minor_piety_gain }
				}
			}
		}
		ai_chance = { base = 100 }
	}

	# Expose their hypocrisy
	option = {
		name = ppr_contract_events.0021.b
		skill = intrigue
		duel = {
			skill = intrigue
			target = scope:task_contract_target
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				min = 5
				desc = ppr_contract_events.0021.b.success
				send_interface_toast = {
					type = event_generic_good
					title = ppr_contract_events.0021.b.success
					left_icon = root
					right_icon = scope:task_contract_target
					scope:task_contract = { complete_task_contract = success_standard }
					scope:task_contract_target = { ppr_heresiarch_discredited_effect = yes }
				}
			}
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				min = 15
				desc = ppr_contract_events.0021.failure
				send_interface_toast = {
					type = event_generic_bad
					title = ppr_contract_events.0021.failure
					left_icon = root
					right_icon = scope:task_contract_target
					scope:task_contract = { complete_task_contract = failure_standard }
				}
			}
		}
		stress_impact = {
			honest = minor_stress_impact_gain
		}
		ai_chance = { base = 50 }
	}

	# Denounce them to the crowd
	option = {
		name = ppr_contract_events.0021.c
		skill = diplomacy
		duel = {
			skill = diplomacy
			target = scope:task_contract_target
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				min = 5
				desc = ppr_contract_events.0021.c.success
				send_interface_toast = {
					type = event_generic_good
					title = ppr_contract_events.0021.c.success
					left_icon = root
					right_icon = scope:task_contract_target
					scope:task_contract = { complete_task_contract = success_standard }
					scope:task_contract_target = { ppr_heresiarch_discredited_effect = yes }
				}
			}
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				min = 15
				desc = ppr_contract_events.0021.failure
				send_interface_toast = {
					type = event_generic_bad
					title = ppr_contract_events.0021.failure
					left_icon = root
					right_icon = scope:task_contract_target
					scope:task_contract = { complete_task_contract = failure_standard }
				}
			}
		}
		ai_chance = { base = 100 }
	}
}

# Travel cancelled while hunting the heresiarch
ppr_contract_events.0029 = {
	type = character_event
	hidden = yes

	immediate = {
		random_character_active_contract = {
			limit = { has_task_contract_type = ppr_confront_heresiarch }
			save_scope_as = ppr_cancelled_contract
		}
		if = {
			limit = { exists = scope:ppr_cancelled_contract }
			send_interface_message = {
				type = diplo_contract_scheme_invalidated_message
				title = contract_invalidated_title
				right_icon = scope:ppr_cancelled_contract.task_contract_employer
				scope:ppr_cancelled_contract = { invalidate_contract = yes }
			}
		}
	}
}
