#If you change the values loc for WTT_border_incident_delay_until_new_incident_180 and WTT_border_incident_delay_until_new_incident_120 has to be changed
@border_incident_escalation_countdown = 15
@border_conflict_incident_forgotten_timer = 30
@border_conflict_escalate_to_war_countdown = 45
@border_conflict_time_until_cancelled = 360

operations = {

	MON_border_conflict_initiate_incident = {
		icon = border_war		

		allowed = {
			OR = {
				tag = MEN
				tag = MON
			}
		}

		available = {
			any_state = {
				has_state_flag = MON_clash_territory
				is_owned_and_controlled_by = FROM
				set_temp_variable = { var:test_state_temp = id }
				any_neighbor_state = {
					is_fully_controlled_by = ROOT
					set_temp_variable = { var:attacker_state_temp = id }
					custom_trigger_tooltip = {
						tooltip = MON_has_border_troops
						ROOT = {
							divisions_in_border_state = {
								state = var:attacker_state_temp
								border_state = var:test_state_temp
								size > 0
							}
						}
					}
					hidden_trigger = { NOT = { has_state_flag = border_incident_active } }
				}
				NOT = { has_state_flag = border_incident_active }
				set_temp_variable = { var:defender_state_temp = id }
			}
			NOT = { has_non_aggression_pact_with = FROM }
		}

		visible = {
			OR = {
				has_completed_focus = MON_expansion
				has_completed_focus = MEN_prepare
			}
			OR = {
				NOT = { has_completed_focus = MON_SOV_focus }
				has_country_flag = MON_expansion_allowed 
			}
			FROM = { exists = yes }
			NOT = { has_war_with = FROM }
			FROM = { has_not_initiated_border_incident_with_ROOT = yes }
			FROM = {
				NOT = {
					is_subject_of = ROOT
				}
				NOT = {
					is_in_faction_with = ROOT
				}
			}
			
			any_state = {
				has_state_flag = MON_clash_territory
				is_owned_and_controlled_by = FROM
				OR = {
					AND = {
						ROOT = { is_ai = yes }
						OR = {
							is_core_of = ROOT
							is_claimed_by = ROOT
						}
						
						ROOT = { has_opinion = { target = FROM value < 80 } }
					}
					
					ROOT = { is_ai = no }
				}
				
				any_neighbor_state = {
					is_fully_controlled_by = ROOT
				}
			}
			
			NOT = {
				is_subject_of = FROM
			}

			OR = {
				NOT = { has_border_war_with = FROM }
				any_state = {
					is_owned_and_controlled_by = FROM
					hidden_trigger = { NOT = { has_state_flag = border_incident_active } }
					any_neighbor_state = {
						hidden_trigger = { NOT = { has_state_flag = border_incident_active } }
						is_fully_controlled_by = ROOT
					}
				}
			}
		}

		target_trigger = {
			is_not_china = yes
			FROM = { is_not_china = yes }
		}

		highlight_states = {
			OR = {
				state = FROM.defender_state_vs_@ROOT
				AND = {
					has_state_flag = MON_clash_territory
					is_owned_and_controlled_by = FROM
					OR = {
						AND = {
							ROOT = { is_ai = yes }
							OR = {
								is_core_of = ROOT
								is_claimed_by = ROOT
							}
						}
						
						ROOT = { is_ai = no }
					}
					
					set_temp_variable = { var:test_state_temp = id }
					hidden_trigger = { NOT = { has_state_flag = border_incident_active } }
					any_neighbor_state = {
						hidden_trigger = { NOT = { has_state_flag = border_incident_active } }
						set_temp_variable = { var:attacker_state_temp = id }
						ROOT = {
							divisions_in_border_state = {
								state = var:attacker_state_temp
								border_state = var:test_state_temp
								size > 0
							}
						}
						is_fully_controlled_by = ROOT
					}
				}
			}
		}

		ai_will_do = {
			base = 0.2
			modifier = {
				OR = {
					NOT = {
						FROM = {
							any_owned_state = {
								OR = {
									is_core_of = ROOT
									is_claimed_by = ROOT
								}
							}
						}
					}
					
					ROOT = { has_government = democratic }
				}
				factor = 0
			}
			
			modifier = {
				FROM = {
					any_owned_state = {
						is_core_of = ROOT
					}
				}
				
				factor = 0.5
			}
			
			modifier = {
				NOT = { ROOT = { has_government = fascism } }
				
				factor = 0.1
			}
			
			modifier = {
				ROOT = { strength_ratio = { tag = FROM ratio < 0.5 } }
				
				factor = 0
			}
		}

		cost = 100

		fire_only_once = no

		days_remove = @border_incident_escalation_countdown
		days_re_enable = 150

		war_with_target_on_remove = yes

		complete_effect = {
			if = {
				limit = { has_government = democratic }
				ROOT = { add_popularity = { ideology = democratic popularity = -0.03 } }
			}
			hidden_effect = {
				random_state = {
					limit = {
						has_state_flag = MON_clash_territory
						is_owned_and_controlled_by = FROM
						OR = {
							AND = {
								ROOT = { is_ai = yes }
								OR = {
									is_core_of = ROOT
									is_claimed_by = ROOT
								}
							}
					
							ROOT = { is_ai = no }
						}
						
						set_temp_variable = { test_defender_state_temp = id }
						hidden_trigger = { NOT = { has_state_flag = border_incident_active } }
						any_neighbor_state = {
							hidden_trigger = { NOT = { has_state_flag = border_incident_active } }
							set_temp_variable = { test_attacker_state_temp = id }
							ROOT = {
								divisions_in_border_state = {
									state = var:test_attacker_state_temp
									border_state = var:test_defender_state_temp
									size > 0
								}
							}
							is_fully_controlled_by = ROOT
						}
					}
					save_event_target_as = defender_state
					set_variable = { FROM.defender_state_vs_@ROOT = id }
					set_temp_variable = { defender_state_temp = id }
					set_state_flag = border_incident_active
				}
				random_state = {
					limit = {
						is_fully_controlled_by = ROOT
						hidden_trigger = { NOT = { has_state_flag = border_incident_active } }
						set_temp_variable = { attack_dir_state_temp = id }
						ROOT = {
								divisions_in_border_state = {
									state = var:attack_dir_state_temp
									border_state = var:FROM.defender_state_vs_@ROOT
									size > 0
								}
							}
							
						any_neighbor_state = {
							state = var:FROM.defender_state_vs_@ROOT
						}
					}
					save_event_target_as = attacker_state
					set_variable = { FROM.attacker_state_vs_@ROOT = id }
					set_temp_variable = { attacker_state_temp = id }
					set_state_flag = border_incident_active
				}
			}
			custom_effect_tooltip = MON_border_incident_delay_until_new_incident_180
			FROM = {
				country_event = { id = MON_border_incident_defender_warning.1 hours = 1 }
				activate_targeted_decision = { target = ROOT decision = MON_border_conflict_incident_warning_defender }				
			}
		}
		remove_effect = {
			hidden_effect = {
				var:FROM.defender_state_vs_@ROOT = {
					save_event_target_as = defender_state 
				}
				var:FROM.attacker_state_vs_@ROOT = {
					save_event_target_as = attacker_state 
				}
				random_state = {
					limit = {
						has_state_flag = MON_clash_territory
						is_owned_and_controlled_by = FROM
						OR = {
							AND = {
								ROOT = { is_ai = yes }
								OR = {
									is_core_of = ROOT
									is_claimed_by = ROOT
								}
							}
					
							ROOT = { is_ai = no }
						}
						
						hidden_trigger = { NOT = { has_state_flag = border_incident_active } }
						any_neighbor_state = {
							is_fully_controlled_by = ROOT
							has_ROOT_at_least_1_div_in_current_state_scope = yes
							hidden_trigger = { NOT = { has_state_flag = border_incident_active } }
						}
					}
					set_temp_variable = { defender_state_temp = id }
				}
				random_state = {
					limit = {
						is_fully_controlled_by = ROOT
						hidden_trigger = { NOT = { has_state_flag = border_incident_active } }
						has_ROOT_at_least_1_div_in_current_state_scope = yes
						any_neighbor_state = {
							state = var:FROM.defender_state_vs_@ROOT
						}
					}
					set_temp_variable = { attacker_state_temp = id }
				}
			}
			activate_targeted_decision = { target = FROM decision = MON_escalate_incident_to_border_conflict }
		}
	}

	#Mission for defender warning that a conflict with FROM is coming
	MON_border_conflict_incident_warning_defender = {

		icon = border_war

		allowed = { always = no } #Activated from effect

		available = {
			hidden_trigger = { always = no }
		}

		highlight_states = {
			OR = {
				state = var:defender_state_temp
				state = var:ROOT.defender_state_vs_@FROM
			}
		}

		war_with_target_on_timeout = yes
		ai_will_do = {
			base = 0
			modifier = {
				
			}
		}

		days_mission_timeout = @border_incident_escalation_countdown

		fire_only_once = yes

		is_good = no
		
		timeout_effect = {
			custom_effect_tooltip = escalation_possible_tooltip_for_defender
			custom_effect_tooltip = effects_if_border_conflict_is_lost
			effect_tooltip = {
				add_political_power = -100
				var:ROOT.defender_state_vs_@FROM = { FROM = { transfer_state = PREV } }
			}
			hidden_effect = {
				remove_targeted_decision = { target = FROM decision = MON_border_conflict_incident_warning_defender }
				activate_targeted_decision = { target = FROM decision = MON_border_conflict_escalation_warning_defender }
			}
		}
	}

	#Mission for defender warning FROM can escalate to war at any point is coming
	MON_border_conflict_escalation_warning_defender = {

		icon = border_war

		allowed = { always = no } #Activated from effect

		available = {
			hidden_trigger = { always = no }
		}

		highlight_states = {
			OR = {
				state = var:defender_state_temp
				state = var:ROOT.defender_state_vs_@FROM
			}
		}

		war_with_target_on_timeout = yes
		ai_will_do = {
			base = 0
			modifier = {
				
			}
		}

		days_mission_timeout = @border_conflict_incident_forgotten_timer

		fire_only_once = yes

		is_good = no

		timeout_effect = {
			custom_effect_tooltip = from_cannot_escalate
			custom_effect_tooltip = effects_if_border_conflict_is_lost
			effect_tooltip = {
				add_political_power = -100
				var:ROOT.defender_state_vs_@FROM = { FROM = { transfer_state = PREV } }
			}
		}		
	}

	#Mission for attacker to escalate or incident is forgotten
	#Decision to escalate incident on border with FROM to border conflict
	MON_escalate_incident_to_border_conflict = {

		icon = border_war

		allowed = { always = no } #Activated from effect

		available = {
			var:FROM.attacker_state_vs_@ROOT = {
				is_fully_controlled_by = ROOT
			}
				divisions_in_border_state = {
					state = var:FROM.attacker_state_vs_@ROOT
					border_state = var:FROM.defender_state_vs_@ROOT
					size > 0
				}
		}

		highlight_states = {
			state = var:FROM.attacker_state_vs_@ROOT			
		}

		ai_will_do = {
			base = 200
			modifier = {
				
			}
		}
		
		cancel_trigger = {
			is_in_faction_with = FROM
		}

		selectable_mission = yes

		fire_only_once = yes #Reactivation handled in effect

		days_mission_timeout = @border_conflict_incident_forgotten_timer

		timeout_effect = {
			custom_effect_tooltip = MON_border_incident_delay_until_new_incident_120
			hidden_effect = {
				FROM = { remove_targeted_decision = { target = ROOT decision = MON_border_conflict_escalation_warning_defender } }
				FROM = {
					var:attacker_state_vs_@ROOT = {
						clr_state_flag = border_incident_active
					}
					var:defender_state_vs_@ROOT = {
						clr_state_flag = border_incident_active
					}
					clear_variable = attacker_state_vs_@ROOT
					clear_variable = defender_state_vs_@ROOT
				}
			}
		}

		complete_effect = {
			start_border_war = {
				change_state_after_war = no
				attacker = {
					state = var:FROM.attacker_state_vs_@ROOT
					num_provinces = 4
					on_win = MON_border_conflict_won_attacker.1
					on_lose = MON_border_conflict_lost_attacker.1
					on_cancel = MON_border_conflict_canceled_attacker.1
				}
				
				defender = {
					state = var:FROM.defender_state_vs_@ROOT
					num_provinces = 4
					on_win = MON_border_conflict_won_defender.1
					on_lose = MON_border_conflict_lost_defender.1
					on_cancel = MON_border_conflict_canceled_defender.1
				}
			}
			hidden_effect = { FROM = { remove_targeted_decision = { target = ROOT decision = MON_border_conflict_escalation_warning_defender } } }
			FROM = {
				activate_targeted_decision = { target = ROOT decision = MON_border_conflict_escalate_conflict }
				activate_targeted_decision = { target = ROOT decision = MON_border_conflict_time_until_cancelled }
			}
			activate_targeted_decision = { target = FROM decision = MON_border_conflict_escalate_conflict }
			activate_targeted_decision = { target = FROM decision = MON_border_conflict_time_until_cancelled }
		}
	}

	#Mission for attacker to win border war against FROM in X days
	MON_border_conflict_time_until_cancelled = {

		icon = border_war

		allowed = { always = no } #Activated from effect

		available = {
			var:FROM.defender_state_vs_@ROOT = { has_border_war = no }
			var:FROM.attacker_state_vs_@ROOT = { has_border_war = no }
		}
		
		highlight_states = {
			OR = {
				state = var:defender_state_temp
				state = var:FROM.defender_state_vs_@ROOT
			}
		}

		ai_will_do = {
			base = 0
			modifier = {
				
			}
		}

		days_mission_timeout = @border_conflict_time_until_cancelled
		is_good = no

		fire_only_once = yes #Reactivation handled in effect

		complete_effect = {

		}

		timeout_effect = {
			if = {
				limit = { is_border_conflict_defender_vs_FROM = yes }
				cancel_border_war = {
					defender = var:defender_state_vs_@FROM
					attacker = var:attacker_state_vs_@FROM
				}
			}
			else = {
				cancel_border_war = {
					defender = var:FROM.defender_state_vs_@ROOT
					attacker = var:FROM.attacker_state_vs_@ROOT
				}
			}
			hidden_effect = {
				remove_targeted_decision = { target = FROM decision = MON_border_conflict_escalate_conflict }
			}
		}
	}

	#Decision to escalate conflict further
	MON_border_conflict_escalate_conflict = {

		icon = decision_generic_ignite_civil_war

		allowed = { always = no } #Activated from effect

		visible = {
			has_border_war_with = FROM
		}

		highlight_states = {
			OR = {
				state = var:FROM.attacker_state_vs_@ROOT
				state = var:ROOT.defender_state_vs_@FROM
			}
		}

		cost = 200

		ai_will_do = {
			base = 0
			modifier = {
				
			}
		}

		fire_only_once = yes #Reactivation handled in effect

		complete_effect = {
			if = {
				limit = { is_border_conflict_defender_vs_FROM = yes }
				set_border_war_data = {
					attacker = var:ROOT.defender_state_vs_@FROM
					defender = var:ROOT.defender_state_vs_@FROM
					defender_modifier = 0.15
					combat_width = 100
				}
			}
			else = {
				set_border_war_data = {
					attacker = var:FROM.defender_state_vs_@ROOT
					defender = var:FROM.defender_state_vs_@ROOT
					attacker_modifier = 0.15
					combat_width = 100
				}
			}
			FROM = {
				set_country_flag = {
					flag = MON_border_conflict_escalate_to_war_cooldown_@ROOT
					days = @border_conflict_escalate_to_war_countdown
					value = 1
				}
				remove_targeted_decision = { target = ROOT decision = MON_border_conflict_escalate_conflict }
			}
			set_country_flag = {
				flag = MON_border_conflict_escalate_to_war_cooldown_@FROM
				days = @border_conflict_escalate_to_war_countdown
				value = 1
			}
			custom_effect_tooltip = in_45_days
			activate_targeted_decision = { target = FROM decision = MON_border_conflict_escalate_to_war }
		}
	}

	#Decision to escalate conflict further
	MON_border_conflict_escalate_to_war = {

		icon = decision_generic_ignite_civil_war

		allowed = { always = no } #Activated from effect

		visible = {
			NOT = { has_country_flag = MON_border_conflict_escalate_to_war_cooldown_@FROM }
			has_border_war_with = FROM
		}

		highlight_states = {
			OR = {
				state = var:FROM.defender_state_vs_@ROOT
				state = var:ROOT.attacker_state_vs_@FROM
			}
		}

		cost = 150

		ai_will_do = {
			base = 0
			modifier = {
				
			}
		}

		days_remove = 15

		fire_only_once = yes #Reactivation handled in effect

		war_with_target_on_remove = yes

		complete_effect = {
			if = {
				limit = { is_border_conflict_defender_vs_FROM = yes }
				var:ROOT.defender_state_vs_@FROM = { save_event_target_as = their_state }
				var:ROOT.attacker_state_vs_@FROM = { save_event_target_as = our_state }
			}
			else = {
				var:FROM.defender_state_vs_@ROOT = { save_event_target_as = our_state }
				var:FROM.attacker_state_vs_@ROOT = { save_event_target_as = their_state }
			}
			FROM = {
				country_event = { id = MON_border_conflict_escalate_to_war.1 }
				hidden_effect = {
					remove_targeted_decision = { target = ROOT decision = MON_border_conflict_escalate_to_war }
				}
		 	}
		}

		remove_effect = {
			cancel_border_war = {
				dont_fire_events = yes
				defender = var:FROM.defender_state_vs_@ROOT
				attacker = var:FROM.attacker_state_vs_@ROOT
			}
			declare_war_on = { target = FROM type = annex_everything }
			if = {
				limit = { is_border_conflict_defender_vs_FROM = yes }
				var:attacker_state_vs_@FROM = {
					clr_state_flag = border_incident_active
				}
				var:defender_state_vs_@FROM = {
					clr_state_flag = border_incident_active
				}
				clear_variable = attacker_state_vs_@FROM
				clear_variable = defender_state_vs_@FROM
			}
			else = {
				FROM = {
					var:attacker_state_vs_@ROOT = {
						clr_state_flag = border_incident_active
					}
					var:defender_state_vs_@ROOT = {
						clr_state_flag = border_incident_active
					}
					clear_variable = attacker_state_vs_@ROOT
					clear_variable = defender_state_vs_@ROOT
				}
			}
		}
	}

	#Decision to back down from conflict
	MON_border_conflict_back_out_of_conflict = {

		allowed = { always = no } #Activated from effect

		visible = {
			has_border_war_with = FROM
		}

		highlight_states = {
			OR = {
				state = var:FROM.attacker_state_vs_@ROOT
				state = var:ROOT.defender_state_vs_@FROM
			}
		}

		ai_will_do = {
			base = 0
			modifier = {
				
			}
		}

		fire_only_once = yes #Reactivation handled in effect

		complete_effect = {
			if = {
				limit = { is_border_conflict_defender_vs_FROM = yes }
				finalize_border_war = {
					attacker_win = yes
					attacker = ROOT.attacker_state_vs_@FROM
					defender = ROOT.attacker_state_vs_@FROM
				}
			}
			else = {
				finalize_border_war = {
					attacker = FROM.attacker_state_vs_@ROOT
					defender = FROM.attacker_state_vs_@ROOT
					defender_win = yes
				}
			}
		}
	}
}