﻿on_war_started = {
	on_actions = {
		cmd_plus_on_war_started
	}
}

cmd_plus_on_war_started = {
	# on_war_started can fire from edge-case or weak-CB contexts, so all scopes stay guarded.
	trigger = {
		OR = {
			scope:attacker ?= {
				OR = {
					has_trait = bannerlord
					any_vassal_or_below = { has_trait = bannerlord }
					any_courtier = { has_trait = bannerlord }
					has_government = celestial_government
				}
			}
			scope:defender ?= {
				has_government = celestial_government
			}
		}
	}
	effect = {
		scope:attacker ?= {
			every_vassal_or_below = {
				limit = { has_trait = bannerlord }
				cmd_plus_apply_bannerlord_war_start_modifier_effect = yes
			}
			every_courtier = {
				limit = { has_trait = bannerlord }
				cmd_plus_apply_bannerlord_war_start_modifier_effect = yes
			}
			if = {
				limit = { has_trait = bannerlord }
				cmd_plus_apply_bannerlord_war_start_modifier_effect = yes
			}
			if = {
				limit = { has_government = celestial_government }
				add_character_modifier = { modifier = cmd_celestial_war_readiness days = cmd_plus_celestial_war_readiness_duration_days }
			}
		}
		scope:defender ?= {
			if = {
				limit = { has_government = celestial_government }
				add_character_modifier = { modifier = cmd_celestial_war_readiness days = cmd_plus_celestial_war_readiness_duration_days }
			}
		}
	}
}
on_combat_unit_join_side = {
	on_actions = {
		cmd_plus_savior
		cmd_plus_levies_specialist_join_side
	}

}

cmd_plus_savior = {
	trigger = {
		cmd_plus_join_side_needs_savior_refresh = yes
	}
	effect = {
		scope:army.army_commander ?= {
			cmd_plus_refresh_military_savior_modifier_effect = yes
		}
	}
}
cmd_plus_levies_specialist_join_side = {
	trigger = {
		exists = scope:army
		exists = scope:army.location
	}
	effect = {
		# ROOT is the combat side and scope:army is the newly joined army. Recheck
		# every Levies Specialist already fighting on this exact side so a later
		# allied MAA army immediately removes a now-invalid bonus.
		save_temporary_scope_as = cmd_plus_joined_combat_side
		scope:army.location = {
			every_army_in_location = {
				limit = {
					involved_combat_side ?= { this = scope:cmd_plus_joined_combat_side }
					exists = army_commander
					army_commander = {
						is_alive = yes
						has_trait = levies_specialist
					}
				}
				cmd_plus_refresh_levies_specialist_for_army_effect = yes
			}
		}
	}
}

# CK3 1.20 rebase: first_valid cannot be safely appended; keep Commander+ cases before vanilla's generic fallback.
learn_commander_trait_offer = {
	first_valid = {
		learn_commander_trait.3101 # Commander+ custom trait
		learn_commander_trait.3201 # Commander+ custom trait
		learn_commander_trait.3301 # Commander+ custom trait
		learn_commander_trait.3401 # Commander+ custom trait
		learn_commander_trait.3501 # Commander+ custom trait
		learn_commander_trait.3601 # Commander+ custom trait
		learn_commander_trait.3701 # Commander+ custom trait
		learn_commander_trait.3801 # Commander+ custom trait
		learn_commander_trait.3901 # Commander+ custom trait
		learn_commander_trait.4001 # Commander+ custom trait
		learn_commander_trait.4101 # Commander+ custom trait
		learn_commander_trait.4201 # Commander+ custom trait
		learn_commander_trait.4301 # Commander+ custom trait
		learn_commander_trait.4401 # Commander+ custom trait
		learn_commander_trait.4501 # Commander+ custom trait
		learn_commander_trait.4601 # Commander+ custom trait
		learn_commander_trait.4701 # Commander+ custom trait
		learn_commander_trait.4801 # Commander+ custom trait
		learn_commander_trait.4901 # Commander+ custom trait
		learn_commander_trait.5001 # Commander+ custom trait
		learn_commander_trait.5101 # Commander+ custom trait
		learn_commander_trait.5201 # Commander+ custom trait
		learn_commander_trait.5301 # Commander+ custom trait
		learn_commander_trait.5401 # Commander+ custom trait
		learn_commander_trait.5501 # Commander+ custom trait
		learn_commander_trait.5601 # Commander+ custom trait
		learn_commander_trait.5701 # Commander+ custom trait
		learn_commander_trait.5801 # Commander+ custom trait
		learn_commander_trait.5901 # Commander+ custom trait
		learn_commander_trait.1101
	}
}
# CK3 1.20 rebase: preserve vanilla teacher-unavailable guard and generic fallback.
learn_commander_trait_test = {
	first_valid = {
		learn_commander_trait.1291 #Teacher is no longer with you
		learn_commander_trait.3102
		learn_commander_trait.3202
		learn_commander_trait.3302
		learn_commander_trait.3402
		learn_commander_trait.3502
		learn_commander_trait.3602
		learn_commander_trait.3702
		learn_commander_trait.3802
		learn_commander_trait.3902
		learn_commander_trait.4002
		learn_commander_trait.4102
		learn_commander_trait.4202
		learn_commander_trait.4302
		learn_commander_trait.4402
		learn_commander_trait.4502
		learn_commander_trait.4602
		learn_commander_trait.4702
		learn_commander_trait.4802
		learn_commander_trait.4902
		learn_commander_trait.5002
		learn_commander_trait.5102
		learn_commander_trait.5202
		learn_commander_trait.5302
		learn_commander_trait.5402
		learn_commander_trait.5502
		learn_commander_trait.5602
		learn_commander_trait.5702
		learn_commander_trait.5802
		learn_commander_trait.5902
		learn_commander_trait.1201
	}
}
# CK3 1.20 rebase: preserve vanilla teacher-unavailable guard and generic fallback.
learn_commander_trait_success = {
	first_valid = {
		learn_commander_trait.1391 #Teacher is no longer with you
		learn_commander_trait.3103
		learn_commander_trait.3203
		learn_commander_trait.3303
		learn_commander_trait.3403
		learn_commander_trait.3503
		learn_commander_trait.3603
		learn_commander_trait.3703
		learn_commander_trait.3803
		learn_commander_trait.3903
		learn_commander_trait.4003
		learn_commander_trait.4103
		learn_commander_trait.4203
		learn_commander_trait.4303
		learn_commander_trait.4403
		learn_commander_trait.4503
		learn_commander_trait.4603
		learn_commander_trait.4703
		learn_commander_trait.4803
		learn_commander_trait.4903
		learn_commander_trait.5003
		learn_commander_trait.5103
		learn_commander_trait.5203
		learn_commander_trait.5303
		learn_commander_trait.5403
		learn_commander_trait.5503
		learn_commander_trait.5603
		learn_commander_trait.5703
		learn_commander_trait.5803
		learn_commander_trait.5903
		learn_commander_trait.1301
	}
}
# CK3 1.20 rebase: preserve vanilla teacher-unavailable guard and generic fallback.
learn_commander_trait_failure = {
	first_valid = {
		learn_commander_trait.1491 #Teacher is no longer with you
		learn_commander_trait.3104
		learn_commander_trait.3204
		learn_commander_trait.3304
		learn_commander_trait.3404
		learn_commander_trait.3504
		learn_commander_trait.3604
		learn_commander_trait.3704
		learn_commander_trait.3804
		learn_commander_trait.3904
		learn_commander_trait.4004
		learn_commander_trait.4104
		learn_commander_trait.4204
		learn_commander_trait.4304
		learn_commander_trait.4404
		learn_commander_trait.4504
		learn_commander_trait.4604
		learn_commander_trait.4704
		learn_commander_trait.4804
		learn_commander_trait.4904
		learn_commander_trait.5004
		learn_commander_trait.5104
		learn_commander_trait.5204
		learn_commander_trait.5304
		learn_commander_trait.5404
		learn_commander_trait.5504
		learn_commander_trait.5604
		learn_commander_trait.5704
		learn_commander_trait.5804
		learn_commander_trait.5904
		learn_commander_trait.1401
	}
}


# Commander+ random acquisition events for the Martial lifestyle common pool.
# This appends custom commander-trait choice events without overriding vanilla martial_lifestyle_common_events.
martial_lifestyle_common_events = {
	random_events = {
		25 = learn_commander_trait.1901 # crafty_commander, master_ambusher, cautious_planner
		25 = learn_commander_trait.1902 # mapper, navigator, bannerlord
		25 = learn_commander_trait.1903 # resolute_localist, seasoned_rover
		25 = learn_commander_trait.1904 # battlefield_medic, dauntless_leader, relentless_pursuer
		25 = learn_commander_trait.1905 # focus_specialist, infiltration_specialist, observant_pathfinder
		25 = learn_commander_trait.1906 # respected_leader, zealot, patriot
		25 = learn_commander_trait.1907 # combined_arms, levies_specialist, skirmishers_specialist
		25 = learn_commander_trait.1908 # archers_specialist, heavy_cav_specialist, light_cav_specialist
		25 = learn_commander_trait.1909 # heavy_infantry_specialist, archer_cav_specialist, pikemen_specialist
		25 = learn_commander_trait.1910 # knights_specialist, military_savior, sea_raider
	}
}
