updating character interactions

This commit is contained in:
trashb0at 2025-04-11 14:29:56 -04:00
parent c7cd996463
commit 9e9e27cc5b
22 changed files with 846 additions and 342 deletions

View file

@ -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

View file

@ -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 = {

View file

@ -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

View file

@ -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 = {

View file

@ -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

View file

@ -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 = {

View file

@ -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
}

View file

@ -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

View file

@ -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

View file

@ -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
}
}
}
}

View file

@ -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 = {

View file

@ -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

View file

@ -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

View file

@ -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 = {

View file

@ -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 = {

View file

@ -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

View file

@ -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

View file

@ -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
}

View file

@ -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 = {

View file

@ -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 = {

File diff suppressed because it is too large Load diff

View file

@ -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