Interaction · Vassal actions
Revoke Title
Take a Title from the recipient
What you need
You
- You:
- Is not at war with the target
NOT = { has_truce = scope:recipient }
- The character you target: Does not have a Strong Hook on you
If
- The character you target:
vassal_contract_has_flag = admin_cannot_revoke_titles_without_cause
- You:
NOT = { has_revoke_title_reason = scope:recipient }
Then
- You cannot revoke Titles or Appointments from a Vassal governing with the Imperial Administration unless you have a Title Revocation Reason
- The character you target:
- … cannot take overt hostile actions against … Diarch
- This character's titles are protected from revocation
If
scope:puppet_or_actor.top_liege.primary_title.var:administrative_ui_special_title.holder ?= scope:recipient
Then
- The Title of the Ceremonial Monarch cannot be revoked!
- The target:
- The … is not a Noble Family Title
NOT = { is_nomad_title = yes }- Is not the Head of Faith
- Is not a Clerical Title
- … must not be a Cardinalate
- … must not be a Challenger Head of Faith Title
The character you target
To send it
- Is a vassal of you
- Does not have a Strong Hook on you
- If they has administrative government mechanic: … does not have a valid appointment to Revoke
- … Titles may not be revoked within 10 years of founding a fief with … permission, unless they are a Criminal (… remaining)
To see it in the menu
- Their government is not unplayable
One 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:
- Is a vassal (or below) of you
Which title you can pick
- The target:
- Is not contested in a War.
NOT = { recent_history = { type = granted years = 1 } }- … controls a Faith
- … must not be a Clerical Title
- … must not be a Cardinalate
- … must not be a Challenger Head of Faith Title
- This is a special Title and cannot be revoked
Revoke Title is a vassal character interaction in Crusader Kings III. You need: This character's titles are protected from revocation. The character you target needs: Is a vassal of you and Does not have a Strong Hook on you. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include Legalism (+25), Base (-50), Base (-100) and 13 more. It costs Prestige (varies), Influence (varies). Patch 1.20.1.2, from game/common/character_interactions/00_revoke_title_interaction.txt.
Quick answers (3)
- What are the requirements for Revoke Title in CK3?
- You: This character's titles are protected from revocation. The character you target: Is a vassal of you and Does not have a Strong Hook on you. (patch 1.20.1.2)
- How do I get the AI to accept Revoke Title?
- Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: Legalism +25, Base -50, Base -100, Weak Hook used +40, They is a Herder +40, … Opinion of …, Refusal is Treason +20, Trusting +20, Content +20, Craven +20, … is your De Jure Capital +50, … is in your Capital Duchy +30, You has a valid Claim +30, The recipient … of the … Tier -20, … belongs to the recipient's De Jure -25, Intimidated by you, Terrified of you, Difference in your Military Strength (max +20), Legalistic Customs +20 and Indomitable Azatani -25.
- How much does Revoke Title cost?
- Prestige (varies), Influence (varies) (patch 1.20.1.2).
Will they accept?
Accepted automatically when:
- The character you target:
- Else, if imprisoned: … cannot refuse Revocation while Imprisoned by someone else
- Else, if all of these hold:
- Conditions:
- Then: … has the Bureaucratic
- Otherwise: Barony Tier Vassals cannot refuse Revocation
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 |
Legalismwhen
| +25 |
Basewhen
| -50 |
Basewhen
| -100 |
A scripted reasonwhen
| +50 |
A scripted reasonwhen
| +100 |
Weak Hook usedwhen
| +40 |
They is a Herderwhen
| +40 |
| … Opinion of … | varies |
Refusal is Treasonwhen
| +20 |
| Trusting | +20 |
| Content | +20 |
| Craven | +20 |
… is your De Jure Capitalwhen
| +50 |
… is in your Capital Duchywhen
| +30 |
You has a valid Claimwhen
| +30 |
| Their personality (AI values: greed (scripted), honor (scripted)) | varies |
| The recipient … of the … Tier | -20 |
… belongs to the recipient's De Jurewhen
| -25 |
Intimidated by youwhen
| intimidated_halved_reason_value |
Terrified of youwhen
| cowed_halved_reason_value |
| Difference in your Military Strength (max +20) | varies |
| Legalistic Customs | +20 |
A scripted reasonwhen
| +500 |
Indomitable Azataniwhen
| -25 |
Acceptance (ai_accept) (228 lines of game script)
base = 0
legalism_lawful_authority_acceptance_modifier = {
ACTOR = scope:puppet_or_actor
}
modifier = {
has_game_rule = hard_difficulty
scope:actor = {
is_ai = no
}
add = -50
desc = game_rule_base_value
}
modifier = {
has_game_rule = very_hard_difficulty
scope:actor = {
is_ai = no
}
add = -100
desc = game_rule_base_value
}
modifier = {
has_game_rule = hard_difficulty
scope:actor = {
is_ai = yes
}
add = 50
}
modifier = {
has_game_rule = very_hard_difficulty
scope:actor = {
is_ai = yes
}
add = 100
}
modifier = {
scope:hook = yes
add = 40
desc = SCHEME_WEAK_HOOK_USED
}
modifier = {
scope:recipient = {
government_has_flag = government_is_herder
}
add = 40
desc = MIGRATION_INTERACTION_HERDER
}
opinion_modifier = {
who = scope:recipient
opinion_target = scope:puppet_or_actor
multiplier = 0.8
desc = AI_OPINION_REASON
}
modifier = {
add = 20
scope:puppet_or_actor = {
has_realm_law_flag = vassal_refusal_is_treason
}
desc = AI_REFUSAL_IS_TREASON
}
modifier = {
add = 20
scope:recipient = {
has_trait = trusting
}
desc = TAKE_THE_VOWS_TRUSTING
}
modifier = {
add = 20
scope:recipient = {
has_trait = content
}
desc = INTERACTION_CONTENT
}
modifier = {
add = 20
scope:puppet_or_actor.current_military_strength > scope:recipient.current_military_strength
scope:recipient = {
has_trait = craven
}
desc = INTERACTION_CRAVEN
}
modifier = {
exists = scope:puppet_or_actor.primary_title.title_capital_county
OR = {
scope:landed_title = scope:puppet_or_actor.primary_title.title_capital_county
scope:landed_title = scope:puppet_or_actor.primary_title.title_capital_county.de_jure_liege
}
add = 50
desc = AI_TITLE_IS_REALM_CAPITAL
}
modifier = {
exists = scope:puppet_or_actor.primary_title.title_capital_county
NOR = {
scope:landed_title = scope:puppet_or_actor.primary_title.title_capital_county
scope:landed_title = scope:puppet_or_actor.primary_title.title_capital_county.de_jure_liege
}
scope:landed_title.de_jure_liege = scope:puppet_or_actor.primary_title.title_capital_county.de_jure_liege
add = 30
desc = AI_TITLE_IS_IN_CAPITAL_DUCHY
}
modifier = {
add = 30
scope:puppet_or_actor = {
has_claim_on = scope:landed_title
}
desc = AI_LIEGE_HAS_CLAIM_ON_TITLE
}
ai_value_modifier = {
who = scope:recipient
ai_greed = {
if = {
limit = {
scope:recipient = {
NOT = {
ai_greed = 0
}
}
}
value = -0.75
}
}
ai_honor = {
if = {
limit = {
scope:recipient = {
ai_honor > 0
}
scope:puppet_or_actor = {
has_realm_law_flag = vassal_refusal_is_treason
}
}
value = 0.5
}
}
}
modifier = {
desc = offer_vassalization_interaction_aibehavior_hightier_tt
trigger = {
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
add = -20
}
modifier = {
add = -25
NOT = {
scope:recipient = {
government_has_mechanic = administrative
}
}
scope:recipient.primary_title.tier > tier_county
OR = {
scope:recipient.primary_title = {
is_de_jure_liege_or_above_target = scope:landed_title
}
scope:recipient.primary_title = scope:landed_title
}
desc = AI_REFUSAL_IS_DE_JURE_UNDER
}
modifier = {
add = intimidated_halved_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:puppet_or_actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_halved_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:puppet_or_actor
level = 2
}
}
desc = COWED_REASON
}
modifier = {
desc = offer_vassalization_interaction_aibehavior_power_tt
add = {
value = 1
subtract = {
value = scope:recipient.current_military_strength
divide = {
value = scope:puppet_or_actor.current_military_strength
min = 1
}
}
multiply = 50
max = 20
}
}
modifier = {
desc = tradition_legalistic_name
scope:puppet_or_actor = {
has_revoke_title_reason = scope:recipient
culture = {
has_cultural_parameter = vassals_more_likely_accept_punishments
}
}
add = legalistic_vassal_punishment_acceptance
}
modifier = {
scope:puppet_or_actor = {
is_ai = yes
OR = {
has_trait = greatest_of_khans
has_character_modifier = the_great_khan_modifier
ai_should_get_conqueror_bonuses = yes
}
}
scope:recipient = {
is_ai = yes
}
add = 500
}
modifier = {
add = -25
scope:recipient = {
culture = {
has_cultural_parameter = vassals_more_likely_to_refuse_demands
}
}
desc = VASSALS_REFUSAL_indomitable_azatani
}As written in game/common/character_interactions/00_revoke_title_interaction.txt.
What happens
If they accept
If
- You: you has administrative government mechanic
- The character you target: they has administrative government mechanic
Then
- You: Event char_interaction.0199
If
- The character you target:
- Their faith is the same as that of puppet or actor
- Government is a Theocratic-type Government
scope:puppet_or_actor != scope:puppet_or_actor.faith.religious_head
Then
- You: Gain -250 Piety
If
a check the game hides
Then
- Your faith’s religious head: Opinion: Impious (-20)
- The character you target:
If
scope:landed_title.tier != tier_barony- The character you target: Their government is not unplayable
Then
- 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_revocationhas_revoke_title_reason = scope:recipientIf
a check the game hides
Then
has_claim_on = scope:landed_title
title_revocation_is_admin_governor_trigger = { VASSAL = scope:recipient }All of these
- The character you target:
NOT = { vassal_contract_has_flag = religiously_protected }
One of these
or
- The character you target:
Then
- Tyranny +20
If
- Has Legitimacy
None of these
- The landed title:
duchy = scope:liege_temp_scope.capital_county.duchy
- The landed title:
Then
- Loses 100 Legitimacy
- If their culture is not the same as that of recipient › The target’s culture:
change_cultural_acceptance = { target = scope:liege_temp_scope.culture value = revoke_title_culture_acceptance_impact desc = cultural_acceptance_loss_revokation }
Otherwise
If
- they has administrative government mechanic
- Is an Independent Ruler
- The character you target:
- they has administrative government mechanic
- Is a vassal (or below) of the liege temp
Then
Else if
has_claim_on = scope:landed_title
Then
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 (-20)
If
None of these
exists = scope:administrative_revocationhas_revoke_title_reason = scope:recipientIf
a check the game hides
Then
has_claim_on = scope:landed_title
title_revocation_is_admin_governor_trigger = { VASSAL = scope:recipient }All of these
- The character you target: … (more in the script below)
- … (more in the script below)
- … (more in the script below)
- … (more in the script below)
- … (more in the script below)
When it is accepted automatically
- The character you target: Event char_interaction.0200
If they refuse
If
NOT = { scope:is_puppet_action ?= yes }- you has administrative government mechanic
- Your Government uses Influence
NOT = { has_revoke_title_reason = scope:recipient }- The character you target:
NOT = { has_realm_law_flag = manor_reform_law }
Then
change_influence = { … }
If
scope:landed_title.tier != tier_baronyNone of these
- The character you target: Government is unplayable
Then
- 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_revocationhas_revoke_title_reason = scope:recipientIf
a check the game hides
Then
has_claim_on = scope:landed_title
All of these
- you has administrative government mechanic
- Is an Independent Ruler
- The character you target:
- they has administrative government mechanic
- Is a vassal (or below) of the liege temp
All of these
- The character you target:
NOT = { vassal_contract_has_flag = religiously_protected }
One of these
or
- The character you target:
Then
- Tyranny +20
If
- Has Legitimacy
None of these
- The landed title:
duchy = scope:liege_temp_scope.capital_county.duchy
- The landed title:
Then
- Loses 100 Legitimacy
- If your culture is not the same as that of recipient › The target’s culture:
change_cultural_acceptance = { target = scope:liege_temp_scope.culture value = revoke_title_culture_acceptance_impact desc = cultural_acceptance_loss_revokation }
Otherwise
If
- you has administrative government mechanic
- Is an Independent Ruler
- The character you target:
- they has administrative government mechanic
- Is a vassal (or below) of the liege temp
Then
Else if
has_claim_on = scope:landed_title
Then
Else if
has_revoke_title_reason = scope:recipient
Then
Else if
- Your rite:
- Your 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 (-20)
If
None of these
exists = scope:administrative_revocationhas_revoke_title_reason = scope:recipientIf
a check the game hides
Then
has_claim_on = scope:landed_title
All of these
- you has administrative government mechanic
- Is an Independent Ruler
- The character you target:
- they has administrative government mechanic
- Is a vassal (or below) of the liege temp
All of these
- The character you target:
NOT = { vassal_contract_has_flag = religiously_protected }
One of these
- … (more in the script below)
- The character you target:
- … (more in the script below)
- … (more in the script below)
Options when sending
- Use a Hook
Events it fires: char_interaction.0199, char_interaction.0232, char_interaction.0200
• 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) (7 lines of game script)
is_shown = scope:recipient = {
NOT = {
government_has_flag = government_is_herder
}
is_landed_or_landless_administrative = yes
target_is_liege_or_above = scope:puppet_or_actor
}As written in game/common/character_interactions/00_revoke_title_interaction.txt.
Can be sent when (is_valid…) (132 lines of game script)
title_revocation_standard_valid_showing_failures_only_trigger = yes
scope:puppet_or_actor = {
trigger_if = {
limit = {
government_has_flag = government_is_tribal
}
custom_description = {
text = has_law_allowing_title_revocation_tribal
has_realm_law_flag = title_revocation_allowed
}
}
trigger_else_if = {
limit = {
government_is_japanese_trigger = yes
}
custom_description = {
text = has_law_allowing_title_revocation_soryo
has_realm_law_flag = title_revocation_allowed
}
}
trigger_else_if = {
limit = {
government_has_mechanic = administrative
}
}
trigger_else_if = {
limit = {
realm_law_use_church_authority = yes
}
custom_description = {
text = has_law_allowing_title_revocation_church
has_realm_law_flag = title_revocation_allowed
}
}
trigger_else = {
custom_description = {
text = 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 = vassal_contract_forbids_revocation
scope:recipient = {
NOT = {
vassal_contract_has_flag = vassal_contract_cannot_revoke_titles
}
}
}
}
trigger_if = {
limit = {
scope:recipient = {
vassal_contract_has_flag = admin_cannot_revoke_titles_without_cause
}
scope:puppet_or_actor = {
NOT = {
has_revoke_title_reason = scope:recipient
}
}
}
custom_tooltip = {
text = admin_contract_forbids_revocation_desc
scope:recipient = {
NOT = {
vassal_contract_has_flag = admin_cannot_revoke_titles_without_cause
}
}
}
}
scope:recipient = {
is_vassal_of = scope:puppet_or_actor
NOT = {
has_strong_hook = scope:puppet_or_actor
}
trigger_if = {
limit = {
government_has_mechanic = administrative
}
custom_tooltip = {
text = admin_no_valid_appointment
any_held_title = {
is_landless_type_title = no
}
}
}
}
custom_tooltip = {
text = cannot_take_overt_hostile_actions_against_diarch.tt
NOT = {
scope:recipient ?= scope:puppet_or_actor.diarch
}
}
custom_tooltip = {
text = protected_from_revocation.tt
NOT = {
scope:recipient = {
has_character_flag = titles_protected
}
}
}
scope:puppet_or_actor = {
custom_description = {
text = character_interactions_hostile_actions_disabled_delay
NOT = {
has_character_flag = flag_hostile_actions_disabled_delay
}
}
}
scope:recipient ?= {
custom_tooltip = {
text = petition_liege_house_fief_allowed_flag_tt
trigger_if = {
limit = {
government_has_flag = government_is_japan_feudal
var:petition_liege_house_fief_allowed_flag ?= scope:puppet_or_actor
}
NOT = {
ask_for_pardon_available_trigger = {
ACTOR = scope:recipient
}
}
}
}
}
tgp_ceremonial_title_revoke_restriction_trigger = yesAs written in game/common/character_interactions/00_revoke_title_interaction.txt.
Effects (on_send, on_accept, on_decline) (239 lines of game script)
on_send = scope:puppet_or_actor = {
add_character_flag = {
flag = flag_hostile_actions_disabled_delay
days = 10
}
}
on_accept = save_scope_value_as = {
name = revoke_title_interaction
value = yes
}
if = {
limit = {
scope:puppet_or_actor = {
government_has_mechanic = administrative
}
scope:recipient = {
government_has_mechanic = administrative
}
}
save_scope_value_as = {
name = administrative_revocation
value = yes
}
scope:puppet_or_actor = {
trigger_event = char_interaction.0199
}
}
revoke_title_interaction_effect = yes
if = {
limit = {
scope:puppet_or_actor = {
has_character_flag = flag_hostile_actions_disabled_delay
}
}
scope:puppet_or_actor = {
remove_character_flag = flag_hostile_actions_disabled_delay
}
}
scope:puppet_or_actor = {
if = {
limit = {
character_is_valid_for_harrying_of_the_north_trigger = yes
scope:recipient = {
character_is_valid_for_harrying_of_the_north_trigger = yes
is_important_or_vip_struggle_character = yes
}
culture != scope:recipient.culture
}
global_var:harrying_of_the_north = {
save_scope_as = story
}
if = {
limit = {
character_is_valid_norman_for_harrying_of_the_north_trigger = yes
scope:recipient = {
character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes
}
}
ep3_increase_pacification_effect = {
AMOUNT = harrying_minor_increase_value
}
}
else_if = {
limit = {
character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes
scope:recipient = {
character_is_valid_norman_for_harrying_of_the_north_trigger = yes
}
}
ep3_increase_resistance_effect = {
AMOUNT = harrying_minor_increase_value
}
}
}
}
on_decline = scope:puppet_or_actor = {
if = {
limit = {
NOT = {
scope:is_puppet_action ?= yes
}
government_has_mechanic = administrative
government_has_flag = government_has_influence
NOT = {
has_revoke_title_reason = scope:recipient
}
scope:recipient = {
highest_held_title_tier >= tier_county
government_has_mechanic = administrative
}
NOT = {
has_realm_law_flag = manor_reform_law
}
}
show_as_tooltip = {
change_influence = {
scope:recipient ?= {
if = {
limit = {
any_held_title = {
title_tier = kingdom
is_landless_type_title = no
is_noble_family_title = no
}
}
add = {
add = {
value = scope:recipient.massive_influence_value
multiply = 3
}
desc = GOVERNOR_RESIGNATION_KINGDOM_COST
}
}
else_if = {
limit = {
any_held_title = {
title_tier = duchy
is_landless_type_title = no
is_noble_family_title = no
}
}
add = {
add = scope:recipient.massive_influence_value
desc = GOVERNOR_RESIGNATION_DUCHY_COST
}
}
else = {
add = {
add = scope:recipient.major_influence_value
desc = concept_county
}
}
if = {
limit = {
house ?= {
is_powerful_family = yes
}
}
add = {
value = scope:recipient.massive_influence_value
desc = GOVERNOR_RESIGNATION_POWERFUL_COST
}
}
else_if = {
limit = {
house ?= {
is_dominant_family = yes
}
}
add = {
value = scope:recipient.monumental_influence_value
desc = GOVERNOR_RESIGNATION_DOMINANT_COST
}
}
if = {
limit = {
scope:recipient.governor_efficiency < 1
}
add = {
value = -100
add = {
value = scope:recipient.governor_efficiency
multiply = 100
}
desc = GOVERNOR_RESIGNATION_EFFICIENCY_COST
}
}
else_if = {
limit = {
scope:recipient.governor_efficiency > 1
}
add = {
value = -100
add = {
value = scope:recipient.governor_efficiency
multiply = 100
}
desc = GOVERNOR_RESIGNATION_EFFICIENCY_COST
}
}
if = {
limit = {
influence_level != 1
}
add = {
value = {
value = influence_level
subtract = 1
}
multiply = 50
desc = GOVERNOR_RESIGNATION_INFLUENCE_LEVEL_COST
}
}
}
multiply = -1.25
}
}
}
}
if = {
limit = {
scope:landed_title.tier != tier_barony
NOT = {
scope:recipient = {
government_has_flag = government_is_herder
}
}
}
scope:puppet_or_actor = {
revocation_tyranny_effect = {
VASSAL = scope:recipient
}
title_revocation_stress_effect = {
VASSAL = scope:recipient
}
}
}
if = {
limit = {
scope:recipient = {
government_has_flag = government_is_herder
}
}
scope:recipient = {
add_opinion = {
target = scope:puppet_or_actor
opinion = -10
modifier = revoked_title
}
}
}
else = {
war_for_revoke_effect = {
LIEGE = scope:puppet_or_actor
REBEL = scope:recipient
}
scope:recipient = {
add_opin
# … (cut here; the rest is in the file)As written in game/common/character_interactions/00_revoke_title_interaction.txt.
- Category
- Vassal actions
- Cost: Prestige
- varies
- Cost: Influence
- varies
- In the menu
- main list
- ID
revoke_title_interaction
Source: game/common/character_interactions/00_revoke_title_interaction.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.