Interaction · Vassal actions
Request Contract Change
Renegotiate your Vassal Contract with the other character
What you need
You
To send it
None of these
- The character you target: Is at war with you
If
- You:
subject_contract_is_blocked_from_modification = yes
Then
- You:
subject_contract_is_blocked_from_modification = no
Otherwise
If
- You: Has “vassal modify contract cooldown” (a variable the game's script sets)
Then
- The Vassal Contract can only be changed once every 5 years - Can be changed again after …
Otherwise
- … can not make another request until …
- You:
To see it in the menu
- Is not an Independent Ruler
- Is a direct vassal of the target
- You are not a Tributary
vassal_contract_has_modifiable_obligations = yes- Your Government is Nomadic
Request Contract Change is a vassal character interaction in Crusader Kings III. Accepted automatically. Patch 1.20.1.2, from game/common/character_interactions/00_modifiy_vassal_contract.txt.
Quick answers (1)
- Will the AI accept Request Contract Change?
- Yes: it is accepted automatically.
Will they accept?
The other character has no choice: the game accepts it automatically.
What happens
Effects
- Every in list › You:
vassal_contract_set_obligation_level = { type = scope:obligation.vassal_contract_type level = scope:obligation }
- If never:
If
a check the game hides
Then
- The diarch:
- … use your status as Diarch to countersign some of … own changes
If
diarch ?= scope:liegehas_diarchy_active_parameter = diarchy_is_co_rulership
Then
- Opinion: Abused Position of Trust (-10)
Otherwise
- Opinion: Abused Position of Trust (-40)
- The diarch:
Options when sending
- Use a Hook
- Use Borrowed Powers
• 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) (8 lines of game script)
is_shown = scope:puppet_or_actor = {
is_independent_ruler = no
this != scope:recipient
liege ?= scope:recipient
is_tributary = no
vassal_contract_has_modifiable_obligations = yes
government_has_flag = government_is_nomadic
}As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.
Can be sent when (is_valid…) (63 lines of game script)
NOT = {
scope:recipient = {
is_at_war_with = scope:puppet_or_actor
}
}
trigger_if = {
limit = {
scope:puppet_or_actor = {
subject_contract_is_blocked_from_modification = yes
}
}
scope:puppet_or_actor = {
subject_contract_is_blocked_from_modification = no
}
}
trigger_else = {
trigger_if = {
limit = {
scope:puppet_or_actor = {
has_variable = vassal_modify_contract_cooldown
}
}
custom_tooltip = {
text = vassal_modify_contract_cooldown_desc
scope:puppet_or_actor = {
NOT = {
has_variable = vassal_modify_contract_cooldown
}
}
}
}
trigger_else = {
custom_tooltip = {
text = nomad_contract_request_cooldown_desc
scope:puppet_or_actor = {
NOT = {
has_variable = nomad_contract_request_cooldown
}
}
}
}
scope:puppet_or_actor = {
has_changed_contract_obligation_trigger = yes
}
scope:puppet_or_actor = {
trigger_if = {
limit = {
count_obligation_improvements_for_vassal_include_hook >= 0
}
custom_description = {
text = vassal_modify_vassal_contract_cannot_increase_obligation_level
object = scope:recipient
value = count_obligation_improvements_for_vassal_include_hook
count_obligation_improvements_for_vassal_include_hook = 0
}
}
custom_description = {
text = vassal_modify_vassal_contract_obligation_change_limit
value = list_size:changed_obligations
list_size:changed_obligations <= max_contract_changes
}
}
}As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.
Effects (on_send, on_accept, on_decline) (49 lines of game script)
on_accept = scope:puppet_or_actor = {
send_interface_message = {
type = msg_vassal_contract_change
title = modify_vassal_contract_interaction_notification
right_icon = scope:recipient
if = {
limit = {
always = scope:hook
}
use_hook = scope:recipient
add_achievement_flag_effect = {
FLAG = achievement_fine_print_flag
}
}
hidden_effect = {
set_variable = {
name = vassal_modify_contract_cooldown
value = yes
years = vassal_modify_contract_cooldown_value
}
}
hidden_effect = {
set_subject_contract_modification_blocked = yes
}
every_in_list = {
list = changed_obligations
save_scope_as = obligation
scope:puppet_or_actor = {
vassal_contract_set_obligation_level = {
type = scope:obligation.vassal_contract_type
level = scope:obligation
}
}
}
}
}
diarch_changed_own_contract_effect = yes
scope:puppet_or_actor = {
additional_flavor_check_effect = yes
}
on_decline = hidden_effect = {
scope:puppet_or_actor = {
set_variable = {
name = nomad_contract_request_cooldown
value = yes
years = vassal_modify_contract_cooldown_value
}
}
}As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.
- Category
- Vassal actions
- In the menu
- main list
- ID
nomad_vassal_modify_vassal_contract_interaction
Source: game/common/character_interactions/00_modifiy_vassal_contract.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.