namespace = racial
# TODO - flavour events for dryad pregnancy

################################################
# Racial trait assignment
################################################
# Racial trait assignment (on_startup, on_birth, but also mtth for generated courtiers)
character_event = {
	id = racial.1
	
	hide_window = yes
	
	trigger = {
		NOT = { trait = human_race }
		NOT = { trait = dwarf_race }
		NOT = { trait = halfdwarf_race }
		NOT = { trait = elf_race }
		NOT = { trait = halfelf_race }
		NOT = { trait = dryad_race }
		NOT = { trait = halfling_race }
		NOT = { trait = halfhalfling_race }
		NOT = { trait = gnome_race }
		NOT = { trait = halfgnome_race }
		NOT = { trait = wilderness_race }
	}
	
	mean_time_to_happen = {
		days = 20
	}
	
	option = { # Dryad
		name = OK
		trigger = {
			graphical_culture = dryadgfx
		}
		add_trait = dryad_race
	}
	option = { # Elf or halfelf
		name = OK
		trigger = {
			graphical_culture = elfgfx
		}
		add_trait = elf_race
		if = {
			limit = {
				OR = {
					father_even_if_dead = { NOT = { graphical_culture = elfgfx } }
					mother_even_if_dead = { NOT = { graphical_culture = elfgfx } }
				}
			}
			remove_trait = elf_race
			add_trait = halfelf_race
		}
	}
	option = { # Dwarf or halfdwarf
		name = OK
		trigger = {
			graphical_culture = dwarvengfx
		}
		add_trait = dwarf_race
		if = {
			limit = {
				OR = {
					father_even_if_dead = { NOT = { graphical_culture = dwarvengfx } }
					mother_even_if_dead = { NOT = { graphical_culture = dwarvengfx } }
				}
			}
			remove_trait = dwarf_race
			add_trait = halfdwarf_race
		}
	}
	option = { # Halfling or halfhalfling
		name = OK
		trigger = {
			graphical_culture = hobbitgfx
		}
		add_trait = halfling_race
		if = {
			limit = {
				OR = {
					father_even_if_dead = { NOT = { graphical_culture = hobbitgfx } }
					mother_even_if_dead = { NOT = { graphical_culture = hobbitgfx } }
				}
			}
			remove_trait = halfling_race
			add_trait = halfhalfling_race
		}
	}
	option = { # Gnome or halfgnome
		name = OK
		trigger = {
			graphical_culture = gnomegfx
		}
		add_trait = gnome_race
		if = {
			limit = {
				OR = {
					father_even_if_dead = { NOT = { graphical_culture = gnomegfx } }
					mother_even_if_dead = { NOT = { graphical_culture = gnomegfx } }
				}
			}
			remove_trait = gnome_race
			add_trait = halfgnome_race
		}
	}
	option = { # Human, halfelf, halfdwarf, halfhalfling or halfgnome
		name = OK
		trigger = {
			NOT = {
				graphical_culture = dwarvengfx
				graphical_culture = elfgfx
				graphical_culture = hobbitgfx
				graphical_culture = gnomegfx
				graphical_culture = dryadgfx
				graphical_culture = wildernessgfx
			}
		}
		add_trait = human_race
		if = {
			limit = {
				OR = {
					father_even_if_dead = { graphical_culture = elfgfx }
					mother_even_if_dead = { graphical_culture = elfgfx }
				}
			}
			remove_trait = human_race
			add_trait = halfelf_race
		}
		if = {
			limit = {
				OR = {
					father_even_if_dead = { graphical_culture = dwarvengfx }
					mother_even_if_dead = { graphical_culture = dwarvengfx }
				}
			}
			remove_trait = human_race
			add_trait = halfdwarf_race
		}
		if = {
			limit = {
				OR = {
					father_even_if_dead = { graphical_culture = hobbitgfx }
					mother_even_if_dead = { graphical_culture = hobbitgfx }
				}
			}
			remove_trait = human_race
			add_trait = halfhalfling_race
		}
		if = {
			limit = {
				OR = {
					father_even_if_dead = { graphical_culture = gnomegfx }
					mother_even_if_dead = { graphical_culture = gnomegfx }
				}
			}
			remove_trait = human_race
			add_trait = halfgnome_race
		}
	}
	option = { # Wilderness
		name = OK
		trigger = {
			graphical_culture = wildernessgfx
		}
		add_trait = wilderness_race
	}
}

################################################
# Dryad reproduction
################################################
# Pregnancy
character_event = {
	id = racial.2
	desc = EVTDESCracial.2
	picture = GFX_evt_pregnancy
	
	min_age = 15
	capable_only = yes
	only_women = yes
	
	trigger = {
		NOT = { culture = wilderness }
		trait = dryad_race
		NOT = { trait = pregnant }
		NOT = { has_character_modifier = old_age }
	}
	
	mean_time_to_happen = {
		months = 120
		modifier = { factor = 1.5 num_of_children = 2 }
		modifier = { factor = 1.5 num_of_children = 3 }
		modifier = { factor = 1.5 num_of_children = 4 }
		modifier = { factor = 1.5 num_of_children = 5 }
		modifier = { factor = 2 trait = homosexual }
		modifier = { factor = 4 trait = celibate }
		modifier = { factor = 4 is_landed = no }
	}
	
	option = {
		name = OK
		add_trait = pregnant
		prestige = 10
		hidden_tooltip = {
			character_event = { id = racial.3 days = 90 random = 5 }
		}
	}
}
# Birth
character_event = {
	id = racial.3
	desc = EVTDESCracial.3
	picture = GFX_evt_birth
	
	hide_from = yes
	is_triggered_only = yes
	
	option = {
		name = OK
		remove_trait = pregnant
		create_character = {
			age = 0
			female = yes
			dynasty = ROOT
			trait = dryad_race
		}
		new_character = {
			set_mother = ROOT
			character_event = { id = 313 } # Vanilla birth complication event
		}
	}
}

################################################
# Divorce
################################################
# Check marriage (on_marriage)
character_event = {
	id = racial.4
	
	hide_window = yes
	is_triggered_only = yes
	
	trigger = {
		NOT = { culture = wilderness }
		FROM = { character = ROOT }
	}
	
	immediate = { # Race assignment just in case
		ROOT = { character_event = { id = racial.1} }
		new_character = { character_event = { id = racial.1} }
	}
	
	option = { # Divorce marriage
		name = OK
		trigger = {
			OR = {
				AND = {
					trait = elf_race
					new_character = {
						OR = {
							trait = human_race
							trait = dwarf_race
							trait = halfdwarf_race
							trait = halfling_race
							trait = halfhalfling_race
							trait = gnome_race
							trait = halfgnome_race
						}
					}
				}
				AND = {
					trait = halfelf_race
					new_character = {
						OR = {
							trait = dwarf_race
							trait = halfdwarf_race
							trait = halfling_race
							trait = halfhalfling_race
							trait = gnome_race
							trait = halfgnome_race
						}
					}
				}
				AND = {
					trait = dwarf_race
					new_character = {
						OR = {
							trait = human_race
							trait = elf_race
							trait = halfelf_race
							trait = halfling_race
							trait = halfhalfling_race
							trait = gnome_race
							trait = halfgnome_race
						}
					}
				}
				AND = {
					trait = halfdwarf_race
					new_character = {
						OR = {
							trait = elf_race
							trait = halfelf_race
							trait = halfling_race
							trait = halfhalfling_race
							trait = gnome_race
							trait = halfgnome_race
						}
					}
				}
				AND = {
					trait = halfling_race
					new_character = {
						OR = {
							trait = human_race
							trait = elf_race
							trait = halfelf_race
							trait = dwarf_race
							trait = halfdwarf_race
							trait = gnome_race
							trait = halfgnome_race
						}
					}
				}
				AND = {
					trait = halfhalfling_race
					new_character = {
						OR = {
							trait = elf_race
							trait = halfelf_race
							trait = dwarf_race
							trait = halfdwarf_race
							trait = gnome_race
							trait = halfgnome_race
						}
					}
				}
				AND = {
					trait = gnome_race
					new_character = {
						OR = {
							trait = elf_race
							trait = halfelf_race
							trait = dwarf_race
							trait = halfdwarf_race
							trait = halfling_race
							trait = halfhalfling_race
						}
					}
				}
				AND = {
					trait = halfgnome_race
					new_character = {
						OR = {
							trait = elf_race
							trait = halfelf_race
							trait = dwarf_race
							trait = halfdwarf_race
							trait = halfling_race
							trait = halfhalfling_race
						}
					}
				}
				AND = {
					trait = human_race
					new_character = {
						OR = {
							trait = elf_race
							trait = dwarf_race
							trait = halfling_race
							trait = gnome_race
						}
					}
				}
			}
		}
		character_event = { id = racial.5 }
		ai_chance = { factor = 1000 }
	}
	option = { # Marriage is okay
		name = OK
		character_event = { id = 500 } # Royal Marriage Aid Duty
		ai_chance = { factor = 1 }
	}
}
# Force divorce interracial marriages
character_event = {
	id = racial.5
	desc = EVTDESCracial.5
	picture = GFX_evt_marriage
	
	is_triggered_only = yes
	
	option = {
		name = EVTOPTAracial.5
		if = {
			limit = { 
				spouse = { 
					is_alive = yes
				}
			}
			spouse = {
				remove_spouse = ROOT
				banish = yes
			}
		}
	}
	option = {
		name = EVTOPTBracial.5
		character_event = { id = 500 } # Royal Marriage Aid Duty 
		ai_chance =  { factor = 0 }
	}
}

################################################
# Non-human fertility
################################################
# Elf gets fertile trait
character_event = {
	id = racial.10
	desc = EVTDESCracial.10
	picture = GFX_evt_lover
	
	min_age = 40
	max_age = 200
	
	trigger = {
		NOT = { trait = fertile_nonhuman }
		trait = elf_race
	}
	
	mean_time_to_happen = {
		months = 120
		modifier = { factor = 0.7 health = 5 }
		modifier = { factor = 0.6 is_married = yes }
		modifier = { factor = 0.6 has_lover = yes }
		modifier = { factor = 0.6 trait = lustful }
		modifier = { factor = 0.9 trait = hedonist }
		modifier = { factor = 0.8 is_strong_trigger = yes }
		modifier = { factor = 1.5 trait = chaste }
		modifier = { factor = 2.0 trait = celibate }
		modifier = { factor = 1.4 trait = homosexual }
		modifier = { factor = 0 age = 100 }
	}
	
	option = {
		name = EVTOPTAracial.10
		add_trait = fertile_nonhuman
	}
}
# Elf loses fertile trait
character_event = {
	id = racial.11
	desc = EVTDESCracial.11
	picture = GFX_evt_lover
	
	min_age = 200
	
	trigger = {
		trait = fertile_nonhuman
		trait = elf_race
	}
	
	mean_time_to_happen = {
		months = 600
		modifier = { factor = 0.8 NOT = { health = 3 } }
		modifier = { factor = 0.8 NOT = { health = 4 } }
		modifier = { factor = 0.8 NOT = { health = 5 } }
		modifier = { factor = 1.2 health = 5 }
		modifier = { factor = 1.2 health = 6 }
		modifier = { factor = 1.2 health = 7 }
		modifier = { factor = 1.2 trait = lustful }
		modifier = { factor = 1.1 trait = hedonist }
		modifier = { factor = 1.5 is_strong_trigger = yes }
		modifier = { factor = 0.6 trait = chaste }
		modifier = { factor = 0.2 trait = celibate }
		modifier = { factor = 0.9 trait = homosexual }
		modifier = { factor = 0 age = 250 }
	}
	
	option = {
		name = EVTOPTAracial.11
		remove_trait = fertile_nonhuman
	}
}
# Hidden - Elven fertility reduction per birth (on_birth)
character_event = {
	id = racial.12
	
	hide_window = yes
	is_triggered_only = yes
	
	option = {
		name = OK
		father = {
			if = {
				limit = { trait = elf_race }
				fertility = -0.10
			}
		}
		mother = {
			if = {
				limit = { trait = elf_race }
				fertility = -0.20
			}
		}
	}
}

################################################
# Fertility reduction for non-elves when hitting 50 years
################################################
# Hidden - Fertility reduction
character_event = {
	id = racial.20
	
	hide_window = yes
	
	min_age = 50
	only_women = yes
	
	trigger = {
		NOT = { trait = elf_race}
		OR = {
			trait = human_race
			trait = halfelf_race
			trait = dwarf_race
			trait = halfdwarf_race
			trait = dryad_race
			trait = halfling_race
		}
		fertility = 0.1
	}
	
	mean_time_to_happen = {
		months = 6
	}
	
	option = {
		name = OK
		fertility = -1
	}
}

################################################
#Combat trait initialization (on_startup)
################################################
character_event = {
	id = racial.30
	
	is_triggered_only = yes
	hide_window = yes
	
	only_capable = yes
	min_age = 15
	
	trigger = {
		NOT = { has_character_modifier = old_age }
	}
	
	immediate = {
		if = {
			limit = {
				OR = {
					trait = witcher
					trait = duelist
				}
				NOT = { trait = poor_warrior }
				NOT = { trait = trained_warrior }
				NOT = { trait = skilled_warrior }
				NOT = { trait = master_warrior }
			}
			random_list = {
				20 = { add_trait = trained_warrior }
				50 = { add_trait = skilled_warrior }
				30 = { add_trait = master_warrior }
			}
		}
		if = {
			limit = {
				OR = {
					trait = brilliant_strategist
					trait = skilled_tactician
				}
				NOT = { trait = witcher }
				NOT = { trait = duelist }
				NOT = { trait = poor_warrior }
				NOT = { trait = trained_warrior }
				NOT = { trait = skilled_warrior }
				NOT = { trait = master_warrior }
			}
			random_list = {
				25 = { add_trait = poor_warrior }
				40 = { add_trait = trained_warrior }
				30 = { add_trait = skilled_warrior }
				5 = { add_trait = master_warrior }
			}
		}
		if = {
			limit = {
				OR = {
					trait = misguided_warrior
					trait = skilled_tactician
				}
				NOT = { trait = witcher }
				NOT = { trait = tough_soldier }
				NOT = { trait = poor_warrior }
				NOT = { trait = trained_warrior }
				NOT = { trait = skilled_warrior }
				NOT = { trait = master_warrior }
			}
			random_list = {
				15 = { }
				25 = { add_trait = poor_warrior }
				40 = { add_trait = trained_warrior }
				20 = { add_trait = skilled_warrior }
			}
		}
		if = {
			limit = {
				is_female = no
				NOT = { trait = witcher }
				NOT = { trait = tough_soldier }
				NOT = { trait = poor_warrior }
				NOT = { trait = trained_warrior }
				NOT = { trait = skilled_warrior }
				NOT = { trait = master_warrior }
			}
			random_list = {
				85 = { }
				10 = { add_trait = poor_warrior }
				5 = { add_trait = trained_warrior }
			}
		}
	}
}

# Human sorcerer portrait age/immortality fix
# Since sorcerer don't have a dedicated culture, need to use a workaround so they don't age.
# Change ethnicity to westerngfx2, a copy of westerngfx where oldage = midage
character_event = {
	id = racial.31
	
	hide_window = yes
	is_triggered_only = yes
	
	trigger = {
		trait = sorcerer
		trait = human_race # Other immortal races have culturegfx where portraits are duplicated for all ages.
		age = 50
	}
	
	option = {
		name = OK
		set_graphical_culture = western_sorcerer
	}
}