namespace = Plus

#reserved: Plus.2750 to Plus.2799

#######################################
# NORMAN EVENTS
# Written by Rylock
#######################################

# Check if Rollo exists in 876
character_event = {
	id = Plus.2750

	is_triggered_only = yes # on_yearly_pulse
	hide_window = yes

	only_playable = yes

	trigger = {
		owns = event_target:pulse_province
		year >= 875
		year < 890

		d_normandy = {
			trigger_if = {
				limit = { has_holder = yes }
				is_contested = no
			}

			NOT = { has_global_flag = rollo_invades_normandy }
		}

		c_rouen = {
			is_contested = no

			holder_scope = {
				war = no
				in_revolt = no

				NOR = {
					culture = norse
					religion = norse_pagan
				}

				top_liege = {
					war = no
					in_revolt = no

					NOR = {
						culture = norse
						religion = norse_pagan
						has_any_opinion_modifier = opinion_targeted_by_adventurer
					}
				}
			}
		}
	}

	immediate = {
		set_global_flag = rollo_invades_normandy

		# TODO: Make global event target out of Rollo, for easier tracking?
		random_character = {
			limit = {
				has_character_flag = is_rollo
				religion = norse_pagan
				culture = norse
				health >= 4
				is_ruler = no
				prisoner = no
				is_ill = no
				is_maimed_trigger = no
				is_weak_trigger = no

				NOR = {
					trait = content
					trait = craven
					trait = humble
					trait = depressed
					trait = imbecile
					trait = incapable
					trait = celibate
					trait = blinded
					trait = eunuch
					any_liege = { holy_order = yes }
					any_liege = { mercenary = yes }
					any_spouse = { is_ruler = yes }
					any_heir_title = { always = yes }
				}
			}

			character_event = { id = Plus.2751 } # Start the adventure
			break = yes
		}

		random_playable_ruler = {
			limit = {
				OR = {
					AND = {
						has_landed_title = c_nidaros
						culture = norse
					}

					AND = {
						c_nidaros = { holder_scope = { NOT = { culture = norse } } }
						culture = norse

						capital_scope = {
							region = custom_norway
							is_coastal = yes
						}
					}
				}
			}

			create_random_soldier = {
				name = "Rollo"
				random_traits = no
				dynasty = random
				religion = norse_pagan
				culture = norse
				female = no
				age = 30
				health = 7

				attributes = {
					martial = 7
					diplomacy = 6
					intrigue = 8
					stewardship = 7
					learning = 5
				}

				add_trait = lustful
				add_trait = proud
				add_trait = strong
				add_trait = brave
				add_trait = viking
				add_trait = brilliant_strategist
			}

			new_character = {
				set_character_flag = is_rollo
				set_character_flag = ai_flag_refuse_marriage
				set_character_flag = ai_flag_refuse_concubinage
				character_event = { id = Plus.2751 } # Start the adventure
			}
		}
	}
}

# Rollo begins his adventure for Normandy
character_event = {
	id = Plus.2751

	hide_window = yes
	is_triggered_only = yes

	immediate = {
		prestige = 250
		remove_do_not_disturb_effect = yes
		set_character_flag = no_invasions
		add_trait = ambitious
		add_trait = adventurer

		# Come out of hiding if necessary
		end_inaccessibility_effect = yes

		if = {
			limit = {
				c_rouen = {
					holder_scope = {
						OR = {
							ai = no
							any_liege = { ai = no }
						}
					}
				}
			}

			liege = {
				capital_scope = {
					save_event_target_as = spawn_province
				}
			}
		}
		else = {
			c_rouen = {
				location = {
					save_event_target_as = spawn_province
				}
			}
		}

		c_rouen = {
			holder_scope = {
				top_liege = {
					save_event_target_as = rollo_target_ruler
				}
			}
		}

		liege = {
			capital_scope = {
				save_event_target_as = rollo_army_spawn
			}
		}

		log = "[Root.GetBestName] has started their adventure against [rollo_target_ruler.GetBestName] for the Duchy of Normandy"
		set_defacto_liege = ROOT
		set_character_flag = duchy_adventurer

		create_title = {
			tier = DUKE
			landless = yes
			temporary = yes
			culture = ROOT
			name = CLAIMANT_ADVENTURE
			holder = ROOT
			ruler = LORD
			ruler_female = LADY
		}

		spawn_unit = {
			province = event_target:spawn_province
			home = event_target:rollo_army_spawn
			owner = ROOT
			match_character = event_target:rollo_target_ruler
			match_mult = 0.7
			match_min = 1000
			match_max = 50000
			attrition = 0.25
			disband_on_peace = yes
			reinforces = yes
		}

		spawn_unit = {
			province = event_target:spawn_province
			home = event_target:rollo_army_spawn
			owner = ROOT
			match_character = event_target:rollo_target_ruler
			match_mult = 0.4
			match_min = 1000
			match_max = 50000
			attrition = 0.25
			disband_on_peace = yes
			reinforces = yes
		}

		while = {
			count = 2

			spawn_unit = {
				province = event_target:spawn_province
				home = event_target:rollo_army_spawn
				owner = ROOT
				match_character = event_target:rollo_target_ruler
				match_mult = 0.2
				match_min = 1000
				match_max = 50000
				attrition = 0.25
				disband_on_peace = yes
				reinforces = yes
			}
		}

		spawn_fleet = {
			province = closest # closest sea zone
			owner = ROOT
			disband_on_peace = yes

			troops = {
				galleys = { 500 500 }
			}
		}

		war = {
			target = event_target:rollo_target_ruler
			casus_belli = duchy_adventure
			thirdparty_title = c_rouen
			tier = DUKE
			infamy = 0
		}

		character_event = { id = Plus.2760 } # Notification

		# Create some decent commanders
		while = {
			count = 5

			create_random_soldier = {
				random_traits = yes
				dynasty = none
				religion = ROOT
				culture = ROOT
				female = no
				age = 25
			}

			new_character = {
				random_list = {
					1 = { }
					1 = { add_age = 1 }
					1 = { add_age = 2 }
					1 = { add_age = 3 }
					1 = { add_age = 4 }
					1 = { add_age = 5 }
				}
			}
		}

		# Create some councillors
		create_random_diplomat = {
			random_traits = yes
			dynasty = none
			religion = ROOT
			culture = ROOT
			female = no
			age = 25
		}

		create_random_priest = {
			random_traits = yes
			dynasty = none
			religion = ROOT
			culture = ROOT
			female = no
			age = 35
		}

		create_random_intriguer = {
			random_traits = yes
			dynasty = none
			religion = ROOT
			culture = ROOT
			female = no
			age = 30
		}
	}
}

# Rollo is successful!
# Fired from the duchy_adventure CB
character_event = {
	id = Plus.2752

	is_triggered_only = yes
	hide_window = yes

	immediate = {
		prestige = 500

		# Set Arques as capital, if it's not
		if = {
			limit = { has_landed_title = c_rouen }
			capital = c_rouen
		}

		# Prevent uprisings for the next 20 years
		any_realm_province = {
			limit = { held_under_PREV = yes }

			add_province_modifier = {
				name = recent_county_uprising
				years = 20
			}
		}

		spawn_unit = {
			province = capital_scope
			home = capital_scope
			owner = ROOT
			attrition = 0.25
			maintenance_multiplier = 0
			earmark = rollo_event_troops

			troops = {
				light_infantry = { 1800 1800 }
				light_cavalry = { 540 540 }
				heavy_infantry = { 310 310 }
				knights = { 55 55 }
			}
		}
	}
}

# Rollo converts to Christianity on his own
character_event = {
	id = Plus.2753
	desc = EVTDESC_Plus_2753
	picture = GFX_evt_viking_throneroom_oldgods

	is_triggered_only = yes # on_yearly_pulse, random_events

	only_independent = yes
	religion = norse_pagan
	only_men = yes
	min_age = 16
	only_capable = yes
	prisoner = no
	war = no

	trigger = {
		OR = {
			culture = norse
			culture = norman
		}

		higher_real_tier_than = BARON
		year < 1066

		capital_scope = {
			duchy = { title = d_normandy }
		}

		NOR = {
			has_character_flag = converted_religion
			has_global_flag = norman_conversion
		}

		is_inaccessible_trigger = no
	}

	weight_multiplier = {
		factor = 1

		mult_modifier = {
			factor = 2
			practical_age >= 40
		}

		mult_modifier = {
			factor = 2
			practical_age >= 45
		}

		mult_modifier = {
			factor = 4
			practical_age >= 50
		}
	}

	immediate = {
		set_global_flag = norman_conversion
	}

	option = {
		name = EVTOPTA_Plus_2753 # Convert

		piety = -100
		religion_authority = { name = ruler_converted_from }

		if = {
			limit = { has_global_flag = schism_happened }
			religion = catholic
		}
		else = {
			religion = chalcedonian
		}

		if = {
			limit = { NOT = { culture = norman } }
			culture = norman
		}

		if = {
			limit = { has_character_flag = is_rollo }

			if = {
				limit = { is_married = yes }

				if = {
					limit = { ai = yes }
					any_spouse = { remove_spouse = ROOT }
				}
				else = {
					hidden_effect = { remove_character_modifier = barren }
				}
			}
			else = {
				character_event = {
					id = Plus.2758
					days = 1
				}
			}
		}

		hidden_effect = {
			religion_authority = { name = ruler_converted_to }

			capital_scope = {
				if = {
					limit = { culture = french }
					culture = norman
				}
			}

			any_courtier = {
				if = {
					limit = { religion = norse_pagan }
					religion = ROOT
				}

				if = {
					limit = { culture = norse }
					culture = norman
				}
			}
		}

		set_character_flag = converted_religion
	}

	option = {
		name = EVTOPTB_Plus_2753 # Refuse

		piety = 100
		add_trait_fully_zealous_effect = yes

		ai_chance = { factor = 0 }
	}
}

# Rollo offers to kneel before an attacking Christian king
character_event = {
	id = Plus.2754
	desc = EVTDESC_Plus_2754
	picture = GFX_evt_viking_battle_oldgods
	border = GFX_event_normal_frame_war

	is_triggered_only = yes # on_war_started # TODO: This likely doesn't work without periodically re-firing this event

	only_independent = yes
	religion = norse_pagan
	only_men = yes
	min_age = 16
	only_capable = yes
	prisoner = no
	war = yes

	trigger = {
		OR = {
			culture = norse
			culture = norman
		}

		num_of_count_titles >= 1
		lower_real_tier_than = KING
		year < 1066

		capital_scope = {
			duchy = { title = d_normandy }
		}

		any_war = {
			trigger_if = {
				limit = { war_score >= 25 }

				defender = { character = ROOT }

				attacker = {
					OR = {
						AND = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}

						any_liege = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}
					}
				}
			}
			trigger_else = {
				war_score < -25

				attacker = { character = ROOT }

				defender = {
					OR = {
						AND = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}

						any_liege = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}
					}
				}
			}
		}

		NOR = {
			has_character_flag = converted_religion
			has_global_flag = norman_conversion
		}
	}

	immediate = {
		set_global_flag = norman_conversion

		any_war = { # No random_war or score_value way to narrow down to preferred war, unfortunately
			limit = {
				war_score >= 25
				defender = { character = ROOT }

				attacker = {
					OR = {
						AND = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}

						any_liege = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}
					}
				}
			}

			attacker = {
				if = {
					limit = {
						religion_group = christian
						higher_real_tier_than = DUKE
					}
					save_event_target_as = christian_liege
				}
				else_if = {
					limit = {
						liege = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}
					}
					liege = { save_event_target_as = christian_liege }
				}
				else_if = {
					limit = {
						top_liege = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}
					}
					top_liege = { save_event_target_as = christian_liege }
				}

				break = yes
			}
		}

		any_war = {
			limit = {
				war_score < -25
				attacker = { character = ROOT }

				defender = {
					OR = {
						AND = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}

						any_liege = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}
					}
				}
			}

			defender = {
				if = {
					limit = {
						religion_group = christian
						higher_real_tier_than = DUKE
					}
					save_event_target_as = christian_liege
				}
				else_if = {
					limit = {
						liege = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}
					}
					liege = { save_event_target_as = christian_liege }
				}
				else_if = {
					limit = {
						top_liege = {
							religion_group = christian
							higher_real_tier_than = DUKE
						}
					}
					top_liege = { save_event_target_as = christian_liege }
				}
			}
		}
	}

	option = {
		name = EVTOPTA_Plus_2754 # Kneel

		prestige = -200

		event_target:christian_liege = {
			show_scope_change = no

			letter_event = {
				id = Plus.2755
				tooltip = OFFER_TO_KNEEL
			}
		}
	}

	option = {
		name = EVTOPTB_Plus_2754 # Refuse

		add_trait_fully_silently_proud_effect = yes
		add_trait_fully_silently_brave_effect = yes

		ai_chance = { factor = 0 }
	}
}

# Christian king receives offer to kneel
letter_event = {
	id = Plus.2755
	border = GFX_event_letter_frame_war

	desc = {
		text = EVTDESC_Plus_2755
		trigger = { FROM = { prisoner = no } }
	}
	desc = {
		text = EVTDESC_Plus_2755_prisoner
		trigger = { FROM = { prisoner = yes } }
	}

	is_triggered_only = yes

	option = {
		name = EVTOPTA_Plus_2755 # Accept his offer

		piety = 100
		prestige = 250

		any_war = {
			show_scope_change = no

			limit = {
				OR = {
					AND = {
						attacker = { character = FROM }

						defender = {
							OR = {
								character = ROOT
								is_vassal_or_below_of = ROOT
							}
						}
					}

					AND = {
						defender = { character = FROM }

						attacker = {
							OR = {
								character = ROOT
								is_vassal_or_below_of = ROOT
							}
						}
					}
				}
			}

			end_war = invalid
		}

		FROM = {
			show_scope_change = no

			if = {
				limit = { prisoner = yes }
				imprison = no
			}

			set_defacto_liege = ROOT

			remove_opinion = {
				name = declared_war
				who = ROOT
			}

			narrative_event = {
				id = Plus.2756
				tooltip = DEFENDER_KNEELS
			}
		}
	}

	option = {
		name = EVTOPTB_Plus_2755 #Refuse

		hidden_effect = {
			FROM = {
				letter_event = { id = Plus.2757 }
			}
		}

		ai_chance = { factor = 0  }
	}
}

# Rollo's offer is accepted
narrative_event = {
	id = Plus.2756
	title = EVTNAME_Plus_2756
	desc = EVTDESC_Plus_2756
	picture = GFX_evt_knight_kneeling
	border = GFX_event_narrative_frame_war

	is_triggered_only = yes
	major = yes
	show_root = yes
	hide_from = yes

	major_trigger = {
		OR = {
			character = FROM
			is_vassal_or_below_of = FROM
			is_vassal_or_below_of = ROOT

			capital_scope = {
				distance = {
					where = c_rouen
					value < 400	# Same part of the world
				}
			}
		}
	}

	option = {
		name = EVTOPTA_Plus_2756

		trigger = { character = ROOT }

		opinion = {
			name = force_vassalized
			who = FROM
			multiplier = 2
			years = 100
		}

		remove_opinion = {
			name = declared_war
			who = FROM
		}

		piety = -100
		religion_authority = { name = ruler_converted_from }
		religion = FROM

		if = {
			limit = { NOT = { culture = norman } }
			culture = norman
		}

		if = {
			limit = { d_normandy = { has_holder = no } }
			gain_title = d_normandy
		}

		set_defacto_liege = FROM

		if = {
			limit = { has_character_flag = is_rollo }

			if = {
				limit = { is_married = yes }

				if = {
					limit = { ai = yes }
					any_spouse = { remove_spouse = ROOT }
				}
				else = {
					hidden_effect = { remove_character_modifier = barren }
				}
			}
			else = {
				character_event = {
					id = Plus.2758
					days = 1
				}
			}
		}

		hidden_effect = {
			disband_event_forces = rollo_event_troops

			spawn_unit = {
				province = capital_scope
				home = capital_scope
				owner = ROOT
				attrition = 0.25
				maintenance_multiplier = 0

				troops = {
					light_infantry = { 1600 1600 }
					light_cavalry = { 540 540 }
					heavy_infantry = { 210 210 }
					knights = { 55 55 }
				}
			}

			religion_authority = { name = ruler_converted_to }

			if = {
				limit = { capital_scope = { culture = french } }
				capital_scope = { culture = norman }
			}
			any_courtier = {
				limit = { religion = norse_pagan }
				religion = ROOT
			}
			any_courtier = {
				limit = { culture = norse }
				culture = norman
			}
		}
		set_character_flag = converted_religion
	}
	option = {
		name = EVTOPTB_Plus_2756
		trigger = { character = FROM }
	}
	option = {
		name = I_SEE
		trigger = {
			NOR = {
				character = ROOT
				character = FROM
			}
		}
	}
}

# Rollo's offer is refused
letter_event = {
	id = Plus.2757
	desc = EVTDESC_Plus_2757
	border = GFX_event_letter_frame_war

	is_triggered_only = yes

	option = {
		name = CURSES
	}
}

# Rollo marries Poppa once he converts
character_event = {
	id = Plus.2758
	desc = EVTDESC_Plus_2758
	picture = GFX_evt_marriage
	portrait = event_target:poppa

	is_triggered_only = yes
	show_root = yes

	immediate = {
		create_random_priest = {
			name = "Poppa"
			female = yes
			random_traits = no
			dynasty = 100097
			age = 19
			health = 7
			religion = ROOT
			culture = french

			attributes = {
				martial = 7
				diplomacy = 7
				intrigue = 5
				stewardship = 7
			}

			add_trait = scholarly_theologian
			add_trait = kind
			add_trait = chaste
			add_trait = content
			add_trait = humble
			add_trait = fertile
		}

		new_character = {
			save_event_target_as = poppa

			opinion = {
				name = opinion_forced_consort
				who = ROOT
				years = 10
			}

			create_character = {
				name = "William"
				random_traits = yes
				female = no
				age = 0
				culture = ROOT
				religion = ROOT
				dynasty = ROOT
				health = 7
			}

			new_character = {
				set_mother = PREV
				set_father = ROOT
			}
		}
	}

	option = {
		name = EXCELLENT

		hidden_effect = {
			remove_character_modifier = barren

			any_child_even_if_dead = {
				limit = { dynasty = ROOT }

				dynasty = 752

				any_child_even_if_dead = {
					limit = { dynasty = ROOT }

					dynasty = 752

					any_child_even_if_dead = {
						limit = { dynasty = ROOT }
						dynasty = 752
					}
				}
			}
		}

		set_name = "Robert"
		dynasty = 752
		add_spouse = event_target:poppa
		add_lover = event_target:poppa
		recalc_succession = yes
	}
}

# Rollo is imprisoned by a Christian king and offers to kneel
character_event = {
	id = Plus.2759

	is_triggered_only = yes # on_become_imprisoned_any_reason
	hide_window = yes

	only_independent = yes
	religion = norse_pagan
	only_men = yes
	min_age = 16
	only_capable = yes
	prisoner = yes
	ai = yes
	war = yes

	trigger = {
		OR = {
			culture = norse
			culture = norman
		}

		num_of_count_titles >= 1
		lower_real_tier_than = KING
		year < 1066

		capital_scope = {
			duchy = { title = d_normandy }
		}

		host = {
			OR = {
				war_with = ROOT
				any_liege = { war_with = ROOT }
			}

			OR = {
				AND = {
					religion_group = christian
					higher_tier_than = DUKE
				}

				any_liege = {
					religion_group = christian
					higher_tier_than = DUKE
				}
			}
		}

		NOR = {
			has_character_flag = converted_religion
			has_global_flag = norman_conversion
		}
	}

	immediate = {
		host = {
			if = {
				limit = {
					religion_group = christian
					higher_tier_than = DUKE
				}

				set_global_flag = norman_conversion
				letter_event = { id = Plus.2755 }
			}
			else_if = {
				limit = { ai = yes } # Players get to decide themselves what to do with Rollo

				if = {
					limit = {
						liege = {
							religion_group = christian
							higher_tier_than = DUKE
						}
					}

					set_global_flag = norman_conversion
					liege = { letter_event = { id = Plus.2755 } }
				}
				else_if = {
					limit = {
						liege = {
							liege = {
								religion_group = christian
								higher_tier_than = DUKE
							}
						}
					}

					set_global_flag = norman_conversion
					liege = { liege = { letter_event = { id = Plus.2755 } } }
				}
				else_if = {
					limit = {
						liege = {
							liege = {
								liege = {
									religion_group = christian
									higher_tier_than = DUKE
								}
							}
						}
					}

					set_global_flag = norman_conversion
					liege = { liege = { liege = { letter_event = { id = Plus.2755 } } } }
				}
				else_if = {
					limit = {
						top_liege = {
							religion_group = christian
							higher_tier_than = DUKE
						}
					}

					set_global_flag = norman_conversion
					top_liege = { letter_event = { id = Plus.2755 } }
				}
			}
		}
	}
}

# Notification of Rollo's attack
character_event = {
	id = Plus.2760
	title = EVTNAME_Plus_2751
	picture = GFX_evt_viking_battle_oldgods
	border = GFX_event_normal_frame_war

	desc = {
		text = EVTDESC_Plus_2751
		trigger = {
			ROOT = { NOT = { has_landed_title = c_rouen } }
		}
	}
	desc = {
		text = EVTDESC_Plus_2751_immediate
		trigger = {
			ROOT = { has_landed_title = c_rouen }
		}
	}

	is_triggered_only = yes
	major = yes
	show_root = yes
	hide_from = yes

	major_trigger = {
		OR = {
			culture = norse
			religion = norse_pagan

			c_rouen = {
				holder_scope = {
					OR = {
						character = PREVPREV
						same_realm = PREVPREV
					}
				}
			}

			capital_scope = {
				distance = {
					where = c_rouen
					value < 400	# Same part of the world
				}
			}
		}
	}

	option = {
		name = {
			text = EVTOPTA_Plus_2751
			trigger = {
				OR = {
					culture = norse
					religion = norse_pagan
				}
			}
		}
		name = {
			text = EVTOPTB_Plus_2751
			trigger = {
				c_rouen = {
					holder_scope = {
						OR = {
							character = PREVPREV
							same_realm = PREVPREV
						}
					}
				}
				NOR = {
					culture = norse
					religion = norse_pagan
				}
			}
		}
		name = {
			text = I_SEE
			trigger = {
				NOR = {
					culture = norse
					religion = norse_pagan
					has_landed_title = c_rouen

					c_rouen = {
						holder_scope = {
							OR = {
								character = PREVPREV
								same_realm = PREVPREV
							}
						}
					}
				}
			}
		}
	}
}