﻿namespace = fp3_story_cycle_zanj_rebellion_events

### Ali Ibn Muhammad and Zanj Rebellion Setup
fp3_story_cycle_zanj_rebellion_events.0001 = {
	scope = none
	hidden = yes

	immediate = {
		spawn_zanj_leader_character_effect = yes
		scope:zanj_leader = {
			save_scope_as = story_owner
			create_story = story_zanj_rebellion
			give_nickname = nick_albaghid
		}

		title:c_basra.holder = {
			add_visiting_courtier = scope:zanj_leader
		}
		title:c_basra.holder.top_liege = {
			trigger_event = {
				id = fp3_story_cycle_zanj_rebellion_events.0002
			}
			trigger_event = {
				id = fp3_story_cycle_zanj_rebellion_events.0005
				days = { 60 120 }
			}
		}
	}
}

### Ali Ibn Muhammad riling up locals in Basra
fp3_story_cycle_zanj_rebellion_events.0002 = {
	type = character_event
	theme = intrigue
	override_background = { reference = wilderness_wetlands }
	title = fp3_story_cycle_zanj_rebellion_events.0002.t
	desc = fp3_story_cycle_zanj_rebellion_events.0002.desc

	left_portrait = {
		character = root
		animation = marshal
	}
	right_portrait = {
		character = scope:zanj_leader
		animation = scheme
	}

	immediate = {
		scope:zanj_leader = {
			save_scope_as = outspoken_rebel
		}
	}

	#Try to arrest Ali
	option = {
		name = fp3_story_cycle_zanj_rebellion_events.0002.a
		duel = {
			skill = intrigue
			target = scope:outspoken_rebel
			50 = {
				# You arrest Ali Ibn Muhammad
				desc = fp3_story_cycle_zanj_rebellion_events.0002.a.success
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				send_interface_toast = {
					title = fp3_story_cycle_zanj_rebellion_events.0002.a.success
					left_icon = root
					right_icon = scope:outspoken_rebel
					rightfully_imprison_character_effect = {
						TARGET = scope:outspoken_rebel
						IMPRISONER = root
					}
				}
				inherit_zanj_rebellion_effect = yes
			}
			50 = {
				# Ali Ibn Muhammad escapes
				desc = fp3_story_cycle_zanj_rebellion_events.0002.a.failure
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				send_interface_toast = {
					title = fp3_story_cycle_zanj_rebellion_events.0002.a.failure
					custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
					custom_tooltip = fp3_story_cycle_zanj_rebellion_leaves_for_baghdad
					left_icon = root
					right_icon = scope:outspoken_rebel
				}
				hidden_effect = {
					scope:zanj_leader = {
						change_variable = {
							name =  zanj_rebellion_strength_score
							add = 4
						}
					}
					title:c_baghdad.holder = {
						hidden_effect = {
							title:c_baghdad.holder = {
								add_visiting_courtier = scope:outspoken_rebel
							}
						}
					}
					title:c_basra.holder.top_liege = {
						trigger_event = {
							id = fp3_story_cycle_zanj_rebellion_events.0003
							days = { 30 60 }
						}
					}
				}
			}
		}
		root = {
			progress_towards_rival_effect = {
				REASON = fp3_zanj_rebellion_opressed_me
				CHARACTER = scope:outspoken_rebel
				OPINION = default_rival_opinion
			}
		}
		stress_impact = {
			paranoid = medium_stress_impact_loss
			just = minor_stress_impact_loss
			callous = minor_stress_impact_loss
			sadistic = minor_stress_impact_loss
			trusting = medium_stress_impact_gain
			forgiving = medium_stress_impact_gain
			compassionate = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			modifier = {
				factor = 0.5
				OR = {
					has_trait = trusting
					has_trait = forgiving
					has_trait = compassionate
				}
			}
		}
	}

	#Ignore Ali
	option = {
		name = fp3_story_cycle_zanj_rebellion_events.0002.c
		custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt
		scope:zanj_leader = {
			change_variable = {
				name =  zanj_rebellion_strength_score
				add = 2
			}
		}
		custom_tooltip = fp3_story_cycle_zanj_rebellion_leaves_for_baghdad
		hidden_effect = {
			title:c_baghdad.holder = {
				add_visiting_courtier = scope:outspoken_rebel
			}
		}
		title:c_basra.holder.top_liege = {
			trigger_event = {
				id = fp3_story_cycle_zanj_rebellion_events.0003
				days = { 30 60 }
			}
		}
		stress_impact = {
			paranoid = medium_stress_impact_gain
			just = minor_stress_impact_gain
			callous = minor_stress_impact_gain
			sadistic = medium_stress_impact_gain
			trusting = medium_stress_impact_loss
			forgiving = medium_stress_impact_loss
			compassionate = medium_stress_impact_loss
		}
		ai_chance = {
			base = 100
			modifier = {
				factor = 0.5
				OR = {
					has_trait = paranoid
					has_trait = just
					has_trait = callous
					has_trait = sadistic
				}
			}
		}
	}
}

### Setup to find correct scope for event 0004 and check if Ali is dead or imprisoned
fp3_story_cycle_zanj_rebellion_events.0003 = {
	scope = none
	hidden = yes

	immediate = {
		if ={
			#check if Ali is still alive and not in prison and is not an inheritor of the rebellion
			limit = {
				scope:zanj_leader = {
					AND = {
						is_alive = yes
						is_imprisoned = no
						NOT = { has_character_flag = new_zanj_leader }
					}
				}
			}
			title:c_baghdad.holder.top_liege = {
				trigger_event = {
					id = fp3_story_cycle_zanj_rebellion_events.0004
				}
			}
		}
	}
}

### Ali Ibn Muhammad claims divinity
fp3_story_cycle_zanj_rebellion_events.0004 = {
	type = character_event
	theme = faith
	title = fp3_story_cycle_zanj_rebellion_events.0004.t
	desc = fp3_story_cycle_zanj_rebellion_events.0004.desc

	left_portrait = {
		character = root
		animation = dismissal
	}
	right_portrait = {
		character = scope:zanj_leader
		animation = personality_zealous
	}

	#Contest Ali Ibn Muhammad's claims
	option = {
		name = fp3_story_cycle_zanj_rebellion_events.0004.a
		duel = {
			skill = learning
			target = scope:zanj_leader
			50 = {
				# You disprove Ali's claims
				desc = fp3_story_cycle_zanj_rebellion_events.0004.a.success
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				send_interface_toast = {
					title = fp3_story_cycle_zanj_rebellion_events.0004.a.success
					add_piety = medium_piety_gain
					add_prestige = minor_prestige_gain
					left_icon = root
					right_icon = scope:zanj_leader
				}
			}
			50 = {
				# Ali Ibn Muhammad validates his claims
				desc = fp3_story_cycle_zanj_rebellion_events.0004.a.failure
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
				send_interface_toast = {
					title = fp3_story_cycle_zanj_rebellion_events.0004.a.failure
					left_icon = root
					right_icon = scope:zanj_leader

					scope:zanj_leader = {
						add_trait = sayyid
						add_pressed_claim = title:e_arabia
						change_variable = {
							name =  zanj_rebellion_strength_score
							add = 4
						}
					}
				}
			}
		}
		root = {
			progress_towards_rival_effect = {
				REASON = fp3_zanj_rebellion_opressed_me
				CHARACTER = scope:zanj_leader
				OPINION = default_rival_opinion
			}
		}
		stress_impact = {
			paranoid = minor_stress_impact_loss
			just = minor_stress_impact_loss
			zealous = medium_stress_impact_loss
			trusting = medium_stress_impact_gain
			forgiving = medium_stress_impact_gain
			cynical = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			modifier = {
				factor = 0.5
				OR = {
					has_trait = cynical
					has_trait = trusting
					has_trait = forgiving
				}
			}
		}
	}

	#Ignore Ali
	option = {
		name = fp3_story_cycle_zanj_rebellion_events.0004.b
		custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt

		scope:zanj_leader = {
			add_trait = sayyid
			add_pressed_claim = title:e_arabia
			change_variable = {
				name =  zanj_rebellion_strength_score
				add = 2
			}
		}
		stress_impact = {
			paranoid = minor_stress_impact_gain
			just = minor_stress_impact_gain
			zealous = medium_stress_impact_gain
			trusting = minor_stress_impact_loss
			forgiving = medium_stress_impact_loss
			cynical = medium_stress_impact_loss
		}
		ai_chance = {
			base = 100
			modifier = {
				factor = 0.5
				OR = {
					has_trait = paranoid
					has_trait = just
					has_trait = zealous
				}
			}
		}
	}
}

### Setup event to find the correct scope and check if Ali or the current Zanj Leader is dead or imprisoned
fp3_story_cycle_zanj_rebellion_events.0005 = {
	scope = none
	hidden = yes
	immediate = {
		if = {
			limit = {
				scope:zanj_leader = {
					OR = {
						is_imprisoned = yes
						is_alive = no
						is_landed = yes
					}
				}
			}
			inherit_zanj_rebellion_effect = yes
		}
		title:c_basra.holder.top_liege = {
			trigger_event = {
				id = fp3_story_cycle_zanj_rebellion_events.0006
			}
		}
	}
}

### A Zanj Steps Forth
fp3_story_cycle_zanj_rebellion_events.0006 = {
	type = character_event
	theme = corruption
	title = fp3_story_cycle_zanj_rebellion_events.0006.t
	desc = {
		desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.a

		triggered_desc = {
			trigger = { scope:zanj_leader = { NOT =  { has_character_flag = new_zanj_leader } } }
			desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.b
		}

		desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.c
	}

	left_portrait = {
		character = root
		animation = eyeroll
	}

	right_portrait = {
		character = scope:outspoken_rebel
		animation = worry
	}

	lower_left_portrait = {
		trigger = { scope:zanj_leader = { NOT =  { has_character_flag = new_zanj_leader } } }
		character = scope:zanj_leader
	}

	immediate = {
		if = {
			limit = { scope:zanj_leader = { NOT =  { has_character_flag = new_zanj_leader } } }
			spawn_zanj_representative_character_effect = yes
			scope:zanj_representative = { save_scope_as = outspoken_rebel }
		}
		else = {
			scope:zanj_leader = { save_scope_as = outspoken_rebel }
		}
	}
	#Give Basra to the Zanj
	option = {
		name = fp3_story_cycle_zanj_rebellion_events.0006.a

		create_title_and_vassal_change = {
			type = independency
			save_scope_as = change
			add_claim_on_loss = no
		}

		title:c_basra = {
			set_county_culture = culture:east_bantu
			set_county_faith = faith:azariqa
		}

		show_as_tooltip = { # UI/UX
			title:c_basra = {
				change_title_holder = {
					holder = scope:outspoken_rebel
					change = scope:change
				}
			}
		}

		scope:outspoken_rebel = {
			becomes_independent = {
				change = scope:change
			}
			add_truce_both_ways = {
				character = root
				years = 10
				name = fp3_landed_zanj_reason
			}
		}

		if = {
			limit = {
				NOT = { title:c_basra.holder = root  }
			}
			add_tyranny = 30
			set_relation_rival = {
				reason = fp3_rival_gave_title_away
				target = title:c_basra.holder
			}
		}

		hidden_effect = {
			title:c_basra = {
				change_title_holder = {
					holder = scope:outspoken_rebel
					change = scope:change
				}
				every_de_jure_county = {
					change_title_holder = {
						holder = scope:outspoken_rebel
						change = scope:change
					}
				}
			}
			scope:zanj_leader = {
				random_owned_story = {
					type = story_zanj_rebellion
					end_story = yes
				}
			}
		}
		resolve_title_and_vassal_change = scope:change

		stress_impact = {
			compassionate = medium_stress_impact_loss
			just = minor_stress_impact_loss
			forgiving = minor_stress_impact_loss
			generous = medium_stress_impact_loss
			content = medium_stress_impact_loss
			callous = medium_stress_impact_gain
			sadistic = major_stress_impact_gain
			ambitious = medium_stress_impact_gain
			greedy = medium_stress_impact_gain
		}
		ai_chance = {
			base = 100
			modifier = {
				factor = 0.5
				OR = {
					has_trait = callous
					has_trait = sadistic
					has_trait = ambitious
					has_trait = greedy
				}
			}
		}
	}

	#Make minor concessions to the Zanj
	option = {
		name = fp3_story_cycle_zanj_rebellion_events.0006.b

		scope:zanj_leader = {
			change_variable = {
				name =  zanj_rebellion_strength_score
				add = 3
			}
		}
		custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt
		hidden_effect = {
			title:c_basra.holder = {
				if = {
					limit = { scope:zanj_leader != scope:outspoken_rebel}
					add_visiting_courtier = scope:zanj_leader
				}
				add_visiting_courtier = scope:outspoken_rebel
			}
		}

		if = {
			limit = {
				NOT = { title:c_basra.holder = root  }
			}
			progress_towards_rival_effect = {
				REASON = fp3_zanj_rebellion_interfered_with_my_workers
				CHARACTER = title:c_basra.holder
				OPINION = default_rival_opinion
			}
		}

		title:c_basra = {
			add_county_modifier = {
				modifier = fp3_zanj_rebellion_work_concessions_modifier
				years = 5
			}
		}

		trigger_event = {
			id = fp3_story_cycle_zanj_rebellion_events.0007
			days = { 30 60 }
		}
		stress_impact = {
			compassionate = minor_stress_impact_loss
			just = minor_stress_impact_loss
			forgiving = minor_stress_impact_loss
			generous = minor_stress_impact_loss
			content = minor_stress_impact_loss
			callous = minor_stress_impact_gain
			sadistic = medium_stress_impact_gain
			ambitious = minor_stress_impact_gain
			greedy = minor_stress_impact_gain
		}
		ai_chance = {
			base = 100
			modifier = {
				factor = 0.5
				OR = {
					has_trait = callous
					has_trait = sadistic
					has_trait = ambitious
					has_trait = greedy
				}
			}
		}
	}

	#Ignore the Zanj
	option = {
		name = fp3_story_cycle_zanj_rebellion_events.0006.c

		scope:zanj_leader = {
			change_variable = {
				name =  zanj_rebellion_strength_score
				add = 5
			}
		}
		custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
		hidden_effect = {
			title:c_basra.holder = {
				add_visiting_courtier = scope:zanj_leader
				add_visiting_courtier = scope:zanj_representative
			}
		}

		if = {
			limit = {
				NOT = { title:c_basra.holder = root  }
			}

			progress_towards_friend_effect = {
				REASON = fp3_rival_stayed_out_of_my_business
				CHARACTER = title:c_basra.holder
				OPINION = default_friend_opinion
			}
		}

		trigger_event = {
			id = fp3_story_cycle_zanj_rebellion_events.0007
			days = { 30 60 }
		}

		stress_impact = {
			compassionate = minor_stress_impact_gain
			just = minor_stress_impact_gain
			forgiving = minor_stress_impact_gain
			generous = minor_stress_impact_gain
			content = minor_stress_impact_gain
			callous = minor_stress_impact_loss
			sadistic = medium_stress_impact_loss
			ambitious = minor_stress_impact_loss
			greedy = minor_stress_impact_loss
		}
		ai_chance = {
			base = 100
			modifier = {
				factor = 0.5
				OR = {
					has_trait = compassionate
					has_trait = just
					has_trait = forgiving
					has_trait = generous
				}
			}
		}
	}
}

fp3_story_cycle_zanj_rebellion_events.0007 = {
	scope = none
	hidden = yes
	immediate = {
		if = {
			limit = {
				scope:zanj_leader = {
					OR = {
						is_imprisoned = yes
						is_alive = no
						is_landed = yes
					}
				}
			}
			inherit_zanj_rebellion_effect = yes
		}
		title:c_basra.holder.top_liege = {
			trigger_event = {
				id = fp3_story_cycle_zanj_rebellion_events.0008

			}
		}
	}
}

### The Zanj Rebellion
fp3_story_cycle_zanj_rebellion_events.0008 = {
	type = character_event
	theme = battle
	override_background = { reference = wilderness_wetlands }
	title = fp3_story_cycle_zanj_rebellion_events.0008.t
	desc = {
		desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.a
		triggered_desc = {
			trigger = {
				scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader}}
			}
			desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.b
		}
		triggered_desc = {
			trigger = {
				scope:zanj_leader = { has_character_flag = new_zanj_leader }
			}
			desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.c
		}
		desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.d
	}

	left_portrait = {
		character = root
		animation = shock
	}
	right_portrait = {
		character = scope:zanj_leader
		animation = celebrate_sword
	}

	immediate = {
		scope:zanj_leader = {
			give_nickname = nick_chief_of_the_zanj
			hidden_effect = {
				random_owned_story = {
					type = story_zanj_rebellion
					end_story = yes
				}
			}
		}
		hidden_effect = {
			fp3_start_zanj_rebellion_effect = {
				TARGET_COUNTY = title:c_basra
				REBEL_LEADER = scope:zanj_leader
			}
			create_zanj_courtier_effect = {
				EMPLOYER = scope:zanj_leader
				LOCATION = scope:zanj_leader.location
			}
			create_zanj_courtier_effect = {
				EMPLOYER = scope:zanj_leader
				LOCATION = scope:zanj_leader.location
			}
			create_zanj_courtier_effect = {
				EMPLOYER = scope:zanj_leader
				LOCATION = scope:zanj_leader.location
			}
			create_zanj_courtier_effect = {
				EMPLOYER = scope:zanj_leader
				LOCATION = scope:zanj_leader.location
			}
		}
	}

	option = {
		name = fp3_story_cycle_zanj_rebellion_events.0008.a
	}
}