﻿ve_cultural_mandate_base = 2

ve_cultural_mandate_legitimacy = {
	if = {
		limit = { government_legitimacy >= 75 }
		add = 2
	}
	else_if = {
		limit = { government_legitimacy >= 50 }
		add = 1
	}
	else_if = {
		limit = { government_legitimacy < 25 }
		subtract = 1
	}
}

ve_cultural_mandate_administration = {
	if = {
		limit = {
			bureaucracy >= 0
			approaching_bureaucracy_shortage = no
		}
		add = 2
	}
	else = {
		subtract = 2
	}
}

ve_cultural_mandate_education = {
	if = {
		limit = { ve_is_civic_identity = yes }
		if = {
			limit = { literacy_rate >= 0.75 }
			add = 2
		}
		else_if = {
			limit = { literacy_rate >= 0.50 }
			add = 1
		}
	}
	else_if = {
		limit = {
			ve_is_composite_identity = yes
			literacy_rate >= 0.50
		}
		add = 1
	}
	else_if = {
		limit = {
			ve_is_ethnic_identity = yes
			primary_cultures_percent_country >= 0.75
		}
		add = 1
	}
}

ve_cultural_mandate_stability = {
	if = {
		limit = { country_turmoil >= 0.25 }
		subtract = 2
	}
	else_if = {
		limit = { country_turmoil >= 0.10 }
		subtract = 1
	}
	if = {
		limit = { has_modifier = ve_identity_transition_backlash_mdf }
		subtract = 2
	}
	if = {
		limit = { ve_has_cultural_movement_pressure = yes }
		subtract = 1
	}
}

ve_cultural_mandate_alignment = {
	if = {
		limit = {
			OR = {
				AND = {
					ve_is_ethnic_identity = yes
					OR = {
						has_law = law_type:law_ethnostate
						has_law = law_type:law_national_supremacy
					}
				}
				AND = {
					ve_is_civic_identity = yes
					has_law = law_type:law_multicultural
				}
				AND = {
					ve_is_composite_identity = yes
					OR = {
						has_law = law_type:law_racial_segregation
						has_law = law_type:law_cultural_exclusion
					}
				}
			}
		}
		add = 1
	}
	else_if = {
		limit = {
			OR = {
				AND = {
					ve_is_ethnic_identity = yes
					has_law = law_type:law_multicultural
				}
				AND = {
					ve_is_civic_identity = yes
					OR = {
						has_law = law_type:law_ethnostate
						has_law = law_type:law_national_supremacy
					}
				}
			}
		}
		subtract = 1
	}
}

ve_cultural_mandate_cap_multiplier = {
	if = {
		limit = { var:culture_reform_point >= 500 }
		value = 0
	}
	else_if = {
		limit = { var:culture_reform_point >= 400 }
		value = 0.50
	}
	else = {
		value = 1
	}
}

# Direct idea-group contribution to Cultural Mandate income. Each doctrine is
# useful only with the identity model it represents; total contribution is 2.
ve_cultural_mandate_idea_bonus = {
	if = {
		limit = {
			has_variable = nationalist_idea_5_var
			ve_is_ethnic_identity = yes
		}
		add = 1
	}
	if = {
		limit = {
			has_modifier = reformist_idea_5_mdf
			OR = {
				ve_is_civic_identity = yes
				ve_is_composite_identity = yes
			}
		}
		add = 1
	}
	if = {
		limit = {
			has_modifier = academic_idea_5_mdf
			ve_is_civic_identity = yes
		}
		add = 1
	}
	min = 0
	max = 2
}

ve_monthly_national_identity = {
	add = ve_cultural_mandate_base
	add = ve_cultural_mandate_legitimacy
	add = ve_cultural_mandate_administration
	add = ve_cultural_mandate_education
	add = ve_cultural_mandate_stability
	add = ve_cultural_mandate_alignment
	add = ve_cultural_mandate_idea_bonus
	min = 1
	max = 8
	multiply = ve_cultural_mandate_cap_multiplier
	round = yes
}

ve_identity_model_cohesion = {
	# The identity model is initialized by monthly setup. The culture panel can
	# evaluate this value before that setup has run, so it must always return a
	# numeric fallback instead of `none`.
	value = 0
	if = {
		limit = { ve_is_ethnic_identity = yes }
		if = {
			limit = {
				OR = {
					has_law = law_type:law_ethnostate
					has_law = law_type:law_national_supremacy
				}
			}
			add = 15
		}
		else_if = {
			limit = { has_law = law_type:law_racial_segregation }
			add = 5
		}
		else_if = {
			limit = { has_law = law_type:law_multicultural }
			subtract = 15
		}
		if = {
			limit = { country_turmoil < 0.10 }
			add = 5
		}
		if = {
			limit = { primary_cultures_percent_country >= 0.75 }
			add = 10
		}
		else_if = {
			limit = { primary_cultures_percent_country >= 0.60 }
			add = 5
		}
		else_if = {
			limit = { primary_cultures_percent_country < 0.40 }
			subtract = 10
		}
	}
	else_if = {
		limit = { ve_is_civic_identity = yes }
		if = {
			limit = { has_law = law_type:law_multicultural }
			add = 15
		}
		else_if = {
			limit = { has_law = law_type:law_cultural_exclusion }
			add = 5
		}
		else_if = {
			limit = {
				OR = {
					has_law = law_type:law_ethnostate
					has_law = law_type:law_national_supremacy
				}
			}
			subtract = 15
		}
		if = {
			limit = { literacy_rate >= 0.75 }
			add = 10
		}
		else_if = {
			limit = { literacy_rate >= 0.50 }
			add = 5
		}
		if = {
			limit = {
				any_scope_culture = {
					NOT = { is_primary_culture_of = ROOT }
					ROOT = {
						"culture_percent_country(prev)" >= 0.10
						country_average_cultural_acceptance = {
							target = PREV
							value <= acceptance_status_2
						}
					}
				}
			}
			subtract = 10
		}
	}
	else_if = {
		limit = { ve_is_composite_identity = yes }
		if = {
			limit = {
				OR = {
					has_law = law_type:law_racial_segregation
					has_law = law_type:law_cultural_exclusion
				}
			}
			add = 10
		}
		else_if = {
			limit = { has_law = law_type:law_ethnostate }
			subtract = 10
		}
		if = {
			limit = {
				bureaucracy >= 0
				approaching_bureaucracy_shortage = no
			}
			add = 5
		}
		if = {
			limit = { primary_cultures_percent_country <= 0.75 }
			add = 5
		}
		else_if = {
			limit = { primary_cultures_percent_country >= 0.90 }
			subtract = 5
		}
	}
}

ve_common_national_cohesion = {
	add = 50
	if = {
		limit = { government_legitimacy >= 75 }
		add = 10
	}
	else_if = {
		limit = { government_legitimacy >= 50 }
		add = 5
	}
	else_if = {
		limit = { government_legitimacy < 25 }
		subtract = 10
	}

	if = {
		limit = {
			bureaucracy >= 0
			approaching_bureaucracy_shortage = no
		}
		add = 5
	}
	else = {
		subtract = 10
	}

	if = {
		limit = { country_turmoil >= 0.25 }
		subtract = 15
	}
	else_if = {
		limit = { country_turmoil >= 0.10 }
		subtract = 8
	}

	if = {
		limit = { has_modifier = ve_identity_transition_backlash_mdf }
		subtract = 20
	}
	if = {
		limit = { ve_has_cultural_movement_pressure = yes }
		subtract = 10
	}
	if = {
		limit = { has_modifier = ve_tag_flavor_usa_federal_ambiguity_mdf }
		subtract = 2
	}
}

ve_national_cohesion_equilibrium = {
	add = ve_common_national_cohesion
	add = ve_identity_model_cohesion
	min = 15
	max = 85
	round = yes
}

ve_monthly_national_cohesion = {
	value = 0
	# GUI tooltips evaluate this before ve_initialize_national_identity has run
	# for the scope being displayed (e.g. an unselected/uninitialized country),
	# so var:ve_national_cohesion can be 'none' - guard instead of erroring.
	if = {
		limit = { has_variable = ve_national_cohesion }
		add = ve_national_cohesion_equilibrium
		subtract = var:ve_national_cohesion
		multiply = 0.20
	}
	min = -5
	max = 5
	round = yes
}
