Interaction · Diarch
… Retract Vassal
Take a Vassal from the recipient, despite not being … Liege This will incur Strife with your fellow Vassals!
What you need
You
To send it
None of these
- You: Is at war with the target
- The character you target: Does not have a Strong Hook on you
- They … too preoccupied to act as … right now
- Your Liege is not in an Entrenched Regency
If
- You:
is_diarch = yes
Then
- Your liege:
has_diarchy_active_parameter = unlock_diarch_retract_vassal_interaction
- You:
None of these
- You:
is_at_war_with = scope:actor.liege
- You:
To see it in the menu
- If played by the AI:
has_realm_law_flag = title_revocation_allowedis_diarch = yes- Loyalty less than 75
primary_title.tier > tier_county
One of these
- Is landed
or
All of these
- you has administrative government mechanic
- Is not landed
If
a check the game hides
Then
- Your house: Has the house check as house head
- You have a domicile
or
All of these
- Your liege:
All of these
- Holds China
- Government is Celestial
- Their government has the government uses ministry budget flag
- Your liege:
or
All of these
- Is a ruler
- Your Government is a Theocratic-type Government
- Your liege:
has_diarchy_parameter = unlock_diarch_retract_vassal_interaction
One of these
is_designated_diarch = yesor
All of these
is_diarch_of_target = liegeexists = liege
The character you target
liege ?= scope:actor.liegeOne of these
- Is landed
or
All of these
- they has administrative government mechanic
- Is not landed
If
a check the game hides
Then
- Their house: Has the house check as house head
- Has a domicile
or
All of these
- Their liege:
All of these
- Holds China
- Government is Celestial
- Their government has the government uses ministry budget flag
- Their liege:
or
All of these
- Is a ruler
- Government is a Theocratic-type Government
scope:recipient.highest_held_title_tier >= tier_duchy
… Retract Vassal is a diarch character interaction in Crusader Kings III. You need: They … too preoccupied to act as … right now and Your Liege is not in an Entrenched Regency. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include Weak Hook used (+40), Refusal is Treason (+25), Vassal holds your Realm Capital (or De Jure Duchy) (+50) and 2 more. Patch 1.20.1.2, from game/common/character_interactions/00_diarch_interactions.txt.
Quick answers (2)
- What are the requirements for … Retract Vassal in CK3?
- You: They … too preoccupied to act as … right now and Your Liege is not in an Entrenched Regency. (patch 1.20.1.2)
- How do I get the AI to accept … Retract Vassal?
- Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: Weak Hook used +40, … Opinion of …, Refusal is Treason +25, Vassal holds your Realm Capital (or De Jure Duchy) +50, The other character is not a De Jure Vassal +25, Vassal rightfully belongs under you +15, Intimidated by you, Terrified of you, Difference in your Military Strength (max +20) and Infidel splitting the faithful.
Will they accept?
Accepted automatically when:
One of these
- The character you target: Is imprisoned by you
or
They use their Hook on …
Otherwise the AI adds these up and accepts above zero; near zero the answer is partly random (ai_maybe). Reasons in italics are the script's, with no label in the game.
| Reason | Amount |
|---|---|
| Base | 0 |
Weak Hook usedwhen
| +40 |
| … Opinion of … | varies |
Refusal is Treasonwhen
| +25 |
| Their personality (AI values: greed (scripted), honor (scripted)) | varies |
Vassal holds your Realm Capital (or De Jure Duchy)when
| +50 |
The other character is not a De Jure Vassalwhen
| +25 |
Vassal rightfully belongs under youwhen
| +15 |
Intimidated by youwhen
| intimidated_halved_reason_value |
Terrified of youwhen
| cowed_halved_reason_value |
| Difference in your Military Strength (max +20) | varies |
Infidel splitting the faithfulwhen
| varies |
Acceptance (ai_accept) (153 lines of game script)
base = 0
modifier = {
add = 40
desc = SCHEME_WEAK_HOOK_USED
scope:hook = yes
}
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 = {
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 = {
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 = {
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 = {
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 = {
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
scope:actor = {
NOR = {
faith = scope:recipient.faith
rite = {
rite_has_doctrine = doctrine_pluralism_pluralistic
}
}
}
}As written in game/common/character_interactions/00_diarch_interactions.txt.
What happens
If they accept
- You:
If
a check the game hides
Then
If
has_revoke_title_reason = scope:recipient
Then
consume_revoke_title_reason = scope:recipient
Otherwise
change_strife_opinion = major_strife_gain
Else if
None of these
exists = scope:administrative_revocationAll of these
- they has administrative government mechanic
- The character you target: they has administrative government mechanic
has_revoke_title_reason = scope:recipientOne of these
or
Then
- If has Legitimacy: Loses 50 Legitimacy
add_tyranny = { … }
Else if
has_revoke_title_reason = scope:recipient
Then
Else if
- Their rite:
- Their faith:
faith_hostility_level = { target = scope:recipient.faith value >= faith_hostile_level }
Then
If
Then
- Every ⟨faith⟩ vassal:
- Where: Their faith is the same as that of recipient
- Opinion: Angry (-5)
If
None of these
exists = scope:administrative_revocationAll of these
- they has administrative government mechanic
- The character you target: they has administrative government mechanic
has_revoke_title_reason = scope:recipientOne of these
or
Then
- Stress and fulfillment impact: by trait: Generous +40, Just +40
Otherwise
- Stress and fulfillment impact: by trait: Generous +40, Forgiving +20
consume_revoke_title_reason = scope:recipient
- The other character:
change_liege = { liege = scope:puppet_or_actor change = scope:change }
- The character you target: Opinion: Retracted My Vassal
- Event char_interaction.0272
When it is accepted automatically
- The character you target: Event char_interaction.0271
If they refuse
- Event char_interaction.0273
- 1 of 2 things will happen:
- 50% – If … … down › You:
- If played by a person: Crime — You are allowed to rightfully imprison …, if the opportunity presents itself
- Otherwise: Opinion: Refused Borrowed Power Demand
- Their liege:
- If played by a person: Crime — You are allowed to rightfully imprison …
- Otherwise: Opinion: Refused Borrowed Power Demand
- 50% – If … … the claim:
start_war = { casus_belli = diarch_vassalisation_cb target = scope:recipient target_title = scope:secondary_recipient.primary_title }
- 50% – If … … down › You:
- The character you target: Opinion: Retracted My Vassal
Options when sending
- Use a Hook
Events it fires: char_interaction.0272, char_interaction.0273, char_interaction.0271
• the game's own tooltip text · ◦ our reading of the script line · code the script where neither exists
Who can use it and sees it (is_available, is_shown) (27 lines of game script)
is_available = trigger_if = {
limit = {
is_ai = yes
}
has_realm_law_flag = title_revocation_allowed
is_diarch = yes
diarch_loyalty < diarch_loyalty_visibly_loyal_threshold
primary_title.tier > tier_county
}
is_landed_or_landless_administrative_or_theocratic = yes
liege ?= {
has_diarchy_parameter = unlock_diarch_retract_vassal_interaction
}
OR = {
is_designated_diarch = yes
AND = {
is_diarch_of_target = liege
exists = liege
}
}
is_shown = scope:actor != scope:recipient
scope:recipient = {
liege ?= scope:actor.liege
this != scope:actor.liege
is_landed_or_landless_administrative_or_theocratic = yes
scope:recipient.highest_held_title_tier >= tier_duchy
}As written in game/common/character_interactions/00_diarch_interactions.txt.
Can be sent when (is_valid…) (69 lines of game script)
vassal_retraction_standard_valid_showing_failures_only_trigger = yes
diarch_cannot_be_disabled_trigger = {
DIARCH = scope:actor
}
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
}
}
}
}
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
}
}
}
custom_tooltip = {
text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access
scope:actor = {
is_diarch = yes
}
}
trigger_if = {
limit = {
scope:actor = {
is_diarch = yes
}
}
scope:actor.liege = {
has_diarchy_active_parameter = unlock_diarch_retract_vassal_interaction
}
}
NOT = {
scope:actor = {
is_at_war_with = scope:actor.liege
}
}
scope:actor != scope:intermediary
scope:actor = {
custom_description = {
text = character_interactions_hostile_actions_disabled_delay
NOT = {
has_character_flag = flag_hostile_actions_disabled_delay
}
}
}As written in game/common/character_interactions/00_diarch_interactions.txt.
Effects (on_send, on_accept, on_decline) (80 lines of game script)
on_send = scope:actor = {
add_character_flag = {
flag = flag_hostile_actions_disabled_delay
days = 10
}
}
on_accept = save_scope_value_as = {
name = use_strife_not_tyranny
value = yes
}
retract_vassal_interaction_effect = yes
scope:actor = {
trigger_event = char_interaction.0272
clear_hostile_actions_lock_flag_effect = yes
}
debug_log = debug_log.diarch_retract_vassal.accepted
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_decline = scope:actor = {
trigger_event = char_interaction.0273
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
}
}
}
clear_hostile_actions_lock_flag_effect = yes
}
scope:recipient = {
add_opinion = {
target = scope:actor
modifier = retracted_vassal
}
}
debug_log = debug_log.diarch_retract_vassal.rejected
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
}
}
on_auto_accept = scope:recipient = {
trigger_event = char_interaction.0271
}As written in game/common/character_interactions/00_diarch_interactions.txt.
- Category
- Diarch
- Cooldown
- 1 year
- Again on the same character
- after 3 years
- In the menu
- under More…
- ID
diarch_retract_vassal_interaction
Source: game/common/character_interactions/00_diarch_interactions.txt and the English localisation, Crusader Kings III 1.20.1.2. “You” is the character who sends it (scope:actor, or a puppet acting for you); “the character you target” is the recipient. “…” marks words the game fills in at play time (a name, a title).