﻿#Events fired for the settlement of declaration of war

namespace = mig_event


#low born commander
mig_event.1001 = {
	hidden = yes
	
	trigger = {
		OR = {
			liege_or_court_owner = { is_ai = no }	
			has_game_rule = mig_both_player_ai
		}
	}

	immediate = {
		root = {
			save_scope_as = commander #needed for loc, and only players can invalidate other player's war
		}
		
		commanding_army = {
			save_scope_as = army
		}
		
		liege_or_court_owner = {
			random_knight = {
				limit = { 							
					knight_army = scope:army
					is_landed = yes
					is_lowborn = no
				}
				save_scope_as = noble_knight
			}
		}
		
	}

	option = { # replace commander
		liege_or_court_owner = {
			trigger_event = mig_event.0001
		}
	}
}

#low born commander
mig_event.0001 = {
	type = character_event
	title = mig_event.0001.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = { 
					scope:commander = { is_lowborn = yes }
				}
				desc = mig_event.0001.desc.lowborn
			}
			desc = mig_event.0001.desc.unlanded
		}
	}
	theme = war
	right_portrait = {
		character = scope:commander
		animation = rage
	}
	left_portrait = {
		character = scope:noble_knight
		animation = disapproval
	}
	
	trigger = {
		NOT = { root = scope:commander }
		NOT = { has_character_flag = lowborn_commander_allowed  }
		scope:commander = { is_commanding_army = yes }
	}

	immediate = {
		random_held_title = {
			limit = {
				tier = tier_county
			}
			save_scope_as = granted_title
		}
	}

	option = { # replace commander
		name = mig_event.0001.a
		
		scope:army = {
			remove_commander = yes
		}
		
		reverse_add_opinion = { 
			modifier = revoked_my_commandership 
			target = scope:commander
		}
		
		scope:commander = {
			add_character_flag = { 
				flag = commandership_recently_revoked
				years = 5 
			}
		}
	}

	option = { # keep commander
		name = mig_event.0001.b
		
		
		every_vassal = {
			limit = { 
				has_vassal_stance = courtly
			}
			custom = every_courtly_vassal
			add_opinion = {
				modifier = disappointed_opinion
				opinion = -15
				target = root
			}
		}
		
		every_knight = {
			limit = { 
				is_lowborn = no
				is_landed = yes
				knight_army	 = scope:commander.commanding_army
			}
			custom = every_noble_knight_in_army
			add_opinion = {
				modifier = disappointed_opinion
				opinion = -15
				target = root
			}
		}
		
		add_character_flag = { 
			flag = lowborn_commander_allowed 
			years = 5 
		}
		
		add_legitimacy = -10
	}
	
	option = { # land commander
		name = mig_event.0001.c
		
		trigger = {
			any_held_title = {
				tier = tier_county
				count >= 2
			}
		}

		create_title_and_vassal_change = {
			type = granted
			save_scope_as = change
		}
		
		scope:granted_title = {
			change_title_holder = {
				holder = scope:commander
				change = scope:change
			}
		}
		
		reverse_add_opinion = { 
			modifier = pleased_opinion
			opinion = 80
			target = scope:commander
		}
		
		resolve_title_and_vassal_change = scope:change
	}
}

#battle aftermath
mig_event.0002 = {
	hidden = yes
	scope = combat_side

	trigger = {
		# Check to ensure all needed scopes are valid
		exists = combat.location
		exists = side_commander
		exists = enemy_side.side_commander
		exists = combat.combat_war
		exists = side_primary_participant
		exists = enemy_side.side_primary_participant
		calc_true_if = {
			amount >= 2
			any_in_list = {
				list = slain_combatants
				OR = {
					this = root.enemy_side.side_primary_participant
					is_heir_of = root.enemy_side.side_primary_participant
					is_consort_of = root.enemy_side.side_primary_participant
				}
			}
			any_in_list = {
				list = prisoners_of_war
				OR = {
					this = root.enemy_side.side_primary_participant
					is_heir_of = root.enemy_side.side_primary_participant
					is_consort_of = root.enemy_side.side_primary_participant
				}
			}
			troops_ratio <= 0.5
			num_enemies_killed >= battle_poi_number_value # Scaling the later it gets, starts with 5000 before 1000 and then multiplies by 2 in 1000, 3 in 1100, etc
			AND = {
				percent_enemies_killed >= 65
				combat = {
					num_total_troops >= {
						add = battle_poi_number_value 
						multiply = 2
					}
				}
			}
			combat = {
				OR = {
					num_total_troops >= {
						add = battle_poi_number_value
						multiply = 3
					}
					warscore_value >= 15
				}
			}
		}
		
	}

	immediate = {
		root.side_commander = { 
			save_scope_as = winning_commander
		}
		
		
		root.enemy_side.side_commander = { 
			save_scope_as = losing_commander
		}
		
		combat.location = {
			save_scope_as = combat_location
		}
			
		combat.combat_war = {
			save_scope_as = target_war
		}
	}
	
	
	
	option = { 
	
		
		scope:winning_commander = {
			liege_or_court_owner = {
				if = {
					limit = {
						is_leader_in_war = scope:target_war
					}
					trigger_event = mig_event.0003
				}
			}
		}
		
		scope:losing_commander = {
			liege_or_court_owner = {
				if = {
					limit = {
						is_leader_in_war = scope:target_war
					}
					trigger_event = mig_event.0004
				}
			}
		}
	}
}

mig_event.0003 = { #Winning side
	type = character_event
	title = mig_event.0003.t
	desc = mig_event.0003.desc
	theme = war
	right_portrait = {
		character = scope:winning_commander
		animation = war_over_win
	}
	left_portrait = {
		character = scope:losing_commander
		animation = war_over_loss
	}
	
	trigger = {
		OR = {
			is_ai = no
			has_game_rule = mig_both_player_ai
		}
		NOT = { has_character_flag = important_battle_aftermath_cooldown  }
		scope:winning_commander = { is_alive = yes }
		NOT = { root = scope:winning_commander }
	}

	immediate = {
		add_character_flag = { 
			flag = important_battle_aftermath_cooldown
			years = 20
		}
		
		random_held_title = {
			limit = {
				tier = tier_county
			}
			save_scope_as = granted_title
		}
	}

	option = { # reward with cash
		name = mig_event.0003.a
		pay_short_term_gold = {
			target = scope:winning_commander
			gold = minor_gold_value
		}
		
		reverse_add_opinion = { 
			modifier = pleased_opinion
			opinion = 20
			target = scope:winning_commander
		}
		
		stress_impact = {
			greedy = major_stress_impact_gain
			generous = major_stress_impact_loss
		}
		
		every_vassal = {
			limit = { 
				has_vassal_stance = glory_hound
			}
			custom = every_glory_hound_vassal
			add_opinion = {
				modifier = pleased_opinion
				opinion = 15			
				target = root
			}
		}
	}

	
	option = { # reward with title
		name = mig_event.0003.b
		trigger = {
			any_held_title = {
				tier = tier_county
				count >= 2
			}
		}

		create_title_and_vassal_change = {
			type = granted
			save_scope_as = change
		}
		
		scope:granted_title = {
			change_title_holder = {
				holder = scope:winning_commander
				change = scope:change
			}
		}
		
		resolve_title_and_vassal_change = scope:change
		
		reverse_add_opinion = { 
			modifier = pleased_opinion
			opinion = 60
			target = scope:winning_commander
		}
		
		every_vassal = {
			limit = { 
				has_vassal_stance = glory_hound
			}
			custom = every_glory_hound_vassal
			add_opinion = {
				modifier = pleased_opinion
				opinion = 15	
				target = root
			}
		}
		
		add_legitimacy = 50
		
		stress_impact = {
			greedy = major_stress_impact_gain
			generous = major_stress_impact_loss
		}
	}
	
	
	option = { # no reward 
		name = mig_event.0003.c
		
		reverse_add_opinion = { 
			modifier = disappointed_opinion
			opinion = -60
			target = scope:winning_commander
		}
		
		every_vassal = {
			limit = { 
				has_vassal_stance = glory_hound
			}
			custom = every_glory_hound_vassal
			add_opinion = {
				modifier = unfair_rewarded
				years = 20
				target = root
			}
		}
		
		stress_impact = {
			greedy = major_stress_impact_loss
			generous = major_stress_impact_gain
		}
	}
	
}



mig_event.0004 = { #lose a battle
	type = character_event
	title = mig_event.0004.t
	desc = mig_event.0004.desc
	theme = war
	right_portrait = {
		character = scope:winning_commander
		animation = war_over_win
	}
	left_portrait = {
		character = scope:losing_commander
		animation = war_over_loss
	}
	
	trigger = {
		OR = {
			is_ai = no
			has_game_rule = mig_both_player_ai
		}
		NOT = { has_character_flag = important_battle_aftermath_cooldown  }
		NOT = { root = scope:losing_commander }
	}

	immediate = {
		add_character_flag = { 
			flag = important_battle_aftermath_cooldown
			years = 20
		}

	}

	option = { # pay the ppl
		name = mig_event.0004.a
		remove_short_term_gold = medium_gold_value
		
		add_piety = medium_piety_value
		
		stress_impact = {
			greedy = major_stress_impact_gain
			generous = major_stress_impact_loss
		}
		
		every_vassal = {
			limit = { 
				has_vassal_stance = zealot
			}			
			
			custom = every_zealot_vassal			
			
			add_opinion = {
				modifier = pious_opinion
				opinion = 15
				target = root
			}
		}
	}

	
	option = { # behead the commander
		name = mig_event.0004.b
		trigger = { 
			scope:losing_commander = {
				is_alive = yes
				is_imprisoned = no 
			}
		}
		
		scope:losing_commander = {
			death = { 
				killer = root 
				death_reason = death_execution 
			}
		}
		
		
		stress_impact = {
			calm = major_stress_impact_loss
			wrathful = major_stress_impact_gain
		}
	}
	
	
	option = { # no penalty
		name = mig_event.0004.c
		
		add_piety = major_piety_loss
		
		stress_impact = {
			calm = major_stress_impact_gain
			wrathful = major_stress_impact_loss
		}
		
		add_legitimacy = -50
	}
	
}

mig_event.1005 = {
	hidden = yes
	scope = combat_side

	trigger = {
		# Check to ensure all needed scopes are valid
		exists = side_commander
		exists = combat
	}

	immediate = {
		root.side_commander = { 
			save_scope_as = unmotivated_commander
		}
		
		combat = {
			save_scope_as = current_combat
		}
	}
	
	option = { 		
		scope:unmotivated_commander = {
			liege_or_court_owner = {
				trigger_event = mig_event.0005
			}
		}
	}
}

mig_event.0005 = { #demotivated general
	type = character_event
	title = mig_event.0005.t
	desc = mig_event.0005.desc
	theme = war
	
	right_portrait = {
		character = scope:unmotivated_commander
		animation = dismissal
	}

	trigger = {
		NOT = { root = scope:unmotivated_commander }
	}

	immediate = {
		
	}
	
	option = { #oh no
		name = mig_event.0005a
		scope:unmotivated_commander = {
			add_character_modifier = { 
				modifier = commander_sabortage_army
				weeks = 2
			}
		}
	}	
}


mig_event.1006 = { #commander_betray
	hidden = yes
	scope = combat_side
	
	trigger = {
		exists = side_commander
		exists = enemy_side.side_primary_participant
	}
	
	immediate = {
		
		side_commander = { 
			save_scope_as = commander
		}
		
		scope:commander.liege_or_court_owner = {
			save_scope_as = og_liege
		}
		
		enemy_side.side_primary_participant = { 
			save_scope_as = enemy_leader
		}
		
	}

	option = {
		scope:og_liege = {
			trigger_event = mig_event.0006
		}
		scope:enemy_leader = {
			trigger_event = mig_event.4006
		}
	}
}

mig_event.0006 = { #commander_betray
	type = character_event
	title = mig_event.0006.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = { 
					has_imprisonment_reason = scope:commander
				}
				desc = mig_event.0006.desc.imprisonment
			}
			triggered_desc = {
				trigger = { 
					scope:commander = { is_close_or_extended_family_of = scope:enemy_leader }
				}
				desc = mig_event.0006.desc.family
			}
			triggered_desc = {
				trigger = { 
					has_relation_rival = scope:commander
				}
				desc = mig_event.0006.desc.rival
			}
			triggered_desc = {
				trigger = { 
					scope:commander = {
						has_dread_level_towards = {
							target = scope:og_liege
							level = 2
						}
					}
				}
				desc = mig_event.0006.desc.terrified
			}
			desc = mig_event.0006.desc.lowopinion
		}
	}
	theme = war
	
	right_portrait = {
		character = scope:commander
		animation = marshal
	}
	
	left_portrait = {
		character = scope:enemy_leader
		animation = admiration
	}

	trigger = {
		root = scope:og_liege
	}

	immediate = {
		remove_courtier_or_guest = scope:commander 
		scope:commander = {
			add_trait = disloyal
		}
	}
	
	option = { #rival
		name = mig_event.0006.a
		set_relation_rival = scope:commander
		stress_impact = {
			forgiving = major_stress_impact_gain
			vengeful = major_stress_impact_loss
		}
	}
	option = { #no effect
		name = mig_event.0006.b
		stress_impact = {
			forgiving = major_stress_impact_loss
			vengeful = major_stress_impact_gain
		}
	}	
}

mig_event.4006 = { #commander_betray
	type = character_event
	title = mig_event.2006.t
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = { 
					scope:og_liege = { has_imprisonment_reason = scope:commander }
				}
				desc = mig_event.4006.desc.imprisonment
			}
			triggered_desc = {
				trigger = { 
					scope:commander = { is_close_or_extended_family_of = scope:enemy_leader }
				}
				desc = mig_event.4006.desc.family
			}
			triggered_desc = {
				trigger = { 
					scope:og_liege  = {has_relation_rival = scope:commander}
				}
				desc = mig_event.4006.desc.rival
			}
			triggered_desc = {
				trigger = { 
					scope:commander = {
						has_dread_level_towards = {
							target = scope:og_liege
							level = 2
						}
					}
				}
				desc = mig_event.4006.desc.terrified
			}
			desc = mig_event.4006.desc.lowopinion
		}
	}
	theme = war
	
	right_portrait = {
		character = scope:commander
		animation = marshal
	}
	
	left_portrait = {
		character = scope:enemy_leader
		animation = admiration
	}

	trigger = {
		root = scope:enemy_leader
	}

	immediate = {
	}
	
	option = { #welcome him
		name = mig_event.4006.a
		add_courtier = scope:commander 
	}
	option = { #kick him out
		name = mig_event.4006.b
	}	
}

mig_event.2006 = { #warn betray
	hidden = yes
	scope = character_event
	
	trigger = {
		is_alive = yes
		OR = {
			has_game_rule = mig_both_player_ai
			liege_or_court_owner = { is_ai = no }
		}
		NOT = { root = liege_or_court_owner }
	}
	
	immediate = {
	
		save_scope_as = betray_commander
		
		commanding_army = {
			save_scope_as = betray_army
		}
		
		add_character_flag = { 
			flag = betray_warned
			years = 10 
		}
		
	}

	option = {
		liege_or_court_owner = {
			trigger_event = mig_event.3006
		}
	}
}

mig_event.3006 = {
	type = character_event
	title = mig_event.3006.t
	theme = intrigue
	desc = mig_event.3006.desc
	
	right_portrait = {
		character = scope:spymaster
		animation = worry
	}
	
	lower_left_portrait = {
		character = scope:betray_commander
		animation = marshal
	}

	trigger = {
		exists = cp:councillor_spymaster
	}
	
	immediate = {
		cp:councillor_spymaster = { save_scope_as = spymaster }	
	}
	
	option = {
		name = mig_event.3006.a
	}
}


mig_event.2007 = { 
	hidden = yes
	scope = character_event
	
	trigger = {
		is_alive = yes
		NOT = { root = liege_or_court_owner }
	}
	
	immediate = {
		save_scope_as = betray_commander
		
		commanding_army = {
			save_scope_as = betray_army
		}
	}

	option = {
		if = { 
			limit = { 
				liege_or_court_owner ={
					any_knight = {
						knight_army	 = root.commanding_army
						opinion = { target = root.liege_or_court_owner value > 50 }
					}
				}
			}									

			random_list = { 
				67 = { liege_or_court_owner = { trigger_event = mig_event.3007 }  }
				34 = { trigger_event = mig_event.1007 }
			}
		}
		else = {
			trigger_event = mig_event.1007 
		}
	}
}

mig_event.3007 = { #rebel fails
	type = character_event
	title = mig_event.3007.t
	theme = war
	desc = mig_event.3007.desc
	
	right_portrait = {
		character = scope:loyal_knight
		animation = celebrate_mace
	}
	
	left_portrait = {
		character = scope:betray_commander
		animation = worry
	}

	trigger = {
	}

	immediate = {
		random_knight = {
			limit = {
				knight_army	 = scope:betray_army
				opinion = { target = root value > 40 }
			}
			save_scope_as = loyal_knight
		}
		imprison = {
			target = scope:betray_commander
			type = house_arrest
		}
	}
	
	option = { 
		name = mig_event.3007.a
		reverse_add_opinion = { 
			modifier = hate_opinion
			opinion = -40
			target = scope:betray_commander
		}
	}
	
	option = { 
		name = mig_event.3007.b
		
		scope:betray_commander = {
			death = { 
				killer = root 
				death_reason = death_execution 
			}
		}
		add_dread = 25
	}
	
	option = { 
		name = mig_event.3007.c
		scope:betray_commander = {
			release_from_prison = yes
		}
		add_dread = -50
		reverse_add_opinion = { 
			modifier = pleased_opinion
			opinion = 60
			target = scope:betray_commander
		}
	}
}

mig_event.1007 = {  #rebel sucessful
	hidden = yes
	scope = character_event
	
	trigger = {
		is_alive = yes
		NOT = { root = liege_or_court_owner }
		trigger_if = { 
			limit = {
				is_landed = yes
			}
			can_declare_war = { 
				defender = liege_or_court_owner 
				casus_belli = claim_cb
				target_titles = { liege_or_court_owner.primary_title }
				claimant = this
			}
		}
	}
	
	immediate = {
		
		location = { save_scope_as = army_location }
		
		liege_or_court_owner = { save_scope_as = target_liege }
		
		if = {
			limit = { is_landed = no }
			liege_or_court_owner  = { remove_courtier_or_guest = scope:betray_commander }
			create_landless_adventurer_title_effect = {
				REASON = flag:succession
				FLAVOR_CHAR = scope:betray_commander
			}
			add_realm_law_skip_effects = camp_purpose_legitimists
		}		
	}

	option = {
		scope:target_liege = {
			trigger_event = mig_event.0007
		}
	}
}



mig_event.0007 = { #rebel
	type = character_event
	title = mig_event.0007.t
	theme = war
	desc = {
		first_valid = {
			triggered_desc = {
				trigger = { 
					scope:betray_commander = { has_strong_claim_on = root.primary_title }
				}
				desc = mig_event.0007.desc.strongclaim
			}
			triggered_desc = {
				trigger = { 
					OR = {
						trigger_if = { 
							limit = {is_landed = yes }
							NOT = { meets_legitimacy_expectation_of = scope:commander }
						}
						sum_of_all_skills_value <= sum_of_all_skills_threshold_poor
						is_incapable = yes
						is_adult = no
					}
				}
				desc = mig_event.0007.desc.badruler
			}
			desc = mig_event.0007.desc.general
		}
	}
	
	right_portrait = {
		character = scope:betray_commander
		animation = aggressive_sword
	}
	
	left_portrait = {
		character = root
		animation = worry
	}

	trigger = {
	}

	immediate = {
		scope:betray_commander = {
			start_war = { 
				casus_belli = claim_cb
				target = root
				claimant = scope:betray_commander
				target_title = root.primary_title
			}
			show_as_tooltip= {
				custom_tooltip = mig_event.0007.tt
			}
			hidden_effect = {
				convert_commanding_army_to_rebel = { ARMY = scope:betray_army }
			}
		}
		primary_title = { save_scope_as = contested_title }
	}
	
	option = { #rival
		name = mig_event.0007a
		set_relation_rival = scope:betray_commander
		stress_impact = {
			forgiving = major_stress_impact_gain
			vengeful = minor_stress_impact_loss
		}
	}
	
	option = { #no effect
		name = mig_event.0007b
		stress_impact = {
			forgiving = minor_stress_impact_loss
			vengeful = major_stress_impact_gain
		}
	}		
}

mig_event.1008 = {#no step back
	hidden = yes
	scope = character_event
	
	trigger = {
	}
	
	immediate = {
		save_scope_as = commander
		
		commanding_army = {
			save_scope_as = army
		}
	}

	option = {
		liege_or_court_owner = {
			trigger_event = mig_event.0008
		}
	}
}

mig_event.0008 = { #no step back
	type = character_event
	title = mig_event.0008.t
	theme = war
	desc = mig_event.0008.desc
	
	right_portrait = {
		character = scope:commander
		animation = personality_honorable
	}

	trigger = {
		NOT = {root = scope:commander }
	}

	immediate = {
	}
	
	option = { #good
		name = mig_event.0008a
		scope:commander = {
			add_character_modifier = {
				modifier = no_step_back
				years = 3
			}
			show_as_tooltip= {
				custom_tooltip = mig_event.0008a.tt
				add_character_flag = {
					flag = no_step_back_swore
					years = 3
				}
				add_character_flag = { 
					flag = no_step_back
					years = 10 
				}
			}

		}
	}
	
	option = { #retreat if neccesry
		name = mig_event.0008b
	}		
}


