﻿on_faith_monthly = {
	on_actions = { 
		RewReg_faith_monthly_pulse 
	}
}

quarterly_playable_pulse  = {
	on_actions = {
		RewReg_scheme_on_action
		RegRew_main_on_action_ai
	}
}

random_yearly_playable_pulse ={
	on_actions = {
		RewReg_influence_on_action
	}
}

on_left_diarchy = {
	on_actions = {
		RewReg_enter_diarchy_vassal_clear
	}
}

on_entered_diarchy = {
	on_actions = {
		RewReg_enter_diarchy_on_action
		RewReg_enter_diarchy_flag_on_action
		RewReg_enter_diarchy_years_diarch_on_action
		RewRegçenter_diarchy_clear
		RegRew_enter_diarchy_influence_clear
		RegRew_main_on_action_delay
	}
}

on_diarch_change = {
	on_actions = {
		RewReg_enter_diarchy_on_action
		RewReg_enter_diarchy_flag_on_action
		RewReg_enter_diarchy_years_diarch_on_action
		RewRegçenter_diarchy_clear
		RegRew_enter_diarchy_influence_clear
		RegRew_main_on_action_delay
	}
}

RegRew_main_on_action_delay = {
	effect = {
		trigger_event = { 
			on_action = RegRew_main_on_action 
			days = 1
		}
		trigger_event = { 
			on_action = RegRew_main_on_action_ai 
			days = 1
		}
	}
}

RewReg_faith_monthly_pulse = {
	effect = {
		every_faith_playable_ruler = {
			trigger_event = { on_action = RegRew_main_on_action }
			trigger_event = { on_action = RegRew_not_main_on_action  }
			trigger_event = { on_action = RegRew_decrease_power_on_action }
			trigger_event = { 
				on_action = RegRew_Ai_coup_on_action 
				days = 1
			}	
		}
	}
}

RegRew_not_main_on_action = {
	trigger = {
		has_active_diarchy = yes
		RegRew_mod_requirement_trigger = no
	}
	effect = {
		if = {
			limit = {
				diarchy_swing < 50
			}
			change_diarchy_swing = 0.25
		}
	}
}

RewReg_influence_on_action = {
	trigger = {
		has_active_diarchy = yes
		RegRew_mod_requirement_trigger = yes	
	}
	effect = {
		trigger_event = RegRew_event_trigger.0003
	}
}

RewReg_scheme_on_action = {
	trigger = {
		has_active_diarchy = yes
		RegRew_mod_requirement_trigger = yes
	}
	effect = {
		trigger_event = RegRew_event_trigger.0001
		diarch ?= { trigger_event = RegRew_event_trigger.0002 }
	}
}

RegRew_main_on_action = {
	trigger = { 
		has_active_diarchy = yes
		RegRew_mod_requirement_trigger = yes
		RegRew_player_check_monthly = yes
	}
	effect = {
		save_scope_as = RewReg_liege
		diarch = { save_scope_as = RewReg_diarch }
		### modif 2
		if = {
			limit = {
				scope:RewReg_diarch = {
					NOT = { has_variable = RewReg_diarchy_left_save_power }
				}
			}
			scope:RewReg_liege = { set_diarchy_swing = RegRew_death_swing }
		}
		### modif 2
		scope:RewReg_diarch = {
			remove_variable = RewReg_diarchy_left_save_power
			remove_variable = RewReg_diarchy_left_save_title
		}
		
		#clear variable
		remove_variable = RewReg_liege_side_var
		remove_variable = RewReg_neutral_side_var
		remove_variable = RewReg_diarch_side_var
		remove_variable = RewReg_total_var
		#set variables
		set_variable = {
			name = RewReg_liege_side_var
			value = 0
		}
		set_variable = {
			name = RewReg_neutral_side_var
			value = 0
		}
		set_variable = {
			name = RewReg_diarch_side_var
			value = 0
		}
		set_variable = {
			name = RewReg_total_var
			value = 0
		}
		#list les vassals
		every_vassal = {
			limit = {
				is_adult = yes
				highest_held_title_tier >= tier_county
				RegRew_side_value < RegRew_minus_side_value
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_liege_side_list
		}
		every_vassal = {
			limit = {
				is_adult = yes
				highest_held_title_tier >= tier_county
				RegRew_side_value >= RegRew_minus_side_value
				RegRew_side_value <= RegRew_plus_side_value
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_neutral_side_list
		}
		every_vassal = {
			limit = {
				is_adult = yes
				highest_held_title_tier >= tier_county
				RegRew_side_value > RegRew_plus_side_value
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_diarch_side_list
		}
		
		every_councillor = {
			limit = {
				is_adult = yes
				RegRew_side_value < RegRew_minus_side_value
				NOT = {highest_held_title_tier >= tier_county }
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_liege_side_list
		}
		every_councillor = {
			limit = {
				is_adult = yes
				RegRew_side_value >= RegRew_minus_side_value
				RegRew_side_value <= RegRew_plus_side_value
				NOT = {highest_held_title_tier >= tier_county }
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_neutral_side_list
		}
		every_councillor = {
			limit = {
				is_adult = yes
				RegRew_side_value > RegRew_plus_side_value
				NOT = {highest_held_title_tier >= tier_county }
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_diarch_side_list
		}
		
		# compte les points de chaque liste
		#liege side
		RegRew_point_count_effect = {
			LIST = RewReg_liege_side_list
			VAR = RewReg_liege_side_var
			VARTOT = RewReg_total_var
		}
		RegRew_point_count_effect = {
			LIST = RewReg_neutral_side_list
			VAR = RewReg_neutral_side_var
			VARTOT = RewReg_total_var
		}
		RegRew_point_count_effect = {
			LIST = RewReg_diarch_side_list
			VAR = RewReg_diarch_side_var
			VARTOT = RewReg_total_var
		}
		if = {
			limit = {
				OR = {
					diarchy_swing < RewReg_max_power_sharing
					RegRew_swing_value < 0
				}
			}
			change_diarchy_swing = RegRew_swing_value
		}
		if = {
			limit = { 
				diarchy_swing >= RewReg_max_power_sharing
				RegRew_swing_value >= 0
			}
			change_diarchy_swing = RegRew_decrease_value
		}
		#save variable coup
		every_in_list = {
			list = RewReg_liege_side_list
			if = {
				limit = { has_variable = RegRew_coup_liege_var }
				remove_variable = RegRew_coup_liege_var
			}
			if = {
				limit = { has_variable = RegRew_coup_neutral_var }
				remove_variable = RegRew_coup_neutral_var
			}
			if = {
				limit = { has_variable = RegRew_coup_diarch_var }
				remove_variable = RegRew_coup_diarch_var
			}
			
		}
		every_in_list = {
			list = RewReg_neutral_side_list
			if = {
				limit = { has_variable = RegRew_coup_liege_var }
				remove_variable = RegRew_coup_liege_var
			}
			if = {
				limit = { has_variable = RegRew_coup_neutral_var }
				remove_variable = RegRew_coup_neutral_var
			}
			if = {
				limit = { has_variable = RegRew_coup_diarch_var }
				remove_variable = RegRew_coup_diarch_var
			}
		}
		every_in_list = {
			list = RewReg_diarch_side_list
			if = {
				limit = { has_variable = RegRew_coup_liege_var }
				remove_variable = RegRew_coup_liege_var
			}
			if = {
				limit = { has_variable = RegRew_coup_neutral_var }
				remove_variable = RegRew_coup_neutral_var
			}
			if = {
				limit = { has_variable = RegRew_coup_diarch_var }
				remove_variable = RegRew_coup_diarch_var
			}
		}	
		every_in_list = {
			list = RewReg_liege_side_list
			set_variable = {
				name = RegRew_coup_liege_var
				value = 1
			}
			RegRew_random_vassal_side_value_effect = yes
		}
		every_in_list = {
			list = RewReg_neutral_side_list
			set_variable = {
				name = RegRew_coup_neutral_var
				value = 1
			}
			RegRew_random_vassal_side_value_effect = yes
		}
		every_in_list = {
			list = RewReg_diarch_side_list
			set_variable = {
				name = RegRew_coup_diarch_var
				value = 1
			}
			RegRew_random_vassal_side_value_effect = yes
		}
		#save diarchy swing value
		scope:RewReg_diarch = {
			set_variable = {
				name =  RewReg_diarchy_left_save_power
				value = scope:RewReg_liege.diarchy_swing
			}
			set_variable = {
				name = RewReg_diarchy_left_save_title
				value = scope:RewReg_liege.highest_held_title_tier
			}
			# variable for years in diarchy
			if = {
				limit = {
					NOT = { has_variable = RewReg_diarchy_year_diarch_title }
				}
				set_variable = {
					name = RewReg_diarchy_year_diarch_title
					value = 0
				}
			}
			else_if = {
				limit = {
					has_variable = RewReg_diarchy_year_diarch_title
				}
				change_variable = {
					name = RewReg_diarchy_year_diarch_title
					add = 1
				}
			}
		}
	}
}

RegRew_main_on_action_ai = {
	trigger = { 
		has_active_diarchy = yes
		RegRew_mod_requirement_trigger = yes
		RegRew_player_check_monthly = no
	}
	effect = {
		
		save_scope_as = RewReg_liege
		diarch = { save_scope_as = RewReg_diarch }
		### modif 2
		if = {
			limit = {
				scope:RewReg_diarch = {
					NOT = { has_variable = RewReg_diarchy_left_save_power }
				}
			}
			scope:RewReg_liege = { set_diarchy_swing = RegRew_death_swing }
		}
		### modif 2
		scope:RewReg_diarch = {
			remove_variable = RewReg_diarchy_left_save_power
			remove_variable = RewReg_diarchy_left_save_title
		}
		
		#clear variable
		remove_variable = RewReg_liege_side_var
		remove_variable = RewReg_neutral_side_var
		remove_variable = RewReg_diarch_side_var
		remove_variable = RewReg_total_var
		#set variables
		set_variable = {
			name = RewReg_liege_side_var
			value = 0
		}
		set_variable = {
			name = RewReg_neutral_side_var
			value = 0
		}
		set_variable = {
			name = RewReg_diarch_side_var
			value = 0
		}
		set_variable = {
			name = RewReg_total_var
			value = 0
		}
		#list les vassals
		every_vassal = {
			limit = {
				is_adult = yes
				highest_held_title_tier >= tier_county
				RegRew_side_value < RegRew_minus_side_value
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_liege_side_list
		}
		every_vassal = {
			limit = {
				is_adult = yes
				highest_held_title_tier >= tier_county
				RegRew_side_value >= RegRew_minus_side_value
				RegRew_side_value <= RegRew_plus_side_value
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_neutral_side_list
		}
		every_vassal = {
			limit = {
				is_adult = yes
				highest_held_title_tier >= tier_county
				RegRew_side_value > RegRew_plus_side_value
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_diarch_side_list
		}
		
		every_councillor = {
			limit = {
				is_adult = yes
				RegRew_side_value < RegRew_minus_side_value
				NOT = {highest_held_title_tier >= tier_county }
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_liege_side_list
		}
		every_councillor = {
			limit = {
				is_adult = yes
				RegRew_side_value >= RegRew_minus_side_value
				RegRew_side_value <= RegRew_plus_side_value
				NOT = {highest_held_title_tier >= tier_county }
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_neutral_side_list
		}
		every_councillor = {
			limit = {
				is_adult = yes
				RegRew_side_value > RegRew_plus_side_value
				NOT = {highest_held_title_tier >= tier_county }
				NOT = { this = scope:RewReg_diarch }
			}
			add_to_list = RewReg_diarch_side_list
		}
		
		# compte les points de chaque liste
		#liege side
		RegRew_point_count_effect = {
			LIST = RewReg_liege_side_list
			VAR = RewReg_liege_side_var
			VARTOT = RewReg_total_var
		}
		RegRew_point_count_effect = {
			LIST = RewReg_neutral_side_list
			VAR = RewReg_neutral_side_var
			VARTOT = RewReg_total_var
		}
		RegRew_point_count_effect = {
			LIST = RewReg_diarch_side_list
			VAR = RewReg_diarch_side_var
			VARTOT = RewReg_total_var
		}
		if = {
			limit = {
				OR = {
					diarchy_swing < RewReg_max_power_sharing
					RegRew_swing_value_ai < 0
				}
			}
			change_diarchy_swing = RegRew_swing_value_ai
		}
		if = {
			limit = { 
				diarchy_swing >= RewReg_max_power_sharing
				RegRew_swing_value_ai >= 0
			}
			change_diarchy_swing = RegRew_decrease_value_ai
		}
		#save variable coup
		every_in_list = {
			list = RewReg_liege_side_list
			if = {
				limit = { has_variable = RegRew_coup_liege_var }
				remove_variable = RegRew_coup_liege_var
			}
			if = {
				limit = { has_variable = RegRew_coup_neutral_var }
				remove_variable = RegRew_coup_neutral_var
			}
			if = {
				limit = { has_variable = RegRew_coup_diarch_var }
				remove_variable = RegRew_coup_diarch_var
			}
			
		}
		every_in_list = {
			list = RewReg_neutral_side_list
			if = {
				limit = { has_variable = RegRew_coup_liege_var }
				remove_variable = RegRew_coup_liege_var
			}
			if = {
				limit = { has_variable = RegRew_coup_neutral_var }
				remove_variable = RegRew_coup_neutral_var
			}
			if = {
				limit = { has_variable = RegRew_coup_diarch_var }
				remove_variable = RegRew_coup_diarch_var
			}
		}
		every_in_list = {
			list = RewReg_diarch_side_list
			if = {
				limit = { has_variable = RegRew_coup_liege_var }
				remove_variable = RegRew_coup_liege_var
			}
			if = {
				limit = { has_variable = RegRew_coup_neutral_var }
				remove_variable = RegRew_coup_neutral_var
			}
			if = {
				limit = { has_variable = RegRew_coup_diarch_var }
				remove_variable = RegRew_coup_diarch_var
			}
		}	
		every_in_list = {
			list = RewReg_liege_side_list
			set_variable = {
				name = RegRew_coup_liege_var
				value = 1
			}
			RegRew_random_vassal_side_value_effect = yes
		}
		every_in_list = {
			list = RewReg_neutral_side_list
			set_variable = {
				name = RegRew_coup_neutral_var
				value = 1
			}
			RegRew_random_vassal_side_value_effect = yes
		}
		every_in_list = {
			list = RewReg_diarch_side_list
			set_variable = {
				name = RegRew_coup_diarch_var
				value = 1
			}
			RegRew_random_vassal_side_value_effect = yes
		}
		#save diarchy swing value
		scope:RewReg_diarch = {
			set_variable = {
				name =  RewReg_diarchy_left_save_power
				value = scope:RewReg_liege.diarchy_swing
			}
			set_variable = {
				name = RewReg_diarchy_left_save_title
				value = scope:RewReg_liege.highest_held_title_tier
			}
			# variable for years in diarchy
			if = {
				limit = {
					NOT = { has_variable = RewReg_diarchy_year_diarch_title }
				}
				set_variable = {
					name = RewReg_diarchy_year_diarch_title
					value = 0
				}
			}
			else_if = {
				limit = {
					has_variable = RewReg_diarchy_year_diarch_title
				}
				change_variable = {
					name = RewReg_diarchy_year_diarch_title
					add = 1
				}
			}
		}
		##test ai
		#if = {
		#	limit = {
		#		culture ?= { this = culture:han }
		#	}
		#	save_scope_as = test
		#	random_player = {
		#		send_interface_toast = {
		#				type = msg_child_language
		#				title = test
		#				left_icon = root
		#				right_icon = root.diarch
		#				custom_tooltip = "[test.MakeScope.ScriptValue('RegRew_swing_value_ai')|2]"
		#			}
		#	}
		#}
	}
}


RegRew_decrease_power_on_action = {
	trigger = {
		has_active_diarchy = no
		OR = {
			any_courtier = {
				has_variable = RewReg_diarchy_left_save_power
			}
			any_vassal = {
				has_variable = RewReg_diarchy_left_save_power
			}
		}			
	}
	effect = {
		every_courtier = {
			limit = {
				has_variable = RewReg_diarchy_left_save_power
				this.var:RewReg_diarchy_left_save_power > RegRew_decrease_value_inv
			}
			change_variable = {
				name = RewReg_diarchy_left_save_power
				add = RegRew_decrease_value
			}
		}
		every_vassal = {
			limit = {
				has_variable = RewReg_diarchy_left_save_power
				this.var:RewReg_diarchy_left_save_power > RegRew_decrease_value_inv
			}
			change_variable = {
				name = RewReg_diarchy_left_save_power
				add = RegRew_decrease_value
			}
		}
	}
}
RegRew_enter_diarchy_influence_clear = {
	trigger = {
		always = yes
	}
	effect = {
		save_scope_as = clear_liege
		every_vassal = {
			limit = {
				has_variable = RegRew_influenced_value_var
				NOR = {
					var:RegRew_influenced_liege_var = scope:clear_liege
					var:RegRew_influenced_diarch_var = scope:clear_liege.diarch
				}
			}
			remove_variable = RegRew_influenced_value_var
			remove_variable = RegRew_influenced_liege_var
			remove_variable = RegRew_influenced_diarch_var
		}
		every_councillor = {
			limit = {
				has_variable = RegRew_influenced_value_var
				NOR = {
					var:RegRew_influenced_liege_var = scope:clear_liege
					var:RegRew_influenced_diarch_var = scope:clear_liege.diarch
				}
			}
			remove_variable = RegRew_influenced_value_var
			remove_variable = RegRew_influenced_liege_var
			remove_variable = RegRew_influenced_diarch_var
		}
	}
}

RewRegçenter_diarchy_clear = {
	trigger = {
		diarch ?= {
			OR = {
				has_variable = RegRew_coup_liege_var
				has_variable = RegRew_coup_neutral_var
				has_variable = RegRew_coup_diarch_var
			}
		}
	}
	effect = {
		diarch = {
			if = {
				limit = { has_variable = RegRew_coup_liege_var }
				remove_variable = RegRew_coup_liege_var
			}
			if = {
				limit = { has_variable = RegRew_coup_neutral_var }
				remove_variable = RegRew_coup_neutral_var
			}
			if = {
				limit = { has_variable = RegRew_coup_diarch_var }
				remove_variable = RegRew_coup_diarch_var
			}
		}
	}
}

RewReg_enter_diarchy_vassal_clear = {
	trigger = {
		OR = {
			any_vassal = {
				OR = {
					has_variable = RegRew_random_vassal_side_value_fickle_var
					has_variable = RegRew_random_vassal_side_value_rationality_var
				}
			}
			any_courtier = {
				OR = {
					has_variable = RegRew_random_vassal_side_value_fickle_var
					has_variable = RegRew_random_vassal_side_value_rationality_var
				}
			}
		}
	}
	effect = {
		every_vassal = {
			if = {
				limit = { has_variable = RegRew_random_vassal_side_value_fickle_var }				
				remove_variable = RegRew_random_vassal_side_value_fickle_var
			}
			if = {
				limit = { has_variable = RegRew_random_vassal_side_value_rationality_var }				
				remove_variable = RegRew_random_vassal_side_value_rationality_var
			}
		}
		every_courtier = {
			if = {
				limit = { has_variable = RegRew_random_vassal_side_value_fickle_var }				
				remove_variable = RegRew_random_vassal_side_value_fickle_var
			}
			if = {
				limit = { has_variable = RegRew_random_vassal_side_value_rationality_var }				
				remove_variable = RegRew_random_vassal_side_value_rationality_var
			}
		}
	}
}

RewReg_enter_diarchy_on_action = {
	trigger = {
		diarch ?= {
			has_variable = RewReg_diarchy_left_save_power
		}
		highest_held_title_tier = root.diarch.var:RewReg_diarchy_left_save_title
	}
	effect = {
		set_diarchy_swing = diarch.var:RewReg_diarchy_left_save_power
	}
}

RewReg_enter_diarchy_years_diarch_on_action = {
	trigger = {
		diarch ?= {
			has_variable = RewReg_diarchy_left_save_power
			has_variable = RewReg_diarchy_year_diarch_title
		}
		NOT = { highest_held_title_tier = root.diarch.var:RewReg_diarchy_left_save_title }
	}
	effect = {
		diarch = {
			remove_variable = RewReg_diarchy_year_diarch_title
		}
	}
}

RewReg_enter_diarchy_flag_on_action = {
	trigger = {
		any_vassal = {
			OR = {
				has_character_flag = choose_side_liege_flag
				has_character_flag = choose_side_neutral_flag
				has_character_flag = choose_side_diarch_flag
			}
		}
	}
	effect = {
		every_vassal = {
			limit = {
				has_character_flag = choose_side_liege_flag
			}
			remove_character_flag = choose_side_liege_flag
		}
		every_vassal = {
			limit = {
				has_character_flag = choose_side_neutral_flag
			}
			remove_character_flag = choose_side_neutral_flag
		}
		every_vassal = {
			limit = {
				has_character_flag = choose_side_diarch_flag
			}
			remove_character_flag = choose_side_diarch_flag
		}
	}
}

RegRew_Ai_coup_on_action = {
	trigger = {
		has_active_diarchy = yes
		has_diarchy_active_parameter = regents_can_try_to_overthrow_present_lieges
		diarch ?= { NOT = { has_character_flag = RegRew_coup_ai_debug } }
	}
	effect = {
		save_scope_as = recipient
		diarch ?= { 
			save_scope_as = actor
			ai_diarch_check_to_see_if_should_launch_coup_effect = yes
		}		
	}		
}




###############
### starting regency
########

# called for armies whenever they enter a province
# root is the owner of the army
# scope:army is the army

on_army_monthly = {
	on_actions = {
		Reg_Rew_enter_foreign_province	
	}
}

Reg_Rew_enter_foreign_province = {
	trigger = {
		NOT = {
			has_character_flag = diarchy_away_in_war
		}		
		RegRew_mod_requirement_trigger = yes
		scope:army.army_commander ?=  { this = root }
		RegRew_is_at_war_diarch_trigger = yes
	}
	effect = {
		if = {
			limit = {
				has_active_diarchy = no
			}
			try_start_diarchy = temporary_regency
		}
		add_character_flag = diarchy_away_in_war	
		trigger_event = {
			id = RegRew_event_war_diarch.0001
			months = 1
		}			
	}
}

