﻿on_combat_end_winner = {
	# Dragon fallback runs first. Cleanup comes after every duel route.
	on_actions = {
		bdp_ai_vs_ai_dragon_combat_end_fallback
		battlefield_duel_on_action
		battlefield_duel_ai_challenge_combat_end_cleanup
		battlefield_duel_squire_reward_on_combat_end
		battlefield_duel_opportunity_on_combat_end
		bdp_ai_vs_ai_on_combat_end
	}
}

on_combat_end_loser = {
	on_actions = {
		battlefield_duel_on_action
		battlefield_duel_ai_challenge_combat_end_cleanup
		battlefield_duel_squire_reward_on_combat_end
		battlefield_duel_opportunity_on_combat_end
		bdp_ai_vs_ai_on_combat_end
	}
}

on_release_from_prison = {
	on_actions = {
		battlefield_duel_squire_reward_on_release_from_prison
	}
}

battlefield_duel_on_action = {
	events = { battlefield_duel.3000 }
}

on_combat_start = {
	# Clear old locks before either player-facing system rolls this battle.
	on_actions = {
		bdp_ai_vs_ai_on_combat_start_cleanup
		battlefield_duel_ai_challenge_on_combat_start
		battlefield_duel_opportunity_on_combat_start
	}
}

on_combat_unit_join_side = {
	on_actions = {
		battlefield_duel_ai_challenge_on_unit_join
		battlefield_duel_opportunity_on_unit_join
	}
}

battlefield_duel_ai_challenge_on_combat_start = {
	effect = {

		every_player = {
			limit = {
				is_ai = no
				is_commanding_army = yes
				commanding_army = {
					is_army_in_combat = yes
					involved_combat_side = { combat = root }
				}
			}
			remove_variable = battlefield_duel_ai_challenge_current_combat
			remove_variable = battlefield_duel_ai_challenge_consumed_combat
			battlefield_duel_ai_challenge_cleanup_effect = yes
		}

		every_player = {
			limit = {
				is_ai = no
				is_alive = yes
				has_character_flag = battlefield_duel_ai_bodyguard_player_reserved
			}
			battlefield_duel_ai_challenge_clear_player_bodyguard_reservation_effect = yes
		}
		every_player = {
			limit = {
				is_ai = no
				is_alive = yes
				is_imprisoned = no
				is_commanding_army = yes
				commanding_army = {
					is_army_in_combat = yes
					involved_combat_side = { combat = root }
				}
				is_current_dragonrider_warfare = no
				NOT = { has_character_flag = battlefield_duel_ai_challenge_prompt }
				NOT = { has_character_flag = battlefield_duel_pending_prompt }
				NOT = { has_character_flag = already_fighting }
			}

			remove_character_flag = battlefield_duel_ai_challenge_auto_window
			remove_character_flag = battlefield_duel_ai_challenge_prompt
			remove_character_flag = battlefield_duel_ai_challenge_resolved_current_battle
			remove_character_flag = battlefield_duel_ai_challenge_roll_done_current_battle
			remove_character_flag = battlefield_duel_combat_finished_flag
			battlefield_duel_ai_challenge_roll_once_effect = yes
		}
	}
}

battlefield_duel_ai_challenge_on_unit_join = {
	# Reinforcements can fill eligibility, but they cannot reroll the battle.
	effect = {
		every_player = {
			limit = {
				is_ai = no
				is_alive = yes
				has_character_flag = battlefield_duel_ai_bodyguard_player_reserved
			}
			battlefield_duel_ai_challenge_clear_player_bodyguard_reservation_effect = yes
		}
		every_player = {
			limit = {
				is_ai = no
				is_alive = yes
				is_imprisoned = no
				is_commanding_army = yes
				commanding_army = {
					is_army_in_combat = yes
					involved_combat_side = { combat = root.combat }
				}
				is_current_dragonrider_warfare = no
				NOT = { has_character_flag = battlefield_duel_ai_challenge_roll_done_current_battle }
				NOT = { has_character_flag = battlefield_duel_ai_challenge_prompt }
				NOT = { has_character_flag = battlefield_duel_pending_prompt }
				NOT = { has_character_flag = already_fighting }
			}
			remove_character_flag = battlefield_duel_ai_challenge_auto_window
			remove_character_flag = battlefield_duel_ai_challenge_resolved_current_battle
			remove_character_flag = battlefield_duel_combat_finished_flag
			battlefield_duel_ai_challenge_roll_once_effect = yes
		}
	}
}

battlefield_duel_ai_challenge_combat_end_cleanup = {
	effect = {
		if = {
			limit = { exists = side_commander }
			side_commander = {
				battlefield_duel_ai_challenge_cleanup_effect = yes
				remove_character_flag = battlefield_duel_ai_challenge_auto_window
				remove_character_flag = battlefield_duel_ai_challenge_prompt
				remove_character_flag = battlefield_duel_ai_challenge_recent
				remove_character_flag = battlefield_duel_ai_challenge_refused
				remove_character_flag = battlefield_duel_ai_challenge_resolved_current_battle
				remove_character_flag = battlefield_duel_ai_challenge_roll_done_current_battle
				remove_variable = battlefield_duel_ai_challenge_current_combat
				remove_variable = battlefield_duel_ai_challenge_consumed_combat
				battlefield_duel_ai_challenge_clear_player_bodyguard_reservation_effect = yes
			}
		}
		every_side_commander = {
			limit = { is_ai = no }
			battlefield_duel_ai_challenge_cleanup_effect = yes
			remove_character_flag = battlefield_duel_ai_challenge_auto_window
			remove_character_flag = battlefield_duel_ai_challenge_prompt
			remove_character_flag = battlefield_duel_ai_challenge_recent
			remove_character_flag = battlefield_duel_ai_challenge_refused
			remove_character_flag = battlefield_duel_ai_challenge_resolved_current_battle
			remove_character_flag = battlefield_duel_ai_challenge_roll_done_current_battle
			remove_variable = battlefield_duel_ai_challenge_current_combat
			remove_variable = battlefield_duel_ai_challenge_consumed_combat
			battlefield_duel_ai_challenge_clear_player_bodyguard_reservation_effect = yes
		}
	}
}

battlefield_duel_squire_reward_on_combat_end = {
	effect = {
		every_side_commander = {
			limit = {
				is_ai = no
				is_alive = yes
				has_character_flag = battlefield_duel_pending_squire_reward
				NOT = { has_character_flag = battlefield_duel_squire_reward_queued }
				any_relation = {
					type = agot_squire
					has_character_flag = battlefield_duel_pending_squire_reward_target
				}
			}
			add_character_flag = { flag = battlefield_duel_squire_reward_queued days = 365 }
			debug_log = "BD+ SQUIRE REWARD DISPATCHED FROM COMBAT END"
			debug_log_scopes = yes
			trigger_event = { id = battlefield_duel.9160 }
		}
	}
}

battlefield_duel_squire_reward_on_release_from_prison = {
	effect = {
		if = {
			limit = {
				is_ai = no
				is_alive = yes
				has_character_flag = battlefield_duel_pending_squire_reward
				any_relation = {
					type = agot_squire
					has_character_flag = battlefield_duel_pending_squire_reward_target
				}
			}
			add_character_flag = { flag = battlefield_duel_squire_reward_queued days = 365 }
			debug_log = "BD+ SQUIRE REWARD RECHECKED AFTER PLAYER RELEASE"
			debug_log_scopes = yes
			trigger_event = { id = battlefield_duel.9160 }
		}

		if = {
			limit = {
				is_alive = yes
				has_character_flag = battlefield_duel_pending_squire_reward_target
				any_relation = {
					type = agot_knight
					is_ai = no
					is_alive = yes
					has_character_flag = battlefield_duel_pending_squire_reward
				}
			}
			random_relation = {
				type = agot_knight
				limit = {
					is_ai = no
					is_alive = yes
					has_character_flag = battlefield_duel_pending_squire_reward
				}
				save_scope_as = battlefield_duel_rewarding_knight
			}
			scope:battlefield_duel_rewarding_knight = {
				add_character_flag = { flag = battlefield_duel_squire_reward_queued days = 365 }
				debug_log = "BD+ SQUIRE REWARD RECHECKED AFTER SQUIRE RELEASE"
				debug_log_scopes = yes
				trigger_event = { id = battlefield_duel.9160 }
			}
		}
	}
}
