﻿# invader appears if k_east_francia.holder doesn't exist, before story
spawn_ludolfinger_invader_effect = {
	random_county_in_region = {
		region = special_$INVADER_DYNN$_conquest_region_start
		title_province = { save_scope_as = invader_spawn_location }
	}

	if = { # doesn't exist yet
		limit = { NOT = { exists = title:k_east_francia.holder } }
		# grandfather
		character:7908 = { save_scope_as = otto_grandfather } # [8859, 7908]
		create_character = {
			template = heinrich_ludolfinger_character_template
			dynasty = inherit
			father = scope:otto_grandfather
			location = scope:invader_spawn_location
			save_scope_as = heinrich_ludolfinger
		}
		create_character = {
			template = otto_ludolfinger_character_template
			dynasty = inherit
			father = scope:heinrich_ludolfinger
			location = scope:invader_spawn_location
			save_scope_as = invader
		}
	}
	else = { # suitable replacement exists
		title:k_east_francia.holder = { save_scope_as = invader }
	}
	
	scope:invader = {
		add_gold = 2500
		add_prestige = 2000
		add_piety = 150

		dynasty = {
			add_dynasty_prestige_level = 1
			add_dynasty_prestige = 750

			$INVADER_DYNN$_add_dynasty_perks_effect = yes
		}
	}

	every_player = {
		trigger_event = $INVADER_DYNN$_invasion.1001 # Notification: Start of invasion
	}
}

ludolfinger_add_dynasty_perks_effect = {
	add_dynasty_perk = warfare_legacy_1
}

ludolfinger_maintenance_effect = {
	apply_invader_modifiers_effect = {
		INVADER_DYNN = $INVADER_DYNN$
	}
	give_invader_land_effect = {
		INVADER_DYNN = $INVADER_DYNN$
		INVADER_CHAR = $INVADER_CHAR$
		STARTING_TIER = $STARTING_TIER$
	}
	spawn_$INVADER_DYNN$_family_effect = {
		INVADER_CHAR = $INVADER_CHAR$
	}
	spawn_invader_servants_effect = {
		INVADER_CHAR = $INVADER_CHAR$
	}
	form_the_$INVADER_DYNN$_title_effect = {
		INVADER_DYNN = $INVADER_DYNN$
		INVADER_CHAR = $INVADER_CHAR$
		INVADER_TITLE = $INVADER_TITLE$
		LANDLESS_YES_NO = $LANDLESS_YES_NO$
	}
}

### populating the life of the invader character
spawn_ludolfinger_family_effect = {
	if = {
		limit = { NOT = { exists = title:k_east_francia.holder } }
		# create family
		$INVADER_CHAR$ = { add_prestige = 1 } #todo - just here so the unused argument doesn't break everything
	}
}

# Form and give titles
form_the_ludolfinger_title_effect = {
	if = { # create
		limit = { title:k_east_francia = { is_title_created = no } }
		# Create the title
		create_title_and_vassal_change = {
			type = created
			save_scope_as = title_change
			add_claim_on_loss = no
		}
		$INVADER_TITLE$ = {
			change_title_holder = {
				holder = $INVADER_CHAR$
				change = scope:title_change
			}
			set_landless_title = $LANDLESS_YES_NO$
		}
		becomes_independent = { change = scope:title_change }
		resolve_title_and_vassal_change = scope:title_change
		
		assert_if = {
			limit = { NOT = { exists = $INVADER_TITLE$ } }
			text = "ludolfinger Kingdom title was not created!"
		}
	}
	else = {
		debug_log = "ludolfinger story started using an existing character"
	}

	set_primary_title_to = $INVADER_TITLE$

	apply_invader_government_type_effect = { INVADER_CHAR = $INVADER_CHAR$ }

	trigger_event = { # delayed to prevent error.log entry
		id = $INVADER_DYNN$_invasion.0100 # spawn troops
		days = 1
	}
}

# Make sure invader has troops
spawn_ludolfinger_troops_effect = {
	if = {
		limit = { has_character_flag = is_first_invader_flag }
		spawn_ludolfinger_army_effect = yes
	}
	spawn_ludolfinger_army_effect = yes
	spawn_ludolfinger_army_effect = yes
}
spawn_ludolfinger_army_effect = {
	spawn_army = {
		name = ludolfinger_event_troops
		location = capital_province
		uses_supply = no
		inheritable = no
		
		levies = 500
		men_at_arms = {
			type = armored_footmen
			stacks = 5
		}
		men_at_arms = {
			type = pikemen_unit
			stacks = 7
		}
		men_at_arms = {
			type = bowmen
			stacks = 3
		}
		# siege
		men_at_arms = {
			type = mangonel
			stacks = 5
		}
	}
}

# sadly triggers a bunch of errors in the base game effect
ludolfinger_grant_historical_artifacts_effect = {
	# see historical_artifacts.0023 for DLC restrictions
	title:e_hre.holder = {
		create_artifact_reichskrone_effect = { OWNER = this } # character artifact
		if = {
			limit = {
				#has_ep1_dlc_trigger = yes
				has_dlc_feature = royal_court
			}
			create_artifact_pedestal_crown_iron_effect = { OWNER = this } # court artifact
			create_artifact_essen_crown_effect = { OWNER = this } # court artifact
			create_artifact_throne_charlemagne_effect = { OWNER = this } # court artifact
		}
	}
}

hi_restore_hre_decision_effect = {
	# block decision
	add_to_global_variable_list = {
		name = unavailable_unique_decisions
		target = flag:hi_restore_hre_decision
	}

	### root scope = decision taker or story cycle owner
	save_scope_as = founder
	# unused; used in vanilla event middle_europe_decisions.0015
	faith.religious_head = { save_scope_as = founder_hof }
	if = {
		limit = {
			faith.religious_head = { is_landed = yes }
		}
		faith.religious_head.capital_province = { save_scope_as = ceremony_locale }
	}
	else = {
		capital_province = { save_scope_as = ceremony_locale }
	}

	# form the title
	create_title_and_vassal_change = {
		type = created
		save_scope_as = title_change
		add_claim_on_loss = no
	}
	title:e_hre = {
		change_title_holder = {
			holder = scope:founder
			change = scope:title_change
		}
	}
	resolve_title_and_vassal_change = scope:title_change

	every_held_title = {
		limit = {
			tier >= tier_kingdom
			NOT = { this = title:e_hre }
		}
		scope:founder = {
			destroy_title = prev
		}
	}

	### succession laws
	title:e_hre = {
		add_title_law = princely_elective_succession_law
		if = {	# add Salic law
			limit = {
				scope:founder = {
					OR = {
						has_realm_law = male_preference_law
						has_realm_law = male_only_law
					}
				}
			}
			add_title_law = male_only_law
		}
		if = {	# ignore Salic law
			limit = {
				scope:founder = { has_realm_law = equal_law }
			}
			add_title_law = equal_law
		}
		if = {	# invert Salic law
			limit = {
				scope:founder = {
					OR = {
						has_realm_law = female_preference_law
						has_realm_law = female_only_law
					}
				}
			}
			add_title_law = female_only_law
		}
		custom_tooltip = hre_elector_list_creation_tt
	}

	### de jure changes
	# HRE core
	if = { # merge e_germany into e_hre
		limit = { NOT = { exists = title:e_germany.holder } }
		hidden_effect = {
			title:e_germany = {
				every_in_de_jure_hierarchy = {
					limit = { tier = tier_kingdom }
					set_de_jure_liege_title = title:e_hre
				}
			}
		}
	}
	# should be part of e_germany and already included in the "HRE core" above, but de jure changes by other mods might have shifted the conquered lands out of that empire, so let's shift them in manually
	title:k_east_francia = { add_to_temporary_list = hi_e_hre_list }
	title:k_bavaria = { add_to_temporary_list = hi_e_hre_list }
	title:k_lotharingia = { add_to_temporary_list = hi_e_hre_list }
	title:k_frisia = { add_to_temporary_list = hi_e_hre_list }
	title:k_italy = { add_to_temporary_list = hi_e_hre_list }
	# burgundy
	if = {
		limit = {
			OR = {
				has_title = title:k_burgundy
				any_vassal = { has_title = title:k_burgundy }
				completely_controls = title:k_burgundy
			}
		}
		title:k_burgundy = { add_to_temporary_list = hi_e_hre_list }
	}
	# bohemia
	if = {
		limit = {
			OR = {
				has_title = title:k_bohemia
				any_vassal = { has_title = title:k_bohemia }
				completely_controls = title:k_bohemia
			}
		}
		title:k_bohemia = { add_to_temporary_list = hi_e_hre_list }
	}
	# sorbia
	if = {
		limit = {
			OR = {
				has_title = title:k_sorbia
				any_vassal = { has_title = title:k_sorbia }
				completely_controls = title:k_sorbia
			}
		}
		title:k_sorbia = { add_to_temporary_list = hi_e_hre_list }
	}
	# pomerania
	if = {
		limit = {
			OR = {
				has_title = title:k_pomerania
				any_vassal = { has_title = title:k_pomerania }
				completely_controls = title:k_pomerania
			}
		}
		title:k_pomerania = { add_to_temporary_list = hi_e_hre_list }
	}
	every_in_list = {
		list = hi_e_hre_list
		every_in_de_jure_hierarchy = {
			limit = {
				tier = tier_kingdom
				NOT = { target_is_de_jure_liege_or_above = title:e_hre }
			}
			set_de_jure_liege_title = title:e_hre
		}
	}
	# give e_italy some de jure land
	if = { # e_italy has de jure land
		limit = { title:e_italy = { is_titular = no } }
		title:k_venice = { add_to_temporary_list = hi_e_italy_list }
		title:k_sicily = { add_to_temporary_list = hi_e_italy_list }
		title:k_naples = { add_to_temporary_list = hi_e_italy_list }
		title:k_trinacria = { add_to_temporary_list = hi_e_italy_list }
		title:k_sardinia = { add_to_temporary_list = hi_e_italy_list }
		every_in_list = {
			list = hi_e_italy_list
			every_in_de_jure_hierarchy = {
				limit = { # only kingdoms that are de jure part of its original liege - to prevent erasing de jure shift
					tier = tier_kingdom
					target_is_de_jure_liege_or_above = title:e_byzantium
				}
				set_de_jure_liege_title = title:k_romagna.de_jure_liege
			}
		}
	}
	else = { # e_italy does not have any de jure land; likely if Culture Expanded is active
		if = {
			limit = { title:k_romagna.de_jure_liege = title:e_france }
			title:k_romagna = {
				set_de_jure_liege_title = title:e_hre
			}
		}
	}

	### name change
	title:k_burgundy = { set_title_name = hi_k_arles }

	# vanilla variable
	if = {
		limit = {
			is_ai = no
			NOT = { exists = global_var:restore_holy_roman_empire_decision }
		}
		set_global_variable = {
			name = restore_holy_roman_empire_decision
			value = scope:founder
		}
	}

	### misc
	trigger_event = {
		id = ludolfinger_invasion.2000
	}
	#Notify other players.
	every_player = {
		limit = {
			NOT = { this = scope:founder }
			#is_within_diplo_range = { CHARACTER = scope:founder } # somehow fails
		}
		trigger_event = ludolfinger_invasion.2001
	}
}

hi_expand_hre_decision_effect = {
	# k_burgundy
	if = {
		limit = {
			NOT = { title:k_burgundy.de_jure_liege = title:e_hre }
			completely_controls = title:k_burgundy
		}
		title:k_burgundy = { set_de_jure_liege_title = title:e_hre }
	}
	# k_italy
	if = {
		limit = {
			NOT = { title:k_italy.de_jure_liege = title:e_hre }
			completely_controls = title:k_italy
		}
		title:k_italy = { set_de_jure_liege_title = title:e_hre }
	}
	# k_pomerania
	if = {
		limit = {
			NOT = { title:k_pomerania.de_jure_liege = title:e_hre }
			completely_controls = title:k_pomerania
		}
		title:k_pomerania = { set_de_jure_liege_title = title:e_hre }
	}
	# k_bohemia
	if = {
		limit = {
			NOT = { title:k_bohemia.de_jure_liege = title:e_hre }
			completely_controls = title:k_bohemia
		}
		title:k_bohemia = { set_de_jure_liege_title = title:e_hre }
	}
	# k_sorbia
	if = {
		limit = {
			NOT = { title:k_sorbia.de_jure_liege = title:e_hre }
			completely_controls = title:k_sorbia
		}
		title:k_sorbia = { set_de_jure_liege_title = title:e_hre }
	}
}