namespace = court_events

##################################################
# # RANGES
#1000 - 1100 Jason Cantalini
# 
##################################################

#####################################
# The Very Grandest of All			#
# by Jason Cantalini				#
# 1000-1001							#
#####################################

# You reach #1 in global court grandeur
court_events.1000 = {
	type = court_event
	title = court_events.1000.t
	desc = court_events.1000.desc

	theme = court
	court_scene = {
		button_position_character = scope:guest
		roles = {
			scope:guest = {
				group = event_group
				animation = throne_room_bow_1
			}
			scope:guest_2 = {
				group = event_group
				animation = throne_room_curtsey_1
			}
			root = {
				group = event_group
				animation = war_over_win
			}
		}
	}

	cooldown = { years = 10 }

	trigger = {
		#just to acknowledge players
		is_ai = no
		is_available = yes
		#Is court grandeur at all good?
		has_royal_court = yes
		court_grandeur_current >= 30
		#Check your court grandeur is at least 10 higher than everyone else's
		NOT = {
			any_character_with_royal_court = {
				court_grandeur_current > root.court_grandeur_current_minus_ten_value
				this != root
			 }
		}
	}

	immediate = {
		#get our first fawning traveler
		#grab a guest with traveler or pilgrim trait
		if = {
			limit = {
				any_pool_guest = {
					is_available_ai_adult = yes
					age >= 25
					has_court_event_flag = no
					OR = {
						has_trait = lifestyle_traveler
						has_trait = pilgrim
					}
				}
			}
			random_pool_guest = {
				limit = {
					is_available_ai_adult = yes
					age >= 25
					has_court_event_flag = no
					OR = {
						has_trait = lifestyle_traveler
						has_trait = pilgrim
					}
				}
				save_scope_as = guest
			}
		}
		#grab any pool character
		else_if = {
			limit = {
				any_pool_character = {
					province = root.capital_province
					age >= 25
					is_available_ai_adult = yes
					has_court_event_flag = no
					OR = {
						has_trait = lifestyle_traveler
						has_trait = pilgrim
					}
				}
			}
			random_pool_character = {
				province = root.capital_province
				limit = {
					age >= 25
					is_available_ai_adult = yes
					has_court_event_flag = no
					OR = {
						has_trait = lifestyle_traveler
						has_trait = pilgrim
					}
				}
				save_scope_as = guest
			}
		}
		#create character
		else = {
			#will use to grab interesting cultures for travellers
			save_traveler_culture_effect = yes
			create_character = {
				template = traveler_character
				location = root.capital_province
				random_culture = {
					scope:traveler_culture = {
						trigger = {
							exists = scope:traveler_culture
						}
					}
				}
				gender_female_chance = root_faith_dominant_gender_adjusted_female_chance
				save_scope_as = guest
			}
			scope:guest = { add_character_flag = created_character }
		}
		#get our second fawning traveler
		#grab a guest with traveler or pilgrim trait
		if = {
			limit = {
				any_pool_guest = {
					is_available_ai_adult = yes
					age >= 25
					has_court_event_flag = no
					OR = {
						has_trait = lifestyle_traveler
						has_trait = pilgrim
					}
					this != scope:guest
				}
			}
			random_pool_guest = {
				limit = {
					is_available_ai_adult = yes
					age >= 25
					has_court_event_flag = no
					OR = {
						has_trait = lifestyle_traveler
						has_trait = pilgrim
					}
					this != scope:guest
				}
				save_scope_as = guest_2
			}
		}
		#grab any pool character
		else_if = {
			limit = {
				any_pool_character = {
					province = root.capital_province
					age >= 25
					is_available_ai_adult = yes
					has_court_event_flag = no
					OR = {
						has_trait = lifestyle_traveler
						has_trait = pilgrim
					}
					this != scope:guest
				}
			}
			random_pool_character = {
				province = root.capital_province
				limit = {
					age >= 25
					is_available_ai_adult = yes
					has_court_event_flag = no
					OR = {
						has_trait = lifestyle_traveler
						has_trait = pilgrim
					}
					this != scope:guest
				}
				save_scope_as = guest_2
			}
		}
		#create character
		else = {
			create_character = {
				template = traveler_character
				location = root.capital_province
				random_culture = {
					scope:traveler_culture_2 = {
						trigger = {
							exists = scope:traveler_culture_2
						}
					}
				}
				gender_female_chance = root_faith_dominant_gender_adjusted_female_chance
				save_scope_as = guest_2
			}
			scope:guest_2 = { add_character_flag = created_character }
		}
		#grab your high almoner if you have one
		court_position:high_almoner_court_position ?= { save_scope_as = high_almoner }
		hidden_effect = {
			if = {
				limit = {
					scope:guest = {
						NOR = {
							has_relation_rival = scope:guest_2
							has_relation_nemesis = scope:guest_2
							has_character_flag = created_character
						}
					}
					scope:guest_2 = {
						NOT = {
							has_character_flag = created_character
						}
					}
				}
				scope:guest = {
					set_relation_friend = {
						reason = friend_random_fallback
						target = scope:guest_2
					}
				}
			}
			else = {
				scope:guest = {
					set_relation_best_friend = {
						reason = friend_random_fallback
						target = scope:guest_2
					}
				}
			}
			if = {
				limit = {
					scope:guest = { has_character_flag = created_character }
					scope:guest.culture = {
						exists = culture_head
						culture_head.faith != scope:guest.faith
					}
				}
				scope:guest = { set_character_faith = culture.culture_head.faith }
			}
			if = {
				limit = {
					scope:guest_2 = { has_character_flag = created_character }
					scope:guest_2.culture = {
						exists = culture_head
						culture_head.faith != scope:guest_2.faith
					}
				}
				scope:guest_2 = { set_character_faith = culture.culture_head.faith }
			}
			if = {
				limit = {
					NOT = {
						scope:guest = {
							knows_language_of_culture = scope:guest_2.culture
						}
					}
					scope:guest = { has_character_flag = created_character }
				}
				scope:guest = { learn_language_of_culture = scope:guest_2.culture }
			}
			if = {
				limit = {
					NOT = {
						scope:guest_2 = {
							knows_language_of_culture = scope:guest.culture
						}
					}
					scope:guest_2 = { has_character_flag = created_character }
				}
				scope:guest_2 = { learn_language_of_culture = scope:guest.culture }
			}
			if = {
				limit = {
					scope:guest = { has_character_flag = created_character }
				}
				scope:guest = {
					add_opinion = {
						target = root
						modifier = reputation_opinion
						opinion = 25
					}
				}
			}
			if = {
				limit = {
					scope:guest_2 = { has_character_flag = created_character }
				}
				scope:guest_2 = {
					add_opinion = {
						target = root
						modifier = reputation_opinion
						opinion = 25
					}
				}
			}
		}
		#get second place ruler so we can dunk on them in loc
		random_character_with_royal_court = {
			limit = {
				NOR = {
					any_character_with_royal_court = {
						count >= 2
						court_grandeur_current > prev.court_grandeur_current
					}
					this = root
				}
			}
			save_scope_as = second_court
		}
	}

	# Option A: self-effacingly use your high almoner to prove you are both grand and humble
	option = { 
		name = court_events.1000.a
		flavor = court_events.1000.a.flavor
		trigger = {
			exists = scope:high_almoner
			scope:high_almoner = {
				aptitude = {
					court_position = high_almoner_court_position
					value >= 2
				}
			}
		}
		reason = high_almoner
		add_piety = medium_piety_gain
		capital_county = {
			change_development_level = 1
		}
		remove_short_term_gold = medium_gold_value
		stress_impact = {
			generous = miniscule_stress_impact_loss
			arrogant = major_stress_impact_gain
			greedy = major_stress_impact_gain
			ambitious = minor_stress_impact_gain
			callous = medium_stress_impact_gain
			sadistic = medium_stress_impact_gain
			arbitrary = minor_stress_impact_gain
		}
		ai_chance = {
			base = 1
		}
	}

	#Option B: I'm the greatest of kings, yes. Remain here and tell everyone
	option = { 
		name = court_events.1000.b
		flavor = court_events.1000.b.flavor
		change_current_court_grandeur = 5
		add_courtier = scope:guest
		add_courtier = scope:guest_2
		
		random_list = {
			10 = {
				give_nickname = nick_the_glorious
			}
			10 = {
				give_nickname = nick_the_magnificent
			}
			10 = {
				give_nickname = nick_the_gracious
			}
			10 = {
				give_nickname = nick_the_stupor_mundi
			}
			20 = {}
		}
		
		
		custom_tooltip = traveling_friends_court_position_aptitude
		
		scope:guest = {
			add_character_flag = travelling_friend
		}
		scope:guest_2 = {
			add_character_flag = travelling_friend
		}
		stress_impact = {
			arrogant = minor_stress_impact_loss
			ambitious = miniscule_stress_impact_loss
			paranoid = minor_stress_impact_gain
			humble = minor_stress_impact_gain
			temperate = minor_stress_impact_gain
		}
		ai_chance = {
			base = 1
		}
	}

	#Option C: Let all speak of my grandness! Go, spread my legend!
	option = { 
		name = court_events.1000.c
		custom_tooltip = visiting_gives_opinion
		add_legitimacy = minor_legitimacy_gain
		change_current_court_grandeur = 5
		scope:guest = {
			add_character_flag = spreading_word_of_grandeur
			set_variable = {
				name = greatest_court_holder
				value = root
			}
		}
		scope:guest_2 = {
			add_character_flag = spreading_word_of_grandeur
			set_variable = {
				name = greatest_court_holder
				value = root
			}
		}
		stress_impact = {
			arrogant = minor_stress_impact_loss
			ambitious = miniscule_stress_impact_loss
			humble = minor_stress_impact_gain
			temperate = minor_stress_impact_gain
		}
		ai_chance = {
			base = 1
		}
	}

	
	after = {
		scope:guest = {
			clear_court_event_participation = yes
			remove_character_flag ?= created_character
		}
		scope:guest_2 = {
			clear_court_event_participation = yes
			remove_character_flag ?= created_character
		}
	}
}

#ruler hosting travellers gains opinion of #1 grand emperor
court_events.1001 = {
	hidden = yes
	trigger = {
		scope:guest = {
			has_character_flag = spreading_word_of_grandeur
			var:greatest_court_holder = {
				is_alive = yes
				has_royal_court = yes
			}
		}
	}
	immediate = {
		scope:guest = {
			var:greatest_court_holder = {
				reverse_add_opinion = {
					modifier = reputation_opinion
					target = host
					opinion = 20
				}
			}
		}
	}
}

scripted_trigger court_events_1010_players_nobody_trigger = {
	is_healthy = yes
	is_available_ai_adult = yes
	NOR = {
		is_close_family_of = liege
		has_relation_lover = liege
		has_relation_soulmate = liege
		has_relation_friend = liege
		has_relation_best_friend = liege
		has_relation_guardian = liege
		has_relation_bully = liege
		has_relation_victim = liege
		is_consort_of = root
		is_hostage_of = root
		has_trait = loyal
		ep3_story_cycle_admin_eunuch_involved_character = yes
	}
	ai_honor <= low_positive_ai_value
	has_any_court_position = no
	is_councillor = no
	is_acclaimed = no
	opinion = {
		target = liege
		value <= -30
	}
}
scripted_trigger court_events_1010_ais_courtier_trigger = {
	is_healthy = yes
	is_available_ai_adult = yes
	NOR = {
		is_heir_of = liege
		has_relation_lover = liege
		has_relation_soulmate = liege
		has_relation_friend = liege
		has_relation_best_friend = liege
		has_relation_guardian = liege
		has_relation_bully = liege
		has_relation_victim = liege
		is_consort_of = root
		is_hostage_of = root
		has_trait = loyal
		ep3_story_cycle_admin_eunuch_involved_character = yes
	}
	ai_honor <= low_positive_ai_value
	is_acclaimed = no
	opinion = {
		target = liege
		value <= -20
	}
}

#####################################
# Maybe I should steal servants?	#
# by Jason Cantalini				#
# 01010								#
#####################################

# You meet with some disgruntled functionaries who work for a great ruler
court_events.1010 = {
	type = court_event
	title = court_events.1010.t
	desc = court_events.1010.desc

	theme = court
	court_scene = {
		button_position_character = scope:defector
		roles = {
			scope:defector = {
				group = event_group
				animation = obsequious_bow
			}
			root = {
				group = event_group
				triggered_animation = {
					trigger = { OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } }
					animation = acknowledging # anim uses crucifix scepter
				}
				animation = war_over_tie
			}
		}
	}
	lower_right_portrait = scope:grander_ruler
	lower_left_portrait = scope:court_chaplain

	cooldown = { years = 10 }

	trigger = {
		
		has_royal_court = yes
		#Is court grandeur at all good?
		court_grandeur_current >= 10
		is_available = yes
		#Check someone's court grandeur is at least 10 higher than yours
		any_character_with_royal_court = {
			court_grandeur_current >= root.court_grandeur_current_plus_ten_value
			this != root
			in_diplomatic_range = root
			NOR = {
				is_at_war_with = root
				has_character_flag = had_court_events_1000
			}
			#Get a shitty character from a player or good one from ai
			OR = {
				AND = {
					is_ai = no
					any_courtier = {
						court_events_1010_players_nobody_trigger = yes
					}
				}
				AND = {
					is_ai = yes
					any_courtier = {
						court_events_1010_ais_courtier_trigger = yes
					}
				}
			}
		}
		exists = cp:councillor_court_chaplain
	}

	weight_multiplier = {
		base = 1
		modifier = {
			factor = 0.33
			#It will be annoying if AI steal lots of courtiers
			#And foreigners being thrown around might look weird
			is_ai = yes
		}
	}

	immediate = {
		#Save the court owner being targeted
		random_character_with_royal_court = {
			limit = {
				court_grandeur_current >= root.court_grandeur_current_plus_ten_value
				this != root
				in_diplomatic_range = root
				NOR = {
					is_at_war_with = root
					has_character_flag = had_court_events_1000
				}
				#Get a shitty character from a player or good one from ai
				OR = {
					AND = {
						is_ai = no
						any_courtier = {
							court_events_1010_players_nobody_trigger = yes
						}
					}
					AND = {
						is_ai = yes
						any_courtier = {
							court_events_1010_ais_courtier_trigger = yes
						}
					}
				}
			}
			save_scope_as = grander_ruler
		}
		scope:grander_ruler = {
			if = {
				limit = {
					is_ai = no
					any_courtier = {
						court_events_1010_players_nobody_trigger = yes
						opinion = {
							target = scope:grander_ruler
							value <= -75
						}
					}
				}
				random_courtier = {
					limit = {
						court_events_1010_players_nobody_trigger = yes
						opinion = {
							target = scope:grander_ruler
							value <= -75
						}
					}
					save_scope_as = defector
				}
			}
			else_if = {
				limit = {
					is_ai = yes
					any_courtier = {
						court_events_1010_ais_courtier_trigger = yes
					}
					opinion = {
						target = scope:grander_ruler
						value <= -75
					}
				}
				random_courtier = {
					limit = {
						court_events_1010_ais_courtier_trigger = yes
						opinion = {
							target = scope:grander_ruler
							value <= -75
						}
					}
					save_scope_as = defector
				}
			}
			else_if = {
				limit = {
					is_ai = no
				}
				random_courtier = {
					limit = {
						court_events_1010_players_nobody_trigger = yes
					}
					save_scope_as = defector
				}
			}
			else = {
				random_courtier = {
					limit = {
						court_events_1010_ais_courtier_trigger = yes
					}
					save_scope_as = defector
				}
			}
		}
		#This will be a relevant fella
		cp:councillor_court_chaplain = {
			save_scope_as = court_chaplain
		}

		#grab your antiquarian if you have one
		court_position:antiquarian_court_position ?= { save_scope_as = antiquarian }
		save_scope_as = root_scope
		#Save artifact to potentially steal
		if = {
			limit = {
				scope:grander_ruler = {
					any_character_artifact = {
						ep1_artifact_is_court_artifact_trigger = yes
						artifact_can_be_gift_advance_trigger = yes
					}
				}
			}
			scope:grander_ruler = {
				random_character_artifact = {
					limit = {
						ep1_artifact_is_court_artifact_trigger = yes
						artifact_can_be_gift_advance_trigger = yes
					}
					save_scope_as = coveted_artifact
				}
			}
		}
		scope:grander_ruler = {
			add_character_flag = {
				flag = had_court_events_1000
				years = 5
			}
		}
	}

	# Option A: just courtiers? What about stealing a fine artifact too...?
	option = { 
		name = court_events.1010.a
		flavor = court_events.1010.a.flavor
		trigger = {
			exists = scope:antiquarian
			exists = scope:coveted_artifact
			scope:antiquarian = {
				aptitude = {
					court_position = antiquarian_court_position
					value >= 3
				}
			}
			scope:grander_ruler = { is_ai = yes }
		}
		reason = antiquarian
		scope:defector = {
			duel = {
				skill = intrigue
				target = scope:grander_ruler
				70 = { # Your new courtier steals the artifact
					desc = court_events.1010.a.success
					compare_modifier = {
						value = scope:duel_value
						multiplier = 3.5
						min = -69
					}
					root = {
						send_interface_toast = {
							type = event_toast_effect_good
							title = court_events.1010.a.success
							left_icon = scope:defector
							right_icon = scope:grander_ruler
							scope:coveted_artifact = {
								set_owner = {
									target = root
									history = {
										location = root.capital_province
										actor = scope:grander_ruler
										recipient = root
										type = stolen
									}
								}
							}
							set_relation_rival = {
								target = scope:grander_ruler
								reason = rival_stole_artifact
							}
							change_current_court_grandeur = 25
							scope:grander_ruler = { change_current_court_grandeur = -15 }
							add_courtier = scope:defector
						}
					}
				}
				30 = { # The fella frigs up
					desc = court_events.1010.a.failure
					compare_modifier = {
						value = scope:duel_value
						multiplier = -3.5
						min = -29
					}
					root = {
						send_interface_toast = {
							type = event_toast_effect_bad
							title = court_events.1010.a.failure
							left_icon = scope:defector
							right_icon = scope:grander_ruler
							
							scope:defector = {
								death = {
									death_reason = death_execution
									killer = scope:grander_ruler
								}
							}
						}
					}
				}
			}
		}
		add_prestige = medium_prestige_loss
		stress_impact = {
			greedy = minor_stress_impact_loss
			eccentric = miniscule_stress_impact_loss
			arbitrary = minor_stress_impact_loss
			honest = major_stress_impact_gain
			just = major_stress_impact_gain
			generous = medium_stress_impact_gain
			compassionate = minor_stress_impact_gain
			content = minor_stress_impact_gain
			trusting = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_greed = 1
				ai_honor = -1
			}
			modifier = {
				add = -75
				OR = {
					has_trait = compassionate
					has_trait = content
					has_trait = trusting
				}
			}
			modifier = {
				factor = 0
				OR = {
					prestige <= major_prestige_value
					has_trait = honest
					has_trait = just
					has_trait = generous
				}
			}
		}
	}

	#Option B: Come. Serve with honor here
	option = { 
		name = court_events.1010.b
		
		
		if = {
			limit = {
				scope:grander_ruler = { is_ai = no }
			}
			show_as_tooltip = {
				change_current_court_grandeur = 20
				scope:grander_ruler = { change_current_court_grandeur = -10 }
				add_courtier = scope:defector
			}
			
			scope:grander_ruler = {
				trigger_event = court_events.1011
			}
		}
		else = {
			change_current_court_grandeur = 20
			scope:grander_ruler = { change_current_court_grandeur = -10 }
			add_courtier = scope:defector
		}
		reverse_add_opinion = {
			target = scope:defector
			modifier = loyalty_opinion
			opinion = 20
		}
		add_prestige = major_prestige_loss
		

		stress_impact = {
			trusting = miniscule_stress_impact_loss
			honest = medium_stress_impact_gain
			just = medium_stress_impact_gain
			paranoid = medium_stress_impact_gain
			content = minor_stress_impact_gain
			humble = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_energy = 1
				ai_honor = -1
			}
			modifier = {
				add = -75
				OR = {
					has_trait = humble
					has_trait = content
				}
			}
			modifier = {
				factor = 0
				OR = {
					prestige <= major_prestige_value
					has_trait = honest
					has_trait = just
					has_trait = paranoid
				}
			}
		}
	}

	#If I need functionaries, why not some priests?
	option = { 
		name = court_events.1010.c
		flavor = court_events.1010.c.flavor
		
		change_current_court_grandeur = 10
		scope:court_chaplain = {
			add_learning_skill = 2
			add_opinion = {
				modifier = pleased_opinion
				target = root
				opinion = 20
			}
		}
		add_piety = medium_piety_loss

		stress_impact = {
			cynical = major_stress_impact_gain
			arrogant = minor_stress_impact_gain
			gregarious = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_zeal = 1
				ai_rationality = 0.5
			}
			modifier = {
				add = -75
				OR = {
					has_trait = arrogant
					has_trait = gregarious
				}
			}
			modifier = {
				factor = 0
				OR = {
					piety <= medium_piety_value
					has_trait = cynical
				}
			}
		}
	}
	#Disloyal people? Go serve, and feel shame
	option = { 
		name = court_events.1010.d
		
		every_vassal = {
			vassal_stance = parochial
			custom = every_parochial_vassal
			add_opinion = {
				modifier = respect_opinion
				opinion = 10
				target = root
			}
		}
		reverse_add_opinion = {
			modifier = grateful_opinion
			target = scope:grander_ruler
			opinion = 20
		}
		
		add_prestige = minor_prestige_gain

		stress_impact = {
			arbitrary = minor_stress_impact_gain
			deceitful = medium_stress_impact_gain
			ambitious = medium_stress_impact_gain
			generous = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_sociability = -1
				ai_honor = 1
			}
			modifier = {
				add = -75
				OR = {
					has_trait = arbitrary
					has_trait = generous
				}
			}
			modifier = {
				factor = 0
				OR = {
					has_trait = ambitious
					has_trait = deceitful
				}
			}
		}
	}
}

court_events.1011 = {
	type = letter_event
	opening = {
		desc = court_events.1011.opening
	}
	desc = court_events.1011.desc
	sender = scope:defector

	immediate = {
		change_current_court_grandeur = -10
		scope:root_scope = {
			change_current_court_grandeur = 20
			add_courtier = scope:defector
		}
	}

	option = {
		name = court_events.1011.a
	}
}
