﻿
##################################################
# Debug Triggers

# Do we want to gather global variable tallies for the Persian struggle?
## Toggled off for release, toggle back on to check how often we change phases & which catalysts are firing.
gather_debug_variables_for_persian_struggle_trigger = { always = no }

##################################################
# General Triggers
## Miscellaneous assorted triggers related to bits of neutral struggle content.

# Characters of some note within the struggle.
is_important_struggle_character = {
	highest_held_title_tier = tier_duchy
}

# Characters who are very important within the struggle (generally enough that they matter for catalysts).
is_vip_struggle_character = {
	OR = {
		highest_held_title_tier >= tier_kingdom
		AND = {
			exists = faith.religious_head
			this = faith.religious_head
		}
		this = culture.culture_head
	}
}

is_important_or_vip_struggle_character = {
	OR = {
		is_important_struggle_character = yes
		is_vip_struggle_character = yes
	}
}

is_semi_important_ruler_struggle_character = {
	OR = {
		highest_held_title_tier >= tier_county
		is_important_or_vip_struggle_character = yes
	}
}

is_secondary_character_involvement_involved_trigger = {
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		any_character_struggle = {
			involvement = involved
			this = scope:struggle_temp
		}
	}
}

is_secondary_character_involvement_interloper_trigger = {
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		any_character_struggle = {
			involvement = interloper
			this = scope:struggle_temp
		}
	}
}

is_secondary_character_involvement_either_trigger = {
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		any_character_struggle = { this = scope:struggle_temp }
	}
}

is_secondary_character_involvement_neither_trigger = {
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		NOT = {
			any_character_struggle = { this = scope:struggle_temp }
		}
	}
}

is_diff_faith_or_culture_trigger = {
	NAND = {
		culture = $CHAR$.culture
		faith = $CHAR$.faith
	}
	$CHAR$ = { any_character_struggle = { involvement = $STATUS$ } }
	# Removed the check for what struggle it is
}

is_same_faith_or_culture_trigger = {
	OR = {
		culture = $CHAR$.culture
		faith = $CHAR$.faith
	}
	$CHAR$ = { any_character_struggle = { involvement = $STATUS$ } }
	# Removed the check for what struggle it is
}

is_same_culture_trigger = {
	culture = $CHAR$.culture
	$CHAR$ = { any_character_struggle = { involvement = $STATUS$ } }
	# Removed the check for what struggle it is
}

is_same_faith_trigger = {
	culture = $CHAR$.culture
	$CHAR$ = { any_character_struggle = { involvement = $STATUS$ } }
	# Removed the check for what struggle it is
}

##################################################
# Catalyst Phase Triggers
## Should a catalyst be activating in this phase?
### Remember, that means it should activate in the phase _before_ the one that has it as a valid transitionary catalyst.


##################################################
# Catalyst Triggers
## Some common rump triggers used in catalysts activation, plus preliminaries for catalysts triggered in multiple locations.

catalyst_gave_independence_to_powerful_diff_faith_culture_vassal_preliminary_trigger = {
	$CHAR1$ = {
		NAND = {
			culture = $CHAR2$.culture
			faith = $CHAR2$.faith
		}
	}
	$CHAR2$ = { is_powerful_vassal_of = $CHAR1$ }
}

catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = {
	$CHAR$ = {
		any_in_list = {
			list = changed_obligations
			vassal_contract_type = {
				OR = {
					this = vassal_contract:religious_rights
					this = vassal_contract:jizya_special_rights
				}
			}
			obligation_level_score >= 1
		}
		is_powerful_vassal = yes
	}
}

catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = {
	$CHAR$ = {
		any_in_list = {
			list = changed_obligations
			vassal_contract_type = {
				OR = {
					this = vassal_contract:religious_rights
					this = vassal_contract:jizya_special_rights
				}
			}
			obligation_level_score >= 1
		}
		is_powerful_vassal = yes
	}
}

catalyst_hybridise_or_diverge_regional_cultures_preliminary_trigger = {
	phase_has_catalyst = catalyst_hybridise_or_diverge_regional_cultures
	save_temporary_scope_as = struggle_temp
	OR = {
		AND = {
			exists = scope:parent_culture_2
			scope:struggle_temp = {
				is_culture_involved_in_struggle = scope:parent_culture_1
				is_culture_involved_in_struggle = scope:parent_culture_2
			}
		}
		is_culture_involved_in_struggle = scope:parent_culture_1
	}
}

catalyst_very_important_child_change_culture_or_faith_preliminary_trigger = {
	any_character_struggle = {
		phase_has_catalyst = catalyst_very_important_child_change_culture_or_faith
	}
	is_adult = no
	any_parent = {
		any_character_struggle ={
			involvement = involved
		}
		is_vip_struggle_character = yes
	}
}

activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
	phase_has_catalyst = $CATALYST$
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		any_character_struggle = {
			involvement = involved
			this = scope:struggle_temp
		}
	}
}

activate_struggle_catalyst_secondary_character_involvement_interloper_trigger = {
	phase_has_catalyst = $CATALYST$
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		any_character_struggle = {
			involvement = interloper
			this = scope:struggle_temp
		}
	}
}

activate_struggle_catalyst_secondary_character_involvement_either_trigger = {
	phase_has_catalyst = $CATALYST$
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		any_character_struggle = { this = scope:struggle_temp }
	}
}

activate_struggle_catalyst_secondary_character_involvement_neither_trigger = {
	phase_has_catalyst = $CATALYST$
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		NOT = {
			any_character_struggle = { this = scope:struggle_temp }
		}
	}
}

activate_struggle_catalyst_secondary_character_involvement_interloper_or_uninvolved_trigger = {
	phase_has_catalyst = $CATALYST$
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		OR = {
			any_character_struggle = {
				involvement = interloper
				this = scope:struggle_temp
			}
			NOT = {
				any_character_struggle = { this = scope:struggle_temp }
			}
		}
	}
}

activate_struggle_catalyst_warfare_check_attacker_involvement_trigger = {
	phase_has_catalyst = $CATALYST$
	save_temporary_scope_as = struggle_temp
	$VAR_SCOPE$ = {
		trigger_if = {
			limit = { scope:attacker = scope:loser }
			has_variable = struggle_involvement_attacker
			has_variable = struggle_scope_attacker
			var:struggle_involvement_attacker = flag:$INVOLVEMENT$
			var:struggle_scope_attacker = scope:struggle_temp
		}
		trigger_else = {
			has_variable = struggle_involvement_defender
			has_variable = struggle_scope_defender
			var:struggle_involvement_defender = flag:$INVOLVEMENT$
			var:struggle_scope_defender = scope:struggle_temp
		}
	}
}

##################################################
# Parameter Triggers
## If a parameter is triggered in multiple places, we use a scripted trigger to keep things unified.

is_struggle_parameter_active_interfaith_marriages_available_between_involved_characters_trigger = {
	scope:actor = {
		any_character_struggle = {
			involvement = involved
			has_struggle_phase_parameter = interfaith_marriages_available_between_involved_characters
			save_temporary_scope_as = struggle_temp
			scope:recipient = {
				any_character_struggle = {
					involvement = involved
					this = scope:struggle_temp
				}
			}
		}
	}
}

is_struggle_parameter_active_cheaper_to_convert_to_struggle_culture_trigger = {
	capital_county = {
		any_county_struggle = { has_struggle_phase_parameter = cheaper_to_convert_to_struggle_culture }
	}
}

is_struggle_parameter_active_secondary_character_involvement_involved_trigger = {
	has_struggle_phase_parameter = $PARAMETER$
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		any_character_struggle = {
			involvement = involved
			this = scope:struggle_temp
		}
	}
}

is_struggle_parameter_active_secondary_character_involvement_interloper_trigger = {
	has_struggle_phase_parameter = $PARAMETER$
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		any_character_struggle = {
			involvement = interloper
			this = scope:struggle_temp
		}
	}
}

is_struggle_parameter_active_secondary_character_involvement_either_trigger = {
	has_struggle_phase_parameter = $PARAMETER$
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		any_character_struggle = { this = scope:struggle_temp }
	}
}

is_struggle_parameter_active_secondary_character_involvement_neither_trigger = {
	has_struggle_phase_parameter = $PARAMETER$
	save_temporary_scope_as = struggle_temp
	$CHAR$ = {
		NOT = {
			any_character_struggle = { this = scope:struggle_temp }
		}
	}
}

is_struggle_parameter_active_secondary_county_trigger = {
	has_struggle_phase_parameter = $PARAMETER$
	save_temporary_scope_as = struggle_temp
	$COUNTY$ = {
		any_county_struggle = { this = scope:struggle_temp }
	}
}

is_struggle_parameter_active_variable_cb_target_secondary_county_trigger = {
	has_struggle_phase_parameter = $PARAMETER$
	save_temporary_scope_as = struggle_temp
	any_in_list = {
		list = target_titles
		count >= 1
		tier = tier_county
		any_county_struggle = { this = scope:struggle_temp }
	}
}

##################################################
# Casus Belli Triggers
## Struggle triggers related to wars & similar.

# Is the scoped war using a CB we consider important enough to be a catalyst-worthy CB within the struggle?
is_large_conquest_war_for_struggle_trigger = {
	$WAR$ = {
		OR = {
			# Large claim wars.
			AND = {
				using_cb = claim_cb
				any_in_list = {
					list = target_titles
					tier >= tier_kingdom
				}
			}
			using_cb = duchy_conquest_cb
			using_cb = individual_duchy_de_jure_cb
			using_cb = imperial_reconquest_cb
			using_cb = invasion_war
			using_cb = clan_invasion_war
			using_cb = mongol_invasion_war
			using_cb = mongol_realm_invasion_war
			using_cb = mpo_gok_onslaught_cb
			using_cb = major_religious_war
			using_cb = undirected_great_holy_war
			using_cb = directed_great_holy_war
			using_cb = tribal_subjugation_cb
		}
	}
}

# Can conquest holy wars be accessed in the current phase of the struggle?
are_holy_wars_disabled_in_struggle_phase_trigger = {
	exists = scope:target
	trigger_if = {
		scope:target.tier = tier_county
		scope:target = {
			any_county_struggle = {
				NOT = {	has_struggle_phase_parameter = holy_wars_in_region_cannot_be_declared }
			}
		}
	}
	trigger_else = { # For Duchy and Kingdom Holy War
		scope:target = {
			any_in_de_facto_hierarchy = {  # We only consider county within the realm of the target's holder
					tier = tier_county
				any_county_struggle = {
					NOT = {	has_struggle_phase_parameter = holy_wars_in_region_cannot_be_declared }
				}
			}
		}
	}
}

# Can the struggle conquest CB be used?
## Currently, we're generous with this. Rather than tying it to a parameter, you just need to be involved in a struggle.
## This should sync neatly with the various struggle_conquest_cb_is_XYZ_phase_triggers, but due to parameter requirements, can't easily be made to do so automagically.
can_use_struggle_cbs_trigger = {
	OR = {
		any_character_struggle = { involvement = involved }
		# Execption if taking hostility ending
		AND = {
			exists = scope:attacker.house
			scope:attacker.house = {
				OR ={
					has_house_modifier = fp2_struggle_hostility_house_combined_modifier
					has_house_modifier = fp2_struggle_hostility_house_faith_modifier
					has_house_modifier = fp2_struggle_hostility_house_culture_modifier
				}
			}
		}
	}
}

# These triggers govern the relative costs for the struggle conquest CB.
## These should sync neatly with can_use_struggle_cbs_trigger, but due to parameter requirements, can't easily be made to do so automagically.
## Cheap.
struggle_conquest_cb_is_warlike_phase_trigger = {
	$CHAR1$ = {
		any_character_struggle = {
			involvement = involved
			is_struggle_type = iberian_struggle
			is_struggle_phase = struggle_iberia_phase_hostility
			is_secondary_character_involvement_either_trigger = { CHAR = $CHAR2$ }
		}
	}
}
## Average.
struggle_conquest_cb_is_average_phase_trigger = {
	$CHAR1$ = {
		any_character_struggle = {
			involvement = involved
			is_struggle_type = iberian_struggle
			is_struggle_phase = struggle_iberia_phase_opportunity
			is_secondary_character_involvement_either_trigger = { CHAR = $CHAR2$ }
		}
	}
}
## Pricey.
struggle_conquest_cb_is_peaceful_phase_trigger = {
	$CHAR1$ = {
		any_character_struggle = {
			involvement = involved
			is_struggle_type = iberian_struggle
			OR = {
				is_struggle_phase = struggle_iberia_phase_compromise
				is_struggle_phase = struggle_iberia_phase_conciliation
			}
			is_secondary_character_involvement_either_trigger = { CHAR = $CHAR2$ }
		}
	}
}

# Work out whether we need to vassalise someone vs. taking some of their stuff.
struggle_conquest_cb_target_is_ocm_trigger = {
	any_in_list = {
		list = target_titles
		# Should only ever be one title, but just in case...
		count = all
		holder = {
			any_held_title = {
				count = 1
				title_tier = county
			}
			NOT = {
				any_vassal = { highest_held_title_tier >= tier_county }
			}
		}
	}
}

struggle_blocks_invasion_conquest_cb_trigger = {
	trigger_if = {
		limit = {
			scope:attacker = {
				any_character_struggle = {
					involvement = involved
					has_struggle_phase_parameter = invasion_conquest_war_cannot_be_declared
				}
			}
			exists = scope:defender
		}
		scope:defender = {
			NOR = {
				any_character_struggle = {
					involvement = involved
					has_struggle_phase_parameter = invasion_conquest_war_cannot_be_declared
				}
				any_character_struggle = {
					involvement = interloper
					has_struggle_phase_parameter = invasion_conquest_war_cannot_be_declared
				}
			}
		}
	}
	trigger_else = { always = yes }
}
