﻿# Story for the Ottoman Empire
# originally made by Petter Vilberg
# adjusted by me

story_ottoman_invasion = {
	on_setup = {
		historicinvasions_story_setup_effect = { # global start variable, story variables, conditional dissolution protection
			INVADER_DYNN = ottoman # for story start global variable
			INVADER_TITLE = title:e_ottoman # title the invader spawns with
		}
		story_owner = {
			ottoman_maintenance_effect = {
				INVADER_DYNN = ottoman
				INVADER_CHAR = scope:story.story_owner
				INVADER_TITLE = scope:story.var:invader_title_var
				LANDLESS_YES_NO = no
				STARTING_TIER = duchy
			}
			trigger_event = {
				id = ottoman_invasion.0200
				months = 1
			}
		}
	}

	on_end = {
		invader_story_on_end_effect = { INVADER_DYNN = ottoman }

		### clean up potential de jure border gore if invader wasn't very successful; check de jure shift triggered effect!
		# bulgarian empire
		if = {
			limit = {
				scope:story.var:invader_title_var = { any_in_de_jure_hierarchy = { tier = tier_kingdom count <= 3 } }
				title:k_bulgaria.de_jure_liege = scope:story.var:invader_title_var
				title:e_bulgaria = { is_titular = no }
			}
			title:k_bulgaria = { set_de_jure_liege_title = title:e_bulgaria }
		}
		# byzantine empire
		if = {
			limit = {
				scope:story.var:invader_title_var = { any_in_de_jure_hierarchy = { tier = tier_kingdom count <= 2 } }
				title:e_byzantium = { is_titular = no }
			}
			scope:story.var:invader_title_var = {
				every_in_de_jure_hierarchy = {
					limit = { tier = tier_kingdom }
					set_de_jure_liege_title = title:e_byzantium
				}
			}
		}
		# nicene empire / latin empire
		else_if = {
			limit = {
				scope:story.var:invader_title_var = { any_in_de_jure_hierarchy = { tier = tier_kingdom count <= 2 } }
				title:e_byzantium = { is_titular = yes }
			}
			# only nicene empire
			if = {
				limit = {
					title:e_nikaea = { is_titular = no }
					title:e_vlaanderen = { is_titular = yes }
				}
				scope:story.var:invader_title_var = {
					every_in_de_jure_hierarchy = {
						limit = { tier = tier_kingdom }
						set_de_jure_liege_title = title:e_nikaea
					}
				}
			}
			# only latin empire
			else_if = {
				limit = {
					title:e_vlaanderen = { is_titular = no }
					title:e_nikaea = { is_titular = yes }
				}
				scope:story.var:invader_title_var = {
					every_in_de_jure_hierarchy = {
						limit = { tier = tier_kingdom }
						set_de_jure_liege_title = title:e_vlaanderen
					}
				}
			}
			# both exist, shift depending on title capital locations
			else_if = {
				limit = {
					title:e_vlaanderen = { is_titular = no }
					title:e_nikaea = { is_titular = no }
				}
				# nicene empire
				scope:story.var:invader_title_var = {
					every_in_de_jure_hierarchy = {
						limit = {
							tier = tier_kingdom
							title_capital_county.title_province = { geographical_region = world_asia_minor }
						}
						set_de_jure_liege_title = title:e_nikaea
					}
				}
				# latin empire
				scope:story.var:invader_title_var = {
					every_in_de_jure_hierarchy = {
						limit = {
							tier = tier_kingdom
							title_capital_county.title_province = { geographical_region = world_europe_south_east }
						}
						set_de_jure_liege_title = title:e_vlaanderen
					}
				}
				# fallback
				scope:story.var:invader_title_var = {
					every_in_de_jure_hierarchy = {
						limit = { tier = tier_kingdom }
						set_de_jure_liege_title = title:e_nikaea
					}
				}
			}
		}
		# fallback
		else = {
			debug_log = "on story end: invader de jure land not reverted"
		}

		destroy_titular_invader_title_effect = yes
	}

	on_owner_death = {
		# random chance to set variable to end story after ruler N dies, depending on how many story owners there have been in total
		random = {
			chance = 0
			modifier = {
				add = 0
				var:story_owner_counter >= 1 # end story after death of ruler N?
			}
			modifier = {
				add = 0
				var:story_owner_counter >= 2
			}
			modifier = {
				add = 25
				var:story_owner_counter >= 3
			}
			set_variable = {
				name = end_of_invasion_story
				value = yes
			}
		}
		invader_story_on_death_effect = { INVADER_DYNN = ottoman }
	}

	# maintenance
	effect_group = {
		days = historicinvasions_story_maintenance_value

		trigger = { always = yes }

		# make sure they have money on hand
		triggered_effect = {
			trigger = { story_owner = { gold < 0 } }
			effect = { story_owner = { add_gold = 750 } }
		}

		# end the story prematurely, because their conquests have been completed
		triggered_effect = {
			trigger = {
				has_game_rule = default_ottoman_invasion
				story_owner = { completely_controls_region = special_ottoman_conquest_region_total }
			}
			effect = {
				debug_log = "ending ottoman story because the conquest goal has been completed"
				end_story = yes
			}
		}
		triggered_effect = {
			trigger = {
				has_game_rule = extended_ottoman_invasion
				story_owner = { completely_controls_region = special_ottoman_conquest_region_total }
			}
			effect = {
				debug_log = "ending ottoman story because the conquest goal has been completed"
				end_story = yes
			}
		}

		# end the story prematurely, because the invader has lost their #th offensive war
		triggered_effect = {
			trigger = {
				NOT = { has_game_rule = historicinvasions_invasion_ends_after_defeat_disabled }
			}
			effect = {
				historicinvasions_invasion_ends_after_defeat_effect = yes
			}
		}
	}

	#Start a new war if none is ongoing
	effect_group = {
		days = { 365 1095 }
		#chance = 100

		trigger = { story_owner = { is_ai = yes } }

		triggered_effect = {
			trigger = {
				story_owner = { has_character_flag = invasion_ends_after_player_win }
			}
			effect = {
				debug_log = "ending ottoman story because a player was able to defend against the invader"
				end_story = yes
			}
		}

		# duchy wars
		triggered_effect = {
			trigger = {
				has_game_rule = default_ottoman_invasion
				story_owner = { should_invader_declare_war_trigger = { INVADER_TITLE = scope:story.var:invader_title_var } }
			}
			effect = {
				story_owner = {
					war_target_evaluation_and_declaration_effect = {
						INVADER_DYNN = ottoman
						INVADER_CHAR = scope:story.story_owner
						INVADER_REGION = total
						INVADER_TARGET_TITLE_TIER = duchy
						INVADER_RANGE = neighboring_and_across_water
						INVADER_LIEGE_RESTRICTIONS = ""
					}
				}
			}
		}
			
		# kingdom wars
		first_valid = {
			# prioritize byzantine heartland
			triggered_effect = {
				trigger = {
					has_game_rule = extended_ottoman_invasion
					story_owner = {
						should_invader_declare_war_trigger = { INVADER_TITLE = scope:story.var:invader_title_var }
						NOT = { completely_controls_region = special_ottoman_conquest_region_total }
					}
				}
				effect = {
					story_owner = {
						war_target_evaluation_and_declaration_effect = {
							INVADER_DYNN = ottoman
							INVADER_CHAR = scope:story.story_owner
							INVADER_REGION = total
							INVADER_TARGET_TITLE_TIER = kingdom
							INVADER_RANGE = neighboring_and_across_water
							INVADER_LIEGE_RESTRICTIONS = ""
						}
					}
				}
			}
			# then focus on the rest
			triggered_effect = {
				trigger = {
					has_game_rule = extended_ottoman_invasion
					story_owner = { should_invader_declare_war_trigger = { INVADER_TITLE = scope:story.var:invader_title_var } }
				}
				effect = {
					story_owner = {
						war_target_evaluation_and_declaration_effect = {
							INVADER_DYNN = ottoman
							INVADER_CHAR = scope:story.story_owner
							INVADER_REGION = total_extended
							INVADER_TARGET_TITLE_TIER = kingdom
							INVADER_RANGE = neighboring_and_across_water
							INVADER_LIEGE_RESTRICTIONS = ""
						}
					}
				}
			}
		}
	}

	# Story handling in case of succession weirdness
	effect_group = {
		days = historicinvasions_succession_weirdness_value

		trigger = { NOT = { story_owner = { has_title = scope:story.var:invader_title_var } } }

		# either transfer story ownership or end story if the title is not created
		triggered_effect = {
			trigger = { always = yes }
			effect = {
				hi_check_for_valid_story_owner_effect = {
					INVADER_TITLE = scope:story.var:invader_title_var
					STORY_COUNTER_INCREASE = 0
				}
			}
		}
	}

	# de jure updates
	effect_group = {
		days = 240
		trigger = {
			#NOT = { has_game_rule = historicinvasions_de_jure_change_disabled }
		}
		### gradual
		triggered_effect = {
			trigger = { always = yes }
			effect = {
				historicinvasions_de_jure_change = {
					INVADER_DYNN = ottoman
					INVADER_CHAR = scope:story.story_owner
					INVADER_TITLE = scope:story.var:invader_title_var
					INVADER_TARGET_TITLE_TIER = kingdom
					DE_JURE_PERCENT = 0.7
				}
			}
		}
		### instant merge if big enough
		# bulgaria
		triggered_effect = {
			trigger = {
				title:e_bulgaria = { any_in_de_jure_hierarchy = { tier = tier_kingdom count = 2 } }
				title:k_bulgaria.de_jure_liege = scope:story.var:invader_title_var
			}
			effect = {
				title:e_bulgaria = {
					every_in_de_jure_hierarchy = {
						limit = { tier = tier_kingdom }
						set_de_jure_liege_title = title:k_hungary.de_jure_liege
					}
				}
			}
		}
		# latin empire
		triggered_effect = {
			trigger = {
				title:e_vlaanderen = { any_in_de_jure_hierarchy = { tier = tier_kingdom count < 3 } }
				title:k_thessalonika.de_jure_liege = scope:story.var:invader_title_var
			}
			effect = {
				title:e_vlaanderen = {
					every_in_de_jure_hierarchy = {
						limit = { tier = tier_kingdom }
						set_de_jure_liege_title = scope:story.var:invader_title_var
					}
				}
			}
		}
		# nicene empire
		triggered_effect = {
			trigger = {
				title:e_nikaea = { any_in_de_jure_hierarchy = { tier = tier_county count <= 16 } } # I check for counties here because e_nikaea might own several titular kingdoms
				title:k_nikaea.de_jure_liege = scope:story.var:invader_title_var
			}
			effect = {
				title:e_nikaea = {
					every_in_de_jure_hierarchy = {
						limit = { tier = tier_kingdom }
						set_de_jure_liege_title = scope:story.var:invader_title_var
					}
				}
			}
		}
		# byzantine empire
		triggered_effect = {
			trigger = {
				title:e_byzantium = { any_in_de_jure_hierarchy = { tier = tier_county count <= 70 } } # checking for kingdoms does not make sense, since the ERE consists of a lot of titular kingdoms
				title:k_thessalonika.de_jure_liege = scope:story.var:invader_title_var
			}
			effect = {
				title:e_byzantium = {
					every_in_de_jure_hierarchy = {
						limit = { tier = tier_kingdom }
						set_de_jure_liege_title = scope:story.var:invader_title_var
					}
				}
			}
		}
	}
}