﻿# character just about to die in root scope
# if a killer is known, it's set as scope:killer
#Triggered by code

on_death = {
	on_actions = {
		check_inheritance_on_actions 
	}
}

check_inheritance_on_actions = {	
	effect = {
		# 1. DRIFT-OUT: Dying vassal has titles that will leave liege's realm
		save_scope_as = vassal_to_check
		scope:vassal_to_check = {
			primary_title = {
				save_scope_as = primary_title_to_check
			}	
			primary_heir = {
				save_scope_as = heir
			}
			liege = {
				save_scope_as = old_old_liege
			}
		}
		if = {
			limit = {
				AND = {
					NOT = { has_trait = nightswatch }
					NOT = { has_trait = silent_sister }
					NOT = { has_trait = septon }
					NOT = { has_trait = maester }
					NOT = { has_trait = devoted }
					NOT = { has_trait = red_priest }
					NOT = { has_trait = order_member }
					NOT = { has_trait = kingsguard }
					NOT = { has_trait = dragon }
					NOT = { government_has_flag = government_is_theocracy }
					NOT = { government_has_flag = government_is_landless_adventurer }
					NOT = { government_has_flag = government_is_republic }
					is_landed = yes
					highest_held_title_tier >= tier_county
				}
				any_heir = {
						highest_held_title_tier >= tier_county  # Barons will abdicate if they inherit most titles
						any_heir_title = {
							title_lost_from_realm_on_foreign_ruler_succession_trigger = {
								VASSAL = prev
								LIEGE = prev.liege
							}
						}
					}	
			}

			every_heir = {
				limit = {
					any_heir_title = {
						title_lost_from_realm_on_foreign_ruler_succession_trigger = {
							VASSAL = prev
							LIEGE = prev.liege
						}
					}
				}

				add_to_list = heirs_going_away
			}

			

			every_in_list = {
				list = heirs_going_away				

				every_vassal = {
					limit = {
						highest_held_title_tier >= tier_county  # Barons will abdicate if they inherit most titles
					}
					add_to_list = vassals_of_heirs_going_away
				}

				primary_title = {
					save_scope_as = the_primary_title_to_check
				}
				
				liege = {
					save_scope_as = the_old_liege
				}
				every_held_title = {
					add_to_list = titles_being_lost
				}
				scope:the_old_liege = {
					trigger_event = hands.5000
				}
			}
		}
		else_if = {
			limit = {
				liege = {
					any_vassal = {
						any_held_title = {
							title_will_leave_sub_realm_on_succession = root
							NOT = { government_has_flag = government_is_landless_adventurer }
						}
					}						
				}
			}
			# liege = {
			# 	trigger_event = hands.1000
			# }
			liege = {
				every_vassal = {
					every_held_title = {
						limit = {
							holder = scope:vassal_to_check
							title_will_leave_sub_realm_on_succession = root
							NOT = { government_has_flag = government_is_landless_adventurer }
						}
						add_to_list = titles_being_lost
					}
				}
				
			}
			if = {
				limit = {
					any_in_list = {
						list = titles_being_lost
						count >= 1
					}
				}
				scope:vassal_to_check = {
					every_vassal = {
						add_to_list = vassals_to_check
					}
				}
				liege = {
					trigger_event = hands.1000
				}
			}
		}		
	}
}

# called when a war is started.
# same scopes are available in these events as in the CBs' on_declaration, this just fires for all CBs instead of a specific CB.

on_war_started = {
	on_actions = {
		check_war_for_vassal_title_drift_out
	}
}

check_war_for_vassal_title_drift_out = {
	effect = {
		scope:attacker = {
			liege = {
				highest_held_title_tier = {
					save_scope_as = liege_title_tier
				}
			}
			
			add_to_variable_list = {
				name = primary_old_title_to_check_for_title_drift_out
				target = scope:attacker.primary_title
			}
		}

		scope:war.casus_belli = {
			ordered_in_list = {
				list = target_titles
				order_by = tier
				save_scope_as = this_target_title
			}
		}
		
		
		if = {
			limit = {			
				scope:war = {
					primary_attacker = scope:attacker
					primary_attacker = scope:claimant
					casus_belli = {
						any_target_title = { tier >= scope:liege_title_tier }
					}
				}
			}
			scope:attacker = {
				every_held_title = {
					add_to_list = titles_to_revoke
				}
				every_vassal = {
					add_to_list = vassals_to_revoke
				}
			}
			every_in_list = {
				list = titles_to_revoke
				save_scope_as = title_v1
				scope:attacker = {
					add_to_variable_list = {
						name = titles_to_revoke_on_war_win
						target = scope:title_v1
					}
				}
			}
			every_in_list = {
				list = vassals_to_revoke
				save_scope_as = vassal_v1
				scope:attacker = {
					add_to_variable_list = {
						name = vassals_to_revoke_on_war_win
						target = scope:vassal_v1
					}
				}
			}
			scope:attacker = {
				add_to_variable_list = {
					name = war_target_to_check_for_title_drift_out
					target = scope:this_target_title
				}
				add_to_variable_list = {
					name = liege_to_check_for_title_drift_out
					target = scope:attacker.liege
				}
				add_to_variable_list = {
					name = liege_primary_title_to_check_for_title_drift_out
					target = scope:attacker.liege.primary_title
				}
			}
			# scope:attacker = {
			# 	liege = {
			# 		trigger_event = {
			# 			id = hands.6500
			# 			days = 3
			# 		}
			# 	}				
			# }
		}
		# if = {
		# 	limit = {
		# 		scope:attacker = {
		# 			any_character_war = {
		# 				primary_attacker = scope:attacker
		# 				this = scope:war
		# 				casus_belli = {
		# 					any_target_title = { tier >= scope:attacker.liege.highest_held_title_tier }
		# 				}
		# 			}

		# 		}
		# 	}
		# }
	}
}

on_war_won_attacker = {
	on_actions = {
		check_war_won_titles_to_revoke
	}
}

check_war_won_titles_to_revoke = {
	effect = {
		scope:attacker.primary_title = {
			save_scope_as = attacker_primary_title			
		}
		scope:attacker = {
			every_in_list = {
				variable = primary_old_title_to_check_for_title_drift_out
				save_scope_as = the_old_title_to_check
			}
			every_in_list = {
				variable = war_target_to_check_for_title_drift_out
				save_scope_as = pre_war_target_title
			}
			every_in_list = {
				variable = titles_to_revoke_on_war_win
				add_to_list = titles_to_revoke
			}
			every_in_list = {
				variable = vassals_to_revoke_on_war_win
				add_to_list = vassals_to_revoke
			}
		}
		if = {
			limit = {
				scope:attacker = {
					has_title = scope:the_old_title_to_check
					has_title = scope:pre_war_target_title
					scope:pre_war_target_title = scope:attacker_primary_title
				}

			}
			
			scope:attacker = {
				every_in_list = {
					variable = liege_to_check_for_title_drift_out
					save_scope_as = this_liege
				}
				
				every_in_list = {
					variable = liege_primary_title_to_check_for_title_drift_out
					save_scope_as = this_liege_primary_title
				}

				
				
				scope:this_liege_primary_title.holder = {
					trigger_event = {
						id = hands.6500
						days = 3
					}
				}
			}
		}
		# scope:attacker = {
		# 	trigger_event = hands.6500
		# }
	}
}

on_war_won_defender = {
	on_actions = {
		check_war_loss_titles_to_revoke
	}
}

check_war_loss_titles_to_revoke = {
	effect = {
	}
}

on_war_white_peace = {
	on_actions = {
		check_war_white_peace_titles_to_revoke
	}
}

check_war_white_peace_titles_to_revoke = {
	effect = {
	}
}

on_war_invalidated = {
	on_actions = {
		check_war_invalidated_titles_to_revoke
	}
}

check_war_invalidated_titles_to_revoke = {
	effect = {
	}
}