N3OW/common/scripted_triggers/pam_saint_triggers.txt
2026-10-19 21:12:02 +02:00

254 lines
9.5 KiB
Text

############################################
# Canonizing Saints - scripted triggers
# pam_can_canonize_saint_trigger
# pam_is_canonization_candidate_trigger
# pam_faith_uses_cathedrals_trigger
# pam_character_has_cathedral_trigger
# pam_has_consecration_site_trigger
# pam_site_free_trigger
# pam_province_is_free_burial_site_trigger
# pam_has_free_primary_site_trigger
# pam_county_has_actor_primary_site_trigger
# pam_has_free_adjacent_site_trigger
# pam_needs_hof_approval_for_canonization_trigger
# pam_hof_thinks_well_of_canonizer_trigger
# pam_saint_is_buried_in_my_lands_trigger
# pam_can_extract_relic_from_saint_trigger
# pam_saint_relic_drawable_trigger
# pam_venerated_the_saints_personally_trigger
############################################
has_corpse_trigger = {
trigger_if = {
limit = { is_alive = no }
NOR = {
has_dead_character_variable = no_corpse_left
saint_burial_location ?= { has_variable = no_corpse_left }
death_reason = death_disappearance
death_reason = death_vanished
death_reason = death_hunted_by_wild_beast
death_reason = death_disappeared_into_slave_markets
death_reason = death_killed_by_monstrous_dog
death_reason = death_killed_by_monstrous_wolf
death_reason = death_killed_by_monstrous_hyena
death_reason = death_killed_by_monstrous_lion
death_reason = death_killed_by_monstrous_tiger
death_reason = death_killed_by_monstrous_leopard
death_reason = death_killed_by_monstrous_panther
death_reason = death_killed_by_monstrous_lynx
death_reason = death_killed_by_monstrous_caracal
death_reason = death_killed_by_monstrous_bear
death_reason = death_killed_by_monstrous_hippo
death_reason = death_killed_by_monstrous_crocodile
}
}
}
# Can this ruler canonize saints at all? (the actor of the decision)
pam_can_canonize_saint_trigger = {
has_pam_dlc_trigger = yes
is_landed_or_landless_administrative_or_theocratic = yes
is_adult = yes
is_ruler = yes
exists = faith
# Christian sainthood needs Dulia not forbidden or unknown; non-Christian (Venerated Ancestor) faiths are unaffected.
trigger_if = {
limit = {
OR = {
faith.religion = religion:catholic_religion
faith.religion = religion:protestant_religion
faith.religion = religion:eastern_orthodox_religion
faith.religion = religion:oriental_orthodox_religion
}
}
rite = {
NOT = { has_tenet_status = { tenet = tenet_dulia status = unknown } }
NOT = { has_tenet_status = { tenet = tenet_dulia status = prohibited } }
}
}
}
# Can this dead ancestor be canonized? CANONIZER is passed in because the picker runs with root = none; virtue/sin are judged by the canonizer's rite.
pam_is_canonization_candidate_trigger = {
is_alive = no
NOT = { has_trait = saint }
faith ?= $CANONIZER$.faith
dynasty ?= $CANONIZER$.dynasty
# Saintly life: at least one virtue and no sins by our rite's reckoning.
num_virtuous_traits = {
value >= 1
target = this.rite
}
num_sinful_traits = {
value = 0
target = this.rite
}
}
# Faiths with clerical regions and a temporal/appointed clergy build cathedrals; every other faith, including all non-Christian ones, consecrates at a holy site instead. Mirrors the ecclesiastical_government gate (see 02_theocratic_government_types.txt).
pam_faith_uses_cathedrals_trigger = {
faith ?= { has_doctrine_parameter = has_clerical_regions }
NOT = { rite = { rite_has_doctrine = doctrine_theocracy_lay_clergy } }
}
# We start with government because it is quick, then ecclesiastical_domicile_main_01 or higher
pam_character_has_cathedral_trigger = {
has_government = ecclesiastical_government
domicile ?= { has_domicile_building_or_higher = ecclesiastical_domicile_main_01 }
}
# Does the actor have somewhere to consecrate a saint? A free (unoccupied) cathedral / holy site, or - once those are all taken - a free county-capital barony neighbouring one. Burial is one saint per province, so "free" means the province holds no saint yet.
pam_has_consecration_site_trigger = {
OR = {
pam_has_free_primary_site_trigger = yes
pam_has_free_adjacent_site_trigger = yes
}
}
# A consecration barony (barony scope) whose province has no saint buried yet. Burial is province-anchored (the poi_buried_saint marks the province), so one province holds at most one saint.
pam_site_free_trigger = {
title_province ?= {
NOR = {
has_variable = hide_location_for_saint
has_travel_point_of_interest = poi_buried_saint
}
}
}
# Province can take add_saint: holding present, no buried-saint PoI yet.
pam_province_is_free_burial_site_trigger = {
has_holding = yes
NOR = {
has_variable = hide_location_for_saint
has_travel_point_of_interest = poi_buried_saint
}
}
# Does the actor have a free primary consecration site? Cathedral faiths: an unoccupied cathedral in their realm. Others: an unoccupied holy site of their faith in realm.
pam_has_free_primary_site_trigger = {
trigger_if = {
limit = { pam_faith_uses_cathedrals_trigger = yes }
OR = {
AND = {
pam_character_has_cathedral_trigger = yes
domicile ?= { domicile_location = { barony ?= { pam_site_free_trigger = yes } } }
}
any_realm_province = {
barony ?= { pam_site_free_trigger = yes }
any_province_domicile = { owner = { pam_character_has_cathedral_trigger = yes } }
}
}
}
trigger_else = {
save_temporary_scope_as = pam_primary_site_actor
any_realm_province = {
barony ?= { is_holy_site_of = scope:pam_primary_site_actor.faith }
NOT = { has_travel_point_of_interest = poi_buried_saint }
}
}
}
# Does this county (title scope) hold one of $ACTOR$'s primary consecration sites? Used to find provinces adjacent to a real site. Cathedral faiths: a cathedral (an ecclesiastical domicile) in $ACTOR$'s realm sits in the county, whoever owns it. Others: a holy site of $ACTOR$'s faith sits in the county, in realm. Identified from the province's domicile side (same walk as pam_has_free_primary_site_trigger and setup_items) - a cathedral barony's holder isn't reliably the bishop, so a barony->holder lookup misses them. Intentionally intrinsic (cathedral/holy-site nature, not occupancy) so an adjacency burial never seeds further neighbours.
pam_county_has_actor_primary_site_trigger = {
save_temporary_scope_as = pam_primary_site_county
trigger_if = {
limit = { $ACTOR$ = { pam_faith_uses_cathedrals_trigger = yes } }
$ACTOR$ = {
OR = {
AND = {
pam_character_has_cathedral_trigger = yes
domicile ?= { domicile_location ?= { county = scope:pam_primary_site_county } }
}
any_realm_province = {
county = scope:pam_primary_site_county
any_province_domicile = { owner = { pam_character_has_cathedral_trigger = yes } }
}
}
}
}
trigger_else = {
$ACTOR$ = {
any_realm_province = {
barony ?= { is_holy_site_of = $ACTOR$.faith }
county = scope:pam_primary_site_county
}
}
}
}
# Once every primary site is taken, may the actor consecrate in a neighbouring province instead? True when a free county-capital barony in realm borders a county that holds one of the actor's primary sites (one candidate per county, keeping the picker focused).
pam_has_free_adjacent_site_trigger = {
save_temporary_scope_as = pam_adjacency_actor
any_realm_province = {
is_county_capital = yes
NOT = { has_travel_point_of_interest = poi_buried_saint }
county = {
any_neighboring_county = {
pam_county_has_actor_primary_site_trigger = { ACTOR = scope:pam_adjacency_actor }
}
}
}
}
# Approval is needed when a Head of Faith exists and it is not the actor.
pam_needs_hof_approval_for_canonization_trigger = {
exists = faith.religious_head
NOT = { faith.religious_head = root }
}
# A Head of Faith who thinks poorly of the actor will not entertain the petition at all. Vacuously true where approval is not sought anyway - no Head of Faith, or the actor holds the office - and for a puppeted Head of Faith, who cannot refuse their puppeteer (mirrors the certain-approval branch in the canonize decision).
pam_hof_thinks_well_of_canonizer_trigger = {
trigger_if = {
limit = {
pam_needs_hof_approval_for_canonization_trigger = yes
NOT = { faith.religious_head.puppeteer ?= root }
}
faith.religious_head ?= {
opinion = {
target = root
value >= high_positive_opinion
}
}
}
}
# Is this burial province within $EXTRACTOR$'s realm (held by them or a vassal/sub-vassal)? EXTRACTOR is passed in because the relic picker runs with root = none.
pam_saint_is_buried_in_my_lands_trigger = {
county.holder ?= {
target_is_same_character_or_above = $EXTRACTOR$
}
}
# Can $EXTRACTOR$ draw another relic from this site? The AI always leaves one relic
# $SAINT$ is the saint being evaluated
pam_can_extract_relic_from_saint_trigger = {
# add_saint deliberately accepts living characters for modders, so the registry can hold one - never offer them as a relic source
$SAINT$ = { is_alive = no }
pam_saint_is_buried_in_my_lands_trigger = { EXTRACTOR = $EXTRACTOR$ }
trigger_if = {
limit = { $EXTRACTOR$ = { is_ai = yes } }
$SAINT$ = {
remaining_saint_relics > 1
}
}
trigger_else = {
$SAINT$ = {
remaining_saint_relics > 0
}
}
}
# Relic picker is_item_valid helper (scope = picked saint): can $EXTRACTOR$ still draw from this saint? Resolve their burial province, then defer to the shared eligibility trigger (prev = the saint).
pam_saint_relic_drawable_trigger = {
saint_burial_location = {
pam_can_extract_relic_from_saint_trigger = { EXTRACTOR = $EXTRACTOR$ SAINT = prev }
}
}
pam_venerated_the_saints_personally_trigger = {
trigger_if = {
limit = { is_alive = yes }
has_personal_tenet_flag = tenet_dulia_personal_sainthood_chance
}
trigger_else = {
has_dead_character_variable = pam_dulia_personal_sainthood
}
}