﻿liege_modify_vassal_contract_interaction = {
	special_interaction = modify_vassal_contract
	interface = modify_vassal_contract
	category = interaction_category_vassal
	common_interaction = yes

	send_name = "modify_vassal_contract_interaction_SEND"
	desc = liege_modify_vassal_contract_interaction_desc

	force_notification = yes
	notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL
	
	is_shown = {
		scope:recipient = {
			NOT = { this = scope:actor }
			exists = liege
			liege = scope:actor
			is_ruler = yes
			vassal_contract_has_modifiable_obligations = yes
		}
	}

	is_valid_showing_failures_only = {
		scope:recipient = { 
			is_diplomatically_available = yes
		} 
		NOT = { scope:actor = { is_at_war_with = scope:recipient } } 
	}

	can_send = {
		scope:recipient = {			
			vassal_contract_is_blocked_from_modification = no
		}
		scope:actor = {
			has_changed_contract_obligation_trigger = { WHO = scope:recipient }
			
			custom_description = {
				text = "liege_modify_vassal_contract_cannot_exceed_tyranny_cap"
				object = scope:actor
				NOT = {
					vassal_obligation_increase_tyranny_gain_multiplier > 1
				}
			}

			# If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook
			trigger_if = {
				limit = { count_obligation_improvements_for_vassal > 0 }
				custom_description = {
					text = "vassal_modify_vassal_contract_unnecessary_hook_usage_vassal_favor"
					object = scope:recipient
					value = count_obligation_improvements_for_vassal
					NOT = { always = scope:hook }
				}
			}
			trigger_else_if = {
				limit = { count_obligation_improvements_for_vassal = 0 }
				custom_description = {
					text = "vassal_modify_vassal_contract_unnecessary_hook_usage_equal"
					object = scope:recipient
					NOT = { always = scope:hook }
				}
			}
			trigger_else = {} # Otherwise we're fine!
		}
			
		# Cannot change more than three things at once
		custom_description = {
			text = "vassal_modify_vassal_contract_obligation_change_limit"
			value = scope:recipient.count_total_obligation_changes
			scope:recipient.count_total_obligation_changes <= max_contract_changes
		}
	}

	auto_accept = yes

	on_accept = {
		scope:actor = {
			send_interface_message = {
				type = msg_vassal_contract_change
				title = modify_vassal_contract_interaction_notification
				right_icon = scope:recipient
				# Add tyranny for each level increased. Can spend one hook to avoid one level of tyranny hit.
				add_tyranny = vassal_obligation_increase_tyranny_gain
				if = {
					limit = { vassal_obligation_increase_tyranny_gain != 0 }
					stress_impact = {
						just = medium_stress_impact_gain
						generous = medium_stress_impact_gain
					}
				}
				if = {
					limit = {
						always = scope:hook
					}
					use_hook = scope:recipient
					add_achievement_flag = { FLAG = achievement_fine_print_flag }
				}

				scope:recipient = {
					hidden_effect = { set_vassal_contract_modification_blocked = yes }
					
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = feudal_government_taxes }	
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = feudal_government_levies }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = special_contract }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = religious_rights }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = fortification_rights }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = coinage_rights }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = succession_rights }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = war_declaration_rights }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = council_rights }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = title_revocation_rights }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = knight_rights }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = special_contract1 }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = cultural_rights }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = commercial_fairs_rights }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = special_contract2 }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = tithe_rights }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = wrath_of_heaven }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = conscripted_souls }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = solemn_brotherhood }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = godshouse }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = divine_will }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = corvea }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = artisan_guilds }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = vatican_embassy }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = eden_gardens }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = capitulare_devillis }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = kind_tax }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = patronize_the_7_arts }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = spread_local_tales }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = missi_dominici }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = property_survey }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = peace_tax }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = ora_et_labora }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = town_chart }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = mob_razzias }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = high_spheres }
					set_obligation_if_changed_effect = { OBLIGATION_TYPE = glory_leeway }
				}
			}
		}
	}

	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
}

vassal_modify_vassal_contract_interaction = {
	special_interaction = modify_vassal_contract
	interface = modify_vassal_contract
	category = interaction_category_vassal
	common_interaction = yes

	send_name = "modify_vassal_contract_interaction_SEND"
	desc = vassal_modify_vassal_contract_interaction_desc

	force_notification = yes
	notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_LIEGE

	is_shown = {
		scope:actor = {
			is_independent_ruler = no
			NOT = { this = scope:recipient }
			liege = scope:recipient
			vassal_contract_has_modifiable_obligations = yes
		}
	}

	is_valid_showing_failures_only = {
		scope:recipient = { is_diplomatically_available = yes }
		NOT = { scope:actor = { is_at_war_with = scope:recipient } } 
	}

	can_send = {
		scope:actor = {
			vassal_contract_is_blocked_from_modification = no
			has_changed_contract_obligation_trigger = { WHO = scope:actor }
			
			# Must be an even trade overall
			custom_description = {
				text = "vassal_modify_vassal_contract_cannot_increase_obligation_level"
				object = scope:recipient
				value = count_obligation_improvements_for_vassal_include_hook
				count_obligation_improvements_for_vassal_include_hook = 0
			}
			
			# Cannot change more than three things at once
			custom_description = {
				text = "vassal_modify_vassal_contract_obligation_change_limit"
				value = count_total_obligation_changes
				count_total_obligation_changes <= max_contract_changes
			}
			
		}
	}

	auto_accept = yes

	on_accept = {
		scope:actor = {
			send_interface_message = {
				type = msg_vassal_contract_change
				title = modify_vassal_contract_interaction_notification
				right_icon = scope:recipient
				if = {
					limit = { always = scope:hook }
					use_hook = scope:recipient
					add_achievement_flag = { FLAG = achievement_fine_print_flag }
				}
				
				hidden_effect = { set_vassal_contract_modification_blocked = yes }
		
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = feudal_government_taxes }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = feudal_government_levies }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = special_contract }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = religious_rights }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = fortification_rights }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = coinage_rights }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = succession_rights }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = war_declaration_rights }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = council_rights }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = title_revocation_rights }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = knight_rights }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = special_contract1 }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = cultural_rights }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = commercial_fairs_rights }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = special_contract2 }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = tithe_rights }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = wrath_of_heaven }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = conscripted_souls }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = solemn_brotherhood }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = godshouse }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = divine_will }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = corvea }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = vatican_embassy }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = eden_gardens }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = artisan_guilds }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = capitulare_devillis }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = kind_tax }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = patronize_the_7_arts }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = spread_local_tales }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = missi_dominici }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = property_survey }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = peace_tax }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = ora_et_labora }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = town_chart }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = mob_razzias }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = high_spheres }
				set_obligation_if_changed_effect = { OBLIGATION_TYPE = glory_leeway }
			}
		}
	}

	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
}

ai_only_liege_modify_vassal_contract_interaction = {
	category = interaction_category_vassal
	send_name = "modify_vassal_contract_interaction_SEND"
	desc = liege_modify_vassal_contract_interaction_desc

	auto_accept = yes
	
	is_shown = {
		scope:actor = {
			is_ai = yes
			has_usable_hook = scope:recipient
		}
		scope:recipient = {
			NOT = { this = scope:actor }
			NOT = {
				has_strong_hook = scope:actor
			}
			exists = liege
			liege = scope:actor
			is_ruler = yes
			vassal_contract_can_be_modified_trigger = yes
			does_ai_liege_in_vassal_contract_desire_obligation_change = yes
		}
		scope:recipient = { is_diplomatically_available = yes } 
		NOT = { scope:actor = { is_at_war_with = scope:recipient } } 
	}
		
	on_accept = {
		scope:actor = {
			stress_impact = {
				generous = minor_stress_impact_gain
			}
		}
		
		scope:recipient = {
			set_vassal_contract_modification_blocked = yes
			trigger_event = char_interaction.0250
		}
	}

	ai_potential = {
		is_at_war = no
	}
	
	ai_targets = {
		ai_recipients = vassals
	}
	ai_frequency = 24
	
	ai_will_do = {
		base = 100
		
		modifier = {
			factor = 0
			scope:recipient = {
				OR = {
					AND = {
						scope:actor = {
							ai_greed <= high_positive_ai_value
						}
						has_relation_friend = scope:actor
					}
					has_relation_best_friend = scope:actor
					has_relation_soulmate = scope:actor
				}
			}
		}
	}
	
}

ai_only_vassal_modify_vassal_contract_interaction = {
	category = interaction_category_vassal
	send_name = "modify_vassal_contract_interaction_SEND"
	desc = vassal_modify_vassal_contract_interaction_desc

	auto_accept = yes
	
	is_shown = {
		scope:actor = {
			is_ai = yes
			is_independent_ruler = no
			has_usable_hook = scope:recipient
			vassal_contract_can_be_modified_trigger = yes
			does_ai_vassal_in_vassal_contract_desire_obligation_change = yes
		}
		scope:recipient = {
			NOT = { this = scope:actor }
			is_ruler = yes
			NOT = {
				has_strong_hook = scope:actor
			}
		}
		scope:recipient = { is_diplomatically_available = yes }
		NOT = { scope:actor = { is_at_war_with = scope:recipient } }
	}
		
	on_accept = {
		scope:recipient = {
			trigger_event = char_interaction.0251
		}
	}

	ai_potential = {
		always = yes
	}
	
	ai_targets = {
		ai_recipients = liege
	}
	ai_frequency = 24
	
	ai_will_do = {
		base = 100
		
		modifier = {
			factor = 0
			scope:recipient = {
				OR = {
					AND = {
						scope:actor = {
							ai_greed <= high_positive_ai_value
						}
						has_relation_friend = scope:actor
					}
					has_relation_best_friend = scope:actor
					has_relation_soulmate = scope:actor
				}
			}
		}
	}
}
