﻿namespace = ep3_roman_restoration

#######################################
###
###	EP3 RESTORE ROME STORY CYCLE EVENTS
### by Chad Uhl
###
### 0100 		Justinian's Dream
### 0101-0109 	Rome Reformed Notifications
### 0300-0590 	Post-Restoration Difficulties
###
#######################################

# Justinian's Dream
# Event fired on story cycle setup informing the player that they can form the roman empire
ep3_roman_restoration.0001 = {
	type = character_event
	title = ep3_roman_restoration.0001.t
	desc = ep3_roman_restoration.0001.desc
	theme = emperor

	override_background = {
		trigger = { capital_county = title:c_byzantion }
		reference = ep3_constantinople
	}

	left_portrait = {
		character = root
		animation = emotion_thinking_scepter
	}

	trigger = {
		NOT = { has_global_variable = flag_restored_roman_empire }
	}

	option = { 
		name = ep3_roman_restoration.0001.a
		custom_tooltip = ep3_roman_restoration.0001.a.tt
		decision:restore_roman_empire_decision = {
			open_view_data = {
				view = decision_detail
				player = root
			}
		}
	}
}

# Should I LARP or nah?
ep3_roman_restoration.0100 = {
	type = character_event
	window = fullscreen_event
	title = ep3_roman_restoration.0100.t
	desc = ep3_roman_restoration.0100.desc
	theme = emperor
	override_background = { reference = ep3_fullscreen_restore_rome }

	immediate = {
		save_scope_as = scoped_emperor
	}

	option = { # LARP (Hard Mode)
		name = ep3_roman_restoration.0100.a
		custom_tooltip = ep3_roman_restoration.hard_mode
		custom_tooltip = ep3_roman_restoration.end_hard_mode
		custom_tooltip = ep3_roman_restoration.invasion_cb
		every_held_title = {
			limit = {
				is_head_of_faith = yes
			}
			root = {
				destroy_title = prev
			}
		}
		set_character_faith = faith:hellenic_pagan 
		primary_title = { set_state_faith = faith:hellenic_pagan }
		every_held_title = {
			custom = custom.every_held_county
			title_tier = county
			set_county_faith = faith:hellenic_pagan
		}
		every_vassal = {
			custom = custom.every_vassal
			limit = {
				NOT = {
					any_held_title = {
						is_head_of_faith = yes # you cannot convert the Ecumenical Patriarch, sorry
					}
				}
			}
			custom_tooltip = {
				text = may_choose_to_convert_hellenic_desc
				run_interaction = { # We use the same interaction as when creating a new faith to keep a consistent behaviour, since that is essentially what you're doing here
					interaction = ask_for_conversion_interaction
					actor = root
					recipient = this
					execute_threshold = accept
				}
			}
		}
		custom_tooltip = {
			text = ep3_roman_restoration.household_gods_tenet
			set_global_variable = household_gods_tenet_unlocked
		}
		custom_tooltip = {
			text = uses_custom_caesar_flavourization_tt
			set_variable = uses_custom_caesar_flavourization
		}
		if = {
			limit = {
				any_owned_story = { type = ep3_story_cycle_restoring_rome }
			}
			random_owned_story = {
				type = ep3_story_cycle_restoring_rome
				set_variable = roman_empire_hard_mode
			}
		}
	}

	option = { # Roleplay option (become Hellenic without Hard Mode)
		name = ep3_roman_restoration.0100.c
		custom_tooltip = ep3_roman_restoration.easy_mode
		every_held_title = {
			limit = {
				is_head_of_faith = yes
			}
			root = {
				destroy_title = prev
			}
		}
		set_character_faith = faith:hellenic_pagan 
		primary_title = { set_state_faith = faith:hellenic_pagan }
		every_held_title = {
			custom = custom.every_held_county
			title_tier = county
			set_county_faith = faith:hellenic_pagan
		}
		every_vassal = {
			custom = custom.every_vassal
			limit = {
				NOT = {
					any_held_title = {
						is_head_of_faith = yes # you cannot convert the Ecumenical Patriarch, sorry
					}
				}
			}
			custom_tooltip = {
				text = may_choose_to_convert_hellenic_desc
				run_interaction = { # We use the same interaction as when creating a new faith to keep a consistent behaviour, since that is essentially what you're doing here
					interaction = ask_for_conversion_interaction
					actor = root
					recipient = this
					execute_threshold = accept
				}
			}
		}
		custom_tooltip = {
			text = ep3_roman_restoration.household_gods_tenet
			set_global_variable = household_gods_tenet_unlocked
		}
		custom_tooltip = {
			text = uses_custom_caesar_flavourization_tt
			set_variable = uses_custom_caesar_flavourization
		}
	}

	option = { # Easy Mode
		name = ep3_roman_restoration.0100.b
		custom_tooltip = ep3_roman_restoration.easy_mode
	}

	after = {
		create_roman_empire_scripted_effect = yes
		set_nickname_effect = { NICKNAME = nick_the_glorious }
		# Send narrative fluff to other players (if any).
		every_player = {
			limit = { this != root }
			trigger_event = ep3_roman_restoration.0101
		}
	}
}

# Some chucklefuck restored Rome
ep3_roman_restoration.0101 = {
	type = character_event
	window = fullscreen_event
	title = roman_restoration.0002.t
	desc = {
		desc = ep3_roman_restoration.0101.intro
		first_valid = {
			triggered_desc = {
				trigger = { scope:scoped_emperor.primary_title.state_faith ?= faith:hellenic_pagan }
				desc = ep3_roman_restoration.0101.hellenic
			}
			triggered_desc = {
				trigger = { scope:scoped_emperor.primary_title.state_faith ?= faith:orthodox }
				desc = ep3_roman_restoration.0101.orthodox
			}
			desc = ep3_roman_restoration.0101.fallback
		}
		desc = ep3_roman_restoration.0101.outro
	}
	theme = emperor
	override_background = { reference = ep3_fullscreen_restore_rome }
	
	immediate = {
		#Same-faith non-empire tier rulers are over-awed.
		if = {
			limit = { faith = scope:scoped_emperor.primary_title.state_faith }
			play_music_cue = "mx_cue_epic_sacral_moment"
		}
		#Otherwise, this is a tacit statement of imperial threat.
		else = { play_music_cue = "mx_cue_combat_2" }
	}

	option = { 
		name = ep3_roman_restoration.0101.a
	}
}


#######################################
### POST-ROME DIFFICULTIES

# Your inefficient governor messed up, causing mass loss in popular opinion. Can you fix it?
ep3_roman_restoration.0300 = {
	type = character_event
	title = ep3_roman_restoration.0300.t
	desc = ep3_roman_restoration.0300.desc
	theme = emperor

	left_portrait = {
		character = root
		animation = anger
	}
	right_portrait = {
		character = scope:inefficient_governor
		animation = shock
	}

	cooldown = { years = 20 }

	immediate = {
		ordered_vassal = {
			limit = {
				is_governor = yes
				is_ai = yes
			}
			order_by = { # Mostly sort by governor efficiency
				value = governor_efficiency
				multiply = -10
				# Prefer governors with a larger realm size for more difficulty
				add = sub_realm_size
			}
			save_scope_as = inefficient_governor
		}
		custom_tooltip = ep3_roman_restoration.0300.efficiency
	}

	option = { # Stewardship Challenge
		name = ep3_roman_restoration.0300.a
		duel = {
			skill = stewardship
			value = excellent_skill_level

			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = 3.5
					min = -49
				}
				send_interface_toast = {
					type = event_toast_effect_good
					title = ep3_roman_restoration.0300.a.success
					left_icon = scope:inefficient_governor
					right_icon = scope:inefficient_governor.primary_title

					scope:inefficient_governor = {
						every_sub_realm_county = {
							custom = ep3_roman_restoration.0300.every_sub_realm_county
							add_county_modifier = {
								modifier = restore_rome_recuperated_county_opinion_modifier
								years = 10
							}
						}
					}
				}
			}
			50 = {
				compare_modifier = {
					value = scope:duel_value
					multiplier = -3.5
					min = -49
				}
				send_interface_toast = {
					type = event_toast_effect_bad
					title = ep3_roman_restoration.0300.a.failure
					left_icon = scope:inefficient_governor
					right_icon = scope:inefficient_governor.primary_title

					scope:inefficient_governor = {
						every_sub_realm_county = {
							custom = ep3_roman_restoration.0300.every_sub_realm_county
							add_county_modifier = {
								modifier = restore_rome_devastated_county_opinion_modifier
								years = 10
							}
						}
					}
				}
			}
		}
	}

	option = { # Fire the Governor
		name = ep3_roman_restoration.0300.b
		change_influence = massive_influence_loss
		save_scope_as = actor
		scope:inefficient_governor = {
			save_scope_as = recipient
			primary_title = { save_scope_as = landed_title }
		}
		save_scope_value_as = {
			name = hook
			value = no
		}
		scope:inefficient_governor = {
			every_sub_realm_county = {
				custom = ep3_roman_restoration.0300.every_sub_realm_county
				add_county_modifier = {
					modifier = restore_rome_recuperated_county_opinion_modifier
					years = 10
				}
			}
			force_step_down_landed_titles = yes
		}
	}
	
	option = { # Opt-Out
		name = ep3_roman_restoration.0300.c

		scope:inefficient_governor = {
			every_sub_realm_county = {
				custom = ep3_roman_restoration.0300.every_sub_realm_county
				add_county_modifier = {
					modifier = restore_rome_lowered_county_opinion_modifier
					years = 10
				}
			}
		}

		stress_impact = {
			base = medium_stress_impact_loss
			lazy = minor_stress_impact_loss
			diligent = medium_stress_impact_gain
			ambitious = minor_stress_impact_gain 
		}
	}
}

# Every 10-30 years, a random kingdom will raid you
ep3_roman_restoration.0500 = {
	type = character_event
	title = ep3_roman_restoration.0500.t
	desc = ep3_roman_restoration.0500.desc
	theme = emperor

	left_portrait = {
		character = root
		animation = emotion_thinking_scepter
	}

	right_portrait = {
		character = scope:marshal
		animation = inspect_weapon
	}

	lower_center_portrait = scope:target_kingdom

	cooldown = { years = { 10 30 } }
	
	trigger = {
		exists = cp:councillor_marshal
		any_neighboring_top_liege_realm_owner = {
			is_ai = yes
			is_at_war = no
			primary_title = { tier >= tier_kingdom }
			NOR = {
				is_allied_to = root
				any_truce_target = { this = root }
				has_relation_friend = root
				has_relation_lover = root
			}
			any_top_realm_border_county = {
				any_neighboring_county = {
					holder.top_liege = root
					NOT = {
						title_province = { has_province_modifier = recently_looted_modifier }
					}
				}
			}
		}
	}

	immediate = {
		cp:councillor_marshal = { save_scope_as = marshal }
		ordered_neighboring_top_liege_realm_owner = {
			limit = {
				is_ai = yes
				is_at_war = no
				primary_title = { tier >= tier_kingdom }
				any_top_realm_border_county = {
					any_neighboring_county = {
						holder.top_liege = root
						NOT = {
							title_province = { has_province_modifier = recently_looted_modifier }
						}
					}
				}
			}
			order_by = {
				value = 1
				add = { # inverted opinion since we're looking for ppl who hate you
					value = "opinion(root)"
					multiply = -1
				}
				if = {
					limit = { can_raid_trigger = yes }
					add = 50
				}
			}
			save_scope_as = target_kingdom
		}
		scope:target_kingdom = {
			random_top_realm_border_county = {
				limit = {
					any_neighboring_county = {
						holder.top_liege = root
						NOT = {
							title_province = { has_province_modifier = recently_looted_modifier }
						}
					}
				}
				random_neighboring_county = {
					limit = {
						holder.top_liege = root
						NOT = {
							title_province = { has_province_modifier = recently_looted_modifier }
						}
					}
					save_scope_as = target_county
				}
			}
		}
	}

	option = {
		name = ep3_roman_restoration.0500.a
	}

	after = {
		scope:target_kingdom = {
			start_war = {
				cb = ep3_roman_empire_border_war
				target = root
				target_title = scope:target_county
			}
		}
	}
}

# Special Bubonic Plague Spawns - Commented out and disabled because this is not very fun
#ep3_roman_restoration.0510 = {
#	hidden = yes
#
#	immediate = {
#		random_realm_county = {
#			limit = { exists = holder }
#			holder = { save_scope_as = target_holder }
#			save_scope_as = infected_county
#			title_province = {
#				save_scope_as = target_province
#				create_epidemic_outbreak = {
#					type = bubonic_plague
#					intensity = major
#					save_scope_as = epidemic
#				}
#			}
#		}
#		trigger_event = epidemic_events.1100
#	}
#}

# Mongol Invasion Spawns
ep3_roman_restoration.0520 = {
	scope = none
	hidden = yes

	trigger = {
		NOR = {
			has_global_variable = mongols_have_appeared
			any_player = {
				THIS = culture:mongol.culture_head
				realm_size >= 100
			}
		}
	}

	immediate = {
		set_global_variable = {
			name = mongols_have_appeared
			value = yes
		}
		debug_log = "Mongols appeared!"
		debug_log_date = yes
		spawn_temujin_character_effect = yes
		scope:temujin = {
			save_scope_as = story_owner
			create_story = story_mongol_invasion
		}
	}
}
