﻿# Story for the rise of Shia
# originally made by Petter Vilberg
# adjusted by me

### story one - northern Africa
story_fatimid_invasion_one = {
	on_setup = {
		historicinvasions_story_setup_effect = { # global start variable, story variables, conditional dissolution protection
			INVADER_DYNN = fatimid_africa # for story start global variable
			INVADER_TITLE = title:e_fatimid # title the invader spawns with
		}
		story_owner = {
			fatimid_maintenance_effect = {
				INVADER_DYNN = fatimid
				INVADER_CHAR = scope:story.story_owner
				INVADER_TITLE = scope:story.var:invader_title_var
				LANDLESS_YES_NO = no
				STARTING_TIER = duchy
			}
			trigger_event = {
				id = fatimid_invasion.0200
				months = 1
			}
		}
	}

	on_end = {
		debug_log = "fatimid story 1 ended on:"
		debug_log_date = yes
		add_to_global_variable_list = {
			name = historicinvasions_story_ended
			target = flag:fatimid_africa_story_ended
		}
		if = { # if story ended after migration, start second story for arabia
			limit = {
				is_target_in_global_variable_list = {
					name = historicinvasions_migrations
					target = flag:fatimid_migration_complete
				}
			}
			title:k_egypt.holder = {
				debug_log = "attempting to start fatimid story 2 in three days"
				trigger_event = {
					id = fatimid_invasion.0002
					days = 3
				}
			}
		}
		else = {
			scope:story.story_owner = { remove_character_modifier = historicinvasions_plot_armor }
		}
	}

	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 = 10
				var:story_owner_counter >= 2
			}
			modifier = {
				add = 10
				var:story_owner_counter >= 3
			}
			modifier = {
				add = 20
				var:story_owner_counter >= 4
			}
			modifier = {
				add = 60
				var:story_owner_counter >= 5
			}
			set_variable = {
				name = end_of_invasion_story
				value = yes
			}
		}
		invader_story_on_death_effect = { INVADER_DYNN = fatimid }
	}

	# misc 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 = 200 } }
		}

		# wars for nothern africa complete?
		triggered_effect = {
			trigger = { # does the story owner or their vassals hold x% of the specified region?
				NOR = {
					exists = global_var:fatimid_wars_north_africa_ended
					is_target_in_global_variable_list = {
						name = historicinvasions_migrations
						target = flag:fatimid_migration_complete
					}
				}
				story_owner = {
					any_county_in_region = {
						region = special_fatimid_conquest_region_total_north_africa
						percent > 0.7
						OR = {
							holder = scope:story.story_owner
							holder = { target_is_liege_or_above = scope:story.story_owner }
						}
					}
				}
			}
			effect = {
				story_owner = {
					random_vassal = { save_scope_as = random_fatimid_vassal }
					trigger_event = {
						id = fatimid_invasion.1006
						days = 7
					}
				}
				debug_log = "Fatimid Invasion of Northern Africa complete"
				set_global_variable = {
					name = fatimid_wars_north_africa_ended
					value = yes
				}
			}
		}

		# almoravid; their story can't spawn while the Fatimids are still active in northern Africa anyway
		triggered_effect = {
			trigger = {
				is_target_in_global_variable_list = {
					name = historicinvasions_story_started
					target = flag:almoravid_story_started
				}
			}
			effect = {
				debug_log = "ending ghaznavid story because the almmoravids have appeared"
				end_story = yes
			}
		}

		# almohad
		triggered_effect = {
			trigger = {
				is_target_in_global_variable_list = {
					name = historicinvasions_story_started
					target = flag:almohad_story_started
				}
			}
			effect = {
				debug_log = "ending ghaznavid story because the almohads have appeared"
				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 in northern Africa if none is ongoing
	effect_group = {
		days = { 90 270 }

		trigger = { story_owner = { is_ai = yes } }

		first_valid = {
			triggered_effect = {
				trigger = {
					story_owner = { has_character_flag = invasion_ends_after_player_win }
				}
				effect = {
					debug_log = "ending fatimid story 1 because a player was able to defend against the invader"
					end_story = yes
				}
			}
			triggered_effect = {
				trigger = {
					NOT = { exists = global_var:fatimid_wars_north_africa_ended }
					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 = fatimid
							INVADER_CHAR = scope:story.story_owner
							INVADER_REGION = total_north_africa
							INVADER_TARGET_TITLE_TIER = duchy
							INVADER_RANGE = neighboring_and_across_water
							INVADER_LIEGE_RESTRICTIONS = ""
						}
					}
				}
			}
		}
	}

	# start migration to egypt?
	effect_group = {
		days = 270

		trigger = { story_owner = { is_ai = yes } }

		triggered_effect = {
			trigger = {
				exists = global_var:fatimid_wars_north_africa_ended
				NOT = {
					is_target_in_global_variable_list = {
						name = historicinvasions_migrations
						target = flag:fatimid_migration_complete
					}
				}
				story_owner = {
					is_at_war = no
					gold > 0
					any_held_title = { this = scope:story.var:invader_title_var }
				}
			}			

			effect = {
				debug_log = "attempting Fatimid migration to Egypt"
				story_owner = {
					if = {
						limit = {
							NOT = { exists = global_var:fatimid_egypt_reinforcements }
						}
						set_global_variable = {
							name = fatimid_egypt_reinforcements
							value = yes
							days = 3650 # 10 years
						}
						spawn_army = {
							name = fatimid_event_troops
							uses_supply = no
							inheritable = yes
							levies = 2400
							men_at_arms = {
								type = light_footmen
								stacks = 4
							}
							men_at_arms = {
								type = bowmen
								stacks = 4
							}
							men_at_arms = {
								type = camel_rider
								stacks = 8
							}
							location = capital_province
						}
					}
					war_target_evaluation_and_declaration_effect = {
						INVADER_DYNN = fatimid
						INVADER_CHAR = scope:story.story_owner
						INVADER_REGION = 4
						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 } } }

		triggered_effect = {
			trigger = { NOT = { exists = scope:story.var:invader_title_var.holder } }
			effect = {
				debug_log = "ending fatimid story 1 due to succession weirdness trigger 1"
				end_story = yes
			}
		}

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

### story two - Arabia
story_fatimid_invasion_two = {
	on_setup = {
		historicinvasions_story_setup_effect = { # global start variable, story variables, conditional dissolution protection
			INVADER_DYNN = fatimid_arabia # for story start global variable
			INVADER_TITLE = title:k_egypt # title the invader spawns with
		}
		story_owner = {
			# nothing
		}
		debug_log = "fatimid story 2 started on:"
		debug_log_date = yes
	}

	on_end = {
		invader_story_on_end_effect = { INVADER_DYNN = fatimid }
	}

	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 = 20
				var:story_owner_counter >= 2
			}
			modifier = {
				add = 20
				var:story_owner_counter >= 3
			}
			modifier = {
				add = 60
				var:story_owner_counter >= 4
			}
			set_variable = {
				name = end_of_invasion_story
				value = yes
			}
		}
		invader_story_on_death_effect = { INVADER_DYNN = fatimid }
	}

	# misc 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 = 250 } }
		}

		# end the story prematurely
		triggered_effect = {
			trigger = {
				story_owner = { completely_controls_region = special_fatimid_conquest_region_total_arabia }
			}
			effect = {
				debug_log = "ending fatimid story 2 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
			}
		}

		# prevent duchies under k_jerusalem, k_syria, k_arabia and k_hejaz from shifting into k_egypt
		triggered_effect = {
			trigger = {
				always = yes
			}
			effect = {
				story_owner = {
					# jerusalem
					every_realm_de_jure_duchy = {
						limit = {
							de_jure_liege = title:k_jerusalem
							de_jure_drift_progress = {
								target = scope:story.var:invader_title_var
								value > 12 # months
							}
						}
						change_de_jure_drift_progress = {
							target = scope:story.var:invader_title_var
							value = -12 # months
						}
					}
					# israel
					every_realm_de_jure_duchy = {
						limit = {
							de_jure_liege = title:k_israel
							de_jure_drift_progress = {
								target = scope:story.var:invader_title_var
								value > 12 # months
							}
						}
						change_de_jure_drift_progress = {
							target = scope:story.var:invader_title_var
							value = -12 # months
						}
					}
					# syria
					every_realm_de_jure_duchy = {
						limit = {
							de_jure_liege = title:k_syria
							de_jure_drift_progress = {
								target = scope:story.var:invader_title_var
								value > 12 # months
							}
						}
						change_de_jure_drift_progress = {
							target = scope:story.var:invader_title_var
							value = -12 # months
						}
					}
					# arabia
					every_realm_de_jure_duchy = {
						limit = {
							de_jure_liege = title:k_arabia
							de_jure_drift_progress = {
								target = scope:story.var:invader_title_var
								value > 12 # months
							}
						}
						change_de_jure_drift_progress = {
							target = scope:story.var:invader_title_var
							value = -12 # months
						}
					}
					# hejaz
					every_realm_de_jure_duchy = {
						limit = {
							de_jure_liege = title:k_hejaz
							de_jure_drift_progress = {
								target = scope:story.var:invader_title_var
								value > 12 # months
							}
						}
						change_de_jure_drift_progress = {
							target = scope:story.var:invader_title_var
							value = -12 # months
						}
					}
				}
			}
		}
	}

	#Start a new war if none is ongoing
	effect_group = {
		days = { 90 270 }

		trigger = { story_owner = { is_ai = yes } }

		first_valid = {
			triggered_effect = {
				trigger = {
					story_owner = { has_character_flag = invasion_ends_after_player_win }
				}
				effect = {
					debug_log = "ending fatimid story 2 because a player was able to defend against the invader"
					end_story = yes
				}
			}
			triggered_effect = { # arabia
				trigger = {
					story_owner = {
						is_at_war = no
						gold > 0
						any_held_title = { this = scope:story.var:invader_title_var }
						any_held_title = { this = title:d_shiite }
						current_military_strength >= invader_almost_full_military_strength_value
					}
				}
				effect = {
					story_owner = {
						war_target_evaluation_and_declaration_effect = {
							INVADER_DYNN = fatimid
							INVADER_CHAR = scope:story.story_owner
							INVADER_REGION = total_arabia
							INVADER_TARGET_TITLE_TIER = kingdom
							INVADER_RANGE = neighboring
							INVADER_LIEGE_RESTRICTIONS = "NOT = { this = title:e_seljuk.holder }"
						}
					}
				}
			}
		}
	}

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

		trigger = { NOT = { story_owner = { has_title = title:d_shiite } } }

		# 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 = title:d_shiite
					STORY_COUNTER_INCREASE = 0
				}
			}
		}
	}
}