10504 lines
279 KiB
Text
10504 lines
279 KiB
Text
@ai_skill_diff_upper_threshold = 8
|
|
@ai_skill_diff_lower_threshold = 2
|
|
@ai_prestige_bank_threshold = 2
|
|
|
|
@ai_core_loop_base_value = 4000
|
|
@ai_threshold_for_revoke_cyle = 3
|
|
@ai_secondary_powers_base_value = 500
|
|
|
|
###############################################
|
|
# #Setup & Misc
|
|
#
|
|
# CORE DIARCH POWERS
|
|
# diarch_revoke_title_interaction - diarch (actor) takes a title from a vassal of their liege (recipient) with an optional veto for the liege (third_party).
|
|
# diarch_retract_vassal_interaction - diarch (actor) takes a vassal from a vassal of their liege (recipient) with an optional veto for the liege (third_party).
|
|
# diarch_imprison_interaction - diarch (actor) tries to move a character (recipient) within the sub-realm of their liege (third) to their dungeon, with an optional veto for the liege.
|
|
# diarch_entrench_regency_interaction - diarch (actor) shifts the diarchy from temporary to entrenched, making it more difficult for their liege (recipient) to get rid of them.
|
|
#
|
|
# ANCILLARY DIARCH POWERS
|
|
# diarch_legal_meddling_interaction - diarch (actor) either tests learning or spends prestige to gain an unpressed claim on a title held by a vassal of their liege (recipient).
|
|
# diarch_syphon_treasury_interaction - diarch (actor) either tests stewardship or spends prestige to gain gold at the expense of negative modifiers delivered to the liege (recipient).
|
|
# diarch_shift_privileges_interaction - diarch (actor) either tests diplomacy or spends prestige to give negative modifiers to the lands of a vassal of their liege (secondary recipient), who can't resist.
|
|
##################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##################################################
|
|
# CORE DIARCH POWERS
|
|
|
|
# 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 = no
|
|
interface_priority = 35
|
|
diarch_interaction = yes
|
|
highlighted_reason = HIGHLIGHTED_CAN_DIARCH_REVOKE
|
|
notification_text = DIARCH_REVOKE_TITLE_PROPOSAL
|
|
intermediary_notification_text = diarch_interaction_requesting_sign_off.tt
|
|
intermediary_breakdown_yes = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_YES
|
|
intermediary_breakdown_no = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_NO
|
|
intermediary_breakdown_maybe = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_MAYBE
|
|
intermediary_answer_accept_key = REPLY_ANSWER_ALLOW
|
|
intermediary_answer_reject_key = REPLY_ANSWER_VETO
|
|
pre_answer_yes_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_YES
|
|
pre_answer_no_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_NO
|
|
pre_answer_maybe_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_MAYBE
|
|
icon = revoke_title
|
|
redirect = {
|
|
scope:actor.liege ?= { save_scope_as = intermediary }
|
|
}
|
|
|
|
desc = diarch_revoke_title_interaction_desc
|
|
send_name = diarch_revoke_title_interaction.send_name
|
|
|
|
special_interaction = diarch_revoke_title
|
|
interface = revoke_title
|
|
target_type = title
|
|
target_filter = recipient_domain_titles
|
|
ai_maybe = yes
|
|
ai_intermediary_maybe = yes
|
|
can_send_despite_rejection = yes
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
|
|
ai_min_reply_days = 4
|
|
ai_max_reply_days = 9
|
|
|
|
on_decline_summary = diarch_rebel_or_crime_summary
|
|
prompt = RETRACT_VASSAL_SELECT_VASSAL_TO_RETRACT
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
OR = {
|
|
AND = {
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
}
|
|
is_designated_diarch = yes
|
|
}
|
|
liege = {
|
|
has_diarchy_parameter = unlock_diarch_revoke_title_interaction
|
|
}
|
|
}
|
|
# Make sure scope:recipient is suitable.
|
|
scope:recipient = {
|
|
# We only target vassals of the liege...
|
|
liege = scope:actor.liege
|
|
this != scope:actor.liege
|
|
# ... who are appropriately landed.
|
|
is_landed_or_landless_administrative = yes
|
|
scope:recipient.highest_held_title_tier >= tier_county
|
|
}
|
|
}
|
|
|
|
is_valid = {
|
|
# Here to correct for some dodgy inheritance situations.
|
|
scope:actor != scope:intermediary
|
|
}
|
|
is_valid_showing_failures_only = {
|
|
# Standard validity checks.
|
|
title_revocation_standard_valid_showing_failures_only_trigger = yes
|
|
# Diarch must be able to act.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
# Plus make sure there's a legal right to revoke.
|
|
scope:actor.liege = {
|
|
trigger_if = {
|
|
limit = { government_has_flag = government_is_tribal }
|
|
custom_description = {
|
|
text = "liege_has_law_allowing_title_revocation_tribal"
|
|
has_realm_law_flag = title_revocation_allowed
|
|
}
|
|
}
|
|
trigger_else_if = {
|
|
limit = { government_has_flag = government_is_administrative }
|
|
custom_description = {
|
|
text = "cannot_diarch_revoke_administrative_titles"
|
|
always = no
|
|
}
|
|
}
|
|
trigger_else = {
|
|
custom_description = {
|
|
text = "liege_has_law_allowing_title_revocation_crown"
|
|
has_realm_law_flag = title_revocation_allowed
|
|
}
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { vassal_contract_has_flag = vassal_contract_cannot_revoke_titles }
|
|
}
|
|
custom_description = {
|
|
text = liege_vassal_contract_forbids_revocation
|
|
object = scope:recipient
|
|
scope:recipient = {
|
|
NOT = { vassal_contract_has_flag = vassal_contract_cannot_revoke_titles }
|
|
}
|
|
}
|
|
}
|
|
# Diarch revocations require a claim.
|
|
diarch_revocation_has_claim_check_trigger = yes
|
|
# Must be in an actual diarchy — we show most interactions greyed out for designated diarchs.
|
|
custom_tooltip = {
|
|
text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege ?= { has_diarchy_active_parameter = unlock_diarch_revoke_title_interaction }
|
|
}
|
|
# Cannot be at war with your liege.
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:actor.liege }
|
|
}
|
|
}
|
|
|
|
cooldown = { years = 1 }
|
|
cooldown_against_recipient = { years = 3 }
|
|
|
|
can_send = {
|
|
scope:actor = {
|
|
custom_description = {
|
|
text = "character_interactions_hostile_actions_disabled_delay"
|
|
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
}
|
|
}
|
|
|
|
is_highlighted = {
|
|
# Diarch revocations require a claim - this is uncommon, so we always highlight it.
|
|
diarch_revocation_has_claim_check_trigger = yes
|
|
}
|
|
|
|
can_be_picked_title = {
|
|
scope:target = {
|
|
title_revocation_standard_can_pick_title_trigger = yes
|
|
# Plus, must have scope:actor as a claimant.
|
|
custom_description = {
|
|
text = "you_must_have_a_claim_on_the_title"
|
|
scope:actor = { has_claim_on = scope:target }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Hooks can be used to force this through.
|
|
## We don't force-force this on/for the player (so no pain but less benefits), but AI regard weak hooks as compulsory from/for other AI.
|
|
send_options_exclusive = no
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
flag = hook
|
|
localization = SCHEME_HOOK
|
|
}
|
|
should_use_extra_icon = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
|
|
|
|
on_send = {
|
|
scope:actor = {
|
|
add_character_flag = {
|
|
flag = flag_hostile_actions_disabled_delay
|
|
days = 10
|
|
}
|
|
}
|
|
# Did a landless diarch send this?
|
|
log_diarch_send_interaction_as_variable_effect = { INTERACTION = revoke }
|
|
}
|
|
|
|
on_auto_accept = {
|
|
scope:recipient = { trigger_event = char_interaction.0261 }
|
|
}
|
|
|
|
on_accept = {
|
|
# Since this is a confusing interaction, we want to clarify what you're nicking.
|
|
scope:actor = { custom_tooltip = diarch_revoke_title_interaction.tt.gain_title }
|
|
# To keep some other arcane script working.
|
|
save_scope_value_as = {
|
|
name = revoke_title_interaction
|
|
value = yes
|
|
}
|
|
scope:actor = {
|
|
# Tell them that the revocation went through fine.
|
|
trigger_event = char_interaction.0262
|
|
}
|
|
# Otherwise, follow the standard flow for revocation.
|
|
save_scope_value_as = {
|
|
name = use_strife_not_tyranny
|
|
value = yes
|
|
}
|
|
revoke_title_interaction_effect = yes
|
|
scope:actor = {
|
|
# Scope:actor can be hostile again.
|
|
clear_hostile_actions_lock_flag_effect = yes
|
|
}
|
|
# To avoid unlanded regents becoming vassals of the liege's direct vassals, make sure the current liege remains the liege
|
|
hidden_effect = {
|
|
scope:actor = {
|
|
if = {
|
|
limit = {
|
|
is_landed_or_landless_administrative = no
|
|
scope:intermediary != scope:recipient
|
|
}
|
|
# This has a delay of 1 day (if no delay then the liege change doesn't stick) which really isn't ideal and should be looked into/fixed so that it happens when the action goes into effect
|
|
trigger_event = { id = diarchy.0141 days = 1 }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Debug logging.
|
|
debug_log = debug_log.diarch_revoke_title.accepted
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_revoke_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_accept_recipient_list }
|
|
}
|
|
scope:intermediary = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_accept_intermediary_list }
|
|
}
|
|
}
|
|
|
|
on_intermediary_decline = {
|
|
# Scope:intermediary eats a prestige cost for their veto.
|
|
scope:intermediary = { add_prestige = liege_diarchy_veto_prestige_cost_high }
|
|
scope:actor = {
|
|
# Inform scope:actor that their liege has vetoed them.
|
|
## First, we log which interaction this is for the event's effects.
|
|
save_scope_value_as = {
|
|
name = diarch_interaction
|
|
value = flag:title_revoke
|
|
}
|
|
## Then, fire the event.
|
|
trigger_event = char_interaction.0291
|
|
# Scope:actor can be hostile again.
|
|
clear_hostile_actions_lock_flag_effect = yes
|
|
}
|
|
# Inform scope:recipient that scope:intermediary has their back.
|
|
scope:recipient = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = diarch_action_vetoed.tt
|
|
left_icon = scope:actor
|
|
right_icon = scope:intermediary
|
|
custom_tooltip = diarch_revoke_title_interaction.tt.inform_recipient
|
|
}
|
|
}
|
|
# Flick out some opinions.
|
|
diarch_revoke_title_interaction_intermediary_fail_opinions_effect = yes
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_revoke_veto }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_veto_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_veto_recipient_list }
|
|
}
|
|
scope:intermediary = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_veto_intermediary_list }
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
# Tell them that the revocation ran into issues.
|
|
trigger_event = char_interaction.0263
|
|
# And give a crime reason for both them and the liege.
|
|
show_as_tooltip = {
|
|
random_list = {
|
|
50 = {
|
|
show_chance = no
|
|
desc = char_interaction.0263.result.criminal
|
|
diarch_declare_recipient_criminal_effect = yes
|
|
}
|
|
50 = {
|
|
show_chance = no
|
|
desc = char_interaction.0263.result.war
|
|
diarch_declare_claim_war_effect = yes
|
|
}
|
|
}
|
|
}
|
|
# Scope:actor can be hostile again.
|
|
clear_hostile_actions_lock_flag_effect = yes
|
|
}
|
|
# Flick out some opinions.
|
|
## Scope:recipient is annoyed with scope:actor.
|
|
scope:recipient = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = revoked_title
|
|
}
|
|
}
|
|
|
|
# Debug logging.
|
|
debug_log = debug_log.diarch_revoke_title.rejected
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_revoke_reject }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_reject_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_reject_recipient_list }
|
|
}
|
|
scope:intermediary = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_reject_intermediary_list }
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
scope:recipient = {
|
|
calc_true_if = {
|
|
amount >= 2
|
|
custom_description = {
|
|
text = "prisoner_revocation"
|
|
is_imprisoned_by = scope:actor
|
|
}
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:hook = yes
|
|
OR = {
|
|
# Strong hooks generally.
|
|
scope:actor = { has_strong_hook = scope:recipient }
|
|
# Weak hooks in inter-AI interactions count as strong hooks.
|
|
AND = {
|
|
scope:actor = { is_ai = yes }
|
|
scope:recipient = { is_ai = yes }
|
|
}
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = "foreign_prison_revocation"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:recipient = {
|
|
is_imprisoned = yes
|
|
NOT = { is_imprisoned_by = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_intermediary_accept = {
|
|
# The AI should be inclined to trust their regent, at least a little.
|
|
base = 0
|
|
modifier = { add = liege_trust_diarch_trilateral_interaction_default_value }
|
|
|
|
# Standard modifiers.
|
|
intermediary_liege_will_accept_standard_modifiers = {
|
|
CURRENCY = prestige
|
|
COST = liege_diarchy_veto_prestige_cost_high
|
|
}
|
|
# Misc important reasons.
|
|
## Revoking own capital.
|
|
modifier = {
|
|
add = 50
|
|
desc = AI_TITLE_IS_REALM_CAPITAL
|
|
exists = scope:actor.primary_title.title_capital_county
|
|
OR = {
|
|
scope:landed_title = scope:actor.primary_title.title_capital_county
|
|
scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege
|
|
}
|
|
}
|
|
}
|
|
ai_accept = {
|
|
# Try to make it 0 for most interactions
|
|
base = 0
|
|
|
|
# Weak Hook
|
|
modifier = {
|
|
add = 40
|
|
desc = SCHEME_WEAK_HOOK_USED
|
|
scope:hook = yes
|
|
}
|
|
# Opinion Factor
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 0.8
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
# Refusal is Treason
|
|
## It's always treason, but worth pointing it out.
|
|
modifier = {
|
|
add = 20
|
|
desc = AI_REFUSAL_IS_TREASON
|
|
}
|
|
# Revoking own capital.
|
|
modifier = {
|
|
add = 50
|
|
desc = AI_TITLE_IS_REALM_CAPITAL
|
|
exists = scope:actor.primary_title.title_capital_county
|
|
OR = {
|
|
scope:landed_title = scope:actor.primary_title.title_capital_county
|
|
scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege
|
|
}
|
|
}
|
|
# We don't buff claimants because you *have* to be a claimant for a diarch revoke.
|
|
## Compensated for by refusal _always_ being treason.
|
|
# I am a King!
|
|
modifier = {
|
|
add = -20
|
|
desc = offer_vassalization_interaction_aibehavior_hightier_tt
|
|
scope:recipient = { highest_held_title_tier = tier_kingdom }
|
|
}
|
|
# Title is part of vassal's primary title de-jure.
|
|
modifier = {
|
|
add = -25
|
|
desc = AI_REFUSAL_IS_DE_JURE_UNDER
|
|
OR = {
|
|
scope:recipient.primary_title = { is_de_jure_liege_or_above_target = scope:landed_title }
|
|
scope:recipient.primary_title = scope:landed_title
|
|
}
|
|
}
|
|
# Dread
|
|
## Intimidation
|
|
modifier = {
|
|
add = intimidated_halved_reason_value
|
|
desc = INTIMIDATED_REASON
|
|
scope:recipient = {
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
}
|
|
## Cowing
|
|
modifier = {
|
|
add = cowed_halved_reason_value
|
|
desc = COWED_REASON
|
|
scope:recipient = {
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
}
|
|
# Comparative military strength.
|
|
modifier = {
|
|
add = {
|
|
value = 1
|
|
subtract = {
|
|
value = scope:recipient.max_military_strength
|
|
divide = { value = scope:actor.max_military_strength min = 1 }
|
|
}
|
|
multiply = 50
|
|
max = 20
|
|
}
|
|
desc = offer_vassalization_interaction_aibehavior_power_tt
|
|
scope:actor = { is_landed_or_landless_administrative = yes }
|
|
}
|
|
# Legalistic tradition
|
|
modifier = {
|
|
add = legalistic_vassal_punishment_acceptance
|
|
desc = tradition_legalistic_name
|
|
scope:actor = {
|
|
has_revoke_title_reason = scope:recipient
|
|
culture = { has_cultural_parameter = vassals_more_likely_accept_punishments }
|
|
}
|
|
}
|
|
# Factor for personality.
|
|
ai_value_modifier = {
|
|
who = scope:recipient
|
|
# Greed is always a factor.
|
|
ai_greed = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
NOT = { ai_greed = 0 }
|
|
}
|
|
}
|
|
value = -0.75
|
|
}
|
|
}
|
|
# If AI is honourable and the law compels them to obey the liege, AI will be more likely to obey.
|
|
ai_honor = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = { ai_honor > 0 }
|
|
}
|
|
value = 0.5
|
|
}
|
|
}
|
|
}
|
|
# Bump up landless diarchs if we could survive the transition.
|
|
modifier = {
|
|
add = 100
|
|
scope:actor = { is_ruler = no }
|
|
scope:recipient = {
|
|
any_held_county = { count >= 2 }
|
|
}
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = peer_vassals }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 6
|
|
kingdom = 6
|
|
empire = 6
|
|
hegemony = 6
|
|
}
|
|
|
|
ai_potential = {
|
|
is_diarch = yes
|
|
liege = { has_realm_law_flag = title_revocation_allowed }
|
|
# Loyal diarchs don't engage in skullduggery.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
|
|
ai_will_do = {
|
|
# We're generally ruthless here.
|
|
base = @ai_core_loop_base_value
|
|
|
|
# Additions.
|
|
## Opinion.
|
|
opinion_modifier = {
|
|
opinion_target = scope:recipient
|
|
multiplier = 0.25
|
|
}
|
|
## Personality.
|
|
ai_value_modifier = {
|
|
ai_boldness = 0.75
|
|
ai_honor = -0.5
|
|
}
|
|
## Traits.
|
|
### +++ Ambitious.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = ambitious
|
|
}
|
|
### +++ Greedy.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = greedy
|
|
}
|
|
### +++ Vengeful (under certain criteria).
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = vengeful
|
|
has_opinion_modifier = {
|
|
modifier = revoked_title
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
### ++ Arbitrary.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_2_value
|
|
has_trait = arbitrary
|
|
}
|
|
### - Generous.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_1_value
|
|
has_trait = generous
|
|
}
|
|
### -- Just.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_2_value
|
|
has_trait = just
|
|
}
|
|
### --- Content.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_3_value
|
|
has_trait = content
|
|
}
|
|
## Landless characters want land, but also want to focus on taking from those who might give it up.
|
|
### So we prioritise hooked AI counts.
|
|
modifier = {
|
|
add = 100
|
|
is_landed = no
|
|
has_hook = scope:recipient
|
|
scope:recipient = {
|
|
highest_held_title_tier = tier_county
|
|
is_ai = yes
|
|
}
|
|
}
|
|
### Then just hooked AI.
|
|
modifier = {
|
|
add = 50
|
|
is_landed = no
|
|
has_hook = scope:recipient
|
|
scope:recipient = { is_ai = yes }
|
|
}
|
|
## Always revoke preferred capital and capital duchy.
|
|
modifier = {
|
|
add = 1000
|
|
exists = scope:actor.primary_title.title_capital_county
|
|
OR = {
|
|
scope:landed_title = scope:actor.primary_title.title_capital_county
|
|
scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege
|
|
}
|
|
}
|
|
## Slight preference for higher-tier titles.
|
|
modifier = {
|
|
add = {
|
|
value = scope:landed_title.tier
|
|
multiply = 10
|
|
}
|
|
}
|
|
## We avoid wars here too, but only in the resulting event.
|
|
# Factors.
|
|
## Relationships.
|
|
### + Do pick on people we hate.
|
|
modifier = {
|
|
factor = 1.5
|
|
should_prioritise_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
### - Try not to pick on allies of our liege.
|
|
modifier = {
|
|
factor = 0.25
|
|
should_avoid_hostile_action_against_due_to_liege_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
### x0 Don't pick on our friends or allies.
|
|
modifier = {
|
|
factor = 0
|
|
should_avoid_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
### x0 Don't pick on players unless they're of at least a decent size.
|
|
modifier = {
|
|
factor = 0
|
|
scope:recipient = {
|
|
is_ai = no
|
|
any_held_county = { count <= 3 }
|
|
}
|
|
}
|
|
### x0 Don't go into prestige debt!
|
|
modifier = {
|
|
factor = 0
|
|
prestige <= 0
|
|
}
|
|
}
|
|
}
|
|
|
|
# Diarch (actor) takes a vassal from a vassal (recipient) of their liege with an optional veto for the liege (third_party).
|
|
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
|
|
intermediary_breakdown_yes = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_YES
|
|
intermediary_breakdown_no = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_NO
|
|
intermediary_breakdown_maybe = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_MAYBE
|
|
intermediary_answer_accept_key = REPLY_ANSWER_ALLOW
|
|
intermediary_answer_reject_key = REPLY_ANSWER_VETO
|
|
pre_answer_yes_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_YES
|
|
pre_answer_no_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_NO
|
|
pre_answer_maybe_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_MAYBE
|
|
icon = icon_liege
|
|
redirect = {
|
|
scope:actor.liege ?= { save_scope_as = intermediary }
|
|
}
|
|
|
|
desc = diarch_retract_vassal_interaction_desc
|
|
send_name = diarch_retract_vassal_interaction.send_name
|
|
|
|
special_interaction = retract_vassal_interaction
|
|
interface = transfer_vassal
|
|
ai_maybe = yes
|
|
ai_intermediary_maybe = yes
|
|
can_send_despite_rejection = yes
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
|
|
ai_min_reply_days = 4
|
|
ai_max_reply_days = 9
|
|
|
|
on_decline_summary = diarch_rebel_or_crime_summary.retract
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
OR = {
|
|
AND = {
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
}
|
|
is_designated_diarch = yes
|
|
}
|
|
liege = { has_diarchy_parameter = unlock_diarch_retract_vassal_interaction }
|
|
# Plus you need to be landed for this.
|
|
is_landed_or_landless_administrative = yes
|
|
}
|
|
# Make sure scope:recipient is suitable.
|
|
scope:recipient = {
|
|
# We only target vassals of the liege...
|
|
liege = scope:actor.liege
|
|
this != scope:actor.liege
|
|
# ... who are appropriately landed.
|
|
is_landed_or_landless_administrative = yes
|
|
scope:recipient.highest_held_title_tier >= tier_duchy
|
|
}
|
|
}
|
|
|
|
is_valid = {
|
|
# Here to correct for some dodgy inheritance situations.
|
|
scope:actor != scope:intermediary
|
|
}
|
|
is_valid_showing_failures_only = {
|
|
# Standard validity checks.
|
|
vassal_retraction_standard_valid_showing_failures_only_trigger = yes
|
|
# Diarch must be able to act.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
# Scope:recipient must hold at least one of scope:actor's de jure vassals.
|
|
scope:actor = {
|
|
custom_description = {
|
|
text = "you_must_have_a_de_jure_vassal_to_retract"
|
|
object = scope:recipient
|
|
any_held_title = {
|
|
title_tier >= duchy
|
|
any_direct_de_jure_vassal_title = {
|
|
exists = holder
|
|
holder.liege = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Plus make sure there's a legal right to retract.
|
|
scope:actor.liege = {
|
|
trigger_if = {
|
|
limit = { government_has_flag = government_is_tribal }
|
|
custom_description = {
|
|
text = "liege_has_law_allowing_vassal_retraction_tribal"
|
|
has_realm_law_flag = vassal_retraction_allowed
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
NOT = { government_has_flag = government_is_tribal }
|
|
}
|
|
custom_description = {
|
|
text = "liege_has_law_allowing_vassal_retraction_crown"
|
|
has_realm_law_flag = vassal_retraction_allowed
|
|
}
|
|
}
|
|
}
|
|
# Must be in an actual diarchy — we show most interactions greyed out for designated diarchs.
|
|
custom_tooltip = {
|
|
text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_retract_vassal_interaction }
|
|
}
|
|
# Cannot be at war with your liege.
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:actor.liege }
|
|
}
|
|
}
|
|
|
|
cooldown = { years = 1 }
|
|
cooldown_against_recipient = { years = 3 }
|
|
|
|
can_send = {
|
|
scope:actor = {
|
|
custom_description = {
|
|
text = "character_interactions_hostile_actions_disabled_delay"
|
|
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
}
|
|
}
|
|
|
|
is_highlighted = {
|
|
# Diarch retractions require a de jure claim - this is uncommon, so we always highlight it.
|
|
diarch_retraction_is_de_jure_liege_trigger = yes
|
|
}
|
|
|
|
populate_recipient_list = {
|
|
scope:actor = {
|
|
every_held_title = {
|
|
title_tier >= duchy
|
|
every_direct_de_jure_vassal_title = {
|
|
limit = { exists = holder }
|
|
holder = {
|
|
if = {
|
|
limit = { liege = scope:recipient }
|
|
add_to_list = characters
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Hooks can be used to force this through.
|
|
## We don't force-force this on/for the player (so no pain but less benefits), but AI regard weak hooks as compulsory from/for other AI.
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
flag = hook
|
|
localization = SCHEME_HOOK
|
|
}
|
|
should_use_extra_icon = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
|
|
|
|
send_options_exclusive = no
|
|
|
|
on_send = {
|
|
scope:actor = {
|
|
add_character_flag = {
|
|
flag = flag_hostile_actions_disabled_delay
|
|
days = 10
|
|
}
|
|
}
|
|
}
|
|
|
|
on_auto_accept = {
|
|
scope:recipient = { trigger_event = char_interaction.0271 }
|
|
}
|
|
|
|
on_accept = {
|
|
# Follow the standard flow for retraction.
|
|
save_scope_value_as = {
|
|
name = use_strife_not_tyranny
|
|
value = yes
|
|
}
|
|
retract_vassal_interaction_effect = yes
|
|
scope:actor = {
|
|
# Tell them that the retraction went through fine.
|
|
trigger_event = char_interaction.0272
|
|
# Scope:actor can be hostile again.
|
|
clear_hostile_actions_lock_flag_effect = yes
|
|
}
|
|
|
|
# Debug logging.
|
|
debug_log = debug_log.diarch_retract_vassal.accepted
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_retract_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_accept_recipient_list }
|
|
}
|
|
scope:intermediary = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_accept_intermediary_list }
|
|
}
|
|
}
|
|
|
|
on_intermediary_decline = {
|
|
# Scope:intermediary eats a prestige cost for their veto.
|
|
scope:intermediary = { add_prestige = liege_diarchy_veto_prestige_cost_high }
|
|
scope:actor = {
|
|
# Inform scope:actor that their liege has vetoed them.
|
|
## First, we log which interaction this is for the event's effects.
|
|
save_scope_value_as = {
|
|
name = diarch_interaction
|
|
value = flag:vassal_retract
|
|
}
|
|
## Then, fire the event.
|
|
trigger_event = char_interaction.0291
|
|
# Scope:actor can be hostile again.
|
|
clear_hostile_actions_lock_flag_effect = yes
|
|
}
|
|
# Inform scope:recipient that scope:intermediary has their back.
|
|
scope:recipient = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = diarch_action_vetoed.tt
|
|
left_icon = scope:actor
|
|
right_icon = scope:intermediary
|
|
custom_tooltip = diarch_retract_vassal_interaction.tt.inform_recipient
|
|
}
|
|
}
|
|
# Flick out some opinions.
|
|
diarch_retract_vassal_interaction_intermediary_fail_opinions_effect = yes
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_retract_veto }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_veto_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_veto_recipient_list }
|
|
}
|
|
scope:intermediary = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_veto_intermediary_list }
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
# Tell them that the retraction ran into issues.
|
|
trigger_event = char_interaction.0273
|
|
# And give a crime reason for both them and their liege.
|
|
show_as_tooltip = {
|
|
random_list = {
|
|
50 = {
|
|
show_chance = no
|
|
desc = char_interaction.0273.result.criminal
|
|
diarch_declare_recipient_criminal_effect = yes
|
|
}
|
|
50 = {
|
|
show_chance = no
|
|
desc = char_interaction.0273.result.war
|
|
diarch_declare_vassalisation_war_effect = yes
|
|
}
|
|
}
|
|
}
|
|
# Scope:actor can be hostile again.
|
|
clear_hostile_actions_lock_flag_effect = yes
|
|
}
|
|
# Flick out some opinions.
|
|
## Scope:recipient is annoyed with scope:actor.
|
|
scope:recipient = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = retracted_vassal
|
|
}
|
|
}
|
|
|
|
# Debug logging.
|
|
debug_log = debug_log.diarch_retract_vassal.rejected
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_retract_decline }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_decline_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_decline_recipient_list }
|
|
}
|
|
scope:intermediary = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_decline_intermediary_list }
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
OR = {
|
|
scope:recipient = {
|
|
is_imprisoned_by = scope:actor
|
|
}
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:hook = yes
|
|
scope:actor = { has_strong_hook = scope:recipient }
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_intermediary_accept = {
|
|
# The AI should be inclined to trust their regent, at least a little.
|
|
base = 0
|
|
modifier = { add = liege_trust_diarch_trilateral_interaction_default_value }
|
|
|
|
# Standard modifiers.
|
|
intermediary_liege_will_accept_standard_modifiers = {
|
|
CURRENCY = prestige
|
|
COST = liege_diarchy_veto_prestige_cost_high
|
|
}
|
|
# Misc important reasons.
|
|
## Retracting vassal with own capital.
|
|
modifier = {
|
|
add = 50
|
|
desc = AI_VASSAL_HOLDS_REALM_CAPITAL
|
|
exists = scope:actor.primary_title.title_capital_county
|
|
scope:secondary_recipient = {
|
|
OR = {
|
|
any_sub_realm_county = {
|
|
this = scope:actor.primary_title.title_capital_county
|
|
}
|
|
any_sub_realm_duchy = {
|
|
this = scope:actor.primary_title.title_capital_county.de_jure_liege
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ai_accept = {
|
|
base = 0 # Try to make it 0 for most interactions
|
|
|
|
# Hook used
|
|
modifier = {
|
|
add = 40
|
|
desc = SCHEME_WEAK_HOOK_USED
|
|
scope:hook = yes
|
|
}
|
|
# Opinion Factor
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 1.0
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
#
|
|
modifier = {
|
|
add = 25
|
|
desc = AI_REFUSAL_IS_TREASON
|
|
scope:actor = { has_realm_law_flag = vassal_refusal_is_treason }
|
|
}
|
|
|
|
ai_value_modifier = {
|
|
who = scope:recipient
|
|
ai_greed = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = { NOT = { ai_greed = 0 } }
|
|
}
|
|
value = -0.25
|
|
}
|
|
}
|
|
ai_honor = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = { #If AI is honorable and the law compels to obey the liege, AI will be more likely to obey.
|
|
ai_honor > 0
|
|
}
|
|
scope:actor = {
|
|
has_realm_law_flag = vassal_refusal_is_treason
|
|
}
|
|
}
|
|
value = 0.75
|
|
}
|
|
}
|
|
}
|
|
modifier = {
|
|
add = 50
|
|
desc = AI_VASSAL_HOLDS_REALM_CAPITAL
|
|
exists = scope:actor.primary_title.title_capital_county
|
|
scope:secondary_recipient = {
|
|
OR = {
|
|
any_sub_realm_county = {
|
|
this = scope:actor.primary_title.title_capital_county
|
|
}
|
|
any_sub_realm_duchy = {
|
|
this = scope:actor.primary_title.title_capital_county.de_jure_liege
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { #Sub-Vassal is NOT De jure of current Vassal.
|
|
add = 25
|
|
desc = AI_REFUSAL_IS_NOT_DE_JURE_LIEGE
|
|
NOT = {
|
|
scope:recipient = {
|
|
any_held_title = {
|
|
is_de_jure_liege_or_above_target = scope:secondary_recipient.primary_title
|
|
}
|
|
}
|
|
}
|
|
}
|
|
modifier = { #Sub-Vassal is De jure of liege title.
|
|
add = 15
|
|
desc = AI_REFUSAL_IS_DE_JURE_LIEGE
|
|
scope:actor = {
|
|
any_held_title = {
|
|
this = scope:secondary_recipient.primary_title.de_jure_liege
|
|
}
|
|
}
|
|
}
|
|
modifier = {
|
|
add = intimidated_halved_reason_value
|
|
desc = INTIMIDATED_REASON
|
|
scope:recipient = {
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
}
|
|
modifier = {
|
|
add = cowed_halved_reason_value
|
|
desc = COWED_REASON
|
|
scope:recipient = {
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
}
|
|
modifier = { #Comparative military strength.
|
|
add = {
|
|
value = 1
|
|
subtract = {
|
|
value = scope:recipient.max_military_strength
|
|
divide = { value = scope:actor.max_military_strength min = 1 }
|
|
}
|
|
multiply = 100
|
|
}
|
|
desc = offer_vassalization_interaction_aibehavior_power_tt
|
|
}
|
|
modifier = { #Different faith, no pluralism.
|
|
add = {
|
|
value = -25
|
|
if = {
|
|
limit = {
|
|
scope:actor.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:recipient.faith
|
|
value >= faith_hostile_level
|
|
}
|
|
}
|
|
}
|
|
add = -10
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:recipient.faith
|
|
value >= faith_evil_level
|
|
}
|
|
}
|
|
}
|
|
add = -25
|
|
}
|
|
}
|
|
desc = AI_REFUSAL_SPLITTING_SAME_FAITH_VASSALS
|
|
scope:actor.faith = scope:secondary_recipient.faith #Will not care as much if the vassal being retracted is of a different faith.
|
|
scope:actor = {
|
|
NOR = { #Of two different faiths AND the potential vassal's faith is not pluralistic.
|
|
faith = scope:recipient.faith
|
|
faith = { has_doctrine = doctrine_pluralism_pluralistic }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = peer_vassals }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 24
|
|
kingdom = 24
|
|
empire = 24
|
|
hegemony = 24
|
|
}
|
|
|
|
ai_potential = {
|
|
is_diarch = yes
|
|
has_realm_law_flag = title_revocation_allowed
|
|
primary_title.tier > tier_county
|
|
# Loyal diarchs don't engage in skullduggery.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
|
|
ai_will_do = {
|
|
# We're generally ruthless here.
|
|
base = @ai_secondary_powers_base_value
|
|
|
|
# Additions.
|
|
## Opinion.
|
|
opinion_modifier = {
|
|
opinion_target = scope:recipient
|
|
multiplier = 0.25
|
|
}
|
|
## Personality.
|
|
ai_value_modifier = {
|
|
ai_boldness = 0.75
|
|
ai_honor = -0.5
|
|
}
|
|
## Traits.
|
|
### +++ Ambitious.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = ambitious
|
|
}
|
|
### +++ Greedy.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = greedy
|
|
}
|
|
### +++ Vengeful (under certain criteria).
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = vengeful
|
|
has_opinion_modifier = {
|
|
modifier = revoked_title
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
### ++ Arbitrary.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_2_value
|
|
has_trait = arbitrary
|
|
}
|
|
### - Generous.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_1_value
|
|
has_trait = generous
|
|
}
|
|
### -- Just.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_2_value
|
|
has_trait = just
|
|
}
|
|
### --- Content.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_3_value
|
|
has_trait = content
|
|
}
|
|
## Always revoke preferred capital and capital duchy
|
|
modifier = {
|
|
add = 1000
|
|
exists = scope:actor.primary_title.title_capital_county
|
|
OR = {
|
|
scope:actor = {
|
|
any_held_title = { this = scope:actor.primary_title.title_capital_county.de_jure_liege }
|
|
}
|
|
scope:actor.primary_title.title_capital_county.de_jure_liege = { is_title_created = no }
|
|
}
|
|
scope:secondary_recipient = {
|
|
any_sub_realm_county = { this = scope:actor.primary_title.title_capital_county }
|
|
}
|
|
}
|
|
# Always retract preferred capital duchy
|
|
modifier = {
|
|
add = 1000
|
|
exists = scope:actor.primary_title.title_capital_county
|
|
scope:secondary_recipient = {
|
|
any_sub_realm_duchy = { this = scope:actor.primary_title.title_capital_county.de_jure_liege }
|
|
}
|
|
}
|
|
## Slight preference for higher-tier titles
|
|
modifier = {
|
|
add = {
|
|
value = scope:secondary_recipient.highest_held_title_tier
|
|
multiply = 10
|
|
}
|
|
}
|
|
## We avoid wars here too, but only in the resulting event.
|
|
# Factors.
|
|
## Relationships.
|
|
### + Do pick on people we hate.
|
|
modifier = {
|
|
factor = 1.5
|
|
should_prioritise_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
### - Try not to pick on allies of our liege.
|
|
modifier = {
|
|
factor = 0.25
|
|
should_avoid_hostile_action_against_due_to_liege_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
### x0 Don't pick on our friends or allies.
|
|
modifier = {
|
|
factor = 0
|
|
should_avoid_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
### x0 Don't pick on players unless they're of at least a decent size.
|
|
modifier = {
|
|
factor = 0
|
|
scope:recipient = {
|
|
is_ai = no
|
|
any_held_county = { count <= 3 }
|
|
}
|
|
}
|
|
### x0 Exempt the party baron.
|
|
modifier = {
|
|
factor = 0
|
|
scope:recipient = { has_character_flag = is_party_baron }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Diarch (actor) imprisons a character (recipient) who's a sub-realm character of their liege, with an optional veto for the liege (third_party).
|
|
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
|
|
intermediary_breakdown_no = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_NO
|
|
intermediary_breakdown_maybe = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_MAYBE
|
|
intermediary_answer_accept_key = REPLY_ANSWER_ALLOW
|
|
intermediary_answer_reject_key = REPLY_ANSWER_VETO
|
|
pre_answer_yes_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_YES
|
|
pre_answer_no_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_NO
|
|
pre_answer_maybe_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_MAYBE
|
|
icon = prison
|
|
redirect = {
|
|
scope:actor.liege ?= { save_scope_as = intermediary }
|
|
}
|
|
|
|
desc = diarch_imprison_interaction_desc
|
|
send_name = diarch_imprison_interaction.send_name
|
|
|
|
ai_maybe = yes
|
|
ai_intermediary_maybe = yes
|
|
can_send_despite_rejection = yes
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
|
|
ai_min_reply_days = 4
|
|
ai_max_reply_days = 9
|
|
|
|
on_decline_summary = diarch_rebel_or_crime_summary.crominal
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
OR = {
|
|
AND = {
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
}
|
|
is_designated_diarch = yes
|
|
}
|
|
liege = { has_diarchy_parameter = unlock_diarch_imprison_interaction }
|
|
# The prisoner goes to your dungeon, so we want you to actually have one.
|
|
is_landed_or_landless_administrative = yes
|
|
}
|
|
# Make sure scope:recipient is suitable.
|
|
scope:recipient = { is_imprisoned = no }
|
|
# Scope:recipient can't be visiting elsewhere.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { is_courtier = yes }
|
|
}
|
|
NOT = {
|
|
scope:recipient.host = {
|
|
any_foreign_court_guest = { this = scope:recipient }
|
|
}
|
|
}
|
|
}
|
|
# Finally, make sure this isn't someone scope:actor could use the conventional interaction on.
|
|
scope:actor = {
|
|
liege = {
|
|
basic_allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient }
|
|
}
|
|
NOT = {
|
|
basic_allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient }
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid = {
|
|
# Here to correct for some dodgy inheritance situations.
|
|
scope:actor != scope:intermediary
|
|
}
|
|
is_valid_showing_failures_only = {
|
|
scope:actor = {
|
|
advanced_allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient }
|
|
}
|
|
imprison_neutral_is_valid_showing_failures_only_triggers_trigger = yes
|
|
# Diarch must be able to act.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
# Must be in an actual diarchy — we show most interactions greyed out for designated diarchs.
|
|
custom_tooltip = {
|
|
text = diarch_interactions.tt.you_must_be_in_a_regency_to_access
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_imprison_interaction }
|
|
scope:actor.liege = {
|
|
trigger_if = {
|
|
limit = { has_realm_law_flag = imprisonment_toggle_enable } #Present on all tribal authority to disable imprisonment
|
|
has_realm_law_flag = imprisonment_toggle_on #Present from tribal authority level 1 to re-enable imprisonment
|
|
}
|
|
}
|
|
}
|
|
# Cannot be at war with your liege.
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:actor.liege }
|
|
}
|
|
}
|
|
|
|
cooldown = { years = 1 }
|
|
cooldown_against_recipient = { years = 3 }
|
|
|
|
can_send = {
|
|
scope:actor = {
|
|
custom_description = {
|
|
text = "character_interactions_hostile_actions_disabled_delay"
|
|
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
}
|
|
}
|
|
|
|
is_highlighted = {
|
|
scope:recipient = { is_imprisoned = no }
|
|
scope:actor = { has_imprisonment_reason = scope:recipient }
|
|
}
|
|
|
|
#Use hook
|
|
send_option = {
|
|
is_valid = {
|
|
exists = scope:recipient
|
|
scope:actor = {
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
}
|
|
flag = hook
|
|
localization = SCHEME_HOOK
|
|
}
|
|
should_use_extra_icon = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
|
|
|
|
send_options_exclusive = no
|
|
|
|
on_send = {
|
|
scope:actor = {
|
|
add_character_flag = {
|
|
flag = flag_hostile_actions_disabled_delay
|
|
days = 10
|
|
}
|
|
}
|
|
}
|
|
|
|
on_auto_accept = {
|
|
scope:actor = { trigger_event = char_interaction.0281 }
|
|
diarch_imprison_general_accept_effect = yes
|
|
}
|
|
|
|
on_accept = {
|
|
if = {
|
|
limit = { scope:hook = yes }
|
|
scope:actor = { use_hook = scope:recipient }
|
|
}
|
|
# Tell them that the imprisonment went through fine.
|
|
scope:actor = { trigger_event = char_interaction.0282 }
|
|
save_scope_value_as = {
|
|
name = use_strife_not_tyranny
|
|
value = yes
|
|
}
|
|
diarch_imprison_general_accept_effect = yes
|
|
|
|
# Debug logging.
|
|
debug_log = debug_log.diarch_imprison.accepted
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_imprison_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_accept_recipient_list }
|
|
}
|
|
scope:intermediary = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_accept_intermediary_list }
|
|
}
|
|
}
|
|
|
|
on_intermediary_decline = {
|
|
# Scope:intermediary eats a prestige cost for their veto.
|
|
scope:intermediary = { add_prestige = liege_diarchy_veto_prestige_cost_medium }
|
|
scope:actor = {
|
|
# Inform scope:actor that their liege has vetoed them.
|
|
## First, we log which interaction this is for the event's effects.
|
|
save_scope_value_as = {
|
|
name = diarch_interaction
|
|
value = flag:imprison
|
|
}
|
|
## Then, fire the event.
|
|
trigger_event = char_interaction.0291
|
|
# Scope:actor can be hostile again.
|
|
clear_hostile_actions_lock_flag_effect = yes
|
|
}
|
|
# Inform scope:recipient that scope:intermediary has their back.
|
|
scope:recipient = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = diarch_action_vetoed.tt
|
|
left_icon = scope:actor
|
|
right_icon = scope:intermediary
|
|
custom_tooltip = diarch_imprison_interaction.tt.inform_recipient
|
|
}
|
|
}
|
|
# Flick out some opinions.
|
|
diarch_imprison_interaction_intermediary_fail_opinions_effect = yes
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_imprison_veto }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_veto_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_veto_recipient_list }
|
|
}
|
|
scope:intermediary = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_veto_intermediary_list }
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
save_scope_as = use_strife_not_tyranny
|
|
imprison_HoF_consequences_effect = yes
|
|
imprison_tyranny_effect = yes
|
|
}
|
|
# Do we want a war or an escape?
|
|
scope:recipient = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = attempted_imprisonment_opinion
|
|
}
|
|
# If target is count or higher, we want the option to start a war.
|
|
if = {
|
|
limit = {
|
|
is_landed_or_landless_administrative = yes
|
|
highest_held_title_tier >= tier_county
|
|
}
|
|
# Send the choosing event.
|
|
scope:actor = { trigger_event = char_interaction.0283 }
|
|
# Display the choices in advance.
|
|
show_as_tooltip = {
|
|
random_list = {
|
|
50 = {
|
|
show_chance = no
|
|
desc = char_interaction.0263.result.criminal
|
|
diarch_declare_recipient_criminal_effect = yes
|
|
}
|
|
50 = {
|
|
trigger = {
|
|
scope:actor = {
|
|
is_landed = yes # consistent with char_interaction.0283
|
|
}
|
|
}
|
|
show_chance = no
|
|
desc = char_interaction.0263.result.war
|
|
scope:recipient = {
|
|
start_war = {
|
|
casus_belli = remove_regent_cb
|
|
target = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#If target is a baron or unlanded, have them escape.
|
|
else = {
|
|
if = { #To block them from being instantly rehired
|
|
limit = {
|
|
is_councillor_of = scope:actor
|
|
can_be_fired_from_council_trigger = { COURT_OWNER = scope:actor }
|
|
}
|
|
set_variable = {
|
|
name = escaped_imprisonment_from
|
|
value = scope:actor
|
|
years = 20
|
|
}
|
|
}
|
|
if = {
|
|
limit = { is_landed_or_landless_administrative = yes }
|
|
depose_effect = { DEPOSER = scope:actor }
|
|
}
|
|
if = {
|
|
limit = {
|
|
is_playable_character = no
|
|
trigger_if = {
|
|
limit = { is_councillor = yes }
|
|
can_be_fired_from_council_trigger = { COURT_OWNER = scope:recipient.liege }
|
|
}
|
|
trigger_if = {
|
|
limit = { exists = scope:actor.faith.religious_head }
|
|
scope:actor.faith.religious_head != scope:recipient
|
|
}
|
|
}
|
|
custom_tooltip = deposed_and_become_wanderer
|
|
select_and_move_to_pool_effect = yes
|
|
}
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = attempted_imprisonment_opinion
|
|
}
|
|
}
|
|
}
|
|
|
|
#Remove them as guardian/ward for any courtier (feedback given in char_interaction.0230)
|
|
scope:actor = {
|
|
if = {
|
|
limit = {
|
|
any_courtier = { has_relation_guardian = scope:recipient }
|
|
}
|
|
every_courtier = {
|
|
limit = { has_relation_guardian = scope:recipient }
|
|
save_scope_as = ward
|
|
remove_guardian_effect = {
|
|
GUARDIAN = scope:recipient
|
|
WARD = scope:ward
|
|
RETURN_WARD = yes
|
|
HIDE_OPINION = no
|
|
}
|
|
add_to_list = ward_children
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
any_courtier = { has_relation_ward = scope:recipient }
|
|
}
|
|
random_courtier = {
|
|
limit = { has_relation_ward = scope:recipient }
|
|
save_scope_as = guardian
|
|
show_as_tooltip = {
|
|
remove_guardian_effect = {
|
|
GUARDIAN = scope:guardian
|
|
WARD = scope:recipient
|
|
RETURN_WARD = yes
|
|
HIDE_OPINION = no
|
|
}
|
|
}
|
|
add_to_list = guardian_list
|
|
}
|
|
hidden_effect = {
|
|
scope:guardian = {
|
|
send_interface_message = {
|
|
type = event_childhood_neutral
|
|
title = remove_guardian_interaction_notification
|
|
left_icon = scope:recipient
|
|
right_icon = scope:guardian
|
|
remove_guardian_effect = {
|
|
GUARDIAN = scope:guardian
|
|
WARD = scope:recipient
|
|
RETURN_WARD = yes
|
|
HIDE_OPINION = no
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Misc clean-up stuff.
|
|
scope:actor = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
OR = {
|
|
is_playable_character = no
|
|
AND = {
|
|
is_landed_or_landless_administrative = yes
|
|
primary_title.tier = tier_barony
|
|
}
|
|
}
|
|
}
|
|
}
|
|
trigger_event = char_interaction.0230
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
|
|
# Debug logging.
|
|
debug_log = debug_log.diarch_imprison.rejected
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_imprison_decline }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_decline_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_decline_recipient_list }
|
|
}
|
|
scope:intermediary = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_decline_intermediary_list }
|
|
}
|
|
}
|
|
|
|
auto_accept = no
|
|
|
|
ai_intermediary_accept = {
|
|
# The AI should be inclined to trust their regent, at least a little.
|
|
base = 0
|
|
modifier = { add = liege_trust_diarch_trilateral_interaction_default_value }
|
|
|
|
# Standard modifiers.
|
|
intermediary_liege_will_accept_standard_modifiers = {
|
|
CURRENCY = prestige
|
|
COST = liege_diarchy_veto_prestige_cost_medium
|
|
}
|
|
}
|
|
ai_accept = {
|
|
base = 0 # Try to make it 0 for most interactions
|
|
|
|
modifier = {
|
|
add = {
|
|
value = scope:actor.intrigue
|
|
multiply = 1
|
|
}
|
|
desc = IMPRISON_INTRIGUE_ACTOR
|
|
}
|
|
modifier = {
|
|
add = {
|
|
value = scope:recipient.intrigue
|
|
multiply = -2
|
|
}
|
|
desc = IMPRISON_INTRIGUE_RECIPIENT
|
|
}
|
|
|
|
modifier = {
|
|
add = 30
|
|
desc = SCHEME_HOOK_USED
|
|
scope:hook = yes
|
|
}
|
|
opinion_modifier = { # Opinion Factor
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 0.5
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
ai_value_modifier = {
|
|
who = scope:recipient
|
|
ai_boldness = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = { NOT = { ai_boldness = 0 } }
|
|
}
|
|
value = -0.5
|
|
}
|
|
}
|
|
}
|
|
modifier = {
|
|
add = 20
|
|
desc = AI_REFUSAL_IS_TREASON
|
|
scope:actor = {
|
|
any_vassal_or_below = { this = scope:recipient }
|
|
has_realm_law_flag = vassal_refusal_is_treason
|
|
}
|
|
}
|
|
modifier = {
|
|
add = 50
|
|
desc = AI_PRISON_FEUDAL_COMPLEX_PERK
|
|
scope:actor = {
|
|
has_perk = prison_feudal_complex_perk
|
|
}
|
|
}
|
|
modifier = { #I am a King!
|
|
add = -40
|
|
desc = offer_vassalization_interaction_aibehavior_hightier_tt
|
|
scope:recipient = { highest_held_title_tier = tier_kingdom }
|
|
}
|
|
modifier = { #Courtiers.
|
|
add = 50
|
|
desc = AI_REFUSAL_COURTIER
|
|
scope:recipient = { is_ruler = no }
|
|
}
|
|
modifier = { # Your young children can't really stop you
|
|
add = 200
|
|
desc = AI_REFUSAL_YOUNG_CHILD
|
|
scope:recipient = {
|
|
is_child_of = scope:actor
|
|
is_courtier_of = scope:actor
|
|
is_adult = no
|
|
}
|
|
}
|
|
modifier = { #They're a claimant against you
|
|
add = -70
|
|
desc = AI_CLAIMANT_PENALTY
|
|
scope:actor = {
|
|
OR = {
|
|
any_targeting_faction = {
|
|
faction_type = claimant_faction
|
|
faction_is_at_war = yes
|
|
special_character ?= scope:recipient
|
|
}
|
|
AND = {
|
|
exists = var:claimant_faction_sent_demand
|
|
var:claimant_faction_sent_demand = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
modifier = { #Rank difference.
|
|
add = {
|
|
value = -15
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value >= 2
|
|
}
|
|
}
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value >= 3
|
|
}
|
|
}
|
|
}
|
|
add = 5
|
|
}
|
|
if = { #King asking Baron, modifier becomes positive.
|
|
limit = {
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value >= 4
|
|
}
|
|
}
|
|
}
|
|
add = 10
|
|
}
|
|
}
|
|
desc = AI_REFUSAL_RANK_DIFFERENCE
|
|
scope:recipient = {
|
|
is_ruler = yes
|
|
highest_held_title_tier < tier_kingdom
|
|
}
|
|
}
|
|
modifier = {
|
|
add = intimidated_external_reason_value
|
|
desc = INTIMIDATED_REASON
|
|
scope:recipient = {
|
|
NOT = { target_is_liege_or_above = scope:actor }
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
}
|
|
modifier = {
|
|
add = cowed_external_reason_value
|
|
desc = COWED_REASON
|
|
scope:recipient = {
|
|
NOT = { target_is_liege_or_above = scope:actor }
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
}
|
|
modifier = { #Comparative military strength.
|
|
add = {
|
|
value = 1
|
|
subtract = {
|
|
value = scope:recipient.max_military_strength
|
|
divide = { value = scope:actor.max_military_strength min = 1 }
|
|
}
|
|
multiply = 100
|
|
min = -1000
|
|
# This max needs to match the loc in offer_vassalization_interaction_aibehavior_power_tt
|
|
max = 20
|
|
}
|
|
desc = offer_vassalization_interaction_aibehavior_power_tt
|
|
scope:actor = { is_ruler = yes }
|
|
scope:recipient = { is_ruler = yes }
|
|
}
|
|
modifier = { #Rivalry modifier.
|
|
add = -50
|
|
desc = offer_vassalization_interaction_aibehavior_rival_tt
|
|
scope:recipient = {
|
|
has_relation_rival = scope:actor
|
|
NOT = { has_relation_nemesis = scope:actor }
|
|
}
|
|
}
|
|
modifier = { #Nemesis modifier.
|
|
add = -100
|
|
desc = offer_vassalization_interaction_aibehavior_nemesis_tt
|
|
scope:recipient = {
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
}
|
|
modifier = {
|
|
add = 10
|
|
desc = GRANDEUR_REASON
|
|
scope:recipient = { has_royal_court = no }
|
|
scope:actor = {
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
court_grandeur_current_level >= 7
|
|
court_grandeur_current_level < 9
|
|
}
|
|
}
|
|
modifier = {
|
|
add = 20
|
|
desc = GRANDEUR_REASON
|
|
scope:recipient = { has_royal_court = no }
|
|
scope:actor = {
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
court_grandeur_current_level >= 9
|
|
}
|
|
}
|
|
modifier = { # Legalistic tradition
|
|
add = legalistic_vassal_punishment_acceptance
|
|
desc = tradition_legalistic_name
|
|
scope:actor = {
|
|
has_imprisonment_reason = scope:recipient
|
|
culture = { has_cultural_parameter = vassals_more_likely_accept_punishments }
|
|
}
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = {
|
|
ai_recipients = peer_vassals
|
|
ai_recipients = scripted_relations
|
|
}
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 12
|
|
kingdom = 12
|
|
empire = 12
|
|
hegemony = 12
|
|
}
|
|
|
|
ai_will_do = {
|
|
# You should have a _reason_ to try to imprison someone.
|
|
base = 0
|
|
|
|
# Additions.
|
|
## Opinion.
|
|
opinion_modifier = {
|
|
opinion_target = scope:recipient
|
|
multiplier = 0.5
|
|
}
|
|
## Personality.
|
|
ai_value_modifier = {
|
|
ai_vengefulness = 1
|
|
ai_boldness = 0.5
|
|
}
|
|
## Flag Management.
|
|
### Make sure the AI uses hooks for this as it's % based
|
|
modifier = {
|
|
add = 1
|
|
scope:hook = yes
|
|
}
|
|
## Traits.
|
|
### +++ Sadistic.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = greedy
|
|
}
|
|
### +++ Vengeful.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = vengeful
|
|
}
|
|
### ++ Just (under certain circumstances).
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_2_value
|
|
has_trait = just
|
|
has_imprisonment_reason = scope:recipient
|
|
}
|
|
### -- Compassionate.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_2_value
|
|
has_trait = compassionate
|
|
}
|
|
### --- Forgiving.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_3_value
|
|
has_trait = forgiving
|
|
}
|
|
## We avoid wars here too, but only in the resulting event.
|
|
## Agenda impact
|
|
modifier = {
|
|
add = {
|
|
value = 0
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = { phase_has_catalyst = catalyst_imprison_important }
|
|
has_character_flag = agenda_towards_escalation
|
|
}
|
|
}
|
|
add = 200
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = { phase_has_catalyst = catalyst_imprison_important }
|
|
}
|
|
}
|
|
add = -100
|
|
}
|
|
}
|
|
any_character_struggle = { involvement = involved }
|
|
}
|
|
modifier = {
|
|
add = {
|
|
value = 0
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = { phase_has_catalyst = catalyst_imprison_detractor }
|
|
has_trait = fp3_struggle_supporter
|
|
}
|
|
}
|
|
add = 200
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = { phase_has_catalyst = catalyst_imprison_detractor }
|
|
}
|
|
}
|
|
add = -100
|
|
}
|
|
}
|
|
any_character_struggle = { involvement = involved }
|
|
}
|
|
modifier = {
|
|
add = {
|
|
value = 0
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = { phase_has_catalyst = catalyst_imprison_supporter }
|
|
has_trait = fp3_struggle_detractor
|
|
}
|
|
}
|
|
add = 200
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = { phase_has_catalyst = catalyst_imprison_supporter }
|
|
}
|
|
}
|
|
add = -100
|
|
}
|
|
}
|
|
any_character_struggle = { involvement = involved }
|
|
}
|
|
# Factors.
|
|
## Relationships.
|
|
### + Do pick on people we hate.
|
|
modifier = {
|
|
factor = 1.5
|
|
should_prioritise_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
### - Try not to pick on allies of our liege.
|
|
modifier = {
|
|
factor = 0.25
|
|
should_avoid_hostile_action_against_due_to_liege_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
### x0 Don't pick on our friends or allies.
|
|
modifier = {
|
|
factor = 0
|
|
should_avoid_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
### x0 Don't pick on people without due reason unless we really hate them.
|
|
#### Doesn't quite double up with the above factor increase for folks we hate - we want to prioritise them, but we also want to enable them for arbitrary punishment.
|
|
modifier = {
|
|
factor = 0
|
|
NOR = {
|
|
has_imprisonment_reason = scope:recipient
|
|
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:recipient }
|
|
# Sadists wants to torture folks.
|
|
has_trait = sadistic
|
|
# Agents get a time-out.
|
|
any_targeting_scheme = {
|
|
hostile_scheme_trigger = yes
|
|
is_scheme_agent_exposed = scope:recipient
|
|
}
|
|
# Prior crimes annoy people.
|
|
has_any_major_revenge_opinion_against_character_trigger = { CHARACTER = scope:recipient }
|
|
# Vengeful characters can be a pain over even minor matters.
|
|
AND = {
|
|
OR = {
|
|
has_trait = vengeful
|
|
ai_vengefulness >= very_high_positive_ai_value
|
|
}
|
|
has_any_petty_revenge_opinion_against_character_trigger = { CHARACTER = scope:recipient }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Diarch (actor) offers to boost the CA/TA/IB of liege (recipient), taking on the costs and negatives themselves so that they can use their diarch powers.
|
|
diarch_subsidise_crown_authority_interaction = {
|
|
category = interaction_category_diarch
|
|
diarch_interaction = yes
|
|
notification_text = DIARCH_SUBSIDISE_AUTHORITY_PROPOSAL
|
|
icon = icon_contract_modification_single
|
|
|
|
desc = diarch_subsidise_crown_authority_interaction_desc
|
|
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
liege_has_co_emperorship_trigger = no
|
|
liege = { has_diarchy_parameter = diarch_can_subsidise_liege_authority }
|
|
}
|
|
# Same sub-realm only.
|
|
OR = {
|
|
scope:actor.liege = scope:recipient
|
|
scope:recipient = {
|
|
any_liege_or_above = { this = scope:actor.liege }
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Make sure scope:recipient is the liege.
|
|
custom_tooltip = {
|
|
text = custom_description.tt.must_target_liege
|
|
scope:recipient = scope:actor.liege
|
|
}
|
|
# Diarch must be able to act.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege = { has_diarchy_active_parameter = diarch_can_subsidise_liege_authority }
|
|
# Can't subisidise past the point needed.
|
|
custom_tooltip = {
|
|
text = diarch_subsidise_crown_authority_interaction.tt.cannot_subsidise_past_necessary
|
|
scope:recipient = {
|
|
NOT = { has_realm_law_flag = diarchs_want_to_subsidise_without_this_flag }
|
|
}
|
|
}
|
|
# And the liege can't have the max level of authority.
|
|
custom_tooltip = {
|
|
text = diarch_subsidise_crown_authority_interaction.tt.liege_cannot_have_max_authority
|
|
scope:recipient = {
|
|
NOT = { has_realm_law_flag = max_authority_level }
|
|
}
|
|
}
|
|
# Aaaand, if you're not tribal/administrative, we need to check some innovations.
|
|
scope:recipient = {
|
|
# CA0 -> CA1.
|
|
trigger_if = {
|
|
limit = { has_realm_law = crown_authority_0 }
|
|
can_pass_law_ca1_trigger = yes
|
|
}
|
|
# CA1 -> CA2.
|
|
trigger_if = {
|
|
limit = { has_realm_law = crown_authority_1 }
|
|
can_pass_law_ca2_trigger = yes
|
|
}
|
|
# CA2 -> CA3.
|
|
trigger_if = {
|
|
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 = { government_allows = administrative }
|
|
is_independent_ruler = yes
|
|
}
|
|
}
|
|
# Cannot be at war with your liege.
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:actor.liege }
|
|
}
|
|
}
|
|
|
|
# Why the hell not? If your liege dies several times in quick succession, sure, centralise all the power you like. That'll go well.
|
|
cooldown_against_recipient = { years = 10 }
|
|
|
|
cost = {
|
|
prestige = {
|
|
value = scope:recipient.increase_crown_authority_prestige_cost
|
|
multiply = subsidised_liege_authority_discount_value
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = diarch_subsidise_crown_authority_interaction.tt.accepted
|
|
left_icon = scope:recipient
|
|
scope:recipient = {
|
|
# Try to change authority.
|
|
increase_crown_authority_effect = yes
|
|
increase_tribal_authority_effect = yes
|
|
increase_imperial_bureaucracy_effect = yes
|
|
# No one blames the liege for this.
|
|
add_character_modifier = {
|
|
modifier = liege_authority_boost_has_scapegoat_modifier
|
|
years = 10
|
|
}
|
|
}
|
|
# Aaaaand everyone knows what you did.
|
|
change_strife_opinion = massive_strife_gain
|
|
}
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_bad
|
|
title = diarch_subsidise_crown_authority_interaction.tt.declined
|
|
left_icon = scope:recipient
|
|
add_opinion = {
|
|
target = scope:recipient
|
|
modifier = refusal_opinion
|
|
opinion = -20
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_accept = {
|
|
base = 0
|
|
|
|
# You want to do _what_? For free?
|
|
modifier = {
|
|
add = 100
|
|
desc = diarch_subsidise_crown_authority_interaction.tt.absolutely_yes_please
|
|
always = yes
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_description = {
|
|
text = auto_accept_interaction_ai
|
|
object = scope:recipient
|
|
scope:recipient = {
|
|
is_ai = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = liege }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 48
|
|
duchy = 24
|
|
kingdom = 24
|
|
empire = 24
|
|
hegemony = 24
|
|
}
|
|
ai_potential = {
|
|
is_diarch = yes
|
|
# Loyal diarchs don't engage in skullduggery.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
# You also need prestige left over afterwards to use other interactions, so make sure the AI doesn't bankrupt itself on this.
|
|
prestige >= {
|
|
value = liege.increase_crown_authority_prestige_cost
|
|
multiply = subsidised_liege_authority_discount_value
|
|
add = major_prestige_value
|
|
}
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 0
|
|
|
|
# Government situation.
|
|
## Does your liege's gubermint allow you to bully people and take their stuff? No? Then you want to take this interaction; anyone who wouldn't has been pre-filtered.
|
|
modifier = {
|
|
add = 1000
|
|
liege = {
|
|
NOR = {
|
|
has_realm_law_flag = title_revocation_allowed
|
|
has_realm_law_flag = vassal_retraction_allowed
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Diarch (actor) requests an adjustment of liege's (recipient's) IB, taking on the costs and negatives themselves _or_ reducing their strife, depending on whether they boost centralisation or decrease it.
|
|
diarch_adjust_bureaucracy_interaction = {
|
|
category = interaction_category_diarch
|
|
diarch_interaction = yes
|
|
interface_priority = 9
|
|
notification_text = {
|
|
first_valid = {
|
|
# Decentralise.
|
|
triggered_desc = {
|
|
trigger = { scope:decrease_centralisation = yes }
|
|
desc = DIARCH_ADJUST_BUREAUCRACY_PROPOSAL.DECENTRALISE
|
|
}
|
|
# Centralise.
|
|
desc = DIARCH_ADJUST_BUREAUCRACY_PROPOSAL.CENTRALISE
|
|
}
|
|
}
|
|
icon = icon_contract_modification_single
|
|
|
|
desc = diarch_adjust_bureaucracy_interaction_desc
|
|
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
liege_has_co_emperorship_trigger = yes
|
|
liege = { has_diarchy_parameter = unlock_adjust_imperial_bureaucracy_interaction }
|
|
}
|
|
# Same sub-realm only.
|
|
OR = {
|
|
scope:actor.liege = scope:recipient
|
|
scope:recipient = {
|
|
any_liege_or_above = { this = scope:actor.liege }
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Make sure scope:recipient is the liege.
|
|
custom_tooltip = {
|
|
text = custom_description.tt.must_target_liege
|
|
scope:recipient = scope:actor.liege
|
|
}
|
|
# Diarch must be able to act.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege = { has_diarchy_active_parameter = unlock_adjust_imperial_bureaucracy_interaction }
|
|
# And the liege can't have the max level of authority.
|
|
custom_tooltip = {
|
|
text = diarch_subsidise_crown_authority_interaction.tt.liege_cannot_have_max_authority
|
|
scope:recipient = {
|
|
NOT = { has_realm_law_flag = max_authority_level }
|
|
}
|
|
}
|
|
# Cannot be at war with your liege.
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:actor.liege }
|
|
}
|
|
}
|
|
|
|
# Co-emperors can't keep doing this in quick succession.
|
|
cooldown = { years = 10 }
|
|
|
|
cost = {
|
|
prestige = {
|
|
value = scope:recipient.increase_crown_authority_prestige_cost
|
|
if = {
|
|
limit = { scope:increase_centralisation = yes }
|
|
multiply = subsidised_liege_authority_discount_value
|
|
}
|
|
else = { multiply = lowered_liege_authority_discount_value }
|
|
}
|
|
}
|
|
|
|
# Increase IB
|
|
send_option = {
|
|
flag = increase_centralisation
|
|
is_valid = {
|
|
scope:recipient = {
|
|
NOT = { has_realm_law = imperial_bureaucracy_3 }
|
|
}
|
|
}
|
|
localization = increase_centralisation_name
|
|
current_description = increase_centralisation
|
|
starts_enabled = { always = yes }
|
|
}
|
|
# Decrease IB
|
|
## The AI doesn't use this.
|
|
send_option = {
|
|
flag = decrease_centralisation
|
|
is_valid = {
|
|
scope:recipient = {
|
|
NOT = { has_realm_law = imperial_bureaucracy_0 }
|
|
}
|
|
}
|
|
localization = decrease_centralisation_name
|
|
current_description = decrease_centralisation
|
|
}
|
|
|
|
on_send = {
|
|
# Tell the AI to set their only send option.
|
|
if = {
|
|
limit = {
|
|
scope:actor = { is_ai = yes }
|
|
}
|
|
save_scope_value_as = {
|
|
name = increase_centralisation
|
|
value = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = diarch_subsidise_crown_authority_interaction.tt.accepted
|
|
left_icon = scope:recipient
|
|
scope:recipient = {
|
|
# Try to change authority.
|
|
if = {
|
|
limit = { scope:increase_centralisation = yes }
|
|
increase_imperial_bureaucracy_effect = yes
|
|
# No one blames the liege for this.
|
|
add_character_modifier = {
|
|
modifier = liege_authority_boost_has_scapegoat_modifier
|
|
years = 10
|
|
}
|
|
}
|
|
else = { decrease_imperial_bureaucracy_effect = yes }
|
|
}
|
|
# Aaaaand everyone knows what you did.
|
|
## For good.
|
|
if = {
|
|
limit = { scope:increase_centralisation = yes }
|
|
change_strife_opinion = massive_strife_gain
|
|
}
|
|
## Or for ill.
|
|
else = { change_strife_opinion = massive_strife_loss }
|
|
}
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_bad
|
|
title = diarch_subsidise_crown_authority_interaction.tt.declined
|
|
left_icon = scope:recipient
|
|
add_opinion = {
|
|
target = scope:recipient
|
|
modifier = refusal_opinion
|
|
opinion = -20
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_accept = {
|
|
base = -25
|
|
|
|
# Opinion Factor
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 0.5
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
# Your level of influence.
|
|
## Impotent
|
|
modifier = {
|
|
add = -10
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_IMPOTENT
|
|
scope:actor.influence_level = 0
|
|
}
|
|
## Influential
|
|
### Would be zero, so it wouldn't appear.
|
|
## Persuasive
|
|
modifier = {
|
|
add = 10
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_PERSUASIVE
|
|
scope:actor.influence_level = 2
|
|
}
|
|
## Controlling
|
|
modifier = {
|
|
add = 20
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_CONTROLLING
|
|
scope:actor.influence_level = 3
|
|
}
|
|
## Authoritative
|
|
modifier = {
|
|
add = 30
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_AUTHORITATIVE
|
|
scope:actor.influence_level = 4
|
|
}
|
|
## Imperious
|
|
modifier = {
|
|
add = 40
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_IMPERIOUS
|
|
scope:actor.influence_level = 5
|
|
}
|
|
# Traits.
|
|
## --- Arrogant
|
|
modifier = {
|
|
add = -30
|
|
desc = ai_acceptance_trait_arrogant
|
|
scope:recipient = { has_trait = arrogant }
|
|
}
|
|
## --- Ambitious
|
|
modifier = {
|
|
add = -30
|
|
desc = ai_acceptance_trait_ambitious
|
|
scope:recipient = { has_trait = ambitious }
|
|
}
|
|
## --- Stubborn
|
|
modifier = {
|
|
add = -30
|
|
desc = ai_acceptance_trait_stubborn
|
|
scope:recipient = { has_trait = stubborn }
|
|
}
|
|
## -- Paranoid
|
|
modifier = {
|
|
add = -20
|
|
desc = ai_acceptance_trait_paranoid
|
|
scope:recipient = { has_trait = paranoid }
|
|
}
|
|
## + Craven
|
|
modifier = {
|
|
add = 10
|
|
desc = ai_acceptance_trait_craven
|
|
scope:recipient = { has_trait = craven }
|
|
}
|
|
## ++ Trusting
|
|
modifier = {
|
|
add = 20
|
|
desc = ai_acceptance_trait_trusting
|
|
scope:recipient = { has_trait = trusting }
|
|
}
|
|
## ++ Fickle
|
|
modifier = {
|
|
add = 20
|
|
desc = ai_acceptance_trait_fickle
|
|
scope:recipient = { has_trait = fickle }
|
|
}
|
|
## +++ Content
|
|
modifier = {
|
|
add = 30
|
|
desc = ai_acceptance_trait_content
|
|
scope:recipient = { has_trait = content }
|
|
}
|
|
## +++ Humble
|
|
modifier = {
|
|
add = 30
|
|
desc = ai_acceptance_trait_humble
|
|
scope:recipient = { has_trait = humble }
|
|
}
|
|
# Factor for personality.
|
|
ai_value_modifier = {
|
|
who = scope:recipient
|
|
# The meeker they are, the more they'll go along with your wishes.
|
|
ai_boldness = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
NOT = { ai_boldness = 0 }
|
|
}
|
|
}
|
|
value = -1
|
|
}
|
|
}
|
|
# And the lazier.
|
|
ai_energy = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = { ai_energy > 0 }
|
|
}
|
|
value = 0.5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_description = {
|
|
text = auto_accept_interaction_ai
|
|
object = scope:recipient
|
|
scope:recipient = {
|
|
is_ai = yes
|
|
scope:increase_centralisation = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = liege }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 0
|
|
kingdom = 0
|
|
empire = 24
|
|
hegemony = 24
|
|
}
|
|
ai_potential = {
|
|
is_diarch = yes
|
|
liege_has_co_emperorship_trigger = yes
|
|
# Loyal diarchs don't engage in skullduggery.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
# You also need prestige left over afterwards to use other interactions, so make sure the AI doesn't bankrupt itself on this.
|
|
prestige >= {
|
|
value = liege.increase_crown_authority_prestige_cost
|
|
multiply = subsidised_liege_authority_discount_value
|
|
add = major_prestige_value
|
|
}
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 0
|
|
|
|
# Government situation.
|
|
## Does your liege's gubermint allow you to bully people and take their stuff? No? Then you want to take this interaction; anyone who wouldn't has been pre-filtered.
|
|
modifier = {
|
|
add = 1000
|
|
liege = {
|
|
NOR = {
|
|
has_realm_law_flag = title_revocation_allowed
|
|
has_realm_law_flag = vassal_retraction_allowed
|
|
}
|
|
}
|
|
}
|
|
# Otherwise, there's just a slight constant chance based on energy.
|
|
ai_value_modifier = {
|
|
ai_energy = 2
|
|
# Assuming you're the heir, as otherwise...
|
|
trigger = { liege.player_heir ?= root }
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##################################################
|
|
# ANCILLARY DIARCH POWERS
|
|
|
|
# Diarch (actor) either tests learning or spends prestige to gain an unpressed claim on a title held by a vassal of their liege (recipient).
|
|
diarch_legal_meddling_interaction = {
|
|
category = interaction_category_diarch
|
|
common_interaction = yes
|
|
interface_priority = 165
|
|
diarch_interaction = yes
|
|
icon = vassal_claim_liege_title_interaction
|
|
|
|
desc = diarch_legal_meddling_interaction_desc
|
|
|
|
ai_intermediary_maybe = yes
|
|
target_type = title
|
|
target_filter = recipient_domain_titles
|
|
popup_on_receive = yes
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
OR = {
|
|
AND = {
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
}
|
|
is_designated_diarch = yes
|
|
}
|
|
liege = { has_diarchy_parameter = unlock_legal_meddling_interaction }
|
|
}
|
|
# Make sure scope:recipient is suitable.
|
|
scope:recipient = {
|
|
# We only target vassals of the liege...
|
|
liege = scope:actor.liege
|
|
this != scope:actor.liege
|
|
# ... who are appropriately landed.
|
|
is_landed_or_landless_administrative = yes
|
|
scope:recipient.highest_held_title_tier >= tier_county
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# You can't claim a title from someone if you already have claims on all their titles.
|
|
custom_tooltip = {
|
|
text = diarch_legal_meddling_interaction.tt.they_must_have_at_least_one_unclaimed_title
|
|
scope:recipient = {
|
|
any_held_title = {
|
|
diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
# Diarch must be able to act.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
# Must be in an actual diarchy — we show most interactions greyed out for designated diarchs.
|
|
custom_tooltip = {
|
|
text = diarch_interactions.tt.you_must_be_in_a_regency_to_access
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege = { has_diarchy_active_parameter = unlock_legal_meddling_interaction }
|
|
}
|
|
# Must select something.
|
|
trigger_if = {
|
|
# AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise.
|
|
limit = {
|
|
scope:actor = { is_ai = no }
|
|
}
|
|
custom_tooltip = {
|
|
text = interactions_general.tt.must_select_one_option
|
|
OR = {
|
|
scope:diarch_legal_meddling_interaction_duel_learning = yes
|
|
scope:diarch_legal_meddling_interaction_pay_prestige_partial = yes
|
|
scope:diarch_legal_meddling_interaction_pay_prestige_full = yes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
can_send = {
|
|
scope:actor = {
|
|
custom_description = {
|
|
text = "character_interactions_hostile_actions_disabled_delay"
|
|
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
}
|
|
}
|
|
|
|
cooldown = { months = 6 }
|
|
cooldown_against_recipient = { years = 3 }
|
|
|
|
can_be_picked_title = {
|
|
scope:target = {
|
|
# Really anything you don't already have a claim on and which isn't special.
|
|
diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor }
|
|
}
|
|
}
|
|
|
|
# Attempt Methods
|
|
send_options_exclusive = yes
|
|
## Duel for it.
|
|
send_option = {
|
|
# You can always try to duel for it.
|
|
flag = diarch_legal_meddling_interaction_duel_learning
|
|
}
|
|
## Pay partial prestige.
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = {
|
|
prestige >= {
|
|
value = legal_meddling_interaction_title_discounted_cost_value
|
|
multiply = -1
|
|
}
|
|
}
|
|
}
|
|
flag = diarch_legal_meddling_interaction_pay_prestige_partial
|
|
}
|
|
## Pay full prestige.
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = {
|
|
prestige >= {
|
|
value = legal_meddling_interaction_title_cost_value
|
|
multiply = -1
|
|
}
|
|
}
|
|
}
|
|
flag = diarch_legal_meddling_interaction_pay_prestige_full
|
|
}
|
|
|
|
on_send = {
|
|
# Did a landless diarch send this?
|
|
log_diarch_send_interaction_as_variable_effect = { INTERACTION = forge_claim }
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
# Resolution method.
|
|
## If we're duelling, then we duel.
|
|
if = {
|
|
limit = { scope:diarch_legal_meddling_interaction_duel_learning = yes }
|
|
# Now: FIGHT! WITH WORDS!
|
|
duel = {
|
|
skill = learning
|
|
target = scope:recipient
|
|
# Victory! A claim for you.
|
|
50 = {
|
|
compare_modifier = {
|
|
value = scope:duel_value
|
|
multiplier = 3.5
|
|
min = -49
|
|
}
|
|
desc = diarch_legal_meddling_interaction.tt.success
|
|
diarch_legal_meddling_interaction_apply_success_effect = yes
|
|
}
|
|
# Defeat! Into the loser's bin you go.
|
|
50 = {
|
|
compare_modifier = {
|
|
value = scope:duel_value
|
|
multiplier = -3.5
|
|
min = -49
|
|
}
|
|
desc = diarch_legal_meddling_interaction.tt.failure
|
|
diarch_legal_meddling_interaction_apply_fail_effect = yes
|
|
}
|
|
}
|
|
}
|
|
## Otherwise we can take an uneven gamble against a reduced prestige cost..
|
|
else_if = {
|
|
limit = { scope:diarch_legal_meddling_interaction_pay_prestige_partial = yes }
|
|
random_list = {
|
|
# Victory! A claim for you.
|
|
100 = {
|
|
desc = diarch_legal_meddling_interaction.tt.success
|
|
diarch_legal_meddling_interaction_apply_success_effect = yes
|
|
}
|
|
# Defeat! Into the loser's bin you go.
|
|
100 = {
|
|
desc = diarch_legal_meddling_interaction.tt.failure
|
|
diarch_legal_meddling_interaction_apply_fail_effect = yes
|
|
}
|
|
}
|
|
}
|
|
## Or pay the full price.
|
|
else = {
|
|
custom_tooltip = diarch_legal_meddling_interaction.tt.success
|
|
diarch_legal_meddling_interaction_apply_success_effect = yes
|
|
}
|
|
}
|
|
|
|
# Debug logging.
|
|
debug_log = debug_log.legal_meddling.attempt_made
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = peer_vassals }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 6
|
|
kingdom = 6
|
|
empire = 6
|
|
hegemony = 6
|
|
}
|
|
|
|
ai_potential = {
|
|
is_diarch = yes
|
|
# Loyal diarchs don't engage in skullduggery.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
|
|
ai_will_do = {
|
|
# We're generally ruthless here.
|
|
base = @ai_core_loop_base_value
|
|
|
|
# Additions.
|
|
## Weight for opinion.
|
|
opinion_modifier = {
|
|
opinion_target = scope:recipient
|
|
multiplier = -1
|
|
}
|
|
## Weight for personality.
|
|
ai_value_modifier = {
|
|
ai_boldness = 0.25
|
|
ai_greed = 0.5
|
|
ai_honor = 0.5
|
|
}
|
|
## Flag Management.
|
|
### Duel for it if we're massively superior.
|
|
modifier = {
|
|
add = 100
|
|
scope:diarch_legal_meddling_interaction_duel_learning = yes
|
|
learning_diff = {
|
|
target = scope:recipient
|
|
value >= @ai_skill_diff_upper_threshold
|
|
}
|
|
}
|
|
### Else we'll try to pay full prestige, if we've got lots to spare.
|
|
modifier = {
|
|
add = 50
|
|
scope:diarch_legal_meddling_interaction_pay_prestige_full = yes
|
|
prestige >= {
|
|
value = shift_privileges_interaction_target_cost_value
|
|
multiply = @ai_prestige_bank_threshold
|
|
}
|
|
}
|
|
### Or else we'll to chance it, if we can afford that + some slack.
|
|
modifier = {
|
|
add = 25
|
|
scope:diarch_legal_meddling_interaction_pay_prestige_partial = yes
|
|
prestige < {
|
|
value = shift_privileges_interaction_target_cost_value
|
|
multiply = @ai_prestige_bank_threshold
|
|
}
|
|
prestige >= {
|
|
value = shift_privileges_interaction_target_discounted_cost_value
|
|
multiply = @ai_prestige_bank_threshold
|
|
}
|
|
}
|
|
### Otherwise we'll risk a regular duel.
|
|
## Weight up for bordering or de jure areas.
|
|
modifier = {
|
|
add = 50
|
|
is_landed_or_landless_administrative = yes
|
|
any_sub_realm_county = {
|
|
any_neighboring_county = {
|
|
holder = {
|
|
OR = {
|
|
this = scope:recipient
|
|
any_liege_or_above = { this = scope:recipient }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
modifier = {
|
|
add = 50
|
|
is_landed_or_landless_administrative = yes
|
|
scope:actor = {
|
|
any_held_title = {
|
|
any_direct_de_jure_vassal_title = {
|
|
holder ?= {
|
|
OR = {
|
|
this = scope:recipient
|
|
this = {
|
|
any_liege_or_above = { this = scope:recipient }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
## Weight down for folks outside of our de jure kingdom.
|
|
modifier = {
|
|
add = -100
|
|
is_landed_or_landless_administrative = yes
|
|
scope:recipient.primary_title.de_jure_liege ?= {
|
|
this != scope:actor.primary_title.de_jure_liege
|
|
}
|
|
}
|
|
## Landless characters want land, but also want to focus on taking from those who might give it up.
|
|
### So we prioritise hooked AI counts.
|
|
modifier = {
|
|
add = 100
|
|
is_landed = no
|
|
has_hook = scope:recipient
|
|
scope:recipient = {
|
|
highest_held_title_tier = tier_county
|
|
is_ai = yes
|
|
}
|
|
}
|
|
### Then just hooked AI.
|
|
modifier = {
|
|
add = 50
|
|
is_landed = no
|
|
has_hook = scope:recipient
|
|
scope:recipient = { is_ai = yes }
|
|
}
|
|
# Factors.
|
|
## + Weight up if we're lacking valid claims
|
|
modifier = {
|
|
factor = 1.5
|
|
NOR = {
|
|
is_claimant = yes
|
|
any_claim = {
|
|
exists = holder
|
|
exists = holder.liege
|
|
holder.liege = scope:actor.liege
|
|
}
|
|
}
|
|
}
|
|
## + Do pick on people we hate.
|
|
modifier = {
|
|
factor = 1.5
|
|
should_prioritise_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
## + If we're landless, turbo charge this when we lack suitable claims.
|
|
modifier = {
|
|
factor = 3
|
|
scope:actor = {
|
|
is_ruler = no
|
|
any_claim = {
|
|
count < @ai_threshold_for_revoke_cyle
|
|
diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
## + If we're landless, try to prioritise anyone we've got a hook on.
|
|
modifier = {
|
|
factor = 2
|
|
scope:actor = {
|
|
is_ruler = no
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
}
|
|
## - Try not to pick on allies of our liege.
|
|
modifier = {
|
|
factor = 0.25
|
|
should_avoid_hostile_action_against_due_to_liege_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
## x0 Don't pick on our friends or allies.
|
|
modifier = {
|
|
factor = 0
|
|
should_avoid_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
## x0 Don't pick on players unless they're of at least a decent size.
|
|
modifier = {
|
|
factor = 0
|
|
scope:recipient = {
|
|
is_ai = no
|
|
any_held_county = { count <= 3 }
|
|
}
|
|
}
|
|
## x0 If we're landless, don't claim more titles if we've already got enough we can try to action.
|
|
modifier = {
|
|
factor = 0
|
|
scope:actor = {
|
|
is_ruler = no
|
|
any_claim = {
|
|
count >= @ai_threshold_for_revoke_cyle
|
|
diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
## x0 If we're landless, don't pick on people who won't give their lands up.
|
|
modifier = {
|
|
factor = 0
|
|
scope:actor = { is_ruler = no }
|
|
scope:recipient = {
|
|
any_held_county = { count <= 1 }
|
|
}
|
|
}
|
|
### x0 Don't go into prestige debt!
|
|
modifier = {
|
|
factor = 0
|
|
prestige < 0
|
|
}
|
|
}
|
|
}
|
|
|
|
# Diarch (actor) either tests stewardship or spends prestige to gain gold at the expense of negative modifiers delivered to the liege (recipient).
|
|
diarch_syphon_treasury_interaction = {
|
|
category = interaction_category_diarch
|
|
diarch_interaction = yes
|
|
icon = icon_gold
|
|
common_interaction = yes
|
|
|
|
desc = diarch_syphon_treasury_interaction_desc
|
|
|
|
|
|
interface_priority = 60
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
OR = {
|
|
AND = {
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
}
|
|
is_designated_diarch = yes
|
|
}
|
|
liege = { has_diarchy_parameter = unlock_syphon_treasury_interaction }
|
|
}
|
|
# Make sure scope:recipient is suitable.
|
|
scope:recipient = {
|
|
OR = {
|
|
# We only target the liege...
|
|
this = scope:actor.liege
|
|
# ... but we want to see it for peer-vassals and such.
|
|
any_liege_or_above = { this = scope:actor.liege }
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Make sure scope:recipient is the liege.
|
|
custom_tooltip = {
|
|
text = custom_description.tt.must_target_liege
|
|
scope:recipient = scope:actor.liege
|
|
}
|
|
# Diarch must be able to act.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
# If scope:actor's stewardship is too crap, then we need to make sure they haven't somehow managed to riddle scope:recipient's lands with negative modifiers already.
|
|
trigger_if = {
|
|
limit = { scope:actor.stewardship < syphon_treasury_stewardship_medium }
|
|
custom_tooltip = {
|
|
text = diarch_syphon_treasury_interaction.tt.not_enough_marks_or_stewardship
|
|
scope:recipient = {
|
|
any_held_county = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no }
|
|
}
|
|
}
|
|
}
|
|
# Must be in an actual diarchy — we show most interactions greyed out for designated diarchs.
|
|
custom_tooltip = {
|
|
text = diarch_interactions.tt.you_must_be_in_a_regency_to_access
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege = { has_diarchy_active_parameter = unlock_syphon_treasury_interaction }
|
|
}
|
|
# Must have selected an amount to embezzle.
|
|
trigger_if = {
|
|
# AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise.
|
|
limit = {
|
|
scope:actor = { is_ai = no }
|
|
}
|
|
custom_tooltip = {
|
|
text = diarch_interactions.tt.must_embezzle_something
|
|
OR = {
|
|
scope:diarch_syphon_treasury_sum_small = yes
|
|
scope:diarch_syphon_treasury_sum_medium = yes
|
|
scope:diarch_syphon_treasury_sum_large = yes
|
|
scope:diarch_syphon_treasury_sum_huge = yes
|
|
}
|
|
}
|
|
}
|
|
# Cannot be at war with your liege.
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:actor.liege }
|
|
}
|
|
}
|
|
|
|
can_send = {
|
|
scope:actor = {
|
|
custom_description = {
|
|
text = "character_interactions_hostile_actions_disabled_delay"
|
|
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
}
|
|
}
|
|
|
|
cooldown = { years = 3 }
|
|
|
|
# Attempt Methods
|
|
send_options_exclusive = yes
|
|
## Steal a small sum.
|
|
### Bonus to scope:actor.
|
|
send_option = {
|
|
flag = diarch_syphon_treasury_sum_small
|
|
# We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff.
|
|
localization = diarch_syphon_treasury_sum_small_name
|
|
current_description = diarch_syphon_treasury_sum_small
|
|
}
|
|
## Steal a moderate sum.
|
|
### No bonus, no malus.
|
|
send_option = {
|
|
flag = diarch_syphon_treasury_sum_medium
|
|
# We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff.
|
|
localization = diarch_syphon_treasury_sum_medium_name
|
|
current_description = diarch_syphon_treasury_sum_medium
|
|
starts_enabled = { always = yes }
|
|
}
|
|
## Steal a large sum.
|
|
### Malus to scope:actor
|
|
send_option = {
|
|
flag = diarch_syphon_treasury_sum_large
|
|
# We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff.
|
|
localization = diarch_syphon_treasury_sum_large_name
|
|
current_description = diarch_syphon_treasury_sum_large
|
|
}
|
|
## Steal a _huge_sum.
|
|
### _Huge_ malus to scope:actor.
|
|
send_option = {
|
|
flag = diarch_syphon_treasury_sum_huge
|
|
# We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff.
|
|
localization = diarch_syphon_treasury_sum_huge_name
|
|
current_description = diarch_syphon_treasury_sum_huge
|
|
}
|
|
|
|
on_send = {
|
|
# Did a landless diarch send this?
|
|
log_diarch_send_interaction_as_variable_effect = { INTERACTION = embezzle }
|
|
}
|
|
|
|
on_accept = {
|
|
# Time for a skill duel!
|
|
scope:actor = {
|
|
duel = {
|
|
skill = stewardship
|
|
value = syphon_treasury_duel_target_value
|
|
# Victory! Gold for scope:actor, maluses for the liege.
|
|
50 = {
|
|
compare_modifier = {
|
|
value = scope:duel_value
|
|
multiplier = 3.5
|
|
min = -49
|
|
}
|
|
# Bonus for smaller amounts.
|
|
modifier = {
|
|
add = 25
|
|
always = scope:diarch_syphon_treasury_sum_small
|
|
}
|
|
# You always have some kind of a chance.
|
|
min = 10
|
|
desc = diarch_syphon_treasury_interaction.tt.success
|
|
# Inform scope:actor what type of embezzlement they'll be pursuing.
|
|
## Very high stewardship characters syphon development growth from a few counties.
|
|
if = {
|
|
limit = {
|
|
stewardship >= syphon_treasury_stewardship_very_high
|
|
NOT = { government_has_flag = government_is_nomadic }
|
|
}
|
|
custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_development_growth
|
|
}
|
|
## Alternatively, herd for nomadic rulers
|
|
else_if = {
|
|
limit = {
|
|
stewardship >= syphon_treasury_stewardship_very_high
|
|
government_has_flag = government_is_nomadic
|
|
}
|
|
custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_herd
|
|
}
|
|
## High stewardship characters syphon some control from various counties.
|
|
else_if = {
|
|
limit = { stewardship >= syphon_treasury_stewardship_high }
|
|
custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_control_several_counties
|
|
}
|
|
## Medium stewardship characters syphon lots of control from one county.
|
|
else_if = {
|
|
limit = { stewardship >= syphon_treasury_stewardship_medium }
|
|
custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_control_county
|
|
}
|
|
## Low stewardship characters apply county modifiers.
|
|
else = { custom_tooltip = diarch_syphon_treasury_interaction.tt.success.apply_county_modifier }
|
|
# Now we sort the actual effects.
|
|
## A nice toast to tell us about our new gold.
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = diarch_syphon_treasury_interaction.tt.success
|
|
left_icon = scope:recipient
|
|
# Transfer gold.
|
|
## Small amount.
|
|
if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_small }
|
|
give_or_update_embezzler_secret_effect = {
|
|
TARGET = scope:recipient
|
|
STAKE = syphon_treasury_gold_gain_low
|
|
}
|
|
add_gold = syphon_treasury_gold_gain_low
|
|
}
|
|
## Medium amount.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_medium }
|
|
give_or_update_embezzler_secret_effect = {
|
|
TARGET = scope:recipient
|
|
STAKE = syphon_treasury_gold_gain_medium
|
|
}
|
|
add_gold = syphon_treasury_gold_gain_medium
|
|
}
|
|
## Large amount.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_large }
|
|
give_or_update_embezzler_secret_effect = {
|
|
TARGET = scope:recipient
|
|
STAKE = syphon_treasury_gold_gain_high
|
|
}
|
|
add_gold = syphon_treasury_gold_gain_high
|
|
}
|
|
## Huge amount.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_huge }
|
|
give_or_update_embezzler_secret_effect = {
|
|
TARGET = scope:recipient
|
|
STAKE = syphon_treasury_gold_gain_very_high
|
|
}
|
|
add_gold = syphon_treasury_gold_gain_very_high
|
|
}
|
|
}
|
|
## Plus the maluses for the liege.
|
|
scope:recipient = {
|
|
# Very high stewardship characters syphon development growth from a few counties.
|
|
if = {
|
|
limit = { scope:actor.stewardship >= syphon_treasury_stewardship_very_high }
|
|
# Gold transfer was...
|
|
## Very high.
|
|
if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_huge }
|
|
diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = massive_development_progress_loss }
|
|
}
|
|
## High.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_large }
|
|
diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = major_development_progress_loss }
|
|
}
|
|
## Medium.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_medium }
|
|
diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = medium_development_progress_loss }
|
|
}
|
|
## Low.
|
|
else = {
|
|
diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = minor_development_progress_loss }
|
|
}
|
|
}
|
|
# Alternatively, for nomadic rulers, we steal some herd
|
|
else_if = {
|
|
limit = { scope:actor.stewardship >= syphon_treasury_stewardship_very_high government_has_flag = government_is_nomadic }
|
|
# Gold transfer was...
|
|
## Very high.
|
|
if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_huge }
|
|
scope:recipient = {
|
|
domicile ?= { change_herd = monumental_herd_loss }
|
|
}
|
|
}
|
|
## High.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_large }
|
|
scope:recipient = {
|
|
domicile ?= { change_herd = massive_herd_loss }
|
|
}
|
|
}
|
|
## Medium.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_medium }
|
|
scope:recipient = {
|
|
domicile ?= { change_herd = major_herd_loss }
|
|
}
|
|
}
|
|
## Low.
|
|
else = {
|
|
scope:recipient = {
|
|
domicile ?= { change_herd = medium_herd_loss }
|
|
}
|
|
}
|
|
}
|
|
# High stewardship characters syphon some control from various counties.
|
|
else_if = {
|
|
limit = { scope:actor.stewardship >= syphon_treasury_stewardship_high }
|
|
# Gold transfer was...
|
|
## Very high.
|
|
if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_huge }
|
|
diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = monumental_county_control_loss }
|
|
}
|
|
## High.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_large }
|
|
diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = extreme_county_control_loss }
|
|
}
|
|
## Medium.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_medium }
|
|
diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = major_county_control_loss }
|
|
}
|
|
## Low.
|
|
else = {
|
|
diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = medium_county_control_loss }
|
|
}
|
|
}
|
|
# Medium stewardship characters syphon lots of control from one county.
|
|
else_if = {
|
|
limit = { scope:actor.stewardship >= syphon_treasury_stewardship_medium }
|
|
# Gold transfer was...
|
|
## Very high.
|
|
if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_huge }
|
|
random_held_county = {
|
|
# Try to prefer against the capital, as that's more noticeable.
|
|
limit = {
|
|
this != scope:recipient.capital_county
|
|
}
|
|
alternative_limit = { always = yes }
|
|
change_county_control = monumental_county_control_loss
|
|
}
|
|
}
|
|
## High.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_large }
|
|
random_held_county = {
|
|
# Try to prefer against the capital, as that's more noticeable.
|
|
limit = {
|
|
this != scope:recipient.capital_county
|
|
}
|
|
alternative_limit = { always = yes }
|
|
change_county_control = extreme_county_control_loss
|
|
}
|
|
}
|
|
## Medium.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_medium }
|
|
random_held_county = {
|
|
# Try to prefer against the capital, as that's more noticeable.
|
|
limit = {
|
|
this != scope:recipient.capital_county
|
|
}
|
|
alternative_limit = { always = yes }
|
|
change_county_control = major_county_control_loss
|
|
}
|
|
}
|
|
## Low.
|
|
else = {
|
|
random_held_county = {
|
|
# Try to prefer against the capital, as that's more noticeable.
|
|
limit = {
|
|
this != scope:recipient.capital_county
|
|
}
|
|
alternative_limit = { always = yes }
|
|
change_county_control = medium_county_control_loss
|
|
}
|
|
}
|
|
}
|
|
# Low stewardship characters apply county modifiers.
|
|
else = {
|
|
# Gold transfer was...
|
|
## Very high.
|
|
if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_huge }
|
|
random_held_county = {
|
|
# Try to prefer against the capital, as that's more noticeable.
|
|
limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no }
|
|
add_county_modifier = {
|
|
modifier = syphon_treasury_massive_sum_modifier
|
|
years = 5
|
|
}
|
|
}
|
|
}
|
|
## High.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_large }
|
|
random_held_county = {
|
|
# Try to prefer against the capital, as that's more noticeable.
|
|
limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no }
|
|
add_county_modifier = {
|
|
modifier = syphon_treasury_large_sum_modifier
|
|
years = 5
|
|
}
|
|
}
|
|
}
|
|
## Medium.
|
|
else_if = {
|
|
limit = { always = scope:diarch_syphon_treasury_sum_medium }
|
|
random_held_county = {
|
|
# Try to prefer against the capital, as that's more noticeable.
|
|
limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no }
|
|
add_county_modifier = {
|
|
modifier = syphon_treasury_medium_sum_modifier
|
|
years = 5
|
|
}
|
|
}
|
|
}
|
|
## Low.
|
|
else = {
|
|
random_held_county = {
|
|
# Try to prefer against the capital, as that's more noticeable.
|
|
limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no }
|
|
add_county_modifier = {
|
|
modifier = syphon_treasury_small_sum_modifier
|
|
years = 5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Defeat! No gold, just strife & a crime opinion.
|
|
50 = {
|
|
compare_modifier = {
|
|
value = scope:duel_value
|
|
multiplier = -3.5
|
|
min = -49
|
|
}
|
|
# Malus for higher amounts.
|
|
modifier = {
|
|
add = 25
|
|
always = scope:diarch_syphon_treasury_sum_large
|
|
}
|
|
# Chungus malus for chungus higher amounts.
|
|
modifier = {
|
|
add = 100
|
|
always = scope:diarch_syphon_treasury_sum_huge
|
|
}
|
|
# You can always fail.
|
|
min = 20
|
|
desc = diarch_syphon_treasury_interaction.tt.failure.actor
|
|
send_interface_toast = {
|
|
type = event_toast_effect_bad
|
|
title = diarch_syphon_treasury_interaction.tt.failure.actor
|
|
left_icon = scope:recipient
|
|
show_as_tooltip = { diarch_syphon_treasury_interaction_caught_embezzling_effect = yes }
|
|
}
|
|
hidden_effect = {
|
|
scope:recipient = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_neutral
|
|
title = diarch_syphon_treasury_interaction.tt.failure.recipient
|
|
left_icon = scope:actor
|
|
diarch_syphon_treasury_interaction_caught_embezzling_effect = yes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Debug logging.
|
|
debug_log = debug_log.syphon_treasury.attempt_made
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = liege }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 24
|
|
duchy = 12
|
|
kingdom = 12
|
|
empire = 12
|
|
hegemony = 12
|
|
}
|
|
|
|
ai_potential = {
|
|
is_diarch = yes
|
|
# Loyal diarchs don't engage in skullduggery.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
# Honest and generous characters never embezzle.
|
|
NOR = {
|
|
has_trait = honest
|
|
has_trait = generous
|
|
}
|
|
}
|
|
|
|
ai_will_do = {
|
|
# Embezzlement is serious, so you need actual reasons for it.
|
|
base = 0
|
|
|
|
# Additions.
|
|
## Weight for opinion.
|
|
opinion_modifier = {
|
|
opinion_target = scope:recipient
|
|
multiplier = -1
|
|
}
|
|
## Weight for personality.
|
|
ai_value_modifier = {
|
|
ai_boldness = 0.25
|
|
ai_greed = 1
|
|
ai_honor = -0.5
|
|
}
|
|
## Flag Management.
|
|
### The AI never goes for a huge sum, that's just there to tempt the player.
|
|
### We prefer a large sum if we've got a massive skill disparity.
|
|
modifier = {
|
|
add = 100
|
|
scope:diarch_syphon_treasury_sum_large = yes
|
|
stewardship_diff = {
|
|
target = scope:recipient
|
|
value >= @ai_skill_diff_upper_threshold
|
|
}
|
|
}
|
|
### But a moderate sum does well if we're more evenly matched.
|
|
modifier = {
|
|
add = 50
|
|
scope:diarch_syphon_treasury_sum_medium = yes
|
|
stewardship_diff = {
|
|
target = scope:recipient
|
|
value < @ai_skill_diff_upper_threshold
|
|
}
|
|
stewardship_diff = {
|
|
target = scope:recipient
|
|
value >= @ai_skill_diff_lower_threshold
|
|
}
|
|
}
|
|
### Aaaand otherwise we'll accept a small amount.
|
|
modifier = {
|
|
add = 25
|
|
scope:diarch_syphon_treasury_sum_small = yes
|
|
stewardship_diff = {
|
|
target = scope:recipient
|
|
value < @ai_skill_diff_lower_threshold
|
|
}
|
|
}
|
|
## Less likely in tribal societies with less bookwork to hide theft in.
|
|
modifier = {
|
|
add = -50
|
|
scope:recipient = { government_has_flag = government_is_tribal }
|
|
}
|
|
## Debt is a great motivator for theft.
|
|
### Is slightly in debt.
|
|
modifier = {
|
|
add = 10
|
|
debt_level = 1
|
|
}
|
|
### Is one year in debt.
|
|
modifier = {
|
|
add = 25
|
|
debt_level = 2
|
|
}
|
|
### Is two years in debt.
|
|
modifier = {
|
|
add = 40
|
|
debt_level = 3
|
|
}
|
|
### Is three years in debt.
|
|
modifier = {
|
|
add = 60
|
|
debt_level = 4
|
|
}
|
|
### Is four years in debt.
|
|
modifier = {
|
|
add = 100
|
|
debt_level = 5
|
|
}
|
|
### Is over five years in debt.
|
|
modifier = {
|
|
add = 200
|
|
debt_level >= 6
|
|
}
|
|
## Certain traits can affect likelihood directly.
|
|
### It's intentional that these don't sync up value-wise with their opposite traits.
|
|
### Honest/generous excluded because they're hard locked out of the interaction for the AI.
|
|
### +++ Greedy.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = greedy
|
|
}
|
|
### ++ Deceitful.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_2_value
|
|
has_trait = deceitful
|
|
}
|
|
### + Arbitrary.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_1_value
|
|
has_trait = arbitrary
|
|
}
|
|
### -- Just.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_2_value
|
|
has_trait = just
|
|
}
|
|
## Skill considerations.
|
|
### Very low negative comparative stewardship.
|
|
modifier = {
|
|
add = -50
|
|
stewardship_diff = {
|
|
target = scope:recipient
|
|
value <= 10
|
|
}
|
|
# Filter out arrogant characters, who can't believe they suck.
|
|
NOT = { has_trait = arrogant }
|
|
}
|
|
### Low negative comparative stewardship.
|
|
modifier = {
|
|
add = -25
|
|
stewardship_diff = {
|
|
target = scope:recipient
|
|
value <= 5
|
|
}
|
|
# Filter out arrogant characters, who can't believe they suck.
|
|
NOT = { has_trait = arrogant }
|
|
}
|
|
### High positive comparative stewardship.
|
|
modifier = {
|
|
add = 25
|
|
stewardship_diff = {
|
|
target = scope:recipient
|
|
value >= 5
|
|
}
|
|
# Filter out humble characters, who give their liege too much credit.
|
|
NOT = { has_trait = humble }
|
|
}
|
|
### Very high positive comparative stewardship.
|
|
modifier = {
|
|
add = 50
|
|
stewardship_diff = {
|
|
target = scope:recipient
|
|
value >= 10
|
|
}
|
|
# Filter out humble characters, who give their liege too much credit.
|
|
NOT = { has_trait = humble }
|
|
}
|
|
# Factors.
|
|
## + Do pick on people we hate.
|
|
modifier = {
|
|
factor = 1.5
|
|
should_prioritise_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
## x0 Don't pick on our friends or allies.
|
|
modifier = {
|
|
factor = 0
|
|
should_avoid_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
## We're happy to bully players here, since we're not taking their land.
|
|
}
|
|
}
|
|
|
|
# Diarch (actor) either tests diplomacy or spends prestige to give negative modifiers to the lands of a vassal of their liege (secondary recipient), who can't resist.
|
|
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 = 285
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
OR = {
|
|
AND = {
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
}
|
|
is_designated_diarch = yes
|
|
}
|
|
liege = { has_diarchy_parameter = unlock_shift_privileges_interaction }
|
|
}
|
|
# Make sure scope:recipient is suitable.
|
|
scope:recipient = {
|
|
# We only target vassals of the liege...
|
|
liege = scope:actor.liege
|
|
this != scope:actor.liege
|
|
# ... who are appropriately landed.
|
|
is_landed_or_landless_administrative = yes
|
|
scope:recipient.highest_held_title_tier >= tier_county
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Diarch must be able to act.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
# Diarch revocations require a claim.
|
|
custom_tooltip = {
|
|
text = diarch_shift_privileges_interaction.tt.no_affectable_counties
|
|
scope:recipient = {
|
|
any_held_county = { diarch_shift_privileges_valid_target_title_trigger = yes }
|
|
}
|
|
}
|
|
# Must be in an actual diarchy — we show most interactions greyed out for designated diarchs.
|
|
custom_tooltip = {
|
|
text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege = { has_diarchy_active_parameter = unlock_shift_privileges_interaction }
|
|
}
|
|
# Must select something.
|
|
trigger_if = {
|
|
# AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise.
|
|
limit = {
|
|
scope:actor = { is_ai = no }
|
|
}
|
|
custom_tooltip = {
|
|
text = interactions_general.tt.must_select_one_option
|
|
OR = {
|
|
scope:diarch_shift_privileges_interaction_duel_diplomacy = yes
|
|
scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes
|
|
scope:diarch_shift_privileges_interaction_pay_prestige_full = yes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
can_send = {
|
|
scope:actor = {
|
|
custom_description = {
|
|
text = "character_interactions_hostile_actions_disabled_delay"
|
|
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
}
|
|
}
|
|
|
|
cooldown = { months = 6 }
|
|
cooldown_against_recipient = { years = 3 }
|
|
|
|
# Attempt Methods
|
|
send_options_exclusive = yes
|
|
## Duel for it.
|
|
send_option = {
|
|
# You can always try to duel for it.
|
|
flag = diarch_shift_privileges_interaction_duel_diplomacy
|
|
}
|
|
## Pay partial prestige.
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = {
|
|
prestige >= {
|
|
value = shift_privileges_interaction_target_discounted_cost_value
|
|
multiply = -1
|
|
}
|
|
}
|
|
}
|
|
flag = diarch_shift_privileges_interaction_pay_prestige_partial
|
|
}
|
|
## Pay full prestige.
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = {
|
|
prestige >= {
|
|
value = shift_privileges_interaction_target_cost_value
|
|
multiply = -1
|
|
}
|
|
}
|
|
}
|
|
flag = diarch_shift_privileges_interaction_pay_prestige_full
|
|
}
|
|
|
|
on_send = {
|
|
# Did a landless diarch send this?
|
|
log_diarch_send_interaction_as_variable_effect = { INTERACTION = shift_privileges }
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
# Resolution method.
|
|
## If we're duelling, then we duel.
|
|
if = {
|
|
limit = { scope:diarch_shift_privileges_interaction_duel_diplomacy = yes }
|
|
# Now: FIGHT! WITH WORDS!
|
|
duel = {
|
|
skill = diplomacy
|
|
target = scope:recipient
|
|
# Victory! Cash for you, negative modifier for your opponent.
|
|
50 = {
|
|
compare_modifier = {
|
|
value = scope:duel_value
|
|
multiplier = 3.5
|
|
min = -49
|
|
}
|
|
desc = diarch_shift_privileges_interaction.tt.success
|
|
diarch_shift_privileges_interaction_apply_success_effect = yes
|
|
}
|
|
# Defeat! Into the loser's bin you go.
|
|
50 = {
|
|
compare_modifier = {
|
|
value = scope:duel_value
|
|
multiplier = -3.5
|
|
min = -49
|
|
}
|
|
desc = diarch_shift_privileges_interaction.tt.failure
|
|
diarch_shift_privileges_interaction_apply_fail_effect = yes
|
|
}
|
|
}
|
|
}
|
|
## Otherwise we can take an even gamble against a reduced prestige cost..
|
|
else_if = {
|
|
limit = { scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes }
|
|
random_list = {
|
|
# Victory! A claim for you.
|
|
100 = {
|
|
desc = diarch_shift_privileges_interaction.tt.success
|
|
diarch_shift_privileges_interaction_apply_success_effect = yes
|
|
}
|
|
# Defeat! Into the loser's bin you go.
|
|
100 = {
|
|
desc = diarch_shift_privileges_interaction.tt.failure
|
|
diarch_shift_privileges_interaction_apply_fail_effect = yes
|
|
}
|
|
}
|
|
}
|
|
## Or pay the full price.
|
|
else = {
|
|
custom_tooltip = diarch_shift_privileges_interaction.tt.success
|
|
diarch_shift_privileges_interaction_apply_success_effect = yes
|
|
}
|
|
# Prestige costs.
|
|
## Point out the lack of cost.
|
|
if = {
|
|
limit = { scope:diarch_shift_privileges_interaction_duel_diplomacy = yes }
|
|
custom_tooltip = diarch_interaction_pay_prestige_none
|
|
}
|
|
## Point out the discount.
|
|
else_if = {
|
|
limit = { scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes }
|
|
add_prestige = shift_privileges_interaction_target_discounted_cost_value
|
|
}
|
|
## Soz mate, yerr payin' full price.
|
|
else = { add_prestige = shift_privileges_interaction_target_cost_value }
|
|
tgp_activate_catalyst_against_hegemon_effect = {
|
|
HEGEMON = scope:actor.top_liege
|
|
CATALYST = catalyst_diarch_mandate
|
|
}
|
|
}
|
|
|
|
# Debug logging.
|
|
debug_log = debug_log.shift_privileges.attempt_made
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = peer_vassals }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 6
|
|
kingdom = 6
|
|
empire = 6
|
|
hegemony = 6
|
|
}
|
|
|
|
ai_potential = {
|
|
is_diarch = yes
|
|
# Loyal diarchs don't engage in skullduggery.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
|
|
ai_will_do = {
|
|
# We're generally ruthless here.
|
|
base = @ai_secondary_powers_base_value
|
|
|
|
# Additions.
|
|
## Weight for opinion.
|
|
opinion_modifier = {
|
|
opinion_target = scope:recipient
|
|
multiplier = -1
|
|
}
|
|
## Weight for personality.
|
|
ai_value_modifier = {
|
|
ai_boldness = 0.25
|
|
ai_greed = 0.5
|
|
ai_honor = 0.5
|
|
}
|
|
## Flag Management.
|
|
### Duel for it if we're massively superior.
|
|
modifier = {
|
|
add = 100
|
|
scope:diarch_shift_privileges_interaction_duel_diplomacy = yes
|
|
diplomacy_diff = {
|
|
target = scope:recipient
|
|
value >= @ai_skill_diff_upper_threshold
|
|
}
|
|
}
|
|
### Else we'll try to pay full prestige, if we've got lots to spare.
|
|
modifier = {
|
|
add = 50
|
|
scope:diarch_shift_privileges_interaction_pay_prestige_full = yes
|
|
prestige >= {
|
|
value = shift_privileges_interaction_target_cost_value
|
|
multiply = @ai_prestige_bank_threshold
|
|
}
|
|
}
|
|
### Or else we'll chance it, if we can afford that + some slack.
|
|
modifier = {
|
|
add = 25
|
|
scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes
|
|
prestige < {
|
|
value = shift_privileges_interaction_target_cost_value
|
|
multiply = @ai_prestige_bank_threshold
|
|
}
|
|
prestige >= {
|
|
value = shift_privileges_interaction_target_discounted_cost_value
|
|
multiply = @ai_prestige_bank_threshold
|
|
}
|
|
}
|
|
### Otherwise we'll risk a regular duel.
|
|
## Landless AI want to do this more.
|
|
modifier = {
|
|
add = 25
|
|
is_ruler = no
|
|
}
|
|
## AI who are in debt seek ways out of it.
|
|
modifier = {
|
|
add = 100
|
|
debt_level >= 0
|
|
}
|
|
## Certain traits make it either very likely or very unlikely.
|
|
### +++ Arbitrary.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = arbitrary
|
|
}
|
|
### --- Just.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_3_value
|
|
has_trait = just
|
|
}
|
|
# Factors.
|
|
## + Do pick on people we hate.
|
|
modifier = {
|
|
factor = 1.5
|
|
should_prioritise_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
## - Try not to pick on allies of our liege.
|
|
modifier = {
|
|
factor = 0.25
|
|
should_avoid_hostile_action_against_due_to_liege_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
## x0 Don't pick on our friends or allies.
|
|
modifier = {
|
|
factor = 0
|
|
should_avoid_hostile_action_against_due_to_personal_relations_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
## x0 Don't pick on players unless they're of at least a decent size.
|
|
modifier = {
|
|
factor = 0
|
|
scope:recipient = {
|
|
is_ai = no
|
|
any_held_county = { count <= 3 }
|
|
}
|
|
}
|
|
### x0 Don't go into prestige debt!
|
|
modifier = {
|
|
factor = 0
|
|
prestige < 0
|
|
}
|
|
}
|
|
}
|
|
|
|
# Diarch (actor) requests use of a special CB from liege (recipient), allowing them to powerfully expand the empire's borders and harvest influence.
|
|
diarch_request_imperial_expedition_interaction = {
|
|
category = interaction_category_diarch
|
|
diarch_interaction = yes
|
|
notification_text = DIARCH_REQUESTS_IMPERIAL_EXPEDITION
|
|
icon = invasion
|
|
interface_priority = 5
|
|
|
|
desc = diarch_request_imperial_expedition_interaction_desc
|
|
|
|
ai_maybe = yes
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
liege = { has_diarchy_parameter = unlock_diarch_requests_military_expedition_interaction }
|
|
}
|
|
# Same sub-realm only.
|
|
OR = {
|
|
scope:actor.liege = scope:recipient
|
|
scope:recipient = {
|
|
any_liege_or_above = { this = scope:actor.liege }
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Make sure scope:recipient is the liege.
|
|
custom_tooltip = {
|
|
text = custom_description.tt.must_target_liege
|
|
scope:recipient = scope:actor.liege
|
|
}
|
|
# Diarch must be able to act.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_requests_military_expedition_interaction }
|
|
# And you have to have _some_ troops of your own.
|
|
custom_tooltip = {
|
|
text = diarch_request_imperial_expedition_interaction.tt.minimum_troop_count
|
|
scope:actor.max_military_strength >= request_imperial_expedition_minimum_troop_count_value
|
|
}
|
|
# _And_ you don't already have a charge.
|
|
custom_tooltip = {
|
|
text = diarch_request_imperial_expedition_interaction.tt.actor_already_has_charge
|
|
scope:actor = {
|
|
NOT = { has_variable = imperial_expedition_charged }
|
|
}
|
|
}
|
|
# Cannot be at war with your liege.
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:actor.liege }
|
|
}
|
|
}
|
|
|
|
# Hefty cooldown on this guy, as you shouldn't be able to do these often.
|
|
cooldown_against_recipient = { years = 25 }
|
|
|
|
cost = {
|
|
influence = {
|
|
if = {
|
|
limit = { scope:influence_major = yes }
|
|
add = request_imperial_expedition_influence_stake_major_value
|
|
}
|
|
else_if = {
|
|
limit = { scope:influence_medium = yes }
|
|
add = request_imperial_expedition_influence_stake_medium_value
|
|
}
|
|
else_if = {
|
|
limit = { scope:influence_minor = yes }
|
|
add = request_imperial_expedition_influence_stake_minor_value
|
|
}
|
|
}
|
|
}
|
|
|
|
# How much influence do we want to outlay on this?
|
|
## A cheapy amount.
|
|
send_option = {
|
|
# Always valid.
|
|
flag = influence_minor
|
|
localization = diarch_request_imperial_expedition_interaction.tt.influence_minor_name
|
|
}
|
|
## A medium amount.
|
|
send_option = {
|
|
is_valid = { scope:actor.influence >= request_imperial_expedition_influence_stake_medium_value }
|
|
flag = influence_medium
|
|
localization = diarch_request_imperial_expedition_interaction.tt.influence_medium_name
|
|
}
|
|
## A large amount.
|
|
send_option = {
|
|
is_valid = { scope:actor.influence >= request_imperial_expedition_influence_stake_major_value }
|
|
flag = influence_major
|
|
localization = diarch_request_imperial_expedition_interaction.tt.influence_major_name
|
|
}
|
|
## Use a hook instead.
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
flag = hook
|
|
localization = GENERIC_SPEND_A_HOOK
|
|
}
|
|
should_use_extra_icon = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
|
|
|
|
on_auto_accept = {
|
|
# Fire the notification event telling scope:recipient what's been done.
|
|
scope:recipient = { trigger_event = diarchy.8003 }
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
# Display effects in the interaction.
|
|
show_as_tooltip = { diarch_request_imperial_expedition_accepted_effect = yes }
|
|
# Fire the notification event.
|
|
trigger_event = diarchy.8001
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
# Display effects in the interaction.
|
|
show_as_tooltip = { diarch_request_imperial_expedition_rejected_effect = yes }
|
|
# Fire the notification event.
|
|
trigger_event = diarchy.8002
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
scope:recipient = {
|
|
trigger_if = {
|
|
limit = { scope:hook = yes }
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:hook = yes
|
|
}
|
|
}
|
|
trigger_else_if = {
|
|
limit = { scope:influence_major = yes }
|
|
influence < request_imperial_expedition_influence_stake_major_value
|
|
}
|
|
trigger_else_if = {
|
|
limit = { scope:influence_medium = yes }
|
|
influence < request_imperial_expedition_influence_stake_medium_value
|
|
}
|
|
trigger_else_if = {
|
|
limit = { scope:influence_minor = yes }
|
|
influence < request_imperial_expedition_influence_stake_minor_value
|
|
}
|
|
trigger_else = { always = no }
|
|
}
|
|
}
|
|
|
|
ai_accept = {
|
|
base = -25
|
|
|
|
# Opinion Factor
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 1
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
# Your level of influence.
|
|
## Impotent
|
|
modifier = {
|
|
add = -10
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_IMPOTENT
|
|
scope:actor.influence_level = 0
|
|
}
|
|
## Influential
|
|
### Would be zero, so it wouldn't appear.
|
|
## Persuasive
|
|
modifier = {
|
|
add = 10
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_PERSUASIVE
|
|
scope:actor.influence_level = 2
|
|
}
|
|
## Controlling
|
|
modifier = {
|
|
add = 20
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_CONTROLLING
|
|
scope:actor.influence_level = 3
|
|
}
|
|
## Authoritative
|
|
modifier = {
|
|
add = 30
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_AUTHORITATIVE
|
|
scope:actor.influence_level = 4
|
|
}
|
|
## Imperious
|
|
modifier = {
|
|
add = 40
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_IMPERIOUS
|
|
scope:actor.influence_level = 5
|
|
}
|
|
# Traits.
|
|
## ---- Paranoid
|
|
modifier = {
|
|
add = -50
|
|
desc = ai_acceptance_trait_paranoid
|
|
scope:recipient = { has_trait = paranoid }
|
|
}
|
|
## --- Stubborn
|
|
modifier = {
|
|
add = -30
|
|
desc = ai_acceptance_trait_stubborn
|
|
scope:recipient = { has_trait = stubborn }
|
|
}
|
|
## --- Content
|
|
modifier = {
|
|
add = -30
|
|
desc = ai_acceptance_trait_content
|
|
scope:recipient = { has_trait = content }
|
|
}
|
|
## - Humble
|
|
modifier = {
|
|
add = -10
|
|
desc = ai_acceptance_trait_humble
|
|
scope:recipient = { has_trait = humble }
|
|
}
|
|
## + Arrogant
|
|
modifier = {
|
|
add = 10
|
|
desc = ai_acceptance_trait_arrogant
|
|
scope:recipient = { has_trait = arrogant }
|
|
}
|
|
## + Ambitious
|
|
modifier = {
|
|
add = 10
|
|
desc = ai_acceptance_trait_ambitious
|
|
scope:recipient = { has_trait = ambitious }
|
|
}
|
|
## ++ Trusting
|
|
modifier = {
|
|
add = 20
|
|
desc = ai_acceptance_trait_trusting
|
|
scope:recipient = { has_trait = trusting }
|
|
}
|
|
## ++ Fickle
|
|
modifier = {
|
|
add = 20
|
|
desc = ai_acceptance_trait_fickle
|
|
scope:recipient = { has_trait = fickle }
|
|
}
|
|
## ++ Lazy
|
|
modifier = {
|
|
add = 20
|
|
desc = ai_acceptance_trait_lazy
|
|
scope:recipient = { has_trait = lazy }
|
|
}
|
|
## +++ Craven
|
|
modifier = {
|
|
add = 30
|
|
desc = ai_acceptance_trait_craven
|
|
scope:recipient = { has_trait = craven }
|
|
}
|
|
# Factor for personality.
|
|
ai_value_modifier = {
|
|
who = scope:recipient
|
|
# The meeker they are, the more they'll go along with your wishes.
|
|
ai_boldness = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
NOT = { ai_boldness = 0 }
|
|
}
|
|
}
|
|
value = -1
|
|
}
|
|
}
|
|
# And the lazier.
|
|
ai_energy = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = { ai_energy > 0 }
|
|
}
|
|
value = 0.5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = liege }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 48
|
|
duchy = 24
|
|
kingdom = 24
|
|
empire = 24
|
|
hegemony = 24
|
|
}
|
|
ai_potential = {
|
|
is_diarch = yes
|
|
liege = { has_diarchy_active_parameter = unlock_diarch_requests_military_expedition_interaction }
|
|
NOR = {
|
|
has_trait = craven
|
|
has_trait = lazy
|
|
has_trait = content
|
|
}
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = -50
|
|
|
|
# Personality.
|
|
ai_value_modifier = {
|
|
ai_energy = 2
|
|
ai_boldness = 1
|
|
ai_greed = 1
|
|
}
|
|
# Traits.
|
|
## Brave
|
|
modifier = {
|
|
add = 25
|
|
has_trait = brave
|
|
}
|
|
## Ambitious
|
|
modifier = {
|
|
add = 50
|
|
has_trait = ambitious
|
|
}
|
|
## Arrogant
|
|
modifier = {
|
|
add = 25
|
|
has_trait = arrogant
|
|
}
|
|
## Loyal & Disloyal (same result, different motivations)
|
|
modifier = {
|
|
add = 25
|
|
OR = {
|
|
has_trait = loyal
|
|
has_trait = disloyal
|
|
}
|
|
}
|
|
## Diligent
|
|
modifier = {
|
|
add = 25
|
|
has_trait = diligent
|
|
}
|
|
## We've already filtered out craven, lazy, & content by this point.
|
|
# Military.
|
|
## For every thousand troops we can put in ourselves, make us more likely to ask.
|
|
modifier = {
|
|
add = {
|
|
value = scope:actor.max_military_strength
|
|
divide = 100
|
|
floor = yes
|
|
}
|
|
always = yes
|
|
}
|
|
# Flag Management.
|
|
## Make sure the AI uses hooks for this as it's % based
|
|
modifier = {
|
|
add = 1
|
|
scope:hook = yes
|
|
}
|
|
## Otherwise, try to spend the most influence possible whenever we can.
|
|
modifier = {
|
|
add = 3
|
|
scope:influence_minor = yes
|
|
}
|
|
modifier = {
|
|
add = 2
|
|
scope:influence_medium = yes
|
|
}
|
|
modifier = {
|
|
add = 1
|
|
scope:influence_major = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
# Diarch (actor) requests a kingdom governor title from liege (recipient).
|
|
diarch_demand_despotate_interaction = {
|
|
category = interaction_category_diarch
|
|
diarch_interaction = yes
|
|
notification_text = DIARCH_DEMANDS_DESPOTATE
|
|
icon = icon_found_despotate
|
|
interface_priority = 15
|
|
|
|
desc = diarch_demand_despotate_interaction_desc
|
|
|
|
target_type = title
|
|
target_filter = secondary_recipient_de_jure_titles
|
|
can_be_picked_title = {
|
|
scope:target = { valid_kingdom_for_diarch_to_demand_as_despotate_trigger = yes }
|
|
}
|
|
has_valid_target_showing_failures_only = {
|
|
# Only show kingdoms.
|
|
scope:target.tier = tier_kingdom
|
|
# Don't show the empire's capital kingdom.
|
|
NOT = {
|
|
scope:recipient.capital_county = { target_is_de_jure_liege_or_above = scope:target }
|
|
}
|
|
}
|
|
# We do this via redirects because recipient_de_jure_titles did not turn up for work today.
|
|
redirect = {
|
|
scope:recipient = { save_scope_as = secondary_recipient }
|
|
}
|
|
ai_maybe = yes
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
liege = { has_diarchy_parameter = unlock_diarch_demand_kingdom_interaction }
|
|
}
|
|
# Same sub-realm only.
|
|
OR = {
|
|
scope:actor.liege = scope:recipient
|
|
scope:recipient = {
|
|
any_liege_or_above = { this = scope:actor.liege }
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Make sure scope:recipient is the liege.
|
|
custom_tooltip = {
|
|
text = custom_description.tt.must_target_liege
|
|
scope:recipient = scope:actor.liege
|
|
}
|
|
# Diarch must be able to act.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_demand_kingdom_interaction }
|
|
# You do not already have a kingdom tier title
|
|
custom_tooltip = {
|
|
text = diarch_demand_despotate_interaction.tt.already_have_high_titles
|
|
scope:actor.highest_held_title_tier < tier_kingdom
|
|
}
|
|
# Cannot be at war with your liege.
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:actor.liege }
|
|
}
|
|
}
|
|
|
|
# Hefty cooldown on this guy, as you shouldn't be able to pester about this often.
|
|
cooldown_against_recipient = { years = 25 }
|
|
|
|
cost = {
|
|
influence = {
|
|
if = {
|
|
limit = { scope:influence_major = yes }
|
|
add = diarch_demand_despotate_interaction_stake_major_value
|
|
}
|
|
else_if = {
|
|
limit = { scope:influence_medium = yes }
|
|
add = diarch_demand_despotate_interaction_stake_medium_value
|
|
}
|
|
else_if = {
|
|
limit = { scope:influence_minor = yes }
|
|
add = diarch_demand_despotate_interaction_stake_minor_value
|
|
}
|
|
}
|
|
}
|
|
|
|
# How much influence do we want to outlay on this?
|
|
## A cheapy amount.
|
|
send_option = {
|
|
# Always valid.
|
|
flag = influence_minor
|
|
localization = diarch_demand_despotate_interaction.tt.influence_minor_name
|
|
}
|
|
## A medium amount.
|
|
send_option = {
|
|
is_valid = { scope:actor.influence >= diarch_demand_despotate_interaction_stake_medium_value }
|
|
flag = influence_medium
|
|
localization = diarch_demand_despotate_interaction.tt.influence_medium_name
|
|
}
|
|
## A large amount.
|
|
send_option = {
|
|
is_valid = { scope:actor.influence >= diarch_demand_despotate_interaction_stake_major_value }
|
|
flag = influence_major
|
|
localization = diarch_demand_despotate_interaction.tt.influence_major_name
|
|
}
|
|
## Use a hook instead.
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
flag = hook
|
|
localization = GENERIC_SPEND_A_HOOK
|
|
}
|
|
should_use_extra_icon = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
|
|
|
|
on_auto_accept = {
|
|
# Fire the notification event telling scope:recipient what's been done.
|
|
scope:recipient = { trigger_event = diarchy.8033 }
|
|
}
|
|
|
|
on_accept = {
|
|
# Notify the player of how to force their liege's hand.
|
|
if = {
|
|
limit = {
|
|
scope:influence_major = yes
|
|
scope:recipient.influence >= diarch_demand_despotate_interaction_stake_to_raise_major_inverted_value
|
|
}
|
|
custom_tooltip = diarch_demand_despotate_interaction_stake_to_raise_major_value.tt.liege_can_refuse
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:influence_medium = yes
|
|
scope:recipient.influence >= diarch_demand_despotate_interaction_stake_to_raise_medium_inverted_value
|
|
}
|
|
custom_tooltip = diarch_demand_despotate_interaction_stake_to_raise_medium_value.tt.liege_can_refuse
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:influence_minor = yes
|
|
scope:recipient.influence >= diarch_demand_despotate_interaction_stake_to_raise_minor_inverted_value
|
|
}
|
|
custom_tooltip = diarch_demand_despotate_interaction_stake_to_raise_minor_value.tt.liege_can_refuse
|
|
}
|
|
scope:actor = {
|
|
# Display effects in the interaction.
|
|
show_as_tooltip = { diarch_demand_despotate_interaction_accepted_effect = yes }
|
|
# Fire the notification event.
|
|
trigger_event = diarchy.8031
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
# Display effects in the interaction.
|
|
show_as_tooltip = { diarch_demand_despotate_interaction_rejected_effect = yes }
|
|
# Fire the notification event.
|
|
trigger_event = diarchy.8032
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
scope:recipient = {
|
|
trigger_if = {
|
|
limit = { scope:hook = yes }
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:hook = yes
|
|
}
|
|
}
|
|
trigger_else_if = {
|
|
limit = { scope:influence_major = yes }
|
|
influence < diarch_demand_despotate_interaction_stake_to_raise_major_inverted_value
|
|
}
|
|
trigger_else_if = {
|
|
limit = { scope:influence_medium = yes }
|
|
influence < diarch_demand_despotate_interaction_stake_to_raise_medium_inverted_value
|
|
}
|
|
trigger_else_if = {
|
|
limit = { scope:influence_minor = yes }
|
|
influence < diarch_demand_despotate_interaction_stake_to_raise_minor_inverted_value
|
|
}
|
|
trigger_else = { always = no }
|
|
}
|
|
}
|
|
|
|
ai_accept = {
|
|
base = -50
|
|
|
|
# Opinion Factor
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 1
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
# Your level of influence.
|
|
## Impotent
|
|
modifier = {
|
|
add = -10
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_IMPOTENT
|
|
scope:actor.influence_level = 0
|
|
}
|
|
## Influential
|
|
### Would be zero, so it wouldn't appear.
|
|
## Persuasive
|
|
modifier = {
|
|
add = 10
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_PERSUASIVE
|
|
scope:actor.influence_level = 2
|
|
}
|
|
## Controlling
|
|
modifier = {
|
|
add = 20
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_CONTROLLING
|
|
scope:actor.influence_level = 3
|
|
}
|
|
## Authoritative
|
|
modifier = {
|
|
add = 30
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_AUTHORITATIVE
|
|
scope:actor.influence_level = 4
|
|
}
|
|
## Imperious
|
|
modifier = {
|
|
add = 40
|
|
desc = AI_OPINION_INFLUENCE_LEVEL_IMPERIOUS
|
|
scope:actor.influence_level = 5
|
|
}
|
|
# Traits.
|
|
## ---- Paranoid
|
|
modifier = {
|
|
add = -50
|
|
desc = ai_acceptance_trait_paranoid
|
|
scope:recipient = { has_trait = paranoid }
|
|
}
|
|
## --- Stubborn
|
|
modifier = {
|
|
add = -30
|
|
desc = ai_acceptance_trait_stubborn
|
|
scope:recipient = { has_trait = stubborn }
|
|
}
|
|
## --- Greedy
|
|
modifier = {
|
|
add = -30
|
|
desc = ai_acceptance_trait_greedy
|
|
scope:recipient = { has_trait = greedy }
|
|
}
|
|
## -- Arrogant
|
|
modifier = {
|
|
add = -20
|
|
desc = ai_acceptance_trait_arrogant
|
|
scope:recipient = { has_trait = arrogant }
|
|
}
|
|
## ++ Humble
|
|
modifier = {
|
|
add = 20
|
|
desc = ai_acceptance_trait_humble
|
|
scope:recipient = { has_trait = humble }
|
|
}
|
|
## ++ Trusting
|
|
modifier = {
|
|
add = 20
|
|
desc = ai_acceptance_trait_trusting
|
|
scope:recipient = { has_trait = trusting }
|
|
}
|
|
## ++ Fickle
|
|
modifier = {
|
|
add = 20
|
|
desc = ai_acceptance_trait_fickle
|
|
scope:recipient = { has_trait = fickle }
|
|
}
|
|
## ++ Lazy
|
|
modifier = {
|
|
add = 20
|
|
desc = ai_acceptance_trait_lazy
|
|
scope:recipient = { has_trait = lazy }
|
|
}
|
|
## ++ Generous
|
|
modifier = {
|
|
add = 20
|
|
desc = ai_acceptance_trait_generous
|
|
scope:recipient = { has_trait = generous }
|
|
}
|
|
# Factor for personality.
|
|
ai_value_modifier = {
|
|
who = scope:recipient
|
|
# The meeker they are, the more they'll go along with your wishes.
|
|
ai_boldness = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
NOT = { ai_boldness = 0 }
|
|
}
|
|
}
|
|
value = -1
|
|
}
|
|
}
|
|
# And the lazier.
|
|
ai_energy = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = { ai_energy > 0 }
|
|
}
|
|
value = 0.5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_set_target = {
|
|
scope:recipient = {
|
|
# Grab our empires.
|
|
every_held_title = {
|
|
title_tier >= empire
|
|
add_to_list = empires_list
|
|
}
|
|
# Then from that, formulate our kingdoms.
|
|
every_in_list = {
|
|
list = empires_list
|
|
every_in_de_jure_hierarchy = {
|
|
limit = {
|
|
tier = tier_kingdom
|
|
valid_kingdom_for_diarch_to_demand_as_despotate_trigger = yes
|
|
}
|
|
continue = { tier >= tier_kingdom }
|
|
add_to_list = kingdoms_list
|
|
}
|
|
}
|
|
# Now pick our best shot.
|
|
ordered_in_list = {
|
|
list = kingdoms_list
|
|
order_by = {
|
|
# Tell the AI to grab its own kingdom first of all.
|
|
if = {
|
|
limit = { this = scope:actor.capital_county.kingdom }
|
|
add = 1000
|
|
}
|
|
# Otherwise, go for the biggest within the empire.
|
|
else = {
|
|
every_de_jure_county_holder = {
|
|
limit = { top_liege = scope:recipient }
|
|
add = 1
|
|
}
|
|
}
|
|
}
|
|
save_scope_as = target
|
|
}
|
|
}
|
|
}
|
|
ai_targets = { ai_recipients = liege }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 0
|
|
kingdom = 0
|
|
empire = 24
|
|
hegemony = 24
|
|
}
|
|
ai_potential = {
|
|
is_diarch = yes
|
|
liege = { has_diarchy_active_parameter = unlock_diarch_demand_kingdom_interaction }
|
|
NOR = {
|
|
has_trait = humble
|
|
has_trait = content
|
|
}
|
|
# Loyal diarchs don't ask for what their liege could give freely.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 25
|
|
|
|
# Personality.
|
|
ai_value_modifier = {
|
|
ai_greed = 1
|
|
ai_boldness = 1
|
|
ai_energy = 0.25
|
|
}
|
|
# Opinion.
|
|
## The more we like our emperor, the less likely we are to want to interfere in their planned setup.
|
|
opinion_modifier = {
|
|
opinion_target = scope:recipient
|
|
multiplier = -0.25
|
|
}
|
|
# Traits.
|
|
## +++ Ambitious.
|
|
modifier = {
|
|
add = 50
|
|
has_trait = ambitious
|
|
}
|
|
## +++ Arrogant.
|
|
modifier = {
|
|
add = 50
|
|
has_trait = arrogant
|
|
}
|
|
## ++ Greedy.
|
|
modifier = {
|
|
add = 25
|
|
has_trait = greedy
|
|
}
|
|
## ++ Diligent.
|
|
modifier = {
|
|
add = 25
|
|
has_trait = diligent
|
|
}
|
|
## -- Generous.
|
|
modifier = {
|
|
add = -25
|
|
has_trait = generous
|
|
}
|
|
## --- Lazy.
|
|
modifier = {
|
|
add = -50
|
|
has_trait = lazy
|
|
}
|
|
## Humble & Content have both been pre-filtered out.
|
|
# Flag Management.
|
|
## Make sure the AI uses hooks for this as it's % based
|
|
modifier = {
|
|
add = 4
|
|
scope:hook = yes
|
|
}
|
|
## Otherwise, try to spend the most influence possible whenever we can.
|
|
modifier = {
|
|
add = 3
|
|
scope:influence_minor = yes
|
|
}
|
|
modifier = {
|
|
add = 2
|
|
scope:influence_medium = yes
|
|
}
|
|
modifier = {
|
|
add = 1
|
|
scope:influence_major = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##################################################
|
|
# DIARCH COUP LIEGE INTERACTIONS
|
|
|
|
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
|
|
|
|
desc = diarch_coup_liege_interaction_desc
|
|
|
|
# First, grab every other powerful vassal of your liege & plonk them in a list.
|
|
populate_recipient_list = {
|
|
scope:actor.liege = {
|
|
every_powerful_vassal = {
|
|
limit = {
|
|
this != scope:actor
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
every_powerful_family = {
|
|
limit = {
|
|
NOR = {
|
|
house_head = scope:actor
|
|
house_head = scope:recipient
|
|
}
|
|
}
|
|
house_head = { add_to_list = characters }
|
|
}
|
|
}
|
|
}
|
|
redirect = {
|
|
# Turn the old scope:recipient into the target.
|
|
if = {
|
|
limit = {
|
|
NOR = {
|
|
scope:recipient = scope:actor
|
|
scope:recipient = scope:actor.liege
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
save_scope_as = secondary_recipient
|
|
}
|
|
}
|
|
# Always make sure we're targeting your liege as the recipient for UX consistency.
|
|
scope:actor.liege = {
|
|
save_scope_as = recipient
|
|
}
|
|
}
|
|
|
|
is_shown = {
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
OR = {
|
|
AND = {
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
}
|
|
is_designated_diarch = yes
|
|
}
|
|
}
|
|
# secondary_recipient is always saved whenever you use it on anyone who isn't yourself or your liege, so we use this fact to validate it after the redirect, otherwise it will show up on every other ruler in the game
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
scope:secondary_recipient.liege ?= scope:actor.liege
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Diarch must be able to act.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
# Loyalty hooks, per the name, will tend to block this.
|
|
custom_tooltip = {
|
|
text = diarch_coup_liege_interaction.tt.action_blocked_by_loyalty_hook
|
|
NOT = {
|
|
diarch_loyalty_due_to_hook_trigger = {
|
|
LIEGE = scope:recipient
|
|
DIARCH = scope:actor
|
|
}
|
|
}
|
|
}
|
|
# They can't already be in the list.
|
|
custom_tooltip = {
|
|
text = diarch_coup_liege_interaction.tt.secondary_recipient_is_already_in_list
|
|
NOT = {
|
|
scope:actor = {
|
|
any_in_list = {
|
|
variable = coup_pv_supporters_list
|
|
this = scope:secondary_recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Must be in an actual diarchy — we show most interactions greyed out for designated diarchs.
|
|
custom_tooltip = {
|
|
text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_diarch = yes }
|
|
}
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege ?= { has_diarchy_active_parameter = regents_can_try_to_overthrow_present_lieges }
|
|
}
|
|
trigger_if = {
|
|
limit = { exists = scope:secondary_recipient }
|
|
# Must be available.
|
|
## So no kids.
|
|
scope:secondary_recipient = { is_adult = yes }
|
|
## & no one in prison.
|
|
scope:secondary_recipient = { is_imprisoned = no }
|
|
# Plus, currently, humans can't be part of these plots.
|
|
scope:secondary_recipient = { is_ai = yes }
|
|
}
|
|
# Must select something — tooltips'll knacker otherwise + just for consistency.
|
|
trigger_if = {
|
|
# AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise.
|
|
limit = {
|
|
scope:actor = { is_ai = no }
|
|
}
|
|
custom_tooltip = {
|
|
text = interactions_general.tt.must_select_one_option
|
|
OR = {
|
|
scope:promise_nothing = yes
|
|
scope:promise_hook_weak = yes
|
|
scope:promise_hook_strong = yes
|
|
scope:promise_gold_medium = yes
|
|
scope:promise_gold_large = yes
|
|
}
|
|
}
|
|
}
|
|
# Cannot be at war with your liege.
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:actor.liege }
|
|
}
|
|
}
|
|
|
|
can_send = {
|
|
# We check this here to make the interaction generally findable, so you can get at the list easily, but prevent you from inviting randos to the coup.
|
|
## It's actually technically harmless - they won't help but don't get their payout if they're not powerful when the coup hits.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { government_has_flag = government_has_powerful_families }
|
|
}
|
|
scope:secondary_recipient.house = { is_powerful_family = yes }
|
|
}
|
|
trigger_else = {
|
|
scope:secondary_recipient = { is_powerful_vassal = yes }
|
|
}
|
|
}
|
|
|
|
# Promise bugger all.
|
|
send_option = {
|
|
flag = promise_nothing
|
|
localization = PROMISE_NOTHING
|
|
}
|
|
# Promise hook.
|
|
send_option = {
|
|
is_valid = {
|
|
# Can't offer a hook if they've already got any type of hook on you.
|
|
NOT = {
|
|
scope:secondary_recipient ?= { has_hook = scope:actor }
|
|
}
|
|
}
|
|
flag = promise_hook_weak
|
|
localization = PROMISE_HOOK_WEAK
|
|
}
|
|
# Promise strong hook.
|
|
send_option = {
|
|
is_valid = {
|
|
# Can't offer a strong hook if they've already got a strong hook on you.
|
|
NOT = {
|
|
scope:secondary_recipient ?= { has_strong_hook = scope:actor }
|
|
}
|
|
}
|
|
flag = promise_hook_strong
|
|
localization = PROMISE_HOOK_STRONG
|
|
}
|
|
# Promise gold.
|
|
send_option = {
|
|
flag = promise_gold_medium
|
|
localization = PROMISE_GOLD_MEDIUM
|
|
}
|
|
# Promise piles of gold.
|
|
send_option = {
|
|
flag = promise_gold_large
|
|
localization = PROMISE_GOLD_LARGE
|
|
}
|
|
|
|
on_accept = {
|
|
if = {
|
|
limit = { exists = scope:secondary_recipient }
|
|
scope:actor = {
|
|
# Scope:secondary_recipient joins your conspiracy.
|
|
custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.joins_conspiracy
|
|
## Send a notification just for a bit of extra feedback.
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = diarch_coup_liege_interaction.tt.secondary_recipient.joins_conspiracy
|
|
left_icon = scope:secondary_recipient
|
|
}
|
|
# HerHis reward is collected if you succeed.
|
|
if = {
|
|
limit = { scope:promise_nothing = no }
|
|
custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.reward
|
|
}
|
|
# Certain scope:secondary_recipients may betray their liege in the throne room itself.
|
|
## Chancellors in diplo coups.
|
|
if = {
|
|
limit = { scope:secondary_recipient ?= scope:recipient.cp:councillor_chancellor }
|
|
custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.chancellor_sabotage
|
|
}
|
|
## Spymasters in intrigue coups.
|
|
if = {
|
|
limit = { scope:secondary_recipient ?= scope:recipient.cp:councillor_spymaster }
|
|
custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.spymaster_sabotage
|
|
}
|
|
## Personal Champions in prowess coups.
|
|
if = {
|
|
limit = {
|
|
scope:secondary_recipient = { has_court_position = champion_court_position }
|
|
}
|
|
custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.champion_sabotage
|
|
# Yes, there are other candidates, but we're not tooltipping every conceivable case. Rulers are gonna have supporters.
|
|
custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.champion_sabotage.others
|
|
}
|
|
# Right, actually record them.
|
|
## Including in the variable.
|
|
add_to_variable_list = {
|
|
name = coup_pv_supporters_list
|
|
target = scope:secondary_recipient
|
|
}
|
|
## And their promised payment, if anything.
|
|
### Weak hooks.
|
|
if = {
|
|
limit = { scope:promise_hook_weak = yes }
|
|
add_to_variable_list = {
|
|
name = coup_promise_list_weak_hook
|
|
target = scope:secondary_recipient
|
|
}
|
|
}
|
|
### Strong hooks.
|
|
else_if = {
|
|
limit = { scope:promise_hook_strong = yes }
|
|
add_to_variable_list = {
|
|
name = coup_promise_list_strong_hook
|
|
target = scope:secondary_recipient
|
|
}
|
|
}
|
|
### Cash.
|
|
else_if = {
|
|
limit = { scope:promise_gold_medium = yes }
|
|
add_to_variable_list = {
|
|
name = coup_promise_list_gold
|
|
target = scope:secondary_recipient
|
|
}
|
|
}
|
|
### Big Cash.
|
|
else_if = {
|
|
limit = { scope:promise_gold_large = yes }
|
|
add_to_variable_list = {
|
|
name = coup_promise_list_big_gold
|
|
target = scope:secondary_recipient
|
|
}
|
|
}
|
|
tgp_activate_catalyst_against_hegemon_effect = {
|
|
HEGEMON = scope:actor.top_liege
|
|
CATALYST = catalyst_diarch_mandate
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Disguise the interaction from players.
|
|
ai_min_reply_days = 0
|
|
ai_max_reply_days = 0
|
|
|
|
ai_accept = {
|
|
# Base reluctance to commit to a risky, treasonous plan.
|
|
base = -50
|
|
|
|
# Opinion.
|
|
## Of scope:actor.
|
|
opinion_modifier = {
|
|
trigger = {
|
|
exists = scope:secondary_recipient # because the secondary_recipient hasn't been chosen when the interaction is initialized
|
|
}
|
|
who = scope:secondary_recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 1
|
|
}
|
|
## Of scope:recipient.
|
|
opinion_modifier = {
|
|
trigger = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
who = scope:secondary_recipient
|
|
opinion_target = scope:recipient
|
|
multiplier = -0.5
|
|
}
|
|
# Personality.
|
|
## Values.
|
|
ai_value_modifier = {
|
|
trigger = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
who = scope:secondary_recipient
|
|
ai_honor = -1
|
|
ai_boldness = 0.25
|
|
}
|
|
## Traits.
|
|
### +++ Disloyal.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.disloyal
|
|
scope:secondary_recipient ?= { has_trait = disloyal }
|
|
}
|
|
### +++ Ambitious.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.ambitious
|
|
scope:secondary_recipient ?= { has_trait = ambitious }
|
|
}
|
|
### ++ Arbitrary.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_2_value
|
|
desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.arbitrary
|
|
scope:secondary_recipient ?= { has_trait = arbitrary }
|
|
}
|
|
### + Fickle.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_1_value
|
|
desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.fickle
|
|
scope:secondary_recipient ?= { has_trait = fickle }
|
|
}
|
|
### - Stubborn.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_1_value
|
|
desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.stubborn
|
|
scope:secondary_recipient ?= { has_trait = stubborn }
|
|
}
|
|
### -- Just.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_2_value
|
|
desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.just
|
|
scope:secondary_recipient ?= { has_trait = just }
|
|
}
|
|
### --- Content.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_3_value
|
|
desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.content
|
|
scope:secondary_recipient ?= { has_trait = content }
|
|
}
|
|
### --- Loyal.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_3_value
|
|
desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.loyal
|
|
scope:secondary_recipient ?= { has_trait = loyal }
|
|
}
|
|
# Hooks.
|
|
## Weak hooks are happy to have you in power.
|
|
modifier = {
|
|
add = 25
|
|
scope:secondary_recipient ?= { has_weak_hook = scope:actor }
|
|
}
|
|
## Strong hooks are *very* happy to have you in power.
|
|
modifier = {
|
|
add = 75
|
|
scope:secondary_recipient ?= { has_strong_hook = scope:actor }
|
|
}
|
|
## And conversely, don't want you to coup scope:recipient if they've already got a strong hook on them.
|
|
modifier = {
|
|
add = -100
|
|
scope:secondary_recipient ?= { has_strong_hook = scope:recipient }
|
|
}
|
|
## Loyalty hooks stop the AI signing up.
|
|
modifier = {
|
|
exists = scope:secondary_recipient
|
|
add = -1000
|
|
desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook
|
|
diarch_loyalty_due_to_hook_trigger = {
|
|
LIEGE = scope:recipient
|
|
DIARCH = scope:secondary_recipient
|
|
}
|
|
}
|
|
# Various.
|
|
## Scope:secondary_recipient generally doesn't want to betray an ally.
|
|
modifier = {
|
|
add = {
|
|
value = -100
|
|
# Reduce the malus a little if also allied to scope:actor.
|
|
if = {
|
|
limit = {
|
|
scope:secondary_recipient ?= { is_allied_to = scope:actor }
|
|
}
|
|
add = 50
|
|
}
|
|
}
|
|
scope:secondary_recipient ?= { is_allied_to = scope:recipient }
|
|
}
|
|
## Heirs don't generally want to betray scope:recipient, as they'll lose out.
|
|
modifier = {
|
|
add = -100
|
|
desc = diarch_coup_liege_interaction.tt.heir_will_not_side_against_benefactor
|
|
scope:recipient = {
|
|
any_heir = { this = scope:secondary_recipient }
|
|
}
|
|
}
|
|
# Promises.
|
|
## Weak hook.
|
|
modifier = {
|
|
add = {
|
|
value = 25
|
|
# Multiply this...
|
|
## ... down for folks who wouldn't care...
|
|
if = {
|
|
limit = { has_trait = honest }
|
|
multiply = 0.5
|
|
}
|
|
## ... & and up for those who would.
|
|
if = {
|
|
limit = { has_trait = deceitful }
|
|
multiply = 2
|
|
}
|
|
}
|
|
desc = diarch_coup_liege_interaction.tt.wants_hook
|
|
scope:promise_hook_weak = yes
|
|
}
|
|
## Strong hook.
|
|
modifier = {
|
|
add = {
|
|
value = 50
|
|
# Multiply this...
|
|
## ... down for folks who wouldn't care...
|
|
if = {
|
|
limit = { has_trait = honest }
|
|
multiply = 0.5
|
|
}
|
|
## ... & and up for those who would.
|
|
if = {
|
|
limit = { has_trait = deceitful }
|
|
multiply = 2
|
|
}
|
|
}
|
|
desc = diarch_coup_liege_interaction.tt.wants_strong_hook
|
|
scope:promise_hook_strong = yes
|
|
}
|
|
## Gold.
|
|
modifier = {
|
|
add = {
|
|
value = 25
|
|
# Multiply this...
|
|
## ... down for folks who wouldn't care...
|
|
if = {
|
|
limit = { has_trait = generous }
|
|
multiply = 0.5
|
|
}
|
|
## ... & and up for those who would.
|
|
if = {
|
|
limit = { has_trait = greedy }
|
|
multiply = 2
|
|
}
|
|
}
|
|
desc = diarch_coup_liege_interaction.tt.wants_gold
|
|
scope:promise_gold_medium = yes
|
|
}
|
|
## Lotsa gold.
|
|
modifier = {
|
|
add = {
|
|
value = 50
|
|
# Multiply this...
|
|
## ... down for folks who wouldn't care...
|
|
if = {
|
|
limit = { has_trait = generous }
|
|
multiply = 0.5
|
|
}
|
|
## ... & and up for those who would.
|
|
if = {
|
|
limit = { has_trait = greedy }
|
|
multiply = 2
|
|
}
|
|
}
|
|
desc = diarch_coup_liege_interaction.tt.wants_strong_gold
|
|
scope:promise_gold_large = yes
|
|
}
|
|
}
|
|
|
|
# AI
|
|
## The AI doesn't use this interaction automatically - they try it manually upon hitting the required threshold.
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##################################################
|
|
# LIEGE ON DIARCH POWERS
|
|
|
|
# Liege (actor) transfers vizier's (recipient's) extravagance modifiers into their own gold.
|
|
mulct_vizier_interaction = {
|
|
category = interaction_category_diarch
|
|
common_interaction = yes
|
|
icon = icon_gold
|
|
|
|
desc = mulct_vizier_interaction_desc
|
|
|
|
is_shown = {
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
diarch ?= scope:recipient
|
|
# Plus only on viziers.
|
|
has_diarchy_active_parameter = unlock_mulct_vizier_interaction
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:actor = {
|
|
# Some basic checks.
|
|
is_available_adult = yes
|
|
# Shouldn't happen, but just in case.
|
|
NOT = { is_at_war_with = scope:recipient }
|
|
}
|
|
# Must select something.
|
|
trigger_if = {
|
|
# AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise.
|
|
limit = {
|
|
scope:actor = { is_ai = no }
|
|
}
|
|
custom_tooltip = {
|
|
text = interactions_general.tt.must_select_one_option
|
|
OR = {
|
|
scope:mulct_vizier_interaction_minimal = yes
|
|
scope:mulct_vizier_interaction_minor = yes
|
|
scope:mulct_vizier_interaction_medium = yes
|
|
scope:mulct_vizier_interaction_major = yes
|
|
scope:mulct_vizier_interaction_massive = yes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Don't squeeze them too often.
|
|
cooldown = { years = 10 }
|
|
|
|
# Attempt Methods
|
|
send_options_exclusive = yes
|
|
## Minimal.
|
|
### Always show this'un.
|
|
send_option = { flag = mulct_vizier_interaction_minimal }
|
|
## Minor.
|
|
send_option = { flag = mulct_vizier_interaction_minor }
|
|
## Medium.
|
|
send_option = { flag = mulct_vizier_interaction_medium }
|
|
## Major.
|
|
send_option = { flag = mulct_vizier_interaction_major }
|
|
## Massive.
|
|
send_option = { flag = mulct_vizier_interaction_massive }
|
|
|
|
can_send = {
|
|
trigger_if = {
|
|
limit = { scope:mulct_vizier_interaction_minor = yes }
|
|
custom_tooltip = {
|
|
text = mulct_vizier_interaction.extravagances_required.t1
|
|
scope:recipient = {
|
|
OR = {
|
|
has_character_modifier = vizier_extravagance_t1_treasure_modifier
|
|
has_character_modifier = vizier_extravagance_t1_activities_modifier
|
|
has_character_modifier = vizier_extravagance_t1_property_modifier
|
|
has_character_modifier = vizier_extravagance_t1_charity_modifier
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = mulct_vizier_interaction.scales_too_swung.tt
|
|
scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_minor_value
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = { scope:mulct_vizier_interaction_medium = yes }
|
|
custom_tooltip = {
|
|
text = mulct_vizier_interaction.extravagances_required.t2
|
|
scope:recipient = {
|
|
OR = {
|
|
has_character_modifier = vizier_extravagance_t2_treasure_modifier
|
|
has_character_modifier = vizier_extravagance_t2_activities_modifier
|
|
has_character_modifier = vizier_extravagance_t2_property_modifier
|
|
has_character_modifier = vizier_extravagance_t2_charity_modifier
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = mulct_vizier_interaction.scales_too_swung.tt
|
|
scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_medium_value
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = { scope:mulct_vizier_interaction_major = yes }
|
|
custom_tooltip = {
|
|
text = mulct_vizier_interaction.extravagances_required.t3
|
|
scope:recipient = {
|
|
OR = {
|
|
has_character_modifier = vizier_extravagance_t3_treasure_modifier
|
|
has_character_modifier = vizier_extravagance_t3_activities_modifier
|
|
has_character_modifier = vizier_extravagance_t3_property_modifier
|
|
has_character_modifier = vizier_extravagance_t3_charity_modifier
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = mulct_vizier_interaction.scales_too_swung.tt
|
|
scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_major_value
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = { scope:mulct_vizier_interaction_massive = yes }
|
|
custom_tooltip = {
|
|
text = mulct_vizier_interaction.extravagances_required.t4
|
|
scope:recipient = {
|
|
OR = {
|
|
has_character_modifier = vizier_extravagance_t4_treasure_modifier
|
|
has_character_modifier = vizier_extravagance_t4_activities_modifier
|
|
has_character_modifier = vizier_extravagance_t4_property_modifier
|
|
has_character_modifier = vizier_extravagance_t4_charity_modifier
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = mulct_vizier_interaction.scales_too_swung.tt
|
|
scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_massive_value
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
# Sort the gold transfer.
|
|
mulct_vizier_for_cash_effect = { VIZIER = scope:recipient }
|
|
scope:recipient = {
|
|
# How angry is scope:recipient?
|
|
if = {
|
|
limit = { scope:mulct_vizier_interaction_minimal = yes }
|
|
mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 1 }
|
|
}
|
|
if = {
|
|
limit = { scope:mulct_vizier_interaction_minor = yes }
|
|
mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 2 }
|
|
}
|
|
if = {
|
|
limit = { scope:mulct_vizier_interaction_medium = yes }
|
|
mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 3 }
|
|
}
|
|
if = {
|
|
limit = { scope:mulct_vizier_interaction_major = yes }
|
|
mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 4 }
|
|
}
|
|
if = {
|
|
limit = { scope:mulct_vizier_interaction_massive = yes }
|
|
mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 5 }
|
|
}
|
|
# How much stress is this causing them?
|
|
stress_impact = {
|
|
ambitious = major_stress_impact_loss
|
|
arrogant = medium_stress_impact_loss
|
|
generous = minor_stress_impact_loss
|
|
greedy = major_stress_impact_gain
|
|
}
|
|
}
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_vizmulct_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_vizmulct_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_vizmulct_accept_recipient_list }
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = diarch }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 120
|
|
kingdom = 120
|
|
empire = 120
|
|
hegemony = 120
|
|
}
|
|
ai_potential = {
|
|
has_active_diarchy = yes
|
|
has_diarchy_parameter = unlock_mulct_vizier_interaction
|
|
}
|
|
|
|
ai_will_do = {
|
|
# You generally want to do this if you can.
|
|
base = 100
|
|
|
|
# Circumstances.
|
|
## Are we in debt?
|
|
modifier = {
|
|
add = 100
|
|
gold <= -1
|
|
}
|
|
## Are we at war?
|
|
modifier = {
|
|
add = 100
|
|
is_at_war = yes
|
|
}
|
|
|
|
# Vizier Extravagances.
|
|
## Are they in the upper tiers?
|
|
modifier = {
|
|
add = 50
|
|
scope:recipient = {
|
|
OR = {
|
|
has_character_modifier = vizier_extravagance_t3_treasure_modifier
|
|
has_character_modifier = vizier_extravagance_t3_activities_modifier
|
|
has_character_modifier = vizier_extravagance_t3_property_modifier
|
|
has_character_modifier = vizier_extravagance_t3_charity_modifier
|
|
}
|
|
}
|
|
}
|
|
## Are they in the uppermost tier?
|
|
modifier = {
|
|
add = 25
|
|
scope:recipient = {
|
|
OR = {
|
|
has_character_modifier = vizier_extravagance_t4_treasure_modifier
|
|
has_character_modifier = vizier_extravagance_t4_activities_modifier
|
|
has_character_modifier = vizier_extravagance_t4_property_modifier
|
|
has_character_modifier = vizier_extravagance_t4_charity_modifier
|
|
}
|
|
}
|
|
}
|
|
|
|
# Traits.
|
|
## Greedy characters'll do it whenever they can.
|
|
modifier = {
|
|
add = 50
|
|
has_trait = greedy
|
|
}
|
|
## Generous characters'll only do it occasionally.
|
|
modifier = {
|
|
add = -50
|
|
has_trait = generous
|
|
}
|
|
|
|
# Send Option Usage.
|
|
## These teach the AI how to use the send options.
|
|
## These are linear; basically, prefer the largest number you're valid for (since the can_send'll block whatever you can't mulct).
|
|
modifier = {
|
|
add = 1
|
|
scope:mulct_vizier_interaction_minimal = yes
|
|
}
|
|
modifier = {
|
|
add = 2
|
|
scope:mulct_vizier_interaction_minor = yes
|
|
}
|
|
modifier = {
|
|
add = 3
|
|
scope:mulct_vizier_interaction_medium = yes
|
|
}
|
|
modifier = {
|
|
add = 4
|
|
scope:mulct_vizier_interaction_major = yes
|
|
}
|
|
modifier = {
|
|
add = 5
|
|
scope:mulct_vizier_interaction_massive = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##################################################
|
|
# BOTH-WAYS POWERS
|
|
|
|
# Diarch or liege target their opposite number and inflict negative realm opinion equivalent to the multiplied difference between intrigue or diplomacy in exchange for influence.
|
|
scapegoat_counterpart_interaction = {
|
|
category = interaction_category_diarch
|
|
icon = icon_scheme_slander
|
|
|
|
desc = scapegoat_counterpart_interaction_desc
|
|
|
|
interface_priority = 25
|
|
|
|
is_shown = {
|
|
# You must be one of the partners in a diarchy.
|
|
is_in_scapegoating_diarchy_visibility_trigger = { PARAMETER_TYPE = has_diarchy_parameter }
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Free adults only: you can't issue this type of decree from prison, and it wouldn't be fair to stop you from slandering a child but let a child slander you.
|
|
scope:actor = {
|
|
is_imprisoned = no
|
|
is_adult = yes
|
|
}
|
|
# And you can't blame a literal child.
|
|
scope:recipient = { is_adult = yes }
|
|
# Nor can you blame the opposing party if you're a deactivated diarch.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_diarch_of_target = scope:recipient }
|
|
}
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
}
|
|
custom_tooltip = {
|
|
text = scapegoat_counterpart_interaction.tt.skill_requirements
|
|
OR = {
|
|
scope:actor.diplomacy > scope:recipient.diplomacy
|
|
scope:actor.intrigue > scope:recipient.intrigue
|
|
}
|
|
}
|
|
is_in_scapegoating_diarchy_visibility_trigger = { PARAMETER_TYPE = has_diarchy_active_parameter }
|
|
# Cannot be at war with each other.
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:recipient }
|
|
}
|
|
}
|
|
|
|
cooldown = { years = 3 }
|
|
|
|
cost = {
|
|
# Non-ruler diarchs have all the time to do this the slow way.
|
|
prestige = {
|
|
if = {
|
|
limit = {
|
|
scope:actor = { is_ruler = yes }
|
|
}
|
|
value = medium_prestige_value
|
|
}
|
|
}
|
|
}
|
|
|
|
# Diplomacy
|
|
## Small amount
|
|
send_option = {
|
|
is_valid = {
|
|
custom_tooltip = {
|
|
text = scapegoat_counterpart_interaction.diplomacy_small.is_valid
|
|
scope:actor.diplomacy > scope:recipient.diplomacy
|
|
}
|
|
}
|
|
flag = diplomacy_small
|
|
localization = scapegoat_counterpart_interaction.diplomacy_small.t
|
|
}
|
|
## Large amount
|
|
send_option = {
|
|
is_valid = {
|
|
custom_tooltip = {
|
|
text = scapegoat_counterpart_interaction.diplomacy_large.is_valid
|
|
scope:actor.diplomacy > scope:recipient.diplomacy
|
|
}
|
|
}
|
|
flag = diplomacy_large
|
|
localization = scapegoat_counterpart_interaction.diplomacy_large.t
|
|
}
|
|
# Intrigue
|
|
## Small amount
|
|
send_option = {
|
|
is_valid = {
|
|
custom_tooltip = {
|
|
text = scapegoat_counterpart_interaction.intrigue_small.is_valid
|
|
scope:actor.intrigue > scope:recipient.intrigue
|
|
}
|
|
}
|
|
flag = intrigue_small
|
|
localization = scapegoat_counterpart_interaction.intrigue_small.t
|
|
}
|
|
## Large amount
|
|
send_option = {
|
|
is_valid = {
|
|
custom_tooltip = {
|
|
text = scapegoat_counterpart_interaction.intrigue_large.is_valid
|
|
scope:actor.intrigue > scope:recipient.intrigue
|
|
}
|
|
}
|
|
flag = intrigue_large
|
|
localization = scapegoat_counterpart_interaction.intrigue_large.t
|
|
}
|
|
|
|
on_accept = {
|
|
scope:recipient = {
|
|
# Send out our effects for the diarch.
|
|
if = {
|
|
limit = { is_diarch_of_target = scope:actor }
|
|
trigger_event = diarchy.8041
|
|
every_player = {
|
|
limit = {
|
|
top_liege = scope:actor.top_liege
|
|
NOR = {
|
|
this = scope:actor
|
|
this = scope:recipient
|
|
}
|
|
}
|
|
trigger_event = diarchy.8041
|
|
}
|
|
scapegoat_counterpart_interaction_process_results_effect = {
|
|
REALM_OPINION_ACTOR = add_tyranny
|
|
REALM_OPINION_RECIPIENT = change_strife_opinion
|
|
}
|
|
}
|
|
# And our effects for the liege.
|
|
else = {
|
|
tgp_activate_catalyst_against_hegemon_effect = {
|
|
HEGEMON = scope:actor.top_liege
|
|
CATALYST = catalyst_diarch_mandate
|
|
}
|
|
trigger_event = diarchy.8042
|
|
every_player = {
|
|
limit = {
|
|
top_liege = scope:actor.top_liege
|
|
NOR = {
|
|
this = scope:actor
|
|
this = scope:recipient
|
|
}
|
|
}
|
|
trigger_event = diarchy.8042
|
|
}
|
|
scapegoat_counterpart_interaction_process_results_effect = {
|
|
REALM_OPINION_ACTOR = change_strife_opinion
|
|
REALM_OPINION_RECIPIENT = add_tyranny
|
|
}
|
|
}
|
|
}
|
|
# Regardless of what happens, scope:recipient is a bit miffed.
|
|
scope:recipient = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = slandered_me_opinion
|
|
opinion = {
|
|
value = scope:multiplied_diff
|
|
divide = -20
|
|
max = -10
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = scapegoat_counterpart_interaction.tt.infighting_sullies_the_realm
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = liege }
|
|
ai_targets = { ai_recipients = diarch }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 36
|
|
duchy = 12
|
|
kingdom = 12
|
|
empire = 12
|
|
hegemony = 12
|
|
}
|
|
|
|
ai_potential = {
|
|
OR = {
|
|
# Either they're a liege.
|
|
AND = {
|
|
has_active_diarchy = yes
|
|
# With suitable skill diffs to give some kind of a gain.
|
|
OR = {
|
|
diplomacy_diff = {
|
|
target = diarch
|
|
value >= 5
|
|
}
|
|
intrigue_diff = {
|
|
target = diarch
|
|
value >= 5
|
|
}
|
|
}
|
|
}
|
|
# Or they're the diarch.
|
|
AND = {
|
|
is_diarch = yes
|
|
# With suitable skill diffs to give some kind of a gain.
|
|
OR = {
|
|
diplomacy_diff = {
|
|
target = liege
|
|
value >= 5
|
|
}
|
|
intrigue_diff = {
|
|
target = liege
|
|
value >= 5
|
|
}
|
|
}
|
|
# Loyal diarchs don't engage in skullduggery.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
}
|
|
# Filter out some traits that would never do this.
|
|
NOR = {
|
|
has_trait = just
|
|
has_trait = honest
|
|
has_trait = loyal
|
|
}
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = -50
|
|
|
|
# Opinion.
|
|
opinion_modifier = {
|
|
opinion_target = scope:recipient
|
|
multiplier = -2.5
|
|
}
|
|
## Plus weight up a bit further for bad relationships.
|
|
first_valid = {
|
|
# Nemeses.
|
|
modifier = {
|
|
add = 200
|
|
has_relation_nemesis = scope:recipient
|
|
}
|
|
# Rivals.
|
|
modifier = {
|
|
add = 50
|
|
has_relation_rival = scope:recipient
|
|
}
|
|
}
|
|
# Traits.
|
|
## +++ Deceitful
|
|
modifier = {
|
|
add = 30
|
|
has_trait = deceitful
|
|
}
|
|
## +++ Ambitious
|
|
modifier = {
|
|
add = 30
|
|
has_trait = ambitious
|
|
}
|
|
## ++ Arrogant
|
|
modifier = {
|
|
add = 20
|
|
has_trait = arrogant
|
|
}
|
|
## ++ Arbitrary
|
|
modifier = {
|
|
add = 20
|
|
has_trait = arbitrary
|
|
}
|
|
## ++ Vengeful & doesn't like you
|
|
modifier = {
|
|
add = 20
|
|
has_trait = vengeful
|
|
opinion = {
|
|
target = scope:recipient
|
|
value <= -1
|
|
}
|
|
}
|
|
## + Sadistic
|
|
modifier = {
|
|
add = 10
|
|
has_trait = sadistic
|
|
}
|
|
## + Fickle
|
|
modifier = {
|
|
add = 10
|
|
has_trait = fickle
|
|
}
|
|
## + Eccentric
|
|
modifier = {
|
|
add = 10
|
|
has_trait = eccentric
|
|
}
|
|
## + Greedy
|
|
modifier = {
|
|
add = 10
|
|
has_trait = greedy
|
|
}
|
|
## - Generous
|
|
modifier = {
|
|
add = -10
|
|
has_trait = generous
|
|
}
|
|
## -- Compassionate
|
|
modifier = {
|
|
add = -20
|
|
has_trait = compassionate
|
|
}
|
|
## -- Craven
|
|
modifier = {
|
|
add = -20
|
|
has_trait = craven
|
|
}
|
|
## --- Forgiving
|
|
modifier = {
|
|
add = -30
|
|
has_trait = forgiving
|
|
}
|
|
## --- Humble
|
|
modifier = {
|
|
add = -30
|
|
has_trait = humble
|
|
}
|
|
## ---- Content
|
|
modifier = {
|
|
add = -50
|
|
has_trait = content
|
|
}
|
|
## We've already pre-filtered out Honest & Just.
|
|
# Dread.
|
|
## Intimidated.
|
|
modifier = {
|
|
add = -50
|
|
scope:actor = {
|
|
has_dread_level_towards = {
|
|
target = scope:recipient
|
|
level = 1
|
|
}
|
|
}
|
|
}
|
|
## Cowed.
|
|
modifier = {
|
|
add = -100
|
|
scope:actor = {
|
|
has_dread_level_towards = {
|
|
target = scope:recipient
|
|
level = 2
|
|
}
|
|
}
|
|
}
|
|
# Flag Management.
|
|
## Okay, we want to try and pick the larger of either our diplo diff or our intrigue diff.
|
|
### If our diplo diff is higher than our intrigue diff, go for diplo.
|
|
modifier = {
|
|
add = 4
|
|
scope:diplomacy_large = yes
|
|
scapegoat_counterpart_interaction_calc_diplo_diff_treshhold_value >= scapegoat_counterpart_interaction_calc_intrigue_diff_treshhold_value
|
|
}
|
|
### Else, go for intrigue.
|
|
modifier = {
|
|
add = 3
|
|
scope:intrigue_large = yes
|
|
}
|
|
### These two should never trigger, but we've got them here as fallbacks.
|
|
modifier = {
|
|
add = 2
|
|
scope:diplomacy_small = yes
|
|
}
|
|
modifier = {
|
|
add = 1
|
|
scope:intrigue_small = yes
|
|
}
|
|
### And then the AI otherwise doesn't worry about which smaller send option to pick.
|
|
# Influence status.
|
|
## Swimming in influence? Not worth it.
|
|
modifier = {
|
|
factor = 0
|
|
scope:actor.influence >= 500
|
|
}
|
|
## In debt? Weight it up.
|
|
modifier = {
|
|
factor = 2
|
|
scope:actor.influence <= -1
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##################################################
|
|
# MANAGE DIARCHY INTERACTIONS
|
|
|
|
# Diarch or liege target their opposite number and sink currency to reaffirm their influence in the realm.
|
|
swing_scales_currency_interaction = {
|
|
category = interaction_category_diarch
|
|
common_interaction = yes
|
|
highlighted_reason = HIGHLIGHTED_CAN_SWING_SCALES
|
|
icon = scroll_scales
|
|
|
|
desc = swing_scales_currency_interaction_desc
|
|
|
|
interface_priority = 20
|
|
|
|
is_shown = {
|
|
# You must be one of the partners in a diarchy.
|
|
OR = {
|
|
scope:actor = { is_diarch_of_target = scope:recipient }
|
|
scope:recipient = { is_diarch_of_target = scope:actor }
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Forbid when we're at max swing...
|
|
## ... for the regent.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_diarch_of_target = scope:recipient }
|
|
}
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.scales_max_swung
|
|
scope:recipient.diarchy_swing < 100
|
|
}
|
|
}
|
|
## ... and for the liege.
|
|
trigger_if = {
|
|
limit = {
|
|
NOT = {
|
|
scope:actor = { has_diarchy_active_parameter = liege_may_voluntarily_cede_authority }
|
|
}
|
|
scope:recipient = { is_diarch_of_target = scope:actor }
|
|
}
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.scales_max_swung
|
|
scope:actor.diarchy_swing > 0
|
|
}
|
|
}
|
|
# As long as you're able to give something even vaguely like an order to someone who might advocate on your behalf, you're gucci.
|
|
scope:actor = {
|
|
is_imprisoned = no
|
|
age >= 8
|
|
}
|
|
# Must select something.
|
|
trigger_if = {
|
|
# AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise.
|
|
limit = {
|
|
scope:actor = { is_ai = no }
|
|
}
|
|
custom_tooltip = {
|
|
text = interactions_general.tt.must_select_one_option
|
|
OR = {
|
|
scope:swing_influence = yes
|
|
scope:swing_cede_authority = yes
|
|
scope:swing_prestige = yes
|
|
scope:swing_piety = yes
|
|
scope:swing_gold = yes
|
|
scope:swing_hook = yes
|
|
scope:swing_hof = yes
|
|
}
|
|
}
|
|
}
|
|
# And in the _rare_ circumstance that a diarch is a child, they must be at least this tall.
|
|
## Note that we _don't_ do this for the liege, since we want the player to be able to manage their regency — assume that _someone_ is looking out for the child's best interests.
|
|
scope:actor = {
|
|
trigger_if = {
|
|
limit = {
|
|
is_diarch_of_target = scope:recipient
|
|
is_adult = no
|
|
}
|
|
age >= 8
|
|
}
|
|
}
|
|
# Cannot be at war with each other.
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:recipient }
|
|
}
|
|
}
|
|
|
|
cooldown = { years = 2 }
|
|
|
|
cost = {
|
|
influence = {
|
|
if = {
|
|
limit = { always = scope:swing_influence }
|
|
value = scope:actor.swing_scales_influence_cost_value
|
|
# LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS
|
|
if = {
|
|
limit = { scope:actor = { is_valid_for_legitimacy_change = yes } }
|
|
multiply = legitimacy_regent_swing_scale_multipler_value
|
|
}
|
|
}
|
|
}
|
|
prestige = {
|
|
if = {
|
|
limit = { always = scope:swing_prestige }
|
|
value = scope:actor.swing_scales_prestige_cost_value
|
|
# LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS
|
|
if = {
|
|
limit = { scope:actor = { is_valid_for_legitimacy_change = yes } }
|
|
multiply = legitimacy_regent_swing_scale_multipler_value
|
|
}
|
|
}
|
|
}
|
|
piety = {
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
always = scope:swing_piety
|
|
always = scope:swing_hof
|
|
}
|
|
}
|
|
value = scope:actor.swing_scales_piety_cost_value
|
|
# LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS
|
|
if = {
|
|
limit = { scope:actor = { is_valid_for_legitimacy_change = yes } }
|
|
multiply = legitimacy_regent_swing_scale_multipler_value
|
|
}
|
|
}
|
|
}
|
|
gold = {
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
always = scope:swing_gold
|
|
always = scope:swing_hof
|
|
}
|
|
}
|
|
value = scope:actor.swing_scales_cash_cost_value
|
|
# LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS
|
|
if = {
|
|
limit = { scope:actor = { is_valid_for_legitimacy_change = yes } }
|
|
multiply = legitimacy_regent_swing_scale_multipler_value
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Influence
|
|
send_option = {
|
|
is_shown = {
|
|
# Make sure influence would be relevant.
|
|
OR = {
|
|
AND = {
|
|
scope:recipient.liege ?= scope:actor
|
|
scope:actor = { government_allows = administrative }
|
|
}
|
|
AND = {
|
|
scope:actor.liege ?= scope:recipient
|
|
scope:recipient = { government_allows = administrative }
|
|
}
|
|
}
|
|
}
|
|
is_valid = {
|
|
scope:actor = { government_allows = administrative }
|
|
# Can't be a liege with the scales swung completely towards them.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { is_diarch_of_target = scope:actor }
|
|
}
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.scales_max_swung
|
|
scope:actor.diarchy_swing > 0
|
|
}
|
|
}
|
|
}
|
|
starts_enabled = { scope:actor.influence >= scope:actor.swing_scales_influence_cost_value }
|
|
flag = swing_influence
|
|
localization = SWING_INFLUENCE
|
|
current_description = SWING_INFLUENCE_DESC
|
|
}
|
|
# Movement Power
|
|
send_option = {
|
|
starts_enabled = {
|
|
exists = scope:actor.var:movement_power_individual
|
|
scope:actor.var:movement_power_individual >= decent_movement_power_value
|
|
}
|
|
is_shown = {
|
|
scope:actor = {
|
|
government_has_flag = government_is_celestial
|
|
is_diarch_of_target = scope:recipient
|
|
}
|
|
scope:recipient = { government_has_flag = government_is_celestial }
|
|
}
|
|
is_valid = {
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.scales_min_movement_power
|
|
scope:actor.var:movement_power_individual >= medium_movement_power_value
|
|
}
|
|
}
|
|
flag = swing_movement_power
|
|
localization = SWING_MOVEMENT_POWER
|
|
current_description = SWING_MOVEMENT_POWER_DESC
|
|
}
|
|
# Cede control voluntarily.
|
|
send_option = {
|
|
is_shown = {
|
|
scope:actor = { has_diarchy_active_parameter = liege_may_voluntarily_cede_authority }
|
|
scope:recipient = { is_diarch_of_target = scope:actor }
|
|
}
|
|
is_valid = {
|
|
# Can't be a liege with the scales swung too far in favour of their diarch.
|
|
custom_tooltip = {
|
|
text = mulct_vizier_interaction.scales_too_swung.tt
|
|
scope:actor.diarchy_swing <= 90
|
|
}
|
|
}
|
|
starts_enabled = { scope:actor.influence >= scope:actor.swing_scales_influence_cost_value }
|
|
flag = swing_cede_authority
|
|
localization = SWING_CEDE_AUTHORITY
|
|
current_description = SWING_CEDE_AUTHORITY_DESC
|
|
}
|
|
# Prestige
|
|
send_option = {
|
|
starts_enabled = { scope:actor.prestige >= scope:actor.swing_scales_prestige_cost_value }
|
|
is_valid = {
|
|
# Can't be a liege with the scales swung completely towards them.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { is_diarch_of_target = scope:actor }
|
|
}
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.scales_max_swung
|
|
scope:actor.diarchy_swing > 0
|
|
}
|
|
}
|
|
}
|
|
flag = swing_prestige
|
|
localization = SWING_PRESTIGE
|
|
current_description = SWING_PRESTIGE_DESC
|
|
}
|
|
# Piety
|
|
send_option = {
|
|
is_valid = {
|
|
# You must share a HoF to be able to petition one.
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.no_shared_hof
|
|
# We're also secretly just testing if characters are the same faith.
|
|
OR = {
|
|
scope:actor.faith = scope:recipient.faith
|
|
AND = {
|
|
exists = scope:actor.faith.religious_head
|
|
exists = scope:recipient.faith.religious_head
|
|
scope:actor.faith.religious_head = scope:recipient.faith.religious_head
|
|
}
|
|
}
|
|
}
|
|
# Can't be a liege with the scales swung completely towards them.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { is_diarch_of_target = scope:actor }
|
|
}
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.scales_max_swung
|
|
scope:actor.diarchy_swing > 0
|
|
}
|
|
}
|
|
}
|
|
starts_enabled = { scope:actor.piety >= scope:actor.swing_scales_piety_cost_value }
|
|
flag = swing_piety
|
|
localization = SWING_PIETY
|
|
current_description = SWING_PIETY_DESC
|
|
}
|
|
# Gold
|
|
send_option = {
|
|
is_shown = {
|
|
# Filter out for the liege in vizierates - they can mulct the vizier, so we don't give them the chance to spend that gold back.
|
|
interaction_actor_is_liege_with_vizierate_trigger = no
|
|
}
|
|
starts_enabled = { scope:actor.gold >= scope:actor.swing_scales_cash_cost_value }
|
|
is_valid = {
|
|
# Can't be a liege with the scales swung completely towards them.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { is_diarch_of_target = scope:actor }
|
|
}
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.scales_max_swung
|
|
scope:actor.diarchy_swing > 0
|
|
}
|
|
}
|
|
}
|
|
flag = swing_gold
|
|
localization = SWING_GOLD
|
|
current_description = SWING_GOLD_DESC
|
|
}
|
|
# Hook
|
|
send_option = {
|
|
starts_enabled = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
is_valid = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
# Can't be a liege with the scales swung completely towards them.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { is_diarch_of_target = scope:actor }
|
|
}
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.scales_max_swung
|
|
scope:actor.diarchy_swing > 0
|
|
}
|
|
}
|
|
}
|
|
flag = swing_hook
|
|
localization = SWING_HOOK
|
|
current_description = SWING_HOOK_DESC
|
|
}
|
|
# HoF
|
|
send_option = {
|
|
is_shown = {
|
|
# Filter out for the liege in vizierates - they can mulct the vizier, so we don't give them the chance to spend that gold back.
|
|
interaction_actor_is_liege_with_vizierate_trigger = no
|
|
}
|
|
is_valid = {
|
|
diarch_swing_scales_valid_shared_hof_trigger = yes
|
|
# Can't be a liege with the scales swung completely towards them.
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = { is_diarch_of_target = scope:actor }
|
|
}
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.scales_max_swung
|
|
scope:actor.diarchy_swing > 0
|
|
}
|
|
}
|
|
}
|
|
# Top of the prio order for enablement.
|
|
starts_enabled = { diarch_swing_scales_valid_shared_hof_trigger = yes }
|
|
flag = swing_hof
|
|
localization = SWING_HOF
|
|
current_description = SWING_HOF_DESC
|
|
}
|
|
|
|
on_accept = {
|
|
# Swing the scales in the direction of scope:actor.
|
|
scope:recipient = {
|
|
# Swing the scales up if we're ceding power.
|
|
if = {
|
|
limit = { scope:swing_cede_authority = yes }
|
|
send_interface_message = {
|
|
type = msg_mandate_results_neutral_effect
|
|
title = swing_scales_interaction_by_liege.t
|
|
right_icon = scope:actor
|
|
scope:actor = {
|
|
# Viziers give you more bang for your buck when swinging against 'em.
|
|
# Perk check for Voyager perk
|
|
if = {
|
|
limit = {
|
|
has_diarchy_active_parameter = lieges_swing_more_against_diarchs
|
|
has_perk = power_at_home_perk
|
|
is_travelling = yes
|
|
}
|
|
update_diarchy_swing_with_perspective_effect = {
|
|
SWING = monumental_sop_swing_diarch_gain
|
|
LIEGE = scope:actor
|
|
}
|
|
}
|
|
# Perk or Vizier
|
|
else_if = {
|
|
limit = {
|
|
OR = {
|
|
has_diarchy_active_parameter = lieges_swing_more_against_diarchs
|
|
AND = {
|
|
has_perk = power_at_home_perk
|
|
is_travelling = yes
|
|
}
|
|
}
|
|
}
|
|
update_diarchy_swing_with_perspective_effect = {
|
|
SWING = massive_sop_swing_diarch_gain
|
|
LIEGE = scope:actor
|
|
}
|
|
}
|
|
# Neither
|
|
else = {
|
|
update_diarchy_swing_with_perspective_effect = {
|
|
SWING = major_sop_swing_diarch_gain
|
|
LIEGE = scope:actor
|
|
}
|
|
}
|
|
diarch_swing_scales_guts_effect = yes
|
|
# Plus, everyone benefits.
|
|
change_influence = {
|
|
value = 200
|
|
# LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS
|
|
multiply = legitimacy_regent_swing_scale_multipler_value
|
|
round = yes
|
|
}
|
|
scope:recipient = {
|
|
change_influence = {
|
|
value = 200
|
|
# LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS
|
|
multiply = legitimacy_regent_swing_scale_multipler_value
|
|
round = yes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Swing the scales down if this is the liege.
|
|
else_if = {
|
|
limit = { is_diarch_of_target = scope:actor }
|
|
send_interface_message = {
|
|
type = msg_mandate_results_bad_effect
|
|
title = swing_scales_interaction_by_liege.t
|
|
right_icon = scope:actor
|
|
scope:actor = {
|
|
# Viziers give you more bang for your buck when swinging against 'em.
|
|
# Perk check for Voyager perk
|
|
if = {
|
|
limit = {
|
|
has_diarchy_active_parameter = lieges_swing_more_against_diarchs
|
|
has_perk = power_at_home_perk
|
|
is_travelling = yes
|
|
}
|
|
update_diarchy_swing_with_perspective_effect = {
|
|
SWING = massive_sop_swing_liege_gain
|
|
LIEGE = scope:actor
|
|
}
|
|
}
|
|
# Perk or Vizier
|
|
else_if = {
|
|
limit = {
|
|
OR = {
|
|
has_diarchy_active_parameter = lieges_swing_more_against_diarchs
|
|
AND = {
|
|
has_perk = power_at_home_perk
|
|
is_travelling = yes
|
|
}
|
|
}
|
|
}
|
|
update_diarchy_swing_with_perspective_effect = {
|
|
SWING = major_sop_swing_liege_gain
|
|
LIEGE = scope:actor
|
|
}
|
|
}
|
|
# Neither
|
|
else = {
|
|
update_diarchy_swing_with_perspective_effect = {
|
|
SWING = medium_sop_swing_liege_gain
|
|
LIEGE = scope:actor
|
|
}
|
|
}
|
|
diarch_swing_scales_guts_effect = yes
|
|
}
|
|
}
|
|
}
|
|
# And up if this is the diarch.
|
|
else = {
|
|
send_interface_message = {
|
|
type = msg_mandate_results_bad_effect
|
|
title = swing_scales_interaction_by_diarch.t
|
|
right_icon = scope:actor
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
has_perk = power_at_home_perk
|
|
is_travelling = yes
|
|
}
|
|
}
|
|
update_diarchy_swing_with_perspective_effect = {
|
|
SWING = major_sop_swing_diarch_gain
|
|
LIEGE = scope:recipient
|
|
}
|
|
}
|
|
else = {
|
|
update_diarchy_swing_with_perspective_effect = {
|
|
SWING = medium_sop_swing_diarch_gain
|
|
LIEGE = scope:recipient
|
|
}
|
|
}
|
|
scope:actor = { diarch_swing_scales_guts_effect = yes }
|
|
}
|
|
}
|
|
}
|
|
# Unless you gave power to them, scope:recipient is a bit miffed.
|
|
scope:recipient = {
|
|
# We're actually giving them swing, so gain opinion.
|
|
## We lessen the gains from this over time, as they become more and more entitled.
|
|
if = {
|
|
limit = { scope:swing_cede_authority = yes }
|
|
# Actual gains.
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
NOT = { has_variable = diarch_authority_ceded }
|
|
var:diarch_authority_ceded < diarch_authority_ceded_opinion_value
|
|
}
|
|
}
|
|
# First, check to see how much opinion we should give.
|
|
save_scope_value_as = {
|
|
name = opinion_gain
|
|
value = {
|
|
value = diarch_authority_ceded_opinion_value
|
|
if = {
|
|
limit = { has_variable = diarch_authority_ceded }
|
|
subtract = var:diarch_authority_ceded
|
|
}
|
|
}
|
|
}
|
|
# Then, adjust the opinion.
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = scope:opinion_gain
|
|
}
|
|
# And decrease our gain next time.
|
|
increment_variable_effect = {
|
|
VAR = diarch_authority_ceded
|
|
VAL = 5
|
|
}
|
|
}
|
|
# Otherwise, a paltry amount.
|
|
## We're deliberately giving you basically nothing here — the 1 is for comedic effect.
|
|
else = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = 1
|
|
}
|
|
}
|
|
}
|
|
# Co-monarchs are more annoyed.
|
|
else_if = {
|
|
limit = {
|
|
OR = {
|
|
AND = {
|
|
scope:actor = { is_diarch_of_target = scope:recipient }
|
|
scope:recipient = { has_diarchy_active_parameter = diarchy_is_co_rulership }
|
|
}
|
|
AND = {
|
|
scope:recipient = { is_diarch_of_target = scope:actor }
|
|
scope:actor = { has_diarchy_active_parameter = diarchy_is_co_rulership }
|
|
}
|
|
}
|
|
}
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = frustrated_opinion
|
|
opinion = -20
|
|
}
|
|
}
|
|
# Take away a normal amount.
|
|
else = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = frustrated_opinion
|
|
opinion = -10
|
|
}
|
|
}
|
|
}
|
|
# Some diarchs might be swinging as a prelude to a coup attempt.
|
|
ai_diarch_check_to_see_if_should_launch_coup_effect = yes
|
|
|
|
# Debug & object explorer logging.
|
|
## Diarch swung.
|
|
if = {
|
|
limit = {
|
|
exists = scope:recipient.diarch
|
|
scope:actor = scope:recipient.diarch
|
|
}
|
|
debug_log = debug_log.swing_scales.diarch_swung
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_swung_diarch }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_swung_diarch_list }
|
|
}
|
|
}
|
|
## Else liege swung.
|
|
else = {
|
|
debug_log = debug_log.swing_scales.liege_swung
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_swung_liege }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_swung_liege_list }
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = {
|
|
ai_recipients = liege
|
|
ai_recipients = diarch
|
|
}
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 48
|
|
duchy = 24
|
|
kingdom = 24
|
|
empire = 24
|
|
hegemony = 24
|
|
}
|
|
|
|
ai_potential = {
|
|
OR = {
|
|
# Either they're a liege.
|
|
AND = {
|
|
has_active_diarchy = yes
|
|
# With some kind of valid cause to worry.
|
|
OR = {
|
|
# Lieges don't care unless your regency is entrenched _and_ it's looking to stay that way...
|
|
has_diarchy_active_parameter = regency_cant_be_ended_above_this_point
|
|
# ... unless they could get out of it.
|
|
can_leave_diarchy_trigger = yes
|
|
}
|
|
}
|
|
# Or they're the diarch.
|
|
AND = {
|
|
is_diarch = yes
|
|
# Loyal diarchs don't engage in skullduggery.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_will_do = {
|
|
# We're generally ruthless here.
|
|
base = @ai_secondary_powers_base_value
|
|
|
|
# Additions.
|
|
## Flag management.
|
|
### Influence.
|
|
modifier = {
|
|
add = 7
|
|
scope:swing_influence = yes
|
|
}
|
|
modifier = {
|
|
add = 6
|
|
scope:swing_movement_power = yes
|
|
}
|
|
### Cede Authority.
|
|
#### Only do this if you're also humble.
|
|
modifier = {
|
|
add = 10
|
|
scope:swing_cede_authority = yes
|
|
has_trait = humble
|
|
}
|
|
### Prestige.
|
|
modifier = {
|
|
add = 2
|
|
scope:swing_prestige = yes
|
|
}
|
|
### Piety.
|
|
modifier = {
|
|
add = 3
|
|
scope:swing_piety = yes
|
|
}
|
|
### Gold.
|
|
modifier = {
|
|
add = 1
|
|
scope:swing_gold = yes
|
|
}
|
|
### Hook.
|
|
modifier = {
|
|
add = 5
|
|
scope:swing_hook = yes
|
|
}
|
|
### HoF - combined Gold/Piety.
|
|
modifier = {
|
|
add = 4
|
|
scope:swing_hof = yes
|
|
}
|
|
# Factors.
|
|
## x0 Don't go into prestige debt!
|
|
modifier = {
|
|
factor = 0
|
|
scope:swing_prestige = yes
|
|
prestige < 0
|
|
}
|
|
## We otherwise take care of these in the ai_potential block, because otherwise the AI interacts very, very weirdly with them.
|
|
}
|
|
}
|
|
|
|
# For titleless diarchs: anyone playable uses the regular interaction.
|
|
diarch_swing_scales_currency_interaction = {
|
|
category = interaction_category_diarch
|
|
common_interaction = yes
|
|
diarch_interaction = yes
|
|
highlighted_reason = HIGHLIGHTED_CAN_SWING_SCALES
|
|
icon = scroll_scales
|
|
|
|
desc = swing_scales_currency_interaction_desc
|
|
|
|
interface_priority = 20
|
|
|
|
is_shown = {
|
|
scope:recipient = scope:actor.liege
|
|
# This is for landless diarchs only, and we pre-filter them, so we don't really care about this block.
|
|
## But filter out players anyway for that _seamless_ debug play experience.
|
|
scope:actor = { is_ai = yes }
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Forbid when we're at max swing.
|
|
scope:recipient = {
|
|
# Plus also weed out some weird errors where we got confused and looked at ourselves.
|
|
has_active_diarchy = yes
|
|
# Now the actual check.
|
|
trigger_if = {
|
|
limit = { has_active_diarchy = yes }
|
|
diarchy_swing < 100
|
|
}
|
|
trigger_else = { always = no }
|
|
}
|
|
# As long as you're able to give something even vaguely like an order to someone who might advocate on your behalf, you're gucci.
|
|
scope:actor = { is_imprisoned = no }
|
|
# And in the _rare_ circumstance that a diarch is a child, they must be at least this tall.
|
|
## Note that we _don't_ do this for the liege, since we want the player to be able to manage their regency — assume that _someone_ is looking out for the child's best interests.
|
|
scope:actor = {
|
|
trigger_if = {
|
|
limit = {
|
|
is_diarch_of_target = scope:recipient
|
|
is_adult = no
|
|
}
|
|
age >= 8
|
|
}
|
|
}
|
|
}
|
|
|
|
cooldown = { years = 2 }
|
|
|
|
cost = {
|
|
influence = {
|
|
if = {
|
|
limit = { always = scope:swing_influence }
|
|
# Diarch version.
|
|
if = {
|
|
limit = {
|
|
scope:actor = { is_diarch_of_target = scope:recipient }
|
|
}
|
|
# Costs should always be applied on the diarch.
|
|
add = scope:actor.swing_scales_influence_cost_value
|
|
}
|
|
# Liege version.
|
|
else = {
|
|
# Costs should always be applied on the diarch.
|
|
add = scope:recipient.swing_scales_influence_cost_value
|
|
}
|
|
# Cost scaling mults.
|
|
multiply = scope:actor.swing_scales_discounts_multiplier_value
|
|
}
|
|
}
|
|
prestige = {
|
|
if = {
|
|
limit = { always = scope:swing_prestige }
|
|
# Diarch version.
|
|
if = {
|
|
limit = {
|
|
scope:actor = { is_diarch_of_target = scope:recipient }
|
|
}
|
|
# Costs should always be applied on the diarch.
|
|
add = scope:actor.swing_scales_prestige_cost_value
|
|
}
|
|
# Liege version.
|
|
else = {
|
|
# Costs should always be applied on the diarch.
|
|
add = scope:recipient.swing_scales_prestige_cost_value
|
|
}
|
|
# Cost scaling mults.
|
|
multiply = scope:actor.swing_scales_discounts_multiplier_value
|
|
}
|
|
}
|
|
piety = {
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
always = scope:swing_piety
|
|
always = scope:swing_hof
|
|
}
|
|
}
|
|
# Diarch version.
|
|
if = {
|
|
limit = {
|
|
scope:actor = { is_diarch_of_target = scope:recipient }
|
|
}
|
|
# Costs should always be applied on the diarch.
|
|
add = scope:actor.swing_scales_piety_cost_value
|
|
}
|
|
# Liege version.
|
|
else = {
|
|
# Costs should always be applied on the diarch.
|
|
add = scope:recipient.swing_scales_piety_cost_value
|
|
}
|
|
# Cost scaling mults.
|
|
multiply = scope:actor.swing_scales_discounts_multiplier_value
|
|
}
|
|
}
|
|
gold = {
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
always = scope:swing_gold
|
|
always = scope:swing_hof
|
|
}
|
|
}
|
|
# Diarch version.
|
|
if = {
|
|
limit = {
|
|
scope:actor = { is_diarch_of_target = scope:recipient }
|
|
}
|
|
# Costs should always be applied on the diarch.
|
|
add = scope:actor.swing_scales_cash_cost_value
|
|
}
|
|
# Liege version.
|
|
else = {
|
|
# Costs should always be applied on the diarch.
|
|
add = scope:recipient.swing_scales_cash_cost_value
|
|
}
|
|
# Cost scaling mults.
|
|
multiply = scope:actor.swing_scales_discounts_multiplier_value
|
|
}
|
|
}
|
|
}
|
|
|
|
# Influence
|
|
send_option = {
|
|
is_shown = {
|
|
# Make sure influence would be relevant.
|
|
OR = {
|
|
AND = {
|
|
scope:recipient.liege ?= scope:actor
|
|
scope:actor = { government_allows = administrative }
|
|
}
|
|
AND = {
|
|
scope:actor.liege ?= scope:recipient
|
|
scope:recipient = { government_allows = administrative }
|
|
}
|
|
}
|
|
}
|
|
is_valid = {
|
|
scope:actor = { government_allows = administrative }
|
|
}
|
|
starts_enabled = { scope:actor.influence >= scope:actor.swing_scales_influence_cost_value }
|
|
flag = swing_influence
|
|
localization = SWING_INFLUENCE
|
|
current_description = SWING_INFLUENCE_DESC
|
|
}
|
|
# Movement Power
|
|
send_option = {
|
|
starts_enabled = {
|
|
exists = scope:actor.var:movement_power_individual
|
|
scope:actor.var:movement_power_individual >= decent_movement_power_value
|
|
}
|
|
is_shown = {
|
|
exists = scope:actor.var:movement_power_individual
|
|
scope:actor = {
|
|
government_has_flag = government_is_celestial
|
|
is_diarch_of_target = scope:recipient
|
|
exists = var:movement_power_individual
|
|
}
|
|
scope:recipient = { government_has_flag = government_is_celestial }
|
|
}
|
|
is_valid = {
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.scales_min_movement_power
|
|
scope:actor.var:movement_power_individual >= medium_movement_power_value
|
|
}
|
|
}
|
|
flag = swing_movement_power
|
|
localization = SWING_MOVEMENT_POWER
|
|
current_description = SWING_MOVEMENT_POWER_DESC
|
|
}
|
|
# Prestige
|
|
send_option = {
|
|
starts_enabled = { scope:actor.prestige >= scope:actor.swing_scales_prestige_cost_value }
|
|
flag = swing_prestige
|
|
localization = SWING_PRESTIGE
|
|
}
|
|
# Piety
|
|
send_option = {
|
|
is_valid = {
|
|
# You must share a HoF to be able to petition one.
|
|
custom_tooltip = {
|
|
text = swing_scales_currency_interaction.tt.no_shared_hof
|
|
# We're also secretly just testing if characters are the same faith.
|
|
OR = {
|
|
scope:actor.faith = scope:recipient.faith
|
|
AND = {
|
|
exists = scope:actor.faith.religious_head
|
|
exists = scope:recipient.faith.religious_head
|
|
scope:actor.faith.religious_head = scope:recipient.faith.religious_head
|
|
}
|
|
}
|
|
}
|
|
}
|
|
starts_enabled = { scope:actor.piety >= scope:actor.swing_scales_piety_cost_value }
|
|
flag = swing_piety
|
|
localization = SWING_PIETY
|
|
}
|
|
# Gold
|
|
send_option = {
|
|
starts_enabled = { scope:actor.gold >= scope:actor.swing_scales_cash_cost_value }
|
|
flag = swing_gold
|
|
localization = SWING_GOLD
|
|
}
|
|
# Hook
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
starts_enabled = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
flag = swing_hook
|
|
localization = SWING_HOOK
|
|
}
|
|
# HoF
|
|
send_option = {
|
|
is_valid = { diarch_swing_scales_valid_shared_hof_trigger = yes }
|
|
# Top of the prio order for enablement.
|
|
starts_enabled = { diarch_swing_scales_valid_shared_hof_trigger = yes }
|
|
flag = swing_hof
|
|
localization = SWING_HOF
|
|
}
|
|
|
|
on_accept = {
|
|
# Swing the scales down, since scope:actor is always a landless diarch.
|
|
scope:recipient = {
|
|
# Slight chance delays may lead to a diarchy ending before this is received.
|
|
if = {
|
|
limit = { has_active_diarchy = yes }
|
|
send_interface_message = {
|
|
type = msg_mandate_results_bad_effect
|
|
title = swing_scales_interaction_by_diarch.t
|
|
right_icon = scope:actor
|
|
update_diarchy_swing_with_perspective_effect = {
|
|
SWING = medium_sop_swing_diarch_gain
|
|
LIEGE = scope:recipient
|
|
}
|
|
scope:actor = { diarch_swing_scales_guts_effect = yes }
|
|
}
|
|
}
|
|
# Scope:recipient is a bit miffed.
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = frustrated_opinion
|
|
opinion = -10
|
|
}
|
|
}
|
|
# Some diarchs might be swinging as a prelude to a coup attempt.
|
|
ai_diarch_check_to_see_if_should_launch_coup_effect = yes
|
|
|
|
# Debug logging.
|
|
debug_log = debug_log.swing_scales.diarch_swung
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_swung_diarch }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_swung_diarch_list }
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = liege }
|
|
# We turn the frequency up higher than the cooldown so that diarchs don't take two years to get into the loop.
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 6
|
|
duchy = 6
|
|
kingdom = 6
|
|
empire = 6
|
|
hegemony = 6
|
|
}
|
|
|
|
ai_potential = {
|
|
# Double check due to some irritating errors.
|
|
is_diarch = yes
|
|
liege = { has_active_diarchy = yes }
|
|
# Loyal diarchs don't engage in skullduggery.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
|
|
ai_will_do = {
|
|
# We're generally ruthless here.
|
|
base = @ai_core_loop_base_value
|
|
|
|
# Additions.
|
|
## Flag management.
|
|
### Influence.
|
|
modifier = {
|
|
add = 6
|
|
scope:swing_influence = yes
|
|
}
|
|
### Prestige.
|
|
modifier = {
|
|
add = 2
|
|
scope:swing_prestige = yes
|
|
}
|
|
### Piety.
|
|
modifier = {
|
|
add = 3
|
|
scope:swing_piety = yes
|
|
}
|
|
### Gold.
|
|
modifier = {
|
|
add = 1
|
|
scope:swing_gold = yes
|
|
}
|
|
### Hook.
|
|
modifier = {
|
|
add = 5
|
|
scope:swing_hook = yes
|
|
}
|
|
### HoF - combined Gold/Piety.
|
|
modifier = {
|
|
add = 4
|
|
scope:swing_hof = yes
|
|
}
|
|
# Factors.
|
|
## x0 Don't go into prestige debt!
|
|
modifier = {
|
|
factor = 0
|
|
scope:swing_prestige = yes
|
|
prestige < 0
|
|
}
|
|
}
|
|
}
|
|
|
|
# Diarch (actor) shifts from a Temporary Regency to an Entrenched Regency.
|
|
diarch_entrench_regency_interaction = {
|
|
category = interaction_category_diarch
|
|
common_interaction = yes
|
|
diarch_interaction = yes
|
|
highlighted_reason = HIGHLIGHTED_CAN_DIARCH_ENTRENCH_REGENCY
|
|
icon = icon_entrench_regency
|
|
|
|
desc = diarch_entrench_regency_interaction_desc
|
|
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
# With the extra consideration that we only want this to appear for Temporary Regencies.
|
|
liege = { has_diarchy_parameter = unlock_entrench_regency_interaction }
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Make sure scope:recipient is the liege.
|
|
custom_tooltip = {
|
|
text = custom_description.tt.must_target_liege
|
|
scope:recipient = scope:actor.liege
|
|
}
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege = { has_diarchy_active_parameter = unlock_entrench_regency_interaction }
|
|
# You must be able to act as diarch.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
}
|
|
|
|
on_accept = {
|
|
scope:recipient = {
|
|
# Tell scope:recipient what's up.
|
|
send_interface_toast = {
|
|
type = msg_start_diarchy
|
|
title = diarch_entrench_regency_interaction.tt.recipient_notification
|
|
left_icon = scope:actor
|
|
# Change the diarchy type to entrenched.
|
|
set_diarchy_type = regency
|
|
# Set our power level down a bit, but still higher than entrenched regencies that *start* that way would be.
|
|
set_diarchy_swing = 40
|
|
}
|
|
# Plus scope:recipient probably isn't super happy about this.
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = suspicion_opinion
|
|
opinion = -20
|
|
}
|
|
}
|
|
# Bit o'prestige for your hard work.
|
|
scope:actor = { add_prestige = medium_prestige_gain }
|
|
|
|
# Debug logging.
|
|
debug_log = debug_log.entrench_regency.attempt_made
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entrench }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entrench_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entrench_recipient_list }
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = liege }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 12
|
|
duchy = 6
|
|
kingdom = 6
|
|
empire = 6
|
|
hegemony = 6
|
|
}
|
|
ai_potential = {
|
|
is_diarch = yes
|
|
# Don't entrench for no reason — we want to have a bit of a delay so that the AI can go off travelling or get locked in prison once in a while.
|
|
liege = { years_in_diarchy >= 2 }
|
|
}
|
|
|
|
ai_will_do = {
|
|
# You never _don't_ want to do this.
|
|
base = 1000
|
|
}
|
|
}
|
|
|
|
# Diarch (actor) shifts from an Entrenched Regency to Co-Emperorship.
|
|
diarch_regent_appoints_self_co_emperor_interaction = {
|
|
category = interaction_category_diarch
|
|
common_interaction = yes
|
|
diarch_interaction = yes
|
|
icon = icon_entrench_regency
|
|
|
|
desc = diarch_regent_appoints_self_co_emperor_interaction_desc
|
|
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
exists = liege
|
|
is_diarch_of_target = liege
|
|
# With the extra consideration that we only want this to appear for those who can actually _have_ co-emperors.
|
|
liege = {
|
|
has_diarchy_parameter = diarch_can_appoint_self_co_emperor
|
|
may_appoint_co_emperors_trigger = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Make sure scope:recipient is the liege.
|
|
custom_tooltip = {
|
|
text = custom_description.tt.must_target_liege
|
|
scope:recipient = scope:actor.liege
|
|
}
|
|
# Diarchs must have unlocked the appropriate power.
|
|
scope:actor.liege = { has_diarchy_active_parameter = diarch_can_appoint_self_co_emperor }
|
|
# You must be able to act as diarch.
|
|
diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor }
|
|
}
|
|
|
|
cost = {
|
|
influence = {
|
|
# Rulers pay influence, non-rulers get a freebie (since they otherwise likely won't accrue the requisite influence).
|
|
if = {
|
|
limit = {
|
|
scope:actor = { is_ruler = yes }
|
|
}
|
|
value = 500
|
|
}
|
|
# If we're doing this vs. someone who could leave a regency, it's significantly costlier.
|
|
if = {
|
|
limit = {
|
|
scope:recipient = { regency_for_personal_reasons_trigger = no }
|
|
}
|
|
add = 1000
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:recipient = {
|
|
# Tell scope:recipient what's up.
|
|
send_interface_toast = {
|
|
type = msg_start_diarchy
|
|
title = diarch_regent_appoints_self_co_emperor_interaction.tt.recipient_notification
|
|
left_icon = scope:actor
|
|
# Change the diarchy type to a co-emperorship.
|
|
custom_tooltip = {
|
|
text = diarch_regent_appoints_self_co_emperor_interaction.tt.become_co_emperorship
|
|
set_diarchy_type = co_emperorship
|
|
}
|
|
# Set our power level down a bit, we've just got one helluva prize.
|
|
custom_tooltip = {
|
|
text = diarch_regent_appoints_self_co_emperor_interaction.tt.set_swing
|
|
set_diarchy_swing = diarch_regent_appoints_self_co_emperor_interaction_sop_swing_set_value
|
|
}
|
|
add_legitimacy = minor_legitimacy_loss
|
|
}
|
|
# Plus scope:recipient probably isn't super happy about this.
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = suspicion_opinion
|
|
opinion = -50
|
|
}
|
|
}
|
|
# Notify the player about the price spike.
|
|
if = {
|
|
limit = {
|
|
scope:recipient = { regency_for_personal_reasons_trigger = yes }
|
|
}
|
|
custom_tooltip = diarch_regent_appoints_self_co_emperor_interaction.tt.adults_cost_more
|
|
}
|
|
else = { custom_tooltip = diarch_regent_appoints_self_co_emperor_interaction.children_cost_less }
|
|
# Bit o'prestige for your hard work.
|
|
scope:actor = { add_prestige = medium_prestige_gain }
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = liege }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 0
|
|
kingdom = 0
|
|
empire = 12
|
|
hegemony = 12
|
|
}
|
|
ai_potential = {
|
|
is_diarch = yes
|
|
# Filter us down nice'n'tight.
|
|
liege = { may_appoint_co_emperors_trigger = yes }
|
|
# Loyal diarchs don't engage in skullduggery.
|
|
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
|
|
ai_will_do = {
|
|
# You never _don't_ want to do this.
|
|
base = 1000
|
|
}
|
|
}
|
|
|
|
# Liege (actor) ends a Temporary Regency.
|
|
liege_dismiss_temporary_regency_interaction = {
|
|
category = interaction_category_diarch
|
|
common_interaction = yes
|
|
icon = icon_dismiss_temporary_regency
|
|
|
|
desc = liege_dismiss_temporary_regency_interaction_desc
|
|
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
diarch ?= scope:recipient
|
|
# With the extra consideration that we only want this to appear for Temporary Regencies.
|
|
has_diarchy_parameter = can_be_instantly_dismissed
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Basic requirements must be fulfilled.
|
|
scope:actor = { can_leave_diarchy_trigger = yes }
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
# Tell scope:recipient what's up.
|
|
send_interface_toast = {
|
|
type = event_toast_effect_neutral
|
|
title = liege_dismiss_temporary_regency_interaction.tt.recipient_notification
|
|
left_icon = scope:actor
|
|
right_icon = scope:recipient
|
|
# End the diarchy.
|
|
end_diarchy = yes
|
|
scope:recipient = {
|
|
# Bit o'prestige for your hard work.
|
|
if = {
|
|
limit = {
|
|
exists = dynasty
|
|
NOT = {
|
|
exists = scope:actor.dynasty.dynast
|
|
dynasty.dynast = scope:actor.dynasty.dynast
|
|
}
|
|
}
|
|
custom_tooltip = liege_dismiss_temporary_regency_interaction.tt.dynasty_receives_prestige
|
|
hidden_effect = {
|
|
dynasty = { add_dynasty_prestige = liege_dismiss_temporary_regency_interaction_dynasty_prestige_value }
|
|
}
|
|
}
|
|
else = { add_prestige = medium_prestige_gain }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_dismtemp_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismtemp_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismtemp_accept_recipient_list }
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = diarch }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 48
|
|
duchy = 24
|
|
kingdom = 12
|
|
empire = 12
|
|
hegemony = 12
|
|
}
|
|
ai_potential = { has_active_diarchy = yes }
|
|
|
|
ai_will_do = {
|
|
# You never _don't_ want to do this.
|
|
base = 1000
|
|
}
|
|
}
|
|
|
|
# Liege (actor) moves to end an Entrenched Regency.
|
|
liege_dismiss_entrenched_regency_interaction = {
|
|
category = interaction_category_diarch
|
|
common_interaction = yes
|
|
notification_text = liege_dismiss_entrenched_regency_interaction_proposal
|
|
icon = icon_dismiss_entrenched_regency
|
|
|
|
desc = liege_dismiss_entrenched_regency_interaction_desc
|
|
|
|
ai_maybe = yes
|
|
can_send_despite_rejection = yes
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
|
|
interface_priority = 60
|
|
ai_min_reply_days = 4
|
|
ai_max_reply_days = 9
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
diarch ?= scope:recipient
|
|
# With the extra consideration that we only want this to appear for Entrenched Regencies.
|
|
OR = {
|
|
has_diarchy_parameter = dismissal_requires_gift
|
|
AND = {
|
|
has_diarchy_parameter = dismissal_requires_no_ministry
|
|
tgp_has_access_to_ministry_trigger = no
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
cooldown = { years = 1 }
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Basic requirements must be fulfilled.
|
|
scope:actor = { can_leave_diarchy_trigger = yes }
|
|
# And you mustn't be locked in by your regent's power.
|
|
scope:actor = {
|
|
NOT = { has_diarchy_active_parameter = regency_cant_be_ended_above_this_point }
|
|
}
|
|
# Must select something.
|
|
trigger_if = {
|
|
# AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise.
|
|
limit = {
|
|
scope:actor = { is_ai = no }
|
|
}
|
|
custom_tooltip = {
|
|
text = interactions_general.tt.must_select_one_option
|
|
OR = {
|
|
scope:diarchy_ending_gift_unnecessary = yes
|
|
scope:diarchy_ending_gift_stiffed = yes
|
|
scope:diarchy_ending_gift_hook = yes
|
|
scope:diarchy_ending_gift_dynasty_prestige = yes
|
|
scope:diarchy_ending_gift_piety = yes
|
|
scope:diarchy_ending_gift_cash = yes
|
|
scope:diarchy_ending_gift_herd = yes
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = government_is_celestial_tt
|
|
scope:actor = {
|
|
tgp_has_access_to_ministry_trigger = no
|
|
}
|
|
}
|
|
}
|
|
|
|
can_send = {
|
|
scope:actor = {
|
|
custom_description = {
|
|
text = "character_interactions_hostile_actions_disabled_delay"
|
|
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Ending gifts.
|
|
send_options_exclusive = yes
|
|
## No gift required.
|
|
send_option = {
|
|
flag = diarchy_ending_gift_unnecessary
|
|
current_description = diarchy_ending_gift_unnecessary_desc
|
|
is_shown = {
|
|
scope:actor = {
|
|
NOT = { has_diarchy_active_parameter = regency_free_end_below_this_point }
|
|
}
|
|
}
|
|
}
|
|
## Stiff scope:recipient for opinion loss.
|
|
send_option = {
|
|
flag = diarchy_ending_gift_stiffed
|
|
current_description = diarchy_ending_gift_stiffed_desc
|
|
is_shown = {
|
|
scope:actor = { has_diarchy_active_parameter = regency_free_end_below_this_point }
|
|
}
|
|
}
|
|
## A hook for scope:recipient on scope:actor.
|
|
send_option = {
|
|
flag = diarchy_ending_gift_hook
|
|
current_description = diarchy_ending_gift_hook_desc
|
|
is_shown = {
|
|
scope:recipient = {
|
|
NOT = { has_hook = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
## Transfer some of your prestige into their dynasty prestige.
|
|
send_option = {
|
|
flag = diarchy_ending_gift_dynasty_prestige
|
|
current_description = diarchy_ending_gift_dynasty_prestige_desc
|
|
is_shown = {
|
|
# Filter out characters with no dynasty.
|
|
exists = scope:recipient.dynasty
|
|
# And make sure that they don't share a dynasty.
|
|
trigger_if = {
|
|
limit = { exists = scope:actor.dynasty }
|
|
scope:actor.dynasty != scope:recipient.dynasty
|
|
}
|
|
}
|
|
}
|
|
## Pray for them to transfer piety.
|
|
### Requires same-HoF.
|
|
send_option = {
|
|
flag = diarchy_ending_gift_piety
|
|
current_description = diarchy_ending_gift_piety_desc
|
|
is_shown = {
|
|
shared_faith_or_hof_trigger = {
|
|
ACTOR = scope:actor
|
|
RECIPIENT = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
## Cash.
|
|
send_option = {
|
|
flag = diarchy_ending_gift_cash
|
|
current_description = diarchy_ending_gift_cash_desc
|
|
}
|
|
## Horse.
|
|
send_option = {
|
|
flag = diarchy_ending_gift_herd
|
|
current_description = diarchy_ending_gift_herd_desc
|
|
is_shown = {
|
|
# Can only pay herd if actor has herd to pay and recipient accepts herd as a currency
|
|
scope:actor = { government_has_flag = government_is_nomadic }
|
|
scope:recipient = { government_has_flag = government_is_nomadic }
|
|
}
|
|
}
|
|
|
|
on_send = {
|
|
scope:actor = {
|
|
add_character_flag = {
|
|
flag = flag_hostile_actions_disabled_delay
|
|
days = 10
|
|
}
|
|
# Remove the waiting flag.
|
|
add_character_flag = trying_to_dismiss_regent
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
# End the diarchy.
|
|
scope:actor = { end_diarchy = yes }
|
|
scope:recipient = {
|
|
# Transfer a gift.
|
|
## ... or don't, 'cause one isn't necessary!
|
|
if = {
|
|
limit = { scope:diarchy_ending_gift_unnecessary = yes }
|
|
custom_tooltip = liege_dismiss_entrenched_regency_interaction.tt.no_gift_necessary
|
|
}
|
|
## Give 'em *nothing*, even though they earnt it.
|
|
if = {
|
|
limit = { scope:diarchy_ending_gift_stiffed = yes }
|
|
custom_tooltip = liege_dismiss_entrenched_regency_interaction.tt.stiff_them
|
|
# Scope:recipient is unhappy about this.
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
# More so if they're arrogant, as they take such a smack in the face even more on the proverbial nose.
|
|
if = {
|
|
limit = { has_trait = arrogant }
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = insult_opinion
|
|
opinion = -50
|
|
}
|
|
}
|
|
else = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = disappointed_opinion
|
|
opinion = -30
|
|
}
|
|
}
|
|
}
|
|
}
|
|
## Give 'em a hook.
|
|
if = {
|
|
limit = { scope:diarchy_ending_gift_hook = yes }
|
|
# Transfer the hook.
|
|
add_hook = {
|
|
type = favor_hook
|
|
target = scope:actor
|
|
}
|
|
# Plus they're happy.
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
# More so if they're deceitful, since they value favours.
|
|
if = {
|
|
limit = { has_trait = deceitful }
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = 30
|
|
}
|
|
}
|
|
else = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = 15
|
|
}
|
|
}
|
|
}
|
|
}
|
|
## Give 'em some dynasty prestige.
|
|
if = {
|
|
limit = { scope:diarchy_ending_gift_dynasty_prestige = yes }
|
|
scope:actor = { add_prestige = minor_prestige_loss }
|
|
# Transfer the prestige.
|
|
custom_tooltip = liege_dismiss_entrenched_regency_interaction.tt.dynasty_receives_prestige
|
|
hidden_effect = {
|
|
dynasty = { add_dynasty_prestige = liege_dismiss_entrenched_regency_interaction_dynasty_prestige_value }
|
|
}
|
|
# Plus they're happy.
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
# More so if they're the dynasty head, as then they can make use of it.
|
|
if = {
|
|
limit = { dynasty.dynast = scope:recipient }
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = 30
|
|
}
|
|
}
|
|
else = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = 15
|
|
}
|
|
}
|
|
}
|
|
}
|
|
## Give 'em some piety.
|
|
if = {
|
|
limit = { scope:diarchy_ending_gift_piety = yes }
|
|
# Transfer the piety.
|
|
scope:actor = { add_piety = medium_piety_loss }
|
|
add_piety = major_piety_value
|
|
# Plus they're happy.
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
# More so if they're zealous, as zealots like piety.
|
|
if = {
|
|
limit = { has_trait = zealous }
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = 30
|
|
}
|
|
}
|
|
else = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = 15
|
|
}
|
|
}
|
|
}
|
|
}
|
|
## Five 'em cold, hard cash.
|
|
if = {
|
|
limit = { scope:diarchy_ending_gift_cash = yes }
|
|
# Transfer the cash.
|
|
scope:actor = {
|
|
pay_short_term_gold = {
|
|
target = scope:recipient
|
|
gold = major_gold_value
|
|
}
|
|
}
|
|
# Plus they're happy.
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
# More so if they're greedy, 'cause greedy likes money.
|
|
if = {
|
|
limit = { has_trait = greedy }
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = 30
|
|
}
|
|
}
|
|
else = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = 15
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Herd
|
|
if = {
|
|
limit = { scope:diarchy_ending_gift_herd = yes }
|
|
# Transfer the cash.
|
|
scope:actor = {
|
|
#gold = major_gold_value
|
|
pay_herd = {
|
|
target = scope:recipient
|
|
value = domicile.ten_percent_herd_value
|
|
}
|
|
}
|
|
# Plus they're happy.
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
# More so if they're greedy, 'cause greedy likes money i mean horses.
|
|
if = {
|
|
limit = { has_trait = greedy }
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = 30
|
|
}
|
|
}
|
|
else = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = pleased_opinion
|
|
opinion = 15
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Object explorer logging.
|
|
if = {
|
|
limit = { always = scope:diarchy_ending_gift_unnecessary }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_unnecessary_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_unnecessary_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_unnecessary_accept_recipient_list }
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:diarchy_ending_gift_stiffed }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_stiffed_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_accept_recipient_list }
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:diarchy_ending_gift_hook }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_hook_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_accept_recipient_list }
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:diarchy_ending_gift_dynasty_prestige }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_dynpres_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_accept_recipient_list }
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:diarchy_ending_gift_piety }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_piety_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_accept_recipient_list }
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:diarchy_ending_gift_cash }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_cash_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_accept_recipient_list }
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:diarchy_ending_gift_herd }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_herd_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_accept_recipient_list }
|
|
}
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
# Attempting to assert authority pushes scope:actor's scales in their favour.
|
|
update_diarchy_swing_with_perspective_effect = {
|
|
SWING = major_sop_swing_liege_gain
|
|
LIEGE = scope:actor
|
|
}
|
|
# Plus AI don't like being told *no*.
|
|
if = {
|
|
limit = { is_ai = no }
|
|
add_opinion = {
|
|
target = scope:recipient
|
|
modifier = trust_opinion
|
|
opinion = -30
|
|
}
|
|
}
|
|
}
|
|
# Clean-up that pesky flag.
|
|
if = {
|
|
limit = {
|
|
scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
# And add a _new_ pesky flag to stop 'em doubling up whilst also telling them to try to take this interaction again AQAP.
|
|
## This is to stop the AI from failing to tackle this efficiently.
|
|
scope:actor = {
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
add_character_flag = trying_to_dismiss_regent
|
|
trigger_event = {
|
|
id = diarchy.0111
|
|
days = 366
|
|
}
|
|
}
|
|
}
|
|
|
|
# Object explorer logging.
|
|
if = {
|
|
limit = { always = scope:diarchy_ending_gift_stiffed }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_stiffed_decline }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_decline_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_decline_recipient_list }
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:diarchy_ending_gift_hook }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_hook_decline }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_decline_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_decline_recipient_list }
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:diarchy_ending_gift_dynasty_prestige }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_dynpres_decline }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_decline_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_decline_recipient_list }
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:diarchy_ending_gift_piety }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_piety_decline }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_decline_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_decline_recipient_list }
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:diarchy_ending_gift_cash }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_cash_decline }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_decline_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_decline_recipient_list }
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:diarchy_ending_gift_herd }
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_herd_decline }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_decline_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_decline_recipient_list }
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_tooltip = {
|
|
text = liege_dismiss_entrenched_regency_interaction.tt.force_ending
|
|
scope:diarchy_ending_gift_unnecessary = yes
|
|
}
|
|
}
|
|
|
|
ai_accept = {
|
|
# Diarchs don't *want* to agree, by default...
|
|
base = 0
|
|
|
|
# ... except loyal ones, who really, really do...
|
|
modifier = {
|
|
add = 100
|
|
desc = liege_dismiss_entrenched_regency_interaction.modifier.desc.loyal_diarch
|
|
diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
# ... plus inactive ones, who can't really refuse.
|
|
modifier = {
|
|
add = 50
|
|
desc = liege_dismiss_entrenched_regency_interaction.modifier.desc.is_disabled
|
|
scope:recipient = { is_diarch_able_trigger = no }
|
|
}
|
|
# If you could just end the diarchy without any fuss, then they're much more inclined to agree.
|
|
modifier = {
|
|
add = 1000
|
|
desc = liege_dismiss_entrenched_regency_interaction.modifier.desc.could_freely_dismiss_me
|
|
scope:actor = {
|
|
NOT = { has_diarchy_active_parameter = regency_free_end_below_this_point }
|
|
}
|
|
}
|
|
# Factor for diplomacy.
|
|
## Yours.
|
|
modifier = {
|
|
add = {
|
|
value = scope:actor.diplomacy
|
|
multiply = 2
|
|
}
|
|
desc = INTERACTION_DIPLOMACY_ACTOR
|
|
}
|
|
## Theirs.
|
|
modifier = {
|
|
add = {
|
|
value = scope:recipient.diplomacy
|
|
multiply = -2
|
|
}
|
|
desc = INTERACTION_DIPLOMACY_RECIPIENT
|
|
}
|
|
# Factor for opinion.
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 0.5
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
# Factor for AI personalities.
|
|
ai_value_modifier = {
|
|
ai_honor = 1
|
|
ai_boldness = -0.5
|
|
}
|
|
# Factor for Scales of Power.
|
|
modifier = {
|
|
add = {
|
|
value = scope:actor.diarchy_swing
|
|
# Reduce by 40.
|
|
## 20 is (currently) the node at which things become free, so we want to subtract above this point and invert below it.
|
|
## The extra -20 is so that diarchs are more willing to go in exchange for a gift when their power is ebbing, rather than holding on until they can be discharged without one.
|
|
add = -40
|
|
# Invert it, since scope:actor wants low scales.
|
|
multiply = -1
|
|
}
|
|
desc = INTERACTION_SCALES_OF_POWER
|
|
}
|
|
# Intimidation.
|
|
## Intimidated.
|
|
modifier = {
|
|
add = intimidated_halved_reason_value
|
|
scope:recipient = {
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
desc = INTIMIDATED_REASON
|
|
}
|
|
## Cowed.
|
|
modifier = {
|
|
add = cowed_halved_reason_value
|
|
scope:recipient = {
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
desc = COWED_REASON
|
|
}
|
|
# Factor for low grandeur.
|
|
## 1 level below.
|
|
modifier = {
|
|
add = -20
|
|
desc = GRANDEUR_REASON
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
court_grandeur_current_level <= 1_levels_below_expected_level
|
|
court_grandeur_current_level > 3_levels_below_expected_level
|
|
}
|
|
## 3 levels below.
|
|
modifier = {
|
|
add = -40
|
|
desc = GRANDEUR_REASON
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
court_grandeur_current_level <= 3_levels_below_expected_level
|
|
court_grandeur_current_level > 5_levels_below_expected_level
|
|
}
|
|
## 5 levels below.
|
|
modifier = {
|
|
add = -60
|
|
desc = GRANDEUR_REASON
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
court_grandeur_current_level <= 5_levels_below_expected_level
|
|
court_grandeur_current_level > 7_levels_below_expected_level
|
|
}
|
|
## 7 levels below.
|
|
modifier = {
|
|
add = -80
|
|
desc = GRANDEUR_REASON
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
court_grandeur_current_level <= 7_levels_below_expected_level
|
|
court_grandeur_current_level > 9_levels_below_expected_level
|
|
}
|
|
## 9 levels below.
|
|
modifier = {
|
|
add = -100
|
|
desc = GRANDEUR_REASON
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
court_grandeur_current_level <= 9_levels_below_expected_level
|
|
}
|
|
# Negative relationships.
|
|
## Rival.
|
|
modifier = {
|
|
add = -50
|
|
desc = offer_vassalization_interaction_aibehavior_rival_tt
|
|
scope:recipient = {
|
|
has_relation_rival = scope:actor
|
|
NOT = { has_relation_nemesis = scope:actor }
|
|
}
|
|
}
|
|
## Nemesis.
|
|
modifier = {
|
|
add = -100
|
|
desc = offer_vassalization_interaction_aibehavior_nemesis_tt
|
|
scope:recipient = { has_relation_nemesis = scope:actor }
|
|
}
|
|
# Plus for whether you're offering a gift and if it's one they need or not.
|
|
## No gift offered.
|
|
### No base-vs.-trait modifier here, as we want arrogant characters to be dramatic little bastards.
|
|
modifier = {
|
|
add = -30
|
|
desc = AI_OPINION_OFFENDED
|
|
scope:diarchy_ending_gift_stiffed = yes
|
|
}
|
|
## Favour.
|
|
### Deceitful variant.
|
|
modifier = {
|
|
add = 60
|
|
desc = liege_dismiss_entrenched_regency_interaction.tt.deceitful_likes_hook
|
|
scope:diarchy_ending_gift_hook = yes
|
|
has_trait = deceitful
|
|
}
|
|
### Base variant.
|
|
modifier = {
|
|
add = 30
|
|
desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift
|
|
scope:diarchy_ending_gift_hook = yes
|
|
NOT = { has_trait = deceitful }
|
|
}
|
|
## Dynasty Prestige.
|
|
### Dynasty Head variant.
|
|
modifier = {
|
|
add = 60
|
|
desc = liege_dismiss_entrenched_regency_interaction.tt.dynasty_head_likes_dynasty_prestige
|
|
scope:diarchy_ending_gift_dynasty_prestige = yes
|
|
this = dynasty.dynast
|
|
}
|
|
### Base variant.
|
|
modifier = {
|
|
add = 30
|
|
desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift
|
|
scope:diarchy_ending_gift_dynasty_prestige = yes
|
|
this != dynasty.dynast
|
|
}
|
|
## Piety.
|
|
### Zealous variant.
|
|
modifier = {
|
|
add = 60
|
|
desc = liege_dismiss_entrenched_regency_interaction.tt.zealous_likes_piety
|
|
scope:diarchy_ending_gift_piety = yes
|
|
has_trait = zealous
|
|
}
|
|
### Base variant.
|
|
modifier = {
|
|
add = 30
|
|
desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift
|
|
scope:diarchy_ending_gift_piety = yes
|
|
NOT = { has_trait = zealous }
|
|
}
|
|
## Cash.
|
|
### Greedy variant.
|
|
modifier = {
|
|
add = 60
|
|
desc = liege_dismiss_entrenched_regency_interaction.tt.greedy_likes_cash
|
|
scope:diarchy_ending_gift_cash = yes
|
|
has_trait = greedy
|
|
}
|
|
### Base variant.
|
|
modifier = {
|
|
add = 30
|
|
desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift
|
|
scope:diarchy_ending_gift_cash = yes
|
|
NOT = { has_trait = greedy }
|
|
}
|
|
### Also debters like this.
|
|
modifier = {
|
|
add = 60
|
|
desc = PT_AI_IS_IN_DEBT
|
|
scope:diarchy_ending_gift_cash = yes
|
|
debt_level >= 1
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = diarch }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 48
|
|
duchy = 24
|
|
kingdom = 12
|
|
empire = 12
|
|
hegemony = 12
|
|
}
|
|
ai_potential = {
|
|
# Are we in a diarchy at all?
|
|
has_active_diarchy = yes
|
|
# Can we leave it?
|
|
can_leave_diarchy_trigger = yes
|
|
# Are we locked into a speed-leave cycle?
|
|
NOT = { has_character_flag = trying_to_dismiss_regent }
|
|
}
|
|
|
|
ai_will_do = {
|
|
# You never _don't_ want to do this.
|
|
base = 1000
|
|
|
|
# Flag management.
|
|
## Auto-dismiss.
|
|
modifier = {
|
|
add = 10
|
|
scope:diarchy_ending_gift_unnecessary = yes
|
|
}
|
|
## Stiff 'em.
|
|
### If we hate the diarch, try to stiff them till we can dismiss 'em.
|
|
modifier = {
|
|
scope:diarchy_ending_gift_stiffed = yes
|
|
add = 9
|
|
diarch_liege_wants_to_stiff_regent_trigger = yes
|
|
}
|
|
### Otherwise, try to down prio this. It'll just make things harder.
|
|
modifier = {
|
|
scope:diarchy_ending_gift_stiffed = yes
|
|
add = 1
|
|
diarch_liege_wants_to_stiff_regent_trigger = no
|
|
}
|
|
## Hook.
|
|
modifier = {
|
|
add = 4
|
|
scope:diarchy_ending_gift_hook = yes
|
|
}
|
|
## Dynasty Prestige.
|
|
modifier = {
|
|
add = 5
|
|
scope:diarchy_ending_gift_dynasty_prestige = yes
|
|
}
|
|
## Piety.
|
|
modifier = {
|
|
add = 2
|
|
scope:diarchy_ending_gift_piety = yes
|
|
}
|
|
## Cash.
|
|
modifier = {
|
|
add = 3
|
|
scope:diarchy_ending_gift_cash = yes
|
|
}
|
|
## Herd.
|
|
modifier = {
|
|
add = 5
|
|
scope:diarchy_ending_gift_herd = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
# Liege (actor) dismisses a Vizierate.
|
|
liege_dismiss_vizier_interaction = {
|
|
category = interaction_category_diarch
|
|
common_interaction = yes
|
|
icon = icon_dismiss_temporary_regency
|
|
|
|
desc = liege_dismiss_vizier_interaction_desc
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Diarchy checks for scope:actor.
|
|
scope:actor = {
|
|
# If you're not in a diarchy, we don't care.
|
|
diarch ?= scope:recipient
|
|
# With the extra consideration that we only want this to appear for Vizierates.
|
|
has_diarchy_parameter = primeminister_dismissal_will_upset_administration
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Basic requirements must be fulfilled.
|
|
scope:actor = { can_leave_diarchy_trigger = yes }
|
|
}
|
|
|
|
cooldown = { years = 5 }
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
# We've dismissed your vizier!
|
|
## Do we need to give a warning tooltip first?
|
|
if = {
|
|
limit = { has_diarchy_active_parameter = primeminister_dismissal_will_upset_administration }
|
|
custom_tooltip = liege_dismiss_vizier_interaction.tt.problematic_dismissal.vizier_too_entrenched
|
|
}
|
|
## Now apply the real effects.
|
|
send_interface_toast = {
|
|
type = event_toast_effect_neutral
|
|
title = liege_dismiss_vizier_interaction.toast.t
|
|
left_icon = scope:actor
|
|
# Will this have ripple effects (actual)?
|
|
if = {
|
|
limit = { has_diarchy_active_parameter = primeminister_dismissal_will_upset_administration }
|
|
# Apply the modifier, scaling to how much we dun goofed.
|
|
add_character_modifier = {
|
|
modifier = civil_service_in_chaos_modifier
|
|
years = 10
|
|
}
|
|
}
|
|
# End the diarchy.
|
|
end_diarchy = yes
|
|
}
|
|
}
|
|
# How badly do they take it?
|
|
scope:recipient = {
|
|
# Vengeful takes it badly.
|
|
if = {
|
|
limit = {
|
|
has_trait = vengeful
|
|
can_set_relation_rival_trigger = { CHARACTER = scope:actor }
|
|
}
|
|
set_relation_rival = {
|
|
target = scope:actor
|
|
reason = rival_dismissed_me_from_vizierate
|
|
}
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = insult_opinion
|
|
opinion = -50
|
|
}
|
|
}
|
|
# Even if they have something stopping them from becoming a rival (e.g., they're already your vizier).
|
|
else_if = {
|
|
limit = { has_trait = vengeful }
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = insult_opinion
|
|
opinion = -50
|
|
}
|
|
}
|
|
# Forgiving isn't mad, they're just disappointed.
|
|
else_if = {
|
|
limit = { has_trait = forgiving }
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = insult_opinion
|
|
opinion = -10
|
|
}
|
|
}
|
|
# Otherwise, a bit of pain is to be expected.
|
|
else = {
|
|
progress_towards_rival_effect = {
|
|
REASON = rival_dismissed_me_from_vizierate
|
|
CHARACTER = scope:actor
|
|
OPINION = 0
|
|
}
|
|
# Throw the opinion manually so we can keep the type unified.
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = insult_opinion
|
|
opinion = -25
|
|
}
|
|
}
|
|
# Plus some stress.
|
|
stress_impact = {
|
|
lazy = major_stress_impact_loss
|
|
humble = medium_stress_impact_loss
|
|
content = medium_stress_impact_loss
|
|
diligent = medium_stress_impact_gain
|
|
ambitious = major_stress_impact_gain
|
|
arrogant = major_stress_impact_gain
|
|
}
|
|
# Extravagance modifiers taken care of in the on_action.
|
|
}
|
|
# Plus, remember to advertise to the player that there are alternatives.
|
|
## We're deliberately doing this outside of scope:actor so we can make it a lil subtitle rather than something lumped in with the effect block.
|
|
## Just give 'em a duchy.
|
|
if = {
|
|
limit = {
|
|
scope:actor = { has_diarchy_active_parameter = primeminister_requires_duchy }
|
|
}
|
|
custom_tooltip = liege_dismiss_vizier_interaction.tt.problematic_dismissal.bribe.duchy
|
|
}
|
|
## Just give 'em a county.
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = { has_diarchy_active_parameter = primeminister_requires_county }
|
|
}
|
|
custom_tooltip = liege_dismiss_vizier_interaction.tt.problematic_dismissal.bribe.county
|
|
}
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_dismviz_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismviz_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismviz_accept_recipient_list }
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = diarch }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 120
|
|
duchy = 24
|
|
kingdom = 24
|
|
empire = 24
|
|
hegemony = 24
|
|
}
|
|
ai_potential = { has_active_diarchy = yes }
|
|
|
|
ai_will_do = {
|
|
# You should actively want to get rid of them.
|
|
base = -25
|
|
|
|
# If you appointed this vizier, don't remove them unless you get booted down to county or something.
|
|
modifier = {
|
|
add = -500
|
|
var:my_vizier ?= scope:recipient
|
|
}
|
|
|
|
# Realm.
|
|
## Weight up heavily for counts; they shouldn't generally get them, but they don't want to keep them if they do.
|
|
modifier = {
|
|
add = 1000
|
|
highest_held_title_tier = tier_county
|
|
}
|
|
## Weight up for dukes.
|
|
modifier = {
|
|
add = 25
|
|
highest_held_title_tier = tier_duchy
|
|
}
|
|
## Weight down for kings.
|
|
modifier = {
|
|
add = -25
|
|
highest_held_title_tier = tier_kingdom
|
|
}
|
|
## Weight down for emperors.
|
|
modifier = {
|
|
add = -50
|
|
highest_held_title_tier >= tier_empire
|
|
}
|
|
## Realm Size.
|
|
### Smaller you are, the more likely you are to do this.
|
|
### Tiny or less.
|
|
modifier = {
|
|
add = 50
|
|
realm_size <= tiny_realm_size
|
|
}
|
|
### Minor.
|
|
modifier = {
|
|
add = 25
|
|
realm_size > tiny_realm_size
|
|
realm_size <= minor_realm_size
|
|
}
|
|
### Major.
|
|
modifier = {
|
|
add = -25
|
|
realm_size >= major_realm_size
|
|
realm_size < massive_realm_size
|
|
}
|
|
### Massive or more.
|
|
modifier = {
|
|
add = -50
|
|
realm_size >= massive_realm_size
|
|
}
|
|
|
|
# Traits.
|
|
## +++ Ambitious.
|
|
modifier = {
|
|
add = 25
|
|
has_trait = ambitious
|
|
}
|
|
## +++ Arrogant.
|
|
modifier = {
|
|
add = 25
|
|
has_trait = arrogant
|
|
}
|
|
## ++ Diligent.
|
|
modifier = {
|
|
add = 15
|
|
has_trait = diligent
|
|
}
|
|
## ++ Patient.
|
|
modifier = {
|
|
add = 15
|
|
has_trait = patient
|
|
}
|
|
## + Gregarious.
|
|
modifier = {
|
|
add = 5
|
|
has_trait = gregarious
|
|
}
|
|
## - Shy.
|
|
modifier = {
|
|
add = -5
|
|
has_trait = shy
|
|
}
|
|
## - Content.
|
|
modifier = {
|
|
add = -5
|
|
has_trait = content
|
|
}
|
|
## -- Impatient.
|
|
modifier = {
|
|
add = -15
|
|
has_trait = impatient
|
|
}
|
|
## -- Content.
|
|
modifier = {
|
|
add = -15
|
|
has_trait = content
|
|
}
|
|
## -- Humble.
|
|
modifier = {
|
|
add = -15
|
|
has_trait = humble
|
|
}
|
|
## --- Greedy.
|
|
modifier = {
|
|
add = -25
|
|
has_trait = greedy
|
|
}
|
|
## --- Lazy.
|
|
modifier = {
|
|
add = -25
|
|
has_trait = lazy
|
|
}
|
|
}
|
|
}
|
|
|
|
# A vassal requests their liege designate them as regent, should the need arise.
|
|
declare_me_regent_interaction = {
|
|
category = interaction_category_diarch
|
|
icon = icon_declare_me_regent
|
|
filter_tags = { admin_liege }
|
|
|
|
desc = declare_me_regent_interaction_desc
|
|
notification_text = DECLARE_ME_REGENT_PROPOSAL
|
|
|
|
interface_priority = 20
|
|
ai_min_reply_days = 4
|
|
ai_max_reply_days = 9
|
|
|
|
is_shown = {
|
|
# The obvious.
|
|
scope:actor != scope:recipient
|
|
# Only useable on your liege.
|
|
scope:recipient = scope:actor.liege
|
|
# And said-liege can't be in a regency already...
|
|
scope:recipient = {
|
|
trigger_if = {
|
|
limit = {
|
|
NOT = { has_diarchy_type = grand_secretariat }
|
|
}
|
|
has_active_diarchy = no
|
|
}
|
|
trigger_else = {
|
|
scope:actor = {
|
|
OR = {
|
|
has_title = title:e_minister_grand_marshal
|
|
has_title = title:e_minister_chancellor
|
|
has_title = title:e_minister_censor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# ... or have declared you their regent already!
|
|
scope:actor = {
|
|
is_designated_diarch = no
|
|
NOR = {
|
|
is_diarch_of_target = scope:recipient
|
|
# Can't be used during the Cid story cycle
|
|
has_variable = ongoing_cid_story_cycle
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:actor = {
|
|
# Can't do if you're already expected to be regent.
|
|
is_designated_diarch = no
|
|
# Can't be too young.
|
|
is_adult = yes
|
|
# Or imprisoned.
|
|
is_imprisoned = no
|
|
# Or, for that matter, incapable.
|
|
NOT = { has_trait = incapable }
|
|
is_diarch_valid_trigger = yes
|
|
}
|
|
# Put a general cooldown on this stuff.
|
|
scope:recipient = {
|
|
trigger_if = {
|
|
limit = {
|
|
exists = designated_diarch
|
|
}
|
|
time_after_diarch_designated = { years >= 10 }
|
|
}
|
|
}
|
|
}
|
|
|
|
# No general cooldown: if your liege changes, ask away.
|
|
# Long specific cooldown, though. We don't want these going through constantly.
|
|
cooldown_against_recipient = { years = 10 }
|
|
|
|
# High cost to reduce spam.
|
|
cost = { prestige = 500 }
|
|
|
|
#Use hook
|
|
send_options_exclusive = no
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
flag = hook
|
|
localization = GENERIC_SPEND_A_HOOK
|
|
}
|
|
should_use_extra_icon = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = declare_me_regent_interaction.tt.success
|
|
left_icon = scope:recipient
|
|
# Jump the queue to become diarch.
|
|
scope:recipient = {
|
|
if = {
|
|
limit = {
|
|
has_diarchy_type = grand_secretariat
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
has_title = title:e_minister_grand_marshal
|
|
}
|
|
}
|
|
add_realm_law = grand_marshal_law
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
has_title = title:e_minister_chancellor
|
|
}
|
|
}
|
|
add_realm_law = grand_chancellor_law
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
has_title = title:e_minister_censor
|
|
}
|
|
}
|
|
add_realm_law = grand_censor_law
|
|
}
|
|
scope:actor = {
|
|
set_variable = {
|
|
name = asked_to_be_secretary_director
|
|
value = yes
|
|
}
|
|
}
|
|
}
|
|
else = {
|
|
designate_diarch = scope:actor
|
|
}
|
|
}
|
|
# This prompts some strife.
|
|
change_strife_opinion = major_strife_gain
|
|
}
|
|
# If you used a hook, calc some extra stuff.
|
|
## We move this outside of the toast because we've not got enough room for all this info in there.
|
|
if = {
|
|
limit = {
|
|
scope:hook = yes
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
# Use the hook up.
|
|
use_hook = scope:recipient
|
|
# Plus scope:recipient is _very_ upset.
|
|
reverse_add_opinion = {
|
|
target = scope:recipient
|
|
modifier = suspicion_opinion
|
|
opinion = -20
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
# Some folks may not be happy.
|
|
custom_tooltip = declare_me_regent_interaction.tt.warning.opinions.succession
|
|
custom_tooltip = declare_me_regent_interaction.tt.warning.opinions.courtlies
|
|
}
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_desigme_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_accept_recipient_list }
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_bad
|
|
title = declare_me_regent_interaction.tt.failure
|
|
left_icon = scope:recipient
|
|
# AI lose opinion of their opposite number.
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
add_opinion = {
|
|
target = scope:recipient
|
|
modifier = insult_opinion
|
|
opinion = -40
|
|
}
|
|
}
|
|
# Even trying produces some strife.
|
|
change_strife_opinion = medium_strife_gain
|
|
}
|
|
}
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_desigme_decline }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_decline_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_decline_recipient_list }
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
scope:recipient = {
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:hook = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_accept = {
|
|
# Try to make it 0 for most interactions
|
|
base = -40
|
|
|
|
# Weight for dislike of current regent.
|
|
# Designated regent.
|
|
modifier = {
|
|
add = {
|
|
# Designated diarchs.
|
|
if = {
|
|
limit = {
|
|
designated_diarch ?= {
|
|
save_temporary_scope_as = diarch_successor_temp
|
|
save_temporary_opinion_value_as = {
|
|
name = recipient_opinion_temp
|
|
target = scope:diarch_successor_temp
|
|
}
|
|
}
|
|
}
|
|
add = scope:recipient_opinion_temp
|
|
# Invert to get the true total.
|
|
multiply = -1
|
|
}
|
|
# Expected diarchs.
|
|
else_if = {
|
|
limit = {
|
|
diarchy_successor ?= {
|
|
save_temporary_scope_as = diarch_successor_temp
|
|
scope:actor = {
|
|
save_temporary_opinion_value_as = {
|
|
name = recipient_opinion_temp
|
|
target = scope:diarch_successor_temp
|
|
}
|
|
}
|
|
}
|
|
}
|
|
add = scope:recipient_opinion_temp
|
|
# Invert to get the true total.
|
|
multiply = -1
|
|
}
|
|
}
|
|
desc = declare_me_regent_interaction.tt.opinion_of_current_regent
|
|
}
|
|
# Opinion of scope:actor.
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 0.5
|
|
}
|
|
# Personality.
|
|
ai_value_modifier = {
|
|
# Meek characters are more likely to accept this.
|
|
ai_boldness = -0.5
|
|
# Characters with low energy just want to avoid all this planning.
|
|
ai_energy = -0.25
|
|
}
|
|
# Familial closeness.
|
|
## Close family get a decent boost.
|
|
modifier = {
|
|
add = 30
|
|
desc = declare_me_regent_interaction.tt.actor_is.close_family
|
|
is_close_family_of = scope:actor
|
|
# Make sure this isn't cancelled out by the incumbent sharing the relation.
|
|
diarchy_successor = {
|
|
NOT = {
|
|
is_close_family_of = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
## Extended family get a minor boost.
|
|
modifier = {
|
|
add = 20
|
|
desc = declare_me_regent_interaction.tt.actor_is.extended_family
|
|
is_extended_family_of = scope:actor
|
|
# Make sure this isn't cancelled out by the incumbent sharing the relation.
|
|
diarchy_successor = {
|
|
NOT = {
|
|
is_extended_family_of = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
## House members get a slight boost.
|
|
modifier = {
|
|
add = 10
|
|
desc = declare_me_regent_interaction.tt.actor_is.house_member
|
|
house = scope:actor.house
|
|
NOT = {
|
|
is_close_or_extended_family_of = scope:actor
|
|
}
|
|
# Make sure this isn't cancelled out by the incumbent sharing the relation.
|
|
diarchy_successor = {
|
|
house != scope:recipient.house
|
|
}
|
|
}
|
|
# Relationships.
|
|
## Positive.
|
|
modifier = {
|
|
add = 25
|
|
desc = declare_me_regent_interaction.tt.actor_is.positive_relationship
|
|
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:actor }
|
|
# We don't factor for this in the designated/expected diarch 'cause the matrix of overlap'd be hellish.
|
|
}
|
|
## Negative.
|
|
modifier = {
|
|
add = -25
|
|
desc = declare_me_regent_interaction.tt.actor_is.negative_relationship
|
|
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:actor }
|
|
# We don't factor for this in the designated/expected diarch 'cause the matrix of overlap'd be hellish.
|
|
}
|
|
# Succession score is a direct factor.
|
|
modifier = {
|
|
add = scope:actor.diarchy_regent_succession_score_value
|
|
desc = declare_me_regent_interaction.tt.actor_is.succession_score
|
|
scope:recipient = {
|
|
NOT = { has_diarchy_type = grand_secretariat }
|
|
}
|
|
}
|
|
|
|
# Grand Secretariat
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_diarchy_type = grand_secretariat
|
|
}
|
|
scope:actor.top_participant_group:dynastic_cycle ?= {
|
|
exists = var:movement_favored
|
|
}
|
|
desc = diarch_candidate_score.grand_secretariat.favored_value
|
|
add = 20
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_diarchy_type = grand_secretariat
|
|
}
|
|
scope:actor = {
|
|
is_any_movement_leader = yes
|
|
}
|
|
desc = you_are_a_movement_leader_desc_value
|
|
add = 20
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_diarchy_type = grand_secretariat
|
|
}
|
|
scope:actor = {
|
|
is_in_pro_hegemon_or_hegemon_movement = yes
|
|
}
|
|
desc = diarch_candidate_score.grand_secretariat.pro_hegemon_value
|
|
add = 20
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_diarchy_type = grand_secretariat
|
|
}
|
|
scope:actor = {
|
|
has_court_position = favored_minister_court_position
|
|
}
|
|
desc = grand_secretariat_aptitude.favored_minister_value
|
|
add = 20
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_diarchy_type = grand_secretariat
|
|
}
|
|
desc = actors_merit_level_desc
|
|
add = {
|
|
if = {
|
|
limit = {
|
|
scope:actor.merit_level >= scope:actor.top_liege.diarch.merit_level
|
|
scope:actor.merit >= scope:actor.top_liege.merit
|
|
}
|
|
add = 10
|
|
}
|
|
else = {
|
|
add = -10
|
|
}
|
|
}
|
|
}
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_diarchy_type = grand_secretariat
|
|
}
|
|
desc = ACTOR_HIGH_MOVEMENT_POWER
|
|
add = {
|
|
if = {
|
|
limit = {
|
|
exists = scope:actor.top_liege.diarch.var:movement_power
|
|
exists = scope:actor.var:movement_power
|
|
scope:actor.var:movement_power >= scope:actor.top_liege.diarch.var:movement_power
|
|
}
|
|
add = 10
|
|
}
|
|
else = {
|
|
add = -40
|
|
}
|
|
}
|
|
}
|
|
# Events
|
|
modifier = {
|
|
add = 25
|
|
desc = tgp_power_undermined_modifier_tt
|
|
has_character_modifier = tgp_power_undermined_modifier
|
|
# We don't factor for this in the designated/expected diarch 'cause the matrix of overlap'd be hellish.
|
|
}
|
|
}
|
|
|
|
# AI
|
|
#ai_targets = { ai_recipients = liege }
|
|
#ai_frequency = 0
|
|
#
|
|
#ai_potential = {
|
|
# # Turning off for the AI for the moment due to not being able to display who you'll offend if you do it.
|
|
# ## Should otherwise work and can be turned back on again if wished.
|
|
# always = no
|
|
# # Some traits lock the AI out.
|
|
# ## Calc these first 'cause they're cheaper.
|
|
# NOR = {
|
|
# has_trait = lazy
|
|
# has_trait = humble
|
|
# has_trait = content
|
|
# }
|
|
# OR = {
|
|
# # Driven by traits or personality.
|
|
# has_trait = arrogant
|
|
# has_trait = ambitious
|
|
# # Family think themselves worthy.
|
|
# any_close_or_extended_family_member = { this = liege }
|
|
# }
|
|
#}
|
|
|
|
ai_will_do = {
|
|
# Most AI think this is audacious.
|
|
base = 0
|
|
|
|
# Weight for personality.
|
|
## Both modifier.
|
|
ai_value_modifier = {
|
|
# Bold, energetic characters fancy the gig.
|
|
ai_boldness = 0.5
|
|
ai_energy = 0.5
|
|
}
|
|
## And traits!
|
|
### These are balanced differently to the other interactions, so it's deliberate that they're not using the @values here.
|
|
### +++ Ambitious.
|
|
modifier = {
|
|
add = 15
|
|
has_trait = ambitious
|
|
}
|
|
### ++ Arrogant.
|
|
modifier = {
|
|
add = 10
|
|
has_trait = arrogant
|
|
}
|
|
### + Diligent.
|
|
modifier = {
|
|
add = 5
|
|
has_trait = diligent
|
|
}
|
|
### + Loyal.
|
|
modifier = {
|
|
add = 5
|
|
has_trait = loyal
|
|
}
|
|
### - Humble.
|
|
modifier = {
|
|
add = -5
|
|
has_trait = humble
|
|
}
|
|
### --- Content.
|
|
modifier = {
|
|
add = -15
|
|
has_trait = content
|
|
}
|
|
### --- Lazy.
|
|
modifier = {
|
|
add = -15
|
|
has_trait = lazy
|
|
}
|
|
# Weight by proximity to the ruler: close family, spouses, etc.
|
|
modifier = {
|
|
add = 25
|
|
OR = {
|
|
any_close_or_extended_family_member = { this = scope:recipient }
|
|
any_spouse = { this = scope:recipient }
|
|
}
|
|
}
|
|
# Councillors have ambitions.
|
|
modifier = {
|
|
add = 25
|
|
is_councillor = yes
|
|
}
|
|
# Weight for opinion of current regent.
|
|
modifier = {
|
|
add = {
|
|
scope:recipient = {
|
|
# Designated diarchs.
|
|
if = {
|
|
limit = {
|
|
designated_diarch ?= {
|
|
save_temporary_scope_as = diarch_successor_temp
|
|
scope:actor = {
|
|
save_temporary_opinion_value_as = {
|
|
name = actor_opinion_temp
|
|
target = scope:diarch_successor_temp
|
|
}
|
|
}
|
|
}
|
|
}
|
|
add = scope:actor_opinion_temp
|
|
# Invert to get the true total.
|
|
multiply = -1
|
|
}
|
|
# Expected diarchs.
|
|
else_if = {
|
|
limit = {
|
|
diarchy_successor ?= {
|
|
save_temporary_scope_as = diarch_successor_temp
|
|
scope:actor = {
|
|
save_temporary_opinion_value_as = {
|
|
name = actor_opinion_temp
|
|
target = scope:diarch_successor_temp
|
|
}
|
|
}
|
|
}
|
|
}
|
|
add = scope:actor_opinion_temp
|
|
# Invert to get the true total.
|
|
multiply = -1
|
|
}
|
|
}
|
|
}
|
|
always = yes
|
|
}
|
|
# The AI will only use a Hook if they couldn't otherwise do this
|
|
modifier = {
|
|
scope:hook = yes
|
|
add = -1
|
|
}
|
|
# Grand Secretariat
|
|
modifier = {
|
|
scope:recipient = {
|
|
has_diarchy_type = grand_secretariat
|
|
}
|
|
add = {
|
|
if = {
|
|
limit = {
|
|
scope:actor.top_participant_group:dynastic_cycle ?= {
|
|
exists = var:movement_favored
|
|
}
|
|
}
|
|
add = 10
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
has_court_position = favored_minister_court_position
|
|
}
|
|
}
|
|
add = 20
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.merit_level >= scope:actor.top_liege.diarch.merit_level
|
|
scope:actor.merit >= scope:actor.top_liege.merit
|
|
}
|
|
add = 10
|
|
}
|
|
if = {
|
|
limit = {
|
|
exists = scope:actor.top_liege.diarch.var:movement_power
|
|
exists = scope:actor.var:movement_power
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor.var:movement_power >= scope:actor.top_liege.diarch.var:movement_power
|
|
}
|
|
add = 10
|
|
}
|
|
else = {
|
|
add = -100
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Liege (actor) selects a vizier to help them run the realm.
|
|
appoint_vizier_interaction = {
|
|
category = interaction_category_diarch
|
|
icon = icon_declare_me_regent
|
|
|
|
desc = appoint_vizier_interaction_desc
|
|
interface_priority = 20
|
|
|
|
is_shown = {
|
|
scope:actor = {
|
|
# Must be able to retain a vizier.
|
|
government_has_flag = may_appoint_viziers
|
|
# Plus obscure the interaction if we've already got one, else it's annoyingly redundant.
|
|
NOT = { has_diarchy_active_parameter = diarchy_is_vizierate }
|
|
}
|
|
# We perform this upon ourselves or our (probable) candidates.
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
scope:secondary_recipient = {
|
|
is_valid_basic_candidate_for_vizier_trigger = yes
|
|
OR = {
|
|
is_courtier_of = scope:actor
|
|
AND = {
|
|
highest_held_title_tier = tier_barony
|
|
liege = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
trigger_else = {
|
|
scope:recipient = {
|
|
this = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# You can't already be in a diarchy of any kind.
|
|
scope:actor = {
|
|
has_active_diarchy = no
|
|
}
|
|
# Must be of a decent tier.
|
|
custom_tooltip = {
|
|
text = appoint_vizier_interaction.tt.duchy_or_more
|
|
scope:actor.highest_held_title_tier >= tier_duchy
|
|
}
|
|
# Plus the usuals.
|
|
scope:actor = { is_available_at_peace = yes }
|
|
# And can't have put the realm into turmoil over this recently.
|
|
scope:actor = {
|
|
NOT = { has_character_modifier = civil_service_in_chaos_modifier }
|
|
}
|
|
}
|
|
|
|
cooldown = { years = 5 }
|
|
|
|
populate_recipient_list = { sort_vizier_candidates_to_list_effect = yes }
|
|
|
|
redirect = {
|
|
if = {
|
|
limit = { scope:recipient != scope:actor }
|
|
scope:recipient = { save_scope_as = secondary_recipient }
|
|
scope:actor = { save_scope_as = recipient }
|
|
}
|
|
}
|
|
|
|
cost = {
|
|
prestige = major_prestige_value
|
|
renown = {
|
|
if = {
|
|
limit = {
|
|
exists = scope:secondary_recipient
|
|
exists = scope:actor.house
|
|
scope:secondary_recipient.house ?= scope:actor.house
|
|
}
|
|
add = scope:actor.dynasty.massive_dynasty_prestige_value
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
pre_auto_accept = {
|
|
# If we're an AI, set the secondary_recipient up for us.
|
|
scope:actor = {
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
# First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it.
|
|
sort_vizier_candidates_to_list_effect = yes
|
|
# Now, parse through the list to find the best character.
|
|
ordered_in_list = {
|
|
list = characters
|
|
order_by = diarchy_vizier_succession_score_value
|
|
save_scope_as = ai_recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
# We enter into a vizierate with scope:secondary_recipient.
|
|
custom_tooltip = {
|
|
text = appoint_vizier_interaction.tt.enter_vizierate_with_secondary_recipient
|
|
try_start_diarchy = vizierate
|
|
# The player uses scope:secondary_recipient.
|
|
if = {
|
|
limit = {
|
|
# We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice.
|
|
NOT = { exists = scope:ai_recipient }
|
|
}
|
|
set_diarch = scope:secondary_recipient
|
|
}
|
|
# Whereas the AI grabs their pre-selected candidate.
|
|
else = {
|
|
set_diarch = scope:ai_recipient
|
|
}
|
|
}
|
|
# Apply opinion.
|
|
## AI.
|
|
if = {
|
|
limit = { exists = scope:ai_recipient }
|
|
scope:ai_recipient = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = compliment_opinion
|
|
opinion = 30
|
|
}
|
|
stress_impact = {
|
|
ambitious = minor_stress_impact_loss
|
|
arrogant = minor_stress_impact_loss
|
|
lazy = major_stress_impact_gain
|
|
}
|
|
}
|
|
}
|
|
## Player.
|
|
else = {
|
|
scope:secondary_recipient = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = compliment_opinion
|
|
opinion = 30
|
|
}
|
|
stress_impact = {
|
|
ambitious = minor_stress_impact_loss
|
|
arrogant = minor_stress_impact_loss
|
|
lazy = major_stress_impact_gain
|
|
}
|
|
}
|
|
}
|
|
# And get X tax jurisdictions.
|
|
custom_tooltip = appoint_vizier_interaction.tt.secondary_recipient_grants_tax_jurisdictions
|
|
# If scope:secondary_recipient isn't the most qualified candidate, we'll take a scaling negative stewardship modifier.
|
|
## The AI will always pick the highest scoring character, so we only do this for players - lock it off so we're not doing lots of unnecessary calculating.
|
|
if = {
|
|
limit = { is_ai = no }
|
|
# First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it.
|
|
sort_vizier_candidates_to_list_effect = yes
|
|
# Now, parse through the list to find the best character.
|
|
ordered_in_list = {
|
|
list = characters
|
|
order_by = diarchy_vizier_succession_score_value
|
|
save_scope_as = best_candidate
|
|
}
|
|
# Is our chap _the_ chap?
|
|
if = {
|
|
limit = {
|
|
scope:secondary_recipient != scope:best_candidate
|
|
}
|
|
# Ok, now display some warnings.
|
|
custom_tooltip = appoint_vizier_interaction.tt.secondary_recipient_is_not_best_candidate
|
|
add_character_modifier = {
|
|
modifier = civil_service_upset_modifier
|
|
years = 10
|
|
}
|
|
}
|
|
}
|
|
# Are they of our house?
|
|
if = {
|
|
limit = {
|
|
exists = scope:secondary_recipient.house
|
|
house ?= scope:secondary_recipient.house
|
|
}
|
|
custom_tooltip = appoint_vizier_interaction.tt.same_house_penalty
|
|
}
|
|
# If we have a designated diarch (and it's not this guy), then they're annoyed.
|
|
designated_diarch ?= {
|
|
if = {
|
|
limit = {
|
|
this != scope:secondary_recipient
|
|
}
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = appointed_vizier_over_designated_regent_opinion
|
|
opinion = -40
|
|
}
|
|
}
|
|
}
|
|
# Set a reminder that we appointed this vizier — the AI'll use this to help with determining whether they should remove them or not.
|
|
set_variable = {
|
|
name = my_vizier
|
|
value = scope:recipient
|
|
}
|
|
# Finally, let's do some stress.
|
|
stress_impact = {
|
|
trusting = massive_stress_impact_loss
|
|
lazy = major_stress_impact_loss
|
|
paranoid = minor_stress_impact_gain
|
|
diligent = minor_stress_impact_gain
|
|
}
|
|
}
|
|
# Notify about council problemos.
|
|
scope:secondary_recipient = {
|
|
if = {
|
|
limit = { is_councillor = yes }
|
|
custom_tooltip = appoint_vizier_interaction.tt.warning.vizier_replace_councillor
|
|
}
|
|
}
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appviz_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appviz_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appviz_accept_recipient_list }
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = self }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 240
|
|
kingdom = 120
|
|
empire = 120
|
|
hegemony = 120
|
|
}
|
|
|
|
ai_potential = {
|
|
government_has_flag = may_appoint_viziers
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 0
|
|
|
|
# Realm.
|
|
## Weight up for kings.
|
|
modifier = {
|
|
add = 50
|
|
highest_held_title_tier = tier_kingdom
|
|
}
|
|
## Weight up for emperors.
|
|
modifier = {
|
|
add = 75
|
|
highest_held_title_tier >= tier_empire
|
|
}
|
|
## Add realm size directly.
|
|
modifier = {
|
|
add = sub_realm_size
|
|
is_landed = yes
|
|
}
|
|
|
|
# Traits.
|
|
## +++ Lazy.
|
|
modifier = {
|
|
add = 25
|
|
has_trait = lazy
|
|
}
|
|
## +++ Greedy.
|
|
modifier = {
|
|
add = 25
|
|
has_trait = greedy
|
|
}
|
|
## ++ Humble.
|
|
modifier = {
|
|
add = 15
|
|
has_trait = humble
|
|
}
|
|
## ++ Content.
|
|
modifier = {
|
|
add = 15
|
|
has_trait = content
|
|
}
|
|
## ++ Impatient.
|
|
modifier = {
|
|
add = 15
|
|
has_trait = impatient
|
|
}
|
|
## + Content.
|
|
modifier = {
|
|
add = 5
|
|
has_trait = content
|
|
}
|
|
## + Shy.
|
|
modifier = {
|
|
add = 5
|
|
has_trait = shy
|
|
}
|
|
## - Gregarious.
|
|
modifier = {
|
|
add = -5
|
|
has_trait = gregarious
|
|
}
|
|
## -- Patient.
|
|
modifier = {
|
|
add = -15
|
|
has_trait = patient
|
|
}
|
|
## -- Diligent.
|
|
modifier = {
|
|
add = -15
|
|
has_trait = diligent
|
|
}
|
|
## --- Arrogant.
|
|
modifier = {
|
|
add = -25
|
|
has_trait = arrogant
|
|
}
|
|
## --- Ambitious.
|
|
modifier = {
|
|
add = -25
|
|
has_trait = ambitious
|
|
}
|
|
}
|
|
}
|
|
|
|
# Liege (actor) selects a junior emperor to be their heir.
|
|
appoint_junior_emperor_interaction = {
|
|
category = interaction_category_diarch
|
|
icon = icon_declare_me_regent
|
|
redirect = {
|
|
scope:recipient = { save_scope_as = secondary_recipient }
|
|
if = {
|
|
limit = { scope:secondary_recipient = scope:actor }
|
|
clear_saved_scope = secondary_recipient
|
|
}
|
|
if = {
|
|
limit = {
|
|
NOT = {
|
|
scope:secondary_recipient ?= { valid_junior_emperor_candidate_trigger = { LIEGE = scope:actor } }
|
|
}
|
|
}
|
|
clear_saved_scope = secondary_recipient
|
|
}
|
|
}
|
|
|
|
desc = appoint_junior_emperor_interaction_desc
|
|
interface_priority = 20
|
|
|
|
is_shown = {
|
|
# Must be able to retain a co-emperor.
|
|
scope:actor = { may_appoint_co_emperors_trigger = yes }
|
|
# We perform this upon ourselves or our (probable) candidates.
|
|
OR = {
|
|
scope:recipient ?= scope:actor
|
|
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 = {
|
|
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 = { LIEGE = scope:actor } }
|
|
}
|
|
# Plus the usuals.
|
|
scope:actor = { is_available_at_peace = yes }
|
|
}
|
|
|
|
populate_recipient_list = { sort_junior_emperor_candidates_to_list_effect = yes }
|
|
|
|
cost = {
|
|
prestige = designate_heir_admin_prestige_cost
|
|
influence = designate_heir_admin_influence_cost
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
pre_auto_accept = {
|
|
# If we're an AI, set the secondary_recipient up for us.
|
|
scope:actor = {
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
# First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it.
|
|
sort_junior_emperor_candidates_to_list_effect = yes
|
|
# Now, parse through the list to find the best character.
|
|
## And by that I mean play literal favourites.
|
|
ordered_in_list = {
|
|
list = characters
|
|
order_by = "reverse_opinion(scope:actor)"
|
|
save_scope_as = ai_recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
# We enter into a junior emperorship with scope:secondary_recipient.
|
|
## The player uses scope:secondary_recipient.
|
|
if = {
|
|
limit = {
|
|
# We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice.
|
|
NOT = { exists = scope:ai_recipient }
|
|
}
|
|
custom_tooltip = {
|
|
text = appoint_junior_emperor_interaction.tt.enter_junior_emperorship_with_secondary_recipient
|
|
try_start_diarchy = junior_emperorship
|
|
set_diarch = scope:secondary_recipient
|
|
}
|
|
# We set them to be our designated heir.
|
|
## & if we already have an heir, warn that this overwrites it.
|
|
designated_heir ?= {
|
|
if = {
|
|
limit = { this != scope:secondary_recipient }
|
|
custom_tooltip = appoint_junior_emperor_interaction.tt.overwrite_designated_heir
|
|
# Nab them for use further on.
|
|
save_scope_as = old_heir
|
|
}
|
|
}
|
|
## Designate and inform.
|
|
set_designated_heir = scope:secondary_recipient
|
|
}
|
|
## Whereas the AI grabs their pre-selected candidate.
|
|
else = {
|
|
try_start_diarchy = junior_emperorship
|
|
set_diarch = scope:ai_recipient
|
|
# We set them to be our designated heir.
|
|
## First grabbing the old one for opinions.
|
|
designated_heir ?= {
|
|
if = {
|
|
limit = { this != scope:ai_recipient }
|
|
# Nab them for use further on.
|
|
save_scope_as = old_heir
|
|
}
|
|
}
|
|
## Then overwriting.
|
|
set_designated_heir = scope:ai_recipient
|
|
}
|
|
}
|
|
# And remember who appointed them on scope:recipient.
|
|
grateful_for_appointment_as_co_emperor_effect = yes
|
|
# Your designated heir is _very_ pissed.
|
|
diarch_overwrites_old_designated_heir_apply_opinions_effect = {
|
|
LIEGE = scope:actor
|
|
CO_RULER = scope:secondary_recipient
|
|
}
|
|
# Your designated regent is also unhappy (probably).
|
|
designated_diarch_overwridden_by_co_ruler_effect = {
|
|
LIEGE = scope:actor
|
|
CO_RULER = scope:secondary_recipient
|
|
}
|
|
# Make sure we have our co-ruler directly with us.
|
|
## Courtiers are given to us immediately.
|
|
if = {
|
|
limit = {
|
|
scope:secondary_recipient = { is_ruler = no }
|
|
scope:secondary_recipient = { NOT = { is_in_the_same_court_as = scope:actor } }
|
|
}
|
|
scope:actor = { add_courtier = scope:secondary_recipient }
|
|
}
|
|
## Vassals are retracted.
|
|
if = {
|
|
limit = { scope:secondary_recipient.liege != scope:actor }
|
|
scope:secondary_recipient.liege = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = retracted_vassal
|
|
}
|
|
}
|
|
scope:secondary_recipient.liege = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = retracted_vassal
|
|
}
|
|
}
|
|
create_title_and_vassal_change = {
|
|
type = revoked
|
|
save_scope_as = change
|
|
}
|
|
scope:secondary_recipient = {
|
|
change_liege = {
|
|
liege = scope:actor
|
|
change = scope:change
|
|
}
|
|
}
|
|
resolve_title_and_vassal_change = scope:change
|
|
}
|
|
|
|
|
|
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appjunemp_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appjunemp_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appjunemp_accept_recipient_list }
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = children }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 0
|
|
kingdom = 0
|
|
empire = 60
|
|
hegemony = 60
|
|
}
|
|
|
|
ai_potential = {
|
|
# Filter us down nice'n'tight.
|
|
may_appoint_co_emperors_trigger = yes
|
|
# Plus rule out any diarchies already on the go.
|
|
has_active_diarchy = no
|
|
# Aaaand finally, the AI won't do this unless they're considering their age and they've got no adult kids.
|
|
age >= 50
|
|
any_child = {
|
|
count = all
|
|
is_adult = no
|
|
}
|
|
}
|
|
|
|
ai_will_do = {
|
|
# The AI doesn't like doing this without good reason.
|
|
base = -100
|
|
|
|
ai_wants_junior_or_co_emperor_modifier = yes
|
|
}
|
|
}
|
|
|
|
# Liege (actor) selects a co-emperor to be their heir/influence farming stooge.
|
|
appoint_co_emperor_interaction = {
|
|
category = interaction_category_diarch
|
|
icon = icon_declare_me_regent
|
|
redirect = {
|
|
scope:recipient = { save_scope_as = secondary_recipient }
|
|
if = {
|
|
limit = { scope:secondary_recipient ?= scope:actor }
|
|
clear_saved_scope = secondary_recipient
|
|
}
|
|
if = {
|
|
limit = {
|
|
NOT = {
|
|
scope:secondary_recipient ?= {
|
|
valid_co_emperor_candidate_trigger = { LIEGE = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
clear_saved_scope = secondary_recipient
|
|
}
|
|
}
|
|
|
|
desc = appoint_co_emperor_interaction_desc
|
|
interface_priority = 280
|
|
|
|
is_shown = {
|
|
# Must be able to retain a co-emperor.
|
|
scope:actor = { may_appoint_co_emperors_trigger = yes }
|
|
# We perform this upon ourselves or our (probable) candidates.
|
|
OR = {
|
|
scope:recipient ?= scope:actor
|
|
scope:secondary_recipient ?= {
|
|
valid_co_emperor_candidate_trigger = { LIEGE = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# You can't already be in a diarchy of any kind.
|
|
scope:actor = {
|
|
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_emperor_candidate_trigger = { LIEGE = scope:actor }
|
|
}
|
|
}
|
|
# Plus the usuals.
|
|
scope:actor = { is_available_at_peace = yes }
|
|
}
|
|
|
|
populate_recipient_list = { sort_co_emperor_candidates_to_list_effect = yes }
|
|
|
|
cost = {
|
|
prestige = designate_heir_admin_prestige_cost
|
|
influence = designate_heir_admin_influence_cost
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
pre_auto_accept = {
|
|
# If we're an AI, set the secondary_recipient up for us.
|
|
scope:actor = {
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
# First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it.
|
|
sort_co_emperor_candidates_to_list_effect = yes
|
|
# Now, parse through the list to find the best character.
|
|
## And by that I mean play literal favourites.
|
|
ordered_in_list = {
|
|
list = characters
|
|
order_by = {
|
|
value = "reverse_opinion(scope:actor)"
|
|
# Boost up anyone we're related to by blood or marriage.
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
is_close_or_extended_family_of = scope:actor
|
|
house ?= scope:actor.house
|
|
any_spouse = { is_close_or_extended_family_of = scope:actor }
|
|
}
|
|
}
|
|
# This means we should _generally_ prefer people who are in with the imperial family, but if we hate them then we boot them down the list even further.
|
|
multiply = 10
|
|
}
|
|
}
|
|
save_scope_as = ai_recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
# We enter into a co-emperorship with scope:secondary_recipient.
|
|
## The player uses scope:secondary_recipient.
|
|
if = {
|
|
limit = {
|
|
# We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice.
|
|
NOT = { exists = scope:ai_recipient }
|
|
}
|
|
custom_tooltip = {
|
|
text = appoint_co_emperor_interaction.tt.enter_co_emperorship_with_secondary_recipient
|
|
try_start_diarchy = co_emperorship
|
|
set_diarch = scope:secondary_recipient
|
|
}
|
|
# If appropriate, we set them to be our designated heir.
|
|
if = {
|
|
limit = {
|
|
scope:secondary_recipient = {
|
|
is_close_or_extended_family_of = scope:actor
|
|
house ?= scope:actor.house
|
|
}
|
|
}
|
|
# & if we already have an heir, warn that this overwrites it.
|
|
designated_heir ?= {
|
|
if = {
|
|
limit = { this != scope:secondary_recipient }
|
|
custom_tooltip = appoint_co_emperor_interaction.tt.overwrite_designated_heir
|
|
# Nab them for use further on.
|
|
save_scope_as = old_heir
|
|
}
|
|
}
|
|
# Designate and inform.
|
|
set_designated_heir = scope:secondary_recipient
|
|
}
|
|
}
|
|
## Whereas the AI grabs their pre-selected candidate.
|
|
else = {
|
|
try_start_diarchy = co_emperorship
|
|
set_diarch = scope:ai_recipient
|
|
# If appropriate, we set them to be our designated heir.
|
|
if = {
|
|
limit = {
|
|
scope:secondary_recipient = {
|
|
is_close_or_extended_family_of = scope:actor
|
|
house ?= scope:actor.house
|
|
}
|
|
}
|
|
# First grabbing the old one for opinions.
|
|
designated_heir ?= {
|
|
if = {
|
|
limit = { this != scope:secondary_recipient }
|
|
# Nab them for use further on.
|
|
save_scope_as = old_heir
|
|
}
|
|
}
|
|
# Then overwriting.
|
|
set_designated_heir = scope:ai_recipient
|
|
}
|
|
}
|
|
}
|
|
# And remember who appointed them on scope:recipient.
|
|
grateful_for_appointment_as_co_emperor_effect = yes
|
|
# Your designated heir is _very_ pissed.
|
|
diarch_overwrites_old_designated_heir_apply_opinions_effect = {
|
|
LIEGE = scope:actor
|
|
CO_RULER = scope:secondary_recipient
|
|
}
|
|
# Your designated regent is also unhappy (probably).
|
|
designated_diarch_overwridden_by_co_ruler_effect = {
|
|
LIEGE = scope:actor
|
|
CO_RULER = scope:secondary_recipient
|
|
}
|
|
# Make sure we have our co-ruler directly with us.
|
|
## Courtiers are given to us immediately.
|
|
if = {
|
|
limit = {
|
|
scope:secondary_recipient = { is_ruler = no }
|
|
}
|
|
scope:actor = { add_courtier = scope:secondary_recipient }
|
|
}
|
|
## Vassals are retracted.
|
|
if = {
|
|
limit = {
|
|
scope:secondary_recipient.liege != scope:actor
|
|
scope:secondary_recipient = { NOT = { is_in_the_same_court_as = scope:actor } }
|
|
}
|
|
scope:secondary_recipient.liege = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = retracted_vassal
|
|
}
|
|
}
|
|
create_title_and_vassal_change = {
|
|
type = revoked
|
|
save_scope_as = change
|
|
}
|
|
scope:secondary_recipient = {
|
|
change_liege = {
|
|
liege = scope:actor
|
|
change = scope:change
|
|
}
|
|
}
|
|
resolve_title_and_vassal_change = scope:change
|
|
}
|
|
|
|
|
|
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appcoemp_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcoemp_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcoemp_accept_recipient_list }
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = children }
|
|
ai_targets = { ai_recipients = vassals }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 0
|
|
kingdom = 0
|
|
empire = 60
|
|
hegemony = 60
|
|
}
|
|
|
|
ai_potential = {
|
|
# Filter us down nice'n'tight.
|
|
may_appoint_co_emperors_trigger = yes
|
|
# Plus rule out any diarchies already on the go.
|
|
has_active_diarchy = no
|
|
# Aaaand finally, the AI won't do this unless they're considering their age and they've got adult kids.
|
|
age >= 50
|
|
any_child = { is_adult = yes }
|
|
}
|
|
|
|
ai_will_do = {
|
|
# The AI doesn't like doing this without good reason.
|
|
base = -100
|
|
|
|
ai_wants_junior_or_co_emperor_modifier = yes
|
|
}
|
|
}
|
|
|
|
# Liege (actor) selects one of their children to be their heir & diarch.
|
|
appoint_co_monarch_interaction = {
|
|
category = interaction_category_diarch
|
|
icon = icon_declare_me_regent
|
|
redirect = {
|
|
scope:recipient = { save_scope_as = secondary_recipient }
|
|
if = {
|
|
limit = { scope:secondary_recipient ?= scope:actor }
|
|
clear_saved_scope = secondary_recipient
|
|
}
|
|
if = {
|
|
limit = {
|
|
NOT = {
|
|
scope:secondary_recipient ?= { is_child_of = scope:actor }
|
|
}
|
|
}
|
|
clear_saved_scope = secondary_recipient
|
|
}
|
|
}
|
|
|
|
desc = appoint_co_monarch_interaction_desc
|
|
interface_priority = 20
|
|
|
|
is_shown = {
|
|
# Must be able to retain a co-emperor.
|
|
scope:actor = { may_appoint_co_monarchs_trigger = yes }
|
|
# We perform this upon ourselves or our (probable) candidates.
|
|
OR = {
|
|
scope:recipient ?= scope:actor
|
|
scope:secondary_recipient ?= { is_child_of = scope:actor }
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# You can't already be in a diarchy of any kind.
|
|
scope:actor = {
|
|
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 = { LIEGE = scope:actor } }
|
|
}
|
|
# Plus the usuals.
|
|
scope:actor = { is_available_at_peace = yes }
|
|
}
|
|
|
|
populate_recipient_list = { sort_co_monarch_candidates_to_list_effect = yes }
|
|
|
|
cost = {
|
|
prestige = {
|
|
value = designate_heir_cost
|
|
# Discount it because this _is_ worse than the standard path.
|
|
multiply = 0.5
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
pre_auto_accept = {
|
|
# If we're an AI, set the secondary_recipient up for us.
|
|
scope:actor = {
|
|
if = {
|
|
limit = { is_ai = yes }
|
|
# First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it.
|
|
sort_co_monarch_candidates_to_list_effect = yes
|
|
# Now, parse through the list to find the best character.
|
|
## And by that I mean play literal favourites.
|
|
ordered_in_list = {
|
|
list = characters
|
|
limit = { valid_co_monarch_candidate_trigger = { LIEGE = scope:actor } }
|
|
order_by = "reverse_opinion(scope:actor)"
|
|
save_scope_as = ai_recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
# We enter into a co-emperorship with scope:secondary_recipient.
|
|
## The player uses scope:secondary_recipient.
|
|
if = {
|
|
limit = {
|
|
# We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice.
|
|
NOT = { exists = scope:ai_recipient }
|
|
}
|
|
custom_tooltip = {
|
|
text = appoint_co_monarch_interaction.tt.enter_co_monarchy_with_secondary_recipient
|
|
try_start_diarchy = co_monarchy
|
|
set_diarch = scope:secondary_recipient
|
|
}
|
|
# We set them to be our designated heir.
|
|
## & if we already have an heir, warn that this overwrites it.
|
|
designated_heir ?= {
|
|
if = {
|
|
limit = { this != scope:secondary_recipient }
|
|
custom_tooltip = appoint_co_monarch_interaction.tt.overwrite_designated_heir
|
|
# Nab them for use further on.
|
|
save_scope_as = old_heir
|
|
}
|
|
}
|
|
## Designate and inform.
|
|
set_designated_heir = scope:secondary_recipient
|
|
}
|
|
## Whereas the AI grabs their pre-selected candidate.
|
|
else = {
|
|
try_start_diarchy = co_emperorship
|
|
set_diarch = scope:ai_recipient
|
|
# We set them to be our designated heir.
|
|
## First grabbing the old one for opinions.
|
|
designated_heir ?= {
|
|
if = {
|
|
limit = { this != scope:secondary_recipient }
|
|
# Nab them for use further on.
|
|
save_scope_as = old_heir
|
|
}
|
|
}
|
|
## Then overwriting.
|
|
set_designated_heir = scope:ai_recipient
|
|
}
|
|
}
|
|
# And remember who appointed them on scope:recipient.
|
|
grateful_for_appointment_as_co_emperor_effect = yes
|
|
# Your designated heir is _very_ pissed.
|
|
diarch_overwrites_old_designated_heir_apply_opinions_effect = {
|
|
LIEGE = scope:actor
|
|
CO_RULER = scope:secondary_recipient
|
|
}
|
|
# Your designated regent is also unhappy (probably).
|
|
designated_diarch_overwridden_by_co_ruler_effect = {
|
|
LIEGE = scope:actor
|
|
CO_RULER = scope:secondary_recipient
|
|
}
|
|
# Make sure we have our co-ruler directly with us.
|
|
## Courtiers are given to us immediately.
|
|
if = {
|
|
limit = {
|
|
scope:secondary_recipient = { is_ruler = no }
|
|
scope:secondary_recipient = { NOT = { is_in_the_same_court_as = scope:actor } }
|
|
}
|
|
scope:actor = { add_courtier = scope:secondary_recipient }
|
|
}
|
|
## Vassals are retracted.
|
|
if = {
|
|
limit = { scope:secondary_recipient.liege != scope:actor }
|
|
scope:secondary_recipient.liege = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = retracted_vassal
|
|
}
|
|
}
|
|
create_title_and_vassal_change = {
|
|
type = revoked
|
|
save_scope_as = change
|
|
}
|
|
scope:secondary_recipient = {
|
|
change_liege = {
|
|
liege = scope:actor
|
|
change = scope:change
|
|
}
|
|
}
|
|
resolve_title_and_vassal_change = scope:change
|
|
}
|
|
|
|
|
|
|
|
|
|
# Object explorer logging.
|
|
scope:actor = {
|
|
diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appcomon_accept }
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcomon_accept_actor_list }
|
|
}
|
|
scope:recipient = {
|
|
diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcomon_accept_recipient_list }
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = { ai_recipients = children }
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 0
|
|
duchy = 0
|
|
kingdom = 120
|
|
empire = 120
|
|
hegemony = 120
|
|
}
|
|
|
|
ai_potential = {
|
|
# Filter us down nice'n'tight.
|
|
may_appoint_co_monarchs_trigger = yes
|
|
# Plus rule out any diarchies already on the go.
|
|
has_active_diarchy = no
|
|
# Aaaand finally, the AI won't do this unless they're considering their age and they've got adult kids.
|
|
age >= 50
|
|
any_child = { is_adult = yes }
|
|
}
|
|
|
|
ai_will_do = {
|
|
# The AI doesn't like doing this without good reason.
|
|
base = -100
|
|
|
|
ai_wants_junior_or_co_emperor_modifier = yes
|
|
}
|
|
}
|
|
|
|
# Start a scheme to replace an incumbent regent.
|
|
overthrow_regent_scheme_interaction = {
|
|
category = interaction_category_diarch
|
|
icon = icon_declare_me_regent
|
|
ignores_pending_interaction_block = yes
|
|
|
|
scheme = overthrow_regent
|
|
desc = overthrow_regent_scheme_interaction_desc
|
|
|
|
interface_priority = 20
|
|
|
|
is_shown = {
|
|
# Standard setup.
|
|
scope:actor.liege ?= {
|
|
has_active_diarchy = yes
|
|
# You can't overthrow non-regencies. At least not this way.
|
|
has_diarchy_parameter = diarchy_is_regency
|
|
}
|
|
scope:recipient = {
|
|
this != scope:actor
|
|
liege ?= {
|
|
this = scope:actor.liege
|
|
diarch ?= scope:recipient
|
|
this != scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Make sure you wouldn't just cop out immediately.
|
|
## Disabling is fine, FWIW. You'll de-disable with time.
|
|
scope:actor = { is_diarch_valid_trigger = yes }
|
|
# Have we been vetoed from succession due to politicking?
|
|
custom_tooltip = {
|
|
text = overthrow_regent_scheme_interaction.tt.filtered_due_to_incumbent_politicking
|
|
NOT = { scope:actor.var:diarch_succession_filtered_due_to_incumbents_politicking ?= scope:recipient }
|
|
}
|
|
}
|
|
|
|
# Long specific cooldown. If you give up, you should give it a rest 'less things change.
|
|
cooldown_against_recipient = { years = 10 }
|
|
|
|
# Scheme Starter Packages
|
|
options_heading = schemes.t.agent_packages
|
|
send_options_exclusive = yes
|
|
## Balanced agents.
|
|
send_option = {
|
|
flag = agent_focus_balance
|
|
current_description = overthrow_regent_scheme_interaction.tt.agent_focus_balance
|
|
}
|
|
## Focused on Success Chance.
|
|
send_option = {
|
|
flag = agent_focus_success
|
|
current_description = overthrow_regent_scheme_interaction.tt.agent_focus_success
|
|
}
|
|
## Focused on Speed.
|
|
send_option = {
|
|
flag = agent_focus_speed
|
|
current_description = overthrow_regent_scheme_interaction.tt.agent_focus_speed
|
|
}
|
|
## Focused on Secrecy.
|
|
send_option = {
|
|
flag = agent_focus_secrecy
|
|
current_description = overthrow_regent_scheme_interaction.tt.agent_focus_secrecy
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
# Sort some stress stuff.
|
|
overthrow_regent_scheme_interaction_actor_stress_effect = yes
|
|
# And some feedback for starting.
|
|
send_interface_toast = {
|
|
type = event_toast_effect_neutral
|
|
title = overthrow_regent_scheme_interaction.tt.started_scheme
|
|
left_icon = scope:actor
|
|
right_icon = scope:recipient
|
|
# Success.
|
|
if = {
|
|
limit = { scope:agent_focus_success ?= yes }
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = overthrow_regent
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Success.
|
|
AGENT_1 = agent_thug
|
|
AGENT_2 = agent_ambusher
|
|
AGENT_3 = agent_muscle
|
|
# Speed.
|
|
AGENT_4 = agent_footpad
|
|
# Secrecy.
|
|
AGENT_5 = agent_lookout
|
|
}
|
|
}
|
|
# Speed.
|
|
else_if = {
|
|
limit = { scope:agent_focus_speed ?= yes }
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = overthrow_regent
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Speed.
|
|
AGENT_1 = agent_footpad
|
|
AGENT_2 = agent_tracker
|
|
AGENT_3 = agent_planner
|
|
# Success.
|
|
AGENT_4 = agent_thug
|
|
# Secrecy.
|
|
AGENT_5 = agent_lookout
|
|
}
|
|
}
|
|
# Secrecy.
|
|
else_if = {
|
|
limit = { scope:agent_focus_secrecy ?= yes }
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = overthrow_regent
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Secrecy.
|
|
AGENT_1 = agent_lookout
|
|
AGENT_2 = agent_lookout
|
|
AGENT_3 = agent_decoy
|
|
# Success.
|
|
AGENT_4 = agent_thug
|
|
# Speed.
|
|
AGENT_5 = agent_footpad
|
|
}
|
|
}
|
|
# Balanced.
|
|
else = {
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = overthrow_regent
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Success.
|
|
AGENT_1 = agent_thug
|
|
AGENT_2 = agent_ambusher
|
|
# Speed.
|
|
AGENT_3 = agent_footpad
|
|
AGENT_4 = agent_planner
|
|
# Secrecy.
|
|
AGENT_5 = agent_lookout
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = {
|
|
ai_recipients = peer_vassals
|
|
ai_recipients = scripted_relations
|
|
}
|
|
ai_frequency_by_tier = {
|
|
barony = 0
|
|
county = 120
|
|
duchy = 60
|
|
kingdom = 60
|
|
empire = 60
|
|
hegemony = 60
|
|
}
|
|
|
|
ai_potential = {
|
|
# Some traits lock the AI out.
|
|
## Calc these first 'cause they're cheaper.
|
|
NOR = {
|
|
has_trait = lazy
|
|
has_trait = humble
|
|
has_trait = content
|
|
}
|
|
OR = {
|
|
# Driven by traits or personality.
|
|
has_trait = arrogant
|
|
has_trait = ambitious
|
|
# Family think themselves worthy.
|
|
any_close_or_extended_family_member = { this = liege }
|
|
# If you're rivals with the current regent, that's a good cause.
|
|
any_relation = {
|
|
type = rival
|
|
is_diarch_of_target = root.liege
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_will_do = {
|
|
# Most AI think this is audacious.
|
|
base = -50
|
|
|
|
# Opinion Factor
|
|
opinion_modifier = {
|
|
opinion_target = scope:recipient
|
|
multiplier = -1
|
|
}
|
|
# Weight for personality.
|
|
## Both modifier.
|
|
ai_value_modifier = {
|
|
# Bold, energetic characters fancy the gig.
|
|
ai_boldness = 0.5
|
|
ai_energy = 0.5
|
|
}
|
|
## And traits!
|
|
### These are balanced differently to the other interactions, so it's deliberate that they're not using the @values here.
|
|
### +++ Loyal (if current regent is disloyal).
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = loyal
|
|
exists = liege
|
|
scope:recipient = { diarch_loyalty <= diarch_loyalty_visibly_disloyal_threshold }
|
|
diarch_loyalty_score_type_regency_value >= diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
### +++ Disloyal (if current regent is loyal).
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_3_value
|
|
has_trait = disloyal
|
|
exists = liege
|
|
scope:recipient = { diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold }
|
|
diarch_loyalty_score_type_regency_value >= diarch_loyalty_visibly_disloyal_threshold
|
|
}
|
|
### ++ Ambitious.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_2_value
|
|
has_trait = ambitious
|
|
}
|
|
### ++ Arrogant.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_2_value
|
|
has_trait = arrogant
|
|
}
|
|
### ++ Deceitful.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_2_value
|
|
has_trait = deceitful
|
|
}
|
|
### + Diligent.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_1_value
|
|
has_trait = diligent
|
|
}
|
|
### - Lazy.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_1_value
|
|
has_trait = lazy
|
|
}
|
|
### -- Honest.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_2_value
|
|
has_trait = honest
|
|
}
|
|
### -- Humble.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_2_value
|
|
has_trait = humble
|
|
}
|
|
### -- Content.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_2_value
|
|
has_trait = content
|
|
}
|
|
### --- Disloyal (if current regent is disloyal).
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_3_value
|
|
has_trait = disloyal
|
|
exists = liege
|
|
scope:recipient = { diarch_loyalty <= diarch_loyalty_visibly_disloyal_threshold }
|
|
diarch_loyalty_score_type_regency_value <= diarch_loyalty_visibly_disloyal_threshold
|
|
}
|
|
### --- Loyal (if current regent is loyal).
|
|
#### Also some loyal-adjacent traits that would otherwise cause stress.
|
|
modifier = {
|
|
add = diarch_ai_desire_minus_3_value
|
|
OR = {
|
|
has_trait = loyal
|
|
has_trait = honest
|
|
has_trait = compassionate
|
|
has_trait = just
|
|
}
|
|
exists = liege
|
|
scope:recipient = { diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold }
|
|
diarch_loyalty_score_type_regency_value >= diarch_loyalty_visibly_loyal_threshold
|
|
}
|
|
# Weight by proximity to the ruler: close family, spouses, etc.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_2_value
|
|
exists = scope:recipient.liege
|
|
OR = {
|
|
any_close_or_extended_family_member = { this = scope:recipient.liege }
|
|
any_spouse = { this = scope:recipient.liege }
|
|
}
|
|
}
|
|
# Councillors have ambitions.
|
|
modifier = {
|
|
add = diarch_ai_desire_plus_2_value
|
|
is_councillor = yes
|
|
}
|
|
# Factors.
|
|
## If relations are near-perfect, we don't want to go plotting, as it'll look weird.
|
|
modifier = {
|
|
factor = 0
|
|
OR = {
|
|
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:recipient }
|
|
opinion = {
|
|
target = scope:recipient
|
|
value >= very_high_positive_opinion
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|