From 9e9e27cc5b37400f06b8e151d1ebdb3294b373f9 Mon Sep 17 00:00:00 2001 From: trashb0at Date: Fri, 11 Apr 2025 14:29:56 -0400 Subject: [PATCH] updating character interactions --- common/character_interactions/00_alliance.txt | 1 + .../00_artifact_interactions.txt | 17 +- .../00_character_interactions.txt | 117 ++++- .../00_choose_favorite_interaction.txt | 35 +- .../00_court_amenities_interactions.txt | 2 +- .../00_debug_interactions.txt | 3 +- .../00_diarch_interactions.txt | 42 +- .../00_fp3_interactions.txt | 1 + common/character_interactions/00_gift.txt | 2 +- .../00_grant_titles_interaction.txt | 46 +- .../00_marriage_interactions.txt | 11 + .../00_modifiy_vassal_contract.txt | 19 +- .../00_perk_interactions.txt | 7 +- .../00_prison_interactions.txt | 16 +- .../00_religious_interactions.txt | 27 +- .../00_revoke_title_interaction.txt | 14 +- .../00_scheme_interactions.txt | 14 +- .../00_vassal_interactions.txt | 131 ++++- .../03_fp2_interactions.txt | 63 +-- .../05_bp2_interactions.txt | 9 + .../06_ep3_interactions.txt | 470 ++++++++++++------ .../06_ep3_scheme_interactions.txt | 141 ++++-- 22 files changed, 846 insertions(+), 342 deletions(-) diff --git a/common/character_interactions/00_alliance.txt b/common/character_interactions/00_alliance.txt index 679fb037..e6d9f920 100644 --- a/common/character_interactions/00_alliance.txt +++ b/common/character_interactions/00_alliance.txt @@ -2943,6 +2943,7 @@ join_war_interaction = { popup_on_receive = yes desc = join_war_interaction_desc icon = alliance + interface_priority = 29 greeting = positive notification_text = join_war_interaction_notification diff --git a/common/character_interactions/00_artifact_interactions.txt b/common/character_interactions/00_artifact_interactions.txt index d0f2de95..24247e00 100644 --- a/common/character_interactions/00_artifact_interactions.txt +++ b/common/character_interactions/00_artifact_interactions.txt @@ -1,8 +1,8 @@ # Give away an artifact to improve relations gift_artifact_interaction = { category = interaction_category_friendly - common_interaction = yes - interface_priority = 60 + common_interaction = no + interface_priority = 30 desc = gift_artifact_interaction_desc icon = artisan_inspiration @@ -1287,6 +1287,19 @@ demand_artifact_interaction = { } } } + + scope:actor = { + OR = { + is_ai = no + max_military_strength >= { + value = { + value = scope:recipient.max_military_strength + multiply = 1.3 + } + } + highest_held_title_tier > scope:recipient.highest_held_title_tier + } + } } is_highlighted = { diff --git a/common/character_interactions/00_character_interactions.txt b/common/character_interactions/00_character_interactions.txt index 941a14e4..a54a10db 100644 --- a/common/character_interactions/00_character_interactions.txt +++ b/common/character_interactions/00_character_interactions.txt @@ -308,6 +308,11 @@ offer_vassalization_interaction = { has_purchased_truce_with_char = { TARGET = scope:recipient } } } + scope:recipient = { + NOT = { + has_purchased_truce_with_char = { TARGET = scope:actor } + } + } } add = -50 } @@ -1652,6 +1657,38 @@ set_primary_spouse_interaction = { } } scope:actor = { + if = { + limit = { + scope:actor.primary_spouse = { + is_lowborn = no + } + scope:recipient = { + is_lowborn = yes + } + } + add_legitimacy = { + value = medium_legitimacy_loss + multiply = scope:actor.primary_title.tier + } + every_vassal_or_below = { + limit = { has_vassal_stance = courtly } + custom = every_courtly_vassal + add_opinion = { + modifier = married_lowborn_opinion + target = scope:actor + opinion = -50 + } + } + every_vassal_or_below = { + limit = { has_vassal_stance = glory_hound } + custom = every_glory_hound_vassal + add_opinion = { + modifier = married_lowborn_opinion + target = scope:actor + opinion = -30 + } + } + } set_primary_spouse = scope:recipient hidden_effect = { send_interface_toast = { @@ -1710,20 +1747,18 @@ set_primary_spouse_interaction = { } ai_will_do = { - base = 100 + base = 0 - modifier = { #AI only does it if current primary_spouse is hated and another spouse is preferred. - factor = 0 - NOT = { - scope:actor = { - opinion = { - target = scope:actor.primary_spouse - value < -50 - } - opinion = { - target = scope:recipient - value >= 50 - } + modifier = { + add = 100 + scope:recipient = { + is_lowborn = no + sum_of_all_skills_value > scope:actor.primary_spouse.sum_of_all_skills_value + } + scope:actor = { + NOR = { + has_relation_friend = scope:actor.primary_spouse + has_relation_lover = scope:actor.primary_spouse } } } @@ -1736,6 +1771,7 @@ grant_independence_interaction = { greeting = positive notification_text = GRANT_INDEPENDENCE_INTERACTION_NOTIFICATION icon = independence + interface_priority = 120 desc = grant_independence_interaction_desc @@ -2060,6 +2096,61 @@ expose_secret_interaction = { } on_accept = { + scope:actor = { + if = { + limit = { + is_landless_adventurer = yes + has_perk = court_of_shadows_perk + } + add_prestige = { + value = 100 + multiply = { + value = scope:recipient.highest_held_title_tier + add = 1 + } + min = 50 + } + } + if = { + limit = { + exists = scope:target + } + scope:target = { + expose_secret = scope:actor + } + } + else = { + every_known_secret = { + limit = { + secret_owner = scope:recipient + } + expose_secret = scope:actor + } + } + + stress_impact = { + honest = minor_stress_impact_loss + just = minor_stress_impact_loss + shy = miniscule_stress_impact_gain + } + } + + scope:recipient = { + stress_impact = { + honest = minor_stress_impact_loss + just = minor_stress_impact_loss + deceitful = minor_stress_impact_gain + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_secret_exposure.desc + REVERSE_NON_HOUSE_TARGET = no + } } auto_accept = yes diff --git a/common/character_interactions/00_choose_favorite_interaction.txt b/common/character_interactions/00_choose_favorite_interaction.txt index 73aa41fb..19434676 100644 --- a/common/character_interactions/00_choose_favorite_interaction.txt +++ b/common/character_interactions/00_choose_favorite_interaction.txt @@ -2,31 +2,33 @@ choose_favorite_interaction = { category = interaction_category_friendly icon = designate_favorite + interface_priority = 8 desc = choose_favorite_interaction_desc is_shown = { - scope:actor = { is_ai = no } + scope:actor = { + is_ai = no + NOT = { has_relation_favorite_child = scope:recipient } + } scope:recipient.dynasty = scope:actor.dynasty NOT = { scope:actor = scope:recipient } + scope:recipient = { + OR = { + is_child_of = scope:actor + is_grandchild_of = scope:actor + is_great_grandchild_of = scope:actor + } + } } is_valid_showing_failures_only = { scope:actor = { is_alive = yes } - scope:recipient = { is_favorite_child = no } scope:recipient = { custom_tooltip = { text = cant_be_another_player_tt is_ai = yes } - custom_tooltip = { - text = must_be_direct_descendant_tt - OR = { - is_child_of = scope:actor - is_grandchild_of = scope:actor - is_great_grandchild_of = scope:actor - } - } custom_tooltip = { text = favorite_child_must_be_in_good_health_tt NOR = { @@ -94,18 +96,15 @@ choose_favorite_interaction = { remove_favorite_interaction = { category = interaction_category_friendly icon = designate_favorite + interface_priority = 7 desc = remove_favorite_interaction_desc is_shown = { - scope:actor = { is_ai = no } - scope:recipient.dynasty = scope:actor.dynasty - NOT = { scope:actor = scope:recipient } - } - - is_valid_showing_failures_only = { - scope:actor = { is_alive = yes } - scope:recipient = { is_favorite_child = yes } + scope:actor = { + is_alive = yes + has_relation_favorite_child = scope:recipient + } } on_auto_accept = { diff --git a/common/character_interactions/00_court_amenities_interactions.txt b/common/character_interactions/00_court_amenities_interactions.txt index cdbcd67f..1371d9d1 100644 --- a/common/character_interactions/00_court_amenities_interactions.txt +++ b/common/character_interactions/00_court_amenities_interactions.txt @@ -3,7 +3,7 @@ sumptuary_law_debate_interaction = { category = interaction_category_hostile - interface_priority = 20 + interface_priority = 15 desc = sumptuary_law_debate_interaction_desc icon = weaver_inspiration diff --git a/common/character_interactions/00_debug_interactions.txt b/common/character_interactions/00_debug_interactions.txt index ea9d6719..502f55b5 100644 --- a/common/character_interactions/00_debug_interactions.txt +++ b/common/character_interactions/00_debug_interactions.txt @@ -999,7 +999,7 @@ slay_character_interaction = { use_diplomatic_range = no ignores_pending_interaction_block = yes icon = icon_dead - common_interaction = no + common_interaction = yes interface_priority = -1 @@ -2182,6 +2182,7 @@ debug_progress_all_active_schemes_interaction = { } on_accept = { scope:recipient = { every_scheme = { add_scheme_progress = 100 } } } auto_accept = yes + common_interaction = yes } debug_travel_to_ruler_interaction = { diff --git a/common/character_interactions/00_diarch_interactions.txt b/common/character_interactions/00_diarch_interactions.txt index 7fec8d09..85ec85bf 100644 --- a/common/character_interactions/00_diarch_interactions.txt +++ b/common/character_interactions/00_diarch_interactions.txt @@ -36,7 +36,8 @@ # Diarch (actor) takes a title from a vassal (recipient) of their liege with an optional veto for the liege (third_party). diarch_revoke_title_interaction = { category = interaction_category_diarch - common_interaction = yes + common_interaction = no + interface_priority = 35 diarch_interaction = yes highlighted_reason = HIGHLIGHTED_CAN_DIARCH_REVOKE notification_text = DIARCH_REVOKE_TITLE_PROPOSAL @@ -695,6 +696,7 @@ diarch_revoke_title_interaction = { diarch_retract_vassal_interaction = { category = interaction_category_diarch diarch_interaction = yes + interface_priority = 10 highlighted_reason = HIGHLIGHTED_CAN_DIARCH_RETRACT notification_text = RETRACT_VASSAL_PROPOSAL intermediary_notification_text = diarch_interaction_requesting_sign_off.tt @@ -1334,6 +1336,7 @@ diarch_retract_vassal_interaction = { diarch_imprison_interaction = { category = interaction_category_diarch diarch_interaction = yes + interface_priority = 16 notification_text = DIARCH_IMPRISON_PROPOSAL intermediary_notification_text = diarch_interaction_requesting_sign_off.tt intermediary_breakdown_yes = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_YES @@ -2208,6 +2211,12 @@ diarch_subsidise_crown_authority_interaction = { limit = { has_realm_law = crown_authority_2 } can_pass_law_ca3_trigger = yes } + + # If the liege is administrative, they have to be independent. + trigger_if = { + limit = { has_government = administrative_government } + is_independent_ruler = yes + } } # Cannot be at war with your liege. NOT = { @@ -2320,6 +2329,7 @@ diarch_subsidise_crown_authority_interaction = { diarch_adjust_bureaucracy_interaction = { category = interaction_category_diarch diarch_interaction = yes + interface_priority = 9 notification_text = { first_valid = { # Decentralise. @@ -2669,6 +2679,7 @@ diarch_adjust_bureaucracy_interaction = { diarch_legal_meddling_interaction = { category = interaction_category_diarch common_interaction = yes + interface_priority = 165 diarch_interaction = yes icon = vassal_claim_liege_title_interaction @@ -3080,6 +3091,7 @@ diarch_syphon_treasury_interaction = { category = interaction_category_diarch diarch_interaction = yes icon = icon_gold + common_interaction = yes desc = diarch_syphon_treasury_interaction_desc @@ -3690,13 +3702,14 @@ diarch_shift_privileges_interaction = { category = interaction_category_diarch diarch_interaction = yes icon = icon_shift_privileges + common_interaction = yes ai_intermediary_maybe = yes desc = diarch_shift_privileges_interaction_desc popup_on_receive = yes - interface_priority = 60 + interface_priority = 285 is_shown = { # The obvious. @@ -4013,6 +4026,7 @@ diarch_request_imperial_expedition_interaction = { diarch_interaction = yes notification_text = DIARCH_REQUESTS_IMPERIAL_EXPEDITION icon = invasion + interface_priority = 5 desc = diarch_request_imperial_expedition_interaction_desc @@ -4389,6 +4403,7 @@ diarch_demand_despotate_interaction = { diarch_interaction = yes notification_text = DIARCH_DEMANDS_DESPOTATE icon = icon_found_despotate + interface_priority = 15 desc = diarch_demand_despotate_interaction_desc @@ -4840,6 +4855,7 @@ diarch_coup_liege_interaction = { category = interaction_category_diarch diarch_interaction = yes icon = icon_scheme_claim_throne + interface_priority = 50 pre_answer_no_breakdown_key = diarch_coup_liege_interaction_pre_answer_no_breakdown_key pre_answer_yes_breakdown_key = diarch_coup_liege_interaction_pre_answer_yes_breakdown_key @@ -5615,7 +5631,7 @@ scapegoat_counterpart_interaction = { desc = scapegoat_counterpart_interaction_desc - interface_priority = 20 + interface_priority = 25 is_shown = { # You must be one of the partners in a diarchy. @@ -8676,7 +8692,7 @@ appoint_vizier_interaction = { is_valid_showing_failures_only = { # You can't already be in a diarchy of any kind. scope:actor = { - NOT = { has_active_diarchy = yes } + has_active_diarchy = no } # Must be of a decent tier. custom_tooltip = { @@ -8963,7 +8979,7 @@ appoint_junior_emperor_interaction = { if = { limit = { NOT = { - scope:secondary_recipient ?= { valid_junior_emperor_candidate_trigger = yes } + scope:secondary_recipient ?= { valid_junior_emperor_candidate_trigger = { LIEGE = scope:actor } } } } clear_saved_scope = secondary_recipient @@ -8979,19 +8995,19 @@ appoint_junior_emperor_interaction = { # We perform this upon ourselves or our (probable) candidates. OR = { scope:recipient ?= scope:actor - scope:secondary_recipient ?= { valid_junior_emperor_candidate_trigger = yes } + scope:secondary_recipient ?= { valid_junior_emperor_candidate_trigger = { LIEGE = scope:actor } } } } is_valid_showing_failures_only = { # You can't already be in a diarchy of any kind. scope:actor = { - NOT = { has_active_diarchy = yes } + has_active_diarchy = no } # Make sure we're targeting the right people, since redirects make this a lil slippery. trigger_if = { limit = { exists = scope:secondary_recipient } - scope:secondary_recipient = { valid_junior_emperor_candidate_trigger = yes } + scope:secondary_recipient = { valid_junior_emperor_candidate_trigger = { LIEGE = scope:actor } } } # Plus the usuals. scope:actor = { is_available_at_peace = yes } @@ -9177,7 +9193,7 @@ appoint_co_emperor_interaction = { } desc = appoint_co_emperor_interaction_desc - interface_priority = 20 + interface_priority = 280 is_shown = { # Must be able to retain a co-emperor. @@ -9194,7 +9210,7 @@ appoint_co_emperor_interaction = { is_valid_showing_failures_only = { # You can't already be in a diarchy of any kind. scope:actor = { - NOT = { has_active_diarchy = yes } + has_active_diarchy = no } # Make sure we're targeting the right people, since redirects make this a lil slippery. trigger_if = { @@ -9422,12 +9438,12 @@ appoint_co_monarch_interaction = { is_valid_showing_failures_only = { # You can't already be in a diarchy of any kind. scope:actor = { - NOT = { has_active_diarchy = yes } + has_active_diarchy = no } # Make sure we're targeting the right people, since redirects make this a lil slippery. trigger_if = { limit = { exists = scope:secondary_recipient } - scope:secondary_recipient = { valid_co_monarch_candidate_trigger = yes } + scope:secondary_recipient = { valid_co_monarch_candidate_trigger = { LIEGE = scope:actor } } } # Plus the usuals. scope:actor = { is_available_at_peace = yes } @@ -9456,7 +9472,7 @@ appoint_co_monarch_interaction = { ## And by that I mean play literal favourites. ordered_in_list = { list = characters - limit = { valid_co_monarch_candidate_trigger = yes } + limit = { valid_co_monarch_candidate_trigger = { LIEGE = scope:actor } } order_by = "reverse_opinion(scope:actor)" save_scope_as = ai_recipient } diff --git a/common/character_interactions/00_fp3_interactions.txt b/common/character_interactions/00_fp3_interactions.txt index b55da636..a1215e8d 100644 --- a/common/character_interactions/00_fp3_interactions.txt +++ b/common/character_interactions/00_fp3_interactions.txt @@ -7,6 +7,7 @@ fp3_demand_submission_interaction = { pause_on_receive = yes can_send_despite_rejection = yes ai_maybe = yes + desc = fp3_demand_submission_interaction_desc greeting = positive notification_text = DEMAND_SUBMISSION_NOTIFICATION diff --git a/common/character_interactions/00_gift.txt b/common/character_interactions/00_gift.txt index ebfa486a..6b0ab337 100644 --- a/common/character_interactions/00_gift.txt +++ b/common/character_interactions/00_gift.txt @@ -3,7 +3,7 @@ gift_interaction = { icon = icon_gold category = interaction_category_friendly common_interaction = yes - interface_priority = 60 + interface_priority = 65 desc = gift_interaction_desc greeting = positive diff --git a/common/character_interactions/00_grant_titles_interaction.txt b/common/character_interactions/00_grant_titles_interaction.txt index 5200c9d9..b5c64604 100644 --- a/common/character_interactions/00_grant_titles_interaction.txt +++ b/common/character_interactions/00_grant_titles_interaction.txt @@ -279,31 +279,31 @@ grant_titles_interaction = { if = { limit = { - any_in_list = { - list = target_titles - tier = tier_county - culture = scope:recipient.culture - NOR = { - culture = scope:actor.culture - recent_history = { - type = granted - years = 10 + OR = { + any_in_list = { + list = target_titles + tier = tier_county + culture = scope:recipient.culture + NOR = { + culture = scope:actor.culture + recent_history = { + type = granted + years = 10 + } } } - } - } - alternative_limit = { - any_in_list = { - list = target_titles - tier >= tier_duchy - title_capital_county = { - NOT = { culture = scope:actor.culture } - culture = scope:recipient.culture - } - NOT = { - recent_history = { - type = granted - years = 10 + any_in_list = { + list = target_titles + tier >= tier_duchy + title_capital_county = { + NOT = { culture = scope:actor.culture } + culture = scope:recipient.culture + } + NOT = { + recent_history = { + type = granted + years = 10 + } } } } diff --git a/common/character_interactions/00_marriage_interactions.txt b/common/character_interactions/00_marriage_interactions.txt index 20d84dfa..a591d0bf 100644 --- a/common/character_interactions/00_marriage_interactions.txt +++ b/common/character_interactions/00_marriage_interactions.txt @@ -194,6 +194,11 @@ arrange_marriage_interaction = { limit = { is_alive = yes NOT = { is_in_list = characters } + OR = { + top_liege = scope:actor + house.house_head = scope:actor + dynasty.dynast = scope:actor + } trigger_if = { limit = { is_concubine = yes @@ -209,6 +214,11 @@ arrange_marriage_interaction = { limit = { is_alive = yes NOT = { is_in_list = characters } + OR = { + top_liege = scope:actor + house.house_head = scope:actor + dynasty.dynast = scope:actor + } trigger_if = { limit = { is_concubine = yes @@ -1780,6 +1790,7 @@ break_betrothal_interaction = { special_interaction = break_betrothal_interaction use_diplomatic_range = no icon = icon_marriage + interface_priority = 30 is_shown = { OR = { diff --git a/common/character_interactions/00_modifiy_vassal_contract.txt b/common/character_interactions/00_modifiy_vassal_contract.txt index 179a1bb4..35fd821e 100644 --- a/common/character_interactions/00_modifiy_vassal_contract.txt +++ b/common/character_interactions/00_modifiy_vassal_contract.txt @@ -630,6 +630,7 @@ admin_liege_modify_vassal_contract_interaction = { interface = modify_vassal_contract category = interaction_category_vassal common_interaction = yes + interface_priority = 1000 icon = icon_contract_modification_single send_name = admin_liege_modify_vassal_contract_interaction @@ -680,12 +681,17 @@ admin_liege_modify_vassal_contract_interaction = { } } custom_tooltip = { - text = admin_contract_cooldown_desc_vassal + text = admin_contract_cooldown_desc scope:recipient = { NOT = { has_variable = admin_contract_cooldown } } } } + trigger_else = { + scope:actor = { + has_changed_contract_obligation_trigger = yes + } + } } } @@ -832,11 +838,13 @@ admin_liege_modify_vassal_contract_interaction = { admin_vassal_modify_vassal_contract_interaction = { special_interaction = vassal_modify_vassal_contract interface = modify_vassal_contract - category = interaction_category_admin + category = interaction_category_vassal interface_priority = 65 common_interaction = yes icon = icon_contract_modification_single + filter_tags = { admin_liege } + send_name = "admin_vassal_modify_vassal_contract_interaction_send" desc = admin_vassal_modify_vassal_contract_interaction_desc @@ -865,9 +873,6 @@ admin_vassal_modify_vassal_contract_interaction = { } can_send = { - any_in_list = { - list = changed_obligations - } trigger_if = { #If you're blocked we don't want to show anything else (we don't really use this for admin, but we'll keep the logic, just in case) limit = { scope:actor = { @@ -900,6 +905,9 @@ admin_vassal_modify_vassal_contract_interaction = { NOT = { has_variable = admin_contract_request_cooldown } } } + scope:actor = { + has_changed_contract_obligation_trigger = yes + } } # You can afford the influence cost @@ -946,6 +954,7 @@ admin_vassal_modify_vassal_contract_interaction = { # If you didn't use a hook or leveraged your position as a Dominant Family, pay Influence if = { limit = { + has_changed_contract_obligation_trigger = yes # Don't show the cost unless we actually change the contract NOR = { scope:hook = yes scope:dominant_family = yes diff --git a/common/character_interactions/00_perk_interactions.txt b/common/character_interactions/00_perk_interactions.txt index c6638fdd..fb78ea61 100644 --- a/common/character_interactions/00_perk_interactions.txt +++ b/common/character_interactions/00_perk_interactions.txt @@ -4,7 +4,8 @@ ################### claim_throne_interaction = { icon = icon_scheme_claim_throne - category = interaction_category_hostile + category = interaction_category_vassal + interface_priority = 268 # after Start Claimant Faction ai_targets = { ai_recipients = liege @@ -14,6 +15,7 @@ claim_throne_interaction = { use_diplomatic_range = no ignores_pending_interaction_block = yes + scheme = claim_throne desc = claim_throne_interaction_desc @@ -647,11 +649,12 @@ fabricate_hook_interaction = { # by Petter Vilberg ################### demand_payment_interaction = { - category = interaction_category_diplomacy + category = interaction_category_friendly icon = icon_gold auto_accept = yes use_diplomatic_range = yes + interface_priority = 35 desc = demand_payment_interaction_desc diff --git a/common/character_interactions/00_prison_interactions.txt b/common/character_interactions/00_prison_interactions.txt index 88bc333f..3643696f 100644 --- a/common/character_interactions/00_prison_interactions.txt +++ b/common/character_interactions/00_prison_interactions.txt @@ -1488,7 +1488,7 @@ move_to_house_arrest_interaction = { ransom_interaction = { interface_priority = 50 - common_interaction = yes + common_interaction = no use_diplomatic_range = no category = interaction_category_prison special_interaction = ransom_interaction @@ -2132,7 +2132,7 @@ ransom_interaction = { #For lieges to ransom their courtiers pay_ransom_interaction = { interface_priority = 50 - common_interaction = yes + common_interaction = no use_diplomatic_range = no category = interaction_category_prison icon = icon_gold @@ -5901,13 +5901,7 @@ execute_prisoner_interaction = { is_shown = { scope:recipient = { - OR = { - is_imprisoned_by = scope:actor - AND = { - is_diarch_of_target = scope:actor - scope:actor = { has_diarchy_active_parameter = diarchy_is_co_rulership } - } - } + is_imprisoned_by = scope:actor } } @@ -6562,7 +6556,7 @@ debug_imprison_simple_interaction = { torture_interaction = { interface_priority = 30 - common_interaction = yes + common_interaction = no icon = torture_interaction category = interaction_category_prison @@ -7195,7 +7189,7 @@ systematically_maim_character_interaction = { interface_priority = 30 icon = torture_interaction category = interaction_category_diarch - common_interaction = yes + common_interaction = no desc = systematically_maim_character_interaction_desc is_shown = { diff --git a/common/character_interactions/00_religious_interactions.txt b/common/character_interactions/00_religious_interactions.txt index c7ddc25b..d2cfe60f 100644 --- a/common/character_interactions/00_religious_interactions.txt +++ b/common/character_interactions/00_religious_interactions.txt @@ -2472,6 +2472,7 @@ lift_excommunication_interaction = { request_excommunication_interaction = { category = interaction_category_hostile icon = excommunication + interface_priority = 30 desc = request_excommunication_interaction_desc redirect = { @@ -3455,7 +3456,7 @@ send_to_holy_order_interaction = { #Ask to take the vows for a monastery #by Linnéa Thimrén & Bianca Savazzi take_vows_interaction = { - category = interaction_category_friendly + category = interaction_category_vassal icon = religious ai_maybe = yes @@ -3477,10 +3478,7 @@ take_vows_interaction = { is_shown = { scope:recipient = { - OR = { - is_courtier_of = scope:actor - is_child_of = scope:actor - } + is_courtier_of = scope:actor NOR = { has_trait = devoted has_trait = order_member @@ -3569,6 +3567,7 @@ take_vows_interaction = { else_if = { limit = { scope:recipient = { is_child_of = scope:actor } + has_legitimacy = yes } add_legitimacy = { value = miniscule_legitimacy_loss @@ -4370,7 +4369,15 @@ take_vows_interaction = { temporal_condemnation_interaction = { category = interaction_category_religion - desc = temporal_condemnation_interaction_desc + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:actor.faith = faith:quranist } + desc = temporal_condemnation_interaction_desc_fasiq + } + desc = temporal_condemnation_interaction_desc + } + } icon = religious is_shown = { @@ -5317,6 +5324,7 @@ hof_ask_for_gold_interaction = { hof_ask_for_claim_interaction = { category = interaction_category_diplomacy icon = religious_claim + interface_priority = 35 desc = hof_ask_for_claim_interaction_desc target_type = title @@ -6350,6 +6358,13 @@ select_ghw_beneficiary_interaction = { } } } + custom_tooltip = { + text = ghw_devoted_to_their_faith + NOR = { # not dedicated to a religious career + has_trait = devoted + has_trait = order_member + } + } } has_valid_target_showing_failures_only = { diff --git a/common/character_interactions/00_revoke_title_interaction.txt b/common/character_interactions/00_revoke_title_interaction.txt index 86d4b6b7..f6b15149 100644 --- a/common/character_interactions/00_revoke_title_interaction.txt +++ b/common/character_interactions/00_revoke_title_interaction.txt @@ -1,8 +1,9 @@ revoke_title_interaction = { category = interaction_category_vassal - common_interaction = yes + common_interaction = no highlighted_reason = HIGHLIGHTED_HAS_REVOKE_TITLE_REASON notification_text = REVOKE_TITLE_PROPOSAL + interface_priority = 110 name = { first_valid = { @@ -133,6 +134,17 @@ is_vassal_of = scope:actor is_busy_in_events_localised = yes NOT = { has_strong_hook = scope:actor } + trigger_if = { # If admin, they need to hold a title that isn't their noble family title + limit = { + has_government = administrative_government + } + custom_tooltip = { + text = admin_no_valid_appointment + any_held_title = { + NOT = { is_noble_family_title = yes } + } + } + } } custom_tooltip = { text = cannot_take_overt_hostile_actions_against_diarch.tt diff --git a/common/character_interactions/00_scheme_interactions.txt b/common/character_interactions/00_scheme_interactions.txt index 98ebdcbe..9de88f70 100644 --- a/common/character_interactions/00_scheme_interactions.txt +++ b/common/character_interactions/00_scheme_interactions.txt @@ -1,7 +1,7 @@ #Character interactions relating to schemes start_murder_interaction = { - icon = icon_hostile + icon = icon_scheme_murder common_interaction = yes interface_priority = 90 category = interaction_category_hostile @@ -914,8 +914,9 @@ befriend_interaction = { seduce_interaction = { icon = icon_scheme_seduce category = interaction_category_friendly - interface_priority = 90 + interface_priority = 45 scheme = seduce + common_interaction = no send_name = START_SCHEME ignores_pending_interaction_block = yes @@ -1544,7 +1545,7 @@ court_interaction = { send_name = START_SCHEME - interface_priority = 90 + interface_priority = 40 scheme = courting ignores_pending_interaction_block = yes @@ -1972,13 +1973,14 @@ court_interaction = { } sway_interaction = { - icon = icon_personal + icon = icon_scheme_sway category = interaction_category_friendly common_interaction = yes send_name = START_SCHEME - interface_priority = 120 + interface_priority = 75 + scheme = sway ignores_pending_interaction_block = yes @@ -2309,7 +2311,7 @@ learn_language_interaction = { send_name = START_SCHEME - interface_priority = 48 + interface_priority = 42 scheme = learn_language ignores_pending_interaction_block = yes diff --git a/common/character_interactions/00_vassal_interactions.txt b/common/character_interactions/00_vassal_interactions.txt index ec86c6e3..0f512fd4 100644 --- a/common/character_interactions/00_vassal_interactions.txt +++ b/common/character_interactions/00_vassal_interactions.txt @@ -96,10 +96,13 @@ grant_vassal_interaction = { trigger_if = { limit = { scope:actor.liege = scope:recipient } - NOT = { - primary_title = { - any_this_title_or_de_jure_above = { - holder = scope:actor + custom_tooltip = { + text = is_de_jure_liege_of_target + NOT = { + primary_title = { + any_this_title_or_de_jure_above = { + holder = scope:actor + } } } } @@ -279,6 +282,8 @@ retract_vassal_interaction = { pause_on_receive = yes icon = icon_liege + interface_priority = 109 #after revoke title + desc = retract_vassal_interaction_desc on_decline_summary = general_rebellion_decline_summary @@ -1142,6 +1147,7 @@ join_independence_faction_interaction = { create_claimant_faction_against_interaction = { icon = vassal_claim_liege_title_interaction category = interaction_category_vassal + interface_priority = 270 use_diplomatic_range = no desc = create_claimant_faction_against_interaction_desc @@ -1446,6 +1452,7 @@ invite_to_council_position_interaction = { force_onto_council = { category = interaction_category_vassal + interface_priority = 120 icon = council desc = force_onto_council_desc @@ -2377,7 +2384,8 @@ pardon_interaction = { } vassal_claim_liege_title_interaction = { - category = interaction_category_diplomacy + category = interaction_category_vassal + interface_priority = 269 # after Start Claimant Faction desc = vassal_claim_liege_title_interaction_desc target_type = title target_filter = recipient_domain_titles @@ -2888,7 +2896,7 @@ vassal_claim_liege_title_interaction = { give_vassal_directive_interaction = { category = interaction_category_vassal icon = icon_scheme_challenge_status - + interface_priority = 60 desc = give_vassal_directive_interaction_desc auto_accept = yes @@ -3224,3 +3232,114 @@ give_vassal_directive_interaction = { } } } + + + +request_court_position = { + category = interaction_category_vassal + interface_priority = 120 + icon = seneschal_court_position + + desc = request_court_position_desc + + special_interaction = request_court_position + interface = court_task_interaction + target_type = court_position_type + + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + is_shown = { + NOT = { scope:recipient = scope:actor } + scope:actor.liege ?= scope:recipient + } + + on_accept = { + scope:recipient = { + appoint_court_position = { + recipient = scope:actor + court_position = scope:target + } + } + scope:actor = { + if = { + limit = { always = scope:claim_hook } + use_hook = scope:recipient + } + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:claim_hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + + send_option = { + is_shown = { + NOT = { scope:actor = scope:recipient } + } + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = claim_hook + localization = GENERIC_SPEND_A_HOOK + } + + send_options_exclusive = no + + ai_accept = { + base = -75 + + modifier = { + scope:claim_hook ?= yes + add = 100 + desc = SCHEME_WEAK_HOOK_USED + } + + opinion_modifier = { # More likely if Recipient likes Actor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + } + + force_notification = yes +} + +grant_court_position = { + category = interaction_category_vassal + interface_priority = 120 + icon = seneschal_court_position + + desc = grant_court_position_desc + + special_interaction = grant_court_position + interface = court_task_interaction + target_type = court_position_type + + is_shown = { + NOT = { scope:recipient = scope:actor } + scope:recipient.liege ?= scope:actor + } + + on_accept = { + scope:actor = { + appoint_court_position = { + recipient = scope:recipient + court_position = scope:target + } + } + } + + auto_accept = yes +} diff --git a/common/character_interactions/03_fp2_interactions.txt b/common/character_interactions/03_fp2_interactions.txt index 42318e32..f67c8b88 100644 --- a/common/character_interactions/03_fp2_interactions.txt +++ b/common/character_interactions/03_fp2_interactions.txt @@ -1025,7 +1025,7 @@ challenge_to_2p_chess_interaction = { icon = icon_gaming category = interaction_category_friendly desc = challenge_to_2p_chess_interaction_desc - common_interaction = yes + common_interaction = no greeting = positive notification_text = CHALLENGE_TO_2P_CHESS_INTERACTION_NOTIFICATION @@ -2006,6 +2006,7 @@ purchase_truce_interaction = { has_struggle_phase_parameter = unlocks_truce_purchasing_interaction } has_perk = defensive_measures_perk + culture = { has_cultural_parameter = unlocks_purchase_truce } } # if you are not independent you should not be able to purchase truce with other fellow vassals only @@ -2026,7 +2027,10 @@ purchase_truce_interaction = { is_valid_showing_failures_only = { # Scope:actor must be an available (adult or child). - scope:actor = { is_available = yes } + scope:actor = { + gold >= pt_sum_small_value + is_available = yes + } # Scope:recipient must be at least available. scope:recipient = { is_available = yes } # Make sure that scope:actor is going into this with a clean, no-recent/active/forbidden hostilities mindset. @@ -2442,45 +2446,6 @@ purchase_truce_interaction = { scope:actor.max_military_strength > scope:recipient.purchase_truce_interaction_recipient_far_stronger_value desc = PT_AI_RECIPIENT_IS_MUCH_WEAKER } - - # Struggle - modifier = { - desc = AI_STRUGGLE_INTENT - scope:recipient = { - any_character_struggle = { - involvement = involved - } - } - scope:actor = { - any_character_struggle = { - involvement = involved - } - } - add = { - value = 0 - if = { - limit = { - scope:recipient = { - any_character_struggle = { - phase_has_catalyst = catalyst_sign_truce_outside_war - } - has_character_flag = agenda_towards_escalation - } - } - add = -50 - } - else_if = { - limit = { - scope:recipient = { - any_character_struggle = { - phase_has_catalyst = catalyst_sign_truce_outside_war - } - } - } - add = 100 - } - } - } } ## Performance-enhancement ai_potential = { @@ -3179,6 +3144,7 @@ contract_assistance_interaction = { involvement = involved has_struggle_phase_parameter = unlocks_contract_assistance_interaction } + culture = { has_cultural_parameter = unlocks_contract_assistance } is_landless_adventurer = yes } } @@ -3278,6 +3244,21 @@ contract_assistance_interaction = { } } } + + # Sensible restrictions to keep CulTrads from making this OP. + scope:recipient = { + custom_tooltip = { + text = contract_assistance_tier_too_high_tt + OR = { + highest_held_title_tier = tier_county + highest_held_title_tier >= scope:actor.highest_held_title_tier + sub_realm_size >= scope:actor.sub_realm_size + } + } + } + scope:actor = { + NOT = { highest_held_title_tier >= tier_empire } + } } can_be_picked = { diff --git a/common/character_interactions/05_bp2_interactions.txt b/common/character_interactions/05_bp2_interactions.txt index 37c12620..8bfd457d 100644 --- a/common/character_interactions/05_bp2_interactions.txt +++ b/common/character_interactions/05_bp2_interactions.txt @@ -7,6 +7,7 @@ offer_hostage_interaction = { category = interaction_category_diplomacy common_interaction = no + interface_priority = 11 ai_min_reply_days = 4 ai_max_reply_days = 9 popup_on_receive = yes @@ -572,6 +573,7 @@ demand_hostage_interaction = { popup_on_receive = yes pause_on_receive = yes icon = icon_hostage + interface_priority = 13 desc = demand_hostage_interaction_desc @@ -1238,6 +1240,7 @@ exchange_hostage_interaction = { popup_on_receive = yes pause_on_receive = yes icon = icon_hostage + interface_priority = 12 desc = exchange_hostage_interaction_desc @@ -3895,6 +3898,12 @@ influence_child_personality_interaction = { desc = HAS_DIPLOMACY_SKILL_REASON } + modifier = { #more likely with a Wet Nurse employed + exists = scope:actor.court_position:wet_nurse_court_position + add = 10 + desc = HAS_WET_NURSE_REASON + } + modifier = { #more likely if chosen trait is a virtue in recipients faith add = 10 switch = { diff --git a/common/character_interactions/06_ep3_interactions.txt b/common/character_interactions/06_ep3_interactions.txt index 1528e29a..a10af32b 100644 --- a/common/character_interactions/06_ep3_interactions.txt +++ b/common/character_interactions/06_ep3_interactions.txt @@ -1,7 +1,7 @@ # PLAYER ONLY - AI uses the two separate interactions below this ( Promote/Harm Candidacy) influence_candidacy_interaction = { icon = support_candidacy - category = interaction_category_admin + category = interaction_category_succession common_interaction = yes interface_priority = 100 desc = influence_candidacy_interaction_desc @@ -17,7 +17,7 @@ influence_candidacy_interaction = { every_house_member = { limit = { is_independent_ruler = no - has_government = administrative_government + government_allows = administrative top_liege = scope:actor.top_liege any_valid_title_to_grant_trigger = { CANDIDATE = this @@ -32,7 +32,7 @@ influence_candidacy_interaction = { every_courtier_or_guest = { limit = { is_independent_ruler = no - has_government = administrative_government + government_allows = administrative top_liege = scope:actor.top_liege any_valid_title_to_grant_trigger = { CANDIDATE = this @@ -60,6 +60,7 @@ influence_candidacy_interaction = { scope:target = { tier >= tier_duchy exists = holder + is_noble_family_title = no holder = { top_liege = scope:recipient OR = { @@ -73,13 +74,13 @@ influence_candidacy_interaction = { is_shown = { scope:actor = { is_ai = no - has_government = administrative_government + government_allows = administrative } trigger_if = { limit = { exists = scope:secondary_recipient } scope:secondary_recipient = { is_independent_ruler = no - has_government = administrative_government + government_allows = administrative top_liege = scope:actor.top_liege } } @@ -146,6 +147,18 @@ influence_candidacy_interaction = { send_option = { flag = as_much_as_needed_influence_option localization = "as_much_as_needed_influence_option_desc" + is_valid = { + trigger_if = { + limit = { + exists = scope:target + exists = scope:secondary_recipient + } + custom_tooltip = { + text = already_first_in_line_influence_option_desc + NOT = { scope:target.current_heir = scope:secondary_recipient } + } + } + } } send_option = { flag = major_influence_option @@ -569,7 +582,6 @@ influence_candidacy_interaction = { # AI ONLY - Interaction is referenced in code, please don't rename it used by AI from code support_candidacy_interaction = { icon = support_candidacy - category = interaction_category_admin common_interaction = yes hidden = yes @@ -590,19 +602,22 @@ support_candidacy_interaction = { scope:target = { tier >= tier_duchy exists = holder - - holder.top_liege = scope:recipient + is_noble_family_title = no + holder = { + top_liege = scope:recipient + has_realm_law_flag = appointment_type_succession + } } } is_shown = { scope:actor = { is_ai = yes - has_government = administrative_government + government_allows = administrative } scope:secondary_recipient = { is_independent_ruler = no - has_government = administrative_government + government_allows = administrative top_liege = scope:actor.top_liege } } @@ -881,6 +896,9 @@ support_candidacy_interaction = { # No one promoting... ripe for the taking modifier = { scope:target = { + holder = { + has_realm_law_flag = appointment_type_succession + } NOT = { any_title_heir = { "appointment_candidate_accumulated_score(scope:target)" > 0 @@ -972,9 +990,9 @@ support_candidacy_interaction = { modifier = { scope:secondary_recipient = { any_heir_title = { - + is_noble_family_title = no holder = { - has_government = administrative_government + government_allows = administrative } } } @@ -984,6 +1002,9 @@ support_candidacy_interaction = { # Promote only one house member for each title modifier = { scope:target = { + holder = { + has_realm_law_flag = appointment_type_succession + } any_title_heir = { exists = house exists = scope:actor.house @@ -1098,7 +1119,6 @@ support_candidacy_interaction = { # AI ONLY - Smear campaign against a character to reduce score harm_candidacy_interaction = { icon = harm_candidacy - category = interaction_category_admin common_interaction = yes hidden = yes @@ -1120,17 +1140,18 @@ harm_candidacy_interaction = { exists = holder holder = { top_liege = scope:recipient + has_realm_law_flag = appointment_type_succession } } } is_shown = { scope:actor = { - has_government = administrative_government + government_allows = administrative } scope:secondary_recipient = { is_independent_ruler = no - has_government = administrative_government + government_allows = administrative top_liege = scope:actor.top_liege } } @@ -1379,7 +1400,7 @@ harm_candidacy_interaction = { ai_potential = { influence > major_influence_value - has_government = administrative_government + government_allows = administrative ai_honor <= 25 } @@ -1448,9 +1469,11 @@ harm_candidacy_interaction = { # Request support from another character request_appointment_support = { - category = interaction_category_admin - common_interaction = yes - interface_priority = 70 + category = interaction_category_succession + common_interaction = no + interface_priority = 175 + filter_tags = { admin_house_head } + custom_character_sort = { governor_efficiency candidate_score } desc = request_appointment_support_desc @@ -1464,7 +1487,7 @@ request_appointment_support = { limit = { this != scope:recipient is_alive = yes - has_government = administrative_government + government_allows = administrative # Check that they are still valid to be appointed any_valid_title_to_grant_trigger = { CANDIDATE = this @@ -1482,7 +1505,7 @@ request_appointment_support = { every_house_member = { limit = { this != scope:recipient - has_government = administrative_government + government_allows = administrative any_valid_title_to_grant_trigger = { CANDIDATE = this TOP_LIEGE = scope:actor.top_liege @@ -1524,6 +1547,7 @@ request_appointment_support = { exists = holder holder = { top_liege = scope:actor.top_liege + has_realm_law_flag = appointment_type_succession } } scope:actor = { @@ -1537,10 +1561,10 @@ request_appointment_support = { } is_shown = { - scope:actor = { has_government = administrative_government } + scope:actor = { government_allows = administrative } scope:recipient = { this != scope:actor - has_government = administrative_government + government_allows = administrative top_liege = scope:actor.top_liege } } @@ -1549,7 +1573,7 @@ request_appointment_support = { scope:actor = { house = { any_house_member = { - has_government = administrative_government + government_allows = administrative any_valid_title_to_grant_trigger = { CANDIDATE = this TOP_LIEGE = scope:actor.top_liege @@ -2142,7 +2166,7 @@ request_appointment_support = { } ai_potential = { - has_government = administrative_government + government_allows = administrative house ?= { OR = { is_powerful_family = yes @@ -2167,7 +2191,7 @@ request_appointment_support = { # Demand that a vassal switches to admin # Note: Do not rename or delete this interaction as its directly referred to in code demand_admin_interaction = { - category = interaction_category_admin + category = interaction_category_vassal icon = demand_admin_interaction ai_maybe = yes @@ -2176,7 +2200,10 @@ demand_admin_interaction = { can_send_despite_rejection = yes ai_accept_negotiation = yes popup_on_receive = yes - common_interaction = yes + common_interaction = no + + #according to telemetry, practically never used + interface_priority = 0 ai_targets = { ai_recipients = vassals @@ -2189,12 +2216,12 @@ demand_admin_interaction = { desc = demand_admin_interaction_desc is_shown = { - scope:actor = { has_government = administrative_government } + scope:actor = { government_allows = administrative } scope:recipient = { target_is_liege_or_above = scope:actor is_ai = yes is_ruler = yes - NOT = { has_government = administrative_government } + NOT = { government_allows = administrative } } trigger_if = { limit = { @@ -2303,7 +2330,7 @@ demand_admin_interaction = { } ai_potential = { - has_government = administrative_government + government_allows = administrative is_adult = yes } @@ -2334,7 +2361,8 @@ demand_admin_interaction = { #Contest the appointment of another character to a title you have a claim on contest_appointment_interaction = { - category = interaction_category_admin + category = interaction_category_vassal + filter_tags = { admin_governor } common_interaction = yes highlighted_reason = HIGHLIGHTED_CAN_CONTEST_APPOINTMENT notification_text = contest_appointment_interaction_desc_tt @@ -2379,8 +2407,8 @@ contest_appointment_interaction = { # Admin Govt #You don't have another appointment scope:actor = { is_landless_administrative = yes } - scope:recipient = { has_government = administrative_government } - scope:intermediary ?= { has_government = administrative_government } + scope:recipient = { government_allows = administrative } + scope:intermediary ?= { government_allows = administrative } # Make sure scope:recipient is suitable. scope:recipient = { # We only target vassals of the liege @@ -2572,7 +2600,7 @@ contest_appointment_interaction = { scope:recipient = { every_held_title = { limit = { - + is_noble_family_title = no tier >= tier_county any_this_title_or_de_jure_above = { this = scope:target @@ -3023,12 +3051,14 @@ contest_appointment_interaction = { # Request a council position from your liege in exchange for influence request_council_interaction = { - category = interaction_category_admin - interface_priority = 90 + category = interaction_category_vassal + interface_priority = 119 #listed right after force_onto_council icon = council desc = request_council_interaction_desc + filter_tags = { admin_liege } + special_interaction = request_council_position interface = council_task_interaction ai_maybe = yes @@ -3066,8 +3096,8 @@ request_council_interaction = { liege ?= scope:recipient } #Admin only - scope:actor = { has_government = administrative_government } - scope:recipient = { has_government = administrative_government } + scope:actor = { government_allows = administrative } + scope:recipient = { government_allows = administrative } trigger_if = { limit = { exists = scope:target.councillor @@ -3482,8 +3512,10 @@ request_council_interaction = { # Transfer a single county (not belonging to a theme) to an already existing governor transfer_county_interaction = { icon = icon_transfer_county - category = interaction_category_admin + category = interaction_category_vassal + filter_tags = { admin_governor } common_interaction = no + interface_priority = 4 desc = transfer_county_interaction_desc @@ -3499,10 +3531,10 @@ transfer_county_interaction = { scope:recipient = { target_is_liege_or_above = scope:actor highest_held_title_tier >= tier_duchy - has_government = administrative_government + government_allows = administrative } scope:actor = { - has_government = administrative_government + government_allows = administrative is_independent_ruler = yes highest_held_title_tier >= tier_empire } @@ -3877,7 +3909,7 @@ castrate_child_interaction = { ai_recipients = family max = 5 } - ai_frequency = 12 + ai_frequency = 36 desc = castrate_child_interaction_desc @@ -4201,20 +4233,20 @@ castrate_child_interaction = { ep3_castration_interest_trigger = yes } scope:recipient = { - #target is 3rd child or lower + #target is 4 child or lower AND = { ep3_ideal_castration_candidate_trigger = yes NOT = { is_heir_of = scope:actor } #Not oldest child any_sibling = { - count >= 2 + count >= 3 is_male = yes age > scope:recipient.age } } } - add = 100 + add = 20 } modifier = { scope:actor = { @@ -4229,13 +4261,7 @@ castrate_child_interaction = { NOT = { is_child_of = scope:actor } } } - add = 100 - } - modifier = { - scope:actor = { - has_trait = greedy - } - factor = 2 + add = 20 } modifier = { scope:actor = { @@ -4243,12 +4269,6 @@ castrate_child_interaction = { } factor = 2 } - modifier = { - scope:actor = { - has_trait = ambitious - } - factor = 2 - } modifier = { scope:actor = { has_trait = sadistic @@ -4262,7 +4282,7 @@ castrate_child_interaction = { value <= -50 } } - factor = 2 + factor = 1.5 } modifier = { scope:recipient = { @@ -4280,7 +4300,7 @@ castrate_child_interaction = { scope:actor = { age <= 4 } - factor = 3 + factor = 2 } modifier = { OR = { @@ -4407,12 +4427,13 @@ castrate_child_interaction = { # recipient = receiver # secondary_actor = eunuch offer_eunuch_interaction = { - category = interaction_category_diplomacy + category = interaction_category_friendly ai_min_reply_days = 4 ai_max_reply_days = 9 popup_on_receive = yes pause_on_receive = yes icon = eunuch + interface_priority = 29 #after Gift Artifact populate_recipient_list= { scope:actor = { @@ -4435,8 +4456,8 @@ offer_eunuch_interaction = { is_shown = { # Only admin gov care about this - scope:actor = { has_government = administrative_government } - scope:recipient = { has_government = administrative_government } + scope:actor = { government_allows = administrative } + scope:recipient = { government_allows = administrative } # Only if you actually have any eunuchs in your court scope:actor = { any_courtier = { @@ -4701,7 +4722,7 @@ offer_eunuch_interaction = { # Add artifact to Cabinet of Curiosities cabinet_of_curiosities_interaction = { - category = interaction_category_admin + category = interaction_category_friendly common_interaction = yes interface_priority = 60 desc = cabinet_of_curiosities_interaction_desc @@ -4906,10 +4927,12 @@ cabinet_of_curiosities_interaction = { # Send an acknowledgment and reward for a governor's good performance acknowledge_governor_interaction = { - category = interaction_category_admin + category = interaction_category_vassal + filter_tags = { admin_governor } + icon = icon_acknowledge_governor - common_interaction = yes - interface_priority = 60 + common_interaction = no + interface_priority = 21 #right before mentor in governance popup_on_receive = yes ai_targets = { @@ -4925,10 +4948,10 @@ acknowledge_governor_interaction = { scope:recipient = { target_is_liege_or_above = scope:actor highest_held_title_tier >= tier_duchy - has_government = administrative_government + government_allows = administrative } scope:actor = { - has_government = administrative_government + government_allows = administrative is_independent_ruler = yes highest_held_title_tier >= tier_empire } @@ -4991,7 +5014,7 @@ acknowledge_governor_interaction = { } ai_potential = { - has_government = administrative_government + government_allows = administrative highest_held_title_tier >= tier_empire } @@ -5065,9 +5088,10 @@ acknowledge_governor_interaction = { # Affect Governor's performance boost_efficiency_interaction = { - category = interaction_category_admin + category = interaction_category_vassal + filter_tags = { admin_governor } icon = icon_boost_efficiency - interface_priority = 1 + interface_priority = 19 popup_on_receive = yes ai_targets = { @@ -5083,9 +5107,9 @@ boost_efficiency_interaction = { desc = boost_efficiency_interaction_desc is_shown = { - scope:actor = { has_government = administrative_government } + scope:actor = { government_allows = administrative } scope:recipient = { - has_government = administrative_government + government_allows = administrative NOT = { this = scope:actor } is_governor = yes top_liege = scope:actor.top_liege @@ -5210,7 +5234,7 @@ boost_efficiency_interaction = { } ai_potential = { - has_government = administrative_government + government_allows = administrative top_liege = { any_vassal = { is_governor = yes @@ -5275,9 +5299,11 @@ boost_efficiency_interaction = { # Affect Governor's performance damage_efficiency_interaction = { - category = interaction_category_admin + category = interaction_category_vassal + filter_tags = { admin_governor } + icon = icon_damage_efficiency - interface_priority = 0 + interface_priority = 18 #right after bolster governance popup_on_receive = yes ai_targets = { @@ -5293,7 +5319,7 @@ damage_efficiency_interaction = { desc = damage_efficiency_interaction_desc is_shown = { - scope:actor = { has_government = administrative_government } + scope:actor = { government_allows = administrative } scope:recipient = { is_governor = yes NOT = { this = scope:actor } @@ -5419,7 +5445,7 @@ damage_efficiency_interaction = { } ai_potential = { - has_government = administrative_government + government_allows = administrative top_liege = { any_vassal = { is_governor = yes @@ -5484,9 +5510,10 @@ damage_efficiency_interaction = { # Emperor fires Governor - AKA Depose Governor/depose_governor governor_removal_interaction = { - category = interaction_category_admin + category = interaction_category_succession + filter_tags = { admin_governor } icon = icon_governor_removal - common_interaction = yes + common_interaction = no desc = governor_removal_interaction_desc greeting = negative notification_text = GOVERNOR_REMOVAL_NOTIFICATION_TEXT @@ -5499,7 +5526,7 @@ governor_removal_interaction = { is_shown = { scope:actor = { is_independent_ruler = yes - has_government = administrative_government + government_allows = administrative } scope:recipient = { NOT = { this = scope:actor } @@ -5552,7 +5579,7 @@ governor_removal_interaction = { any_held_title = { tier = tier_kingdom is_landless_type_title = no - + is_noble_family_title = no } } add = { @@ -5560,7 +5587,7 @@ governor_removal_interaction = { limit = { tier = tier_kingdom is_landless_type_title = no - + is_noble_family_title = no } add = { value = scope:recipient.massive_influence_value @@ -5575,7 +5602,7 @@ governor_removal_interaction = { any_held_title = { tier = tier_duchy is_landless_type_title = no - + is_noble_family_title = no } } add = { @@ -5583,7 +5610,7 @@ governor_removal_interaction = { limit = { tier = tier_duchy is_landless_type_title = no - + is_noble_family_title = no } add = scope:recipient.massive_influence_value } @@ -5714,7 +5741,7 @@ governor_removal_interaction = { if = { limit = { any_held_title = { - + is_noble_family_title = no exists = current_heir current_heir = { NOR = { @@ -5739,7 +5766,7 @@ governor_removal_interaction = { } every_held_title = { limit = { - + is_noble_family_title = no exists = current_heir current_heir = { NOR = { @@ -5923,10 +5950,12 @@ governor_removal_interaction = { # Demand Emperor fires Governor - AKA Compel Resignation/compel_resignation force_governor_removal_interaction = { - category = interaction_category_admin + category = interaction_category_succession + filter_tags = { admin_governor } icon = icon_force_governor_removal desc = force_governor_removal_interaction_desc - interface_priority = 95 + interface_priority = 134 # right after Force Retirement + common_interaction = no greeting = positive notification_text = DEMAND_GOVERNOR_REMOVAL_NOTIFICATION_TEXT @@ -5944,7 +5973,7 @@ force_governor_removal_interaction = { scope:actor = { is_independent_ruler = no exists = top_liege - top_liege = { has_government = administrative_government } + top_liege = { government_allows = administrative } } scope:secondary_recipient ?= { is_governor = yes } OR = { @@ -6006,7 +6035,7 @@ force_governor_removal_interaction = { house ?= { is_dominant_family = no } any_held_title = { is_landless_type_title = no - + is_noble_family_title = no } exists = house is_governor = yes @@ -6053,7 +6082,7 @@ force_governor_removal_interaction = { any_held_title = { tier = tier_duchy is_landless_type_title = no - + is_noble_family_title = no } } add = { @@ -6062,7 +6091,7 @@ force_governor_removal_interaction = { limit = { tier = tier_duchy is_landless_type_title = no - + is_noble_family_title = no } add = scope:secondary_recipient.massive_influence_value } @@ -6074,7 +6103,7 @@ force_governor_removal_interaction = { any_held_title = { tier = tier_kingdom is_landless_type_title = no - + is_noble_family_title = no } } add = { @@ -6083,7 +6112,7 @@ force_governor_removal_interaction = { limit = { tier = tier_kingdom is_landless_type_title = no - + is_noble_family_title = no } add = { value = scope:secondary_recipient.massive_influence_value @@ -6400,7 +6429,7 @@ force_governor_removal_interaction = { ai_potential = { influence > massive_influence_value is_independent_ruler = no - has_government = administrative_government + government_allows = administrative } ai_accept = { base = -50 @@ -6596,9 +6625,12 @@ force_governor_removal_interaction = { # Force Step Down force_step_down_interaction = { icon = icon_force_to_step_down - common_interaction = yes - interface_priority = 65 - category = interaction_category_admin + common_interaction = no + interface_priority = 135 + category = interaction_category_succession + + filter_tags = { admin_governor } + cooldown_against_recipient = { years = 5 } @@ -6607,13 +6639,13 @@ force_step_down_interaction = { can_be_picked_title = { scope:target = { tier = tier_duchy - + is_noble_family_title = no } } has_valid_target_showing_failures_only = { scope:target = { tier = tier_duchy - + is_noble_family_title = no } } @@ -6640,16 +6672,31 @@ force_step_down_interaction = { is_shown = { scope:actor = { - has_government = administrative_government + government_allows = administrative is_independent_ruler = no this != scope:recipient } scope:recipient = { - has_government = administrative_government + government_allows = administrative is_governor = yes } } + is_highlighted = { + scope:recipient ?= { + any_held_title = { + current_heir ?= { + OR = { + scope:actor ?= this + house ?= scope:actor.house + } + } + } + } + } + + highlighted_reason = HIGHLIGHTED_FORCE_STEP_DOWN_HEIR + is_valid_showing_failures_only = { scope:actor = { is_adult = yes @@ -6717,7 +6764,7 @@ force_step_down_interaction = { every_held_title = { limit = { tier >= tier_duchy - + is_noble_family_title = no } add = 1 } @@ -6962,7 +7009,7 @@ force_step_down_interaction = { is_scheme_category = political } } - has_government = administrative_government + government_allows = administrative is_independent_ruler = no highest_held_title_tier >= tier_duchy } @@ -7063,14 +7110,12 @@ force_step_down_interaction = { # Request a governorship from your liege request_governorship_interaction = { - category = interaction_category_admin + category = interaction_category_vassal icon = icon_request_governorship desc = request_governorship_interaction_desc common_interaction = yes - interface_priority = 95 - is_highlighted = { - always = yes - } + + filter_tags = { admin_liege } ai_maybe = yes ai_min_reply_days = 4 @@ -7152,7 +7197,7 @@ request_governorship_interaction = { scope:recipient != scope:actor scope:recipient = scope:actor.top_liege scope:actor = { - has_government = administrative_government + government_allows = administrative is_governor = no } } @@ -7210,7 +7255,7 @@ request_governorship_interaction = { scope:target.tier = tier_duchy trigger_if = { limit = { exists = scope:target.holder } - scope:target.holder ?= { has_government = administrative_government } + scope:target.holder ?= { government_allows = administrative } } } @@ -7633,7 +7678,7 @@ request_governorship_interaction = { noble_family_adoption_interaction = { icon = icon_dynasty category = interaction_category_friendly - interface_priority = 60 + interface_priority = 25 desc = noble_family_adoption_interaction_desc use_diplomatic_range = yes @@ -7662,6 +7707,9 @@ noble_family_adoption_interaction = { any_ancestor = { this = scope:actor } } } + scope:actor = { + is_house_head = yes + } } is_valid = {} @@ -7685,12 +7733,7 @@ noble_family_adoption_interaction = { } is_ruler = no } - scope:actor = { - custom_tooltip = { - text = adopt_interaction_noble_family_house_head_tt - is_house_head = yes - } - } + } send_option = { @@ -8149,7 +8192,6 @@ noble_family_adoption_interaction = { # # Referenced in code request_ally_title_troops_interaction = { - category = interaction_category_admin desc = request_ally_title_troops_interaction_desc hidden = yes @@ -8188,12 +8230,12 @@ request_ally_title_troops_interaction = { is_shown = { scope:actor = { - has_government = administrative_government + government_allows = administrative is_independent_ruler = no is_governor = yes } scope:recipient = { - has_government = administrative_government + government_allows = administrative NOT = { this = scope:actor this = scope:actor.top_liege @@ -8249,7 +8291,7 @@ request_ally_title_troops_interaction = { has_valid_target_showing_failures_only = { scope:target = { tier >= tier_duchy - + is_noble_family_title = no } } @@ -8365,7 +8407,6 @@ request_ally_title_troops_interaction = { } request_emperor_title_troops_interaction = { - category = interaction_category_admin interface_priority = 60 common_interaction = yes desc = request_emperor_title_troops_interaction_desc @@ -8407,12 +8448,12 @@ request_emperor_title_troops_interaction = { is_shown = { scope:actor = { - has_government = administrative_government + government_allows = administrative is_independent_ruler = no is_governor = yes } scope:recipient = { - has_government = administrative_government + government_allows = administrative this = scope:actor.liege } } @@ -8455,7 +8496,7 @@ request_emperor_title_troops_interaction = { has_valid_target_showing_failures_only = { scope:target = { tier >= tier_duchy - + is_noble_family_title = no exists = holder holder.top_liege = scope:recipient NOT = { holder = scope:actor } @@ -8839,7 +8880,6 @@ request_emperor_title_troops_interaction = { } request_title_troops_back_interaction = { - category = interaction_category_admin desc = request_title_troops_back_interaction_desc hidden = yes @@ -8896,12 +8936,12 @@ request_title_troops_back_interaction = { is_shown = { scope:actor = { - has_government = administrative_government + government_allows = administrative is_independent_ruler = no is_ai = no # The AI should not request their troops back ahead of time } scope:recipient = { - has_government = administrative_government + government_allows = administrative this = scope:actor } } @@ -8992,7 +9032,8 @@ request_title_troops_back_interaction = { # Request Raid Estate Remit request_raid_remit_interaction = { icon = icon_request_raid_remit - category = interaction_category_admin + category = interaction_category_hostile + filter_tags = { admin_liege } interface_priority = 90 desc = request_raid_remit_interaction_desc @@ -9006,13 +9047,13 @@ request_raid_remit_interaction = { is_shown = { scope:actor = { is_independent_ruler = no - has_government = administrative_government + government_allows = administrative } scope:secondary_recipient ?= { NOT = { house = scope:recipient.house } top_liege = scope:actor.top_liege NOT = { house = scope:actor.house } - has_government = administrative_government + government_allows = administrative any_held_title = { is_noble_family_title = yes } } } @@ -9290,13 +9331,13 @@ request_raid_remit_interaction = { # Request to become co-emperor request_co_emperor_interaction = { - category = interaction_category_diarch + category = interaction_category_vassal icon = icon_declare_me_co_emperor desc = request_co_emperor_interaction_desc notification_text = DECLARE_ME_CO_EMPEROR_PROPOSAL - interface_priority = 20 + interface_priority = 5 ai_min_reply_days = 4 ai_max_reply_days = 9 @@ -9362,7 +9403,7 @@ request_co_emperor_interaction = { is_shown = { scope:actor = { - has_government = administrative_government + government_allows = administrative is_independent_ruler = no } scope:recipient = { @@ -9797,11 +9838,13 @@ request_co_emperor_interaction = { # Request a character to fight a war on your behalf - AKA Summon to War/summon_to_war frontier_influence_war_interaction = { - category = interaction_category_admin + category = interaction_category_diplomacy interface_priority = 80 icon = icon_coax_to_war desc = frontier_influence_war_interaction_desc + filter_tags = { admin_governor } + is_highlighted = { scope:recipient = { is_at_war = no @@ -9898,11 +9941,11 @@ frontier_influence_war_interaction = { is_shown = { scope:actor = { is_independent_ruler = yes - has_government = administrative_government + government_allows = administrative NOT = { government_has_flag = government_is_landless_adventurer } } scope:recipient = { - has_government = administrative_government + government_allows = administrative NOT = { government_has_flag = government_is_landless_adventurer } custom_tooltip = { text = admin_theme_type_trigger @@ -10039,7 +10082,7 @@ frontier_influence_war_interaction = { } ai_potential = { - has_government = administrative_government + government_allows = administrative is_independent_ruler = yes } @@ -10258,9 +10301,10 @@ frontier_influence_war_interaction = { #House Head requests to landed family member - AKA Request as House Head house_head_request_interaction = { icon = house_head_request_interaction - category = interaction_category_admin - common_interaction = yes + category = interaction_category_friendly + common_interaction = no desc = house_head_request_interaction_desc + interface_priority = 10 ai_maybe = yes ai_min_reply_days = 4 @@ -10295,11 +10339,11 @@ house_head_request_interaction = { is_shown = { NOT = { scope:recipient = scope:actor } scope:actor = { - has_government = administrative_government + government_allows = administrative this = house.house_head } scope:recipient = { - has_government = administrative_government + government_allows = administrative house = scope:actor.house } } @@ -10848,7 +10892,7 @@ ep3_hof_ask_for_influence_interaction = { } scope:actor = { is_playable_character = yes - has_government = administrative_government + government_allows = administrative is_lowborn = no } } @@ -11419,10 +11463,10 @@ ep3_join_faction_war_interaction = { this = scope:recipient is_at_war_with = scope:recipient } - has_government = administrative_government + government_allows = administrative } scope:recipient = { - has_government = administrative_government + government_allows = administrative scope:actor.liege ?= liege } scope:actor.joined_faction ?= { @@ -11673,11 +11717,11 @@ ep3_switch_faction_war_sides_interaction = { scope:actor = { has_ep3_dlc_trigger = yes is_at_war_with = scope:recipient - has_government = administrative_government + government_allows = administrative NOT = { this = scope:recipient } } scope:recipient = { - has_government = administrative_government + government_allows = administrative OR = { is_vassal_of = scope:actor scope:actor.liege ?= liege @@ -12017,7 +12061,11 @@ ep3_switch_faction_war_sides_interaction = { # Request Permission to Wage War ep3_governor_request_war_permission_interaction = { icon = invasion - category = interaction_category_admin + category = interaction_category_vassal + filter_tags = { admin_liege } + + #basically never used according to telemetry + interface_priority = 0 desc = ep3_governor_request_war_permission_interaction_desc @@ -12038,7 +12086,7 @@ ep3_governor_request_war_permission_interaction = { is_shown = { scope:actor = { - has_government = administrative_government + government_allows = administrative liege = scope:recipient OR = { vassal_contract_has_flag = admin_theme_frontier @@ -12046,7 +12094,7 @@ ep3_governor_request_war_permission_interaction = { } } scope:recipient = { - has_government = administrative_government + government_allows = administrative is_independent_ruler = yes has_realm_law_flag = admin_vassal_wars_permission_only } @@ -12235,7 +12283,7 @@ ep3_governor_request_war_permission_interaction = { } ai_potential = { - has_government = administrative_government + government_allows = administrative is_adult = yes liege = { is_at_war = no } # Don't ask if your liege is at war } @@ -12274,3 +12322,117 @@ ep3_governor_request_war_permission_interaction = { } } } + +# Order Mass Arrests +ep3_mass_arrests_interaction = { + icon = icon_scheme_abduct + category = interaction_category_hostile + filter_tags = { admin_house_head } + + interface_priority = 0 + + desc = ep3_mass_arrests_interaction_desc + + cooldown = { years = 5 } + cooldown_against_recipient = { years = 15 } + + ai_targets = { + ai_recipients = vassals + max = 10 + } + ai_target_quick_trigger = { + adult = yes + } + ai_frequency = 36 + + is_shown = { + has_ep3_dlc_trigger = yes + scope:actor = { + is_independent_ruler = yes + government_allows = administrative + dynasty ?= { has_dynasty_perk = ep3_administrative_legacy_5 } + } + scope:recipient = { + liege ?= scope:actor + any_held_title = { + is_noble_family_title = yes + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { exists = involved_activity } + is_imprisoned = no + } + scope:recipient = { + house = { is_dominant_family = no } + NOT = { has_strong_hook = scope:actor } + custom_tooltip = { + text = estate_is_in_capital_desc + domicile ?= { + domicile_location = scope:actor.capital_province + } + } + } + } + + auto_accept = yes + + on_accept = { + scope:recipient.house = { + house_head = { + add_character_flag = { + flag = mass_arrests_house_power_malus + years = 10 + } + # For follow-up event + save_scope_as = imprisoned_house_head + } + custom_tooltip = house_loses_power_rating + every_house_member = { + custom = every_house_member_tt + change_influence = major_influence_loss + custom_tooltip = { + text = imprisoned_by_you + scope:actor = { + imprison = { + target = prev + type = house_arrest + } + } + } + add_opinion = { + modifier = imprisoned_me + years = 10 + target = scope:actor + } + } + } + scope:actor = { + add_tyranny = massive_tyranny_gain + add_legitimacy = medium_legitimacy_loss + + # Fire follow-up + trigger_event = { + id = ep3_decisions_event.3201 + } + } + } + + ai_potential = { + government_allows = administrative + is_adult = yes + } + + ai_will_do = { + base = 0 + modifier = { + scope:actor = { + has_relation_rival = scope:recipient + } + add = 20 + desc = AI_YOUR_RIVAL + } + } +} diff --git a/common/character_interactions/06_ep3_scheme_interactions.txt b/common/character_interactions/06_ep3_scheme_interactions.txt index 6d9ad1f0..22360f68 100644 --- a/common/character_interactions/06_ep3_scheme_interactions.txt +++ b/common/character_interactions/06_ep3_scheme_interactions.txt @@ -5,7 +5,8 @@ start_slander_interaction = { icon = icon_scheme_slander interface_priority = 95 common_interaction = yes - category = interaction_category_admin + category = interaction_category_succession + filter_tags = { admin_house_head } send_name = START_SCHEME @@ -291,8 +292,9 @@ start_slander_interaction = { # Promote start_promote_interaction = { icon = icon_scheme_promote - interface_priority = 50 - category = interaction_category_admin + interface_priority = 230 + common_interaction = no + category = interaction_category_succession send_name = START_SCHEME @@ -340,12 +342,6 @@ start_promote_interaction = { } scope:recipient = { is_adult = yes - custom_tooltip = { - text = is_in_line_of_succession - any_heir_title = { - exists = this - } - } } } @@ -906,8 +902,9 @@ start_generate_claim_interaction = { start_challenge_status_interaction = { icon = icon_scheme_challenge_status interface_priority = 80 - category = interaction_category_admin - + category = interaction_category_hostile + filter_tags = { admin_house_head } + common_interaction = yes send_name = START_SCHEME scheme = challenge_status @@ -1133,7 +1130,7 @@ start_expand_power_base_interaction = { icon = icon_scheme_expand_power_base common_interaction = yes interface_priority = 70 - category = interaction_category_admin + category = interaction_category_succession send_name = START_SCHEME @@ -1288,8 +1285,10 @@ start_expand_power_base_interaction = { # Depose Scheme start_depose_interaction = { icon = icon_scheme_depose - interface_priority = 50 - category = interaction_category_admin + interface_priority = 16 + category = interaction_category_vassal + + filter_tags = { admin_liege } send_name = START_SCHEME @@ -1581,9 +1580,11 @@ start_depose_interaction = { # Foster Legitimacy start_foster_legitimacy_interaction = { icon = icon_scheme_foster_legitimacy - interface_priority = 55 - common_interaction = yes - category = interaction_category_admin + interface_priority = 10 + common_interaction = no + category = interaction_category_vassal + + filter_tags = { admin_liege } send_name = START_SCHEME @@ -1746,9 +1747,11 @@ start_foster_legitimacy_interaction = { # Damage Legitimacy start_damage_legitimacy_interaction = { icon = icon_scheme_damage_legitimacy - interface_priority = 50 - common_interaction = yes - category = interaction_category_admin + interface_priority = 9 # listed after start_foster_legitimacy_interaction + common_interaction = no + category = interaction_category_vassal + + filter_tags = { admin_liege } send_name = START_SCHEME @@ -1901,12 +1904,15 @@ start_damage_legitimacy_interaction = { start_dispute_border_interaction = { icon = icon_dispute_border interface_priority = 75 - category = interaction_category_admin + category = interaction_category_vassal send_name = START_SCHEME scheme = dispute_border ignores_pending_interaction_block = yes ai_targets = { ai_recipients = peer_vassals } ai_frequency = 60 + common_interaction = yes + + filter_tags = { admin_governor } cooldown_against_recipient = { years = 5 } @@ -1928,7 +1934,7 @@ start_dispute_border_interaction = { this != scope:actor is_alive = yes top_liege = scope:actor.top_liege - is_governor = yes + is_governor_or_admin_count = yes in_diplomatic_range = scope:actor } } @@ -1943,9 +1949,30 @@ start_dispute_border_interaction = { target_title = scope:target } } - custom_tooltip = { - text = dispute_border_county_neighbour_tt - character_is_realm_neighbor = scope:recipient + trigger_if = { + limit = { + scope:recipient = { + sub_realm_size > 1 + } + } + custom_tooltip = { + text = dispute_border_county_neighbour_tt + character_is_realm_neighbor = scope:recipient + } + } + trigger_else = { + custom_tooltip = { + text = dispute_border_county_neighbour_tt + scope:recipient.capital_county = { + holder = scope:recipient + any_neighboring_county = { + OR = { + holder = scope:actor + holder.liege ?= scope:actor + } + } + } + } } is_in_civil_war = no custom_tooltip = { @@ -2062,8 +2089,17 @@ start_dispute_border_interaction = { education_5_scheme_progress_effect = { SKILL = diplomacy } # Scheme bonuses from being the emperor/dominant family/powerful family ep3_actor_scheme_modifier_effect = yes - - custom_tooltip = boundary_dispute_outcome_tt + if = { + limit = { + scope:recipient = { + highest_held_title_tier >= tier_duchy + } + } + custom_tooltip = boundary_dispute_outcome_tt + } + else = { + custom_tooltip = boundary_dispute_outcome_vassal_tt + } stress_impact = { content = medium_stress_impact_gain @@ -2071,12 +2107,25 @@ start_dispute_border_interaction = { } scope:recipient = { if = { - limit = { is_ai = yes } + limit = { + is_ai = yes + highest_held_title_tier >= tier_duchy + } add_opinion = { target = scope:actor modifier = attempted_dispute_border_opinion } } + else_if = { + limit = { + is_ai = yes + } + add_opinion = { + target = scope:actor + modifier = attempted_dispute_border_opinion + opinion = -40 + } + } } } @@ -2110,6 +2159,7 @@ start_dispute_border_interaction = { } } } + add = 50 } # Relationships modifier = { @@ -2145,13 +2195,16 @@ start_subsume_province_interaction = { icon = icon_subsume_province common_interaction = yes interface_priority = 50 - category = interaction_category_admin + category = interaction_category_vassal send_name = START_SCHEME scheme = subsume_province ignores_pending_interaction_block = yes ai_targets = { ai_recipients = peer_vassals } ai_frequency = 60 + filter_tags = { admin_governor } + + cooldown = { years = 5 } target_type = title @@ -2260,10 +2313,6 @@ start_subsume_province_interaction = { } } - is_highlighted = { scope:recipient.governor_efficiency_presented <= -25 } - should_use_extra_icon = { scope:recipient.governor_efficiency_presented <= -25 } - extra_icon = "gfx/interface/icons/character_interactions/icon_damage_efficiency.dds" - cost = { influence = { add = { @@ -2432,7 +2481,7 @@ start_found_despotate_interaction = { icon = icon_found_despotate interface_priority = 60 common_interaction = yes - category = interaction_category_admin + category = interaction_category_friendly send_name = START_SCHEME scheme = found_despotate ignores_pending_interaction_block = yes @@ -2702,7 +2751,7 @@ start_found_despotate_interaction = { start_raid_estate_interaction = { icon = icon_raid_estate interface_priority = 90 - category = interaction_category_admin + category = interaction_category_hostile send_name = START_SCHEME scheme = raid_estate ignores_pending_interaction_block = yes @@ -2718,6 +2767,8 @@ start_raid_estate_interaction = { max = 20 } + filter_tags = { admin_house_head } + cooldown = { years = 5 } highlighted_reason = start_raid_estate_interaction_HIGHLIGHTED @@ -2727,6 +2778,7 @@ start_raid_estate_interaction = { is_shown = { scope:actor = { has_government = administrative_government } scope:recipient.house.house_head ?= { + this = scope:recipient exists = house NOT = { house = scope:actor.house } top_liege = scope:actor.top_liege @@ -2964,8 +3016,9 @@ start_raid_estate_interaction = { # Teach Governor - AKA Mentor in Governance/mentor_in_governance start_teach_governor_interaction = { icon = icon_teach_governor - interface_priority = 50 - category = interaction_category_admin + interface_priority = 20 + category = interaction_category_vassal + filter_tags = { admin_governor } send_name = START_SCHEME scheme = teach_governor ai_targets = { @@ -2993,6 +3046,11 @@ start_teach_governor_interaction = { top_liege = scope:actor.top_liege in_diplomatic_range = scope:actor } + + scope:actor = { + exists = domicile + domicile = { has_domicile_parameter = estate_unlock_teach_governor_interaction } + } } is_valid_showing_failures_only = { @@ -3348,7 +3406,8 @@ start_teach_governor_interaction = { start_ingratiate_family_interaction = { icon = icon_ingratiate_family interface_priority = 50 - category = interaction_category_admin + category = interaction_category_friendly + filter_tags = { admin_house_head } send_name = START_SCHEME scheme = ingratiate_family ignores_pending_interaction_block = yes @@ -3360,6 +3419,12 @@ start_ingratiate_family_interaction = { ai_frequency = 36 is_shown = { + scope:actor = { + can_start_scheme = { + type = ingratiate_family + target_character = scope:recipient + } + } scope:actor = { is_adult = yes is_imprisoned = no