﻿namespace = seljuk_invasion

### Spawn invader with the associated story...
seljuk_invasion.0001 = {
	scope = none
	hidden = yes
	
	trigger = {
		exists = title:e_seljuk # update compatibility - new titles in old saves return false
		any_county_in_region = {
			region = special_seljuk_conquest_region_start
			count > 0
			holder = { is_ai = yes }
		}
	}

	on_trigger_fail = {
		debug_log = "seljuk story has failed to trigger; trying again next year"
		debug_log_date = yes
	}

	immediate = {
		debug_log = "seljuk story owner has appeared"
		debug_log_date = yes
		
		spawn_seljuk_invader_effect = {
			INVADER_DYNN = seljuk
		}
		scope:invader = {
			create_story = story_seljuk_persia_invasion
		}
	}
}

# base game invasion, formerly fp3_story_cycle_seljuks_invasion_events.0001, simply copy
# var seljuk_invasion_happened & flag seljuk_story_started are immediately set via on_action
# seljuk_invasion.0002 = {
# 	scope = none
# 	hidden = yes

# 	immediate = {
# 		spawn_seljuk_character_effect = yes
# 		scope:lead_seljuk = {
# 			save_scope_as = story_owner
# 			create_story = story_seljuk_invasion
# 		}
# 	}
# }



# rum invasion is triggered
seljuk_invasion.0011 = {
	scope = none
	hidden = yes
	trigger = {
		exists = title:e_seljuk # update compatibility - new titles in old saves return false
		exists = title:k_rum
	}

	on_trigger_fail = {
		debug_log = "seljuk story RUM invasion has failed to trigger; trying again next year"
		debug_log_date = yes
	}

	immediate = {
		debug_log = "seljuk story owner RUM has appeared"
		debug_log_date = yes
		
		add_to_global_variable_list = {
			name = historicinvasions_story_started
			target = flag:seljuk_rum_have_appeared
		}

		seljuk_rum_invasion_effect = yes

		# block Komnenos story for a while
		set_global_variable = {
			name = historicinvasions_rum_tmp_blocks_komnenos_story
			value = yes
			years = 5
		}
	}
}

# as player-controlled Suleiman: start invasion of Rûm
# seljuk_invasion.0012 = {
# 	type = letter_event
# 	opening = seljuk_invasion.0012.opening
# 	desc = seljuk_invasion.0012.desc
# 	sender = {
# 		character = scope:story.story_owner
# 		animation = personality_bold
# 	}

# 	trigger = {
# 		has_ep3_dlc_trigger = yes # DLC check
# 	}

# 	# accept; start invasion
# 	option = {
# 		name = seljuk_invasion.0012.a
# 		trigger = {
# 			has_ep3_dlc_trigger = yes # DLC check
# 		}
# 		add_character_flag = hi_suleiman_accepted_rum_invasion
# 	}

# 	# decline; other dynasty member is chosen
# 	option = {
# 		name = seljuk_invasion.0012.b
# 		add_character_flag = hi_suleiman_declined_rum_invasion
# 	}
# }

# switch to AI Suleiman as a landless adventurer
# seljuk_invasion.0013 = {
# 	type = letter_event
# 	opening = seljuk_invasion.0013.opening
# 	desc = seljuk_invasion.0013.desc
# 	sender = {
# 		character = scope:story.story_owner
# 		animation = personality_bold
# 	}

# 	trigger = {
# 		has_ep3_dlc_trigger = yes # DLC check
# 	}

# 	# switch character
# 	option = {
# 		name = seljuk_invasion.0013.a
# 		trigger = {
# 			has_ep3_dlc_trigger = yes # DLC check
# 		}
# 	}

# 	# decline
# 	option = {
# 		name = seljuk_invasion.0013.b
# 	}
# }

# Rûm optionally adopts Turkmen culture
seljuk_invasion.0020 = {
	type = character_event

	title = seljuk_invasion.0020.t
	desc = seljuk_invasion.0020.desc

	theme = stewardship

	left_portrait = {
		character = root
		animation = personality_rational
	}

	trigger = {
		culture = {
			OR = {
				has_cultural_pillar = heritage_turkic
				has_cultural_pillar = language_turkic
			}
		}
	}

	immediate = {
		culture = { save_scope_as = old_culture }
		culture:turkmen = { save_scope_as = new_culture }
		faith = { save_scope_as = old_faith } # localization
	}

	after = {
		hidden_effect = {
			culture = {
				change_cultural_acceptance = {
					target = culture:greek
					value = medium_positive_culture_acceptance # miniscule = 2%, low = 5%, medium = 10%
					desc = cultural_acceptance_gain_event
				}
			}
		}
	}

	# adopt turkmen culture
	option = {
		name = seljuk_invasion.0020.a

		# oghuz -> turkmen
		if = {
			limit = {
				culture = scope:old_culture
			}
			set_culture = scope:new_culture

			custom_tooltip = {
				text = seljuk_invasion.0020.a.tt
				every_child = {
					limit = {
						culture = scope:old_culture
					}
					set_culture = scope:new_culture
				}
	
				every_courtier = {
					limit = {
						culture = scope:old_culture
					}
					set_culture = scope:new_culture
				}
	
				every_realm_county = {
					limit = {
						culture = scope:old_culture
					}
					set_county_culture = scope:new_culture
				}
			}

			# cultural acceptance - easier hybridization
			scope:new_culture = {
				get_all_innovations_from = scope:old_culture
			}
		}

		ai_chance = { base = 100 }
	}

	# stay with original culture
	option = {
		name = seljuk_invasion.0020.b

		add_prestige = 150

		ai_chance = { base = 0 }
	}
}



# Event for handling new army spawning on succession
seljuk_invasion.0100 = {
	hidden = yes
	immediate = {
		spawn_seljuk_troops_effect = yes
	}
}

# Event for handling new army spawning für Rûm
seljuk_invasion.0101 = {
	hidden = yes
	immediate = {
		spawn_seljuk_rum_troops_effect = yes
	}
}

# Event for declaring the very first war; values like current_ / max_military_strength aren't immediately filled with a value and return 0 instead
seljuk_invasion.0200 = {
	hidden = yes
	trigger = { is_ai = yes } # don't force a player into a war
	immediate = {
		war_target_evaluation_and_declaration_effect = {
			INVADER_DYNN = seljuk
			INVADER_CHAR = scope:story.story_owner
			INVADER_REGION = total_no_anatolia
			INVADER_TARGET_TITLE_TIER = kingdom
			INVADER_RANGE = neighboring
			INVADER_LIEGE_RESTRICTIONS = ""
		}
	}
}

##################
# Notification Events
# 1000-1999
##################

### The invader has appeared! Would you like to play as them?
seljuk_invasion.1001 = { # only players see this
	type = character_event
	title = seljuk_invasion.1001.t
	desc = seljuk_invasion.1001.desc
	
	theme = hi_theme_steppe

	left_portrait = {
		character = scope:invader
		animation = personality_bold
	}

	trigger = { hi_show_invader_notification_event_trigger = yes }
	
	option = { name = seljuk_invasion.1001.a }

	option = { # play as the newly spawned invader
		name = seljuk_invasion.1001.b
		trigger = { hi_play_as_invader_event_option_trigger = yes }
		add_internal_flag = dangerous
		scope:invader = {
			set_variable = {
				name = historicinvasions_previous_ruler_var
				value = root
				months = 1
			}
		}
		set_player_character = scope:invader
	}
}

# offer sunni caliph subjugation
seljuk_invasion.1010 = {
	type = character_event
	title = seljuk_invasion.1010.t
	desc = seljuk_invasion.1010.desc
	theme = diplomacy_foreign_affairs_focus

	right_portrait = {
		character = title:e_seljuk.holder
		animation = personality_rational
	}

	option = { # offer existing caliph vassalization
		name = seljuk_invasion.1010.a

		trigger = {
			title:d_sunni = { is_title_created = yes }
		}

		title:d_sunni.holder = {
			trigger_event = {
				id = seljuk_invasion.1011
				days = 3
			}
		}

		ai_chance = {
			base = 100
		}
	}

	option = { # caliph doesn't exist - settle down a new one
		name = seljuk_invasion.1010.b

		trigger = {
			title:d_sunni = { is_title_created = no }
		}

		seljuk_offer_caliph_subjugation_effect = yes

		ai_chance = {
			base = 100
		}
	}

	option = { # don't do anything
		name = seljuk_invasion.1010.c

		ai_chance = {
			base = 0
		}
	}
}

# existing Sunni Caliph - accept subjugation offer?
seljuk_invasion.1011 = {
	type = letter_event
	opening = seljuk_invasion.1011.opening
	desc = seljuk_invasion.1011.desc
	sender = title:e_seljuk.holder

	option = { # accept
		name = seljuk_invasion.1011.a
		add_internal_flag = special

		seljuk_offer_caliph_subjugation_effect = yes
		title:e_seljuk.holder = {
			trigger_event = {
				id = seljuk_invasion.1012
				days = 3
			}
		}

		ai_chance = {
			base = 100
		}
	}

	option = { # refuse
		name = seljuk_invasion.1011.b

		title:e_seljuk.holder = {
			trigger_event = {
				id = seljuk_invasion.1013
				days = 3
			}
		}

		ai_chance = {
			base = 0
		}
	}
}

# existing Sunni Caliph replies - accept
seljuk_invasion.1012 = {
	type = letter_event
	opening = seljuk_invasion.1012.opening
	desc = seljuk_invasion.1012.desc
	sender = title:e_seljuk.holder

	option = { # yay
		name = seljuk_invasion.1012.a
	}
}

# existing Sunni Caliph replies - decline
seljuk_invasion.1013 = {
	type = letter_event
	opening = seljuk_invasion.1013.opening
	desc = seljuk_invasion.1013.desc
	sender = title:e_seljuk.holder

	option = { # sad
		name = seljuk_invasion.1013.a
	}
}

# player notification - Caliph has been vassalized
seljuk_invasion.1014 = {
	type = letter_event
	opening = seljuk_invasion.1014.opening
	desc = seljuk_invasion.1014.desc
	sender = scope:random_vassal

	immediate = {
		random_vassal = { save_scope_as = random_vassal }
		if = { # player has no vassals
			limit = { NOT = { exists = scope:random_vassal } }
			random_neighboring_and_across_water_top_liege_realm_owner = { save_scope_as = random_vassal }
		}
		title:e_seljuk.holder = { save_scope_as = seljuk_ruler }
		title:d_sunni.holder = { save_scope_as = sunni_caliph }
	}

	option = { # ok
		name = seljuk_invasion.1014.a
	}
}

# player notification - rûm has formed
seljuk_invasion.1015 = {
	type = letter_event
	opening = seljuk_invasion.1015.opening
	desc = seljuk_invasion.1015.desc
	sender = scope:random_vassal

	trigger = { NOT = { has_game_rule = historicinvasions_notification_disabled } }

	immediate = {
		### for event localization
		random_vassal = { save_scope_as = random_vassal }
		if = { # player has no vassals
			limit = { NOT = { exists = scope:random_vassal } }
			random_neighboring_and_across_water_top_liege_realm_owner = { save_scope_as = random_vassal }
		}
		if = { # player is landless
			limit = { NOT = { exists = scope:random_vassal } }
			random_courtier = {
				limit = {
					is_adult = yes
				}
				alternative_limit = {
					always = yes
				}
				save_scope_as = random_vassal
			}
		}

		if = {
			limit = { exists = title:e_persia.holder }
			title:e_persia.holder = { save_scope_as = emperor_persia }
		}
		else_if = {
			limit = { exists = title:e_seljuk.holder }
			title:e_seljuk.holder = { save_scope_as = emperor_persia }
		}
		else = {}
		
		title:k_rum.holder = { save_scope_as = rum_ruler }

		if = {
			limit = {
				title:c_galatia.holder = {
					is_independent_ruler = yes
					culture = culture:norman
					faith = faith:catholic
				}
			}
			title:c_galatia.holder = { save_scope_as = roussel_bailleul }
		}
	}

	option = { # ok
		name = seljuk_invasion.1015.a
	}

	option = { # play as invader
		name = seljuk_invasion.1015.b
		trigger = { has_game_rule = historicinvasions_notification_enabled }
		add_internal_flag = dangerous
		scope:rum_ruler = {
			set_variable = {
				name = historicinvasions_previous_ruler_var
				value = root
				months = 1
			}
		}
		set_player_character = scope:rum_ruler
	}

	option = { # play as Roussel
		name = seljuk_invasion.1015.c
		trigger = {
			exists = scope:roussel_bailleul
			has_game_rule = historicinvasions_notification_enabled
		}
		add_internal_flag = dangerous
		scope:roussel_bailleul = {
			set_variable = {
				name = historicinvasions_previous_ruler_var
				value = root
				months = 1
			}
		}
		set_player_character = scope:roussel_bailleul
	}

	option = { # play as Rouben
		name = seljuk_invasion.1015.d
		trigger = {
			exists = scope:rouben_roubenid
			has_game_rule = historicinvasions_notification_enabled
		}
		add_internal_flag = dangerous
		scope:rouben_roubenid = {
			set_variable = {
				name = historicinvasions_previous_ruler_var
				value = root
				months = 1
			}
		}
		set_player_character = scope:rouben_roubenid
	}
}

# remove temporary trait
seljuk_invasion.1016 = {
	scope = character_event
	hidden = yes
	
	trigger = {
		has_trait = disinherited
		has_character_flag = temporarily_disinherited
	}

	immediate = {
		remove_trait = disinherited
		remove_character_flag = temporarily_disinherited
	}
}

# legend effects requires root to be the character; in the other location, root would be the casus belli
seljuk_invasion.1017 = {
	scope = character_event
	hidden = yes
	
	trigger = {
		root = title:k_rum.holder
	}

	immediate = {
		legend_seed_new_title_effect = yes
	}
}