﻿tribute_mission_clean_up_variables_effect = {
	remove_variable = tribute_mission_target_scope
	remove_variable = offered_gold_value
	remove_variable = tribute_mission_type
	remove_variable = offered_herd_value
	remove_variable = offered_concubine
	remove_variable = offered_eunuch
	remove_variable = offered_artifact
	remove_variable = tribute_reward_fascination_progress

	if = {
		limit = {
			has_character_flag = tribute_mission_character_flag # Under select circumstances it's possible this will be rerun, so this avoids an error
		}
		remove_character_flag = tribute_mission_character_flag
	}

	if = {
		limit = { exists = scope:receiving_character }
		scope:receiving_character = {
			if = {
				limit = { has_character_flag = created_attendant }
				silent_disappearance_effect = yes
			}
		}
	}
}

tribute_mission_clean_up_request_variables_effect = {
	remove_variable = requested_tribute_mission
	remove_variable = requested_tribute_mission_type_gold
	remove_variable = requested_tribute_mission_type_herd
	remove_variable = requested_tribute_mission_type_artifact
	remove_variable = requested_tribute_mission_type_concubine
	remove_variable = requested_tribute_mission_type_eunuch
	remove_variable = declined_requested_tribute_recently
	remove_variable = predetermined_concubine_tribute
	remove_variable = predetermined_eunuch_tribute
	remove_variable = predetermined_artifact_tribute
}

requested_tribute_mission_clean_up_variables_effect = {
	remove_variable = requested_tribute_mission
	remove_variable = invalidation_should_fail_ongoing_requested_tribute_mission
}

tribute_mission_decision_effect = {
	if = {
		#Are you a tributary of a Hegemon?
		limit = { subject_standing >= 0 }
		if = {
			limit = { is_tributary = yes }
			#If it's China, flavorize Imperial Grace
			if = {
				limit = { suzerain = { primary_title = title:h_china } }
				custom_tooltip = tribute_mission_interaction_anticipated_rewards_tt_imperial_grace
			}
			#Else standard stuff
			else = {
				custom_tooltip = tribute_mission_interaction_anticipated_rewards_tt_generic_hegemon
			}
		}
	}
	else = {
		if = {
			limit = { $TARGET$ = { primary_title = title:h_china } }
			custom_tooltip = tribute_mission_interaction_anticipated_rewards_tt_china
		}
		else_if = {
			limit = { $TARGET$ = { primary_title = title:h_roman_empire } }
			custom_tooltip = tribute_mission_interaction_anticipated_rewards_tt_roman_empire
		}
		else_if = {
			limit = { $TARGET$ = { primary_title = title:h_eastern_roman_empire } }
			custom_tooltip = tribute_mission_interaction_anticipated_rewards_tt_eastern_roman_empire
		}
		else_if = {
			limit = { $TARGET$ = { primary_title = title:h_dar_al_islam } }
			custom_tooltip = tribute_mission_interaction_anticipated_rewards_tt_dar_al_islam
		}
		else_if = {
			limit = { $TARGET$ = { primary_title = title:h_india } }
			custom_tooltip = tribute_mission_interaction_anticipated_rewards_tt_india
		}
		else = { custom_tooltip = tribute_mission_interaction_anticipated_rewards_tt }
	}

	hidden_effect = { 
		tribute_mission_clean_up_variables_effect = yes

		if = {
			limit = { is_tributary = yes }
			suzerain = { 
				save_scope_as = tribute_mission_target
				add_character_flag = {
					flag = pay_tribute_cooldown
					years = 3
				}
			}
		}
		else = {
			 $TARGET$ = {
				save_scope_as = tribute_mission_target
			}
		}

		set_variable = { # persist for later interactions
			name = tribute_mission_target_scope
			value = scope:tribute_mission_target
		}
	}

	#Your Suzerain requested this specifically
	if = {
		limit = {	
			has_variable = requested_tribute_mission
			is_ai = yes
		}
		switch = {
			trigger = has_variable
			requested_tribute_mission_type_gold = { # Gold
				run_interaction = {
					interaction = tribute_mission_gold_interaction
					actor = root
					recipient = scope:tribute_mission_target
					execute_threshold = accept
				}
			}
			requested_tribute_mission_type_herd = { # Herd
				run_interaction = {
					interaction = tribute_mission_herd_interaction
					actor = root
					recipient = scope:tribute_mission_target
					execute_threshold = accept
				}
			}
			requested_tribute_mission_type_artifact = { # Artifact
				var:predetermined_artifact_tribute ?= { save_scope_as = predetermined_artifact_tribute_scope }
				#Do the things from the interaction
				scope:predetermined_artifact_tribute_scope = {
					set_variable = is_tribute_mission_artifact
				}
				#Save the Artifact
				set_variable = {
					name = tribute_mission_type
					value = flag:artifact_tribute
				}
				set_variable = {
					name = offered_artifact
					value = scope:predetermined_artifact_tribute_scope
				}
				#Travel
				tribute_mission_set_up_tribute_travel_effect = yes
			}
			requested_tribute_mission_type_concubine = { # Concubine
				var:predetermined_concubine_tribute ?= { 
					save_scope_as = predetermined_concubine_tribute_scope 
				}
				scope:predetermined_concubine_tribute_scope = {
					add_character_flag = {
						flag = cannot_be_diarch # just enough to make sure they don't succeed to the diarchy while en route
						years = 2
					}
				}
				run_interaction = {
					interaction = tribute_mission_concubine_interaction
					actor = root
					recipient = scope:tribute_mission_target
					secondary_recipient = scope:predetermined_concubine_tribute_scope
					execute_threshold = accept
				}
			}
			requested_tribute_mission_type_eunuch = { # Eunuch	
				var:predetermined_eunuch_tribute ?= { save_scope_as = predetermined_eunuch_tribute_scope }
				run_interaction = {
					interaction = tribute_mission_eunuch_interaction
					actor = root
					recipient = scope:tribute_mission_target
					secondary_recipient = scope:predetermined_eunuch_tribute_scope
					execute_threshold = accept
				}
			}
		}
	}
	else_if = {
		limit = { is_ai = yes }
		switch = {
			trigger = yes

			scope:tribute_mission_gold = { # Gold
				run_interaction = {
					interaction = tribute_mission_gold_interaction
					actor = root
					recipient = scope:tribute_mission_target
					execute_threshold = accept
				}
			}
			
			scope:tribute_mission_herd = { # Herd
				run_interaction = {
					interaction = tribute_mission_herd_interaction
					actor = root
					recipient = scope:tribute_mission_target
					execute_threshold = accept
				}
			}

			scope:tribute_mission_artifact = { # Artifact
				random_character_artifact = { 
					limit = { is_suitable_artifact_tribute_trigger = yes }
					save_scope_as = decision_predetermined_artifact_tribute
				}
				#Do the things from the interaction
				scope:decision_predetermined_artifact_tribute = {
					set_variable = is_tribute_mission_artifact
				}
				#Save the Artifact
				set_variable = {
					name = tribute_mission_type
					value = flag:artifact_tribute
				}
				set_variable = {
					name = offered_artifact
					value = scope:decision_predetermined_artifact_tribute
				}
				#Travel
				tribute_mission_set_up_tribute_travel_effect = yes
			}

			scope:tribute_mission_concubine = { # Concubine
				every_courtier_or_guest = {
					limit = {
						can_be_offered_as_concubine_to_character_trigger = {
							GIVER = root
							CHARACTER = scope:tribute_mission_target
						}
						has_any_disease_trigger = no
						has_easily_mocked_physical_attribute_trigger = no
						NOT = { is_heir_of = root }
					}
					add_to_list = potential_concubine_tribute_list
					random_in_list = {
						list = potential_concubine_tribute_list
						weight = {
							#Let's try to make a sane choice here
							base = 0
							#No marginally relevant court people
							modifier = {
								add = 10
								NOR = {
									is_councillor = yes
									has_any_court_position = yes
								}
							}
							#No knights
							modifier = {
								add = 5
								is_knight = no
							}
							#No inspired people?
							modifier = {
								add = 20
								NOT = { exists = inspiration }
							}
							#No close family
							modifier = {
								add = 15
								NOT = { is_close_or_extended_family_of = root }
							}
							#No friends?
							modifier = {
								add = 20
								NOT = { has_relation_friend = root }
							}
							#No children
							modifier = {
								add = 25
								NOT = { is_child_of = root }
							}
						}
						save_scope_as = decision_predetermined_concubine_tribute
					}
				}
				scope:decision_predetermined_concubine_tribute = {
					add_character_flag = {
						flag = cannot_be_diarch # just enough to make sure they don't succeed to the diarchy while en route
						years = 2
					}
				}
				run_interaction = {
					interaction = tribute_mission_concubine_interaction
					actor = root
					recipient = scope:tribute_mission_target
					secondary_recipient = scope:decision_predetermined_concubine_tribute
					execute_threshold = accept
				}
			}

			scope:tribute_mission_eunuch = { # Eunuch
				every_courtier = {
					limit = { 
						tribute_mission_is_available_eunuch_trigger = yes
						NOT = { is_heir_of = root }
					}
					add_to_list = potential_eunuch_tribute_list
					random_in_list = {
						list = potential_eunuch_tribute_list
						weight = {
							#Let's try to make a sane choice here
							base = 0
							#No marginally relevant court people
							modifier = {
								add = 10
								NOR = {
									is_councillor = yes
									has_any_court_position = yes
								}
							}
							#No knights
							modifier = {
								add = 5
								is_knight = no
							}
							#No inspired people?
							modifier = {
								add = 20
								NOT = { exists = inspiration }
							}
							#No close family
							modifier = {
								add = 15
								NOT = { is_close_or_extended_family_of = scope:tribute_mission_target }
							}
							#No friends?
							modifier = {
								add = 20
								NOT = { has_relation_friend = scope:tribute_mission_target }
							}
							#No children
							modifier = {
								add = 25
								NOT = { is_child_of = scope:tribute_mission_target }
							}
						}
						save_scope_as = decision_predetermined_eunuch_tribute
					}
				}
				run_interaction = {
					interaction = tribute_mission_eunuch_interaction
					actor = root
					recipient = scope:tribute_mission_target
					secondary_recipient = scope:decision_predetermined_eunuch_tribute
					execute_threshold = accept
				}
			}

			scope:tribute_mission_bunga_mas = { # Bunga Mas
				random_character_artifact = { 
					limit = { var:bunga_mas_created_by ?= root }
					save_scope_as = decision_predetermined_bunga_mas_tribute
				}
				#Do the things from the interaction
				scope:decision_predetermined_bunga_mas_tribute = {
					set_variable = is_tribute_mission_artifact
				}
				#Save the Artifact
				set_variable = {
					name = tribute_mission_type
					value = flag:bunga_mas_tribute
				}
				set_variable = {
					name = offered_bunga_mas
					value = scope:decision_predetermined_bunga_mas_tribute
				}
				#Travel
				tribute_mission_set_up_tribute_travel_effect = yes
			}
		}
	}
	#Natural flow of the decision
	else_if = {
		limit = { is_ai = no }
		switch = {
			trigger = yes

			scope:tribute_mission_gold = { # Gold
				open_interaction_window = {
					interaction = tribute_mission_gold_interaction
					actor = root
					recipient = scope:tribute_mission_target
				}
			}
			
			scope:tribute_mission_herd = { # Herd
				open_interaction_window = {
					interaction = tribute_mission_herd_interaction
					actor = root
					recipient = scope:tribute_mission_target
				}
			}

			scope:tribute_mission_artifact = { # Artifact
				open_interaction_window = {
					interaction = tribute_mission_artifact_interaction
					actor = root
					recipient = scope:tribute_mission_target
				}
			}

			scope:tribute_mission_concubine = { # Concubine 
				open_interaction_window = {
					interaction = tribute_mission_concubine_interaction
					actor = root
					recipient = scope:tribute_mission_target
				}
			}

			scope:tribute_mission_eunuch = { # Eunuch
				open_interaction_window = {
					interaction = tribute_mission_eunuch_interaction
					actor = root
					recipient = scope:tribute_mission_target
				}
			}

			scope:tribute_mission_bunga_mas = { # Bunga Mas
				open_interaction_window = {
					interaction = tribute_mission_bunga_mas_interaction
					actor = root
					recipient = scope:tribute_mission_target
				}
			}
		}
	}

	if = {
		limit = { 
			is_ai = yes
			scope:tribute_mission_target = { highest_held_title_tier = tier_hegemony }
		}
		scope:tribute_mission_target = {
			set_variable = {
				name = ai_tribute_mission_cooldown
				years = 1
			}
		}
	}
}

set_or_change_offered_tribute_value_effect = {
	if = {
		limit = { has_variable = offered_$TYPE$_value }
		change_variable = {
			name = offered_$TYPE$_value
			add = $VALUE$
		}
	}
	else = {
		set_variable = {
			name = offered_$TYPE$_value
			value = $VALUE$
		}
	}
}


tribute_mission_set_up_tribute_travel_effect = {
	#Recover the tribute_mission_target scope from saved var if it doesn't already exist
	if = {
		limit = { exists = var:tribute_mission_target_scope }
		var:tribute_mission_target_scope = {
			save_scope_as = tribute_mission_target
		}
	}
	else = {
		error_log = "Tribute mission target scope variable not set on character intending to travel!"
	}
	#Travel posted first should look neater in tooltip
	hidden_effect = { # ensure we subtract everything we've offered
		if = {
			limit = { has_variable = offered_gold_value }
			remove_short_term_gold = var:offered_gold_value
		}
		if = {
			limit = { has_variable = offered_herd_value }
			domicile ?= {
				change_herd = { subtract = prev.var:offered_herd_value }
			}
		}	
	}
	trigger_event = { on_action = tribute_mission_start }
	if = {
		limit = { location = scope:tribute_mission_target.capital_province }
		trigger_event = tribute_mission.0002
	}
	#Add the concubine
	else_if = {
		limit = { has_variable = offered_concubine }
		start_travel_plan = {
			destination = scope:tribute_mission_target.capital_province
			companion = var:offered_concubine
			on_travel_planner_cancel_on_action = tribute_mission_travel_planner_exit 
			on_arrival_event = tribute_mission.0002
		}
	}
	#Add the eunuch
	else_if = {
		limit = { has_variable = offered_eunuch }
		start_travel_plan = {
			destination = scope:tribute_mission_target.capital_province
			companion = var:offered_eunuch
			on_travel_planner_cancel_on_action = tribute_mission_travel_planner_exit 
			on_arrival_event = tribute_mission.0002
		}
	}
	else = {
		custom_tooltip = tribute_mission.travel_to.tt
		start_travel_plan = {
			destination = scope:tribute_mission_target.capital_province
			on_travel_planner_cancel_on_action = tribute_mission_travel_planner_exit 
			on_arrival_event = tribute_mission.0002
		}
	}
}

tribute_mission_invalidation_effect = {
	if = {
		limit = { has_variable = tribute_mission_type }
		if = {
			limit = { # sanity check to ensure we're still a valid tribute provider
				OR = {
					is_independent_ruler = no # if we have a liege we cannot also pay tribute to someone else
					AND = { # if we're not a tributary we are only valid if we're paying tribute to a hegemony
						is_tributary = no
						OR = { 
							NOT = { exists = var:tribute_mission_target_scope }
							var:tribute_mission_target_scope = { NOT = { highest_held_title_tier = tier_hegemony } }
						}
					}
				}
			}
			#Return home and refund
			trigger_event = tribute_mission.9800
		}
		else_if = { #If our offerings have perished or been imprisoned along the way, maybe swap to gold
			limit = {
				has_variable = tribute_mission_type
				OR = {
					AND = {
						has_variable = offered_concubine
						OR = {
							var:offered_concubine = { is_alive = no }
							var:offered_concubine = { is_imprisoned = yes }
						}
					}
					AND = {
						has_variable = offered_eunuch
						OR = {
							var:offered_eunuch = { is_alive = no }
							var:offered_eunuch = { is_imprisoned = yes }
						}
					}
				}
			}
			trigger_event = tribute_mission.9750
		}
		else_if = {
			#We're still a tributary on our way to pay tribute, but our suzerain is not the person we were going to pay tribute to
			limit = {
				has_variable = tribute_mission_target_scope
				OR = {
					AND = {
						is_tributary = yes
						var:tribute_mission_target_scope != suzerain
					}
					AND = {
						is_tributary = no
						OR = { 
							NOT = { exists = var:tribute_mission_target_scope }
							var:tribute_mission_target_scope = { NOT = { highest_held_title_tier = tier_hegemony } }
						}
					}	
				}
			}
			var:tribute_mission_target_scope = { save_scope_as = old_overlord }
			suzerain = { save_scope_as = new_overlord }
			#Clean up Requested Tribute Mission variables
			requested_tribute_mission_clean_up_variables_effect = yes
			#The new Overlord is in the same place and can accept the tribute
			if = {
				limit = { 
					#Make sure they can still accept our offerings; if so, just set the new target
					current_travel_plan.next_destination_province = scope:new_overlord.capital_province
					has_variable = tribute_mission_type
					trigger_if = {
						limit = {
							OR = {
								has_variable = offered_concubine
								has_variable = offered_eunuch
							}
						}
						OR = {
							AND = {
								has_variable = offered_concubine
								var:offered_concubine = {
									can_become_concubine_of_character_valid_trigger = { CHARACTER = scope:new_overlord }
								}
							}
							AND = {
								has_variable = offered_eunuch
								scope:new_overlord = { 
									culture = { has_cultural_parameter = can_appoint_chief_eunuch } 
								}
							}
						}
					}	
				}
				send_interface_message = {
					type = msg_mandala_neutral_text
					title = tribute_mission_notification.new_overlord.title
					left_icon = scope:new_overlord
					desc = tribute_mission_notification.new_overlord.desc		
				}
				set_variable = {
					name = tribute_mission_target_scope
					value = scope:new_overlord
				}		
			}
			#The Overlord is somewhere else; please try again
			else_if = {
				limit = {
					current_travel_plan.next_destination_province != scope:new_overlord.capital_province
				}
				set_variable = new_overlord_somewhere_else
				#Return home and refund
				trigger_event = tribute_mission.9800
			}
			else = {
				set_variable = new_overlord_unable_to_accept_tribute
				#Return home and refund
				trigger_event = tribute_mission.9800
			}
		}
	}	
}

tribute_mission_mandala_piety_effect = {
	if = {
		limit = { government_has_flag = government_is_mandala }
		overlord = { add_piety = minor_piety_gain }
	}
}

requested_tribute_mission_penalty_effect = {
	if = {
		limit = {
			has_variable = invalidation_should_fail_ongoing_requested_tribute_mission
		}
		trigger_event = {
			id = tribute_mission.9500
			delayed = yes
		}
	}
}
