﻿grant_titles_interaction = {

	category = interaction_category_vassal
	common_interaction = yes

	desc = grant_titles_interaction_desc

	special_interaction = grant_titles_interaction
	interface = grant_titles
	target_type = title
	target_filter = actor_domain_titles
	interface_priority = 60

	# actor character giving the titles
	# recipient character receiving the titles

	is_shown = {
		NOT = { scope:actor = scope:recipient }
		scope:recipient = {
			OR = {
				target_is_liege_or_above = scope:actor
				is_pool_guest_of = scope:actor
			}
		}
	}
	
	is_valid = {
		scope:recipient = { can_be_granted_titles_by = { RULER = scope:actor } }
	}
	
	is_valid_showing_failures_only = {		
		NOT = { scope:actor = { is_at_war_with = scope:recipient } }
		NOT = { scope:recipient = { has_trait = devoted } } # Monks are disinherited, and should not have land granted to them
		custom_description = {
			text = is_not_theocratic_court_chaplain
			subject = scope:recipient
			NAND = {
				scope:actor.faith = {
					has_doctrine = doctrine_theocracy_temporal
				}
				scope:recipient = {
					faith = {
						has_doctrine = doctrine_theocracy_temporal
					}
					has_council_position = councillor_court_chaplain
				}
			}
		}
		scope:actor = {
			any_held_title = {
				count > 1
			}
		}
		scope:recipient = { is_diplomatically_available = yes }
		trigger_if = {
			limit = {
				scope:recipient = {
					is_ruler = no
				}
			}
			scope:recipient = {
				is_imprisoned = no
			}
		}
	}
	
	can_be_picked_title = {
		scope:target = {
			is_leased_out = no
			trigger_if = {
				limit = {
					scope:recipient = scope:actor.player_heir
					scope:actor = { has_partition_succession_realm_law_trigger = yes }
				}
				custom_description = {
					text = partition_primary_heir_unfair
					subject = scope:recipient
					current_heir = scope:recipient
				}
			}
		}
	}

	auto_accept = yes

	on_auto_accept = {
		scope:recipient = {
			trigger_event = char_interaction.0110
		}
	}
	
	on_accept = {
		every_in_list = {
			list = target_titles
			save_temporary_scope_as = this_title
			if = {
				limit = {
					exists = scope:landed_title
				}
				scope:recipient = {
					if = {
						limit = {
							scope:this_title.tier = tier_barony
						}

						hidden_effect = {
							add_opinion = {
								target = scope:actor
								modifier = received_title_barony
							}
						}

						scope:this_title = { add_to_temporary_list = titles_to_grant }

						hidden_effect = {
							if = {
								limit = {
									is_a_faction_member = yes
								}
								add_joined_faction_discontent = -5
							}
						}
					}

					else_if = {
						limit = {
							scope:this_title.tier = tier_county
						}

						hidden_effect = {
							add_opinion = {
								target = scope:actor
								modifier = received_title_county
							}
						}

						scope:this_title = { add_to_temporary_list = titles_to_grant }

						hidden_effect = {
							if = {
								limit = {
									is_a_faction_member = yes
								}
								add_joined_faction_discontent = -10
							}
						}
					}

					else_if = {
						limit = {
							scope:this_title.tier = tier_duchy
						}

						hidden_effect = {
							add_opinion = {
								target = scope:actor
								modifier = received_title_duchy
							}
						}

						scope:this_title = { add_to_temporary_list = titles_to_grant }

						hidden_effect = {
							if = {
								limit = {
									is_a_faction_member = yes
								}
								add_joined_faction_discontent = -20
							}
						}
					}

					else_if = {
						limit = {
							scope:this_title.tier = tier_kingdom
						}

						hidden_effect = {
							add_opinion = {
								target = scope:actor
								modifier = received_title_kingdom
							}
						}

						scope:this_title = { add_to_temporary_list = titles_to_grant }

						hidden_effect = {
							if = {
								limit = {
									is_a_faction_member = yes
								}
								add_joined_faction_discontent = -40
							}
						}
					}

					else_if = {
						limit = { scope:this_title.tier = tier_empire }

						add_opinion = {
							target = scope:actor
							modifier = received_title_empire
						}

						hidden_effect = {
							if = {
								limit = {
									is_a_faction_member = yes
								}
								add_joined_faction_discontent = -60
							}
						}

						scope:this_title = { add_to_temporary_list = titles_to_grant }
					}
				}

				#Promised a vassal this title they had a claim on (vassal.2901)
				if = {
					limit = {
						scope:actor = {
							exists = var:was_promised_title
							var:was_promised_title = scope:recipient
						}
					}
					if = {
						limit = {
							scope:recipient = {
								exists = var:promised_title
							}
							scope:landed_title = scope:recipient.var:promised_title
						}
						scope:actor = {
							trigger_event = {
								id = vassal.2910
								days = { 7 14 }
							}
						}
					}
				}

				# Gnostics lose stress for giving away titles.
				if = {
					limit = {
						exists = scope:landed_title
						scope:actor = {
							faith = {
								has_doctrine_parameter = granting_titles_gives_stress
							}
						}
					}
					scope:actor = {
						add_stress = {
							value = 0
							# Base stress value scaled on title tier.
							if = {
								limit = { scope:landed_title.tier = tier_county	}
								add = minor_stress_loss
							}
							else_if = {
								limit = { scope:landed_title.tier = tier_duchy	}
								add = medium_stress_loss
							}
							else_if = {
								limit = { scope:landed_title.tier = tier_kingdom }
								add = major_stress_loss
								multiply = 1.60
							}
							else_if = {
								limit = { scope:landed_title.tier = tier_empire	}
								add = massive_stress_loss
								multiply = 2.2
							}

							# Lose more stress for giving away titles of your primary tier; lose less stress for giving away titles far below your primary in tier.
							multiply = {
								value = scope:landed_title.tier
								add = 1
								divide = primary_title.tier
							}

							# Round to the nearest multiple of 5.
							divide = 5
							round = yes
							multiply = 5

							# For a Duke, this will be x1.25 for Duchies (-30) and x1 for Counties(-10)
							# For a King, this will be x1.25 for a Kingdom (-100), x1 for a Duchy (-25) and x0.75 for Counties(-10)
							# For an Emperor, this will be x1.25 for an Empire(-200), x1 for a Kingdom(-80), x0.75 for a Duchy(-20 and x0.4 for a Counties (-5)
						}
					}
				}
			}
			if = {
				limit = {
					scope:recipient = {
						has_trait = bastard
					}
				}
				custom_tooltip = grant_title_to_bastard_dynasty_warning
			}
		}
		
		if = {
			limit = {
				any_in_list = {
					list = target_titles
					tier = tier_empire
				}
			}
			custom_tooltip = grant_title_modifier_stack_empires
		}
		if = {
			limit = {
				any_in_list = {
					list = target_titles
					tier = tier_kingdom
				}
			}
			custom_tooltip = grant_title_modifier_stack_kingdoms
		}
		if = {
			limit = {
				any_in_list = {
					list = titles_to_grant
					tier = tier_duchy
				}
			}
			custom_tooltip = grant_title_modifier_stack_duchies
		}
		if = {
			limit = {
				any_in_list = {
					list = titles_to_grant
					tier = tier_county
				}
			}
			custom_tooltip = grant_title_modifier_stack_counties
		}
		if = {
			limit = {
				any_in_list = {
					list = titles_to_grant
					tier = tier_barony
				}
			}
			custom_tooltip = grant_title_modifier_stack_baronies
		}
		if = {
			limit = {
				scope:recipient = { is_a_faction_member = yes }
			}
			custom_tooltip = grant_title_modifier_stack_discontent
		}
		
		###Military faction effects### imperial mod
		military_faction_grant_title_effect = yes

		#Stress impact
		scope:actor = {
			if = {
				limit = {
					any_in_list = {
						list = target_titles
						tier <= tier_county # Title counts toward domain limit
						count >= 1
					}
				}
				if = {
					limit = {
						domain_size = domain_limit
					}
					stress_impact = {
						greedy = minor_stress_impact_gain
						ambitious = minor_stress_impact_gain
					}
				}
				else_if = {
					limit = {
						domain_size < domain_limit
					}
					stress_impact = {
						greedy = medium_stress_impact_gain
						ambitious = medium_stress_impact_gain
					}
				}
			}

			#Feedback for actor
			hidden_effect = {
				if = {
					limit = {
						any_in_list = {
							list = target_titles
							count <= 1
						}
						scope:recipient = {
							any_held_title = {
								tier > tier_barony
								NOT = {
									is_in_list = target_titles
								}
							}
						}
					}
					random_in_list = {
						list = target_titles
						save_temporary_scope_as = loc_title
					}
					send_interface_toast = {
						title = grant_titles_interaction_notification
					
						left_icon = scope:actor					
						right_icon = scope:recipient
					
						custom_tooltip = grant_titles_interaction_notification_effect_2
					}
				}
				else_if = {
					limit = {
						any_in_list = {
							list = target_titles
							count > 1
						}
						scope:recipient = {
							any_held_title = {
								tier > tier_barony
								NOT = {
									is_in_list = target_titles
								}
							}
						}
					}
					random_in_list = {
						list = target_titles
						save_temporary_scope_as = loc_title
					}
					send_interface_toast = {
						title = grant_titles_interaction_notification
					
						left_icon = scope:actor					
						right_icon = scope:recipient
					
						custom_tooltip = grant_titles_interaction_notification_effect_3
					}
				}
				else = {
					send_interface_toast = {
						title = grant_titles_interaction_notification

						left_icon = scope:actor					
						right_icon = scope:recipient

						custom_tooltip = grant_titles_interaction_notification_effect
					}
				}
			}
		}
	}
}

#This interaction is referenced in code! If it's renamed you have to ping a coder
grant_title_to_new_random_character_interaction = {
	hidden = yes
	auto_accept = yes
	special_interaction = grant_titles_interaction
	use_diplomatic_range = no

	is_valid_showing_failures_only = {
		scope:actor = {
			NOT = {
				this = scope:recipient
			}
			any_held_title = {
				count > 1
			}
		}
		scope:recipient = { is_diplomatically_available = yes }
	}
}
