﻿check_global_trait_not_set_trigger = { # needs GROUP
	NAND = {
		exists = global_var:$GROUP$
		global_var:$GROUP$ > 0
	}
}
check_global_trait_set_trigger = { # needs GROUP
	exists = global_var:$GROUP$
	global_var:$GROUP$ > 0
}

is_bastard_trigger = {
	exists = real_father
	trigger_if = {
		limit = {
			exists = father
		}
		NOT = { father = real_father }
	}
	trigger_else = {
		always = yes
	}
}

is_bastard_patrilineages_trigger = {
	is_female = no
	NOT = { 
		has_trait_rank = { 
			trait = patrilineages
			rank >= scope:trait_level # impossible to have it >?
		}
	}
}

is_bastard_dynastylineages_trigger = {
	NOT = { 
		has_trait_rank = { 
			trait = dynastylineages
			rank >= scope:trait_level
		}
	}
}

is_bastard_goodlineages_trigger = {
	NOT = { 
		has_trait_rank = { 
			trait = goodlineages
			rank >= scope:trait_level
		}
	}
}

is_bastard_badlineages_trigger = {
	NOT = { 
		has_trait_rank = { 
			trait = badlineages
			rank >= scope:trait_level
		}
	}
}

### FAMILY TRIGGERS ##
# Patrilineages
patrilineages_family_trigger = { # needs scope:trait_level
	is_female = no
	NOT = {	
		has_trait_rank = {
			trait = patrilineages
			rank > scope:trait_level
		}
	}
}

patrilineages_bastard_family_trigger = { # needs scope:trait_level
	# is_female = no
	exists = real_father
	real_father = {	
		OR = {
			has_trait_rank = {
				trait = patrilinefounder
				rank = scope:trait_level
			}
			has_trait_rank = {
				trait = patrilineages
				rank = scope:trait_level
			}
		}
	}
	NOT = {	
		has_trait_rank = {
			trait = patrilineages
			rank > scope:trait_level
		}
	}
}

# Matrilineages
matrilineages_family_trigger = { # needs scope:trait_level
	exists = mother
	mother = { # only inherited through mother, despite all inheriting
		OR = {
			has_trait_rank = {
				trait = matrilinefounder
				rank = scope:trait_level
			}
			has_trait_rank = {
				trait = matrilineages
				rank = scope:trait_level
			}
		}
	}
	NOT = {	
		has_trait_rank = {
			trait = matrilineages
			rank > scope:trait_level
		}
	}
}

# Dynasty lineages
dynastylineages_family_trigger = { # needs scope:line_father, scope:trait_level
	NOT = {	
		has_trait_rank = {
			trait = dynastylineages
			rank > scope:trait_level
		}
	}
}

dynastylineages_bastard_family_trigger = { # needs scope:trait_level
	OR = {
		AND = {
			exists = real_father
			real_father = {
				OR = {
					has_trait_rank = {
						trait = linefounder
						rank = scope:trait_level
					}
					has_trait_rank = {
						trait = dynastylineages
						rank = scope:trait_level
					}
				}
			}   
		}
		AND = {
			exists = mother
			mother = {
				OR = {
					has_trait_rank = {
						trait = linefounder
						rank = scope:trait_level
					}
					has_trait_rank = {
						trait = dynastylineages
						rank = scope:trait_level
					}
				}
			}
		}
	}
	NOT = {	
		has_trait_rank = {
			trait = dynastylineages
			rank > scope:trait_level
		}
	}
}

goodlineages_family_trigger = { # needs scope:trait_level
	NOT = {	
		has_trait_rank = {
			trait = goodlineages
			rank > scope:trait_level
		}
	}
}

goodlineages_bastard_family_trigger = { # needs scope:trait_level
	OR = {
		AND = {
			exists = real_father
			real_father = {
				OR = {
					has_trait_rank = {
						trait = goodlinefounder
						rank = scope:trait_level
					}
					has_trait_rank = {
						trait = goodlineages
						rank = scope:trait_level
					}
				}
			}   
		}
		AND = {
			exists = mother
			mother = {
				OR = {
					has_trait_rank = {
						trait = goodlinefounder
						rank = scope:trait_level
					}
					has_trait_rank = {
						trait = goodlineages
						rank = scope:trait_level
					}
				}
			}
		}
	}
	NOT = {	
		has_trait_rank = {
			trait = goodlineages
			rank > scope:trait_level
		}
	}
}


badlineages_family_trigger = { # needs scope:trait_level
	NOT = {	
		has_trait_rank = {
			trait = badlineages
			rank > scope:trait_level
		}
	}
}

badlineages_bastard_family_trigger = { # needs scope:trait_level
	OR = {
		AND = {
			exists = real_father
			real_father = {
				OR = {
					has_trait_rank = {
						trait = badlinefounder
						rank = scope:trait_level
					}
					has_trait_rank = {
						trait = badlineages
						rank = scope:trait_level
					}
				}
			}   
		}
		AND = {
			exists = mother
			mother = {
				OR = {
					has_trait_rank = {
						trait = badlinefounder
						rank = scope:trait_level
					}
					has_trait_rank = {
						trait = badlineages
						rank = scope:trait_level
					}
				}
			}
		}
	}
	NOT = {	
		has_trait_rank = {
			trait = badlineages
			rank > scope:trait_level
		}
	}
}

### HAS TRAIT ##
father_has_patriline_trait = { # needs scope:line_father
	scope:line_father = {
		OR = {
			has_trait_rank = {
				trait = patrilinefounder
				rank = $RANK$
			} 
			has_trait_rank = {
				trait = patrilineages
				rank = $RANK$
			}
		}
	}
}

mother_has_matriline_trait = {
	mother = {
		OR = {
			has_trait_rank = {
				trait = matrilinefounder
				rank = $RANK$
			} 
			has_trait_rank = {
				trait = matrilineages
				rank = $RANK$
			}
		}
	}
}

parent_has_line_trait = { # needs scope:line_father
	scope:recipient = {
		OR = {
			has_trait_rank = {
				trait = linefounder
				rank = $RANK$
			}
			has_trait_rank = {
				trait = dynastylineages
				rank = $RANK$
			}
		}
	}
}

# Stand alone
father_has_line_trait = {
	scope:line_father = {
		OR = {
			has_trait_rank = {
				trait = linefounder
				rank > 0
			}
			has_trait_rank = {
				trait = dynastylineages
				rank > 0
			}
		}
	}
}
mother_has_line_trait = {
	mother = {
		OR = {
			has_trait_rank = {
				trait = linefounder
				rank > 0
			}
			has_trait_rank = {
				trait = dynastylineages
				rank > 0
			}
		}
	}	
}

father_has_line_trait = {
	scope:line_father = {
		OR = {
			has_trait_rank = {
				trait = linefounder
				rank > 0
			}
			has_trait_rank = {
				trait = dynastylineages
				rank > 0
			}
		}
	}
}
parents_have_diff_line_trait = {
	OR = {
		parent_has_diff_line_trait = { RANK = 1 }
		parent_has_diff_line_trait = { RANK = 2 }
		parent_has_diff_line_trait = { RANK = 3 }
		parent_has_diff_line_trait = { RANK = 4 }
		parent_has_diff_line_trait = { RANK = 5 }
		parent_has_diff_line_trait = { RANK = 6 }
		parent_has_diff_line_trait = { RANK = 7 }
		parent_has_diff_line_trait = { RANK = 8 }
		parent_has_diff_line_trait = { RANK = 9 }
		parent_has_diff_line_trait = { RANK = 10 }
		parent_has_diff_line_trait = { RANK = 11 }
		parent_has_diff_line_trait = { RANK = 12 }
		parent_has_diff_line_trait = { RANK = 13 }
		parent_has_diff_line_trait = { RANK = 14 }
		parent_has_diff_line_trait = { RANK = 15 }
		parent_has_diff_line_trait = { RANK = 16 }
		parent_has_diff_line_trait = { RANK = 17 }
		parent_has_diff_line_trait = { RANK = 18 }
		parent_has_diff_line_trait = { RANK = 19 }
		parent_has_diff_line_trait = { RANK = 20 }
		parent_has_diff_line_trait = { RANK = 21 }
		parent_has_diff_line_trait = { RANK = 22 }
		parent_has_diff_line_trait = { RANK = 23 }
		parent_has_diff_line_trait = { RANK = 24 }
		parent_has_diff_line_trait = { RANK = 25 }
		parent_has_diff_line_trait = { RANK = 26 }
	}
}

parent_has_diff_line_trait = {
	OR = {
		AND = {
			mother = { 
				has_line_trait = { RANK = $RANK$ } 
			}
			scope:line_father = { 
				has_line_trait_more = { RANK = $RANK$ } 
				save_temporary_scope_as = higher_ranked
			}
		}
		AND = {
			scope:line_father = { 
				has_line_trait = { RANK = $RANK$ } 
			}
			mother = {
				has_line_trait_more = { RANK = $RANK$ }
				save_temporary_scope_as = higher_ranked
			}
		}
	}
}

has_line_trait = {
	OR = {
		has_trait_rank = {
			trait = linefounder
			rank = $RANK$
		}
		has_trait_rank = {
			trait = dynastylineages
			rank = $RANK$
		}
	}
}
has_line_trait_more = {
	OR = {
		has_trait_rank = {
			trait = linefounder
			rank > $RANK$
		}
		has_trait_rank = {
			trait = dynastylineages
			rank > $RANK$
		}
	}
}

##################### PREFERENCE RULES

mother_dominates_over_father = {
	scope:line_father = {
		OR = {
			AND = {
				is_spouse_of = mother
				matrilinear_marriage = yes
			}
			is_concubine_of = mother
		}
	}
}

should_mother_give_trait_to_child_trigger = {
	trigger_if = {
		limit = { NOT = { exists = mother } }
		always = no
	}
	trigger_else_if = {
		limit = { NOT = { exists = mother.house } }
		always = no
	}
	trigger_else_if = {
		limit = { NOT = { exists = scope:line_father } }
		always = yes
	}
	trigger_else_if = {
		limit = {
			scope:line_father = { is_ruler = yes }
			mother = { is_ruler = no }
			exists = scope:line_father.house
		}
		always = no
	}
	trigger_else_if = {
		limit = {
			scope:line_father = { is_ruler = no }
			mother = { is_ruler = yes }
			exists = mother.house
		}
		always = yes
	}
	trigger_else_if = {
		limit = {
			mother = { NOT = { exists = house } }
			exists = scope:line_father.house
		}
		always = no
	}
	trigger_else_if = {
		limit = {
			scope:line_father = { NOT = { exists = house } }
			exists = mother.house
		}
		always = yes
	}
	# making the default behavior explicit if no other trigger_(else_)ifs are valid
	trigger_else = {
		always = no
	}
}