From c2960a7db9257aae23f7c1cd40e4fe275682ffca Mon Sep 17 00:00:00 2001 From: Magpie490 Date: Mon, 2 Jun 2025 21:33:11 +0100 Subject: [PATCH] fix --- common/governments/00_government_types.txt | 2 +- .../00_diarchy_scripted_triggers.txt | 869 ++++++++++++++++++ 2 files changed, 870 insertions(+), 1 deletion(-) create mode 100644 common/scripted_triggers/00_diarchy_scripted_triggers.txt diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index fa8053b9..14b553c6 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -275,7 +275,7 @@ administrative_government = { rulers_should_have_dynasty = yes dynasty_named_realms = no royal_court = yes - administrative = yes + #administrative = yes landless_playable = yes legitimacy = yes #state_faith = yes diff --git a/common/scripted_triggers/00_diarchy_scripted_triggers.txt b/common/scripted_triggers/00_diarchy_scripted_triggers.txt new file mode 100644 index 00000000..52bd0a8f --- /dev/null +++ b/common/scripted_triggers/00_diarchy_scripted_triggers.txt @@ -0,0 +1,869 @@ +############# +# Diarchy Scripted Triggers +############# + +################################################## +# General Triggers + +character_hates_scope_due_to_strife_guts_trigger = { + # We've got to share a direct liege for strife to be valid. + exists = liege + exists = $TARGET$.liege + liege = $TARGET$.liege + # And $TARGET$ must have accumulated enough strife to aggravate me (which we modulate up or down a little with some traits). + $TARGET$.strife_opinion >= strife_harm_threshold_value + # Finally, there has to be at least _some_ love lost. + opinion = { + target = $TARGET$ + value < 0 + } +} + +# This is hooked up to the is_diarch_valid rule, invalidating them if it returns false, referenced by Code. +is_diarch_valid_trigger = { + # Basics. + is_alive = yes + OR = { + # We always want adults... + is_adult = yes + # ... _unless_ this is junior emperor, they're always children. + liege ?= { has_diarchy_parameter = diarchy_type_is_junior_emperorship } + } + # Event blocks. + OR = { + is_ai = no + NOT = { has_character_flag = cannot_be_diarch } + } + trigger_if = { + limit = { + exists = liege + } + # Being in a diarchy yourself will disable you, outside of co-rulerships. + trigger_if = { + limit = { + NOT = { + liege = { has_diarchy_active_parameter = diarchy_is_co_rulership } + } + } + # If you're in an entrenched regency for some reason, you can't manage a regency yourself. + NOT = { has_diarchy_parameter = diarchy_type_is_entrenched_regency } + # You need to be mentally & physically sound, to some degree. + regency_for_personal_reasons_trigger = no + } + # Diarchy-specific checks. + ## Viziers. + trigger_if = { + limit = { + liege = { has_diarchy_parameter = diarchy_is_vizierate } + } + # Must match their liege's gender preference. + diarch_matches_liege_faith_gender_preference_trigger = yes + # Viziers aren't big land-owners. + ## Not in this way, at least. + highest_held_title_tier <= tier_barony + } + # If you have somehow managed to get invited to/start an activity outside of your realm (e.g., you're the spouse in a grand wedding), then yeah, you forfeit your position. + ## ... unless you're a co-ruler. + trigger_if = { + limit = { + NOT = { + liege = { has_diarchy_active_parameter = diarchy_is_co_rulership } + } + } + # We cannot be at war with our liege. + NOT = { is_at_war_with = liege } + NAND = { + # Is it redundant to check twice? + ## Yes. + ### Do the machine spirits demand this thoroughness of us? + #### Also yes. + ##### Do not ask why the God-Machine commands it, merely be glad that it commanded it of you. + is_travelling = yes + exists = current_travel_plan + # We check your liege so that you can attend business within the realm easily. + ## Schemes are their own special lil guys so we take care of them separately. + trigger_if = { + limit = { + exists = scope:owner + exists = scope:target + } + travel_would_cause_regency_trigger = { REALM_HOLDER = scope:owner.liege } + } + ## Else, we're an ordinary, gods-fearing root scope, so use that. + trigger_else = { + travel_would_cause_regency_trigger = { REALM_HOLDER = this.liege } + } + } + } + } +} + +# This is hooked up to the is_diarch_able rule, referenced by Code. +is_diarch_able_trigger = { + # You can't possibly manage someone else's realm from prison. + is_imprisoned = no + # You need to be mentally & physically sound, to some degree. + ## Mostly, this will invalidate, but it won't for co-rulerships so we just disable them here. + regency_for_personal_reasons_trigger = no + # You'd clearly be preoccupied. + trigger_if = { + limit = { exists = involved_activity } + save_temporary_scope_as = diarch_temp + involved_activity.activity_location.county.holder = { + NOR = { + this = scope:diarch_temp.liege + NOT = { + any_liege_or_above = { this = scope:diarch_temp.liege } + } + } + } + } + # If you're in a diarchy for any other reason, you need to chill. + NOT = { has_active_diarchy = yes } +} + +# And *this* needs to be added to guest activity intents to keep diarchs from showing up to the same parties as their liege. + bannable_serving_diarch_trigger = { + liege?= { NOT = { is_landless_adventurer = yes } } + OR = { + # Diarchs with official responsibilities can't come out to play. + is_diarch = yes + is_designated_diarch = yes + # Assumed diarchs don't get to either if they're the AI, as the player might be planning around them & the AI may have designated to avoid people after if it'd known they were going to welch. + ## Assumed-diarch players can make an intelligent choice on whether they want to go to events or not. + AND = { + is_ai = yes + is_diarchy_successor = yes + } + } +} + +diarch_has_situational_loyalty_trigger = { + diarch_loyalty > diarch_loyalty_visibly_disloyal_threshold + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold +} + +diarch_callable_in_internal_war_trigger = { + OR = { + # CBs where the liege doesn't (necessarily) control an internal attacker. + using_cb = peasant_war + using_cb = populist_war + # All other internal CBs. + primary_attacker = { + any_liege_or_above = { this = scope:actor } + } + } +} + +diarch_matches_liege_faith_gender_preference_trigger = { + OR = { + # Female preference. + AND = { + is_female = yes + liege.faith = { has_doctrine = doctrine_gender_female_dominated } + } + # Male preference. + AND = { + is_male = yes + liege.faith = { has_doctrine = doctrine_gender_male_dominated } + } + # Equality. + liege.faith = { has_doctrine = doctrine_gender_equal } + } +} + +################################################## +# Setup Triggers + +basic_eligible_for_diarchy_trigger = { + is_landed_or_landless_administrative = yes + NOT = { government_has_flag = government_is_landless_adventurer } # Laamps don't use diarchs + highest_held_title_tier >= tier_county + NOT = { has_active_diarchy = yes } +} + +regency_for_personal_reasons_trigger = { + custom_tooltip = { + text = regency_for_personal_reasons_trigger.tt.cannot_govern_by_themselves + OR = { + AND = { + is_adult = no + NOT = { + liege = { has_diarchy_parameter = diarchy_type_is_junior_emperorship } + } + } + is_incapable = yes + has_character_modifier = isolating_modifier + } + } +} + +imprisonment_would_cause_regency_trigger = { + custom_tooltip = { + text = imprisonment_would_cause_regency_trigger.tt.imprisoned_abroad + is_imprisoned = yes + # Doesn't count if your gaoler is your vassal. + save_temporary_scope_as = liege_temp + NOT = { + any_vassal_or_below = { this = scope:liege_temp.imprisoner } + } + } +} + +travel_would_cause_regency_trigger = { + OR = { + # Travelling one-way. + AND = { + # Make sure that we _aren't_ going bilaterally. + NOT = { current_travel_plan.final_destination_province = current_travel_plan.departure_location } + # Then check that we're actually going outside of the realm. + current_travel_plan.final_destination_province.county.holder = { + NOR = { + any_liege_or_above = { this = $REALM_HOLDER$ } + this = $REALM_HOLDER$ + } + } + } + # Travelling in a circle. + AND = { + # Make sure that we _are_ going bilaterally. + current_travel_plan.final_destination_province = current_travel_plan.departure_location + # Check the next destination province instead. + ## We put a break in to check if there _is_ a county because you might be travelling through the ocean. + current_travel_plan.next_destination_province.county ?= { + holder = { + NOR = { + any_liege_or_above = { this = $REALM_HOLDER$ } + this = $REALM_HOLDER$ + } + } + } + } + } +} + +can_leave_diarchy_trigger = { + trigger_if = { + limit = { is_imprisoned = yes } + imprisonment_would_cause_regency_trigger = no + } + is_travelling = no + regency_for_personal_reasons_trigger = no +} + +regent_would_remain_loyal_after_death_trigger = { + is_ai = yes + diarch_loyalty_score_type_regency_value >= diarch_loyalty_visibly_loyal_threshold +} + +################################################## +# Character Interactions + +diarch_cannot_be_disabled_trigger = { + custom_description = { + text = diarch_interactions_tt_is_able + subject = $DIARCH$ + $DIARCH$ = { is_diarch_able_trigger = yes } + } +} + +diarch_legal_meddling_claimable_title_trigger = { + custom_description = { + text = "you_must_not_have_a_claim_on_the_title" + NOT = { + any_claimant = { this = $ACTOR$ } + } + } + custom_description = { + text = "character_interactions_not_rel_head_title" + is_head_of_faith = no + } + custom_tooltip = { + text = title_must_be_county_tier.tt + tier = tier_county + } + # This is mostly here to stop people from not claiming titles because they have valid titles that are _outside_ the sub-realm. + custom_tooltip = { + text = title_must_be_same_realm.tt + holder = { + any_liege_or_above = { this = $ACTOR$.liege } + } + } +} + +diarch_syphon_treasury_embezzlement_modifiers_trigger = { + OR = { + has_county_modifier = syphon_treasury_massive_sum_modifier + has_county_modifier = syphon_treasury_large_sum_modifier + has_county_modifier = syphon_treasury_medium_sum_modifier + has_county_modifier = syphon_treasury_small_sum_modifier + } +} + +diarch_shift_privileges_valid_target_title_trigger = { + NOR = { + has_county_modifier = shift_privileges_monopolies_sold_modifier + has_county_modifier = shift_privileges_scutage_exemptions_modifier + has_county_modifier = shift_privileges_conflicting_deeds_modifier + } +} + +diarch_swing_scales_valid_shared_hof_trigger = { + # You must share a HoF to be able to petition one. + custom_tooltip = { + text = swing_scales_currency_interaction.tt.no_shared_hof + exists = scope:actor.faith.religious_head + exists = scope:recipient.faith.religious_head + scope:actor.faith.religious_head = scope:recipient.faith.religious_head + } + # And opinions've gotta line up. + trigger_if = { + limit = { exists = scope:actor.faith.religious_head } + # They must like you. + custom_tooltip = { + text = swing_scales_currency_interaction.tt.hof_needs_to_like_you_more + scope:actor.faith.religious_head = { + opinion = { + target = scope:actor + value >= high_positive_opinion + } + } + } + # And not like scope:recipient too much. + custom_tooltip = { + text = swing_scales_currency_interaction.tt.hof_needs_to_like_them_less + scope:actor.faith.religious_head = { + opinion = { + target = scope:recipient + value <= medium_positive_opinion + } + } + } + # Plus scope:recipient can't have anything over them. + custom_tooltip = { + text = swing_scales_currency_interaction.tt.hof_refuses_to_cross_recipient + NOT = { + scope:recipient = { has_strong_hook = scope:actor.faith.religious_head } + } + } + } +} + +diarch_liege_wants_to_stiff_regent_trigger = { + OR = { + has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:recipient } + opinion = { + target = scope:recipient + value <= very_high_negative_opinion + } + } +} + +cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + $PRISONER$ = { + trigger_if = { + limit = { + has_variable = imprisoned_by_diarch + exists = $PRISONER$.liege + $REGENT$ = { is_diarch_of_target = $PRISONER$.liege } + } + custom_tooltip = { + text = overthrow_regent_scheme_interaction.tt.cannot_release + NOR = { + var:imprisoned_by_diarch = $PRISONER$.imprisoner + var:imprisoned_by_diarch ?= $PRISONER$.liege.diarch + } + } + } + } +} + +interaction_actor_is_liege_with_vizierate_trigger = { + scope:recipient.liege ?= scope:actor + scope:actor = { has_diarchy_active_parameter = diarchy_is_vizierate } +} + +is_valid_basic_candidate_for_vizier_trigger = { + is_diarch_valid_trigger = yes + diarch_matches_liege_faith_gender_preference_trigger = yes +} + +# I don't have a problem, I can quit scripted triggers any time I want. +## But more seriously: mostly just here for brevity/not wanting to re-do script after I had to add a second scripted trigger targeting top lieges. +character_has_co_emperorship_trigger = { + OR = { + has_diarchy_parameter = diarchy_type_is_co_emperorship + has_diarchy_parameter = diarchy_type_is_junior_emperorship + } +} +liege_has_co_emperorship_trigger = { + liege ?= { character_has_co_emperorship_trigger = yes } +} +top_liege_has_co_emperorship_trigger = { + liege ?= { character_has_co_emperorship_trigger = yes } +} +appointment_interactions_recipient_is_suitable_co_emperor_trigger = { + scope:actor = { top_liege_has_co_emperorship_trigger = yes } + OR = { + scope:recipient = { is_diarch_of_target = scope:secondary_recipient.top_liege } + scope:secondary_recipient = { is_diarch_of_target = scope:actor.top_liege } + } + # Don't get the bonus just because we're promoting our courtiers in our realm. + trigger_if = { + limit = { + NOT = { scope:target = scope:actor.primary_title } + } + NOT = { scope:target.holder = scope:actor } + } +} + +may_appoint_co_emperors_trigger = { + highest_held_title_tier >= tier_empire + has_realm_law = acclamation_succession_law + OR = { + has_title = title:e_byzantium + has_title = title:e_roman_empire + culture = { has_cultural_parameter = unlock_co_emperors } + } +} + +may_appoint_co_monarchs_trigger = { + highest_held_title_tier >= tier_kingdom + government_has_flag = may_elevate_co_monarch +} + +valid_junior_emperor_candidate_trigger = { + is_adult = no + is_close_or_extended_family_of = $LIEGE$ + is_imprisoned = no + OR = { + is_courtier_of = $LIEGE$ + is_vassal_of = $LIEGE$ + } + # Prevent weird governments from taking place. + NOR = { + government_has_flag = government_is_special_republic + government_has_flag = government_is_theocracy + government_has_flag = government_is_landless_adventurer + } +} + +valid_co_emperor_candidate_trigger = { + is_adult = yes + is_imprisoned = no + save_temporary_scope_as = co_emperor_temp + custom_tooltip = { + text = valid_co_emperor_candidate_liege_trigger + top_liege = $LIEGE$ + } + custom_tooltip = { + text = valid_co_emperor_candidate_family_trigger + OR = { + is_close_or_extended_family_of = $LIEGE$ + AND = { + house ?= { + OR = { + is_powerful_family = yes + is_dominant_family = yes + } + } + scope:co_emperor_temp = house.house_head + } + } + } + NOR = { + has_trait = blind + has_trait = eunuch + has_trait = incapable + # Prevent weird governments from taking place. + government_has_flag = government_is_special_republic + government_has_flag = government_is_theocracy + government_has_flag = government_is_landless_adventurer + } +} + +valid_co_monarch_candidate_trigger = { + is_adult = yes + is_child_of = $LIEGE$ + is_imprisoned = no + trigger_if = { + limit = { is_ruler = no } + is_courtier_of = $LIEGE$ + } + trigger_else = { is_vassal_of = $LIEGE$ } + # Gender restrictions. + custom_tooltip = { + text = valid_co_monarch_candidate_trigger.tt.gender_wrong_for_co_rule + OR = { + AND = { + is_female = yes + $LIEGE$ = { + OR = { + has_realm_law = female_only_law + has_realm_law = female_preference_law + } + } + } + AND = { + is_male = yes + $LIEGE$ = { + OR = { + has_realm_law = male_only_law + has_realm_law = male_preference_law + } + } + } + $LIEGE$ = { has_realm_law = equal_law } + } + } + # Prevent weird governments from taking place. + NOR = { + government_has_flag = government_is_special_republic + government_has_flag = government_is_theocracy + government_has_flag = government_is_landless_adventurer + } +} + +governor_can_be_called_as_ally_in_expedition_war_basic_trigger = { + scope:actor.liege ?= { has_diarchy_parameter = unlock_diarch_requests_military_expedition_interaction } + scope:recipient = { + liege ?= scope:actor.liege + # Must be a governor. + government_has_flag = government_is_administrative + } +} + +liege_can_maim_co_ruler_without_killing_them_trigger = { + culture = { + OR = { + has_cultural_parameter = can_blind_prisoners + has_cultural_parameter = can_castrate_prisoners + } + } +} + +liege_should_systematically_maim_co_ruler_trigger = { + OR = { + AND = { + has_diarchy_active_parameter = diarchy_is_co_rulership + liege_can_maim_co_ruler_without_killing_them_trigger = yes + diarch ?= scope:recipient + } + AND = { + liege ?= { has_diarchy_active_parameter = diarchy_is_co_rulership } + liege_can_maim_co_ruler_without_killing_them_trigger = yes + is_diarch_of_target = scope:recipient + } + } +} + +valid_kingdom_for_diarch_to_demand_as_despotate_trigger = { + tier = tier_kingdom + is_landless_type_title = no + # Weird formatting for the sake of cleaner tooltips. + trigger_if = { + limit = { is_title_created = no } + is_title_created = no + } + trigger_else = { holder = scope:recipient } + scope:recipient = { completely_controls = scope:target } + NOT = { + scope:recipient.capital_county = { target_is_de_jure_liege_or_above = scope:target } + } +} + +is_in_scapegoating_diarchy_visibility_trigger = { + custom_tooltip = { + text = is_in_scapegoating_diarchy_visibility_trigger.tt.explanation + subject = scope:actor + OR = { + AND = { + scope:recipient = { $PARAMETER_TYPE$ = unlock_scapegoat_counterpart_interaction } + scope:actor = { is_diarch_of_target = scope:recipient } + } + AND = { + scope:actor = { $PARAMETER_TYPE$ = unlock_scapegoat_counterpart_interaction } + scope:recipient = { is_diarch_of_target = scope:actor } + } + } + } +} + +ai_diarch_would_maim_execute_superior_if_got_chance_trigger = { + OR = { + opinion = { + target = $LIEGE$ + value <= -1 + } + has_trait = callous + has_trait = sadistic + has_trait = ambitious + has_trait = arrogant + } + NOR = { + has_trait = compassionate + has_trait = content + } +} + +################################################## +# Succession Triggers + +diarch_candidate_shares_relationship_with_lesser_consort_trigger = { + # Grab the right scope. + save_temporary_scope_as = char_temp + # Now check. + any_relation = { + type = $RELATION$ + is_consort_of = scope:char_temp.liege + OR = { + NOT = { exists = scope:char_temp.liege.primary_spouse } + NOT = { this = scope:char_temp.liege.primary_spouse } + } + } +} + +diarch_candidate_shares_relationship_with_child_trigger = { + # Grab the right scope. + save_temporary_scope_as = char_temp + # Now check. + any_relation = { + type = $RELATION$ + is_adult = yes + is_child_of = scope:char_temp.liege + is_courtier_of = scope:char_temp.liege + } +} + +diarch_candidate_shares_minority_status_with_trigger = { + # For performance purposes, let's do the most obvious check first. + any_liege_or_above = { + NOT = { $QUALITY$ = scope:char_temp.$QUALITY$ } + } + # Grab the right scope. + save_temporary_scope_as = char_temp + liege = { + # Ok, now make sure we connect to at least one suitable character. + ## Yes we're putting a whole trigger in the scripted parameter. + ### No one will believe you if you try to tell them of my crimes. + $TRIGGER_OR_TARGET$ = { $QUALITY$ = scope:char_temp.$QUALITY$ } + } +} + +################################################## +# Important Actions + +action_regent_imprison_suitable_char_covassals_trigger = { + opinion = { + target = root + value <= very_high_negative_opinion + } + save_temporary_scope_as = char_temp + # Could you take the interaction? + root = { + is_character_interaction_valid = { + interaction = diarch_imprison_interaction + recipient = scope:char_temp + } + } +} + +action_regent_imprison_suitable_char_rivals_trigger = { + save_temporary_scope_as = char_temp + root = { + is_character_interaction_valid = { + interaction = diarch_imprison_interaction + recipient = scope:char_temp + } + } +} + +action_shift_privileges_suitable_char_trigger = { + save_temporary_scope_as = char_temp + # Make sure we've got equal or higher diplo and so might get away with a cheeky forgery. + diplomacy <= root.diplomacy + # And we don't want to spam with little guys, especially as they're more expensive to use prestige on. + OR = { + highest_held_title_tier >= tier_duchy + # But don't block this out entirely within duchies. + liege.highest_held_title_tier = tier_duchy + } + # Could you take the interaction? + root = { + is_character_interaction_valid = { + interaction = diarch_shift_privileges_interaction + recipient = scope:char_temp + } + } +} + +action_legal_meddling_suitable_char_trigger = { + max_military_strength < root.eighty_percent_of_max_military_strength + NOR = { + has_any_good_relationship_with_character_trigger = { CHARACTER = root } + root = { has_truce = prev } + is_allied_to = root + } +} + +action_legal_meddling_suitable_title_trigger = { + diarch_legal_meddling_claimable_title_trigger = { ACTOR = root } + root = { + # Could you take the interaction? + is_character_interaction_valid = { + interaction = diarch_legal_meddling_interaction + recipient = scope:char_temp + } + } +} + +################################################## +# Decisions + +diarch_coup_valid_conspiracy_culmination_vassals_trigger = { + OR = { + is_powerful_vassal_of = $LIEGE$ + house ?= { is_powerful_family = yes } + } + is_imprisoned = no +} + +diarch_coup_attempt_is_valid_trigger = { + # Diarchy checks. + is_diarch = yes + $LIEGE$ = { has_diarchy_active_parameter = regents_can_try_to_overthrow_present_lieges } + ## Liege must be physically present to overthrow. You can't coup them whilst they're abroad. + $LIEGE$ = { + is_imprisoned = no + is_travelling = no + is_at_war = no + custom_tooltip = { + text = custom.not_attending_activity + NOT = { exists = involved_activity } + } + age >= 5 + } + # Support checks. + ## Have you gathered enough support from the realm's powerful vassals and/or councillors? + custom_tooltip = { + text = diarch_attempt_to_overthrow_liege.tt.majority_powerful_vassal_support + subject = root + has_variable_list = coup_pv_supporters_list + any_in_list = { + variable = coup_pv_supporters_list + count >= pv_overthrow_threshold_value + # Double check they're still valid. + diarch_coup_valid_conspiracy_culmination_vassals_trigger = { LIEGE = $LIEGE$ } + } + } + # As a speed-bump, we check how long this diarchy has been on for. + OR = { + # Either, you've been a diarch for a good long ways. + years_as_diarch >= 8 + # Or, you haven't been but everyone is kinda used to the concept of a diarch. + AND = { + years_as_diarch >= 4 + $LIEGE$ = { years_in_diarchy >= 10 } + } + # OR, you've laid the groundwork for such a coup already + custom_tooltip = { + text = diarch_attempt_to_overthrow_liege_bypass + has_character_flag = laid_coup_groundwork_flag + } + } + # And finally, for ease of sanity, your liege must be of a certain size. + $LIEGE$.sub_realm_size >= minor_realm_size +} + +diarch_coup_attempt_is_valid_showing_failure_only_trigger = { + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = $DIARCH$ } + # Plus standard checks. + is_available_adult = yes + # Filter this out in advance, else we risk trying to enter a duel later, only to find we're already engaged in one. + custom_description = { + text = ENGAGED_IN_SINGLE_COMBAT + NOT = { exists = var:engaged_in_single_combat } + } + # Liege must have _something_ at the highest tier that isn't a HoF title. + custom_tooltip = { + text = diarch_attempt_to_overthrow_liege.tt.liege_cant_hold_only_hof_highest_title + liege = { + any_held_title = { + tier = prev.highest_held_title_tier + is_head_of_faith = no + } + } + } +} + +diarch_coup_attempt_grabbable_kingdom_trigger = { + highest_held_title_tier >= tier_empire + any_held_title = { + diarch_coup_attempt_grabbable_kingdom_guts_trigger = { TARGET = $TARGET$ } + } +} + +diarch_coup_attempt_grabbable_kingdom_guts_trigger = { + tier = tier_kingdom + is_head_of_faith = no + any_de_jure_county = { + holder = { + any_liege_or_above = { this = $TARGET$ } + } + } +} + +diarch_coup_attempt_grabbable_capital_and_duchies_trigger = { + is_head_of_faith = no + is_landless_type_title = no + OR = { + AND = { + tier = tier_county + this.duchy = $TARGET$.primary_title.title_capital_county.duchy + } + this = $TARGET$.primary_title.title_capital_county.duchy + } +} + +################################################## +# Mandates + +#TODO_CD_EP2; rig these up to the actual loyalty value. + +diarch_loyalty_due_to_hook_trigger = { + $LIEGE$ = { + OR = { + has_hook_of_type = { + target = $DIARCH$ + type = loyalty_hook + } + has_hook_of_type = { + target = $DIARCH$ + type = predecessor_loyalty_hook + } + } + } +} + +diarch_wants_to_engage_with_mandates_trigger = { + save_temporary_scope_value_as = { + name = diarch_loyalty + value = $DIARCH$.diarch_loyalty_score_type_regency_value + } + OR = { + scope:diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold + scope:diarch_loyalty <= diarch_loyalty_visibly_disloyal_threshold + } +} + +################################################## +# Events + +character_has_regency_diarchy_trigger = { + exists = diarch + OR = { + has_diarchy_active_parameter = diarchy_type_is_temporary_regency + has_diarchy_active_parameter = diarchy_type_is_entrenched_regency + } +}