a lot of fixes plus yunali names

This commit is contained in:
Greekman 2026-10-29 15:53:17 +00:00
parent d22e25dd84
commit 4022109a4a
24 changed files with 10799 additions and 377 deletions

View file

@ -1594,6 +1594,7 @@ stress_loss_hashishiyah_decision = { #by Linnéa Thimrén
is_shown = {
OR = {
has_trait = hashishiyah
faith = { has_doctrine_parameter = tenet_sacramental_herbs_active }
has_character_modifier = ach_secret_stash_modifier
}
}
@ -1628,6 +1629,7 @@ stress_loss_hashishiyah_decision = { #by Linnéa Thimrén
OR = {
has_character_modifier = ach_secret_stash_modifier
has_trait = hashishiyah
faith = { has_doctrine_parameter = tenet_sacramental_herbs_active }
}
}

View file

@ -0,0 +1,944 @@
# enact_a_bull_decision
# pick_crusade_target_decision
# pam_declare_rite_heresy_bull_decision
# pam_permit_tenet_bull_decision
# pam_prohibit_tenet_bull_decision
enact_a_bull_decision = {
picture = {
reference = "gfx/interface/illustrations/decisions/decision_major_religion.dds"
}
decision_group_type = major
desc = enact_a_bull_decision_desc
selection_tooltip = enact_a_bull_decision_tooltip
confirm_text = enact_a_bull_decision_confirm
sort_order = 500
ai_check_interval_by_tier = {
barony = 0
county = 0
duchy = 0
kingdom = 0
empire = 0
hegemony = 0
}
is_shown = {
is_ai = no
any_held_title = { is_head_of_faith = yes }
religion = religion:catholic_religion
is_adult = yes
has_pam_dlc_trigger = yes
}
is_valid = {
OR = {
has_realm_law = church_authority_1
has_realm_law = church_authority_2
has_realm_law = church_authority_3
}
}
is_valid_showing_failures_only = {
is_available_adult = yes
piety >= pam_enact_a_bull_cost_value
}
widget = {
gui = "decision_view_widget_option_list_generic"
controller = decision_option_list_controller
decision_to_second_step_button = "CHOOSE_BULL_NEXT_STEP_BUTTON"
show_from_start = yes
item = {
value = bull_option_crusade
is_shown = { is_ai = no }
is_valid = {
custom_tooltip = {
text = enact_a_bull_crusade_cooldown_tt
NOT = { exists = var:enact_a_bull_crusade_cooldown }
}
custom_tooltip = {
text = enact_a_bull_decision_ghw_active_trigger_tt
faith = {
OR = {
has_doctrine_parameter = great_holy_wars_active
AND = {
has_doctrine_parameter = great_holy_wars_active_if_reformed
NOT = { has_doctrine_parameter = unreformed }
}
has_doctrine = divine_destiny_doctrine #SPECIAL: Has become the Chakravarti
}
has_doctrine = doctrine_spiritual_head
root.rite = {
NOR = {
AND = {
rite_has_tenet = tenet_dharmic_pacifism
faith = { NOT = { has_doctrine = divine_destiny_doctrine } }
}
rite_has_tenet = tenet_pacifism
}
}
}
}
faith = {
custom_tooltip = {
text = enact_a_bull_decision_existing_ghw_trigger_tt
NOT = { exists = great_holy_war } # No active GHW
}
}
custom_description = {
text = great_holy_war_cooldown
NOT = { faith = { exists = var:variable_ghw_cooldown } }
}
custom_tooltip = { # Valid target
text = enact_a_bull_decision_valid_target_trigger_tt
faith = {
save_temporary_scope_as = faith
save_temporary_scope_value_as = { # Used in valid_ghw_target_trigger
name = faith_strength
value = faith_military_strength
}
any_kingdom = {
valid_ghw_target_trigger = { FAITH = scope:faith }
}
}
}
custom_tooltip = {
text = enact_a_bull_decision_crusade_trigger_tt
OR = {
has_realm_law = church_authority_1
has_realm_law = church_authority_2
has_realm_law = church_authority_3
# situation:the_christian_church ?= {
# situation_current_phase = crusade_phase
}
}
}
current_description = enact_a_bull_decision_option_crusade_desc
localization = enact_a_bull_decision_option_crusade
icon = "gfx/interface/icons/traits/crusader_king.dds"
}
item = {
value = bull_option_rite_heresy
is_shown = { always = yes }
is_valid = {
custom_tooltip = {
text = enact_a_bull_rite_heresy_cooldown_tt
NOT = { exists = var:enact_a_bull_rite_heresy_cooldown }
}
custom_tooltip = {
text = enact_a_bull_decision_heresy_trigger_tt
faith = {
any_faith_rite = {
pam_rite_can_be_declared_heresy_trigger = yes
}
}
}
}
current_description = enact_a_bull_decision_option_rite_heresy_desc
localization = enact_a_bull_decision_option_rite_heresy
icon = "gfx/interface/icons/message_feed/heresy.dds"
}
item = {
value = bull_option_tenet_stance_permitted
is_shown = { always = yes }
is_valid = {
custom_tooltip = {
text = enact_a_bull_tenet_permitted_cooldown_tt
NOT = { exists = var:enact_a_bull_tenet_permitted_cooldown }
}
any_character_tenet = {
knowledge_filter = known
pam_tenet_can_be_permitted_no_actor_trigger = yes
}
custom_tooltip = {
text = ecumenical_council_already_ongoing_tt
NOT = { faith = { has_variable = ecumenical_council_ongoing } }
}
}
current_description = enact_a_bull_decision_option_tenet_stance_permitted_desc
localization = enact_a_bull_decision_option_tenet_stance_permitted
icon = "gfx/interface/icons/character_interactions/religious.dds"
ai_chance = { value = 30 }
}
item = {
value = bull_option_tenet_stance_forbidden
is_shown = { always = yes }
is_valid = {
custom_tooltip = {
text = enact_a_bull_tenet_forbidden_cooldown_tt
NOT = { exists = var:enact_a_bull_tenet_forbidden_cooldown }
}
any_character_tenet = {
knowledge_filter = known
pam_tenet_can_be_prohibited_no_actor_trigger = yes
}
custom_tooltip = {
text = ecumenical_council_already_ongoing_tt
NOT = { faith = { has_variable = ecumenical_council_ongoing } }
}
}
current_description = enact_a_bull_decision_option_tenet_stance_forbidden_desc
localization = enact_a_bull_decision_option_tenet_stance_forbidden
icon = "gfx/interface/icons/character_interactions/excommunication.dds"
}
}
effect = {
save_scope_as = bull_issuer
switch = {
trigger = yes
scope:bull_option_crusade = {
set_variable = {
name = bull_option
value = flag:crusade
years = 1
}
faith = {
save_temporary_scope_as = faith
save_temporary_scope_value_as = { # Used in valid_ghw_target_trigger
name = faith_strength
value = faith_military_strength
}
}
custom_tooltip = bull_option_crusade_tt
open_view_data = {
view = decision_detail
data = decision:pick_crusade_target_decision
player = root
}
}
scope:bull_option_rite_heresy = {
custom_tooltip = bull_option_rite_heresy_tt
open_view_data = {
view = decision_detail
data = decision:pam_declare_rite_heresy_bull_decision
player = root
}
}
scope:bull_option_tenet_stance_permitted = {
custom_tooltip = bull_option_tenet_stance_permitted_tt
open_view_data = {
view = decision_detail
data = decision:pam_permit_tenet_bull_decision
player = root
}
}
scope:bull_option_tenet_stance_forbidden = {
custom_tooltip = bull_option_tenet_stance_forbidden_tt
open_view_data = {
view = decision_detail
data = decision:pam_prohibit_tenet_bull_decision
player = root
}
}
}
}
ai_potential = {
always = no
}
}
pick_crusade_target_decision = {
picture = {
reference = "gfx/interface/illustrations/event_story/pam_the_christian_church_crusade.dds"
}
decision_group_type = major
is_invisible = yes
should_create_alert = { always = no }
ai_check_interval = 0
cooldown = { years = 5 }
desc = pick_crusade_target_decision_desc
selection_tooltip = pick_crusade_target_decision_tooltip
confirm_text = pick_crusade_target_decision_confirm
is_valid_showing_failures_only = {
is_available_adult = yes
is_imprisoned = no
custom_tooltip = {
text = enact_a_bull_crusade_cooldown_tt
NOT = { exists = var:enact_a_bull_crusade_cooldown }
}
custom_description = {
text = great_holy_war_cooldown
NOT = { faith = { exists = var:variable_ghw_cooldown } }
}
}
widget = {
controller = select_kingdom_title
title_valid = {
scope:ruler.faith = {
save_temporary_scope_as = faith
save_temporary_scope_value_as = {
name = faith_strength
value = faith_military_strength
}
}
valid_ghw_target_trigger = { FAITH = scope:faith }
}
}
cost = {
piety = pam_enact_a_crusade_bull_cost_value
}
effect = {
save_scope_as = bull_issuer
if = {
limit = { exists = scope:title }
set_variable = {
name = pam_bull_ghw_target_kingdom
value = scope:title
}
}
show_as_tooltip = {
custom_tooltip = pick_crusade_target_decision_effect_tt
}
set_variable = {
name = enact_a_bull_crusade_cooldown
years = 5
}
trigger_event = pam_bull_events.0001
}
}
pam_declare_rite_heresy_bull_decision = {
picture = {
reference = "gfx/interface/illustrations/event_story/pam_the_christian_church_instability.dds"
}
decision_group_type = major
is_invisible = yes
should_create_alert = { always = no }
cooldown = { years = 5 }
ai_check_interval_by_tier = {
barony = 0
county = 72
duchy = 60
kingdom = 6
empire = 6
hegemony = 6
}
desc = pam_declare_rite_heresy_bull_decision_desc
selection_tooltip = pam_declare_rite_heresy_bull_decision_tooltip
confirm_text = pam_declare_rite_heresy_bull_decision_confirm
is_valid = {
faith = {
any_faith_rite = {
pam_rite_can_be_declared_heresy_trigger = yes
}
}
}
is_valid_showing_failures_only = {
is_available_adult = yes
custom_tooltip = {
text = enact_a_bull_rite_heresy_cooldown_tt
NOT = { exists = var:enact_a_bull_rite_heresy_cooldown }
}
custom_tooltip = {
text = pam_rite_heresy_select_tt
exists = scope:selected_item
}
}
cost = {
piety = pam_enact_a_bull_cost_value
}
effect = {
set_variable = {
name = bull_option
value = flag:heresy
years = 1
}
save_scope_as = bull_issuer
scope:selected_item = { save_scope_as = heresy_rite }
show_as_tooltip = {
pam_declare_rite_heresy_effect = yes
}
set_variable = {
name = enact_a_bull_rite_heresy_cooldown
years = 5
}
trigger_event = pam_bull_events.0003
}
widget = {
gui = "decision_view_widget_select_rite"
controller = select_scope_object
show_from_start = yes
decision_to_second_step_button = "SELECT"
setup_items = {
scope:actor = {
faith = {
every_faith_rite = {
limit = {
pam_rite_can_be_declared_heresy_trigger = yes
}
add_to_list = item_list
}
}
}
}
default_item = {
scope:actor = {
faith = {
random_faith_rite = {
limit = {
pam_rite_can_be_declared_heresy_trigger = yes
}
save_scope_as = selected_item
}
}
}
}
is_item_valid = {
pam_rite_can_be_declared_heresy_trigger = yes
}
ai_select_item = {
scope:actor = {
faith = {
ordered_faith_rite = {
limit = {
pam_rite_can_be_declared_heresy_trigger = yes
trigger_if = {
limit = { exists = head_of_rite }
scope:actor = {
dislikes_character_trigger = { CHARACTER = prev.head_of_rite }
}
}
}
order_by = "divergence(faith.main_rite)"
save_scope_as = selected_item
}
}
}
}
}
ai_potential = {
has_pam_dlc_trigger = yes
this = faith.religious_head
religion = religion:catholic_religion
faith = {
any_faith_rite = {
pam_rite_can_be_declared_heresy_trigger = yes
}
}
}
ai_will_do = {
base = 100
modifier = {
add = -25
has_trait_submissive_trigger = yes
}
modifier = {
add = 25
has_trait = zealous
}
modifier = {
add = 20
has_trait = theologian
}
modifier = {
add = -30
has_trait = cynical
}
}
}
pam_permit_tenet_bull_decision = {
picture = {
reference = "gfx/interface/illustrations/event_story/pam_the_christian_church_stability.dds"
}
decision_group_type = major
is_invisible = yes
should_create_alert = { always = no }
cooldown = { years = 5 }
ai_check_interval_by_tier = {
barony = 0
county = 72
duchy = 60
kingdom = 6
empire = 6
hegemony = 6
}
desc = pam_permit_tenet_decision_desc
selection_tooltip = pam_permit_tenet_decision_tooltip
confirm_text = pam_permit_tenet_decision_confirm
is_valid = {
any_character_tenet = {
knowledge_filter = known
pam_tenet_can_be_permitted_no_actor_trigger = yes
}
}
is_valid_showing_failures_only = {
is_available_adult = yes
custom_tooltip = {
text = enact_a_bull_tenet_permitted_cooldown_tt
NOT = { exists = var:enact_a_bull_tenet_permitted_cooldown }
}
custom_tooltip = {
text = pam_tenet_stance_select_tt
exists = scope:selected_item
}
custom_tooltip = {
text = ecumenical_council_already_ongoing_tt
NOT = { faith = { has_variable = ecumenical_council_ongoing } }
}
}
cost = {
piety = pam_enact_a_bull_cost_value
}
effect = {
set_variable = {
name = bull_option
value = flag:tenet_permitted
years = 1
}
save_scope_as = bull_issuer
save_scope_as = pam_tenet_stance_issuer
save_scope_as = pam_tenet_stance_permit
scope:selected_item = { save_scope_as = pam_tenet_stance_tenet }
show_as_tooltip = {
faith = {
set_tenet_status = {
tenet = scope:selected_item
status = permitted
}
change_fervor = {
value = significant_fervor_loss
desc = fervor_loss_pam_tenet_permitted
}
if = {
limit = { has_tenet_popularity_trigger = yes }
change_tenet_popularity = {
target = scope:selected_item
change = medium_tenet_popularity_gain
}
}
}
}
set_variable = {
name = enact_a_bull_tenet_permitted_cooldown
years = 5
}
trigger_event = pam_bull_events.0002
}
widget = {
gui = "decision_view_widget_select_tenet"
controller = select_scope_object
show_from_start = yes
decision_to_second_step_button = "SELECT"
# List is tenets the HoF personally knows + tenets the rite knows
setup_items = {
scope:actor = {
ordered_character_tenet = {
knowledge_filter = known
order_by = {
value = pam_raw_tenet_popularity_value
multiply = -1
}
max = 200
check_range_bounds = no
add_to_list = item_list
}
}
}
default_item = {
scope:actor = {
random_character_tenet = {
knowledge_filter = known
limit = { pam_tenet_can_be_permitted_trigger = yes }
save_scope_as = selected_item
}
}
}
is_item_valid = {
pam_tenet_can_be_permitted_trigger = yes
}
ai_select_item = {
scope:actor = {
if = { # The Pope does not leave his own practice a crime, whatever the desired list says
limit = {
any_personal_tenet = {
scope:actor.rite = {
has_tenet_status = { tenet = prev status = prohibited }
}
pam_tenet_ai_may_permit_trigger = { CHARACTER = scope:actor }
}
}
random_personal_tenet = {
limit = {
scope:actor.rite = {
has_tenet_status = { tenet = prev status = prohibited }
}
pam_tenet_ai_may_permit_trigger = { CHARACTER = scope:actor }
}
save_scope_as = selected_item
}
}
else_if = { # A tenet the faith adores gets sanctioned whether or not the Pope cares for it
limit = {
any_character_tenet = {
knowledge_filter = known
pam_tenet_can_be_permitted_trigger = yes
pam_tenet_is_overwhelmingly_popular_trigger = { CHARACTER = scope:actor }
}
}
ordered_character_tenet = {
knowledge_filter = known
limit = {
pam_tenet_can_be_permitted_trigger = yes
pam_tenet_is_overwhelmingly_popular_trigger = { CHARACTER = scope:actor }
}
order_by = pam_raw_tenet_popularity_value
position = 0
save_scope_as = selected_item
}
}
else_if = {
limit = {
any_personal_tenet = {
pam_tenet_can_be_permitted_trigger = yes
pam_tenet_ai_may_permit_trigger = { CHARACTER = scope:actor }
}
}
random_personal_tenet = {
limit = {
pam_tenet_can_be_permitted_trigger = yes
pam_tenet_ai_may_permit_trigger = { CHARACTER = scope:actor }
}
weight = {
base = 10
modifier = {
add = pam_tenet_popularity_impact_value
}
modifier = {
factor = 0.25
this = tenet:tenet_polyamory
}
}
save_scope_as = selected_item
}
}
else = {
random_desired_tenet = {
limit = {
pam_tenet_can_be_permitted_trigger = yes
pam_tenet_ai_may_permit_trigger = { CHARACTER = scope:actor }
}
only_positive = yes
threshold = 1
selection_count = 97
weight = {
base = 10
modifier = {
add = pam_tenet_popularity_impact_value
}
modifier = {
factor = 0.25
this = tenet:tenet_polyamory
}
}
save_scope_as = selected_item
}
}
}
}
}
ai_potential = {
has_pam_dlc_trigger = yes
this = faith.religious_head
religion = religion:catholic_religion
OR = {
any_personal_tenet = {
root.rite = {
has_tenet_status = { tenet = prev status = prohibited }
}
pam_tenet_ai_may_permit_trigger = { CHARACTER = root }
}
any_desired_tenet = {
only_positive = yes
threshold = 1
selection_count = 97
root.rite = {
NOR = {
has_tenet_status = { tenet = prev status = permitted }
has_tenet_status = { tenet = prev status = core }
}
}
pam_tenet_ai_may_permit_trigger = { CHARACTER = root }
}
any_character_tenet = {
knowledge_filter = known
pam_tenet_can_be_permitted_no_actor_trigger = yes
pam_tenet_is_overwhelmingly_popular_trigger = { CHARACTER = root }
}
}
}
ai_will_do = {
base = 100
modifier = {
add = 25
has_trait = zealous
}
modifier = {
add = 20
has_trait = theologian
}
modifier = {
add = -30
has_trait = cynical
}
}
}
pam_prohibit_tenet_bull_decision = {
picture = {
reference = "gfx/interface/illustrations/event_story/pam_the_christian_church_instability.dds"
}
decision_group_type = major
is_invisible = yes
should_create_alert = { always = no }
cooldown = { years = 5 }
ai_check_interval_by_tier = {
barony = 0
county = 72
duchy = 60
kingdom = 6
empire = 6
hegemony = 6
}
desc = pam_prohibit_tenet_decision_desc
selection_tooltip = pam_prohibit_tenet_decision_tooltip
confirm_text = pam_prohibit_tenet_decision_confirm
is_valid = {
any_character_tenet = {
knowledge_filter = known
pam_tenet_can_be_prohibited_no_actor_trigger = yes
}
}
is_valid_showing_failures_only = {
is_available_adult = yes
custom_tooltip = {
text = enact_a_bull_tenet_forbidden_cooldown_tt
NOT = { exists = var:enact_a_bull_tenet_forbidden_cooldown }
}
custom_tooltip = {
text = pam_tenet_stance_select_tt
exists = scope:selected_item
}
custom_tooltip = {
text = ecumenical_council_already_ongoing_tt
NOT = { faith = { has_variable = ecumenical_council_ongoing } }
}
}
cost = {
piety = pam_enact_a_bull_cost_value
}
effect = {
set_variable = {
name = bull_option
value = flag:tenet_forbidden
years = 1
}
save_scope_as = bull_issuer
save_scope_as = pam_tenet_stance_issuer
save_scope_as = pam_tenet_stance_prohibit
scope:selected_item = { save_scope_as = pam_tenet_stance_tenet }
show_as_tooltip = {
faith = {
set_tenet_status = {
tenet = scope:selected_item
status = prohibited
}
change_fervor = {
value = notable_fervor_value
desc = fervor_gain_pam_tenet_prohibited
}
if = {
limit = { has_tenet_popularity_trigger = yes }
change_tenet_popularity = {
target = scope:selected_item
change = major_tenet_popularity_loss
}
}
}
}
set_variable = {
name = enact_a_bull_tenet_forbidden_cooldown
years = 5
}
trigger_event = pam_bull_events.0002
}
widget = {
gui = "decision_view_widget_select_tenet"
controller = select_scope_object
show_from_start = yes
decision_to_second_step_button = "SELECT"
# List is tenets the HoF personally knows + tenets the rite knows
setup_items = {
scope:actor = {
ordered_character_tenet = {
knowledge_filter = known
order_by = pam_raw_tenet_popularity_value
max = 200
check_range_bounds = no
add_to_list = item_list
}
}
}
default_item = {
scope:actor = {
random_character_tenet = {
knowledge_filter = known
limit = { pam_tenet_can_be_prohibited_trigger = yes }
save_scope_as = selected_item
}
}
}
is_item_valid = {
pam_tenet_can_be_prohibited_trigger = yes
}
ai_select_item = {
scope:actor = {
if = { # Reform moves against the most entrenched vice whether or not the Pope minds it
limit = {
any_character_tenet = {
knowledge_filter = known
pam_tenet_can_be_prohibited_trigger = yes
scope:actor = {
NOT = { has_personal_tenet = scope:pam_tenet_candidate }
}
pam_tenet_ai_should_purge_trigger = { CHARACTER = scope:actor }
}
}
ordered_character_tenet = {
knowledge_filter = known
limit = {
pam_tenet_can_be_prohibited_trigger = yes
scope:actor = {
NOT = { has_personal_tenet = scope:pam_tenet_candidate }
}
pam_tenet_ai_should_purge_trigger = { CHARACTER = scope:actor }
}
order_by = pam_raw_tenet_popularity_value
position = 0
save_scope_as = selected_item
}
}
else = {
random_undesired_tenet = {
limit = {
pam_tenet_can_be_prohibited_trigger = yes
scope:actor = {
NOT = { has_personal_tenet = scope:pam_tenet_candidate }
}
pam_tenet_ai_may_prohibit_trigger = { CHARACTER = scope:actor }
}
known_tenets = yes
only_negative = yes
threshold = -1
selection_count = 97
weight = {
base = 10
modifier = {
add = pam_tenet_unpopularity_impact_value
}
}
save_scope_as = selected_item
}
}
}
}
}
ai_potential = {
has_pam_dlc_trigger = yes
is_ai = yes
religion = religion:catholic_religion
this = faith.religious_head
OR = {
any_character_tenet = {
knowledge_filter = known
pam_tenet_can_be_prohibited_no_actor_trigger = yes
root = {
NOT = { has_personal_tenet = scope:pam_tenet_candidate }
}
pam_tenet_ai_should_purge_trigger = { CHARACTER = root }
}
any_undesired_tenet = {
known_tenets = yes
only_negative = yes
threshold = -1
selection_count = 97
root.rite = {
NOR = {
has_tenet_status = { tenet = prev status = prohibited }
has_tenet_status = { tenet = prev status = core }
}
}
pam_tenet_ai_may_prohibit_trigger = { CHARACTER = root }
}
}
}
ai_will_do = {
base = 100
modifier = {
add = 25
has_trait = zealous
}
modifier = {
add = 20
has_trait = theologian
}
modifier = {
add = -30
has_trait = cynical
}
}
}

View file

@ -0,0 +1,279 @@
### Curse Enemy ###
pam_curse_enemy_decision = {
picture = {
reference = "gfx/interface/illustrations/decisions/disaster.dds"
}
decision_group_type = religious
desc = pam_curse_enemy_decision_desc
selection_tooltip = pam_curse_enemy_decision_tooltip
confirm_text = pam_curse_enemy_decision_confirm
sort_order = 26
cooldown = { years = 5 }
is_shown = {
has_pam_dlc_trigger = yes
has_personal_tenet_flag = tenet_adorcism_curse_enemy
pam_adorcism_has_available_curse_target_trigger = yes
}
is_valid = {
custom_description = {
text = pam_curse_enemy_decision_valid_target
pam_adorcism_has_available_curse_target_trigger = yes
}
}
is_valid_showing_failures_only = {
is_available_adult = yes
custom_description = {
text = pam_curse_enemy_decision_selected_target_valid
pam_adorcism_curse_target_is_valid_trigger = {
TARGET = scope:selected_item
ACTOR = root
}
}
}
cost = {
piety = major_piety_value
}
effect = {
scope:selected_item ?= {
save_scope_as = pam_adorcism_curse_target
}
show_as_tooltip = {
add_character_modifier = {
modifier = pam_adorcism_curse_focus_modifier
years = 3
}
add_stress = major_stress_loss
change_spiritual_fulfillment = minor_spiritual_fulfillment_value
if = {
limit = { exists = scope:selected_item }
scope:selected_item = {
if = {
limit = {
rite = root.rite
}
add_character_modifier = {
modifier = pam_adorcism_ill_omen_modifier
years = 1
}
}
if = {
limit = {
OR = {
rite = root.rite
probably_superstitious = yes
}
}
add_character_modifier = {
modifier = pam_adorcism_curse_anxiety_modifier
years = 1
}
}
}
}
}
trigger_event = pam_adorcism_events.0001
}
widget = {
gui = "decision_view_widget_select_character"
controller = select_scope_object
setup_items = {
scope:actor = {
every_relation = {
type = rival
limit = { pam_adorcism_curse_target_is_living_adult_trigger = yes }
add_to_list = item_list
}
every_war_enemy = {
limit = {
pam_adorcism_curse_target_is_living_adult_trigger = yes
NOR = {
has_relation_rival = scope:actor
has_relation_nemesis = scope:actor
}
}
add_to_list = item_list
}
}
}
default_item = {
scope:actor = {
if = {
limit = {
any_relation = {
type = rival
pam_adorcism_curse_target_is_living_adult_trigger = yes
}
}
ordered_relation = {
type = rival
limit = { pam_adorcism_curse_target_is_living_adult_trigger = yes }
order_by = max_military_strength
position = 0
save_scope_as = selected_item
}
}
else_if = {
limit = {
any_war_enemy = {
pam_adorcism_curse_target_is_living_adult_trigger = yes
}
}
ordered_war_enemy = {
limit = { pam_adorcism_curse_target_is_living_adult_trigger = yes }
order_by = max_military_strength
position = 0
save_scope_as = selected_item
}
}
}
}
is_item_valid = {
pam_adorcism_curse_target_is_valid_trigger = {
TARGET = root
ACTOR = scope:actor
}
}
ai_select_item = {
scope:actor = {
if = {
limit = {
any_relation = {
type = rival
pam_adorcism_curse_target_is_living_adult_trigger = yes
}
}
ordered_relation = {
type = rival
limit = { pam_adorcism_curse_target_is_living_adult_trigger = yes }
order_by = max_military_strength
position = 0
save_scope_as = selected_item
}
}
else = {
ordered_war_enemy = {
limit = { pam_adorcism_curse_target_is_living_adult_trigger = yes }
order_by = max_military_strength
position = 0
save_scope_as = selected_item
}
}
}
}
}
ai_check_interval_by_tier = {
barony = 0
county = 60
duchy = 60
kingdom = 60
empire = 60
hegemony = 60
}
ai_potential = {
ai_vengefulness >= 0
pam_adorcism_has_available_curse_target_trigger = yes
}
ai_will_do = {
base = 35
modifier = {
add = 35
OR = {
has_trait = wrathful
has_trait = vengeful
}
}
modifier = {
add = -35
OR = {
has_trait = calm
has_trait = forgiving
}
}
ai_value_modifier = {
ai_vengefulness = 0.5
ai_zeal = 0.25
}
}
}
### Seek Aid for War ###
pam_seek_war_aid_decision = {
picture = {
reference = "gfx/interface/illustrations/decisions/decision_personal_religious.dds"
}
decision_group_type = religious
desc = pam_seek_war_aid_decision_desc
selection_tooltip = pam_seek_war_aid_decision_tooltip
confirm_text = pam_seek_war_aid_decision_confirm
sort_order = 27
cooldown = { years = 5 }
is_shown = {
has_pam_dlc_trigger = yes
has_personal_tenet_flag = tenet_adorcism_seek_war_aid
}
is_valid = {
is_at_war = yes
}
is_valid_showing_failures_only = {
is_available_adult = yes
}
cost = {
piety = minor_piety_value
}
effect = {
trigger_event = pam_adorcism_events.0101
}
ai_check_interval_by_tier = {
barony = 0
county = 24
duchy = 24
kingdom = 24
empire = 24
hegemony = 24
}
ai_potential = {
is_at_war = yes
}
ai_will_do = {
base = 50
modifier = {
add = 30
OR = {
has_trait = brave
has_trait = zealous
has_trait = ambitious
}
}
modifier = {
add = -30
has_trait = cynical
}
ai_value_modifier = {
ai_zeal = 0.5
ai_boldness = 0.25
}
}
}

View file

@ -0,0 +1,572 @@
#declare_antipope_decision - For Spiritual HoF faiths
#declare_yourself_antipope_decision - For Temporal HoF faiths + Theocratic rulers
declare_antipope_decision = {
picture = {
trigger = {
is_christian_trigger = yes
}
reference = "gfx/interface/illustrations/decisions/pam_decision_create_hof.dds"
}
picture = {
reference = "gfx/interface/illustrations/decisions/decision_personal_religious.dds"
}
decision_group_type = major
desc = declare_antipope_decision_desc
selection_tooltip = declare_antipope_decision_tooltip
confirm_text = declare_antipope_decision_confirm
ai_check_interval_by_tier = {
barony = 0
county = 0
duchy = 0
kingdom = 36
empire = 24
hegemony = 24
}
is_shown = {
is_landed = yes
faith ?= { has_doctrine_parameter = spiritual_head_of_faith }
NOT = { government_has_flag = government_is_theocracy } # They use declare_yourself_antipope_decision
exists = faith.religious_head
this != faith.religious_head
pam_is_antipope_sponsor_trigger = no
pam_is_antipope_trigger = no
NOT = {
rite = { rite_has_parameter = no_head_of_faith }
}
}
is_valid = {
highest_held_title_tier >= tier_kingdom
trigger_if = {
limit = {
has_variable = antipope_squabble_unlock
}
custom_tooltip = {
text = antipope_title_threatened_tt
has_variable = antipope_squabble_unlock
}
}
trigger_else = {
antipope_requirements_trigger = { AMOUNT = 2 }
}
}
is_valid_showing_failures_only = {
is_available_adult = yes
trigger_if = {
limit = { has_pam_dlc_trigger = yes }
custom_tooltip = {
text = declare_antipope_decision_select_clergy_tt
OR = {
any_vassal_or_below = {
pam_valid_antipope_clergy_vassal_trigger = { LIEGE = scope:actor }
}
exists = cp:councillor_court_chaplain
puppet:external_theological_agent_puppet ?= {
NOT = { any_held_title = { is_head_of_faith = yes } }
}
}
}
}
trigger_else = {
custom_tooltip = {
text = declare_antipope_decision_select_clergy_no_puppet_tt
OR = {
any_vassal_or_below = {
pam_valid_antipope_clergy_vassal_trigger = { LIEGE = scope:actor }
}
exists = cp:councillor_court_chaplain
}
}
}
}
cost = {
gold = {
value = 0
if = {
limit = {
has_treasury = no
}
add = 500
if = {
limit = { has_character_modifier = pam_denied_new_pope_modifier }
multiply = 0.75
}
if = {
limit = { pam_antipope_declaration_discounted_trigger = yes }
multiply = 0.67
}
}
}
treasury = {
value = 0
if = {
limit = {
has_treasury = yes
}
add = 500
if = {
limit = { has_character_modifier = pam_denied_new_pope_modifier }
multiply = 0.75
}
if = {
limit = { pam_antipope_declaration_discounted_trigger = yes }
multiply = 0.67
}
}
}
piety = {
value = 1000
if = {
limit = { has_character_modifier = pam_denied_new_pope_modifier }
multiply = 0.75
}
if = {
limit = { pam_antipope_declaration_discounted_trigger = yes }
multiply = 0.67
}
if = {
limit = {
has_variable = antipope_squabble_unlock
}
multiply = 0.1
}
}
}
effect = {
faith.religious_head = {
save_scope_as = pope
capital_province = { save_scope_as = pope_capital }
}
scope:selected_item = {
save_scope_as = antipope
}
if = {
limit = { has_pam_dlc_trigger = yes }
custom_tooltip = declare_antipope_decision_effect_tt
}
else = {
custom_tooltip = declare_antipope_decision_effect_no_puppet_tt
}
if = {
limit = {
exists = scope:antipope
scope:antipope = { exists = clerical_elector_title }
}
custom_tooltip = declare_antipope_decision_vacate_cardinalate_tt
}
trigger_event = pam_antipope_events.0001
}
widget = {
gui = "decision_view_widget_select_character"
controller = select_scope_object
show_from_start = yes
decision_to_second_step_button = "SELECT"
setup_items = {
scope:actor = {
cp:councillor_court_chaplain ?= { add_to_list = item_list }
puppet:external_theological_agent_puppet ?= {
if = {
limit = { NOT = { any_held_title = { is_head_of_faith = yes } } }
add_to_list = item_list
}
}
every_vassal_or_below = {
limit = {
pam_valid_antipope_clergy_vassal_trigger = { LIEGE = scope:actor }
}
add_to_list = item_list
}
}
}
default_item = {
scope:actor = {
ordered_vassal_or_below = {
limit = {
pam_valid_antipope_clergy_vassal_trigger = { LIEGE = scope:actor }
}
order_by = {
value = highest_held_title_tier
add = piety_level
}
save_scope_as = selected_item
}
}
}
is_item_valid = {
pam_valid_antipope_clergy_vassal_trigger = { LIEGE = scope:actor }
}
ai_select_item = {
scope:actor = {
ordered_vassal_or_below = {
limit = {
pam_valid_antipope_clergy_vassal_trigger = { LIEGE = scope:actor }
}
order_by = {
value = highest_held_title_tier
add = piety_level
}
save_scope_as = selected_item
}
}
}
}
ai_potential = {
is_adult = yes
ai_zeal >= 0
any_vassal_or_below = {
pam_valid_antipope_clergy_vassal_trigger = { LIEGE = root }
}
}
ai_will_do = {
base = 25
modifier = {
add = 15
has_trait = zealous
}
modifier = {
add = 25
has_trait = ambitious
}
modifier = {
add = -50
has_trait = content
}
# prevent dukes steal the right
modifier = {
add = {
value = highest_held_title_tier
subtract = 4
multiply = 10
}
}
opinion_modifier = {
opinion_target = faith.religious_head
multiplier = -0.5
step = 5
max = 25
}
modifier = {
factor = 2
OR = {
has_relation_rival = faith.religious_head
has_relation_nemesis = faith.religious_head
}
}
modifier = { # AI shouldn't usually do this if they're main rite
factor = 0.15
rite = faith.main_rite
}
modifier = {
factor = 0
OR = {
has_relation_friend = faith.religious_head
has_relation_best_friend = faith.religious_head
}
}
}
}
declare_yourself_antipope_decision = {
picture = {
trigger = {
is_christian_trigger = yes
}
reference = "gfx/interface/illustrations/decisions/pam_decision_create_hof.dds"
}
picture = {
reference = "gfx/interface/illustrations/decisions/decision_personal_religious.dds"
}
decision_group_type = major
confirm_text = declare_antipope_decision_confirm
title = {
first_valid = {
triggered_desc = {
trigger = { rite = rite:maliki }
desc = appoint_a_righteous_caliph_decision_maliki_variant
}
triggered_desc = {
trigger = {
culture = { has_cultural_pillar = heritage_iranian }
religion = religion:islam_religion
}
desc = appoint_a_righteous_caliph_decision_general_iranian_variant
}
triggered_desc = {
trigger = { religion = religion:islam_religion }
desc = declare_yourself_antipope_decision_caliph
}
desc = declare_yourself_antipope_decision
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { rite = rite:maliki }
desc = appoint_a_righteous_caliph_decision_maliki_variant_desc
}
triggered_desc = {
trigger = {
culture = { has_cultural_pillar = heritage_iranian }
religion = religion:islam_religion
}
desc = appoint_a_righteous_caliph_decision_general_iranian_variant_desc
}
desc = declare_yourself_antipope_decision_desc
}
}
selection_tooltip = appoint_a_righteous_caliph_decision_tooltip
ai_check_interval_by_tier = {
barony = 0
county = 0
duchy = 48
kingdom = 24
empire = 24
hegemony = 24
}
is_shown = {
is_landed = yes
exists = faith.religious_head
OR = {
AND = {
faith ?= { has_doctrine_parameter = temporal_head_of_faith }
exists = dynasty
OR = {
government_has_mechanic = administrative
government_has_flag = government_is_feudal
government_has_flag = government_is_tribal
government_has_flag = government_is_clan
}
NOT = { government_has_flag = government_is_theocracy }
}
AND = {
government_has_flag = government_is_ecclesiastical
any_held_title = {
has_clerical_region = yes
}
}
}
this != faith.religious_head
NOT = {
rite = { rite_has_parameter = no_head_of_faith }
}
pam_is_antipope_trigger = no
pam_is_antipope_sponsor_trigger = no
}
is_valid = {
trigger_if = {
limit = {
has_variable = antipope_squabble_unlock
}
custom_tooltip = {
text = antipope_title_threatened_tt
has_variable = antipope_squabble_unlock
}
}
trigger_else = {
trigger_if = { # Requirements from the previous appoint_a_righteous_caliph_decision
limit = { NOT = { government_has_flag = government_is_theocracy } }
top_liege = this
# Must have a decent proportion of sub-realm counties of the faith.
custom_description = {
text = appoint_a_righteous_caliph_decision.need_at_least_ten_same_faith_counties
any_sub_realm_county = {
count >= appoint_a_righteous_caliph_decision_same_faith_county_count
rite = root.rite
}
}
# Can't be the current caliphal controller
custom_description = {
text = appoint_a_righteous_caliph_decision.cant_be_caliphal_controller
NOT = {
faith.religious_head = {
any_liege_or_above = { this = root }
}
}
}
# Plus, you shouldn't be _too_ sinful, even with your piety level.
custom_description = {
text = appoint_a_righteous_caliph_decision.no_more_than_x_sinful_traits
num_sinful_traits <= 2
}
}
antipope_requirements_trigger = { AMOUNT = 4 }
trigger_if = { # Done this way to hide it for Spanish muslims and the like
limit = {
any_character_struggle = {
involvement = involved
is_struggle_type = persian_struggle
}
}
custom_tooltip = {
text = must_not_be_persia_involved_tt
NOT = {
any_character_struggle = {
involvement = involved
is_struggle_type = persian_struggle
}
}
}
}
}
}
is_valid_showing_failures_only = {
is_available_adult = yes
# Has to be a valid priestly gender for their own rite
custom_tooltip = {
text = pam_antipope_clerical_gender_tt
rite = { rite_has_allowed_gender_for_clergy = root }
}
}
cost = {
gold = {
value = 0
if = {
limit = {
has_treasury = no
}
add = 500
if = {
limit = { has_character_modifier = pam_denied_new_pope_modifier }
multiply = 0.5
}
if = {
limit = { pam_antipope_declaration_discounted_trigger = yes }
multiply = 0.67
}
}
}
treasury = {
value = 0
if = {
limit = {
has_treasury = yes
}
add = 500
if = {
limit = { has_character_modifier = pam_denied_new_pope_modifier }
multiply = 0.5
}
if = {
limit = { pam_antipope_declaration_discounted_trigger = yes }
multiply = 0.67
}
}
}
piety = {
value = 2500
if = {
limit = { has_character_modifier = pam_denied_new_pope_modifier }
multiply = 0.5
}
if = {
limit = { pam_antipope_declaration_discounted_trigger = yes }
multiply = 0.67
}
if = {
limit = {
has_variable = antipope_squabble_unlock
}
multiply = 0.1
}
}
}
effect = {
faith.religious_head = {
save_scope_as = pope
capital_province = { save_scope_as = pope_capital }
}
custom_tooltip = declare_antipope_decision_effect_theocracy_tt
if = {
limit = { exists = clerical_elector_title }
custom_tooltip = declare_yourself_antipope_decision_vacate_cardinalate_tt
}
if = {
limit = {
has_trait = excommunicated
}
remove_trait = excommunicated
}
trigger_event = pam_antipope_events.0001
}
ai_potential = {
is_adult = yes
top_liege = this
piety_level >= high_piety_level
OR = {
has_trait = zealous
has_trait = cynical
faith = faith:sunni # We guide Muwalladi towards this at the first opportunity
government_has_flag = government_is_theocracy
}
}
ai_will_do = {
base = 25
modifier = {
add = 15
has_trait = zealous
}
modifier = {
add = 25
has_trait = ambitious
}
modifier = {
add = -50
has_trait = content
}
# prevent dukes steal the right
modifier = {
add = {
value = highest_held_title_tier
subtract = 4
multiply = 10
}
}
opinion_modifier = {
opinion_target = faith.religious_head
multiplier = -0.5
step = 5
max = 25
}
modifier = {
factor = 2
OR = {
has_relation_rival = faith.religious_head
has_relation_nemesis = faith.religious_head
}
}
modifier = {
factor = 0
OR = {
has_relation_friend = faith.religious_head
has_relation_best_friend = faith.religious_head
}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,648 @@
##############
# Canonizing Saints - decisions
# pam_canonize_saint_decision
# pam_extract_relic_decision
##############
# pam_canonize_saint_decision (character picker) chains into pam_choose_consecration_site_decision (title picker), which commits the canonization on confirm.
##############
# Put a deceased dynast forward for sainthood; the Head of Faith, if any, approves it.
pam_canonize_saint_decision = {
picture = {
reference = "gfx/interface/illustrations/decisions/decision_legitimacy.dds" # TODO_PAM_ALI placeholder art - TIT-74202
}
decision_group_type = religious
sort_order = 105
desc = pam_canonize_saint_decision_desc
selection_tooltip = pam_canonize_saint_decision_tooltip
confirm_text = pam_canonize_saint_decision_confirm
widget = {
gui = "decision_view_widget_select_character"
controller = select_scope_object
show_from_start = yes
decision_to_second_step_button = "SELECT"
# Candidates gated by pam_is_canonization_candidate_trigger; widget root = none, so the canonizer is scope:actor.
setup_items = {
scope:actor = {
every_ancestor = {
even_if_dead = yes
limit = {
pam_is_canonization_candidate_trigger = { CANONIZER = scope:actor }
}
add_to_list = item_list
}
}
}
# Pre-select the worthiest forebear deterministically (virtues, age, learning), so the pre-selection is always the best candidate rather than a weighted roll.
default_item = {
scope:actor = {
ordered_ancestor = {
even_if_dead = yes
limit = {
pam_is_canonization_candidate_trigger = { CANONIZER = scope:actor }
}
order_by = pam_saint_worthiness_value
position = 0
save_scope_as = selected_item
}
}
}
is_item_valid = {
pam_is_canonization_candidate_trigger = { CANONIZER = scope:actor }
}
ai_select_item = {
scope:actor = {
random_ancestor = {
even_if_dead = yes
limit = {
pam_is_canonization_candidate_trigger = { CANONIZER = scope:actor }
}
weight = {
base = 1
modifier = {
add = pam_saint_worthiness_value
}
}
save_scope_as = selected_item
}
}
}
}
# AI commits via pam_choose_consecration_site_decision
ai_check_interval = 0
is_shown = {
is_ai = no
# Hide unless an eligible ancestor exists - the picker opens first and would be blank.
any_ancestor = {
pam_is_canonization_candidate_trigger = { CANONIZER = root }
even_if_dead = yes
}
pam_can_canonize_saint_trigger = yes
has_pam_dlc_trigger = yes
}
# Capability gate only; the goal-facing Requirements live in is_valid below.
is_valid_showing_failures_only = {
is_available_quick = {
incapable = no
alive = yes
adult = yes
imprisoned = no
}
# Step 1 carries no cooldown of its own (it lives on the committing step so backing out is free), so mirror that cooldown here - otherwise this entry, and its alert, would resurface during the post-canonization cooldown.
NOT = { is_decision_on_cooldown = pam_choose_consecration_site_decision }
}
# Goal-facing Requirements, mirrored on pam_choose_consecration_site_decision - keep in sync.
is_valid = {
custom_description = {
text = pam_canonize_saint_decision_req_candidate
any_ancestor = {
even_if_dead = yes
pam_is_canonization_candidate_trigger = { CANONIZER = root }
}
}
pam_hof_thinks_well_of_canonizer_trigger = yes
# Cathedral faiths need a cathedral; others a holy site (same trigger, different wording).
trigger_if = {
limit = { pam_faith_uses_cathedrals_trigger = yes }
custom_description = {
text = pam_canonize_saint_decision_req_site
pam_has_consecration_site_trigger = yes
}
}
trigger_else = {
custom_description = {
text = pam_canonize_saint_decision_req_site_holy_site
pam_has_consecration_site_trigger = yes
}
}
}
# No cost or cooldown here: both live on the committing decision (pam_choose_consecration_site_decision) so a player who backs out of the site step loses nothing. minimum_cost still blocks opening the picker when the eventual cost is unaffordable.
minimum_cost = {
piety = pam_canonize_saint_piety_cost
treasury_or_gold = pam_canonize_saint_gold_cost
}
effect = {
save_scope_as = canonizer
scope:selected_item = { save_scope_as = saint_candidate }
# We store the saint so they survive the jump to the site decision
set_variable = {
name = pam_pending_saint
value = scope:saint_candidate
}
# Surface the HoF's estimated approval odds. The odds value is rooted at the saint, which can't see the HoF's cynicism, so we branch on it here and show the matching tooltip.
if = {
limit = { pam_needs_hof_approval_for_canonization_trigger = yes }
# Cynical HoFs see a tempered-odds variant; the Saint/Venerated-Ancestor verb inside each key is swapped by the PamCanonizeVenerateVerb custom loc.
if = {
limit = { NOT = { faith.religious_head.puppeteer ?= root } }
if = {
limit = { faith.religious_head = { has_trait = cynical } }
custom_tooltip = pam_canonize_saint_hof_chance_cynical_tt
}
else = {
custom_tooltip = pam_canonize_saint_hof_chance_tt
}
}
else = {
custom_tooltip = pam_canonize_saint_hof_chance_puppet_tt
}
}
if = {
limit = { pam_faith_uses_cathedrals_trigger = yes }
custom_tooltip = pam_canonize_saint_decision_choose_1_tt
}
else = {
custom_tooltip = pam_canonize_saint_decision_choose_1_holy_site_tt
}
open_view_data = {
view = decision_detail
data = decision:pam_choose_consecration_site_decision
player = root
}
}
ai_potential = {
always = no
}
}
# The committing decision. For players it's step 2, opened from pam_canonize_saint_decision via open_view_data (enact_a_bull_decision chaining pattern) with the saint carried in var:pam_pending_saint. The AI reaches it directly (step 1 is player-only) and picks the saint in the effect. Cost + cooldown live here, so a player who backs out of the picker is never charged.
pam_choose_consecration_site_decision = {
picture = {
reference = "gfx/interface/illustrations/decisions/decision_legitimacy.dds" # TODO_PAM_ALI placeholder art - TIT-74202
}
# Share the parent title so the panel header stays "Canonize a Saint" across the hop (movement_petition_decision pattern); desc/confirm_text still speak to the site step.
title = pam_canonize_saint_decision
decision_group_type = major
is_invisible = yes
should_create_alert = { always = no }
# Invisible to players (reached via open_view_data from step 1), so this cadence and is_shown gate AI discovery only. Mirrors step 1.
ai_check_interval_by_tier = {
barony = 0
county = 60
duchy = 48
kingdom = 36
empire = 36
hegemony = 36
}
is_shown = {
any_ancestor = {
pam_is_canonization_candidate_trigger = { CANONIZER = root }
even_if_dead = yes
}
pam_can_canonize_saint_trigger = yes
has_pam_dlc_trigger = yes
}
desc = {
first_valid = {
triggered_desc = {
trigger = { pam_faith_uses_cathedrals_trigger = yes }
desc = pam_choose_consecration_site_decision_desc
}
desc = pam_choose_consecration_site_decision_desc_holy_site
}
}
selection_tooltip = pam_choose_consecration_site_decision_tooltip
confirm_text = pam_choose_consecration_site_decision_confirm
is_valid_showing_failures_only = {
custom_tooltip = {
text = pam_choose_consecration_site_decision_select_tt
exists = scope:selected_item
}
}
# Same Requirements as step 1, shown again at the end of the chain - keep both in sync.
is_valid = {
custom_description = {
text = pam_canonize_saint_decision_req_candidate
any_ancestor = {
even_if_dead = yes
pam_is_canonization_candidate_trigger = { CANONIZER = root }
}
}
pam_hof_thinks_well_of_canonizer_trigger = yes
trigger_if = {
limit = { pam_faith_uses_cathedrals_trigger = yes }
custom_description = {
text = pam_canonize_saint_decision_req_site
pam_has_consecration_site_trigger = yes
}
}
trigger_else = {
custom_description = {
text = pam_canonize_saint_decision_req_site_holy_site
pam_has_consecration_site_trigger = yes
}
}
}
cooldown = { years = 25 }
# Charged here (not on step 1), so backing out of the picker costs nothing.
cost = {
piety = pam_canonize_saint_piety_cost
treasury_or_gold = pam_canonize_saint_gold_cost
}
widget = {
# Reuses the vanilla realm-county picker GUI (renders any title, fine for baronies).
gui = "decision_view_widget_select_realm_county"
controller = select_scope_object
show_from_start = yes
decision_to_second_step_button = "SELECT"
# List the real consecration sites first - cathedral faiths: each cathedral barony in realm, whoever owns it; others: holy-site baronies in realm. Occupied ones stay listed (greyed by is_item_valid) so the player sees which are taken. Once every real site is full, open up county-capital baronies neighbouring one so the dynasty still has somewhere to bury (one saint per province).
setup_items = {
scope:actor = {
if = {
limit = { pam_faith_uses_cathedrals_trigger = yes }
if = {
limit = { pam_character_has_cathedral_trigger = yes }
domicile ?= { domicile_location = { barony ?= { add_to_list = item_list } } }
}
every_realm_province = {
limit = {
any_province_domicile = {
owner = {
this != scope:actor
pam_character_has_cathedral_trigger = yes
}
}
}
barony = { add_to_list = item_list }
}
}
else = {
every_realm_province = {
limit = { barony ?= { is_holy_site_of = scope:actor.faith } }
barony = { add_to_list = item_list }
}
}
if = {
limit = { NOT = { pam_has_free_primary_site_trigger = yes } }
every_realm_province = {
limit = {
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:actor }
}
}
}
barony = { add_to_list = item_list }
}
}
}
}
# Pre-select a free site: a free primary if one exists, otherwise a free adjacent county-capital barony.
default_item = {
scope:actor = {
if = {
limit = { pam_has_free_primary_site_trigger = yes }
if = {
limit = { pam_faith_uses_cathedrals_trigger = yes }
if = {
limit = {
pam_character_has_cathedral_trigger = yes
domicile ?= { domicile_location = { barony ?= { pam_site_free_trigger = yes } } }
}
domicile ?= { domicile_location = { barony ?= { save_scope_as = selected_item } } }
}
else = {
random_realm_province = {
limit = {
barony ?= { pam_site_free_trigger = yes }
any_province_domicile = { owner = { pam_character_has_cathedral_trigger = yes } }
}
barony = { save_scope_as = selected_item }
}
}
}
else = {
random_realm_province = {
limit = {
barony ?= { is_holy_site_of = scope:actor.faith }
NOT = { has_travel_point_of_interest = poi_buried_saint }
}
barony = { save_scope_as = selected_item }
}
}
}
else = {
random_realm_province = {
limit = {
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:actor }
}
}
}
barony = { save_scope_as = selected_item }
}
}
}
}
is_item_valid = {
tier = tier_barony
# Occupied sites stay listed but can't be picked - one saint per province.
custom_tooltip = {
text = pam_choose_consecration_site_occupied_tt
pam_site_free_trigger = yes
}
}
# AI mirrors default_item: a free primary if one exists, otherwise a free adjacent county-capital barony.
ai_select_item = {
scope:actor = {
if = {
limit = { pam_has_free_primary_site_trigger = yes }
if = {
limit = { pam_faith_uses_cathedrals_trigger = yes }
if = {
limit = {
pam_character_has_cathedral_trigger = yes
domicile ?= { domicile_location = { barony ?= { pam_site_free_trigger = yes } } }
}
domicile ?= { domicile_location = { barony ?= { save_scope_as = selected_item } } }
}
else = {
random_realm_province = {
limit = {
barony ?= { pam_site_free_trigger = yes }
any_province_domicile = { owner = { pam_character_has_cathedral_trigger = yes } }
}
barony = { save_scope_as = selected_item }
}
}
}
else = {
random_realm_province = {
limit = {
barony ?= { is_holy_site_of = scope:actor.faith }
NOT = { has_travel_point_of_interest = poi_buried_saint }
}
barony = { save_scope_as = selected_item }
}
}
}
else = {
random_realm_province = {
limit = {
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:actor }
}
}
}
barony = { save_scope_as = selected_item }
}
}
}
}
}
effect = {
save_scope_as = canonizer
if = {
# Player path: the saint was chosen in step 1 and carried over.
limit = { exists = var:pam_pending_saint }
var:pam_pending_saint = { save_scope_as = saint_candidate }
}
else = {
# AI path (reaches this decision directly): pick the saint here, mirroring the player picker's worthiness weighting.
random_ancestor = {
even_if_dead = yes
limit = {
pam_is_canonization_candidate_trigger = { CANONIZER = root }
}
weight = {
base = 1
modifier = {
add = pam_saint_worthiness_value
}
}
save_scope_as = saint_candidate
}
}
# The barony's province carries the burial bookkeeping / travel PoI (province-anchored model).
scope:selected_item = {
title_province = { save_scope_as = consecration_province }
}
remove_variable = pam_pending_saint
pam_commit_canonization_effect = yes
}
ai_potential = {
piety >= pam_canonize_saint_piety_cost
gold >= pam_canonize_saint_gold_cost
}
ai_will_do = {
base = 50
modifier = {
has_trait = zealous
add = 50
}
modifier = {
has_trait = cynical
add = -40
}
}
}
# Extract a relic from a saint buried in lands you control. Capped per saint; the AI never takes the final relic.
pam_extract_relic_decision = {
picture = {
reference = "gfx/interface/illustrations/decisions/decision_legitimacy.dds" # TODO_PAM_ALI placeholder art - TIT-74203
}
decision_group_type = religious
sort_order = 104
desc = pam_extract_relic_decision_desc
selection_tooltip = pam_extract_relic_decision_tooltip
confirm_text = pam_extract_relic_decision_confirm
# Pick the buried saint in the character picker. Per-saint data lives on the burial province, so list the sites and surface each one's saint, mapped back in the effect. Widget root = none, so the extractor is scope:actor.
widget = {
gui = "decision_view_widget_select_character"
controller = select_scope_object
show_from_start = yes
decision_to_second_step_button = "SELECT"
setup_items = {
scope:actor.faith = {
every_saint = {
limit = {
saint_burial_location = {
pam_can_extract_relic_from_saint_trigger = { EXTRACTOR = scope:actor SAINT = prev }
}
}
add_to_list = item_list
}
}
}
default_item = {
scope:actor.faith = {
random_saint = {
limit = {
saint_burial_location = {
pam_can_extract_relic_from_saint_trigger = { EXTRACTOR = scope:actor SAINT = prev }
}
}
save_scope_as = selected_item
}
}
}
is_item_valid = {
# custom_tooltip so the entry tooltip uses this line, not a failed auto-flatten of the helper's any_in_global_list.
custom_tooltip = {
text = pam_extract_relic_decision_item_valid_tt
pam_saint_relic_drawable_trigger = { EXTRACTOR = scope:actor }
}
}
ai_select_item = {
scope:actor.faith = {
random_saint = {
limit = {
saint_burial_location = {
pam_can_extract_relic_from_saint_trigger = { EXTRACTOR = scope:actor SAINT = prev }
}
}
save_scope_as = selected_item
}
}
}
}
ai_check_interval_by_tier = {
barony = 0
county = 48
duchy = 36
kingdom = 36
empire = 36
hegemony = 36
}
is_shown = {
is_landed = yes
# Hide unless at least one drawable saint exists (empty picker otherwise).
faith ?= {
any_saint = {
saint_burial_location = {
pam_can_extract_relic_from_saint_trigger = { EXTRACTOR = root SAINT = prev }
}
}
}
exists = faith
is_ruler = yes
has_pam_dlc_trigger = yes
}
# Transient availability only - generic failures on the confirm button.
is_valid_showing_failures_only = {
is_available_quick = {
incapable = no
alive = yes
adult = yes
imprisoned = no
}
}
# Goal-facing requirement (also the execute guard); is_shown gates discovery on the same check. Eligibility owned by pam_can_extract_relic_from_saint_trigger - keep its loc in sync.
is_valid = {
custom_description = {
text = pam_extract_relic_decision_req_saint
faith = {
any_saint = {
saint_burial_location = {
pam_can_extract_relic_from_saint_trigger = { EXTRACTOR = root SAINT = prev }
}
}
}
}
# Once a saint is picked, show how many of the per-saint relic cap they have left.
trigger_if = {
limit = { exists = scope:selected_item }
custom_description = {
text = pam_extract_relic_decision_req_saint_count
# subject exposes the picked saint to the loc as CHARACTER (widget's selected_item isn't a loc-visible scope).
subject = scope:selected_item
scope:selected_item = { pam_saint_relic_drawable_trigger = { EXTRACTOR = root } }
}
}
}
cooldown = { years = 2 }
cost = {
piety = pam_extract_relic_piety_cost
gold = pam_extract_relic_gold_cost
}
effect = {
scope:selected_item = {
save_scope_as = relic_saint
saint_burial_location = {
save_scope_as = extract_site
}
}
if = {
# AI: draw at once, silently (mirrors the canonize AI path).
limit = { is_ai = yes }
custom_tooltip = pam_extract_relic_decision_extract_tt
pam_extract_relic_from_saint_effect = {
SITE = scope:extract_site
}
}
else = {
# Fire an event telling the player the work has begun; its option starts the timer that delivers the relic (event 0016). scope:extract_site / relic_saint carry over.
custom_tooltip = pam_extract_relic_decision_extract_tt
trigger_event = pam_saint_events.0005
}
}
ai_potential = {
always = yes
}
ai_will_do = {
base = 40
modifier = {
has_trait = zealous
add = 20
}
}
}

View file

@ -97,7 +97,7 @@ select_personal_deity_folketero_decision = {
is_shown = {
# Following a valid religion & faith.
faith = faith:folketro
faith = faith:folktro_faith
faith = { has_doctrine_parameter = select_personal_god_active }
}
@ -741,62 +741,3 @@ mend_orthodox_schism_decision = {
}
}
}
stress_loss_hashishiyah_decision = {
picture = {
reference = "gfx/interface/illustrations/decisions/decision_misc.dds"
}
desc = stress_loss_hashishiyah_decision_desc
selection_tooltip = stress_loss_hashishiyah_decision_tooltip
ai_check_interval_by_tier = {
barony = 0
county = 36
duchy = 36
kingdom = 36
empire = 36
hegemony = 36
}
cooldown = { days = 1095 }
is_shown = {
OR = {
has_trait = hashishiyah
faith = { has_doctrine_parameter = tenet_sacramental_herbs_active }
has_character_modifier = ach_secret_stash_modifier
}
}
is_valid_showing_failures_only = {
is_available = yes
}
effect = {
custom_tooltip = stress_loss_drunkard_decision_effect_tooltip
show_as_tooltip = {
add_character_modifier = {
modifier = stress_hashish_stupor
years = 2
}
}
trigger_event = { on_action = stress_loss_hashishiyah }
}
ai_potential = {
OR = {
has_trait = hashishiyah
faith = { has_doctrine_parameter = tenet_sacramental_herbs_active }
}
}
ai_will_do = {
base = 0
modifier = {
add = 100
stress >= 50
}
}
}