﻿invite_to_court_interaction = {
	category = interaction_category_vassal
	icon = guest

	desc = invite_to_court_interaction_desc

	is_shown = {
		scope:recipient = {
			NOR = {
				is_courtier_of = scope:actor
				is_foreign_court_guest = yes
				host ?= scope:actor
				has_trait = order_member
				is_ruler = yes
				location = { is_sea_province = yes }
			}
		}
	}

	is_valid_showing_failures_only = {
		custom_tooltip = {
			scope:recipient = {
				OR = {
					NOT = { exists = liege }
					NOT = { has_variable = invite_to_court_cooldown }
				}
			}
			text = INVITE_TO_COURT_COOLDOWN
		}
		can_recruit_character_to_court_trigger = {
			RECRUITER = scope:actor
			RECRUITEE = scope:recipient
		}
		custom_tooltip = {
			scope:recipient = {
 				NAND = {
 					has_variable = nomad_defector_var
 					var:nomad_defector_var = {
 						this = scope:actor
 					}
 				}
 			}
 			text = nomad_defected_invite_desc
 		}
	}

	#Pay som gold to persuade a wandering character to come to your court
	send_option = {
		is_shown = {
			exists = scope:recipient
		}
		flag = cover_travel_expenses
		localization = COVER_TRAVEL_EXPENSES
	}
	send_option = { # EP3 Influence
		is_shown = { # Actor must have a government that uses influence
			scope:actor = {
				government_has_flag = government_has_influence
			}
		}
		is_valid = {
			# Actor has enough influence
			scope:actor = { influence >= medium_influence_value }
			# Both characters are within the same top realm
			scope:recipient.top_liege = scope:actor.top_liege
		}
		flag = influence_send_option
		localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE
	}
	# SAS Change
	send_option = { # Offer Ennoblement
		is_shown = {
			OR = {
				has_game_rule = sas_all_modified_perks
				has_game_rule = spy_and_interactions
			}
			scope:actor = {
				is_landed = yes
				has_perk = accomplished_forger_perk
			}
		}
		is_valid = {
			# Actor has enough gold and prestige
			scope:actor = {
				gold >= medium_gold_value
				prestige >= medium_prestige_value
			}
			
			# Haven't recently ennobled anyone
			custom_description = {
				text = recently_ennobled
				scope:actor = {
					NOT = { exists = var:recently_ennobled }
				}
			}
			scope:recipient = {
				is_lowborn = yes
				NOT = { has_trait = devoted }
				NOT = { has_trait = order_member }
				NOT = { #Not your bishop
					scope:actor = {
						cp:councillor_court_chaplain = scope:recipient
					}
				}
				#Do they have the "wrong" marriage type?
				NOR = {
					custom_description = {
						text = is_married_matrilineally
						subject = scope:recipient
						any_spouse = {
							is_female = yes
							matrilinear_marriage = yes
						}
					}
					custom_description = {
						text = is_married_patrilineally
						subject = scope:recipient
						any_spouse = {
							is_male = yes
							patrilinear_marriage = yes
						}
					}
					custom_description = {
						text = matrilinear_betrothal
						subject = scope:recipient
						betrothed ?= {
							is_female = yes
							matrilinear_betrothal = yes
						}
					}
					custom_description = {
						text = patrilinear_betrothal
						subject = scope:recipient
						betrothed ?= {
							is_male = yes
							patrilinear_betrothal = yes
						}
					}
				}
			}
		}
		flag = offer_ennoblement
		localization = OFFER_ENNOBLEMENT
	}
	# SAS Change End
	send_option = {
		is_valid = {
			scope:actor = {
				has_usable_hook = scope:recipient
			}
		}
		flag = hook
		localization = SCHEME_HOOK
	}
	should_use_extra_icon = {
		scope:actor = { has_usable_hook = scope:recipient }
	}
	extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"

	send_options_exclusive = no

	cost = {
		influence = {
			value = 0
			if = {
				limit = { scope:influence_send_option = yes }
				add = scope:actor.medium_influence_value
				desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION
			}
		}
	}

	on_accept = {
		hidden_effect = {
			scope:recipient = {
				set_variable = {
					name = invite_to_court_cooldown
					years = 5
				}
			}

			if = {
				limit = {
					exists = scope:recipient.liege
				}
				scope:recipient.liege = {
					send_interface_message = {
						type = event_generic_neutral
						title = msg_courtier_left_court_interaction_title

						right_icon = scope:recipient

						show_as_tooltip = {
							remove_courtier_or_guest = scope:recipient
						}
					}
				}
			}
		}

		scope:actor = {
			send_interface_message = {
				type = event_generic_neutral
				title = invite_to_court_interaction_notification
				right_icon = scope:recipient

				scope:recipient = {
					every_traveling_family_member = {
						scope:actor = { add_courtier = prev }
						hidden_effect = {
							return_to_court = yes
						}
					}
				}

				if = {
					limit = { always = scope:hook }
					scope:actor = {
						use_hook = scope:recipient
					}
				}
			}
		}


		if = {
			limit = { always = scope:cover_travel_expenses }
			scope:actor = {
				pay_short_term_gold = {
					gold = {
						value = bribe_value
						multiply = 0.5
					}
					target = scope:recipient
				}
				stress_impact = {
					greedy = minor_stress_impact_gain
				}
			}
		}
		# SAS Change
		if = {
			limit = { 
				always = scope:offer_ennoblement
				OR = {
					has_game_rule = sas_all_modified_perks
					has_game_rule = spy_and_interactions
				}
			}
			scope:actor = {
				remove_short_term_gold = medium_gold_value
				add_prestige = medium_prestige_loss
				hidden_effect = {
					set_variable = {
						name = recently_ennobled
						years = 5
					}
				}
				scope:actor = {
					if = {
						limit = {
							scope:recipient.ai_honor >= 75
							can_add_hook = {
								target = scope:recipient
								type = loyalty_hook
							}
						}
						add_hook = {
							type = loyalty_hook
							target = scope:recipient
						}
					}
					else_if = {
						limit = {
							can_add_hook = {
								target = scope:recipient
								type = favor_hook
							}
						}
						add_hook = {
							type = favor_hook
							target = scope:recipient
						}
					}
				}
			}
			scope:recipient = {
				custom_tooltip = sas_ennoblement_tt
				add_opinion = {
					target = scope:actor
					opinion = 50
					modifier = sas_ennoblement_opinion
				}
				create_character_memory = {
					type = sas_ennoblement_memory
				}
				if = {
					limit = {
						NOT = {
							has_trait = loyal
						}
					}
					add_trait = loyal
				}
				if = {
					limit = {
						has_trait = disloyal
					}
					remove_trait = disloyal
				}
			}
			hidden_effect = {
				scope:recipient = {
					create_dynamic_title = {
						tier = duchy
						name = sas_ennoblement_title_name
					}
					create_title_and_vassal_change = {
						type = created
						save_scope_as = change
						add_claim_on_loss = no
					}
					scope:new_title = {
						set_capital_county = scope:actor.capital_county
						set_landless_title = yes
						set_destroy_on_gain_same_tier = yes
						set_no_automatic_claims = yes
						set_can_be_named_after_dynasty = no
						change_title_holder = {
							holder = prev
							change = scope:change
						}
					}
					resolve_title_and_vassal_change = scope:change
					scope:new_title = {
						generate_coa = yes
					}
					destroy_title = scope:new_title
					every_traveling_family_member = {
						scope:actor = { add_courtier = prev }
						hidden_effect = {
							return_to_court = yes
						}
					}
				}
			}
		}
		# SAS Change End
	}

	ai_accept = {
 		base = -50

 		#Opinions
 		opinion_modifier = {
 			trigger = {
 				exists = liege
 				is_courtier_of = liege
 			}
 			opinion_target = liege
 			multiplier = -0.5
 			step = 5
 			max = 25
 		}
 		opinion_modifier = {
 			opinion_target = scope:actor
 			multiplier = 0.5
 			step = 5
 			max = 25
 		}

		# SAS Change
		# Ennoblement offer
		modifier = {
			add = 200
			scope:offer_ennoblement = yes
			desc = AI_OFFER_ENNOBLEMENT
		}
		# SAS Change End

		# Stooge modifier
		modifier = {
 			scope:recipient = { has_variable = non_recruitable_var }
			scope:recipient.var:non_recruitable_var = scope:actor
 			add = -200
 			desc = AI_STOOGE
 		}

 		#Current roles
 		modifier = {
 			is_knight = yes
 			add = -20
 			desc = AI_MY_LIEGES_KNIGHT
 		}
 		modifier = {
 			is_commanding_army = yes
 			add = -30
 			desc = AI_MY_LIEGES_COMMANDER
 		}
 		modifier = {
 			is_councillor = yes
 			add = -40
 			desc = AI_ON_THE_COUNCIL
 		}

		modifier = {
			trigger = { scope:recipient = { has_court_position = court_physician_court_position } }
 			add = -20
 			desc = AI_COURT_PHYSICIAN
 		}

 		#Relations & relatives (with actor)
 		modifier = {
 			has_relation_lover = scope:actor
 			add = 100
 			desc = AI_YOUR_LOVER
 		}

 		modifier = {
 			has_relation_friend = scope:actor
 			add = 75
 			desc = AI_YOUR_FRIEND
 		}

 		modifier = {
 			is_child_of = scope:actor
 			add = 160
 			desc = AI_YOUR_CHILD
 		}

 		modifier = {
 			this.dynasty.dynast = scope:actor
 			add = 30
 			desc = AI_YOU_ARE_THE_DYNAST
 		}

 		modifier = {
 			this.house.house_head = scope:actor
 			add = 60
 			desc = AI_YOU_ARE_THE_HOUSE_HEAD
 		}

		modifier = {
 			this.top_liege = scope:actor
 			add = 60
 			desc = AI_YOU_ARE_THE_SOVEREIGN
 		}

		modifier = {
 			NOT = { is_child_of = scope:actor }
 			NOT = { is_close_family_of = scope:actor }
			is_extended_family_of = scope:actor
 			add = 30
 			desc = AI_YOUR_RELATIVE
 		}

 		modifier = {
 			NOT = { is_child_of = scope:actor }
 			is_close_family_of = scope:actor
 			add = 75
 			desc = AI_YOUR_RELATIVE
 		}

 		modifier = {
 			is_spouse_of = scope:actor
 			add = 160
 			desc = AI_YOUR_SPOUSE
 		}

 		#Relations & relatives (with host)
 		modifier = {
 			exists = liege
 			has_relation_lover = liege
 			add = -100
 			desc = AI_THEIR_LOVER
 		}

 		modifier = {
 			exists = liege
 			has_relation_friend = liege
 			add = -75
 			desc = AI_THEIR_FRIEND
 		}

 		modifier = {
 			exists = liege
 			is_child_of = liege
 			add = -160
 			desc = AI_THEIR_CHILD
 		}

 		modifier = {
 			exists = liege
 			NOT = { is_child_of = liege }
 			is_close_family_of = liege
 			add = -75
 			desc = AI_THEIR_RELATIVE
 		}

 		#Family (at location)
 		modifier = {
 			exists = location
 			any_consort_not_in_traveling_family_trigger = yes
 			desc = AI_LEAVING_MY_SPOUSE
 			add = -100
 		}

 		modifier = {
 			exists = location
 			any_child_not_in_traveling_family_trigger = yes
 			desc = AI_LEAVING_MY_CHILD
 			add = -100
 		}

 		modifier = {
 			add = -50
 			desc = AI_MARRIED_MATRILINIALLY
 			is_married = yes
 			is_male = yes
 			any_spouse = {
 				matrilinear_marriage = yes
 				host = scope:recipient.host
 			}
 		}

 		modifier = {
 			add = -50
 			desc = AI_MARRIED_PATRILINIALLY
 			is_married = yes
 			is_female = yes
 			any_spouse = {
 				patrilinear_marriage = yes
 				host = scope:recipient.host
 			}
 		}

 		modifier = {
 			add = -50
 			desc = AI_INSPIRED
 			inspiration ?= {
				NOT = {
					exists = inspiration_sponsor
				}
			}
 		}

 		modifier = {
 			add = -500
 			desc = AI_SPONSORED_INSPIRATION
 			inspiration ?= {
				exists = inspiration_sponsor
			}
 		}

 		modifier = {
 			add = -500
 			desc = AI_WANDERLUST
			is_child_of = scope:actor
 			has_character_modifier = lust_for_adventure
 		}

 		modifier = {
 			add = -180
 			desc = ELUDING_CASTRATOR
 			is_adult = no
 			any_memory = {
				memory_type = family_castration_fled_memory
				memory_participant:castrator ?= {
					this = scope:actor
				}
			}
 		}

 		modifier = {
 			liege ?= { is_landed = yes }
 			scope:actor = { is_landed = no }
 			add = -50
 			desc = AI_MY_LIEGE_IS_LANDED
 		}

		#Wandering characters (who aren't doing anything else)
		modifier = {
 			add = {
				value = 10
				add = scope:actor.diplomacy

				if = {
					limit = {
						faith = scope:actor.faith
					}
					add = 10
				}
				else_if = {
					limit = {
						faith = { #Same religion - But faith should not be considered Hostile or Evil
							religion = scope:actor.faith.religion
							faith_hostility_level = {
								target = scope:actor.faith
								value < 2
							}
						}
					}
					add = 5
				}
				if = {
					limit = {
						culture = scope:actor.culture
					}
					add = 10
				}
				else_if = {
					limit = {
						culture = {
							has_same_culture_heritage = scope:actor.culture
						}
					}
					add = 5
				}
				if = {
					limit = {
						OR = {
							has_trait = content
							has_trait = lazy
							has_trait = trusting
						}
					}
					add = 10
				}
			}
 			desc = AI_CAN_BE_PERSUADED_TO_STAY

			is_pool_guest = no
			location.province_owner ?= {
				OR = {
					any_liege_or_above = { this = scope:actor }
					this = scope:actor
				}
			}
			NOR = {
				has_relation_rival = scope:actor
				exists = liege
				is_child_of = scope:actor
				has_character_modifier = lust_for_adventure
			}
 		}

		modifier = {
			add = {
				value = 20
				if = {
					limit = {
						has_trait = greedy
					}
					multiply = 1.5
				}
				else_if = {
					limit = {
						has_trait = generous
					}
					multiply = 0.5
				}
			}
			scope:cover_travel_expenses = yes
			desc = AI_TRAVEL_EXPENSES
		}

 		# Amenities impact
 		## Actor's amenities increases acceptance
 		modifier = {
 			add = {
 				value = 10
 				if = {
 					limit = {
 						scope:actor = {
			 				has_royal_court = yes
							has_dlc_feature = royal_court
			 				amenity_level = { target = court_lodging_standards value >=  high_amenity_level }
			 			}
 					}
 			 		add = 10
 				}
 				if = {
 					limit = {
 						scope:actor = {
			 				amenity_level = { target = court_lodging_standards value >=  very_high_amenity_level }
			 			}
 					}
 			 		add = 10
 				}
 				if = {
 					limit = {
 						scope:actor = {
			 				amenity_level = { target = court_lodging_standards value >=  max_amenity_level }
			 			}
 					}
 			 		add = 20
 				}
 			}
 			desc = AI_COURT_LODGING_STANDARDS_QUALITY
			scope:actor = {
			 	has_royal_court = yes
				has_dlc_feature = royal_court
				amenity_level = { target = court_lodging_standards value >=  medium_amenity_level }
			}
 		}
		## Target's liege amenities decreases acceptance
 		modifier = {
 			add = {
 				value = -10
				if = {
					limit = {
						liege = {
							amenity_level = { target = court_lodging_standards value >=  high_amenity_level }
						}
					}
					add = -10
				}
				if = {
					limit = {
						liege = {
							amenity_level = { target = court_lodging_standards value >=  very_high_amenity_level }
						}
					}
					add = -10
				}
				if = {
					limit = {
						liege = {
							amenity_level = { target = court_lodging_standards value >=  max_amenity_level }
						}
					}
					add = -20
				}
 			}
 			desc = AI_LIEGE_COURT_LODGING_STANDARDS_QUALITY
			exists = liege
			is_courtier_of = liege
			liege = {
				has_royal_court = yes
				has_dlc_feature = royal_court
				amenity_level = { target = court_lodging_standards value >=  medium_amenity_level }
			}
 		}

 		modifier = {
 			add = {
				value = scope:actor.house.house_unity_value
				multiply = 0.5
			}
 			desc = AI_HOUSE_UNITY
			scope:actor = { government_has_flag = government_is_clan }
			exists = house
			exists = scope:actor.house
			house = scope:actor.house
			house = {
				OR = {
					has_house_unity_stage = harmonious
					has_house_unity_stage = friendly
				}
			}
 		}

 		modifier = {
			add = 25
			scope:influence_send_option = yes
			desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION
		}

 		modifier = {
			add = estate_invite_to_court_acceptance_value
			scope:actor = {
				domicile ?= { has_domicile_parameter = estate_increase_invite_to_court_acceptance }
			}
			desc = estate_buildings_with_value_desc
		}

 		modifier = {
 			add = -1000
 			desc = MALUS_TO_RECRUITMENT_FOR_IMPERIAL_EUNUCHS
 			scope:recipient = {
 				is_eunuch_trigger = yes
	 			liege ?= {
	 				government_allows = administrative
	 				primary_title.tier >= tier_empire
	 				culture = { has_cultural_parameter = can_appoint_chief_eunuch }
	 			}
	 		}
 		}

		
 		modifier = {
 			scope:actor.culture = {
				has_cultural_parameter = invite_courtiers_reasons
			}
 			add = 15
 			desc = invite_courtiers_additional_reason
 		}

		# Event modifiers

		# El Cid
		modifier = {
 			has_variable = cid_1010_no_invite_var
			var:cid_1010_no_invite_var = scope:actor
 			add = -200
 			desc = cid_1010_no_invite_var_desc
 		}
	}

	auto_accept = {
		custom_description = {
			text = "spending_hook"
			subject = scope:actor
			object = scope:recipient
			scope:hook = yes
		}
	}
}