Interaction · Vassal actions
Request Contract Change
Renegotiate your Tributary Contract with the recipient
What you need
You
To send it
None of these
- The character you target: Is at war with you
If
- The character you target: Government uses the Mandala Capital Temple Complex Great Project and Great Building
Then
- … … changed the obligations recently and need to wait until …
- You:
If
- You don’t use a Hook
Then
- If subject Standing less than 0:
If
- Your Government is Nomadic
- The character you target: Government is Nomadic
Then
domicile.herd >= domicile.major_herd_value
Otherwise
gold >= major_gold_value
- Otherwise: Subject Standing more than 20
Else if
- You:
subject_contract_is_blocked_from_modification = yes
Then
- You:
subject_contract_is_blocked_from_modification = no
Otherwise
If
- You: Has “tributary modify contract cooldown” (a variable the game's script sets)
Then
- The Tributary Contract can only be changed once every 5 years - Can be changed again after …
Otherwise
- The Tributary Contract can only be changed once every 5 years - Can be changed again after …
- You:
If
- You don’t use a Hook
Then
- If subject Standing less than 0:
If
- Your Government is Nomadic
- The character you target: Government is Nomadic
Then
domicile.herd >= domicile.major_herd_value
Otherwise
gold >= major_gold_value
- Otherwise: Subject Standing more than 20
Also needed: not traveling
To see it in the menu
- Is a tributary of the target
subject_contract_has_modifiable_obligations = yes
Request Contract Change is a vassal character interaction in Crusader Kings III. You need: Is not traveling. Accepted automatically in some cases; otherwise the AI weighs it. Patch 1.20.1.2, from game/common/character_interactions/00_modifiy_vassal_contract.txt.
Quick answers (2)
- What are the requirements for Request Contract Change in CK3?
- You: Is not traveling. (patch 1.20.1.2)
- How do I get the AI to accept Request Contract Change?
- Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: … Opinion of … and Contract benefits.
Will they accept?
Accepted automatically when:
- … is forced to accept
Otherwise the AI adds these up and accepts above zero. Reasons in italics are the script's, with no label in the game.
| Reason | Amount |
|---|---|
| Base | -25 |
| … Opinion of … | varies |
| Contract benefits | varies |
Acceptance (ai_accept) (26 lines of game script)
base = -25
opinion_modifier = {
who = scope:recipient
opinion_target = scope:puppet_or_actor
multiplier = 1
desc = AI_OPINION_REASON
}
modifier = {
add = {
add = scope:new_value
multiply = -20
if = {
limit = {
scope:new_value < 0
scope:puppet_or_actor = {
OR = {
has_subject_contract_group = tributary_celestial
has_subject_contract_group = tributary_hegemonic
}
}
}
multiply = 0.5
}
}
desc = AI_CONTRACT_BALANCE
}As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.
What happens
If they accept
Otherwise
- If subject Standing less than 0:
If
- Your Government is Nomadic
- The character you target: Government is Nomadic
Then
pay_herd = { target = scope:recipient value = domicile.major_herd_value }
Otherwise
- Pay gold to the target
- Otherwise:
If
scope:new_value < 0
Then
add_subject_standing = { value = 10 multiply = scope:new_value }
- If subject Standing less than 0:
- Every in list › You:
tributary_contract_set_obligation_level = { type = scope:obligation.subject_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) (4 lines of game script)
is_shown = scope:puppet_or_actor = {
is_tributary_of = scope:recipient
subject_contract_has_modifiable_obligations = yes
}As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.
Can be sent when (is_valid…) (118 lines of game script)
scope:puppet_or_actor = {
is_travelling = no
}
NOT = {
scope:recipient = {
is_at_war_with = scope:puppet_or_actor
}
}
trigger_if = {
limit = {
scope:recipient = {
government_has_flag = government_is_mandala
}
}
custom_tooltip = {
text = subject_modify_subject_contract_mandala_cooldown
NOT = {
scope:puppet_or_actor = {
var:subject_recently_adjusted_mandala_subject_contract ?= scope:recipient
}
}
}
scope:puppet_or_actor = {
has_changed_contract_obligation_trigger = yes
trigger_if = {
limit = {
scope:hook = no
}
trigger_if = {
limit = {
subject_standing < 0
}
trigger_if = {
limit = {
government_has_flag = government_is_nomadic
scope:recipient = {
government_has_flag = government_is_nomadic
}
}
domicile.herd >= domicile.major_herd_value
}
trigger_else = {
gold >= major_gold_value
}
}
trigger_else = {
subject_standing > 20
}
}
}
}
trigger_else_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 = {
scope:puppet_or_actor = {
has_changed_contract_obligation_trigger = yes
}
trigger_if = {
limit = {
scope:puppet_or_actor = {
has_variable = tributary_modify_contract_cooldown
}
}
custom_tooltip = {
text = tributary_modify_contract_cooldown_desc
scope:puppet_or_actor = {
NOT = {
has_variable = tributary_modify_contract_cooldown
}
}
}
}
trigger_else = {
custom_tooltip = {
text = tributary_modify_contract_cooldown_desc
scope:puppet_or_actor = {
NOT = {
has_variable = tributary_modify_contract_cooldown
}
}
}
}
scope:puppet_or_actor = {
trigger_if = {
limit = {
scope:hook = no
}
trigger_if = {
limit = {
subject_standing < 0
}
trigger_if = {
limit = {
government_has_flag = government_is_nomadic
scope:recipient = {
government_has_flag = government_is_nomadic
}
}
domicile.herd >= domicile.major_herd_value
}
trigger_else = {
gold >= major_gold_value
}
}
trigger_else = {
subject_standing > 20
}
}
}
}As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.
Effects (on_send, on_accept, on_decline) (81 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
}
else = {
if = {
limit = {
subject_standing < 0
}
if = {
limit = {
government_has_flag = government_is_nomadic
scope:recipient = {
government_has_flag = government_is_nomadic
}
}
pay_herd = {
target = scope:recipient
value = domicile.major_herd_value
}
}
else = {
pay_short_term_gold = {
target = scope:recipient
gold = major_gold_value
}
}
}
else = {
if = {
limit = {
scope:new_value < 0
}
add_subject_standing = {
value = 10
multiply = scope:new_value
}
}
}
}
hidden_effect = {
set_variable = {
name = tributary_modify_contract_cooldown
value = yes
years = tributary_modify_contract_cooldown_value
}
}
set_variable = {
name = subject_recently_adjusted_mandala_subject_contract
value = scope:recipient
years = mandala_vassal_obligation_cooldown_years
}
every_in_list = {
list = changed_obligations
save_scope_as = obligation
scope:puppet_or_actor = {
tributary_contract_set_obligation_level = {
type = scope:obligation.subject_contract_type
level = scope:obligation
}
}
}
}
}
diarch_changed_own_contract_effect = yes
on_decline = hidden_effect = {
scope:puppet_or_actor = {
set_variable = {
name = tributary_modify_contract_cooldown
value = yes
years = tributary_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
subject_modify_tributary_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.