expd_preg_rootfrom_triggers_pregnancy_on_root_by_fromfrom = {
	
	# Clean up any leftover flags from an earlier triggered pregnancy
	hidden_tooltip = { character_event = { id = EXPDPregnancy.3999 } }
	
	# Set the character flag - this is an important gate on the eventual trigger-pregnancy event
	hidden_tooltip = {
		set_character_flag = expd_preg_triggered_pregnancy_in_progress
		FROMFROM = { save_event_target_as = expd_preg_triggered_pregnancy_father_temp    }
		FROM     = { save_event_target_as = expd_preg_triggered_pregnancy_triggerer_temp }
		ROOT = {
			save_persistent_event_target = { name = expd_preg_triggered_pregnancy_father    scope = event_target:expd_preg_triggered_pregnancy_father_temp    }
			save_persistent_event_target = { name = expd_preg_triggered_pregnancy_triggerer scope = event_target:expd_preg_triggered_pregnancy_triggerer_temp }
		}
		clear_event_target = expd_preg_triggered_pregnancy_father_temp
		clear_event_target = expd_preg_triggered_pregnancy_triggerer_temp
	}
	
	hidden_tooltip = {
		# Calculate the "score" for this couple's fertility (higher is better, ie. pregnancy will occur sooner)
		# score = womans_fertility * mans_fertility * iif(they_are_lovers,2,1) * (0.8^min(5,number_of_mutual_living_children))
		export_to_variable = { # Initialise the score variable with the woman's fertility
			which = expd_preg_trigger_pregnancy_score
			value = fertility
		}
		persistent_event_target:expd_preg_triggered_pregnancy_father = { # Put the man's fertility in a temporary global variable
			export_to_variable = {
				which = global_expd_preg_trigger_pregnancy_mans_fertility
				value = fertility
			}
		}
		multiply_variable = { # Multiply the score by the man's fertility
			which = expd_preg_trigger_pregnancy_score
			which = global_expd_preg_trigger_pregnancy_mans_fertility
		}
		if = { # Apply the lovers' adjustment
			limit = { is_lover = persistent_event_target:expd_preg_triggered_pregnancy_father }
			multiply_variable = {
				which = expd_preg_trigger_pregnancy_score
				value = 2
			}
		}
		# Decrease the score depending on the number of previous successful triggered pregnancies
		#  --- NB: Deliberately does NOT include pregnancies that occurred independently of this mod (eg. lovers, normal random pregnancies)
		if = {
			limit = { check_variable = { which = expd_preg_triggered_pregnancy_occurrences value == 0 } }
			set_variable = { which = expd_preg_triggered_pregnancy_occurrences value = 0 }
		}
		set_variable = { which = expd_preg_trigger_pregnancy_loop_counter value = 0 }
		while = {
			limit = { check_variable = { which = expd_preg_trigger_pregnancy_loop_counter which < expd_preg_triggered_pregnancy_occurrences } }
			multiply_variable = { which = expd_preg_trigger_pregnancy_score value = 0.8 }
			change_variable = { which = expd_preg_trigger_pregnancy_loop_counter value = 1 }
		}
		set_variable = { which = expd_preg_trigger_pregnancy_loop_counter value = 0 }
		
	}
	
	# NB: The visible descriptions (below) must use FROMFROM (not the persistent_event_target), so that they are displayed properly to the user.
	if = {
		limit = {
			has_global_flag = expd_preg_debug_mode
			has_global_flag = expd_preg_debug_mode_instant
		}
		if = {
			limit = { FROMFROM = { any_spouse  = { character = ROOT } } }
			custom_tooltip = { text = EXPD_PREG_TOOLTIP_TRIGGER_PREGNANCY_INSTANTLY_HUSBAND }
		}
		else_if = {
			limit = { FROMFROM = { any_consort = { character = ROOT } } }
			custom_tooltip = { text = EXPD_PREG_TOOLTIP_TRIGGER_PREGNANCY_INSTANTLY_CONSORT }
		}
		else_if = {
			limit = { FROMFROM = { any_lover   = { character = ROOT } } }
			custom_tooltip = { text = EXPD_PREG_TOOLTIP_TRIGGER_PREGNANCY_INSTANTLY_LOVER }
		}
		else = {
			custom_tooltip = { text = EXPD_PREG_TOOLTIP_TRIGGER_PREGNANCY_INSTANTLY_FALLBACK }
		}
		hidden_tooltip = {
			character_event = { id = EXPDPregnancy.3000 }
		}
	}
	else = {
		if = {
			limit = { FROMFROM = { any_spouse  = { character = ROOT } } }
			custom_tooltip = { text = EXPD_PREG_TOOLTIP_TRIGGER_PREGNANCY_DEPENDING_ON_JOINT_FERTILITY_HUSBAND }
		}
		else_if = {
			limit = { FROMFROM = { any_consort = { character = ROOT } } }
			custom_tooltip = { text = EXPD_PREG_TOOLTIP_TRIGGER_PREGNANCY_DEPENDING_ON_JOINT_FERTILITY_CONSORT }
		}
		else_if = {
			limit = { FROMFROM = { any_lover   = { character = ROOT } } }
			custom_tooltip = { text = EXPD_PREG_TOOLTIP_TRIGGER_PREGNANCY_DEPENDING_ON_JOINT_FERTILITY_LOVER }
		}
		else = {
			custom_tooltip = { text = EXPD_PREG_TOOLTIP_TRIGGER_PREGNANCY_DEPENDING_ON_JOINT_FERTILITY_FALLBACK }
		}
		hidden_tooltip = {
			# Auto-generated code
			#  --- days = 180/score
			#  --- random = 180/score
			# NB: Default fertility for a character is 50%, so an average couple will have a score of 0.25, ie. 1080 +/- 360 days
			if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 2 } }
				character_event = { id = EXPDPregnancy.3000 days = 90 random = 90 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 1.8 } }
				character_event = { id = EXPDPregnancy.3000 days = 100 random = 100 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 1.6 } }
				character_event = { id = EXPDPregnancy.3000 days = 113 random = 113 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 1.4 } }
				character_event = { id = EXPDPregnancy.3000 days = 129 random = 129 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 1.2 } }
				character_event = { id = EXPDPregnancy.3000 days = 150 random = 150 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 1 } }
				character_event = { id = EXPDPregnancy.3000 days = 180 random = 180 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.9 } }
				character_event = { id = EXPDPregnancy.3000 days = 200 random = 200 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.8 } }
				character_event = { id = EXPDPregnancy.3000 days = 225 random = 225 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.7 } }
				character_event = { id = EXPDPregnancy.3000 days = 257 random = 257 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.6 } }
				character_event = { id = EXPDPregnancy.3000 days = 300 random = 300 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.5 } }
				character_event = { id = EXPDPregnancy.3000 days = 360 random = 360 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.45 } }
				character_event = { id = EXPDPregnancy.3000 days = 400 random = 400 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.4 } }
				character_event = { id = EXPDPregnancy.3000 days = 450 random = 450 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.35 } }
				character_event = { id = EXPDPregnancy.3000 days = 514 random = 514 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.3 } }
				character_event = { id = EXPDPregnancy.3000 days = 600 random = 600 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.25 } }
				character_event = { id = EXPDPregnancy.3000 days = 720 random = 720 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.2 } }
				character_event = { id = EXPDPregnancy.3000 days = 900 random = 900 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.15 } }
				character_event = { id = EXPDPregnancy.3000 days = 1200 random = 1200 }
			}
			else_if = {
				limit = { check_variable = { which = expd_preg_trigger_pregnancy_score value >= 0.1 } }
				character_event = { id = EXPDPregnancy.3000 days = 1800 random = 1800 }
			}
			else = {
				character_event = { id = EXPDPregnancy.3000 days = 3600 random = 3600 }
			}
		}
	}
	
	# Cleanup
	hidden_tooltip = {
		if = {
			limit = { has_global_flag = expd_preg_debug_mode }
			# If in debug mode, add some more info to the character, in the form of additional variables
			# Derive the "days" and "random" values from above
			set_variable = {
				which = expd_preg_trigger_pregnancy_avg_days_approx
				value = 180
			}
			divide_variable = {
				which = expd_preg_trigger_pregnancy_avg_days_approx
				which = expd_preg_trigger_pregnancy_score
			}
			set_variable = {
				which = expd_preg_trigger_pregnancy_plusminus_days_approx
				value = 180
			}
			divide_variable = {
				which = expd_preg_trigger_pregnancy_plusminus_days_approx
				which = expd_preg_trigger_pregnancy_score
			}
			# Transform "days" and "random" into "avg days +/- range"
			divide_variable = {
				which = expd_preg_trigger_pregnancy_plusminus_days_approx
				value = 2
			}
			change_variable = {
				which = expd_preg_trigger_pregnancy_avg_days_approx
				which = expd_preg_trigger_pregnancy_plusminus_days_approx
			}
		}
		else = {
			# If not in debug mode, ensure all character variables are wiped
			set_variable = {
				which = expd_preg_trigger_pregnancy_score
				value = 0
			}
			set_variable = {
				which = expd_preg_trigger_pregnancy_avg_days_approx
				value = 0
			}
			set_variable = {
				which = expd_preg_trigger_pregnancy_plusminus_days_approx
				value = 0
			}
			set_variable = {
				which = expd_preg_trigger_pregnancy_child_count
				value = 0
			}
		}
		# Always wipe the global variable
		set_variable = {
			which = global_expd_preg_trigger_pregnancy_mans_fertility
			value = 0
		}
	}
}