diff --git a/common/activities/activity_types/ecumenical_council.txt b/common/activities/activity_types/ecumenical_council.txt new file mode 100644 index 000000000..c20b13775 --- /dev/null +++ b/common/activities/activity_types/ecumenical_council.txt @@ -0,0 +1,2197 @@ +activity_ecumenical_council = { + + notify_player_can_join_activity = yes + + activity_group_type = grand + + is_shown = { + has_pam_dlc_trigger = yes + can_hold_ecumenical_council_trigger = yes + # Don't offer a regular ecumenical council while this faith has an Investiture Council pending (it would preempt it). + NOT = { faith = { has_variable = investiture_council_pending } } + } + + can_start_showing_failures_only = { + is_available_adult = yes + is_landless_adventurer = no + NOT = { is_activity_type_on_cooldown = activity_ecumenical_council } + # The shared activity has a ten-year engine cooldown for Orthodox synods. + # Other faiths still honour their original 25-year council cooldown. + trigger_if = { + limit = { NOT = { religion = religion:eastern_orthodox_religion } } + custom_tooltip = { + text = neow_regular_council_faith_cooldown_tt + NOT = { faith = { has_variable = recent_ecumenical_council } } + } + } + # Same guard as is_shown: block a routine council while the special one is pending. + NOT = { faith = { has_variable = investiture_council_pending } } + # Hard block, unlike the AI-only window below: two councils at once would fight over the same rite. + custom_tooltip = { + text = ecumenical_council_already_ongoing_tt + NOT = { faith = { has_variable = ecumenical_council_ongoing } } + } + custom_tooltip = { + text = can_host_ecumenical_council_tt + OR = { + any_held_title = { is_head_of_faith = yes } + top_participant_group:the_christian_church ?= { participant_group_type = christian_clerical_main_power_rulers } + government_has_flag = government_is_ecclesiastical + has_theological_agent_puppet_trigger = yes + } + } + trigger_if = { + limit = { faith ?= { has_doctrine_parameter = has_clerical_regions } } + custom_tooltip = { + text = ecumenical_council_faith_needs_clerical_region_holders_tt + faith = { + any_faith_ruler = { + count >= ecumenical_council_min_clerical_region_holders + pam_is_clerical_region_holder_trigger = yes + } + } + } + } + } + + is_valid = { + scope:host = { + is_physically_able = yes + custom_tooltip = { + text = can_host_ecumenical_council_tt + OR = { + any_held_title = { is_head_of_faith = yes } + top_participant_group:the_christian_church ?= { participant_group_type = christian_clerical_main_power_rulers } + government_has_flag = government_is_ecclesiastical + has_theological_agent_puppet_trigger = yes + } + } + } + # If no one shows up + trigger_if = { + limit = { is_current_phase_active = yes } + has_attending_activity_guests = yes + } + trigger_if = { + limit = { is_current_phase_active = yes } + custom_tooltip = { + text = ecumenical_council_needs_clerical_region_quorum_tt + pam_ecumenical_council_has_quorum_trigger = yes + } + } + } + + on_invalidated = { + # Read off the activity because the host may already be dead by the time we get here. + if = { + limit = { exists = var:ec_throttled_faith } + var:ec_throttled_faith = { remove_variable = ecumenical_council_ongoing } + # A council that collapsed before ruling on anything gives the faith its window back. + if = { + limit = { NOT = { exists = var:first_debate_resolution } } + var:ec_throttled_faith = { remove_variable = recent_ecumenical_council } + } + } + # A council cut short after ruling on something still owes the faith an account of it. + if = { + limit = { + OR = { + var:first_debate_resolution ?= flag:passed + var:second_debate_resolution ?= flag:passed + var:third_debate_resolution ?= flag:passed + } + } + pam_ecumenical_council_send_ruling_letter_effect = yes + } + if = { + limit = { + scope:host = { is_landed = no } + } + every_attending_character = { trigger_event = activity_system.0321 } + } + else = { + invalidation_incapable_effect = yes + invalidation_imprisoned_effect = yes + invalidation_nobody_present_effect = yes + invalidation_host_isolated_effect = yes + if = { + limit = { + NOT = { has_variable = invalidation_effect_set } + NOT = { pam_ecumenical_council_has_quorum_trigger = yes } + } + every_attending_character = { + send_interface_toast = { + type = event_toast_effect_neutral + title = ecumenical_council_no_quorum_toast + left_icon = scope:host + custom_tooltip = ecumenical_council_no_quorum_toast_tt + } + } + } + } + } + + on_host_death = { + invalidation_host_death_effect = yes + } + + is_location_valid = { + custom_tooltip = { + text = ecumenical_council_not_valid_province + OR = { + AND = { # Holy Sites held by someone of our faith + barony ?= { is_holy_site_of = scope:host.faith } + county.holder.faith ?= scope:host.faith + } + AND = { # Grand Cathedral of our faith + county.holder.faith ?= scope:host.faith + has_cathedral_great_project_building_trigger = yes + } + AND = { # Large Religious centers of our faith + county.faith ?= scope:host.faith + is_religious_studies_location = yes + } + } + } + } + + province_description = { + # Is it a Holy Site? + triggered_desc = { + trigger = { + barony = { is_holy_site_of = scope:host.faith } + } + desc = activity_ecumenical_council_holy_site_province + } + # Is it a Cathedral? + triggered_desc = { + trigger = { + OR = { + is_religious_studies_location = yes + has_cathedral_great_project_building_trigger = yes + } + } + desc = activity_ecumenical_council_cathedral_province + } + # Is it your capital? + triggered_desc = { + trigger = { this = scope:host.capital_province } + desc = activity_ecumenical_capital_province + } + } + + province_score = { + add = ecumenical_council_province_reference_value + } + + province_filter = all + ai_province_filter = holy_sites + + # desc is only shown in debug AI watch window + ai_will_do = { + value = 0 + # Base + add = { + value = 50 + desc = "base" + } + # We add their Learning + add = { + value = learning + max = 30 + desc = "learning" + } + # More likely during a Crisis phase + if = { + limit = { + situation:the_christian_church ?= { + has_situation_top_phase_parameter = the_christian_church_cheaper_ecumenical_councils + } + } + add = { + value = 30 + desc = CHRISTIAN_CHURCH_PHASE_REASON + } + } + # Personality + if = { # Avoids responsibilities + limit = { has_trait = lazy } + add = { + value = -20 + desc = lazy + } + } + if = { # Likes showing off + limit = { has_trait = arrogant } + add = { + value = 20 + desc = arrogant + } + } + else_if = { # Or not + limit = { has_trait = humble } + add = { + value = -10 + desc = humble + } + } + if = { # Likes this kind of thing + limit = { + has_trait = erudite + } + add = { + value = 20 + desc = erudite + } + } + if = { # Likes this kind of thing + limit = { + has_trait = theologian + } + add = { + value = 20 + desc = theologian + } + } + if = { # Doesn't like this kind of thing + limit = { has_trait = reclusive } + add = { + value = -25 + desc = reclusive + } + } + + add = activity_general_ai_will_do_value + + # Only holders of clerical titles call councils, and every such title is duchy tier or above. + if = { + limit = { + NOR = { + any_held_title = { has_clerical_region = yes } + any_held_title = { is_head_of_faith = yes } + this = rite.head_of_rite + exists = clerical_elector_title + } + } + multiply = { + value = 0 + desc = "holds no clerical title" + } + } + # One council per faith per generation. + if = { + limit = { + faith = { has_variable = recent_ecumenical_council } + } + multiply = { + value = 0 + desc = "faith already held a council recently" + } + } + } + + ai_check_interval_by_tier = { + barony = 0 + county = 0 + duchy = 60 # 5y + kingdom = 60 # 5y + empire = 60 # 5y + hegemony = 60 # 5y + } + + ai_will_select_province = { + # Base + add = { + value = 5 + desc = "base" + } + if = { + limit = { + barony = { is_holy_site_of = scope:host.faith } + } + add = { + value = 50 + desc = activity_ecumenical_council_holy_site_province + } + } + if = { + limit = { + OR = { + is_religious_studies_location = yes + has_cathedral_great_project_building_trigger = yes + } + } + add = { + value = 25 + desc = activity_ecumenical_council_cathedral_province + } + } + if = { + limit = { + this = scope:host.capital_province + } + add = { + value = 15 # Even if the first Vatican EC was in the 19th c, the Lateran ECs (the medieval residence of the Pope) were very important + desc = activity_ecumenical_capital_province + } + } + } + + ################### + # PARAMETERS + ################### + + is_single_location = yes + + cooldown = { years = 10 } + + max_province_icons = 3 + + max_route_deviation_mult = 3.0 + + cost = { + # This is the original council for everyone except Eastern Orthodox hosts. + treasury = { + if = { + limit = { has_treasury = yes NOT = { religion = religion:eastern_orthodox_religion } } + value = ecumenical_council_scaled_cost + } + } + gold = { + if = { + limit = { has_treasury = no NOT = { religion = religion:eastern_orthodox_religion } } + value = ecumenical_council_scaled_cost + } + } + piety = { + if = { + limit = { religion = religion:eastern_orthodox_religion } + value = ecumenical_council_scaled_cost + multiply = 2 + } + } + } + + ui_predicted_cost = { + treasury_or_gold = { + if = { + limit = { NOT = { religion = religion:eastern_orthodox_religion } } + value = ecumenical_council_scaled_cost + } + } + piety = { + if = { + limit = { religion = religion:eastern_orthodox_religion } + value = ecumenical_council_scaled_cost + multiply = 2 + } + } + } + + conclusion_description = { + desc = ecumenical_council_conclusion.intro + } + + ################### + # OPTIONS + ################### + + special_option_category = special_type + + options = { + special_type = { + # Tenet/Doctrinal council + ecumenical_council_type_doctrine = { + default = yes + tenet_doctrine_based_activity = yes + tenet_1 = known_character + tenet_2 = known_character + # Players can only pick doctrines their faith holds, so the AI follows the same rule + doctrine_1 = active_rite + ai_will_do = { + value = 100 + } + } + } + } + + ################### + # PHASES + ################### + + phases = { + # Summons Phase + ecumenical_council_phase_summons = { + order = 1 + is_predefined = yes + + on_phase_active = { + if = { + limit = { this = scope:host } + # Add all the clergy characters to the clergy group + ecumenical_council_gather_clergy_effect = yes + # Add all non-clergy characters as non-clergy + ecumenical_council_gather_non_clergy_effect = yes + } + # Trigger starting event + trigger_event = ecumenical_council_events.0002 + # Progress phase + if = { + limit = { + this = scope:host + } + scope:activity = { progress_activity_phase_after = { months = 1 } } + } + } + + on_weekly_pulse = { + trigger_event = { on_action = ecumenical_council_summons_events } + } + } + + # First Debate + ecumenical_council_phase_first_debate = { + order = 2 + is_predefined = yes + + on_enter_phase = { + scope:activity = { + # Clear leftover current_topic or this debate's ruling lands on it + if = { + limit = { exists = activity_tenet:1 } + activity_tenet:1 = { + save_scope_as = ec_debate_topic_1 + } + set_variable = { + name = current_topic + value = scope:ec_debate_topic_1 + } + } + else = { + remove_variable = current_topic + } + } + # First Debate starting event + if = { + limit = { this = scope:host } + trigger_event = ecumenical_council_events.0010 + scope:activity = { progress_activity_phase_after = { days = 3 } } + } + } + + on_phase_active = { + # Progress phase + if = { + limit = { + this = scope:host + } + scope:activity = { progress_activity_phase_after = { months = 1 } } + } + } + + on_weekly_pulse = { + trigger_event = { on_action = pam_ecumenical_council_debate_tenets_events } + } + + # Resolve the debate vote (tally innovators vs conservatives, apply outcome) + on_end = { + if = { + limit = { this = scope:host } + trigger_event = ecumenical_council_events.0080 + } + } + } + + # Second Debate + ecumenical_council_phase_second_debate = { + order = 3 + is_predefined = yes + + on_enter_phase = { + scope:activity = { progress_activity_phase_after = { days = 3 } } + } + + on_phase_active = { + scope:activity = { + if = { + limit = { exists = activity_tenet:2 } + activity_tenet:2 = { + save_scope_as = ec_debate_topic_2 + } + set_variable = { + name = current_topic + value = scope:ec_debate_topic_2 + } + } + else = { + remove_variable = current_topic + } + } + # Second Debate starting event, all other events (including the weekly pulse) go through here + if = { + limit = { this = scope:host } + trigger_event = ecumenical_council_events.0020 + scope:activity = { progress_activity_phase_after = { days = 3 } } + } + # Progress phase + if = { + limit = { + this = scope:host + } + scope:activity = { progress_activity_phase_after = { months = 1 } } + } + } + + on_weekly_pulse = { + trigger_event = { on_action = pam_ecumenical_council_debate_tenets_events } + } + + # Resolve the debate vote (tally innovators vs conservatives, apply outcome) + on_end = { + if = { + limit = { this = scope:host } + trigger_event = ecumenical_council_events.0080 + } + } + } + + # Third Debate + ecumenical_council_phase_third_debate = { + order = 4 + is_predefined = yes + + on_enter_phase = { + scope:activity = { progress_activity_phase_after = { days = 3 } } + } + + on_phase_active = { + scope:activity = { + if = { + limit = { exists = activity_doctrine:1 } + activity_doctrine:1 = { + save_scope_as = ec_debate_topic_3 + } + set_variable = { + name = current_topic + value = scope:ec_debate_topic_3 + } + } + else = { + remove_variable = current_topic + } + } + # Guest event 0031 fires from the sub-event after, not here + if = { + limit = { this = scope:host } + if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_monogamy + scope:ec_debate_topic_3 = doctrine:doctrine_polygamy + scope:ec_debate_topic_3 = doctrine:doctrine_concubines + } + } + trigger_event = ecumenical_council_events.0050 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_divorce_disallowed + scope:ec_debate_topic_3 = doctrine:doctrine_divorce_approval + scope:ec_debate_topic_3 = doctrine:doctrine_divorce_allowed + } + } + trigger_event = ecumenical_council_events.0051 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_bastardry_none + scope:ec_debate_topic_3 = doctrine:doctrine_bastardry_legitimization + scope:ec_debate_topic_3 = doctrine:doctrine_bastardry_all + } + } + trigger_event = ecumenical_council_events.0052 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_homosexuality_crime + scope:ec_debate_topic_3 = doctrine:doctrine_homosexuality_shunned + scope:ec_debate_topic_3 = doctrine:doctrine_homosexuality_accepted + } + } + trigger_event = ecumenical_council_events.0053 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_deviancy_crime + scope:ec_debate_topic_3 = doctrine:doctrine_deviancy_shunned + scope:ec_debate_topic_3 = doctrine:doctrine_deviancy_accepted + scope:ec_debate_topic_3 = doctrine:doctrine_deviancy_virtuous + } + } + trigger_event = ecumenical_council_events.0054 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_adultery_men_crime + scope:ec_debate_topic_3 = doctrine:doctrine_adultery_men_shunned + scope:ec_debate_topic_3 = doctrine:doctrine_adultery_men_accepted + } + } + trigger_event = ecumenical_council_events.0055 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_adultery_women_crime + scope:ec_debate_topic_3 = doctrine:doctrine_adultery_women_shunned + scope:ec_debate_topic_3 = doctrine:doctrine_adultery_women_accepted + } + } + trigger_event = ecumenical_council_events.0056 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_kinslaying_any_dynasty_member_crime + scope:ec_debate_topic_3 = doctrine:doctrine_kinslaying_extended_family_crime + scope:ec_debate_topic_3 = doctrine:doctrine_kinslaying_close_kin_crime + scope:ec_debate_topic_3 = doctrine:doctrine_kinslaying_shunned + scope:ec_debate_topic_3 = doctrine:doctrine_kinslaying_accepted + } + } + trigger_event = ecumenical_council_events.0057 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_witchcraft_crime + scope:ec_debate_topic_3 = doctrine:doctrine_witchcraft_shunned + scope:ec_debate_topic_3 = doctrine:doctrine_witchcraft_accepted + scope:ec_debate_topic_3 = doctrine:doctrine_witchcraft_virtuous + } + } + trigger_event = ecumenical_council_events.0058 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_gender_male_dominated + scope:ec_debate_topic_3 = doctrine:doctrine_gender_equal + scope:ec_debate_topic_3 = doctrine:doctrine_gender_female_dominated + } + } + trigger_event = ecumenical_council_events.0059 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_consanguinity_dynastic + scope:ec_debate_topic_3 = doctrine:doctrine_consanguinity_restricted + scope:ec_debate_topic_3 = doctrine:doctrine_consanguinity_cousins + scope:ec_debate_topic_3 = doctrine:doctrine_consanguinity_aunt_nephew_and_uncle_niece + scope:ec_debate_topic_3 = doctrine:doctrine_consanguinity_unrestricted + } + } + trigger_event = ecumenical_council_events.0060 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_pluralism_fundamentalist + scope:ec_debate_topic_3 = doctrine:doctrine_pluralism_righteous + scope:ec_debate_topic_3 = doctrine:doctrine_pluralism_pluralistic + } + } + trigger_event = ecumenical_council_events.0061 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_theocracy_temporal + scope:ec_debate_topic_3 = doctrine:doctrine_theocracy_lay_clergy + } + } + trigger_event = ecumenical_council_events.0062 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_no_head + scope:ec_debate_topic_3 = doctrine:doctrine_spiritual_head + scope:ec_debate_topic_3 = doctrine:doctrine_temporal_head + } + } + trigger_event = ecumenical_council_events.0063 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_function_taxation + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_function_alms_and_pacification + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_function_recruitment + } + } + trigger_event = ecumenical_council_events.0064 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_gender_male_only + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_gender_female_only + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_gender_either + } + } + trigger_event = ecumenical_council_events.0065 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_marriage_allowed + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_marriage_disallowed + } + } + trigger_event = ecumenical_council_events.0066 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_succession_temporal_appointment + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_succession_spiritual_appointment + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_succession_temporal_fixed_appointment + scope:ec_debate_topic_3 = doctrine:doctrine_clerical_succession_spiritual_fixed_appointment + } + } + trigger_event = ecumenical_council_events.0067 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_pilgrimage_forbidden + scope:ec_debate_topic_3 = doctrine:doctrine_pilgrimage_encouraged + scope:ec_debate_topic_3 = doctrine:doctrine_pilgrimage_local_rites + scope:ec_debate_topic_3 = doctrine:doctrine_pilgrimage_mandatory + scope:ec_debate_topic_3 = doctrine:doctrine_pilgrimage_mandatory_hajj + } + } + trigger_event = ecumenical_council_events.0068 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_funeral_stoic + scope:ec_debate_topic_3 = doctrine:doctrine_funeral_bewailment + scope:ec_debate_topic_3 = doctrine:doctrine_funeral_cremation + scope:ec_debate_topic_3 = doctrine:doctrine_funeral_sky_burial + scope:ec_debate_topic_3 = doctrine:doctrine_funeral_mummification + scope:ec_debate_topic_3 = doctrine:doctrine_family_rites + } + } + trigger_event = ecumenical_council_events.0069 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_no_anointment + scope:ec_debate_topic_3 = doctrine:doctrine_anointment_permitted + scope:ec_debate_topic_3 = doctrine:doctrine_imperial_anointment + } + } + trigger_event = ecumenical_council_events.0070 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_monotheist + scope:ec_debate_topic_3 = doctrine:doctrine_polytheist + } + } + trigger_event = ecumenical_council_events.0071 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_monasticism_encouraged + scope:ec_debate_topic_3 = doctrine:doctrine_monasticism_accepted + scope:ec_debate_topic_3 = doctrine:doctrine_monasticism_absent + scope:ec_debate_topic_3 = doctrine:doctrine_monasticism_forbidden + } + } + trigger_event = ecumenical_council_events.0072 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_sacraments_central + scope:ec_debate_topic_3 = doctrine:doctrine_sacraments_absent + } + } + trigger_event = ecumenical_council_events.0073 + } + else_if = { + limit = { + OR = { + scope:ec_debate_topic_3 = doctrine:doctrine_liturgical_language_none + scope:ec_debate_topic_3 = doctrine:doctrine_liturgical_language_latin + scope:ec_debate_topic_3 = doctrine:doctrine_liturgical_language_koine + scope:ec_debate_topic_3 = doctrine:doctrine_liturgical_language_church_slavonic + scope:ec_debate_topic_3 = doctrine:doctrine_liturgical_language_irish + scope:ec_debate_topic_3 = doctrine:doctrine_liturgical_language_armenian + scope:ec_debate_topic_3 = doctrine:doctrine_liturgical_language_classical_georgian + scope:ec_debate_topic_3 = doctrine:doctrine_liturgical_language_church_romanian + scope:ec_debate_topic_3 = doctrine:doctrine_liturgical_language_arabic + scope:ec_debate_topic_3 = doctrine:doctrine_liturgical_language_hebrew + scope:ec_debate_topic_3 = doctrine:doctrine_liturgical_language_esperanto + } + } + trigger_event = ecumenical_council_events.0074 + } + } + # Progress phase + if = { + limit = { + this = scope:host + } + scope:activity = { progress_activity_phase_after = { months = 1 } } + } + } + + on_weekly_pulse = { + trigger_event = { on_action = pam_ecumenical_council_debate_doctrines_events } + } + + # Resolve the debate vote (tally innovators vs conservatives, apply outcome) + on_end = { + if = { + limit = { this = scope:host } + trigger_event = ecumenical_council_events.0080 + } + } + } + } + + ################### + # GUEST HANDLING + ################### + + open_invite = yes + + max_guests = 100 + + can_be_activity_guest = { + # Standar Checks + is_adult = yes + is_healthy = yes + in_diplomatic_range = scope:host + # Specific Checks + NOT = { government_has_flag = government_is_republic } + NOT = { government_has_flag = government_is_landless_adventurer } + NOT = { government_has_flag = government_is_mercenary } + OR = { + is_clergy = yes + # You must be a king+ + highest_held_title_tier >= tier_kingdom + # Or a very pious/nearby duke + AND = { + highest_held_title_tier >= tier_duchy + OR = { + piety_level >= 3 + location = { squared_distance = { target = scope:host.capital_province value < squared_distance_medium } } + } + } + } + # You and the host have the same faith + religion = scope:host.religion + # Must be the right gender or a player + trigger_if = { + limit = { is_ai = yes } + trigger_if = { + limit = { is_clergy = yes } + scope:host.rite = { rite_has_allowed_gender_for_clergy = prev } + } + trigger_else = { + scope:host.rite = { rite_has_dominant_ruling_gender = prev } + } + } + } + + host_intents = { + intents = { spiritual_intent_host fervor_intent murder_attendee_intent befriend_attendee_intent } + default = spiritual_intent_host + } + + guest_intents = { + intents = { spiritual_intent fervor_intent clerical_appointment_intent alliance_intent murder_attendee_intent befriend_attendee_intent } + default = spiritual_intent + } + + guest_join_chance = { + base = 5 + base_activity_modifier = yes + # Scripted Modifiers + activity_guest_shared_ai_accept_modifier = yes + activity_guest_health_ai_accept_modifier = yes + + # don't flood into it if you are not same faith + modifier = { + faith != scope:host.faith + NOR = { + is_clergy = yes + rite.head_of_rite = this + has_trait = theologian + has_trait = heresiarch + has_trait = herald + } + factor = 0 + } + } + + guest_subsets = { + clergy + non_clergy + innovator + conservative + } + + wait_time_before_start = { + months = ecumenical_council_wait_time_before_start_months + } + + max_guest_arrival_delay_time = { months = 5 } + + guest_invite_rules = { + defaults = { + 1 = activity_invite_hof_and_hor + 1 = activity_invite_cardinals + 1 = activity_invite_archbishops + 1 = activity_invite_clergy + 2 = activity_invite_neighbouring_rulers + 2 = activity_invite_rule_all_lieges + 2 = activity_invite_rule_vassals + 3 = activity_invite_rule_fellow_vassals + 3 = activity_invite_rule_councillors + 4 = activity_invite_rule_courtiers + 5 = activity_invite_rule_guests + } + } + + travel_entourage_selection = { + weight = { + value = standard_travel_entourage_additions + if = { + limit = { + is_landed = no + is_faith_dominant_gender = yes + court_owner = scope:owner + is_available = yes + is_ai = yes + is_adult = yes + location = scope:owner.location + # Remove diarchs from the list. + bannable_serving_diarch_trigger = no + } + add = 50 + } + } + + max = 15 + ai_max = 7 + invite_rule_order = 1 + } + + ################### + # ON ACTIONS + ################### + + pulse_actions = { + entries = { + apa_friendly_discussions + apa_forging_alliances + apa_preaching_wrath_of_god + apa_studying_scripture + apa_prayer + apa_silent_contemplation + apa_communal_prayer + apa_comet_sighted + apa_good_omen + apa_charity_for_the_poor + apa_spiritual_journey + apa_overcome_with_emotion + apa_night_on_books + apa_local_food + guest_brawl + apa_passive_religious_learning_host + apa_passive_religious_learning_guest + } + chance_of_no_event = 5 + } + + on_start = { + add_activity_log_entry = { + key = ecumenical_council_start_log + character = scope:host + score = 10 + } + # Closed at planning time so rival clerics cannot summon competing councils. + scope:host.faith = { + if = { + limit = { scope:host = { religion = religion:eastern_orthodox_religion } } + set_variable = { + name = recent_ecumenical_council + value = yes + years = 10 + } + } + else = { + set_variable = { + name = recent_ecumenical_council + value = yes + years = ecumenical_council_faith_cooldown_years + } + } + # Cleared on completion and on invalidation; the duration is only a self-healing backstop. + set_variable = { + name = ecumenical_council_ongoing + value = yes + years = ecumenical_council_ongoing_backstop_years + } + } + set_variable = { + name = ec_throttled_faith + value = scope:host.faith + } + # Feast-style host-scoped catalyst at planning confirm + scope:host = { + pam_ecumenical_council_host_start_catalyst_effect = yes + } + } + + on_enter_passive_state = { + trigger_event = ecumenical_council_events.0001 + } + + # Effects run when the activity completes after its last phase + # root = character in this phase + # scope:activity = the activity + # scope:host = host of the activity + on_complete = { + # Run conclusion stuff here + if = { + limit = { this = scope:host } + location = { save_scope_as = activity_location } + save_scope_as = root_scope + trigger_event = ecumenical_council_events.0040 + scope:host.faith = { remove_variable = ecumenical_council_ongoing } + # Rulers of the faith who stayed home hear what was decided from their own chaplain. + scope:activity = { pam_ecumenical_council_send_ruling_letter_effect = yes } + } + # Conclusion event for guests + else = { + if = { + limit = { + is_alive = yes + is_imprisoned = no + } + trigger_event = ecumenical_council_events.0041 + } + } + } + + activity_window_widgets = { + coronation_supporter_detractor_widget = "window_activity_contestants_right_bar_container" + } + + ################### + # GRAPHICS + ################### + + header_background = "gfx/interface/illustrations/activity_header_backgrounds/activity_ecumenical_council.dds" + + # Travel + background = { # Bridge + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + is_riverside_province = yes + geographical_region = world_europe + OR = { + terrain = farmlands + terrain = plains + terrain = mountains + terrain = hills + } + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_travel_bridge.dds" + environment = "environment_travel_bridge" + ambience = "event:/SFX/Events/Backgrounds/mountains_day" + } + + background = { #Rice Fields - If we have Paddy fields AND/or terraced hills + #This goes before other terrain since it can override in many different terrains if built + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + terrain = farmlands + OR = { + terrain = terraced_hills + has_building_or_higher = paddy_fields_01 + } + } + } + texture = "gfx/interface/illustrations/event_scenes/tgp_rice_fields.dds" + environment = "environment_tgp_rice_fields" + ambience = "event:/DLC/EP4/SFX/Events/Event_Backgrounds/tgp_rice_fields" + } + + background = { #Farmlands - East Asia + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + terrain = farmlands + culture = { has_graphical_east_asia_culture_group_trigger = yes } + } + } + texture = "gfx/interface/illustrations/event_scenes/tgp_farm_asia.dds" + environment = "environment_tgp_farm_asia" + ambience = "event:/DLC/EP4/SFX/Events/Event_Backgrounds/tgp_farm_asia" + } + + background = { # Farmland, settled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + terrain = farmlands + exists = province_owner + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_travel_farm.dds" + environment = "environment_travel_farmlands" + ambience = "event:/SFX/Events/Backgrounds/fields_farms_day" + } + background = { # Farmland, unsettled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + terrain = farmlands + NOT = { exists = province_owner } + } + } + texture = "gfx/interface/illustrations/event_scenes/farms.dds" + environment = "environment_event_farms" + ambience = "event:/SFX/Events/Backgrounds/fields_farms_day" + } + + background = { #Desert, settled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_wilderness_desert_trigger = yes + exists = province_owner + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_travel_desert.dds" + environment = "environment_travel_desert" + ambience = "event:/SFX/Events/Backgrounds/desert_day" + } + background = { #Desert, unsettled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_wilderness_desert_trigger = yes + NOT = { exists = province_owner } + } + } + texture = "gfx/interface/illustrations/event_scenes/desert.dds" + environment = "environment_event_bp1_desert" + ambience = "event:/SFX/Events/Backgrounds/desert_day" + } + + background = { #forest snowy + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location ?= { hunt_snowy_forest_trigger = yes } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_hunt_snowy_forest.dds" + environment = "environment_hunt_snowy_forest" + ambience = "event:/SFX/Events/Backgrounds/mountains_day" + } + + background = { #forest_pine + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_wilderness_forest_pine_trigger = yes + } + } + texture = "gfx/interface/illustrations/event_scenes/forest_pine.dds" + environment = "environment_event_forest_pine" + ambience = "event:/SFX/Events/Backgrounds/coniferous_forest_day" + } + + background = { #forest + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_wilderness_forest_trigger = yes + } + } + texture = "gfx/interface/illustrations/event_scenes/forest.dds" + environment = "environment_event_forest" + ambience = "event:/SFX/Events/Backgrounds/deciduous_forest_day" + } + + background = { #mountains, settled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_wilderness_mountains_trigger = yes + exists = province_owner + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_travel_mountains.dds" + environment = "environment_travel_mountain_settlement" + ambience = "event:/SFX/Events/Backgrounds/mountains_day" + } + background = { #mountains, unsettled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_wilderness_mountains_trigger = yes + NOT = { exists = province_owner } + } + } + texture = "gfx/interface/illustrations/event_scenes/mountains.dds" + environment = "environment_event_mountains" + ambience = "event:/SFX/Events/Backgrounds/mountains_day" + } + + background = { #steppe, settled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_wilderness_steppe_trigger = yes + exists = province_owner + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_travel_steppe.dds" + environment = "environment_travel_steppe_settlement" + ambience = "event:/SFX/Events/Backgrounds/steppe_day" + } + background = { #steppe, unsettled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_wilderness_steppe_trigger = yes + NOT = { exists = province_owner } + } + } + texture = "gfx/interface/illustrations/event_scenes/steppe.dds" + environment = "environment_event_steppe" + ambience = "event:/SFX/Events/Backgrounds/steppe_day" + } + + background = { #drylands (formerly desert) + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_drylands_trigger = yes + } + } + texture = "gfx/interface/illustrations/event_scenes/drylands.dds" + environment = "environment_event_desert" + ambience = "event:/SFX/Events/Backgrounds/desert_day" + } + + background = { #wetlands + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_wilderness_wetlands_trigger = yes + } + } + texture = "gfx/interface/illustrations/event_scenes/bp1_wetlands.dds" + environment = "environment_event_bp1_wetlands" + ambience = "event:/SFX/Events/Backgrounds/deciduous_forest_day" + } + + background = { #jungle + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_wilderness_jungle_trigger = yes + } + } + texture = "gfx/interface/illustrations/event_scenes/bp1_jungle.dds" + environment = "environment_event_bp1_jungle" + ambience = "event:/SFX/Events/Backgrounds/deciduous_forest_day" + } + + background = { #plains, settled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_plains_trigger = yes + exists = province_owner + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_travel_hills.dds" + environment = "environment_travel_hills_settlement" + ambience = "event:/SFX/Events/Backgrounds/fields_farms_day" + } + background = { #plains, unsettled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_plains_trigger = yes + NOT = { exists = province_owner } + } + } + texture = "gfx/interface/illustrations/event_scenes/bp1_plains.dds" + environment = "environment_event_bp1_plains" + ambience = "event:/SFX/Events/Backgrounds/fields_farms_day" + } + + background = { #hills, settled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_hills_trigger = yes + exists = province_owner + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_travel_hills.dds" + environment = "environment_travel_hills_settlement" + ambience = "event:/SFX/Events/Backgrounds/fields_farms_day" + } + background = { #hills, unsettled + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + graphical_hills_trigger = yes + NOT = { exists = province_owner } + } + } + texture = "gfx/interface/illustrations/event_scenes/bp1_hills.dds" + environment = "environment_event_bp1_hills" + ambience = "event:/SFX/Events/Backgrounds/fields_farms_day" + } + + background = { #sea + trigger = { + scope:host.location != scope:activity.activity_location + scope:host.location = { + is_sea_province = yes + } + } + texture = "gfx/interface/illustrations/event_scenes/fp1_ocean.dds" + environment = "environment_event_fp1_ocean" + ambience = "event:/DLC/FP1/SFX/Events/event_ocean_longship" + } + ### Summons - Temple exterior + background = { #Jerusalem + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location.county = title:c_jerusalem + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_holysite_jerusalem.dds" + environment = "environment_jerusalem" + ambience = "event:/DLC/EP2/SFX/Events/Backgrounds/evn_background_jerusalem" + } + background = { #Mecca + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location.county = title:c_mecca + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_holysite_mecca.dds" + environment = "environment_mecca" + ambience = "event:/DLC/EP2/SFX/Events/Backgrounds/evn_background_holysite_mena" + } + background = { #Constantinople + trigger = { + scope:activity ?= { + activity_location.county = title:c_byzantion + has_current_phase = ecumenical_council_phase_summons + } + } + texture = "gfx/interface/illustrations/event_scenes/ep3_constantinople.dds" + environment = "environment_ep3_constantinople" + ambience = "event:/DLC/EP3/SFX/Events/Event_Images/ep3_evn_eventimage_constantinople" + } + background = { # Orthodox generic holy site + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location = { + religion = religion:christianity_religion + OR = { + geographical_region = graphical_mena + geographical_region = graphical_india + geographical_region = world_europe_south_east + geographical_region = world_asia_minor + rite = { + rite_has_doctrine = special_doctrine_is_eastern_christian_faith + } + } + NOT = { + rite = { + rite_has_doctrine = special_doctrine_is_western_christian_faith + } + } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/ep3_holysite_orthodox.dds" + environment = "environment_ep3_holysite_orthodox" + ambience = "event:/DLC/EP3/SFX/Events/Event_Images/ep3_evn_eventimage_orthodox_holy_site" + } + background = { #East Asia + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location = { + OR = { + culture ?= { has_graphical_east_asia_culture_group_trigger = yes } + steppe_building_gfx_use_east_asian_trigger = yes + } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/tgp_holysite_asia.dds" + environment = "environment_tgp_holysite_asia" + ambience = "event:/DLC/EP4/SFX/Events/Event_Backgrounds/tgp_holysite_asia" + } + background = { # MPO - Tengri + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location = { + OR = { + religion = { + OR = { + this = religion:tengrism_religion + this = religion:magyar_religion + this = religion:siberian_religion + } + } + AND = { + religion = religion:buddhism_religion + OR = { + geographical_region = world_steppe_east + geographical_region = world_steppe_central + geographical_region = world_steppe_west + geographical_region = world_asia_north_east + } + } + AND = { + religion = religion:buddhism_religion + OR = { + geographical_region = world_tibet + geographical_region = world_steppe_tarim + } + county.title_province ?= { + OR = { + has_holding_type = tribal_holding + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/mpo_temple_steppe.dds" + environment = "environment_mpo_temple_steppe" + ambience = "event:/DLC/CE2/Events/Event_Images/mpo_temple_steppe" + } + background = { #Mandala shrine + trigger = { + scope:activity ?= { + activity_location = { + culture = { has_building_gfx = southeast_asian_building_gfx } + } + has_current_phase = ecumenical_council_phase_summons + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_holysite_indian.dds" + environment = "environment_indian_holy_site" + ambience = "event:/DLC/EP2/SFX/Events/Backgrounds/evn_background_jungle" + } + background = { #MENA generic holy site + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location = { + OR = { + culture ?= { has_graphical_mena_culture_group_trigger = yes } + steppe_building_gfx_use_mena_trigger = yes + } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_holysite_mena.dds" + environment = "environment_generic_holy_site_mena" + ambience = "event:/DLC/EP2/SFX/Events/Backgrounds/evn_background_holysite_mena" + } + background = { #Indian generic holy site + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location = { + OR = { + culture ?= { has_graphical_india_culture_group_trigger = yes } + steppe_building_gfx_use_indian_trigger = yes + } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_holysite_indian.dds" + environment = "environment_indian_holy_site" + ambience = "event:/DLC/EP2/SFX/Events/Backgrounds/evn_background_jungle" + } + background = { #Western generic holy site, gothic + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location ?= { + NOT = { + religion ?= { is_in_family = rf_pagan } + } + } + activity_host ?= { + rite = { + rite_has_doctrine = special_doctrine_is_western_christian_faith + } + pam_church_event_background_is_grand_western_trigger = yes + } + } + current_year >= 900 + } + texture = "gfx/interface/illustrations/event_scenes/ep2_wedding_ceremony_western.dds" + environment = "environment_western_wedding" + ambience = "event:/DLC/EP2/SFX/Events/Grand_Activities/Weddings/ep2_event_grand_wedding" + } + background = { #Western generic holy site, mediterranean + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location ?= { + NOT = { + religion ?= { is_in_family = rf_pagan } + } + } + activity_host ?= { + rite = { + rite_has_doctrine = special_doctrine_is_western_christian_faith + } + OR = { + pam_church_event_background_is_grand_western_pre_gothic_trigger = yes + AND = { + pam_church_event_background_is_developed_trigger = yes + scope:activity.activity_location = { pam_church_background_location_is_mediterranean_or_urban_trigger = yes } + } + } + } + } + current_year >= 900 + } + texture = "gfx/interface/illustrations/event_scenes/pam_romanesque_church_exterior.dds" + environment = "environment_pam_romanesque_church_exterior" + ambience = "event:/DLC/CE3/SFX/Events/romanesque_church_exterior" #AUDIO CE3 + } + background = { #Western generic holy site + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location ?= { + NOT = { + religion ?= { is_in_family = rf_pagan } + } + } + activity_host ?= { + rite = { + rite_has_doctrine = special_doctrine_is_western_christian_faith + } + pam_church_event_background_is_developed_trigger = yes + } + } + current_year >= 900 + } + texture = "gfx/interface/illustrations/event_scenes/ep2_holysite_western.dds" + environment = "environment_western_holy_site" + ambience = "event:/SFX/Events/Backgrounds/temple_christian" + } + background = { #Tribal + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location ?= { + county.title_province ?= { + has_holding_type = tribal_holding + } + NOT = { + has_holding_type = church_holding + } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_holysite_tribal.dds" + environment = "environment_event_garden" + ambience = "event:/DLC/FP1/SFX/Events/event_temple" + } + background = { #Pre-Romanesque Western generic holy site... and fallback + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_host.faith.religion = religion:christianity_religion + } + } + texture = "gfx/interface/illustrations/event_scenes/pam_pre-romanesque_church_exterior.dds" + environment = "environment_pam_preromanesque_church_exterior" + ambience = "event:/DLC/CE3/SFX/Events/pre-romanesque_church_exterior" #AUDIO CE3 + } + + ## Debates -- Temple Interior + background = { # Hagia Sophia + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_location.county = title:c_byzantion + } + } + texture = "gfx/interface/illustrations/event_scenes/ep3_hagia_sophia.dds" + environment = "environment_ep3_hagia_sophia" + ambience = "event:/DLC/EP3/SFX/Events/Event_Images/ep3_evn_eventimage_hagia_sophia" + } + background = { #Zoroastrian generic holy site + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + OR = { + activity_host.religion = religion:zoroastrianism_religion + activity_location = { + religion = religion:zoroastrianism_religion + } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/fp3_temple.dds" + environment = "environment_event_fp3_temple" + ambience = "event:/DLC/FP1/SFX/Events/event_temple" + } + background = { #East Asian + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_location ?= { + OR = { + faith.religion = { + OR = { + is_in_family = rf_eastern + is_in_family = rf_sinitic + this = religion:shintoism_religion + } + } + OR = { + culture ?= { + has_graphical_east_asia_culture_group_trigger = yes + } + steppe_building_gfx_use_east_asian_trigger = yes + } + } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/tgp_temple_asia.dds" + environment = "environment_tgp_temple_asia" + ambience = "event:/DLC/EP4/SFX/Events/Event_Backgrounds/tgp_temple_asia" + } + background = { # MPO - Tengri + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_location = { + OR = { + religion = { + OR = { + this = religion:tengrism_religion + this = religion:magyar_religion + this = religion:siberian_religion + } + } + AND = { + religion = religion:buddhism_religion + OR = { + geographical_region = world_steppe_east + geographical_region = world_steppe_central + geographical_region = world_steppe_west + geographical_region = world_asia_north_east + } + } + AND = { + religion = religion:buddhism_religion + OR = { + geographical_region = world_tibet + geographical_region = world_steppe_tarim + } + county.title_province ?= { + OR = { + has_holding_type = tribal_holding + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/mpo_temple_steppe.dds" + environment = "environment_mpo_temple_steppe" + ambience = "event:/DLC/CE2/Events/Event_Images/mpo_temple_steppe" + } + background = { #Christian - Grand Cathedral (Western pre-Gothic) + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_host = { pam_church_event_background_is_grand_western_pre_gothic_trigger = yes } + } + } + texture = "gfx/interface/illustrations/event_scenes/church.dds" + environment = "environment_event_church" + ambience = "event:/SFX/Events/Backgrounds/temple_christian" + } + background = { #Christian - Grand Cathedral, Gothic + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_host = { pam_church_event_background_is_grand_western_trigger = yes } + } + } + texture = "gfx/interface/illustrations/event_scenes/pam_gothic_cathedral_interior.dds" + environment = "environment_pam_gothic_cathedral_interior" + ambience = "event:/DLC/CE3/SFX/Events/gothic_cathedral_interior" + } + background = { # Christian - Grand Cathedral Eastern (Hagia Sophia) + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_host = { pam_church_event_background_is_grand_eastern_trigger = yes } + } + } + texture = "gfx/interface/illustrations/event_scenes/ep3_hagia_sophia.dds" + environment = "environment_ep3_hagia_sophia" + ambience = "event:/DLC/EP3/SFX/Events/Event_Images/ep3_evn_eventimage_hagia_sophia" + } + background = { #Christian - Developed Church + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_host = { + faith = { religion = religion:christianity_religion } + pam_church_event_background_is_developed_trigger = yes + } + } + } + texture = "gfx/interface/illustrations/event_scenes/pam_romanesque_church_interior.dds" + environment = "environment_pam_romanesque_church_interior" + ambience = "event:/DLC/CE3/SFX/Events/romanesque_church_interior" + } + background = { #General Christian + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_host = { + faith = { religion = religion:christianity_religion } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/pam_simple_church_western_interior.dds" + environment = "environment_pam_simple_church_western_interior" + ambience = "event:/DLC/CE3/SFX/Events/simple_western_church_interior" + } + background = { #Norse generic holy site + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_location = { + culture = { has_graphical_norse_culture_group_trigger = yes } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/fp1_tribal_temple.dds" + environment = "environment_event_fp1_tribal_temple" + ambience = "event:/DLC/FP1/SFX/Events/event_temple" + } + background = { #MENA generic holy site + trigger = { + scope:activity ?= { + has_current_phase = ecumenical_council_phase_summons + activity_location = { + OR = { + culture ?= { has_graphical_mena_culture_group_trigger = yes } + steppe_building_gfx_use_mena_trigger = yes + } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/fp2_temple.dds" + environment = "environment_event_fp2_temple" + ambience = "event:/DLC/FP2/SFX/Events/temple" + } + background = { #Iberian generic holy site + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_location.culture ?= { has_graphical_iberian_culture_group_trigger = yes } + } + } + texture = "gfx/interface/illustrations/event_scenes/fp2_temple.dds" + environment = "environment_event_fp2_temple" + ambience = "event:/DLC/FP2/SFX/Events/temple" + } + background = { #Pagan generic holy site (Outdoors) + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_location.county.holder ?= { + OR = { + government_has_flag = government_is_tribal + government_has_flag = government_is_nomadic + government_has_flag = government_is_herder + } + religion = { is_in_family = rf_pagan } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_holysite_tribal.dds" + environment = "environment_event_garden" + ambience = "event:/DLC/FP1/SFX/Events/event_temple" + } + + background = { #Dharmic (Outdoors) + trigger = { + scope:activity ?= { + has_current_phase_any_debate_trigger = yes + activity_location = { + OR = { + culture = { has_graphical_india_culture_group_trigger = yes } + steppe_building_gfx_use_indian_trigger = yes + faith.religion ?= { is_in_family = rf_eastern } + } + } + } + } + texture = "gfx/interface/illustrations/event_scenes/ep2_holysite_indian.dds" + environment = "environment_indian_holy_site" + ambience = "event:/DLC/EP2/SFX/Events/Backgrounds/evn_background_jungle" + } + background = { # Western generic fallback + texture = "gfx/interface/illustrations/event_scenes/temple.dds" + environment = "environment_event_temple" + ambience = "event:/SFX/Events/Backgrounds/temple_generic" + } + + window_characters = { + player_traveling = { + camera = camera_activity_horse + effect = { + scope:player ?= { + if = { + limit = { + NOT = { + location = scope:activity.activity_location + } + } + add_to_list = characters + } + } + } + scripted_animation = { + triggered_animation = { + trigger = { + scope:character.location = { is_sea_province = yes } + } + animation = { idle } + } + triggered_animation = { + trigger = { scope:character = { has_trait = impatient } } + animation = { jockey_gallop } + } + animation = jockey_walk + } + } + player_guest = { + camera = camera_event_center + effect = { + scope:player ?= { + if = { + limit = { + this != scope:activity.activity_host + location = scope:activity.activity_location + } + add_to_list = characters + } + } + + } + scripted_animation = ecumenical_council_lay_guest_animation + } + non_clergy_guest_travelling = { + camera = camera_activity_horse + + effect = { + if = { + limit = { + scope:host.location = scope:activity.activity_location + } + ordered_attending_character = { + limit = { + is_clergy = no + this != scope:host + location != scope:activity.activity_location + } + order_by = { + value = 1 + add = { + value = highest_held_title_tier + multiply = 15 + } + add = { + value = domain_size + multiply = 3 + } + add = realm_size + } + add_to_list = characters + } + } + } + scripted_animation = { + triggered_animation = { + trigger = { + scope:character.location = { is_sea_province = yes } + } + animation = { idle } + } + triggered_animation = { + trigger = { scope:character = { has_trait = impatient } } + animation = { jockey_gallop } + } + animation = jockey_walk + } + } + clergy_guest_travelling = { + camera = camera_activity_horse + + effect = { + if = { + limit = { + scope:host.location = scope:activity.activity_location + } + ordered_attending_character = { + limit = { + is_clergy = yes + this != scope:host + location != scope:activity.activity_location + } + order_by = { + value = 1 + add = { + value = highest_held_title_tier + multiply = 15 + } + } + add_to_list = characters + } + } + } + scripted_animation = { + triggered_animation = { + trigger = { + scope:character.location = { is_sea_province = yes } + } + animation = { idle } + } + triggered_animation = { + trigger = { scope:character = { has_trait = impatient } } + animation = { jockey_gallop } + } + animation = jockey_walk + } + } + # Clerical guests stand to the host's right (list before host, matching coronation/feast) + clergy_guest_arrived = { + camera = camera_body_right + + effect = { + if = { + limit = { + scope:host.location = scope:activity.activity_location + } + ordered_attending_character = { + limit = { + is_clergy = yes + this != scope:host + location = scope:activity.activity_location + } + order_by = { + value = 1 + add = { + value = highest_held_title_tier + multiply = 15 + } + } + add_to_list = characters + } + } + } + scripted_animation = ecumenical_council_clergy_guest_animation_alt + } + clergy_guest = { + camera = camera_body_right + + effect = { + if = { + limit = { + scope:host.location = scope:activity.activity_location + } + ordered_attending_character = { + limit = { + is_clergy = yes + this != scope:host + location = scope:activity.activity_location + } + order_by = { + value = 1 + add = { + value = highest_held_title_tier + multiply = 15 + } + } + check_range_bounds = no + position = 1 + add_to_list = characters + } + } + } + scripted_animation = ecumenical_council_clergy_guest_animation + } + host = { + camera = camera_body + effect = { + if = { + limit = { scope:host = { location = scope:activity.activity_location } } + } + scope:host ?= { add_to_list = characters } + } + scripted_animation = ecumenical_council_host_animation + } + travel_host = { + camera = camera_event_horse_left + + effect = { + if = { + limit = { + NOT = { + scope:host.location = scope:activity.activity_location + } + } + scope:host = { + add_to_list = characters + } + } + } + + scripted_animation = { + triggered_animation = { + trigger = { + scope:character.location = { is_sea_province = yes } + } + animation = { idle } + } + triggered_animation = { + trigger = { scope:character = { has_trait = impatient } } + animation = { jockey_gallop } + } + animation = jockey_walk + } + } + # Lay guests stand to the host's left + non_clergy_guest_arrived = { + camera = camera_body_left_slight + + effect = { + if = { + limit = { + scope:host.location = scope:activity.activity_location + } + ordered_attending_character = { + limit = { + is_clergy = no + this != scope:host + location = scope:activity.activity_location + } + order_by = { + value = 1 + add = { + value = highest_held_title_tier + multiply = 15 + } + add = { + value = domain_size + multiply = 3 + } + add = realm_size + } + add_to_list = characters + } + } + } + scripted_animation = ecumenical_council_lay_guest_animation_alt + } + non_clergy_guest = { + camera = camera_body_left + + effect = { + if = { + limit = { + scope:host.location = scope:activity.activity_location + } + ordered_attending_character = { + limit = { + is_clergy = no + this != scope:host + location = scope:activity.activity_location + } + order_by = { + value = 1 + add = { + value = highest_held_title_tier + multiply = 15 + } + add = { + value = domain_size + multiply = 3 + } + add = realm_size + } + check_range_bounds = no + position = 1 + add_to_list = characters + } + } + } + scripted_animation = ecumenical_council_lay_guest_animation + } + } +} diff --git a/common/scripted_effects/pam_ecumenical_council_effects.txt b/common/scripted_effects/pam_ecumenical_council_effects.txt new file mode 100644 index 000000000..7dd75a802 --- /dev/null +++ b/common/scripted_effects/pam_ecumenical_council_effects.txt @@ -0,0 +1,1437 @@ +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 + } +} diff --git a/localization/english/replace/religion/zz_NEOW_ecumenical_councils_l_english.yml b/localization/english/replace/religion/zz_NEOW_ecumenical_councils_l_english.yml index 323b81cd9..7e88e8695 100644 --- a/localization/english/replace/religion/zz_NEOW_ecumenical_councils_l_english.yml +++ b/localization/english/replace/religion/zz_NEOW_ecumenical_councils_l_english.yml @@ -11,8 +11,8 @@ game_concept_ecumenical_council_conservative: "Opposing Delegate" game_concept_ecumenical_council_conservatives: "Opposing Delegates" game_concept_ecumenical_council_conservative_desc: "[activity_guests_short|E] who oppose the particular text or disciplinary proposal introduced by the [activity_host_short|E] at the [ecumenical_council|E]. They may object on theological, canonical, pastoral, or procedural grounds; their position is not by itself a judgment of orthodoxy.\n\nTheir counterparts are the [ec_innovators|E], who support the proposal. These are positions in a conciliar deliberation, not permanent factions.$game_concept_ecumenical_council_groups_help$" - activity_ecumenical_council_desc: "Summon the bishops and other eminent representatives of the Church to a solemn synod. Let the Holy Scriptures, the holy Fathers, and the canons be read, and disputed questions examined, so that the Church may speak with one mind.\n\nWill we seek the concord of the Apostolic Council at Jerusalem, or permit worldly rivalries to divide those assembled?" - activity_ecumenical_council_selection_tooltip: "Convene a solemn assembly of bishops and other representatives to examine questions of doctrine and ecclesiastical discipline.\n\nPossible Results:\n$BULLET_WITH_TAB$[core_tenet|E] decisions\n$BULLET_WITH_TAB$[doctrine|E] decisions\n$BULLET_WITH_TAB$@fervor_icon![fervor|E]\n$BULLET_WITH_TAB$@piety_icon![piety|E]\n$BULLET_WITH_TAB$[opinion|E]\n$BULLET_WITH_TAB$[GetTrait('lifestyle_scholar').GetName( GetNullCharacter )] [trait|E] or [trait_level_track_xp|E]" + activity_ecumenical_council_desc: "[SelectLocalization( ObjectsEqual( GetPlayer.GetFaith.GetReligion.GetName, GetReligionByKey( 'eastern_orthodox_religion' ).GetName ), 'neow_unified_synod_description', 'neow_original_activity_ecumenical_council_desc' )]" + activity_ecumenical_council_selection_tooltip: "[SelectLocalization( ObjectsEqual( GetPlayer.GetFaith.GetReligion.GetName, GetReligionByKey( 'eastern_orthodox_religion' ).GetName ), 'neow_unified_synod_selection_tooltip', 'neow_original_activity_ecumenical_council_selection_tooltip' )]" activity_ecumenical_council_guest_help_text: "Members of the assembly may advocate for or against proposed rulings concerning [core_tenets|E] and [doctrines|E]." ecumenical_council_start_log: "[CHARACTER.GetTitledFirstName] welcomed those assembled, called for prayer, and formally opened the synod" ecumenical_council_phase_summons_desc: "Bishops, clerics, and the other summoned representatives gather for the opening of the synod." @@ -111,16 +111,16 @@ ecumenical_council_events.doctrine.intro: "The final matter before the council concerns [ec_debate_topic_3.GetGroup.GetName( ROOT.GetCharacter.GetFaith )]. The standing discipline is [ec_debate_topic_3.GetDescriptiveName( ROOT.GetCharacter.GetFaith )]. [lead_portrait.GetTitledFirstName] invites the bishops and appointed representatives to examine the question:\n\n" ecumenical_council_events.doctrine.chaplain_suggestion: "\n\n"This proposal deserves examination against the earlier conciliar decisions and pastoral practice," [court_chaplain.GetName] advises." ecumenical_council_events.0031.desc.proposal: ""[host.GetTitledFirstName] submits [ec_proposed_doctrine.GetDescriptiveName( ROOT.GetCharacter.GetFaith )] to the judgment of the council."" - ecumenical_council_events.0040.t: "The Closing of the Holy Synod" + ecumenical_council_events.0040.t: "[SelectLocalization( ObjectsEqual( GetPlayer.GetFaith.GetReligion.GetName, GetReligionByKey( 'eastern_orthodox_religion' ).GetName ), 'neow_unified_synod_closing_title', 'neow_original_ecumenical_council_events.0040.t' )]" ecumenical_council_events.0040.desc: "The deliberations are concluded. The fathers review the decrees and canons to be promulgated, and those in agreement prepare to affirm them." ecumenical_council_events.0040.desc.change: "The council has adopted determinations on faith or discipline. Its judgments will be proclaimed to the clergy and faithful." ecumenical_council_events.0040.desc.status_quo: "After examination, the assembly has not adopted the proposed alterations. The existing rulings remain in force." - ecumenical_council_events.0041.t: "The Closing of the Holy Synod" + ecumenical_council_events.0041.t: "[SelectLocalization( ObjectsEqual( GetPlayer.GetFaith.GetReligion.GetName, GetReligionByKey( 'eastern_orthodox_religion' ).GetName ), 'neow_unified_synod_closing_title', 'neow_original_ecumenical_council_events.0041.t' )]" ecumenical_council_events.0041.desc: "After hearing testimony and examining the proposed determinations, the assembly concludes its deliberations." ecumenical_council_events.0041.desc.change: "Under the presidency of [host.GetName], the council has adopted decrees or disciplinary canons for [host.GetFaith.GetName]. Their promulgation and reception now follow." ecumenical_council_events.0041.desc.status_quo: "The council has not adopted the proposals placed before it by [host.GetName]. The existing rulings of [host.GetFaith.GetName] remain in force." ecumenical_council_events.schism_crisis_end: "\n\nThe conciliar acts are read aloud and dispatched to the churches for examination, reception, and implementation." - ecumenical_council_events.0080.t: "The Synodal Judgment" + ecumenical_council_events.0080.t: "[SelectLocalization( ObjectsEqual( GetPlayer.GetFaith.GetReligion.GetName, GetReligionByKey( 'eastern_orthodox_religion' ).GetName ), 'neow_unified_synod_vote_title', 'neow_original_ecumenical_council_events.0080.t' )]" ecumenical_council_events.0080.desc.passed: "The decisions have been recorded. [lead_portrait.GetTitledFirstName] addresses the assembly:\n\n"Having examined the testimony, the Scriptures, and the tradition handed down to us, the fathers assent to the proposed determination. Let the text be entered in the acts of the council."" ecumenical_council_events.0080.desc.failed: "The decisions have been recorded. [lead_portrait.GetTitledFirstName] addresses the assembly:\n\n"The proposal has not received sufficient assent. No new determination shall be promulgated on this question."" ecumenical_council_events.0080.a: "Let the acts record this judgment." @@ -243,3 +243,82 @@ ecumenical_council_events_josh.0025.b: "Reject the petition on doctrinal grounds." ecumenical_council_events_josh.0025.c: "Propose a separate theological examination." ecumenical_council_events_josh.0025.d: "Decline the petition with due courtesy." + neow_pan_faith_synod_conclusion.intro: "The deliberations of the synod draw to a close. The decrees and canons adopted by the assembled fathers shall be proclaimed among all the rites." + neow_pan_faith_synod_events.0080.t:0 "The Judgment of the Holy Synod" + neow_pan_faith_synod_events.0080.desc.passed:0 "The bishops have heard the arguments and their judgment is recorded. The proposed determination has received the assent of the fathers. Its decree shall be proclaimed among the Churches, and every rite shall observe the ruling." + neow_pan_faith_synod_events.0080.desc.failed:0 "The bishops have considered the question, but the proposed determination has not received their assent. No new canon shall be promulgated, and the received discipline remains in force." + neow_pan_faith_synod_events.0080.a:0 "Let the decree be entered in the acts." + neow_pan_faith_synod_vote_tally_tt: "Assent: #V [neow_synod_ayes|0]#!; Withhold assent: #V [neow_synod_nays|0]#!" + activity_pan_faith_synod_host_an_a:0 "a" + activity_pan_faith_synod_host_an:0 "a" + activity_pan_faith_synod:0 "Pan-Orthodox Synod" + activity_pan_faith_synod_desc:0 "The bishops and lawful representatives of the Eastern Orthodox Church are summoned to examine the common faith and ecclesiastical order. The Scriptures, the holy Fathers, and the canons shall be heard, that the judgement of the assembled fathers may preserve the concord of the Churches and the tradition handed down to them." + activity_pan_faith_synod_host_desc:0 "$BULLET_WITH_TAB$Two questions concerning [core_tenets|E] may be settled\n$BULLET_WITH_TAB$One [doctrine|E] may be changed throughout every rite\n$BULLET_WITH_TAB$@fervor_icon![fervor|E] may be increased\n$BULLET_WITH_TAB$May gain @piety_icon![piety|E]\n$BULLET_WITH_TAB$May gain @opinion_icon![opinion|E] of attending characters\n$BULLET_WITH_TAB$May gain progress towards the Scholar [trait|E]" + activity_pan_faith_synod_guest_desc:0 "$activity_pan_faith_synod_host_desc$" + activity_pan_faith_synod_selection_tooltip:0 "Convene a Pan-Orthodox Synod to examine two questions concerning Tenets and one concerning Doctrine. Approved doctrinal rulings are observed by every Rite of the Faith. The synod requires twice the Piety of an Ecumenical Council and may be convened more frequently." + activity_pan_faith_synod_guest_help_text:0 "The gathered bishops and their delegates may assent to or oppose each of the three proposed determinations. Approved doctrines bind the Rites of their common Faith." + activity_pan_faith_synod_destination_selection:0 "The [holding|E] must be an important religious centre of the faith." + activity_pan_faith_synod_predicted_cost:0 "A Pan-Orthodox Synod requires twice the Piety of an Ecumenical Council." + neow_pan_orthodox_synod_decree_log:0 "The Pan-Orthodox Synod delivered a judgment upon a question of doctrine." + neow_pan_orthodox_synod_start_log:0 "The bishops and representatives of the Churches assemble for a Pan-Orthodox Synod." + TRAVEL_NAME_FOR_activity_pan_faith_synod:0 "Journey to the Pan-Orthodox Synod" + activity_pan_faith_synod_travel_name:0 "Journey to the Pan-Orthodox Synod" + activity_pan_faith_synod_host:0 "Convene a Pan-Orthodox Synod" + activity_pan_faith_synod_phase_summons:0 "Summoning the Bishops" + activity_pan_faith_synod_event.title:0 "Pan-Orthodox Synod" + neow_pan_faith_synod_events.0090.t:0 "The Language of Divine Worship" + neow_pan_faith_synod_events.0090.desc:0 "The fathers turn to the language in which the divine offices are celebrated. The ancient tongues of the Churches bear the Scriptures, the hymns, and the prayers entrusted to them. Each proposal is to be weighed against the custom of the faithful and the good order of the Church." + neow_pan_faith_synod_events.0090.none:0 "Leave the choice of language to the Churches." + neow_pan_faith_synod_events.0090.latin:0 "Let the Churches celebrate in Latin." + neow_pan_faith_synod_events.0090.koine:0 "Let the Churches celebrate in Koine Greek." + neow_pan_faith_synod_events.0090.church_slavonic:0 "Let the Churches celebrate in Church Slavonic." + neow_pan_faith_synod_events.0090.irish:0 "Let the Churches celebrate in Liturgical Irish." + neow_pan_faith_synod_events.0090.armenian:0 "Let the Churches celebrate in Classical Armenian." + neow_pan_faith_synod_events.0090.classical_georgian:0 "Let the Churches celebrate in Classical Georgian." + neow_pan_faith_synod_events.0090.church_romanian:0 "Let the Churches celebrate in Church Romanian." + neow_pan_faith_synod_events.0090.arabic:0 "Let the Churches celebrate in Arabic." + neow_pan_faith_synod_events.0090.hebrew:0 "Let the Churches celebrate in Hebrew." + neow_pan_faith_synod_events.0090.esperanto:0 "Let the Churches celebrate in Esperanto." + neow_pan_orthodox_synod_second_doctrine:0 "Second Doctrinal Question" + ecumenical_council_events.0074.t:0 "The Language of Divine Worship" + ecumenical_council_events.0074.desc:0 "The fathers consider the language in which the divine offices are celebrated. The Scriptures, the hymns, and the ancient prayers are entrusted to the Churches in many tongues. The assembly shall hear the proposals and judge what best serves the order of worship and the instruction of the faithful." + neow_ecumenical_council_adopts_liturgical_language_tt:0 "The Council adopts a new liturgical language for the hosting Rite." + ecumenical_council_events.0074.none:0 "Let each Church retain its received liturgical tongue." + ecumenical_council_events.0074.latin:0 "Let the divine offices be celebrated in Latin." + ecumenical_council_events.0074.koine:0 "Let the divine offices be celebrated in Koine Greek." + ecumenical_council_events.0074.church_slavonic:0 "Let the divine offices be celebrated in Church Slavonic." + ecumenical_council_events.0074.irish:0 "Let the divine offices be celebrated in Liturgical Irish." + ecumenical_council_events.0074.armenian:0 "Let the divine offices be celebrated in Classical Armenian." + ecumenical_council_events.0074.classical_georgian:0 "Let the divine offices be celebrated in Classical Georgian." + ecumenical_council_events.0074.church_romanian:0 "Let the divine offices be celebrated in Church Romanian." + ecumenical_council_events.0074.arabic:0 "Let the divine offices be celebrated in Arabic." + ecumenical_council_events.0074.hebrew:0 "Let the divine offices be celebrated in Hebrew." + ecumenical_council_events.0074.esperanto:0 "Let the divine offices be celebrated in Esperanto." + activity_ecumenical_council_host_an_a: "[SelectLocalization( ObjectsEqual( GetPlayer.GetFaith.GetReligion.GetName, GetReligionByKey( 'eastern_orthodox_religion' ).GetName ), 'neow_unified_synod_article', 'neow_unified_council_article' )]" + activity_ecumenical_council: "[SelectLocalization( ObjectsEqual( GetPlayer.GetFaith.GetReligion.GetName, GetReligionByKey( 'eastern_orthodox_religion' ).GetName ), 'neow_unified_synod_name', 'neow_original_activity_ecumenical_council' )]" + activity_ecumenical_council_host_desc: "[SelectLocalization( ObjectsEqual( GetPlayer.GetFaith.GetReligion.GetName, GetReligionByKey( 'eastern_orthodox_religion' ).GetName ), 'neow_unified_synod_host_desc', 'neow_original_activity_ecumenical_council_host_desc' )]" + activity_ecumenical_council_guest_desc: "[SelectLocalization( ObjectsEqual( GetPlayer.GetFaith.GetReligion.GetName, GetReligionByKey( 'eastern_orthodox_religion' ).GetName ), 'neow_unified_synod_host_desc', 'neow_original_activity_ecumenical_council_guest_desc' )]" + ecumenical_council_start_log_title: "[SelectLocalization( ObjectsEqual( GetPlayer.GetFaith.GetReligion.GetName, GetReligionByKey( 'eastern_orthodox_religion' ).GetName ), 'neow_unified_synod_start_log_title', 'neow_original_ecumenical_council_start_log_title' )]" + ecumenical_council_conclusion.intro: "[SelectLocalization( ObjectsEqual( GetPlayer.GetFaith.GetReligion.GetName, GetReligionByKey( 'eastern_orthodox_religion' ).GetName ), 'neow_unified_synod_conclusion_intro', 'neow_original_ecumenical_council_conclusion.intro' )]" + neow_original_activity_ecumenical_council: "Ecumenical Council" + neow_original_activity_ecumenical_council_desc: "Summon the bishops and other eminent representatives of the Church to a solemn synod. Let the Holy Scriptures, the holy Fathers, and the canons be read, and disputed questions examined, so that the Church may speak with one mind.\n\nWill we seek the concord of the Apostolic Council at Jerusalem, or permit worldly rivalries to divide those assembled?" + neow_original_activity_ecumenical_council_host_desc: "$BULLET_WITH_TAB$[core_tenets|E] may be discovered, approved, forbidden, or changed\n$BULLET_WITH_TAB$[doctrines|E] may be changed\n$BULLET_WITH_TAB$@fervor_icon![fervor|E] may be increased\n$BULLET_WITH_TAB$May gain @piety_icon![piety|E]\n$BULLET_WITH_TAB$May gain @opinion_icon![opinion|E] of attending characters\n$BULLET_WITH_TAB$[GetTrait('lifestyle_scholar').GetName( GetNullCharacter )] [trait|E] or [trait_level_track_xp|E]" + neow_original_activity_ecumenical_council_guest_desc: "$activity_ecumenical_council_host_desc$" + neow_original_activity_ecumenical_council_selection_tooltip: "Convene a solemn assembly of bishops and other representatives to examine questions of doctrine and ecclesiastical discipline.\n\nPossible Results:\n$BULLET_WITH_TAB$[core_tenet|E] decisions\n$BULLET_WITH_TAB$[doctrine|E] decisions\n$BULLET_WITH_TAB$@fervor_icon![fervor|E]\n$BULLET_WITH_TAB$@piety_icon![piety|E]\n$BULLET_WITH_TAB$[opinion|E]\n$BULLET_WITH_TAB$[GetTrait('lifestyle_scholar').GetName( GetNullCharacter )] [trait|E] or [trait_level_track_xp|E]" + neow_original_ecumenical_council_start_log_title: "The Ecumenical Council Starts" + neow_original_ecumenical_council_conclusion.intro: "The Council draws to an end." + neow_unified_synod_name: "Pan-Orthodox Synod" + neow_unified_synod_description: "The bishops and lawful representatives of the Eastern Orthodox Church gather to consider the common faith and ecclesiastical order. The Scriptures, the holy Fathers, and the received canons shall be heard, that the judgements of the assembled bishops may preserve concord among the Churches." + neow_unified_synod_host_desc: "$BULLET_WITH_TAB$Two questions concerning [core_tenets|E] may be settled\n$BULLET_WITH_TAB$One [doctrine|E] may be changed throughout every rite of the faith\n$BULLET_WITH_TAB$@fervor_icon![fervor|E] may be increased\n$BULLET_WITH_TAB$May gain @piety_icon![piety|E]\n$BULLET_WITH_TAB$May gain @opinion_icon![opinion|E] of attending characters\n$BULLET_WITH_TAB$May gain progress towards the Scholar [trait|E]" + neow_unified_synod_selection_tooltip: "Convene the bishops of the Eastern Orthodox Church to examine two matters concerning tenets and one concerning doctrine. Adopted doctrinal decrees bind every rite of the hosting faith." + neow_unified_synod_start_log_title: "The Pan-Orthodox Synod Convenes" + neow_unified_synod_conclusion_intro: "The Pan-Orthodox Synod concludes its deliberations." + neow_regular_council_faith_cooldown_tt: "Your faith has already held an Ecumenical Council within the past 25 years" + neow_unified_synod_article: "a" + neow_unified_council_article: "an" + neow_original_ecumenical_council_events.0040.t: "The Closing of the Holy Synod" + neow_original_ecumenical_council_events.0041.t: "The Closing of the Holy Synod" + neow_original_ecumenical_council_events.0080.t: "The Synodal Judgment" + neow_unified_synod_closing_title: "The Closing of the Pan-Orthodox Synod" + neow_unified_synod_vote_title: "The Synodal Judgement" + neow_original_activity_ecumenical_council_host_an_a: "an"