N3OW/common/scripted_effects/pam_ecumenical_council_effects.txt
2026-11-12 18:46:36 +00:00

1437 lines
38 KiB
Text

ecumenical_council_gather_clergy_effect = {
scope:activity = {
every_attending_character = {
limit = {
is_clergy = yes
}
save_temporary_scope_as = temp_character
scope:activity = {
add_to_guest_subset = {
name = clergy
target = scope:temp_character
}
}
}
}
}
ecumenical_council_gather_non_clergy_effect = {
scope:activity = {
every_attending_character = {
limit = {
is_clergy = no
}
save_temporary_scope_as = temp_character
scope:activity = {
add_to_guest_subset = {
name = non_clergy
target = scope:temp_character
}
}
}
}
}
# For MP
ecumenical_council_busy_effect = {
if = {
limit = {
is_ai = no
has_multiple_players = yes
}
involved_activity ?= {
add_to_variable_list = {
name = ecumenical_council_list_busy
target = root
}
}
}
}
ecumenical_council_ready_effect = {
if = {
limit = {
is_ai = no
has_multiple_players = yes
}
involved_activity ?= {
remove_list_variable = {
name = ecumenical_council_list_busy
target = root
}
}
}
}
# scope:host on_start runs this, and we name the actor or the Church panel hides the catalyst
# Unlanded clerical puppets are not situation participants
pam_ecumenical_council_host_start_catalyst_effect = {
if = {
limit = {
OR = {
any_character_situation = {
situation_type = the_christian_church
situation_top_has_catalyst = catalyst_hosted_ecumenical_council
}
puppeteer ?= {
any_character_situation = {
situation_type = the_christian_church
situation_top_has_catalyst = catalyst_hosted_ecumenical_council
}
}
}
}
situation:the_christian_church = {
trigger_situation_catalyst = {
catalyst = catalyst_hosted_ecumenical_council
character = scope:host
}
}
}
if = {
limit = {
NOR = {
any_held_title = { is_head_of_faith = yes }
government_has_flag = government_is_ecclesiastical
}
OR = {
any_character_situation = {
situation_type = the_christian_church
situation_top_has_catalyst = catalyst_secular_hosted_ecumenical_council
}
puppeteer ?= {
any_character_situation = {
situation_type = the_christian_church
situation_top_has_catalyst = catalyst_secular_hosted_ecumenical_council
}
}
}
}
situation:the_christian_church = {
trigger_situation_catalyst = {
catalyst = catalyst_secular_hosted_ecumenical_council
character = scope:host
}
}
}
}
# Conclusion payout only. Hosting catalysts fire from on_start via pam_ecumenical_council_host_start_catalyst_effect, not here, so they land when planning is confirmed.
disburse_ecumenical_council_activity_rewards = {
# for the loc
save_scope_as = root_scope
# We give you the regular rewards
add_piety = medium_piety_gain
# And the scholar trait
add_scholar_trait_or_xp_effect = { VALUE = 10 }
if = {
limit = { this = scope:host }
pam_vows_of_poverty_host_completion_piety_effect = yes
}
}
ecumenical_council_become_innovator_effect = {
scope:activity.var:current_topic ?= { save_scope_as = ec_current_topic }
$CHARACTER$ = {
save_scope_as = ec_switch_stance
if = {
limit = {
scope:activity = {
is_target_in_variable_list = {
name = major_conservative
target = $CHARACTER$
}
}
}
scope:activity = {
remove_list_variable = {
name = major_conservative
target = $CHARACTER$
}
}
}
if = {
limit = {
is_in_guest_subset = {
name = conservative
}
}
custom_tooltip = ec_conservative_becomes_innovator_tt
}
else = {
custom_tooltip = ec_becomes_innovator_tt
}
#Are you a conservative? Stop that
if = {
limit = {
is_in_guest_subset = {
name = conservative
}
}
scope:activity = {
remove_from_guest_subset = {
name = conservative
target = $CHARACTER$
}
add_to_variable_list = {
name = blocked_from_conservatives
target = $CHARACTER$
}
if = {
limit = {
has_variable_list = locked_into_conservatives
}
remove_list_variable = {
name = locked_into_conservatives
target = $CHARACTER$
}
}
}
}
#Not a innovator? Make them a innovator
if = {
limit = {
NOT = {
is_in_guest_subset = {
name = innovator
}
}
}
scope:activity = {
add_to_guest_subset = {
name = innovator
target = $CHARACTER$
}
add_to_variable_list = {
name = locked_into_innovators
target = $CHARACTER$
}
if = {
limit = {
has_variable_list = blocked_from_innovators
}
remove_list_variable = {
name = blocked_from_innovators
target = $CHARACTER$
}
}
}
}
if = {
limit = {
NOT = {
scope:activity = {
any_in_list = {
variable = major_innovator
count = all
ecumenical_council_innovator_sort_value > $CHARACTER$.ecumenical_council_innovator_sort_value
}
}
}
}
scope:activity = {
ordered_in_list = {
variable = major_innovator
order_by = {
value = ecumenical_council_innovator_sort_value
multiply = -1
}
scope:activity = {
remove_list_variable = {
name = major_innovator
target = prev
}
}
}
add_to_variable_list = {
name = major_innovator
target = $CHARACTER$
}
}
}
}
}
ecumenical_council_become_conservative_effect = {
scope:activity.var:current_topic ?= { save_scope_as = ec_current_topic }
$CHARACTER$ = {
save_scope_as = ec_switch_stance
if = {
limit = {
scope:activity = {
is_target_in_variable_list = {
name = major_innovator
target = $CHARACTER$
}
}
}
scope:activity = {
remove_list_variable = {
name = major_innovator
target = $CHARACTER$
}
}
}
if = {
limit = {
is_in_guest_subset = {
name = innovator
}
}
custom_tooltip = ec_innovator_becomes_conservative_tt
}
else = {
custom_tooltip = ec_becomes_conservative_tt
}
if = {
limit = {
is_in_guest_subset = {
name = innovator
}
}
scope:activity = {
remove_from_guest_subset = {
name = innovator
target = $CHARACTER$
}
add_to_variable_list = {
name = blocked_from_innovators
target = $CHARACTER$
}
if = {
limit = {
has_variable_list = locked_into_innovators
}
remove_list_variable = {
name = locked_into_innovators
target = $CHARACTER$
}
}
}
}
#Not a innovator? Make them a innovator
if = {
limit = {
NOT = {
is_in_guest_subset = {
name = conservative
}
}
}
scope:activity = {
add_to_guest_subset = {
name = conservative
target = $CHARACTER$
}
add_to_variable_list = {
name = locked_into_conservatives
target = $CHARACTER$
}
if = {
limit = {
has_variable_list = blocked_from_conservatives
}
remove_list_variable = {
name = blocked_from_conservatives
target = $CHARACTER$
}
}
}
}
if = {
limit = {
NOT = {
scope:activity = {
any_in_list = {
variable = major_conservative
count = all
ecumenical_council_conservative_sort_value > $CHARACTER$.ecumenical_council_conservative_sort_value
}
}
}
}
scope:activity = {
ordered_in_list = {
variable = major_conservative
order_by = {
value = ecumenical_council_conservative_sort_value
multiply = -1
}
scope:activity = {
remove_list_variable = {
name = major_conservative
target = prev
}
}
}
add_to_variable_list = {
name = major_conservative
target = $CHARACTER$
}
}
}
}
}
# PROPOSAL = tenet status flag (first/second debate) or doctrine scope (third debate)
ecumenical_council_set_proposal_effect = {
scope:activity = {
add_activity_log_entry = {
key = ecumenical_council_proposal_set_log
score = 0
tags = { completed }
character = scope:host
location = scope:host.location
if = {
limit = {
has_current_phase = ecumenical_council_phase_first_debate
}
set_variable = {
name = current_debate_proposal
value = $PROPOSAL$
}
set_variable = {
name = first_debate_proposal
value = $PROPOSAL$
}
}
else_if = {
limit = {
has_current_phase = ecumenical_council_phase_second_debate
}
set_variable = {
name = current_debate_proposal
value = $PROPOSAL$
}
set_variable = {
name = second_debate_proposal
value = $PROPOSAL$
}
}
else = {
# Keep current_debate_proposal a flag: tenet-status compares are type-unsafe vs a doctrine
set_variable = {
name = current_debate_proposal
value = flag:doctrine_change
}
set_variable = {
name = third_debate_proposal
value = $PROPOSAL$
}
}
# Preview the proposed change (tenet status or doctrine) in the entry tooltip without applying it.
show_as_tooltip = {
ecumenical_council_apply_debate_outcome_effect = yes
}
}
}
}
ecumenical_council_conservative_backlash_effect = {
scope:activity.var:current_topic ?= {
save_scope_as = tenet
}
if = {
limit = {
ecumenical_council_proposal_change_magnitude_value > 0
}
hidden_effect = {
scope:activity = {
every_guest_subset = {
name = conservative
save_temporary_scope_as = ec_backlash_conservative
add_opinion = {
target = scope:host
modifier = ecumenical_council_forced_change_opinion
opinion = ecumenical_council_forced_change_opinion_penalty_value
}
scope:activity = {
every_guest_subset = {
name = innovator
limit = {
this != scope:host
this != scope:ec_backlash_conservative
}
save_temporary_scope_as = ec_backlash_innovator
scope:ec_backlash_conservative = {
add_opinion = {
target = scope:ec_backlash_innovator
modifier = ecumenical_council_forced_change_opinion
opinion = ecumenical_council_forced_change_opinion_penalty_value
}
}
}
}
}
}
}
if = {
limit = {
scope:activity = {
NOT = {
has_variable = ec_backlash_tt_shown
}
}
}
scope:activity = {
set_variable = ec_backlash_tt_shown
}
custom_tooltip = ecumenical_council_conservative_backlash_tt
}
}
}
ecumenical_council_make_core_preview_effect = {
$PROMOTED$ = {
save_temporary_scope_as = ec_promoted_tenet
}
if = {
limit = {
faith = {
pam_faith_is_at_core_tenet_cap_trigger = yes
}
}
$DEMOTED$ = {
save_temporary_scope_as = ec_demoted_tenet
}
custom_tooltip = ecumenical_council_outcome_preview_make_core_tt
}
else = {
custom_tooltip = ecumenical_council_outcome_preview_adopt_core_tt
}
}
# Applies the outcome of a passed debate vote to the host's faith.
# scope:activity.var:current_topic holds the tenet/doctrine being debated.
# scope:activity.var:current_debate_proposal holds the proposed change.
ecumenical_council_apply_debate_outcome_effect = {
# Must stay above set_tenet_status so pre-change standing is readable
# Tenet demotion and make_core swap are if/else_if so make_core cannot book twice
if = {
limit = {
pam_great_schism_progress_can_change_trigger = yes
scope:host.faith = faith:christian_faith
}
if = {
# First/Second debate: tenet demotion of a schism-rite tenet counts; promotion books nothing
limit = {
# A doctrine ruling's tooltip preview still sees the previous debate's tenet flag
NOT = { exists = scope:ec_proposal_doctrine }
OR = {
scope:activity.var:current_debate_proposal ?= flag:permit
scope:activity.var:current_debate_proposal ?= flag:prohibit
scope:activity.var:current_debate_proposal ?= flag:learn
scope:activity.var:current_debate_proposal ?= flag:make_core
}
# Rulings that are dropped below must not book progress either
exists = scope:activity.var:current_topic
NOT = {
scope:host.faith = {
pam_faith_tenet_is_core_trigger = { TENET = scope:activity.var:current_topic }
}
}
}
if = {
limit = {
OR = {
rite:roman_rite = { any_rite_tenet = { this = scope:activity.var:current_topic } }
rite:byzantine_rite = { any_rite_tenet = { this = scope:activity.var:current_topic } }
}
}
scope:activity.var:current_topic = {
save_temporary_scope_as = tenet # Read by the acceptance script values
}
}
if = {
limit = {
exists = scope:tenet
ecumenical_council_tenet_current_acceptance_value > ecumenical_council_proposal_target_acceptance_value
}
pam_change_great_schism_progress_effect = {
VALUE = pam_great_schism_progress_council_tenet_value
TT = ecumenical_council_schism_progress_gain_tt
}
}
# make_core already demotes the core you swapped out, so below the maximum there is nothing to record
else_if = {
limit = {
scope:activity.var:current_debate_proposal ?= flag:make_core
scope:host.faith = {
pam_faith_is_at_core_tenet_cap_trigger = yes
}
}
if = {
limit = { exists = scope:activity.var:core_tenet_to_swap_2 }
scope:activity.var:core_tenet_to_swap_2 = {
save_temporary_scope_as = pam_gs_swapped_tenet
}
}
else = {
scope:activity.var:core_tenet_to_swap_1 ?= {
save_temporary_scope_as = pam_gs_swapped_tenet
}
}
if = {
limit = {
exists = scope:pam_gs_swapped_tenet
OR = {
rite:roman_rite = { any_rite_tenet = { this = scope:pam_gs_swapped_tenet } }
rite:byzantine_rite = { any_rite_tenet = { this = scope:pam_gs_swapped_tenet } }
}
}
pam_change_great_schism_progress_effect = {
VALUE = pam_great_schism_progress_council_tenet_value
TT = ecumenical_council_schism_progress_gain_tt
}
}
}
}
else_if = {
# Third debate: dropping a schism-rite doctrine counts; adopting one does not
limit = {
scope:activity.var:current_debate_proposal ?= flag:doctrine_change
exists = scope:activity.var:third_debate_proposal
}
if = {
limit = {
OR = {
rite:roman_rite = { rite_has_doctrine = scope:activity.var:current_topic }
rite:byzantine_rite = { rite_has_doctrine = scope:activity.var:current_topic }
}
}
pam_change_great_schism_progress_effect = {
VALUE = pam_great_schism_progress_doctrine_value
TT = ecumenical_council_schism_progress_gain_tt
}
}
}
}
if = {
# First/Second debate: the proposal is a tenet status change.
limit = {
NOT = { exists = scope:ec_proposal_doctrine }
OR = {
scope:activity.var:current_debate_proposal ?= flag:permit
scope:activity.var:current_debate_proposal ?= flag:prohibit
scope:activity.var:current_debate_proposal ?= flag:learn
scope:activity.var:current_debate_proposal ?= flag:make_core
}
}
if = {
limit = {
exists = scope:activity.var:core_tenet_to_swap_2
}
scope:activity.var:core_tenet_to_swap_2 = {
save_scope_as = tenet_to_swap
}
}
else = {
scope:activity.var:core_tenet_to_swap_1 ?= {
save_scope_as = tenet_to_swap
}
}
ecumenical_council_conservative_backlash_effect = yes
scope:host.faith = {
# Applying any ruling to an already-core tenet would empty a core slot for good
# Drop a missing topic: make_core would still demote and then have nothing to promote
if = {
limit = {
exists = scope:activity.var:current_topic
NOT = {
pam_faith_tenet_is_core_trigger = { TENET = scope:activity.var:current_topic }
}
}
switch = {
trigger = scope:activity.var:current_debate_proposal
flag:permit = {
set_tenet_status = { tenet = scope:activity.var:current_topic status = permitted }
if = {
limit = { has_tenet_popularity_trigger = yes }
change_tenet_popularity = { target = scope:activity.var:current_topic change = medium_tenet_popularity_gain }
}
}
flag:prohibit = {
set_tenet_status = { tenet = scope:activity.var:current_topic status = prohibited }
if = {
limit = { has_tenet_popularity_trigger = yes }
change_tenet_popularity = { target = scope:activity.var:current_topic change = major_tenet_popularity_loss }
}
pam_faith_grant_forbidden_personal_tenet_secrets_effect = { TENET = scope:activity.var:current_topic }
}
flag:learn = {
set_tenet_status = { tenet = scope:activity.var:current_topic status = known }
if = {
limit = { has_tenet_popularity_trigger = yes }
change_tenet_popularity = { target = scope:activity.var:current_topic change = minor_tenet_popularity_gain }
}
}
flag:make_core = {
# We only give up a core tenet at the maximum, because demoting anyway would strip a missing slot
if = {
limit = {
exists = scope:tenet_to_swap
pam_faith_is_at_core_tenet_cap_trigger = yes
}
scope:tenet_to_swap = {
save_temporary_scope_as = ec_demoted_tenet
}
custom_tooltip = {
text = ecumenical_council_demotes_tenet_tt
set_tenet_status = { tenet = scope:tenet_to_swap status = permitted }
}
if = {
limit = { has_tenet_popularity_trigger = yes }
change_tenet_popularity = { target = scope:tenet_to_swap change = medium_tenet_popularity_loss }
}
}
set_tenet_status = { tenet = scope:activity.var:current_topic status = core }
if = {
limit = { has_tenet_popularity_trigger = yes }
change_tenet_popularity = { target = scope:activity.var:current_topic change = major_tenet_popularity_gain }
}
}
}
}
pam_faith_cleanup_forbidden_personal_tenet_secrets_effect = yes
}
scope:activity = {
if = {
limit = {
NOT = { exists = var:first_debate_resolution }
}
set_variable = {
name = first_debate_resolution
value = flag:passed
}
}
else = {
set_variable = {
name = second_debate_resolution
value = flag:passed
}
}
}
}
else_if = {
# Third debate: proposal is the doctrine sentinel (see set_proposal effect).
# Swap the doctrine the rite currently holds for the proposed one.
limit = {
OR = {
exists = scope:ec_proposal_doctrine
scope:activity.var:current_debate_proposal ?= flag:doctrine_change
}
}
if = {
limit = { NOT = { exists = scope:ec_proposal_doctrine } }
scope:activity.var:third_debate_proposal ?= {
save_scope_as = ec_proposal_doctrine
}
}
if = {
limit = {
exists = scope:ec_proposal_doctrine
}
scope:activity = {
save_temporary_scope_as = ec_proposal_activity
}
if = {
limit = {
OR = {
scope:ec_proposal_doctrine = doctrine:doctrine_liturgical_language_none
scope:ec_proposal_doctrine = doctrine:doctrine_liturgical_language_latin
scope:ec_proposal_doctrine = doctrine:doctrine_liturgical_language_koine
scope:ec_proposal_doctrine = doctrine:doctrine_liturgical_language_church_slavonic
scope:ec_proposal_doctrine = doctrine:doctrine_liturgical_language_irish
scope:ec_proposal_doctrine = doctrine:doctrine_liturgical_language_armenian
scope:ec_proposal_doctrine = doctrine:doctrine_liturgical_language_classical_georgian
scope:ec_proposal_doctrine = doctrine:doctrine_liturgical_language_church_romanian
scope:ec_proposal_doctrine = doctrine:doctrine_liturgical_language_arabic
scope:ec_proposal_doctrine = doctrine:doctrine_liturgical_language_hebrew
scope:ec_proposal_doctrine = doctrine:doctrine_liturgical_language_esperanto
}
}
scope:host.rite = {
custom_tooltip = {
text = neow_ecumenical_council_adopts_liturgical_language_tt
hidden_effect = {
change_rite_doctrine = scope:ec_proposal_doctrine
}
}
}
}
else = {
scope:host.faith = {
# Hide change_doctrine: its history text resolves FAITH from a scope gone on re-render
custom_tooltip = {
text = ecumenical_council_adopts_doctrine_tt
hidden_effect = {
change_doctrine = scope:ec_proposal_doctrine
# Conditional is crisis-wide, not per-rite
if = {
limit = {
scope:ec_proposal_doctrine ?= doctrine:doctrine_clerical_succession_conditional
}
every_faith_rite = {
limit = { NOT = { rite_has_doctrine = doctrine_clerical_succession_conditional } }
change_rite_doctrine = doctrine_clerical_succession_conditional
}
}
}
}
}
}
# Orthodox synodal decrees bind all rites in communion with the hosting faith.
# The ordinary Ecumenical Council retains its original scope elsewhere.
if = {
limit = {
scope:host = { religion = religion:eastern_orthodox_religion }
exists = scope:ec_proposal_doctrine
}
neow_pan_orthodox_synod_promulgate_doctrine_effect = {
DOCTRINE = scope:ec_proposal_doctrine
}
}
}
scope:activity = {
set_variable = {
name = third_debate_resolution
value = flag:passed
}
}
}
# CE3 achievement: Home See Advantage — the host archbishop changed the faith at a council in their own cathedral see
if = {
limit = {
scope:host = {
is_ai = no
any_held_title = {
has_clerical_region = yes
title_capital_county ?= scope:activity.activity_location.county
}
}
}
scope:host = {
add_achievement_global_variable_effect = {
VARIABLE = ce3_14_home_see_advantage_achievement_unlocked
VALUE = yes
}
}
}
}
ecumenical_council_personal_tenet_fulfillment_effect = {
if = {
limit = { $PROPOSAL$ ?= flag:make_core }
pam_personal_tenet_made_core_fulfillment_effect = {
TENET = $TOPIC$
RITE = $RITE$
}
if = {
limit = { exists = $SWAPPED$ }
pam_personal_tenet_lost_core_fulfillment_effect = {
TENET = $SWAPPED$
RITE = $RITE$
}
}
}
else_if = {
limit = {
OR = {
$PROPOSAL$ ?= flag:permit
$PROPOSAL$ ?= flag:prohibit
}
}
pam_personal_tenet_status_change_fulfillment_effect = { TENET = $TOPIC$ }
}
}
ecumenical_council_current_debate_personal_tenet_fulfillment_effect = {
if = {
limit = {
scope:activity.var:last_debate_passed ?= flag:passed
exists = scope:activity.var:current_topic
exists = scope:activity.var:ec_throttled_faith
}
if = {
limit = { exists = scope:activity.var:second_debate_resolution }
ecumenical_council_personal_tenet_fulfillment_effect = {
TOPIC = scope:activity.var:current_topic
PROPOSAL = scope:activity.var:current_debate_proposal
SWAPPED = scope:activity.var:core_tenet_to_swap_2
RITE = scope:activity.var:ec_throttled_faith.main_rite
}
}
else = {
ecumenical_council_personal_tenet_fulfillment_effect = {
TOPIC = scope:activity.var:current_topic
PROPOSAL = scope:activity.var:current_debate_proposal
SWAPPED = scope:activity.var:core_tenet_to_swap_1
RITE = scope:activity.var:ec_throttled_faith.main_rite
}
}
}
}
# The proposal line for an attendee on SIDE (support or oppose) in the current debate
ecumenical_council_sway_stance_tt_effect = {
if = {
limit = {
scope:activity = { has_current_phase = ecumenical_council_phase_first_debate }
}
custom_tooltip = ec_sway_$SIDE$_tt
}
else_if = {
limit = {
scope:activity = { has_current_phase = ecumenical_council_phase_second_debate }
}
custom_tooltip = ec_sway_$SIDE$_tt_2
}
else = {
custom_tooltip = ec_sway_$SIDE$_tt_3
}
}
# Logs a player attendee taking SIDE (innovator or conservative) in a debate
ecumenical_council_log_stance_effect = {
scope:activity = {
add_activity_log_entry = {
key = ecumenical_council_lineup_log
score = 0
character = root
location = root.location
ecumenical_council_become_$SIDE$_effect = { CHARACTER = root }
}
}
}
# LIST = attendees to sway, and CUSTOM = the loc key for the group line that has the count
ecumenical_council_sway_to_innovators_effect = {
scope:activity = {
# Skip the entry when nobody is left to sway
if = {
limit = { any_in_list = { list = $LIST$ } }
# Other players see the sway when it happens, not only in the log
hidden_effect = {
every_attending_character = {
limit = {
is_ai = no
this != scope:actor
}
send_interface_toast = {
type = event_toast_effect_neutral
title = ecumenical_council_guests_swayed_to_innovators_log_title
left_icon = scope:actor
show_as_tooltip = {
ordered_in_list = {
list = $LIST$
custom = $CUSTOM$
max = $MAX$
order_by = "opinion(scope:actor)"
ecumenical_council_sway_stance_tt_effect = { SIDE = support }
}
}
}
}
}
add_activity_log_entry = {
key = ecumenical_council_guests_swayed_to_innovators_log
score = 0
character = scope:actor
location = scope:actor.location
ordered_in_list = {
list = $LIST$
custom = $CUSTOM$
max = $MAX$
order_by = "opinion(scope:actor)"
ecumenical_council_sway_stance_tt_effect = { SIDE = support }
hidden_effect = {
save_temporary_scope_as = change
ecumenical_council_become_innovator_effect = { CHARACTER = scope:change }
}
}
}
}
else = {
custom_tooltip = ec_sway_nobody_tt
}
}
}
# Sways a list of attendees at an Ecumenical Council to oppose the host's proposed change (become Conservatives).
ecumenical_council_sway_to_conservatives_effect = {
scope:activity = {
# Skip the entry when nobody is left to sway
if = {
limit = { any_in_list = { list = $LIST$ } }
# Other players see the sway when it happens, not only in the log
hidden_effect = {
every_attending_character = {
limit = {
is_ai = no
this != scope:actor
}
send_interface_toast = {
type = event_toast_effect_neutral
title = ecumenical_council_guests_swayed_to_conservatives_log_title
left_icon = scope:actor
show_as_tooltip = {
ordered_in_list = {
list = $LIST$
custom = $CUSTOM$
max = $MAX$
order_by = "opinion(scope:actor)"
ecumenical_council_sway_stance_tt_effect = { SIDE = oppose }
}
}
}
}
}
add_activity_log_entry = {
key = ecumenical_council_guests_swayed_to_conservatives_log
score = 0
character = scope:actor
location = scope:actor.location
ordered_in_list = {
list = $LIST$
custom = $CUSTOM$
max = $MAX$
order_by = "opinion(scope:actor)"
ecumenical_council_sway_stance_tt_effect = { SIDE = oppose }
hidden_effect = {
save_temporary_scope_as = change
ecumenical_council_become_conservative_effect = { CHARACTER = scope:change }
}
}
}
}
else = {
custom_tooltip = ec_sway_nobody_tt
}
}
}
# Build innovator/conservative subsets based on each attendee's stance toward the planner-selected debate tenet
pam_sort_guests_into_ecumenical_council_groups_effect = {
scope:activity = {
# Clear all lists
clear_variable_list = major_innovator
clear_variable_list = major_conservative
clear_variable_list = locked_into_innovators
clear_variable_list = locked_into_conservatives
# Explain the backlash again for each debate that passes
remove_variable = ec_backlash_tt_shown
every_guest_subset = {
name = innovator
scope:activity = {
remove_from_guest_subset = {
name = innovator
target = prev
}
}
}
every_guest_subset = {
name = conservative
scope:activity = {
remove_from_guest_subset = {
name = conservative
target = prev
}
}
}
# The host always supports their own proposal, regardless of player or AI control
scope:host = {
add_to_list = innovator
scope:activity = {
add_to_guest_subset = {
name = innovator
target = prev
}
}
}
# Build a list of AI guest innovators
every_attending_character = {
limit = {
# Players will decide in the follow up event
is_ai = yes
this != scope:host
# Only eligible voters
pam_valid_ecumenical_council_voter_trigger = yes
NOT = { has_relation_rival = scope:host }
trigger_if = {
limit = {
scope:activity = { has_current_phase = ecumenical_council_phase_first_debate }
}
scope:activity.activity_tenet:1 = {
save_temporary_scope_as = tenet
}
OR = {
scope:host = { has_strong_hook = prev }
ecumenical_council_attendee_support_value > 0
}
}
trigger_else_if = {
limit = {
scope:activity = { has_current_phase = ecumenical_council_phase_second_debate }
}
scope:activity.activity_tenet:2 = {
save_temporary_scope_as = tenet
}
OR = {
scope:host = { has_strong_hook = prev }
ecumenical_council_attendee_support_value > 0
}
}
trigger_else = {
scope:activity.var:third_debate_proposal ?= {
save_temporary_scope_as = doctrine
}
OR = {
scope:host = { has_strong_hook = prev }
ecumenical_council_doctrine_attendee_support_value > 0
}
}
}
add_to_list = innovator
scope:activity = {
add_to_guest_subset = {
name = innovator
target = prev
}
}
}
# Lump everyone else into the conservative group
every_attending_character = {
limit = {
# Players will decide in the follow up event
is_ai = yes
# Only eligible voters
this != scope:host
pam_valid_ecumenical_council_voter_trigger = yes
NOT = { is_in_list = innovator }
}
add_to_list = conservative
scope:activity = {
add_to_guest_subset = {
name = conservative
target = prev
}
}
}
if = {
limit = {
any_in_list = {
list = innovator
count >= 3
}
}
ordered_in_list = {
list = innovator
max = 3
order_by = ecumenical_council_innovator_sort_value
scope:activity = {
add_to_variable_list = {
name = major_innovator
target = prev
}
}
}
}
else = {
if = {
limit = { list_size:conservative > list_size:innovator }
# populate the list otherwise we have no random event at all.
ordered_in_list = {
list = conservative
limit = { is_ai = yes }
max = { # a bit more to prevent all flipped
value = list_size:conservative
multiply = 0.1
max = 10
min = 1
}
order_by = {
if = {
limit = {
scope:activity = { has_current_phase = ecumenical_council_phase_first_debate }
}
scope:activity.activity_tenet:1 = {
save_temporary_scope_as = tenet
}
add = ecumenical_council_attendee_support_value
}
else_if = {
limit = {
scope:activity = { has_current_phase = ecumenical_council_phase_second_debate }
}
scope:activity.activity_tenet:2 = {
save_temporary_scope_as = tenet
}
add = ecumenical_council_attendee_support_value
}
else = {
if = {
limit = { exists = scope:activity.var:third_debate_proposal }
scope:activity.var:third_debate_proposal = {
save_temporary_scope_as = doctrine
}
}
add = ecumenical_council_doctrine_attendee_support_value
}
}
remove_from_list = conservative
add_to_list = innovator
scope:activity = {
remove_from_guest_subset = {
name = conservative
target = prev
}
add_to_guest_subset = {
name = innovator
target = prev
}
}
}
}
every_in_list = {
list = innovator
scope:activity = {
add_to_variable_list = {
name = major_innovator
target = prev
}
}
}
}
if = {
limit = {
any_in_list = {
list = conservative
count >= 3
}
}
ordered_in_list = {
list = conservative
max = 3
order_by = ecumenical_council_conservative_sort_value
scope:activity = {
add_to_variable_list = {
name = major_conservative
target = prev
}
}
}
}
else = {
every_in_list = {
list = conservative
scope:activity = {
add_to_variable_list = {
name = major_conservative
target = prev
}
}
}
}
# One AI Conservative argues against the host in every debate: the AI Head of Faith if he opposes, else the top mainline-rite Conservative
remove_variable = ec_counterplayer
every_in_list = {
list = conservative
limit = { scope:host.faith.religious_head ?= this }
save_temporary_scope_as = ec_counterplayer_pick
}
if = {
limit = { NOT = { exists = scope:ec_counterplayer_pick } }
ordered_in_list = {
list = conservative
limit = { rite = scope:host.faith.main_rite }
order_by = ecumenical_council_counterplayer_sort_value
save_temporary_scope_as = ec_counterplayer_pick
}
}
if = {
limit = { NOT = { exists = scope:ec_counterplayer_pick } }
ordered_in_list = {
list = conservative
order_by = ecumenical_council_counterplayer_sort_value
save_temporary_scope_as = ec_counterplayer_pick
}
}
if = {
limit = { exists = scope:ec_counterplayer_pick }
set_variable = {
name = ec_counterplayer
value = scope:ec_counterplayer_pick
}
}
# Log the sides each debate starts with, since the AI is sorted anew for every proposal
var:current_topic ?= { save_scope_as = ec_current_topic }
if = {
limit = { NOT = { exists = scope:actor } }
scope:host = { save_scope_as = actor }
}
add_activity_log_entry = {
key = ecumenical_council_lineup_log
score = 0
character = scope:host
location = scope:host.location
every_in_list = {
list = innovator
custom = game_concept_ec_innovators
ecumenical_council_sway_stance_tt_effect = { SIDE = support }
}
every_in_list = {
list = conservative
custom = game_concept_ec_conservatives
ecumenical_council_sway_stance_tt_effect = { SIDE = oppose }
}
}
# Send event for player guests to know what was proposed
every_attending_character = {
limit = {
is_ai = no
this != scope:host
pam_valid_ecumenical_council_voter_trigger = yes
}
trigger_event = ecumenical_council_events.$NEXT_EVENT$
}
}
}
# The Head check also needs the delegate check, because heading is a title property, not a personal rite
# Character scope, inside an Ecumenical Council event
pam_ecumenical_council_save_rite_champions_effect = {
involved_activity = {
random_attending_character = {
limit = {
pam_ecumenical_council_rite_delegate_trigger = { RITE = roman_rite }
rite:roman_rite.head_of_rite ?= this
}
save_scope_as = ec_roman_champion
}
if = {
limit = { NOT = { exists = scope:ec_roman_champion } }
ordered_attending_character = {
limit = { pam_ecumenical_council_rite_delegate_trigger = { RITE = roman_rite } }
order_by = pam_ecumenical_council_rite_champion_sort_value
save_scope_as = ec_roman_champion
}
}
random_attending_character = {
limit = {
pam_ecumenical_council_rite_delegate_trigger = { RITE = byzantine_rite }
rite:byzantine_rite.head_of_rite ?= this
}
save_scope_as = ec_greek_champion
}
if = {
limit = { NOT = { exists = scope:ec_greek_champion } }
ordered_attending_character = {
limit = { pam_ecumenical_council_rite_delegate_trigger = { RITE = byzantine_rite } }
order_by = pam_ecumenical_council_rite_champion_sort_value
save_scope_as = ec_greek_champion
}
}
}
}
# Activity scope: reads faith off the activity so it still works once the host is dead
pam_ecumenical_council_send_ruling_letter_effect = {
if = {
limit = { exists = var:ec_throttled_faith }
save_scope_as = ec_council
var:ec_throttled_faith = { save_scope_as = ec_council_faith }
# Only players engaged with the Christian Church.
every_player = {
limit = {
faith = scope:ec_council_faith
NOT = { involved_activity ?= scope:ec_council }
any_character_situation = {
this = situation:the_christian_church
}
}
# Cleared first so one ruler's correspondent is not inherited by the next in the loop.
clear_saved_scope = ec_reporter
# Chaplain first, then the most learned person answerable to us; the letter names no office.
if = {
limit = { exists = cp:councillor_court_chaplain }
cp:councillor_court_chaplain = { save_scope_as = ec_reporter }
}
else_if = {
limit = {
any_courtier = {
is_available_ai_adult = yes
this != scope:host
}
}
ordered_courtier = {
order_by = learning
max = 1
limit = {
is_available_ai_adult = yes
this != scope:host
}
save_scope_as = ec_reporter
}
}
else_if = {
limit = {
any_vassal = {
is_available_ai_adult = yes
this != scope:host
}
}
ordered_vassal = {
order_by = learning
max = 1
limit = {
is_available_ai_adult = yes
this != scope:host
}
save_scope_as = ec_reporter
}
}
# With nobody to carry the news, the feed message stands on its own.
if = {
limit = { exists = scope:ec_reporter }
trigger_event = ecumenical_council_events.0082
}
}
}
}
# Root backs $RITE$ over $OTHER_RITE$ via $BACKED_CUSTOM$ / $SLIGHTED_CUSTOM$
# Character scope, inside an Ecumenical Council event
pam_ecumenical_council_side_with_rite_effect = {
involved_activity = {
every_attending_character = {
custom = $BACKED_CUSTOM$
limit = { pam_ecumenical_council_rite_delegate_trigger = { RITE = $RITE$ } }
add_opinion = {
target = root
modifier = pam_rite_quarrel_championed_opinion
}
}
every_attending_character = {
custom = $SLIGHTED_CUSTOM$
limit = { pam_ecumenical_council_rite_delegate_trigger = { RITE = $OTHER_RITE$ } }
add_opinion = {
target = root
modifier = pam_rite_quarrel_slighted_opinion
}
}
}
pam_change_great_schism_progress_effect = {
VALUE = pam_great_schism_progress_rite_quarrel_side_taken_value
TT = pam_ecumenical_council_rite_quarrel_side_taken_tt
}
}
# Call only behind pam_is_head_of_schism_pair_rite_trigger
# Character scope, inside an Ecumenical Council event
pam_ecumenical_council_rule_on_quarrel_effect = {
pam_change_great_schism_progress_effect = {
VALUE = pam_great_schism_progress_rite_quarrel_overruled_value
TT = pam_ecumenical_council_rite_quarrel_ruled_tt
}
}