﻿namespace = regula_paelex_event

# 0001 - 0999: Maintenance events.
# 1000 - 1999: Paelex initiation events.
# 2000 - 2999: Domina initiation events.

######################################################
# 0001-0100: - Law Maintenance Events

######################################################

# 0001. Magister succession law maintenance.
regula_paelex_event.0001 = {
	hidden = yes
	type = character_event

	trigger = {
		# Only run this for the Magister
		is_regula_trigger = yes
		is_magister =  yes
	}

	immediate = {
		# If we are Magister, enact the Magister gender law
		if = {
			limit = { NOT = { has_realm_law = regula_magister_gender_law } }
			add_realm_law_skip_effects = regula_magister_gender_law
		}
	}
}

# 0002. Vassal succession law maintenance.
regula_paelex_event.0002 = {
	hidden = yes
	type = character_event

	trigger = {
		# Only run this for non-Magister
		is_regula_trigger = yes
		is_magister =  no
		is_landed = yes
	}

	immediate = {
		if = {
			limit = {
				NOT = { has_realm_law = regula_vassal_succession_law }
			}
			# Make sure our titles dont have laws that interfere
			every_held_title = {
				limit = {
					OR = {
						has_title_law = male_only_law
						has_title_law = male_preference_law
						has_title_law = equal_law
					}
				}
				clear_title_laws = yes
			}

			# Add the vassal succession law
			add_realm_law_skip_effects = regula_vassal_succession_law
		}
	}
}

# 0003. Vassal succession law maintenance.
# For Admin Governments to set appointment law for governorships
regula_paelex_event.0003 = {
	hidden = yes
	type = character_event

	trigger = {
		# Only run this for characters in RM religion who are not the Magister
		is_magister =  no
		is_regula_trigger = yes

		# For Admin governments, where Magister is the Emperor
		government_has_flag = government_is_administrative
		is_independent_ruler = no
		top_liege = {
			is_magister = yes
		}
	}

	immediate = {
		# Make sure we have the right appointment succession law
		if = {
			limit = {
				top_liege = {
					has_realm_law = magister_paelex_default_succession_law
				}
				NOT = { has_realm_law = paelex_default_succession_law }
			}
			# Add the appropriate succession law
			add_realm_law_skip_effects = paelex_default_succession_law
		}
		else_if = {
			limit = {
				top_liege = {
					has_realm_law = magister_paelex_regula_succession_law
				}
				NOT = { has_realm_law = paelex_regula_succession_law }
			}
			# Add the appropriate succession law
			add_realm_law_skip_effects = paelex_regula_succession_law
		}
		else_if = {
			limit = {
				top_liege = {
					has_realm_law = magister_paelex_young_blood_succession_law
				}
				NOT = { has_realm_law = paelex_young_blood_succession_law }
			}
			# Add the appropriate succession law
			add_realm_law_skip_effects = paelex_young_blood_succession_law
		}
		else_if = {
			limit = {
				top_liege = {
					has_realm_law = magister_paelex_good_breeding_succession_law
				}
				NOT = { has_realm_law = paelex_good_breeding_succession_law }
			}
			# Add the appropriate succession law
			add_realm_law_skip_effects = paelex_good_breeding_succession_law
		}
		else_if = {
			limit = {
				top_liege = {
					has_realm_law = magister_paelex_talented_succession_law
				}
				NOT = { has_realm_law = paelex_talented_succession_law }
			}
			# Add the appropriate succession law
			add_realm_law_skip_effects = paelex_talented_succession_law
		}
	}
}

# Paelex MAA maintenance event.
# If we have the game rule set to only Famuli MAA, AI characters will convert all regional MAA to Famuli variants
regula_paelex_event.0995 = {
	hidden = yes
	type = character_event

	trigger = {
		has_trait = devoted_trait_group
		regula_maa_allowed_trigger = yes
	}

	immediate = {
		if = {
			limit = {
				has_game_rule = regula_famuli_maa_usage_only_famuli
				regula_has_regional_maa_that_could_be_famuli = yes
			}
			liege = {
				send_interface_message = {
					type = regula_famuli_maa_changed
					title = regula_famuli_maa_recruited_title
					right_icon = root
					left_icon = this

					root = {
						convert_all_maa_into_famuli_maa = yes
					}
				}
			}
		}
	}
}

# Keeps the domina/paelex traits up to date.
# Done via the Magisters "perspective" (as Domina can be unlanded)
regula_paelex_event.0996 = {
	hidden = yes
	type = character_event

	trigger = {
		has_trait = magister_trait_group
	}

	immediate = {

		# Do we need to add/change Domina?
		if = {
			limit = {
				primary_spouse = {
					has_trait = devoted_trait_group
					NOT = { has_trait = domina }
				}				
			}
			primary_spouse = {
				remove_trait = paelex
				remove_trait = familia_paelex
				remove_trait = tropaeum
				remove_trait = mulsa
				add_trait = domina

				save_scope_as = new_domina
			}

			send_interface_message = {
				type = regula_domina_created
				title = regula_message_domina_assigned.title
				custom_tooltip = regula_message_domina_assigned.desc
				right_icon = scope:new_domina
			}

			every_spouse = {
				if = {
					limit = {
						has_trait = domina
						NOT = { this = primary_spouse.primary_spouse }
					}
					remove_trait = domina
					if = {
						limit = {
							dynasty = root.dynasty
						}
						add_trait = familia_paelex
					} else = {
						add_trait = paelex
					}
					save_scope_as = old_domina
				}
			}
		}
	}
}

# Fixes Head of Faith issues
regula_paelex_event.0997 = {
	hidden = yes
	type = character_event

	trigger = {
		root = faith.religious_head
		is_male = no
		has_realm_law = regula_magister_gender_law
		root.faith = {
			is_regula_faith_trigger = yes
		}
	}

	immediate = {
		add_realm_law_skip_effects = regula_vassal_succession_law
	}
}

######################################################
# 1000-1010: - Initiation events
# 1010-1019: - Mind boosts
# 1020-1029: - Body boosts
# 1030-1039: - Sex boosts
# 1040-1049: - Misc Events
######################################################

### Make landed vassal a Paelex.  From Arglwydd
### I position [From.GetFirstName] like a dog and enter her firmly while whispering the Words of Taking. With each thrust my will is pumped into her body, dominating every corner of her mind. [From.GetFirstName] begins moaning "Yes, Mwyaf" with each thrust, each orgasm, each submission. I speak the last Word and release into her. [From.GetFirstName]'s body spasms in ecstasy so great she can only whimper. She is mine.

### Domination war end. Last discussion.
regula_paelex_event.1009 = {
	type = character_event
	title = regula_paelex_event.1009.t

	theme = regula_theme
	override_background = {
		reference = regula_house_arrest  # Background: https://www.artstation.com/julesmartinvos
	}

	desc = {
		first_valid = {
			triggered_desc = {
				trigger = {
					scope:defender = {
						has_trait = devoted_trait_group
					}
				}
				desc = regula_paelex_event.1009.devoted_intro
			}
			desc = regula_paelex_event.1009.regular_intro
		}
		first_valid = {
			triggered_desc = {
				trigger = {
					scope:defender = {
						tier_difference = {
							target = scope:attacker
							value = -1
						}
					}
				}
				desc = regula_paelex_event.1009.1
			}
			triggered_desc = {
				trigger = {
					scope:defender = {
						tier_difference = {
							target = scope:attacker
							value = -2
						}
					}
				}
				desc = regula_paelex_event.1009.2
			}
			triggered_desc = {
				trigger = {
					scope:defender = {
						tier_difference = {
							target = scope:attacker
							value = -3
						}
					}
				}
				desc = regula_paelex_event.1009.3
			}
			triggered_desc = {
				trigger = {
					scope:defender = {
						tier_difference = {
							target = scope:attacker
							value = -4
						}
					}
				}
				desc = regula_paelex_event.1009.4
			}
			desc = regula_paelex_event.1009.fallback
		}
	}


	right_portrait = {
		character = scope:defender
		outfit_tags = { no_cloak no_hat no_pants no_clothes }
    	triggered_animation = {
			trigger = {
				has_trait = devoted_trait_group
			}
			animation = personality_greedy
		}
		triggered_animation = {
			trigger = {
				NOT = { has_trait = devoted_trait_group }
			}
			animation = disapproval
		}
	}

	immediate = {
		scope:attacker = {
			save_scope_as = actor
		}
		scope:defender = {
			save_scope_as = recipient
			if = {
				limit = { has_trait = devoted_trait_group }
				add_character_flag = {
					flag = is_naked
					days = 180
				}
			}
		}

	}

	option = {
		name = regula_paelex_event.1009.a # Take her to the godless shrine.
		scope:defender = {
			if = {
				limit = {
					has_trait = mulsa
				}
				remove_trait = mulsa
			}
			demand_conversion_interaction_effect = yes
			every_relation = {
				type = lover
				limit = {
					NOT = {
						has_trait = magister_trait_group
					}
				}
				lover_breakup_effect = {
					BREAKER = scope:defender
					LOVER = this
				}
			}
			set_sexuality = bisexual
			if = {
				limit = {
					scope:attacker.primary_spouse = scope:defender
				}
				add_trait_force_tooltip = domina
			}
			if = {
				limit = {
					NOT = { scope:attacker.primary_spouse = scope:defender }
				}
				add_trait_force_tooltip = paelex
			}
			### War-specific benefits.
			if = {
				limit = {
					tier_difference = {
						target = scope:attacker
						value = -1
					}
				}
				if = {
					limit = { NOT = { has_trait = diligent } }
					add_trait = diligent
				}
				random_list = {
					20 = {
						trigger = { NOT = { has_trait = military_engineer } }
						add_trait = military_engineer
					}
					20 = {
						trigger = { NOT = { has_trait = unyielding_defender } }
						add_trait = unyielding_defender
					}
					20 = {
						trigger = { NOT = { has_trait = holy_warrior } }
						add_trait = holy_warrior
					}
					20 = {
						trigger = { NOT = { has_trait = organizer } }
						add_trait = organizer
					}
					20 = {
						trigger = { NOT = { has_trait = aggressive_attacker } }
						add_trait = aggressive_attacker
					}
				}
			}
			if = {
				limit = {
					tier_difference = {
						target = scope:attacker
						value = -2
					}
				}
				if = {
					limit = { NOT = { has_trait = diligent } }
					add_trait = diligent
				}
			}
			if = {
				limit = {
					tier_difference = {
						target = scope:attacker
						value = -3
					}
				}
				if = {
					limit = { NOT = { has_trait = content } }
					add_trait = content
				}
				if = {
					limit = { NOT = { has_trait = fecund } }
					add_trait = fecund
				}
			}
			if = {
				limit = {
					tier_difference = {
						target = scope:attacker
						value = -4
					}
				}
				if = {
					limit = { NOT = { has_trait = dull } }
					add_trait = dull
				}
				if = {
					limit = { NOT = { has_trait = content } }
					add_trait = content
				}
				if = {
					limit = { NOT = { has_trait = fecund } }
					add_trait = fecund
				}
			}
		}
		regula_start_alternate_mutare_corpus_event = {
			MODE = domination_war
		}
	}
}

# Child of the Book Event Chain
# Add flag that next birth should give Child of the Book Trait
regula_paelex_event.1040 = {
	hidden = yes
	type = character_event

	immediate = {
		set_pregnancy_gender = female
		add_trait = regula_blessed_pregnancy
	}
}

regula_paelex_event.1041 = {
	hidden = yes
	type = character_event

	trigger = {
		has_trait = regula_blessed_pregnancy
	}

	immediate = {
		remove_trait = regula_blessed_pregnancy

		scope:child = {
			save_scope_as = domitans_child
		}
		global_var:magister_character = {
			trigger_event = {
				id = regula_paelex_event.1042
				years = 6
			}
		}

		scope:child = {
			# Do all of our twins as well
			if = {
				limit = {
					any_sibling = {
						is_twin_of = scope:child
						is_female = yes
					}
				}
				every_sibling = {
					limit = {
						is_twin_of = scope:child
						is_female = yes
					}
					save_scope_as = domitans_child
					global_var:magister_character = {
						trigger_event = {
							id = regula_paelex_event.1042
							years = 6
						}
					}
				}
			}
		}
	}
}

regula_paelex_event.1042 ={
	type = character_event
	title = regula_paelex_event.1042.t
	desc = regula_paelex_event.1042.desc
	theme = regula_theme
	override_background = {
		reference = study
	}

	right_portrait = {
		character = scope:domitans_child
    	animation = personality_zealous
	}

	trigger = {
		scope:domitans_child = {
			is_alive = yes
			is_female = yes # 'set_pregnancy_gender' from 'regula_paelex_event.1040' is reset on savefile loading. Therefore, sometimes male children are born even with the 'regula_domitans_pregnant' flag. This will prevent this event from triggering on male children
		}
	}

	immediate = {
		scope:domitans_child = {
			add_trait = regula_child_of_the_book
		}
	}

	option = {
		name = regula_paelex_event.1042.a
	}
}
