namespace = maintPlus
namespace = PlusMaintenance

#######################################
#
# CK2Plus Maintenance Events
#
#######################################
#
# CATALOG
#
# 010 - 019: Setup Events
# 100 - 199: Utility Events
#
#######################################

#######################################
#
# 010 - 019: Welcome Events and Setup
#
#######################################
#
# INDEX
#
# 010: Player greeting
# 011: Ironman Warning
# 012: Ruler Designer Setup
# 013: Checksum Warning
#
#######################################

# 010: Player greeting
narrative_event = {
	id = maintPlus.010
	title = EVTNAME_Plus_367
	desc = EVTDESC_Plus_367
	picture = GFX_evt_throne_room

	is_triggered_only = yes # PlusStartUp.001
	hide_from = yes

	option = {
		name = OK
	}
}

# 011: Ironman Warning
narrative_event = {
	id = maintPlus.011
	title = EVTNAME_Plus_1752
	desc = EVTDESC_Plus_1752
	picture = GFX_evt_book_carolingian_script

	is_triggered_only = yes # PlusStartUp.001

	trigger = {
		is_ironman = yes
	}

	option = {
		name = EVTOPTA_Plus_1752
	}
}

# 012: Checksum Warning
narrative_event = {
	id = maintPlus.012
	title = EVTNAME_Plus_372
	desc = EVTDESC_Plus_372
	picture = GFX_evt_bad_news

	is_triggered_only = yes # PlusStartUp.001
	hide_from = yes

	trigger = {
		always = no # Not while in beta
		supported_checksum = no
	}

	option = {
		name = OK
	}
}

# 013: Ruler Designer setup
character_event = {
	id = maintPlus.013

	is_triggered_only = yes # PlusStartUp.001, 14 day delay
	hide_window = yes

	immediate = {
		any_player = {
			# Fix RD Immortal
			if = {
				limit = { trait = immortal }

				remove_trait = immortal
				add_trait = immortal
			}

			# Fix fired councilor opinions on game start due to new ruler
			any_courtier_or_vassal = {
				limit = {
					has_opinion_modifier = {
						name = opinion_recently_fired
						who = PREV
					}
				}

				remove_opinion = {
					name = opinion_recently_fired
					who = PREV
				}
			}

			# Remove RD Traits
			if = {
				limit = {
					trait = customize_ruler
					NOT = { has_character_flag = customizing_ruler }
				}

				remove_trait = customize_ruler
			}

			if = {
				limit = { trait = minority_culture }

				save_event_target_as = minority_culture
				remove_trait = minority_culture

				if = {
					limit = {
						top_liege = {
							NOT = {
								any_realm_province = {
									culture = event_target:minority_culture
									held_under_PREV = yes
								}
							}
						}
					}

					capital_scope = {
						culture = event_target:minority_culture

						any_neighbor_province = {
							if = {
								limit = { owned_by = event_target:minority_culture }

								random = {
									chance = 50
									culture = event_target:minority_culture
								}
							}
						}
					}
				}
			}
		}
	}
}

#######################################
#
# 100 - 199: Utility Events
#
#######################################
#
# INDEX
#
# 104: AI Spouse Finder
#
#######################################

# 104: AI Spouse Finder
character_event = {
	id = maintPlus.104

	is_triggered_only = yes
	hide_window = yes

	ai = yes
	only_capable = yes
	prisoner = no

	trigger = {
		can_marry = yes
		is_consort = no
		is_inaccessible_trigger = no
		is_ill = no
		is_pregnant = no
		is_lowborn = no
		mercenary = no
		NOT = { trait = infirm }

		# Must have at least one known parent
		OR = {
			father_even_if_dead = { always = yes }
			mother_even_if_dead = { always = yes }
		}

		trigger_if = {
			limit = { is_female = yes }

			practical_age < 40

			OR = {
				is_ruler = yes
				any_heir_title = { always = yes }
				any_pretender_title = { always = yes }

				AND = {
					is_councillor = yes
					liege = { ai = no }
				}
			}
		}

		trigger_if = {
			limit = { is_ruler = yes }

			NOT = { government = order_government }

			primary_title = {
				is_primary_type_title = no
				temporary = no
			}

			trigger_if = {
				limit = { real_tier = BARON }

				OR = {
					is_feudal = yes
					is_tribal = yes
				}
			}
		}
		trigger_else = {
			OR = {
				any_close_relative = { higher_real_tier_than = COUNT }
				father_even_if_dead = { higher_real_tier_than = BARON }
				mother_even_if_dead = { higher_real_tier_than = BARON }

				trigger_if = {
					limit = {
						liege = { ai = no }
						is_councillor = yes
					}
				}
			}

			# Players don't want their family to marry out from under them
			liege = {
				trigger_if = {
					limit = { ai = no }

					NOR = {
						dynasty = ROOT
						is_close_relative = ROOT
					}
				}
			}
		}
	}

	weight_multiplier = {
		days = 1

		mult_modifier = {
			factor = 1.25
			age < 25
		}

		mult_modifier = {
			factor = 1.25
			NOT = {
				any_child = {
					is_heir = yes
				}
			}
		}

		mult_modifier = {
			factor = 3
			has_ambition = obj_get_married
		}
	}

	immediate = {
		random_list = {
			# Marry a random noble (mostly preferred)
			16 = {
				if = {
					limit = {
						OR = {
							higher_real_tier_than = DUKE
							father = { higher_real_tier_than = DUKE }
							mother = { higher_real_tier_than = DUKE }
						}
					}

					random_character = {
						limit = {
							# Can't be too far away
							OR = {
								same_realm = ROOT

								location = {
									ROOT = {
										location = {
											distance = {
												where = PREVPREV
												value < 200
											}
										}
									}
								}
							}

							# Can't be a nobody
							OR = {
								is_ruler = yes
								father_even_if_dead = { is_ruler = yes }
								mother_even_if_dead = { is_ruler = yes }
							}

							is_lowborn = no
							can_marry_ROOT_trigger = yes
							ai = yes

							NOR = {
								is_close_relative = ROOT
								trait = celibate
								trait = eunuch
								trait = infirm
								any_heir_title = { always = yes }
								any_pretender_title = { always = yes }

								any_liege = {
									OR = {
										is_close_relative = PREV
										is_lover = PREV
									}
								}
							}
						}

						# Already has good rank
						preferred_limit = {
							higher_real_tier_than = COUNT
							culture_group = ROOT
						}

						preferred_limit = {
							higher_real_tier_than = COUNT
						}

						# Has a claim I want
						preferred_limit = {
							culture_group = ROOT

							any_claim = {
								NOT = { claimed_by = ROOT }

								OR = {
									holder_scope = { is_liege_or_above_of = ROOT }

									capital_scope = {
										ROOT = {
											capital_scope = {
												distance = {
													where = PREVPREV
													value < 100
												}
											}
										}
									}

									trigger_if = {
										limit = {
											holder_scope = { same_realm = ROOT }
										}
										NOT = { lower_tier_than = ROOT }
									}
								}
							}
						}

						preferred_limit = {
							any_claim = {
								NOT = { claimed_by = ROOT }

								OR = {
									holder_scope = { is_liege_or_above_of = ROOT }

									capital_scope = {
										ROOT = {
											capital_scope = {
												distance = {
													where = PREVPREV
													value < 100
												}
											}
										}
									}

									trigger_if = {
										limit = {
											holder_scope = { same_realm = ROOT }
										}
										NOT = { lower_tier_than = ROOT }
									}
								}
							}
						}

						# Good Stats
						preferred_limit = {
							culture_group = ROOT

							OR = {
								diplomacy >= 12
								martial >= 12
								stewardship >= 12
								intrigue >= 12
								learning >= 12
							}
						}

						preferred_limit = {
							OR = {
								diplomacy >= 12
								martial >= 12
								stewardship >= 12
								intrigue >= 12
								learning >= 12
							}
						}

						# Ok Stats
						preferred_limit = {
							culture_group = ROOT

							OR = {
								diplomacy >= 8
								martial >= 8
								stewardship >= 8
								intrigue >= 8
								learning >= 8
								is_smart_trigger = yes
								is_strong_trigger = yes
							}
						}

						preferred_limit = {
							OR = {
								diplomacy >= 8
								martial >= 8
								stewardship >= 8
								intrigue >= 8
								learning >= 8
								is_smart_trigger = yes
								is_strong_trigger = yes
							}
						}

						# Attractive
						preferred_limit = {
							culture_group = ROOT
							is_attractive_trigger = yes
						}

						preferred_limit = {
							is_attractive_trigger = yes
						}

						# Prefer same culture over just anyone
						preferred_limit = {
							culture_group = ROOT
						}

						save_event_target_as = AI_suitor
					}
				}
				else_if = {
					limit = {
						OR = {
							higher_real_tier_than = BARON
							father = { higher_real_tier_than = BARON }
							mother = { higher_real_tier_than = BARON }
						}
					}

					random_character = {
						limit = {
							is_lowborn = no
							can_marry_ROOT_trigger = yes
							ai = yes

							# Can't be too far away
							OR = {
								same_realm = ROOT

								location = {
									ROOT = {
										location = {
											distance = {
												where = PREVPREV
												value < 200
											}
										}
									}
								}
							}

							# Can't be a nobody
							OR = {
								is_ruler = yes
								father_even_if_dead = { is_ruler = yes }
								mother_even_if_dead = { is_ruler = yes }
							}

							NOR = {
								is_close_relative = ROOT
								trait = celibate
								trait = eunuch
								trait = infirm
								any_heir_title = { always = yes }
								any_pretender_title = { always = yes }

								any_liege = {
									OR = {
										is_close_relative = PREV
										is_lover = PREV
									}
								}
							}
						}
						# Has a claim I want
						preferred_limit = {
							culture_group = ROOT

							any_claim = {
								NOT = { claimed_by = ROOT }

								OR = {
									holder_scope = { is_liege_or_above_of = ROOT }

									capital_scope = {
										ROOT = {
											capital_scope = {
												distance = {
													where = PREVPREV
													value < 100
												}
											}
										}
									}

									trigger_if = {
										limit = {
											holder_scope = { same_realm = ROOT }
										}
										NOT = { lower_tier_than = ROOT }
									}
								}
							}
						}

						preferred_limit = {
							any_claim = {
								NOT = { claimed_by = ROOT }

								OR = {
									holder_scope = { is_liege_or_above_of = ROOT }

									capital_scope = {
										ROOT = {
											capital_scope = {
												distance = {
													where = PREVPREV
													value < 100
												}
											}
										}
									}

									trigger_if = {
										limit = {
											holder_scope = { same_realm = ROOT }
										}
										NOT = { lower_tier_than = ROOT }
									}
								}
							}
						}

						# Good stats
						preferred_limit = {
							culture_group = ROOT

							OR = {
								diplomacy >= 12
								martial >= 12
								stewardship >= 12
								intrigue >= 12
								learning >= 12
							}
						}

						preferred_limit = {
							OR = {
								diplomacy >= 12
								martial >= 12
								stewardship >= 12
								intrigue >= 12
								learning >= 12
							}
						}

						# Ok stats
						preferred_limit = {
							culture_group = ROOT

							OR = {
								diplomacy >= 8
								martial >= 8
								stewardship >= 8
								intrigue >= 8
								learning >= 8
								is_smart_trigger = yes
								is_strong_trigger = yes
							}
						}

						preferred_limit = {
							OR = {
								diplomacy >= 8
								martial >= 8
								stewardship >= 8
								intrigue >= 8
								learning >= 8
								is_smart_trigger = yes
								is_strong_trigger = yes
							}
						}

						# Attractive
						preferred_limit = {
							culture_group = ROOT
							is_attractive_trigger = yes
						}

						preferred_limit = {
							is_attractive_trigger = yes
						}

						# Prefer same culture over just anyone
						preferred_limit = {
							culture_group = ROOT
						}

						save_event_target_as = AI_suitor
					}
				}
				else = {
					random_character = {
						limit = {
							ai = yes
							is_lowborn = no
							can_marry_ROOT_trigger = yes
							is_incapable = no

							# Can't be too far away
							OR = {
								same_realm = ROOT

								location = {
									ROOT = {
										location = {
											distance = {
												where = PREVPREV
												value < 200
											}
										}
									}
								}
							}

							# Keep everyone in their place
							trigger_if = {
								limit = { is_ruler = yes }
								real_tier = BARON
							}

							NOR = {
								trait = eunuch
								trait = celibate
								trait = infirm
								is_close_relative = ROOT
								liege = { ai = no }
								any_heir_title = { always = yes }
								any_pretender_title = { always = yes }

								any_liege = {
									OR = {
										is_close_relative = PREV
										is_lover = PREV
									}
								}
							}
						}

						# Has a claim I want
						preferred_limit = {
							culture_group = ROOT

							any_claim = {
								NOT = { claimed_by = ROOT }

								OR = {
									holder_scope = {
										OR = {
											is_liege_or_above_of = ROOT
											same_realm = ROOT
										}
									}

									capital_scope = {
										ROOT = {
											capital_scope = {
												distance = {
													where = PREVPREV
													value < 100
												}
											}
										}
									}
								}
							}
						}

						preferred_limit = {
							any_claim = {
								NOT = { claimed_by = ROOT }

								OR = {
									holder_scope = {
										OR = {
											is_liege_or_above_of = ROOT
											same_realm = ROOT
										}
									}

									capital_scope = {
										ROOT = {
											capital_scope = {
												distance = {
													where = PREVPREV
													value < 100
												}
											}
										}
									}
								}
							}
						}

						# Good stats
						preferred_limit = {
							culture_group = ROOT

							OR = {
								diplomacy >= 12
								martial >= 12
								stewardship >= 12
								intrigue >= 12
								learning >= 12
							}
						}

						preferred_limit = {
							OR = {
								diplomacy >= 12
								martial >= 12
								stewardship >= 12
								intrigue >= 12
								learning >= 12
							}
						}

						# Ok stats
						preferred_limit = {
							culture_group = ROOT

							OR = {
								diplomacy >= 8
								martial >= 8
								stewardship >= 8
								intrigue >= 8
								learning >= 8
								is_smart_trigger = yes
								is_strong_trigger = yes
							}
						}

						preferred_limit = {
							OR = {
								diplomacy >= 8
								martial >= 8
								stewardship >= 8
								intrigue >= 8
								learning >= 8
								is_smart_trigger = yes
								is_strong_trigger = yes
							}
						}

						# Attractive
						preferred_limit = {
							culture_group = ROOT
							is_attractive_trigger = yes
						}

						preferred_limit = {
							is_attractive_trigger = yes
						}

						# Prefer same culture over just anyone
						preferred_limit = {
							culture_group = ROOT
						}

						save_event_target_as = AI_suitor
					}
				}
			}

			# Marry a cousin
			14 = {
				trigger = {
					is_cousin_marriage_religion_trigger = yes

					OR = {
						father_even_if_dead = {
							any_close_relative = {
								ai = yes
								is_cousin_of = ROOT
								can_marry_ROOT_trigger = yes
							}
						}

						mother_even_if_dead = {
							any_close_relative = {
								ai = yes
								is_cousin_of = ROOT
								can_marry_ROOT_trigger = yes
							}
						}
					}
				}

				mult_modifier = {
					factor = 0.5

					NOT = {
						any_character = {
							is_cousin_of = ROOT
							ai = yes

							OR = {
								real_tier = ROOT
								higher_real_tier_than = ROOT
							}
						}
					}
				}

				random_character = {
					limit = {
						is_cousin_of = ROOT
						can_marry_ROOT_trigger = yes
						ai = yes
					}

					# Prefer father's side
					preferred_limit = {
						any_close_relative = {
							is_aunt_uncle_of = PREV # Redundant for safety's sake
							is_parent_of = ROOT
							is_female = no
						}
					}

					save_event_target_as = AI_suitor
				}
			}

			# Marry an Aunt/Uncle
			14 = {
				trigger = {
					is_psc_marriage_religion_trigger = yes

					any_close_relative = {
						ai = yes
						is_aunt_uncle_of = ROOT
						can_marry_ROOT_trigger = yes
					}
				}

				mult_modifier = { # Avoid marrying aunts and nephews
					factor = 0.01
					religion_group = jewish_group
					is_female = yes
				}

				random_close_relative = {
					limit = {
						ai = yes
						is_aunt_uncle_of = ROOT
						can_marry_ROOT_trigger = yes
					}

					save_event_target_as = AI_suitor
				}
			}

			# Marry a Niece/Nephew
			14 = {
				trigger = {
					is_psc_marriage_religion_trigger = yes

					any_close_relative = {
						is_nibling_of = ROOT
						ai = yes
						can_marry_ROOT_trigger = yes
					}
				}

				mult_modifier = { # Avoid marrying aunts and nephews
					factor = 0.01
					religion_group = jewish_group
					is_female = no
				}

				random_close_relative = {
					limit = {
						is_nibling_of = ROOT
						ai = yes
						can_marry_ROOT_trigger = yes
					}

					preferred_limit = {
						father_even_if_dead = { sibling = ROOT }
					}

					save_event_target_as = AI_suitor
				}
			}

			# Marry a sibling
			14 = {
				trigger = {
					is_bs_marriage_religion_trigger = yes

					any_sibling = {
						ai = yes
						can_marry_ROOT_trigger = yes
					}

					trigger_if = {
						limit = { religion_openly_egyptian_or_reformed_trigger = yes }
						higher_real_tier_than = DUKE
					}
				}

				mult_modifier = {
					factor = 0.5

					NOT = {
						any_sibling = {
							OR = {
								real_tier = ROOT
								higher_real_tier_than = ROOT
							}
						}
					}
				}

				random_sibling = {
					limit = {
						ai = yes
						can_marry_ROOT_trigger = yes
					}

					save_event_target_as = AI_suitor
				}
			}

			# Marry a parent
			14 = {
				trigger = {
					is_pc_marriage_religion_trigger = yes

					any_close_relative = {
						is_parent_of = ROOT
						ai = yes
						can_marry_ROOT_trigger = yes
					}

					trigger_if = {
						limit = { religion_openly_egyptian_or_reformed_trigger = yes }
						higher_real_tier_than = DUKE
					}
				}

				mult_modifier = {
					factor = 0.5

					NOT = {
						any_close_relative = {
							is_parent_of = ROOT

							OR = {
								real_tier = ROOT
								higher_real_tier_than = ROOT
							}
						}
					}
				}

				random_close_relative = {
					limit = {
						is_parent_of = ROOT
						ai = yes
						can_marry_ROOT_trigger = yes
					}

					save_event_target_as = AI_suitor
				}
			}

			# Marry one of your own children
			14 = {
				trigger = {
					is_pc_marriage_religion_trigger = yes

					any_child = {
						ai = yes
						can_marry_ROOT_trigger = yes
					}

					trigger_if = {
						limit = { religion_openly_egyptian_or_reformed_trigger = yes }
						higher_real_tier_than = DUKE
					}
				}

				mult_modifier = {
					factor = 0.5

					NOT = {
						any_child = {
							OR = {
								higher_real_tier_than = ROOT
								real_tier = ROOT
							}
						}
					}
				}

				random_child = {
					limit = {
						ai = yes
						can_marry_ROOT_trigger = yes
					}

					save_event_target_as = AI_suitor
				}
			}
		}

		event_target:AI_suitor = {
			marry_to_ROOT_effect = yes
			log = "[This.GetTitledName] has married [Root.GetTitledName] (AI Spouse Finder)"
		}

		clear_event_target = AI_suitor
	}
}

# Clean up Christian ascetics upon becoming rulers again
character_event = {
	id = PlusMaintenance.105

	is_triggered_only = yes # on_new_holder(_inheritance/usurpation)
	hide_window = yes

	trigger = {
		OR = {
			trait = monk
			trait = nun
			trait = perfecti
			trait = desert_father
			trait = desert_mother
		}
	}

	immediate = {
		remove_trait = perfecti

		if = {
			limit = { is_female = no }

			clr_character_flag = title_monk
			remove_special_character_title = MONK_BROTHER
			remove_trait = monk

			clr_character_flag = title_desert_father
			remove_special_character_title = DESERT_FATHER_TITLE
			remove_trait = desert_father
		}
		else = {
			clr_character_flag = title_nun
			remove_special_character_title = NUN_SISTER
			remove_trait = nun

			clr_character_flag = title_desert_mother
			remove_special_character_title = DESERT_MOTHER_TITLE
			remove_trait = desert_mother
		}
	}
}