﻿#Court Maintenance events of various persuasions

namespace = court_maintenance

#Children should acquire personality trait events
court_maintenance.0003 = {
	hidden = yes

	trigger = {
		OR = {
			is_adult = no
			any_courtier_or_guest = {
				is_adult = no
			}
			any_prisoner = {
				is_adult = no
			}
		}
	}

	immediate = {
		if = {
			limit = {
				is_adult = no
				OR = {
					age = 9
					age = 11
					age = 13
					age >= 14 #Backup in case something has gone wrong
				}
				number_of_personality_traits < childhood_personality_trait_gain_limit
			}
			if = {
				limit = {
					age = 9
					has_variable = reincarnation_of
					can_become_reincarnation_trigger = yes
				}
				trigger_event = child_personality.9900
			}
			else = {
				trigger_event = {
					on_action = child_personality_gain
					days = { 1 360 }
				}
			}
		}
		every_courtier_or_guest = {
			limit = {
				is_adult = no
				OR = {
					age = 9
					age = 11
					age = 13
					age >= 14 #Backup in case something has gone wrong
				}
				number_of_personality_traits < childhood_personality_trait_gain_limit
			}
			trigger_event = {
				on_action = child_personality_gain
				days = { 1 360 }
			}
		}
		#Small random chance to acquire a fourth personality trait
		every_courtier_or_guest = {
			limit = {
				is_adult = no
				number_of_personality_traits = childhood_personality_trait_gain_limit
				number_of_personality_traits < personality_trait_limit
			}
			random = {
				chance = childhood_fourth_personality_trait_chance
				trigger_event = {
					on_action = child_personality_gain
					days = { 1 360 }
				}
			}
		}
		every_prisoner = {
			limit = {
				is_adult = no
				OR = {
					age = 9
					age = 11
					age = 13
					age >= 14 #Backup in case something has gone wrong
				}
				number_of_personality_traits < childhood_personality_trait_gain_limit
			}
			trigger_event = {
				on_action = child_personality_gain
				days = { 1 360 }
			}
		}
		#Small random chance to acquire a fourth personality trait
		every_prisoner = {
			limit = {
				is_adult = no
				number_of_personality_traits = childhood_personality_trait_gain_limit
				number_of_personality_traits < personality_trait_limit
			}
			random = {
				chance = childhood_fourth_personality_trait_chance
				trigger_event = {
					on_action = child_personality_gain
					days = { 1 360 }
				}
			}
		}
	}
}

court_maintenance.0005 = {
	hidden = yes

	trigger = {
		scope:new_employer = {
			government_has_flag = government_is_holy_order
		}
	}

	immediate = {
		add_trait = order_member
	}
}

#Absent from your court
court_maintenance.0010 = {
	theme = crown
	override_background = { reference = council_chamber }
	type = character_event
	title = court_maintenance.0010.t
	left_portrait = {
		character = scope:messenger
		animation = worry
	}

	cooldown = { years = 5 }

	trigger = {
		always = no # Disabled for now
		has_royal_court = yes
		has_dlc_feature = royal_court
		is_ai = no
		is_available_adult = yes
		is_at_war = no
	}

	desc = {	
		desc = court_maintenance.0010.desc
		first_valid = {
			triggered_desc = {
				trigger = {
					exists = scope:great_cgv_court
				}
				desc = court_maintenance.0010.desc.seeking_gainful_employment
			}
			desc = court_maintenance.0010.desc.general_ending
		}
	}

	immediate = {
		ordered_independent_ruler = {
			order_by = court_grandeur_current
			limit = {
				faith.religion = root.faith.religion
				in_diplomatic_range = root
				NOT = { this = root }
			}
			alternative_limit = {
				NOT = { this = root }
				in_diplomatic_range = root
			}
			alternative_limit = {
				NOT = { this = root }
			}
			save_scope_as = great_cgv_court
		}
		random_courtier = {
			limit = {
				has_any_court_position = yes
			}
			alternative_limit = {
				is_available_adult = yes
			}
			save_scope_as = messenger
		}
	}

	option = {
		name = court_maintenance.0010.a
		#Open Royal Court
		custom_tooltip = court_maintenance.0010.a.tooltip
		open_view_data = {
			view = royal_court
			player = root
		}
	}

	option = {
		name = {
			text = court_maintenance.0010.b.paranoid
			trigger = { has_trait = paranoid }
		}
		name = {
			text = court_maintenance.0010.b.depressed
			trigger = { has_trait = depressed }
		}
		name = {
			text = court_maintenance.0010.b.brave
			trigger = { has_trait = brave }
		}
		name = {
			text = court_maintenance.0010.b
			trigger = { always = yes }
		}
		change_current_court_grandeur = miniscule_court_grandeur_loss
		if = {
			limit = { exists = scope:great_cgv_court }
			custom_tooltip = court_maintenance.0010.b.tooltip
		}
		hidden_effect = {
			if = {
				limit = { exists = scope:great_cgv_court }
				random_courtier = {
					limit = {
						has_any_court_position = no
						is_physically_able_ai_adult = yes
						is_councillor = no
						NOT = { is_vassal_of = root }
						NOT = { is_close_family_of = ROOT }
					}
					set_employer = scope:great_cgv_court
					return_to_court = yes
				}
			}
		}
	}
}

#Gained a Royal Court
court_maintenance.0011 = {
	theme = new_royal_court
	type = character_event
	title = court_maintenance.0011.t
	desc = court_maintenance.0011.desc

	left_portrait = {
		character = scope:messenger
		animation = ecstasy
	}
	artifact = { # To display the dynasty banner in the event-window
	    target = scope:dynasty_banner
	    position = lower_center_portrait
	}
	artifact = { # To display the house banner in the event-window
	    target = scope:house_banner
	    position = lower_right_portrait
	}

	trigger = {
		is_ai = no
		has_dlc_feature = royal_court
		# To avoid farming and duplication
		OR = {
			# No owned house banner
			NOT = {
				any_character_artifact = {
					has_variable = banner_house
					var:banner_house = root.house
				}
			}
			AND = {
				# Is Dynasty Head
				OR = {
					this = dynasty.dynast # Dynasty Head
					any_parent = { # Parent landless
						employer = prev
						dynasty = prev.dynasty
						this = dynasty.dynast
					}
				}
				# Dynasty banner does not exist
				NOT = {
					any_character_artifact = {
						has_variable = banner_dynasty
						var:banner_dynasty = root.dynasty
					}
				}
			}
		}
	}

	immediate = {
		if = {
			limit = {
				exists = cp:councillor_chancellor
			}
			cp:councillor_chancellor = { save_scope_as = messenger }
		}
		else = {
			random_vassal = { save_scope_as = messenger }
		}
		#House banner
		if = {
			limit = {
				NOT = {
					any_character_artifact = {
						has_variable = banner_house
						var:banner_house = root.house
					}
					government_has_flag = government_is_theocracy
				}
			}
			set_variable = banner_from_house
			create_artifact_wall_banner_effect = {
				OWNER = root
				CREATOR = scope:messenger
				TARGET = root.house
			}
			if = { # For artifact portraits
				limit = { exists = scope:newly_created_artifact }
				scope:newly_created_artifact = { save_scope_as = house_banner }
			}
		}
		#Dynasty banner
		if = { 
			limit = {
				OR = {
					this = dynasty.dynast # Dynasty Head
					any_parent = { # Parent landless
						employer = root
						dynasty = root.dynasty
						this = dynasty.dynast
					}
				}
				NOT = {
					any_character_artifact = {
						has_variable = banner_dynasty
						var:banner_dynasty = root.dynasty
					}
				}
			}
			set_variable = banner_from_dynasty
			create_artifact_wall_banner_effect = {
				OWNER = root
				CREATOR = scope:messenger
				TARGET = root.dynasty
			}
			if = { # For artifact portraits
				limit = { exists = scope:newly_created_artifact }
				scope:newly_created_artifact = { save_scope_as = dynasty_banner }
			}
		}
		#Both
		if = {
			limit = {
				exists = scope:house_banner
				exists = scope:dynasty_banner
			}
			custom_tooltip = court_maintenance.0011.banner_tooltip
		}
		#House
		else_if = {
			limit = { exists = scope:house_banner }
			custom_tooltip = court_maintenance.0011.banner_house_tooltip
		}
		#Dynasty
		else = { custom_tooltip = court_maintenance.0011.banner_dynasty_tooltip }
	}

	option = {
		name = court_maintenance.0011.a
		#Open Royal Court
		custom_tooltip = court_maintenance.0011.a.tooltip
		open_view_data = {
			view = royal_court
			player = root
		}
	}
	option = {
		name = court_maintenance.0011.b
		custom_tooltip = court_maintenance.0011.b.tooltip
	}
}

#Dynasty Banner improves
scripted_trigger dynasty_banner_improve_rarity_trigger = {
	trigger_if = {
		limit = { root.dynasty.dynasty_prestige_level = max_dynasty_prestige_level }
		NOT = { rarity = illustrious }
	}
	trigger_else_if = {
		limit = { root.dynasty.dynasty_prestige_level >= high_dynasty_prestige_level }
		NOR = {
			rarity = famed
			rarity = illustrious
		}
	}
	trigger_else = {
		root.dynasty.dynasty_prestige_level >= medium_dynasty_prestige_level
		NOR = {
			rarity = masterwork
			rarity = famed
			rarity = illustrious
		}
	}
}

scripted_effect dynasty_banner_improve_rarity_effect = {
	if = {
		limit = { scope:target.dynasty_prestige_level = max_dynasty_prestige_level }
		set_artifact_rarity = illustrious
	}
	else_if = {
		limit = { scope:target.dynasty_prestige_level >= high_dynasty_prestige_level }
		set_artifact_rarity = famed
	}
	else = { set_artifact_rarity = masterwork }
	hidden_effect = {
		set_artifact_description = artifact_wall_banner_dynasty_description
		clear_artifact_modifiers = yes
		add_scaled_artifact_modifier_grandeur_small_effect = yes
		add_scaled_artifact_modifier_dynasty_prestige_effect = yes
		add_scaled_artifact_modifier_prestige_effect = yes
		add_scaled_artifact_modifier_rulership_effect = yes
	}
}

court_maintenance.0012 = {
	theme = new_royal_court
	type = character_event
	title = court_maintenance.0012.t
	desc = {
		desc = court_maintenance.0012.desc
		first_valid = {
			triggered_desc = {
				trigger = { scope:target.dynasty_prestige_level = max_dynasty_prestige_level }
				desc = court_maintenance.0012.desc_illustrious
			}
			triggered_desc = {
				trigger = { scope:target.dynasty_prestige_level >= high_dynasty_prestige_level }
				desc = court_maintenance.0012.desc_masterwork
			}
			desc = court_maintenance.0012.desc_famed
		}
	}
	left_portrait = {
		character = root
		animation = personality_honorable
	}
	artifact = { # To display the artifact in the event-window
	    target = scope:banner_scope
	    position = lower_right_portrait
	}

	trigger = {
		any_character_artifact = {
			trigger_if = { # To stop errors
				limit = { exists = var:banner_dynasty } # is a dynasty banner
				var:banner_dynasty = root.dynasty # of my dynasty
				dynasty_banner_improve_rarity_trigger = yes # and should be a higher level
			}
			trigger_else = { always = no }
		}
	}

	immediate = {
		dynasty = { save_scope_as = target } # for banner desc
		# save relevant banners (all just in case)
		every_character_artifact = {
			limit = {
				has_variable = banner_dynasty
				var:banner_dynasty = root.dynasty
				dynasty_banner_improve_rarity_trigger = yes
			}
			add_to_list = dynasty_banner_list
		}
		random_in_list = {
			list = dynasty_banner_list
			limit = { is_equipped = yes }
			alternative_limit = { always = yes }
			save_scope_as = banner_scope
			save_scope_as = newly_created_artifact
		}
		every_in_list = {
			list = dynasty_banner_list
			dynasty_banner_improve_rarity_effect = yes
		}
	}

	option = {
		name = court_maintenance.0012.a
	}
}

court_maintenance.0013 = {
	theme = new_royal_court
	type = character_event
	title = court_maintenance.0013.t
	desc = {
		desc = court_maintenance.0013.desc
		first_valid = {
			triggered_desc = {
				trigger = {
					exists = scope:banner_scope.var:banner_commissioner
					NOT = { scope:banner_scope.var:banner_commissioner = root }
				}
				desc = court_maintenance.0013.desc_creator
			}
			desc = court_maintenance.0013.desc_fallback
		}
	}
	left_portrait = {
		character = root
		animation = personality_honorable
	}
	artifact = { # To display the artifact in the event-window
	    target = scope:banner_scope
	    position = lower_right_portrait
	}

	trigger = {
		any_character_artifact = { # Has more than one dynasty banner of own dynasty
			count > 1
			trigger_if = { # To stop errors
				limit = { exists = var:banner_dynasty }
				var:banner_dynasty = root.dynasty
			}
			trigger_else = { always = no }
		}
	}

	immediate = {
		every_character_artifact = { # Fetch all dynasty banners
			limit = {
				has_variable = banner_dynasty
				var:banner_dynasty = root.dynasty
			}
			add_to_list = dynasty_banner_list
		}
		ordered_in_list = { # Save oldest dynasty banner
			list = dynasty_banner_list
			order_by = artifact_age
			save_scope_as = banner_scope
		}
		every_in_list = { # Destroy all but oldest dynasty banner
			list = dynasty_banner_list
			limit = {
				NOT = { this = scope:banner_scope }
			}
			destroy_artifact = this
		}
	}

	option = {
		name = court_maintenance.0013.a
		custom_tooltip = court_maintenance.0013.tt
		
	}
}
