namespace = peace_deals_expanded

# Periodic AI peace assessment. One monitor runs per eligible external war.
peace_deals_expanded.0400 = {
	type = character_event
	hidden = yes

	trigger = {
		exists = scope:war
		scope:war ?= {
			using_civil_war_cb_trigger = no
			OR = {
				primary_attacker = { is_ai = yes }
				primary_defender = { is_ai = yes }
			}
			NOT = { has_variable = pde_ai_offer_pending }
		}
	}

	immediate = {
		scope:war ?= {
			primary_attacker = { save_scope_as = pde_ai_attacker }
			primary_defender = { save_scope_as = pde_ai_defender }
		}

		# Against a player, the opposing AI is always the negotiator. Between two
		# AI rulers, the side currently ahead opens the talks.
		if = {
			limit = {
				scope:pde_ai_attacker = { is_ai = yes }
				scope:pde_ai_defender = { is_ai = no }
			}
			scope:pde_ai_attacker = { save_scope_as = pde_ai_proposer }
			scope:pde_ai_defender = { save_scope_as = pde_ai_opponent }
		}
		else_if = {
			limit = {
				scope:pde_ai_attacker = { is_ai = no }
				scope:pde_ai_defender = { is_ai = yes }
			}
			scope:pde_ai_defender = { save_scope_as = pde_ai_proposer }
			scope:pde_ai_attacker = { save_scope_as = pde_ai_opponent }
		}
		else_if = {
			limit = {
				scope:pde_ai_attacker = { is_ai = yes }
				scope:pde_ai_defender = { is_ai = yes }
				scope:war ?= { attacker_war_score >= 0 }
			}
			scope:pde_ai_attacker = { save_scope_as = pde_ai_proposer }
			scope:pde_ai_defender = { save_scope_as = pde_ai_opponent }
		}
		else_if = {
			limit = {
				scope:pde_ai_attacker = { is_ai = yes }
				scope:pde_ai_defender = { is_ai = yes }
			}
			scope:pde_ai_defender = { save_scope_as = pde_ai_proposer }
			scope:pde_ai_attacker = { save_scope_as = pde_ai_opponent }
		}

		if = {
			limit = {
				exists = scope:pde_ai_proposer
				exists = scope:pde_ai_opponent
			}
			scope:pde_ai_proposer = {
				trigger_event = { id = peace_deals_expanded.0401 }
			}
		}

		# Only a still-valid war receives another pulse. If the helper accepted an
		# AI-to-AI treaty, the optional scope simply skips this block.
		scope:war ?= {
			primary_attacker = {
				trigger_event = {
					id = peace_deals_expanded.0400
					months = 8
				}
			}
		}
	}
}

# Compose and dispatch with ROOT = AI proposer. The delayed monitor is rooted on
# the attacker, so this event boundary is required when the proposer is defender.
peace_deals_expanded.0401 = {
	type = character_event
	hidden = yes

	trigger = {
		is_alive = yes
		NOT = { has_variable = pde_treaty_locked }
		NOT = { has_character_modifier = pde_rebuffed_negotiator_modifier }
		exists = scope:war
		exists = scope:pde_ai_opponent
		scope:pde_ai_opponent = {
			is_alive = yes
			OR = {
				is_ai = yes
				NOT = { has_variable = pde_pending_treaty_proposer }
			}
		}
		scope:war ?= {
			using_civil_war_cb_trigger = no
			NOT = { has_variable = pde_ai_offer_pending }
			OR = {
				AND = { primary_attacker = root primary_defender = scope:pde_ai_opponent }
				AND = { primary_defender = root primary_attacker = scope:pde_ai_opponent }
			}
		}
	}

	immediate = {
		pde_open_treaty_effect = yes
		if = {
			limit = {
				OR = {
					pde_actor_warscore_value >= 75
					pde_actor_warscore_value <= -75
				}
			}
			random = {
				chance = 80
				pde_ai_compose_treaty_effect = yes
			}
		}
		else_if = {
			limit = {
				OR = {
					pde_actor_warscore_value >= 50
					pde_actor_warscore_value <= -50
				}
			}
			random = {
				chance = 60
				pde_ai_compose_treaty_effect = yes
			}
		}
		else_if = {
			limit = {
				OR = {
					pde_actor_warscore_value >= 30
					pde_actor_warscore_value <= -30
				}
			}
			random = {
				chance = 45
				pde_ai_compose_treaty_effect = yes
			}
		}
		else_if = {
			limit = {
				OR = {
					pde_actor_warscore_value >= 15
					pde_actor_warscore_value <= -15
				}
			}
			random = {
				chance = 30
				pde_ai_compose_treaty_effect = yes
			}
		}
		pde_ai_dispatch_treaty_effect = yes
	}
}
