﻿# Triggers an alternate mode mutare corpus event.
#
# Required Scopes:
# scope:actor = the magister performing mutare corpus
# scope:recipient = the recipient mutare coprus is being performed upon
#
# Optional Scopes:
# scope:third_mutare_attendee = a third character participating in the event
# scope:fourth_mutare_attendee = a fourth character participating in the event
# scope:fifth_mutare_attendee = a fifth character participating in the event
#
# Effect Parameters:
# MODE = the alternate mode for which mutare corpus is being run. Valid values:
#		- paelex_smooth
#		- paelex_shatter
#		- paelex_monument
#		- domination_war
#		- domina
#		- filia_domini
#		- neptis_domini
#		- proneptis_domini
regula_start_alternate_mutare_corpus_event = {
	save_scope_value_as = {
		name = regula_mutare_corpus_mode
		value = flag:$MODE$
	}
	trigger_event = regula_mutare_corpus_event.0001
}

# Initialization effects for the mutare corpus interaction events.
regula_mutare_corpus_start_effect = {
	hidden_effect = {
		scope:recipient = {
			add_character_flag = is_naked
		}
	}
}

# Clean up effects for the mutare corpus interaction events.
regula_mutare_corpus_end_effect = {
	hidden_effect = {
		scope:recipient = {
			remove_character_flag = is_naked
		}
	}
}

# Effect which allows for a generically defined mutare corpus effect with
# default weights.
#
# Scopes (All Required):
# global_var:magister_character = The magister.
# scope:actor = The character doing the interaction - should be magister.
# scope:recipient = The character recieving the interaction.
#
# Parameters (All Required)
# BACKFIRE = The event to be fired on backfire
# BAD = The event to be fired on bad outcome
# GOOD = The event to be fired on good outcome
# GREAT = The event to be fired on great outcome
# FANTASTIC = The event to be fired on fantastic outcome
regula_mutare_corpus_generic_effect = {

	# Five possible outcomes:
	# Backfire, Bad, Good, Great, Fantastic
	# Use Piety level to modify chance of each effect
	random_list = {
		0 = { # Backfire
			modifier = {
				global_var:magister_character = {
					piety_level = 0
				}
				add = 30
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 1
				}
				add = 10
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 2
				}
				add = 5
			}

			custom_description_no_bullet = { text = regula_mutare_corpus_outcome_1 }
			trigger_event = $BACKFIRE$
		}
		0 = { # Bad
			modifier = {
				global_var:magister_character = {
					piety_level = 0
				}
				add = 50
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 1
				}
				add = 20
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 2
				}
				add = 10
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 3
				}
				add = 5
			}

			custom_description_no_bullet = { text = regula_mutare_corpus_outcome_2 }
			trigger_event = $BAD$
		}
		0 = { # Good
			modifier = {
				global_var:magister_character = {
					piety_level = 0
				}
				add = 20
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 1
				}
				add = 60
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 2
				}
				add = 50
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 3
				}
				add = 40
			}

			custom_description_no_bullet = { text = regula_mutare_corpus_outcome_3 }
			trigger_event = $GOOD$
		}
		0 = { # Great
			modifier = {
				global_var:magister_character = {
					piety_level = 1
				}
				add = 10
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 2
				}
				add = 30
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 3
				}
				add = 40
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 4
				}
				add = 60
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 5
				}
				add = 20
			}

			custom_description_no_bullet = { text = regula_mutare_corpus_outcome_4 }
			trigger_event = $GREAT$
		}
		0 = { # Fantastic
			modifier = {
				global_var:magister_character = {
					piety_level = 2
				}
				add = 5
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 3
				}
				add = 15
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 4
				}
				add = 40
			}
			modifier = {
				global_var:magister_character = {
					piety_level = 5
				}
				add = 80
			}

			custom_description_no_bullet = { text = regula_mutare_corpus_outcome_5 }
			trigger_event = $FANTASTIC$
		}
	}
}

# Event that allow us to configure the chance for each mutare event occuring
# Depending on our magisters piety level, we have a different chance for each effect
regula_mutare_corpus_mental_boost_effect = {
	regula_mutare_corpus_generic_effect = {
		BACKFIRE = regula_mutare_corpus_event.0011
		BAD = regula_mutare_corpus_event.0012
		GOOD = regula_mutare_corpus_event.0013
		GREAT = regula_mutare_corpus_event.0014
		FANTASTIC = regula_mutare_corpus_event.0015
	}
}

regula_mutare_corpus_physical_boost_effect = {
	regula_mutare_corpus_generic_effect = {
		BACKFIRE = regula_mutare_corpus_event.0021
		BAD = regula_mutare_corpus_event.0022
		GOOD = regula_mutare_corpus_event.0023
		GREAT = regula_mutare_corpus_event.0024
		FANTASTIC = regula_mutare_corpus_event.0025
	}
}

regula_mutare_corpus_sexual_boost_effect = {
	regula_mutare_corpus_generic_effect = {
		BACKFIRE = regula_mutare_corpus_event.0031
		BAD = regula_mutare_corpus_event.0032
		GOOD = regula_mutare_corpus_event.0033
		GREAT = regula_mutare_corpus_event.0034
		FANTASTIC = regula_mutare_corpus_event.0035
	}
}

regula_mutare_corpus_impregnate_effect = {
	add_piety_no_experience = regula_mutare_corpus_interaction_childbirth_cost_negative
	regula_mutare_corpus_generic_effect = {
		BACKFIRE = regula_mutare_corpus_event.0041
		BAD = regula_mutare_corpus_event.0042
		GOOD = regula_mutare_corpus_event.0043
		GREAT = regula_mutare_corpus_event.0044
		FANTASTIC = regula_mutare_corpus_event.0045
	}
}

# This is run during the mental/physical/sexual effects, so its run as an effect rather then an event
# Backfire		- Lose the baby :( + lots of stress for you and mother
# Bad			- Stress for mother
# Good			- Child of the Book
# Great			- Child of the Book + medium stress loss for mother
# Fantastic		- Child of the Book + major stress loss for mother
regula_mutare_corpus_empower_womb_effect_backfire = {
	if = {
		limit = {
			scope:recipient = { 
				is_pregnant = yes
				NOT = { has_trait = regula_blessed_pregnancy }
			}
		}
		scope:actor = {
			stress_impact = {
				base = major_stress_impact_gain
			}
		}
		scope:recipient = {
			# Lose the baby :(
			end_pregnancy = yes
			pregnancy_cleanup_effect = yes
			# Add stress
			stress_impact = {
				base = massive_stress_impact_gain
			}
		}
	}
}

regula_mutare_corpus_empower_womb_effect_bad = {
	if = {
		limit = {
			scope:recipient = { 
				is_pregnant = yes
				NOT = { has_trait = regula_blessed_pregnancy }
			}
		}
		scope:recipient = {
			# Add stress
			stress_impact = {
				base = medium_stress_impact_gain
			}
		}
	}
}

regula_mutare_corpus_empower_womb_effect_good = {
	if = {
		limit = {
			scope:recipient = { 
				is_pregnant = yes
				NOT = { has_trait = regula_blessed_pregnancy }
			}
		}
		scope:recipient = {
			set_pregnancy_gender = female
			add_trait = regula_blessed_pregnancy
		}
	}
}

regula_mutare_corpus_empower_womb_effect_great = {
	if = {
		limit = {
			scope:recipient = { 
				is_pregnant = yes
				NOT = { has_trait = regula_blessed_pregnancy }
			}
		}
		scope:recipient = {
			set_pregnancy_gender = female
			add_trait = regula_blessed_pregnancy
			stress_impact = {
				base = medium_stress_impact_loss
			}
		}
	}
}

regula_mutare_corpus_empower_womb_effect_fantastic = {
	if = {
		limit = {
			scope:recipient = { 
				is_pregnant = yes
				NOT = { has_trait = regula_blessed_pregnancy }
			}
		}
		scope:recipient = {
			set_pregnancy_gender = female
			add_trait = regula_blessed_pregnancy
			stress_impact = {
				base = major_stress_impact_loss
			}
		}
	}
}

regula_mutare_corpus_change_personality_effect = {
	regula_mutare_corpus_generic_effect = {
		BACKFIRE = regula_mutare_corpus_event.0061
		BAD = regula_mutare_corpus_event.0062
		GOOD = regula_mutare_corpus_event.0063
		GREAT = regula_mutare_corpus_event.0064
		FANTASTIC = regula_mutare_corpus_event.0065
	}
}

regula_mutare_corpus_genitalia_improvement_body_effect = {
	regula_mutare_corpus_generic_effect = {
		BACKFIRE = regula_mutare_corpus_event.0071
		BAD = regula_mutare_corpus_event.0072
		GOOD = regula_mutare_corpus_event.0073
		GREAT = regula_mutare_corpus_event.0074
		FANTASTIC = regula_mutare_corpus_event.0075
	}
}

regula_mutare_corpus_genitalia_improvement_breasts_effect = {
	regula_mutare_corpus_generic_effect = {
		BACKFIRE = regula_mutare_corpus_event.0076
		BAD = regula_mutare_corpus_event.0077
		GOOD = regula_mutare_corpus_event.0078
		GREAT = regula_mutare_corpus_event.0079
		FANTASTIC = regula_mutare_corpus_event.0080
	}
}

regula_mutare_corpus_genitalia_improvement_groin_effect = {
	regula_mutare_corpus_generic_effect = {
		BACKFIRE = regula_mutare_corpus_event.0081
		BAD = regula_mutare_corpus_event.0082
		GOOD = regula_mutare_corpus_event.0083
		GREAT = regula_mutare_corpus_event.0084
		FANTASTIC = regula_mutare_corpus_event.0085
	}
}

# Helper effects for Mutare Corpus

# regula_mutare_corpus_repair_mind_single 				- Repairs a single bad mental trait
# regula_mutare_corpus_repair_physical_single 				- Repairs a single bad physical trait
# regula_mutare_corpus_give_good_mental_trait 			- Gives a random good mental trait
# regula_rank_up_intelligence_trait 					- Increases mental trait by
# regula_mutare_corpus_give_good_physical_trait_effect	= Gives a random good physical trait
# regula_mutare_corpus_genitalia_rank_up_breasts_effect - Increase / Decrease breasts size - checks if game rule is enabled
# regula_mutare_corpus_genitalia_rank_up_penis_effect - Increase / Decrease penis size - checks if game rule is enabled
# increase_wounds_effect
# rank_up_education_effect
# carn_increase_beauty_one_step_effect
# carn_decrease_beauty_one_step_effect
# carn_increase_intellect_one_step_effect
# carn_decrease_intellect_one_step_effect
# carn_increase_physique_one_step_effect
# carn_decrease_physique_one_step_effect
# carn_remove_random_negative_congenital_trait_effect
# carn_remove_all_negative_congenital_traits_effect
# carn_heal_wounds_one_step_effect
# carn_remove_all_wounds_effect
# carn_remove_random_minor_disfigurement_effect
# carn_remove_all_minor_disfigurements_effect
# carn_remove_random_major_disfigurement_effect
# carn_remove_all_major_disfigurements_effect
# carn_recover_from_all_diseases_effect


# Mental Effects
regula_mutare_corpus_repair_mind_single_effect = {
	random_list = {
		1 = {
			trigger = { has_trait = depressed_1 }
			remove_trait = depressed_1
		}
		1 = {
			trigger = { has_trait = depressed_genetic }
			remove_trait = depressed_genetic
		}
		1 = {
			trigger = { has_trait = dull }
			remove_trait = dull
		}
		1 = {
			trigger = { has_trait = lunatic_1 }
			remove_trait = lunatic_1
		}
		1 = {
			trigger = { has_trait = lunatic_genetic }
			remove_trait = lunatic_genetic
		}
		1 = {
			trigger = { has_trait = possessed_1 }
			remove_trait = possessed_1
		}
		1 = {
			trigger = { has_trait = possessed_genetic }
			remove_trait = possessed_genetic
		}
		1 = {
			trigger = { has_trait = incapable }
			remove_trait = incapable
		}
		1 = {
			trigger = { has_trait = drunkard}
			remove_trait = drunkard
		}
		1 = {
			trigger = { has_trait =  hashishiyah }
			remove_trait = hashishiyah
		}
		1 = {
			trigger = { has_trait = reclusive }
			remove_trait = reclusive
		}
		1 = {
			trigger = { has_trait = irritable }
			remove_trait = irritable
		}
		1 = {
			trigger = { has_trait = flagellant }
			remove_trait = flagellant
		}
		1 = {
			trigger = { has_trait = profligate }
			remove_trait = profligate
		}
		1 = {
			trigger = { has_trait = contrite }
			remove_trait = contrite
		}
		1 = {
			trigger = { has_trait = inappetetic }
			remove_trait = inappetetic
		}
		1 = {
			trigger = { has_trait = rakish }
			remove_trait = rakish
		}
		1 = {
			trigger = { has_trait = disloyal }
			remove_trait = disloyal
		}
	}
}

regula_mutare_corpus_give_good_mental_trait_effect = {
	random_list = {
		1 = {
			trigger = { NOT = { has_trait = journaller } }
			add_trait = journaller
		}
		1 = {
			trigger = { NOT = { has_trait = confider } }
			add_trait = confider
		}
		1 = {
			trigger = { NOT = { has_trait = shrewd } }
			add_trait = shrewd
		}
		1 = {
			trigger = { NOT = { has_trait = loyal } }
			add_trait = loyal
		}
		1 = {
			trigger = { NOT = { has_trait = athletic } }
			add_trait = athletic # This is technically a "stress" trait, so adding it to this list
		}
		1 = {
			trigger = { NOT = { has_trait = lifestyle_physician } }
			add_trait = lifestyle_physician
		}
		1 = {
			trigger = {
				has_trait = lifestyle_physician
				has_trait_xp = {
					trait = lifestyle_physician
					value < 100
				}
			}
			add_trait_xp = {
				trait = lifestyle_physician
				value = 50
			}
		}
	}
}

regula_rank_up_intelligence_trait_effect = {
	if = { # Intellect Maxed -> Increase learning & stewardship instead.
		limit = { has_trait = intellect_good_3 }
		add_learning_skill = 1
		add_stewardship_skill = 1
	}
	else = {
		if = {
			limit = { has_trait = intellect_good }
			change_trait_rank = {
				trait = intellect_good
				rank = 1
			}
		}
		else_if = {
			limit = { has_trait = intellect_bad }
			change_trait_rank = {
				trait = intellect_bad
				rank = -1
			}
		}
		else = {
			add_trait = intellect_good_1
		}
	}
}

# Physical Effects
regula_mutare_corpus_repair_physical_single_effect = {
	random_list = {
		1 = {
			trigger = { has_trait = wounded }
			change_trait_rank = {
				trait = wounded
				rank = -1
			}
		}
		1 = {
			trigger = { has_trait = infirm }
			remove_trait = infirm
		}
		1 = {
			trigger = { has_trait = incapable }
			remove_trait = incapable
		}
		1 = {
			trigger = { has_trait = clubfooted }
			remove_trait = clubfooted
		}
		1 = {
			trigger = { has_trait = lisping }
			remove_trait = lisping
		}
		1 = {
			trigger = { has_trait = stuttering }
			remove_trait = stuttering
		}
		1 = {
			trigger = { has_trait = scarred }
			remove_trait = scarred
		}
		1 = {
			trigger = { has_trait = one_eyed }
			remove_trait = one_eyed
		}
		1 = {
			trigger = { has_trait = one_legged }
			remove_trait = one_legged
		}
		1 = {
			trigger = { has_trait = spindly }
			remove_trait = spindly
		}
		1 = {
			trigger = { has_trait = weak }
			remove_trait = weak
		}
		1 = {
			trigger = { has_trait = gout_ridden }
			remove_trait = gout_ridden
		}
		1 = {
			trigger = { has_trait = wheezing}
			remove_trait = wheezing
		}
		1 = {
			trigger = { has_trait = bleeder }
			remove_trait = bleeder
		}
		1 = {
			trigger = { has_trait = blind }
			remove_trait = blind
		}
		1 = {
			trigger = { has_trait = hunchbacked }
			remove_trait = hunchbacked
		}
		1 = {
			trigger = { has_trait = disfigured }
			remove_trait = disfigured
		}
		1 = {
			trigger = { has_trait = maimed}
			remove_trait = maimed
		}
		1 = {
			trigger = { has_trait = cancer }
			remove_trait = cancer
		}
	}
}

regula_mutare_corpus_give_good_physical_trait_effect = {
	random_list = {
		1 = {
			trigger = {
				has_trait = lifestyle_blademaster
				has_trait_xp = {
					trait = lifestyle_blademaster
					value < 100
				}
			}
			add_trait_xp = {
				trait = lifestyle_blademaster
				value = 50
			}
		}
		1 = {
			trigger = {
				has_trait = lifestyle_hunter
				has_trait_xp = {
					trait = lifestyle_hunter
					track = hunter
					value < 100
				}
			}
			add_trait_xp = {
				trait = lifestyle_hunter
				track = hunter
				value = 50
			}
		}
		1 = {
			trigger = {
				has_trait = lifestyle_hunter
				has_trait_xp = {
					trait = lifestyle_hunter
					track = falconer
					value < 100
				}
			}
			add_trait_xp = {
				trait = lifestyle_hunter
				track = falconer
				value = 50
			}
		}
		1 = {
			trigger = { NOT = { has_trait = lifestyle_blademaster } }
			add_trait = lifestyle_blademaster
		}
		1 = {
			trigger = { NOT = { has_trait = lifestyle_hunter } }
			add_trait = lifestyle_hunter
		}
		1 = {
			trigger = { NOT = { has_trait = strong } }
			add_trait = strong
		}
	}
}

regula_rank_up_physical_trait_effect = {
	if = { # Physique Maxed -> Increase martial & prowess instead.
		limit = { has_trait = physique_good_3 }
		add_prowess_skill = 1
		add_martial_skill = 1
	}
	else = {
		if = {
			limit = { has_trait = physique_good }
			change_trait_rank = {
				trait = physique_good
				rank = 1
			}
		}
		else_if = {
			limit = { has_trait = physique_bad }
			change_trait_rank = {
				trait = physique_bad
				rank = -1
			}
		}
		else = {
			add_trait = physique_good_1
		}
	}
}

# Sexual/Body Effects
regula_mutare_corpus_cure_disease_single_effect = {
	random_list = {
		1 = {
			trigger = { has_trait = infirm }
			remove_trait = infirm
		}
		1 = {
			trigger = { has_trait = scaly }
			remove_trait = scaly
		}
		1 = {
			trigger = { has_trait = impotent }
			remove_trait = impotent
		}
		1 = {
			trigger = { has_trait = infertile }
			remove_trait = infertile
		}
		1 = {
			trigger = { has_trait = gout_ridden }
			remove_trait = gout_ridden
		}
		1 = {
			trigger = { has_trait = consumption }
			remove_trait = consumption
		}
		1 = {
			trigger = { has_trait = typhus}
			remove_trait = typhus
		}
		1 = {
			trigger = { has_trait = bubonic_plague }
			remove_trait = bubonic_plague
		}
		1 = {
			trigger = { has_trait = smallpox }
			remove_trait = smallpox
		}
		1 = {
			trigger = { has_trait = ill }
			remove_trait = ill
		}
		1 = {
			trigger = { has_trait = pneumonic}
			remove_trait = pneumonic
		}
		1 = {
			trigger = { has_trait = great_pox}
			remove_trait = great_pox
		}
		1 = {
			trigger = { has_trait = early_great_pox}
			remove_trait = early_great_pox
		}
		1 = {
			trigger = { has_trait = lovers_pox}
			remove_trait = lovers_pox
		}
		1 = {
			trigger = { has_trait = leper}
			remove_trait = leper
		}
		1 = {
			trigger = { has_trait = cancer }
			remove_trait = cancer
		}
		1 = {
			trigger = { has_trait = measles }
			remove_trait = measles
		}
	}
}

regula_rank_up_beauty_trait_effect = {
	if = { # Beauty Maxed -> Increase diplomacy & intrigue instead.
		limit = { has_trait = beauty_good_3 }
		add_diplomacy_skill = 1
		add_intrigue_skill = 1
	}
	else = {
		if = {
			limit = { has_trait = beauty_good }
			change_trait_rank = {
				trait = beauty_good
				rank = 1
			}
		}
		else_if = {
			limit = { has_trait = beauty_bad }
			change_trait_rank = {
				trait = beauty_bad
				rank = -1
			}
		}
		else = {
			add_trait = beauty_good_1
		}
	}
}

regula_mutare_corpus_give_good_sexual_trait_effect = {
	random_list = {
		100 = {
			trigger = { NOT = { has_trait = lustful } }
			if = {
				limit = {has_trait = chaste }
				remove_trait = chaste
			}
			add_trait = lustful
		}
		50 = {
			trigger = { NOT = { has_trait = fecund } }
			add_trait = fecund
		}
		30 = {
			trigger = { NOT = { has_trait = deviant } }
			add_trait = deviant
		}
		10 = {
			trigger = { NOT = { has_trait = pure_blooded } }
			add_trait = pure_blooded
		}
	}
}

# Personality Effects

# Randomly removes a single sinful personality trait, if there is one
# Replace it with the opposite trait
regula_remove_sinful_personality_trait_single_effect = {
	random_list = {
		1 = {
			trigger = { has_trait = wrathful }
			remove_trait_force_tooltip = wrathful
			add_trait_force_tooltip = calm
		}
		1 = {
			trigger = { has_trait = chaste }
			remove_trait_force_tooltip = chaste
			add_trait_force_tooltip = lustful
		}
		1 = {
			trigger = { has_trait = lazy }
			remove_trait_force_tooltip = lazy
			add_trait_force_tooltip = diligent
		}
		1 = {
			trigger = { has_trait = vengeful }
			remove_trait_force_tooltip = vengeful
			add_trait_force_tooltip = forgiving
		}
		1 = {
			trigger = { has_trait = greedy }
			remove_trait_force_tooltip = greedy
			add_trait_force_tooltip = generous
		}
		1 = {
			trigger = { has_trait = deceitful }
			remove_trait_force_tooltip = deceitful
			add_trait_force_tooltip = honest
		}
		1 = {
			trigger = { has_trait = arrogant }
			remove_trait_force_tooltip = arrogant
			add_trait_force_tooltip = humble
		}
		1 = {
			trigger = { has_trait = arbitrary }
			remove_trait_force_tooltip = arbitrary
			add_trait_force_tooltip = just
		}
		1 = {
			trigger = { has_trait = impatient }
			remove_trait_force_tooltip = impatient
			add_trait_force_tooltip = patient
		}
		1 = {
			trigger = { has_trait = gluttonous }
			remove_trait_force_tooltip = gluttonous
			add_trait_force_tooltip = temperate
		}
		1 = {
			trigger = { has_trait = paranoid }
			remove_trait_force_tooltip = paranoid
			add_trait_force_tooltip = trusting
		}
		1 = {
			trigger = { has_trait = cynical }
			remove_trait_force_tooltip = cynical
			add_trait_force_tooltip = zealous
		}
		1 = {
			trigger = { has_trait = callous }
			remove_trait_force_tooltip = callous
			add_trait_force_tooltip = compassionate
		}
		1 = {
			trigger = { has_trait = sadistic }
			remove_trait_force_tooltip = sadistic
			add_trait_force_tooltip = compassionate
		}
	}
}

# Genitalia improvement : penis rank up
regula_mutare_corpus_genitalia_rank_up_penis_effect = {
	if = {
		limit = {
			exists = var:penis_size_genetic
		}
		regula_mutare_corpus_genitalia_rank_up_penis_effect_pa = yes
	}
	else = {
		regula_mutare_corpus_genitalia_rank_up_penis_effect_carn_traits = yes
	}
}

# Genitalia improvement : penis rank up via Carn traits
regula_mutare_corpus_genitalia_rank_up_penis_effect_carn_traits = {
	if = { # Both big & small dick preference, but no trait -> Randomly shift.
		limit = {
			has_game_rule = carn_dt_dick_small_good
			has_game_rule = carn_dt_dick_big_good
			carn_is_futa_trigger = yes
			NOR = {
				has_trait = dick_small_good
				has_trait = dick_big_good
			}
		}
		random_list = {
			50 = {
				add_trait = dick_small_good_1
			}
			50 = {
				add_trait = dick_big_good_1
			}
		}
	}
	else_if = { # Small dick preference enabled in game rules + trait but not max
		limit = {
			AND = {
				has_game_rule = carn_dt_dick_small_good
				carn_is_futa_trigger = yes
				NOT = { has_trait = dick_small_good_3 }
				has_trait = dick_small_good
			}
		}
		change_trait_rank = {
			trait = dick_small_good
			rank = 1
		}
	}
	else_if = { # Small dick preference enabled in game rules + bad trait
		limit = {
			AND = {
				has_game_rule = carn_dt_dick_small_good
				carn_is_futa_trigger = yes
				has_trait = dick_big_bad
			}
		}
		change_trait_rank = {
			trait = dick_big_bad
			rank = -1
		}
	}
	else_if = { # Small dick preference enabled in game rules + neutral
		limit = {
			AND = {
				has_game_rule = carn_dt_dick_small_good
				carn_is_futa_trigger = yes
				NOR = {
					has_game_rule = carn_dt_dick_big_good
					has_trait = dick_small_good
				}
			}
		}
		add_trait = dick_small_good_1
	}
	else_if = {  # Big dick preference enabled in game rules + trait but not max
		limit = {
			AND = {
				has_game_rule = carn_dt_dick_big_good
				carn_is_futa_trigger = yes
				NOT= { has_trait = dick_big_good_3 }
				has_trait = dick_big_good
			}
		}
		change_trait_rank = {
			trait = dick_big_good
			rank = 1
		}
	}
	else_if = { # Big dick preference enabled in game rules + bad trait
		limit = {
			AND = {
				has_game_rule = carn_dt_dick_big_good
				carn_is_futa_trigger = yes
				has_trait = dick_small_bad
			}
		}
		change_trait_rank = {
			trait = dick_small_bad
			rank = -1
		}
	}
	else_if = { # Big dick preference enabled in game rules + neutral
		limit = {
			AND = {
				has_game_rule = carn_dt_dick_big_good
				carn_is_futa_trigger = yes
				NOR = {
					has_game_rule = carn_dt_dick_small_good
					has_trait = dick_big_good
				}
			}
		}
		add_trait = dick_big_good_1
	}
}

# Genitalia improvement : penis rank up via PA attributes
# Written by cgman19
regula_mutare_corpus_genitalia_rank_up_penis_effect_pa = {
	if = { # Small dick preference enabled in game rules but not max
		limit = {
			AND = {
				has_game_rule = carn_dt_dick_small_good
				carn_is_futa_trigger = yes
				NOR = { var:penis_size_genetic < 0
				has_game_rule = carn_dt_dick_big_good
				}
			}
		}
		change_variable = {
			name = penis_size_genetic
			add = -20
		}
		change_variable = {
			name = penis_size_gene_1
			add = -20
		}
		change_variable = {
			name = penis_size_gene_2
			add = -20
		}
	}
	else_if = {  # Big dick preference enabled in game rules but not max
		limit = {
			AND = {
				has_game_rule = carn_dt_dick_big_good
				carn_is_futa_trigger = yes
				NOT= { var:penis_size_genetic > 200 }
			}
		}
		change_variable = {
			name = penis_size_genetic
			add = 20
		}
		change_variable = {
			name = penis_size_gene_1
			add = 20
		}
		change_variable = {
			name = penis_size_gene_2
			add = 20
		}
	}
}

# Genitalia improvement : breasts rank up
regula_mutare_corpus_genitalia_rank_up_breasts_effect = {
	if = {
		limit = {
			exists = var:breast_size_genetic
		}
		regula_mutare_corpus_genitalia_rank_up_breasts_effect_pa = yes
	}
	else = {
		regula_mutare_corpus_genitalia_rank_up_breasts_effect_carn_traits = yes
	}
}

# Genitalia improvement : breasts rank up via Carn traits
regula_mutare_corpus_genitalia_rank_up_breasts_effect_carn_traits = {
	if = { # Both big & small tits preference, but no trait -> Randomly shift.
		limit = {
			has_game_rule = carn_dt_tits_small_good
			has_game_rule = carn_dt_tits_big_good
			NOR = {
				has_trait = tits_small_good
				has_trait = tits_big_good
			}
		}
		random_list = {
			50 = {
				add_trait = tits_small_good_1
			}
			50 = {
				add_trait = tits_big_good_1
			}
		}
	}
	else_if = { # Small tits preference enabled in game rules + trait but not max
		limit = {
			AND = {
				has_game_rule = carn_dt_tits_small_good
				NOT = { has_trait = tits_small_good_3 }
				has_trait = tits_small_good
			}
		}
		change_trait_rank = {
			trait = tits_small_good
			rank = 1
		}
	}
	else_if = { # Small tits preference enabled in game rules + bad trait
		limit = {
			AND = {
				has_game_rule = carn_dt_tits_small_good
				has_trait = tits_big_bad
			}
		}
		change_trait_rank = {
			trait = tits_big_bad
			rank = -1
		}
	}
	else_if = { # Small tits preference enabled in game rules + neutral
		limit = {
			AND = {
				has_game_rule = carn_dt_tits_small_good
				NOR = {
					has_game_rule = carn_dt_tits_big_good
					has_trait = tits_small_good
				}
			}
		}
		add_trait = tits_small_good_1
	}
	else_if = {  # Big tits preference enabled in game rules + trait but not max
		limit = {
			AND = {
				has_game_rule = carn_dt_tits_big_good
				NOT= { has_trait = tits_big_good_3 }
				has_trait = tits_big_good
			}
		}
		change_trait_rank = {
			trait = tits_big_good
			rank = 1
		}
	}
	else_if = { # Big tits preference enabled in game rules + bad trait
		limit = {
			AND = {
				has_game_rule = carn_dt_tits_big_good
				has_trait = tits_small_bad
			}
		}
		change_trait_rank = {
			trait = tits_small_bad
			rank = -1
		}
	}
	else_if = { # Big tits preference enabled in game rules + neutral
		limit = {
			AND = {
				has_game_rule = carn_dt_tits_big_good
				NOR = {
					has_game_rule = carn_dt_tits_small_good
					has_trait = tits_big_good
				}
			}
		}
		add_trait = tits_big_good_1
	}
}

# Genitalia improvement : breasts rank up via PA attributes
# Written by cgman19
regula_mutare_corpus_genitalia_rank_up_breasts_effect_pa = {
	if = { # Small tits preference enabled in game rules but not max
		limit = {
			AND = {
				has_game_rule = carn_dt_tits_small_good
				NOR = { var:breast_size_genetic < 0
						has_game_rule = carn_dt_tits_big_good
				}
			}
		}
		change_variable = {
			name = breast_size_genetic
			add = -20
		}
		change_variable = {
			name = breast_size_gene_1
			add = -20
		}
		change_variable = {
			name = breast_size_gene_2
			add = -20
		}
	}
	else_if = {  # Big tits preference enabled in game rules + trait but not max
		limit = {
			AND = {
				has_game_rule = carn_dt_tits_big_good
				NOT= { var:breast_size_genetic > 200 }
			}
		}
		change_variable = {
			name = breast_size_genetic
			add = 20
		}
		change_variable = {
			name = breast_size_gene_1
			add = 20
		}
		change_variable = {
			name = breast_size_gene_2
			add = 20
		}
	}
}


# Converts all sinful personality traits into positive ones
# Hardcoded for the default Regula religion, with my assumption of good traits to have
# Some traits, eg brave/craven are fine either way
regula_remove_sinful_personality_traits_all_effect = {
    if = {
        limit ={
            has_trait = wrathful
        }
        remove_trait_force_tooltip = wrathful
        add_trait_force_tooltip = calm
    }

    if = {
        limit ={
            has_trait = chaste
        }
        remove_trait_force_tooltip = chaste
        add_trait_force_tooltip = lustful
    }

    if = {
        limit ={
            has_trait = lazy
        }
        remove_trait_force_tooltip = lazy
        add_trait_force_tooltip = diligent
    }

    if = {
        limit ={
            has_trait = vengeful
        }
        remove_trait_force_tooltip = vengeful
        add_trait_force_tooltip = forgiving
    }

    if = {
        limit ={
            has_trait = greedy
        }
        remove_trait_force_tooltip = greedy
        add_trait_force_tooltip = generous
    }

    if = {
        limit ={
            has_trait = deceitful
        }
        remove_trait_force_tooltip = deceitful
        add_trait_force_tooltip = honest
    }

    if = {
        limit ={
            has_trait = arrogant
        }
        remove_trait_force_tooltip = arrogant
        add_trait_force_tooltip = humble
    }

    if = {
        limit ={
            has_trait = arbitrary
        }
        remove_trait_force_tooltip = arbitrary
        add_trait_force_tooltip = just
    }

    if = {
        limit ={
            has_trait = impatient
        }
        remove_trait_force_tooltip = impatient
        add_trait_force_tooltip = patient
    }

    if = {
        limit ={
            has_trait = gluttonous
        }
        remove_trait_force_tooltip = gluttonous
        add_trait_force_tooltip = temperate
    }

    if = {
        limit ={
            has_trait = paranoid
        }
        remove_trait_force_tooltip = paranoid
        add_trait_force_tooltip = trusting
    }

    if = {
        limit ={
            has_trait = cynical
        }
        remove_trait_force_tooltip = cynical
        add_trait_force_tooltip = zealous
    }

    if = {
        limit ={
            has_trait = callous
        }
        remove_trait_force_tooltip = callous
        add_trait_force_tooltip = compassionate
    }

    if = {
        limit ={
            has_trait = sadistic
        }
        remove_trait_force_tooltip = sadistic
        add_trait_force_tooltip = compassionate
    }
}

# Attempts to move this persons personality towards a more virtuous personality
# virtues = { lustful zealous diligent trusting humble fecund }
# sins = { chaste cynical vengeful sadistic celibate lovers_pox }
# Pick a virtue, then first check if they have the direct opposite trait
# if they do, we swap, if not, we look for another trait instead
# Conversion list, we convert top into bottom, the ! trait is opposite, so has to be checked first

# Lustful
# chaste! ambitious fickle callous Arbitrary Gluttonous Gregarious

# Zealous
# brave vengeful just impatient cynical!

# Diligent
# lazy! stubborn greedy patient paranoid

# Trusting
# calm forgiving generous honest compassionate sadistic deceitful!

# humble
# craven content shy arrogant! Temperate

regula_change_personality_to_virtuous_single_effect = {
	random_list = {
		# Lustful
		1 = {
			trigger = {
				NOT = { has_trait = lustful }
				has_trait = chaste
			}
			remove_trait_force_tooltip = chaste
			add_trait_force_tooltip = lustful
		}
		1 = {
			trigger = {
				NOT = {
					has_trait = lustful
					has_trait = chaste
				}
				OR = {
					has_trait = ambitious
					has_trait = fickle
					has_trait = callous
					has_trait = arbitrary
					has_trait = gluttonous
					has_trait = gregarious
				}
			}
			add_trait_force_tooltip = lustful
			random_list = {
				1 = {
					trigger = { has_trait = ambitious }
					remove_trait_force_tooltip = ambitious
				}
				1 = {
					trigger = { has_trait = fickle }
					remove_trait_force_tooltip = fickle
				}
				1 = {
					trigger = { has_trait = callous }
					remove_trait_force_tooltip = callous
				}
				1 = {
					trigger = { has_trait = arbitrary }
					remove_trait_force_tooltip = arbitrary
				}
				1 = {
					trigger = { has_trait = gluttonous }
					remove_trait_force_tooltip = gluttonous
				}
				1 = {
					trigger = { has_trait = gregarious }
					remove_trait_force_tooltip = gregarious
				}
			}
		}

		# Zealous
		1 = {
			trigger = {
				NOT = { has_trait = zealous }
				has_trait = cynical
			}
			remove_trait_force_tooltip = cynical
			add_trait_force_tooltip = zealous
		}
		1 = {
			trigger = {
				NOT = {
					has_trait = zealous
					has_trait = cynical
				}
				OR = {
					has_trait = brave
					has_trait = vengeful
					has_trait = just
					has_trait = impatient
				}
			}
			add_trait_force_tooltip = zealous
			random_list = {
				1 = {
					trigger = { has_trait = brave }
					remove_trait_force_tooltip = brave
				}
				1 = {
					trigger = { has_trait = vengeful }
					remove_trait_force_tooltip = vengeful
				}
				1 = {
					trigger = { has_trait = just }
					remove_trait_force_tooltip = just
				}
				1 = {
					trigger = { has_trait = impatient }
					remove_trait_force_tooltip = impatient
				}
			}
		}

		# Diligent
		1 = {
			trigger = {
				NOT = { has_trait = diligent }
				has_trait = lazy
			}
			remove_trait_force_tooltip = lazy
			add_trait_force_tooltip = diligent
		}
		1 = {
			trigger = {
				NOT = {
					has_trait = diligent
					has_trait = lazy
				}
				OR = {
					has_trait = stubborn
					has_trait = greedy
					has_trait = patient
					has_trait = paranoid
				}
			}
			add_trait_force_tooltip = diligent
			random_list = {
				1 = {
					trigger = { has_trait = stubborn }
					remove_trait_force_tooltip = stubborn
				}
				1 = {
					trigger = { has_trait = greedy }
					remove_trait_force_tooltip = greedy
				}
				1 = {
					trigger = { has_trait = patient }
					remove_trait_force_tooltip = patient
				}
				1 = {
					trigger = { has_trait = paranoid }
					remove_trait_force_tooltip = paranoid
				}
			}
		}

		# Trusting
		1 = {
			trigger = {
				NOT = { has_trait = trusting }
				has_trait = deceitful
			}
			remove_trait_force_tooltip = deceitful
			add_trait_force_tooltip = trusting
		}
		1 = {
			trigger = {
				NOT = {
					has_trait = trusting
					has_trait = deceitful
				}
				OR = {
					has_trait = calm
					has_trait = forgiving
					has_trait = generous
					has_trait = honest
					has_trait = compassionate
					has_trait = sadistic
				}
			}
			add_trait_force_tooltip = trusting
			random_list = {
				1 = {
					trigger = { has_trait = calm }
					remove_trait_force_tooltip = calm
				}
				1 = {
					trigger = { has_trait = forgiving }
					remove_trait_force_tooltip = forgiving
				}
				1 = {
					trigger = { has_trait = generous }
					remove_trait_force_tooltip = generous
				}
				1 = {
					trigger = { has_trait = honest }
					remove_trait_force_tooltip = honest
				}
				1 = {
					trigger = { has_trait = compassionate }
					remove_trait_force_tooltip = compassionate
				}
				1 = {
					trigger = { has_trait = sadistic }
					remove_trait_force_tooltip = sadistic
				}
			}
		}

		# Humble
		1 = {
			trigger = {
				NOT = { has_trait = humble }
				has_trait = arrogant
			}
			remove_trait_force_tooltip = arrogant
			add_trait_force_tooltip = humble
		}
		1 = {
			trigger = {
				NOT = {
					has_trait = humble
					has_trait = arrogant
				}
				OR = {
					has_trait = craven
					has_trait = content
					has_trait = shy
					has_trait = temperate
				}
			}
			add_trait_force_tooltip = humble
			random_list = {
				1 = {
					trigger = { has_trait = craven }
					remove_trait_force_tooltip = craven
				}
				1 = {
					trigger = { has_trait = content }
					remove_trait_force_tooltip = content
				}
				1 = {
					trigger = { has_trait = shy }
					remove_trait_force_tooltip = shy
				}
				1 = {
					trigger = { has_trait = temperate }
					remove_trait_force_tooltip = temperate
				}
			}
		}
	}
}
