﻿# Story for borjigin dynasty
# originally made by Petter Vilberg
# adjusted by me

# this invasion ends a little differently
# instead of the story ending immediately, only the scripted war declaration and bonuses will stop
# to make sure the empire breaks up correctly, everything triggers on death

story_borjigin_invasion = {
	on_setup = {
		historicinvasions_story_setup_effect = { # global start variable, story variables, conditional dissolution protection
			INVADER_DYNN = borjigin # for story start global variable
			INVADER_TITLE = title:e_mongol_empire # title the invader spawns with
		}
		title:e_mongol_empire = { set_title_name = e_borjigin }
		set_global_variable = { # base game variable
			name = mongols_have_appeared
			value = yes
		}
		set_global_variable = { # base game variable
			name = mongol_empire_has_spawned
			value = yes
		}
		story_owner = {
			borjigin_maintenance_effect = {
				INVADER_DYNN = borjigin
				INVADER_CHAR = scope:story.story_owner
				INVADER_TITLE = scope:story.var:invader_title_var
				LANDLESS_YES_NO = no
				STARTING_TIER = duchy
			}
			trigger_event = {
				id = borjigin_invasion.0200
				months = 1
			}
		}
		scope:story.var:invader_title_var.title_capital_county = {
			add_county_modifier = {
				modifier = historicinvasions_county_tier_two_modifier
				years = 100
			}
		}
		title:c_baghdad = {
			set_important_location = {
				title = scope:story.var:invader_title_var
				enter_realm_event = borjigin_invasion.1004
			}
		}
	}

	on_end = {
		scope:story.var:invader_title_var = { set_variable = title_may_splinter_on_death }
		invader_story_on_end_effect = { INVADER_DYNN = borjigin }
		set_global_variable = { # base game variable to stop occupation on_action from firing
			name = mongol_story_has_ended
			value = yes
		}
		### clean up potential de jure border gore if invader wasn't very successful; check de jure shift triggered effect!
		# mongolia
		if = {
			limit = {
				scope:story.var:invader_title_var = { any_in_de_jure_hierarchy = { tier = tier_kingdom count <= 2 } }
				title:e_mongolia = { 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_mongolia
				}
			}
		}
		# fallback
		else = {
			debug_log = "on story end: invader de jure land not reverted"
		}
		### break up the mongol empire
		borjigin_splinter_mongol_empire_effect = { INVADER_CHAR = scope:story.story_owner }
	}

	on_owner_death = {
		# clean up held empires
		story_owner = {
			set_primary_title_to = scope:story.var:invader_title_var
			every_held_title = {
				limit = {
					NOT = { this = scope:story.var:invader_title_var }
					tier = tier_empire
				}
				holder = {
					destroy_title = prev
				}
			}
		}
		# 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 = 30
				var:story_owner_counter >= 2
			}
			modifier = {
				add = 30
				var:story_owner_counter >= 3
			}
			modifier = {
				add = 40
				var:story_owner_counter >= 3
			}
			set_variable = {
				name = end_of_invasion_story
				value = yes
			}
		}
		invader_story_on_death_effect = { INVADER_DYNN = borjigin }
	}

	# maintenance
	effect_group = {
		days = historicinvasions_story_maintenance_value

		trigger = { always = yes }

		# end the story prematurely, because their conquests have been completed
		triggered_effect = {
			trigger = {
				story_owner = { completely_controls_region = special_borjigin_conquest_region_total }
			}
			effect = {
				story_owner = { add_character_flag = invasion_ends_after_completed_conquests }
			}
		}

		# 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
			}
		}

		# make sure they have money on hand
		triggered_effect = {
			trigger = { story_owner = { gold < 0 } }
			effect = { story_owner = { add_gold = 500 } }
		}
		triggered_effect = {
			trigger = { story_owner = { prestige < 0 } }
			effect = { story_owner = { add_prestige = 750 } }
		}
		triggered_effect = {
			trigger = { story_owner = { piety < 0 } }
			effect = { story_owner = { add_piety = 250 } }
		}
	}

	#Start a new war if none is ongoing
	# unlike other invasions, the Mongols will keep conquering once they have consolidated their core conquest area ('total')
	# if there would be a reason to end the invasion story, it is instead postponed until the invader dies - until then, attacks are blocked
	# their story properly ends once the Khagan dies
	effect_group = {
		days = { 80 200 }

		trigger = {
			story_owner = {
				is_ai = yes
				should_invader_declare_war_trigger = { INVADER_TITLE = scope:story.var:invader_title_var }
				NOR = {
					has_character_flag = invasion_ends_after_completed_conquests
					has_character_flag = invasion_ends_after_player_win
					has_character_flag = invasion_ends_after_many_defeats
				}
			}
		}

		first_valid = {
			### war declaration
			# consolidate Mongolia
			triggered_effect = {
				trigger = {
					story_owner = {
						NOT = { completely_controls_region = special_borjigin_conquest_region_1 }
					}
				}
				# trigger = {
				# 	any_county_in_region = {
				# 		region = special_borjigin_conquest_region_1
				# 		holder = {
				# 			NOR = {
				# 				is_tributary_of_suzerain_or_above = scope:story_owner
				# 				target_is_liege_or_above = scope:story_owner
				# 			}
				# 		}
				# 	}
				# }
				effect = {
					story_owner = {
						war_target_evaluation_and_declaration_effect = {
							INVADER_DYNN = borjigin
							INVADER_CHAR = scope:story.story_owner
							INVADER_REGION = 1
							INVADER_TARGET_TITLE_TIER = empire
							INVADER_RANGE = neighboring
							INVADER_LIEGE_RESTRICTIONS = ""
						}
					}
				}
			}
			# consolidate Steppe
			triggered_effect = {
				trigger = {
					story_owner = {
						NOT = { completely_controls_region = special_borjigin_conquest_region_steppe }
					}
				}
				effect = {
					story_owner = {
						war_target_evaluation_and_declaration_effect = {
							INVADER_DYNN = borjigin
							INVADER_CHAR = scope:story.story_owner
							INVADER_REGION = steppe
							INVADER_TARGET_TITLE_TIER = empire
							INVADER_RANGE = neighboring
							INVADER_LIEGE_RESTRICTIONS = ""
						}
					}
				}
			}
			# conquer Persia
			triggered_effect = {
				trigger = {
					story_owner = {
						NOT = { completely_controls_region = special_borjigin_conquest_region_6 }
					}
				}
				effect = {
					story_owner = {
						war_target_evaluation_and_declaration_effect = {
							INVADER_DYNN = borjigin
							INVADER_CHAR = scope:story.story_owner
							INVADER_REGION = 6
							INVADER_TARGET_TITLE_TIER = empire
							INVADER_RANGE = neighboring
							INVADER_LIEGE_RESTRICTIONS = ""
						}
					}
				}
			}
			# conquer China
			triggered_effect = {
				trigger = {
					story_owner = {
						NOT = { completely_controls_region = special_borjigin_conquest_region_8 }
					}
				}
				effect = {
					story_owner = {
						war_target_evaluation_and_declaration_effect = {
							INVADER_DYNN = borjigin
							INVADER_CHAR = scope:story.story_owner
							INVADER_REGION = 8
							INVADER_TARGET_TITLE_TIER = empire
							INVADER_RANGE = neighboring
							INVADER_LIEGE_RESTRICTIONS = ""
						}
					}
				}
			}
			# conquer Tibet
			triggered_effect = {
				trigger = {
					story_owner = {
						NOT = { completely_controls_region = special_borjigin_conquest_region_7 }
					}
				}
				effect = {
					story_owner = {
						war_target_evaluation_and_declaration_effect = {
							INVADER_DYNN = borjigin
							INVADER_CHAR = scope:story.story_owner
							INVADER_REGION = 7
							INVADER_TARGET_TITLE_TIER = empire
							INVADER_RANGE = neighboring
							INVADER_LIEGE_RESTRICTIONS = ""
						}
					}
				}
			}
			# slowly conquer the rest
			triggered_effect = {
				trigger = {
					always = yes
				}
				effect = {
					story_owner = {
						war_target_evaluation_and_declaration_effect = {
							INVADER_DYNN = borjigin
							INVADER_CHAR = scope:story.story_owner
							INVADER_REGION = total_complete
							INVADER_TARGET_TITLE_TIER = kingdom
							INVADER_RANGE = neighboring
							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
				}
			}
		}

		# clean up any other held empire
		triggered_effect = {
			trigger = { always = no } # done on death
			effect = {
				story_owner = {
					set_primary_title_to = scope:story.var:invader_title_var
					every_held_title = {
						limit = {
							NOT = { this = scope:story.var:invader_title_var }
							tier = tier_empire
						}
						holder = {
							destroy_title = prev
						}
					}
				}
			}
		}
	}

	# 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 = borjigin
					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
		# mongolia
		triggered_effect = {
			trigger = {
				scope:story.var:invader_title_var = { any_in_de_jure_hierarchy = { tier = tier_kingdom count > 2 } }
				title:e_mongolia = { is_titular = no }
			}
			effect = {
				title:e_mongolia = {
					every_in_de_jure_hierarchy = {
						limit = { tier = tier_kingdom }
						set_de_jure_liege_title = scope:story.var:invader_title_var
					}
				}
			}
		}
	}
}