Interaction · Vassal actions
Modify Vassal Contract
Renegotiate the recipient's Obligations to you
What you need
You
None of these
- You: Is at war with the target
If
- You: Your Government uses the Mandala Capital Temple Complex Great Project and Great Building
Then
- … … changed the obligations recently and need to wait until …
- You:
save_temporary_scope_value_as = { name = obligations_favoring_vassal value = scope:recipient.count_obligation_improvements_for_vassal }
Else if
- The character you target:
subject_contract_is_blocked_from_modification = yes
Then
- The character you target:
subject_contract_is_blocked_from_modification = no
Otherwise
- You:
save_temporary_scope_value_as = { name = obligations_favoring_vassal value = scope:recipient.count_obligation_improvements_for_vassal }
Modify Vassal Contract 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 Modify Vassal Contract?
- Yes: it is accepted automatically.
Will they accept?
The other character has no choice: the game accepts it automatically.
What happens
Effects
- Tyranny changes
- If vassal obligation increase tyranny gain is not 0: Stress and fulfillment impact: by trait: Just +40, Generous +40
- Every in list › The character you target:
vassal_contract_set_obligation_level = { type = scope:obligation.vassal_contract_type level = scope:obligation }
Options when sending
- Use a Hook
• 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) (13 lines of game script)
is_shown = scope:recipient = {
this != scope:puppet_or_actor
liege ?= scope:puppet_or_actor
is_tributary = no
is_ruler = yes
vassal_contract_has_modifiable_obligations = yes
NOT = {
government_has_mechanic = administrative
}
NOT = {
government_has_flag = government_is_nomadic
}
}As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.
Can be sent when (is_valid…) (122 lines of game script)
NOT = {
scope:puppet_or_actor = {
is_at_war_with = scope:recipient
}
}
trigger_if = {
limit = {
scope:puppet_or_actor = {
government_has_flag = government_is_mandala
}
}
custom_tooltip = {
text = liege_modify_vassal_contract_mandala_cooldown
NOT = {
scope:recipient = {
var:liege_recently_adjusted_mandala_vassal_contract ?= scope:puppet_or_actor
}
}
}
scope:puppet_or_actor = {
has_changed_contract_obligation_trigger = yes
custom_description = {
text = liege_modify_vassal_contract_cannot_exceed_tyranny_cap
object = scope:puppet_or_actor
NOT = {
vassal_obligation_increase_tyranny_gain_multiplier > 1
}
}
custom_description = {
text = vassal_modify_vassal_contract_obligation_change_limit
value = list_size:changed_obligations
list_size:changed_obligations <= max_contract_changes
}
save_temporary_scope_value_as = {
name = obligations_favoring_vassal
value = scope:recipient.count_obligation_improvements_for_vassal
}
trigger_if = {
limit = {
scope:obligations_favoring_vassal > 0
}
custom_description = {
text = vassal_modify_vassal_contract_unnecessary_hook_usage_vassal_favor
object = scope:recipient
value = scope:obligations_favoring_vassal
NOT = {
always = scope:hook
}
}
}
trigger_else_if = {
limit = {
scope:obligations_favoring_vassal = 0
}
custom_description = {
text = vassal_modify_vassal_contract_unnecessary_hook_usage_equal
object = scope:recipient
NOT = {
always = scope:hook
}
}
}
trigger_else = { }
}
}
trigger_else_if = {
limit = {
scope:recipient = {
subject_contract_is_blocked_from_modification = yes
}
}
scope:recipient = {
subject_contract_is_blocked_from_modification = no
}
}
trigger_else = {
scope:puppet_or_actor = {
has_changed_contract_obligation_trigger = yes
custom_description = {
text = liege_modify_vassal_contract_cannot_exceed_tyranny_cap
object = scope:puppet_or_actor
NOT = {
vassal_obligation_increase_tyranny_gain_multiplier > 1
}
}
custom_description = {
text = vassal_modify_vassal_contract_obligation_change_limit
value = list_size:changed_obligations
list_size:changed_obligations <= max_contract_changes
}
save_temporary_scope_value_as = {
name = obligations_favoring_vassal
value = scope:recipient.count_obligation_improvements_for_vassal
}
trigger_if = {
limit = {
scope:obligations_favoring_vassal > 0
}
custom_description = {
text = vassal_modify_vassal_contract_unnecessary_hook_usage_vassal_favor
object = scope:recipient
value = scope:obligations_favoring_vassal
NOT = {
always = scope:hook
}
}
}
trigger_else_if = {
limit = {
scope:obligations_favoring_vassal = 0
}
custom_description = {
text = vassal_modify_vassal_contract_unnecessary_hook_usage_equal
object = scope:recipient
NOT = {
always = scope:hook
}
}
}
trigger_else = { }
}
}As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.
Effects (on_send, on_accept, on_decline) (146 lines of game script)
on_accept = hidden_effect = {
if = {
limit = {
catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = {
CHAR = scope:recipient
}
scope:puppet_or_actor = {
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
CHAR = scope:recipient
}
}
}
}
scope:puppet_or_actor = {
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
CHAR = scope:recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection
character = scope:puppet_or_actor
}
}
}
}
if = {
limit = {
catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = {
CHAR = scope:recipient
}
scope:puppet_or_actor = {
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
CHAR = scope:recipient
}
}
}
}
scope:puppet_or_actor = {
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
CHAR = scope:recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
character = scope:puppet_or_actor
}
}
}
}
if = {
limit = {
scope:recipient.count_obligation_improvements_for_vassal > 0
scope:puppet_or_actor = {
is_diff_faith_or_culture_trigger = {
CHAR = scope:recipient
STATUS = involved
}
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
CHAR = scope:recipient
}
}
}
}
scope:puppet_or_actor = {
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
CHAR = scope:recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal
character = scope:puppet_or_actor
}
}
}
}
}
scope:puppet_or_actor = {
send_interface_message = {
type = msg_vassal_contract_change
title = modify_vassal_contract_interaction_notification
right_icon = scope:recipient
add_tyranny = vassal_obligation_increase_tyranny_gain
if = {
limit = {
vassal_obligation_increase_tyranny_gain != 0
}
stress_and_fulfillment_impact = {
just = medium_stress_impact_gain
generous = medium_stress_impact_gain
}
}
if = {
limit = {
always = scope:hook
}
use_hook = scope:recipient
add_achievement_flag_effect = {
FLAG = achievement_fine_print_flag
}
}
scope:recipient = {
hidden_effect = {
set_subject_contract_modification_blocked = yes
}
set_variable = {
name = liege_recently_adjusted_mandala_vassal_contract
value = scope:puppet_or_actor
years = mandala_vassal_obligation_cooldown_years
}
}
every_in_list = {
list = changed_obligations
save_scope_as = obligation
scope:recipient = {
vassal_contract_set_obligation_level = {
type = scope:obligation.vassal_contract_type
level = scope:obligation
}
}
}
}
}
scope:recipient = {
additional_flavor_check_effect = yes
}As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.
- Category
- Vassal actions
- In the menu
- main list
- ID
liege_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.