Interaction · Vassal actions
Submit to Suzerain
Ask to become a Tributary of the recipient
What you need
You
To send it
If
- The character you target:
primary_title.tier = tier_hegemony
Then
- … are NOT Independent or non-Tributary and neighboring the …
- The character you target:
If
- The character you target: Government uses the Mandala Capital Temple Complex Great Project and Great Building
- You:
One of these
- Your Government is a Tribal-type Government
or
Your Government uses the Mandala Capital Temple Complex Great Project and Great Building
Then
always = yes
Otherwise
- You outrank …
- You are not a member of a Confederation
- Is at not War
Also needed: available (not imprisoned, not incapable, not in an army) · none of the traits Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux · not busy in an Activity · not planning another Activity · not busy in a Mandala succession
To see it in the menu
- Is landed
- Is an Independent Ruler
- You are not a member of a Confederation
- Your government does not have the cannot be vassal or liege flag
- If played by the AI:
current_military_strength < scope:recipient.one_and_a_half_times_current_military_strengthprimary_title.tier < scope:recipient.primary_title.tier
The character you target
- Is an Independent Ruler
- Does not have you as top suzerain
has_realm_law_flag = can_have_tributaries- Their government is not unplayable
Submit to Suzerain is a vassal character interaction in Crusader Kings III. You need: Is available (not imprisoned, not incapable, not in an army), Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux, You are currently busy … and 4 more. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include The recipient is Nomadic (+100), Conqueror (-1,000), Major difference in our Tiers (+20) and 7 more. Patch 1.20.1.2, from game/common/character_interactions/00_tributary_interactions.txt.
Quick answers (2)
- What are the requirements for Submit to Suzerain in CK3?
- You: Is available (not imprisoned, not incapable, not in an army), Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux, You are currently busy …, You are already planning another Activity, You are currently busy in a Mandala succession, You are not a member of a Confederation and Is at not War. (patch 1.20.1.2)
- How do I get the AI to accept Submit to Suzerain?
- Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: The recipient is Nomadic +100, Conqueror -1,000, Major difference in our Tiers +20, Their realm is distant from yours -15, Their realm is remote from yours -25, They is your Rival -10, They is your Nemesis -100, They belongs to your Dynasty +10, Low Tributary Obligations -25 and High Tributary Obligations +25.
Will they 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 | +50 |
The recipient is Nomadicwhen
| +100 |
Conquerorwhen
| -1,000 |
Major difference in our Tierswhen
| +20 |
Their realm is distant from yourswhen
| -15 |
Their realm is remote from yourswhen
| -25 |
They is your Rivalwhen
| -10 |
They is your Nemesiswhen
| -100 |
They belongs to your Dynastywhen
| +10 |
| Their personality (AI values: greed 0.75) | varies |
Their opinion of youwhen
| varies |
Low Tributary Obligationswhen
| -25 |
High Tributary Obligationswhen
| +25 |
Acceptance (ai_accept) (121 lines of game script)
base = 50
modifier = {
desc = interaction_is_nomadic
scope:recipient = {
government_has_flag = government_is_nomadic
}
add = 100
}
modifier = {
add = -1000
desc = NO_FRIVOLOUS_ACTIVITIES_REASON
scope:actor = {
has_variable = conqueror
}
}
modifier = {
desc = offer_vassalization_interaction_aibehavior_widetitletier_tt
trigger = {
scope:actor = {
tier_difference = {
target = scope:recipient
value > 1
}
}
}
add = 20
}
modifier = {
desc = offer_vassalization_interaction_aibehavior_distantrealm_tt
trigger = {
scope:actor = {
NOT = {
any_neighboring_top_liege_realm_owner = {
this = scope:recipient
}
}
}
scope:actor.capital_province = {
squared_distance = {
target = scope:recipient.capital_province
value < squared_distance_major
}
}
}
add = -15
}
modifier = {
desc = offer_vassalization_interaction_aibehavior_remoterealm_tt
trigger = {
scope:actor = {
NOT = {
any_neighboring_top_liege_realm_owner = {
this = scope:recipient
}
}
}
scope:actor.capital_province = {
squared_distance = {
target = scope:recipient.capital_province
value >= squared_distance_major
}
}
}
add = -25
}
modifier = {
desc = offer_vassalization_interaction_aibehavior_rival_tt
trigger = {
scope:recipient = {
has_relation_rival = scope:actor
NOT = {
has_relation_nemesis = scope:actor
}
}
}
add = -10
}
modifier = {
desc = offer_vassalization_interaction_aibehavior_nemesis_tt
trigger = {
scope:recipient = {
has_relation_nemesis = scope:actor
}
}
add = -100
}
modifier = {
desc = offer_vassalization_interaction_aibehavior_dynasty_tt
trigger = {
scope:recipient = {
dynasty = scope:actor.dynasty
}
}
add = 10
}
ai_value_modifier = {
ai_greed = 0.75
min = 0
}
opinion_modifier = {
trigger = {
NOT = {
scope:recipient = {
government_has_flag = government_is_mandala
}
}
}
who = scope:recipient
opinion_target = scope:actor
multiplier = 1
}
modifier = {
add = -25
scope:low_obligations = yes
desc = CONTRACT_LOW_TRIBUTARY_TAXES_REASON
}
modifier = {
add = 25
scope:high_obligations = yes
desc = CONTRACT_HIGH_TRIBUTARY_TAXES_REASON
}As written in game/common/character_interactions/00_tributary_interactions.txt.
What happens
If they accept
If
root.suzerain ?= { … }
Then
root.suzerain = { … }
Else if
root.suzerain ?= { … }
Then
root.suzerain = { … }
If
Then
- You › If you are a Tributary:
suzerain = { … }end_tributary = yes
If
One of these
All of these
- The character you target: Has a Mandala Government
- You: Has a Mandala Government
or
All of these
- The character you target: Has a Mandala Government
- You: Government is a Tribal-type Government
If
a check the game hides
Then
- The character you target:
- Their house:
has_house_head_parameter = can_make_mandala_tributaries_via_war
If
a check the game hides
Then
- Their house: Has the house check as house head
- Their house:
- The character you target:
Then
- You:
- If government is a Tribal-type Government:
start_tributary = { contract_group = tributary_mandala_tribal suzerain = scope:recipient }If
One of these
- The option “high obligations” is chosen
or
exists = scope:tributary_war
Then
- Tributary Contract starts with High Taxes
- Tributary Contract starts with High Prestige Contribution
- Tributary Contract starts with High Levy Contribution
Else if
- The option “low obligations” is chosen
Then
- Tributary Contract starts with Tax Exempt
- Tributary Contract starts with Low Prestige Contribution
- Tributary Contract starts with No Contribution
Otherwise
- Tributary Contract starts with Normal Taxes
- Tributary Contract starts with Normal Prestige Contribution
- Tributary Contract starts with Low Levy Contribution
- If a Tributary:
tributary_contract_set_obligation_level = { type = mandala_suzerain_war_participation_guarantee level = 1 }
- Otherwise:
start_tributary = { contract_group = tributary_mandala suzerain = scope:recipient }If
One of these
- The option “high obligations” is chosen
or
exists = scope:tributary_war
Then
- Tributary Contract starts with High Taxes
- Tributary Contract starts with High Piety Contribution
- Tributary Contract starts with High Levy Contribution
Else if
- The option “low obligations” is chosen
Then
- Tributary Contract starts with Tax Exempt
- Tributary Contract starts with Low Piety Contribution
- Tributary Contract starts with No Contribution
Otherwise
- Tributary Contract starts with Normal Taxes
- Tributary Contract starts with Normal Piety Contribution
- Tributary Contract starts with Low Levy Contribution
- If a Tributary:
tributary_contract_set_obligation_level = { type = mandala_suzerain_war_participation_guarantee level = 1 }
- If government is a Tribal-type Government:
Else if
- The character you target: Has a Wanua Government
- You: Has a Wanua Government
Then
- You:
start_tributary = { contract_group = tributary_wanua suzerain = scope:recipient }If
One of these
- The option “high obligations” is chosen
or
exists = scope:tributary_war
Then
- Tributary Contract starts with High Barter Goods
- Tributary Contract starts with High Taxes
- Tributary Contract starts with Low Prestige Transfer
Else if
- The option “low obligations” is chosen
Then
- Tributary Contract starts with Low Barter Goods
- Tributary Contract starts with Low Taxes
- Tributary Contract starts with No Prestige Transfer
Otherwise
- Tributary Contract starts with Medium Barter Goods
- Tributary Contract starts with Low Taxes
- Tributary Contract starts with Low Prestige Transfer
Else if
- The character you target: Has a Nomadic Government
Then
- You:
If
One of these
- Has a Nomadic Government
or
Has a Herder Government
Then
start_tributary = { contract_group = tributary_nomadic suzerain = scope:recipient }
Otherwise
start_tributary = { contract_group = tributary_settled suzerain = scope:recipient }
If
- Does not have a Nomadic Government
- Does not have a Herder Government
Then
If
- … (more in the script below)
- … (more in the script below)
- … (more in the script below)
- … (more in the script below)
- You › If you are a Tributary:
If they refuse
- Event char_interaction.0361
Options when sending
- Meager Tribute
- Expected Tribute
- Rich Tribute
Events it fires: char_interaction.0360, char_interaction.0361
• 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) (24 lines of game script)
is_available = is_landed = yes
top_liege ?= this
is_confederation_member = no
NOT = {
government_has_flag = cannot_be_vassal_or_liege
}
is_shown = scope:recipient = {
is_independent_ruler = yes
NOR = {
this = scope:actor
this = scope:actor.suzerain
top_suzerain ?= scope:actor
}
can_have_tributaries_trigger = yes
}
scope:actor = {
trigger_if = {
limit = {
is_ai = yes
}
current_military_strength < scope:recipient.one_and_a_half_times_current_military_strength
primary_title.tier < scope:recipient.primary_title.tier
}
}As written in game/common/character_interactions/00_tributary_interactions.txt.
Can be sent when (is_valid…) (54 lines of game script)
trigger_if = {
limit = {
scope:recipient = {
primary_title.tier = tier_hegemony
}
}
custom_tooltip = {
text = become_tributary_interaction_hegemony_not_neighbor_tt
scope:actor = {
OR = {
is_tributary_or_independent_neighbor_of_hegemon_trigger = {
HEGEMON = h_china
}
is_tributary_or_independent_neighbor_of_hegemon_trigger = {
HEGEMON = h_roman_empire
}
is_tributary_or_independent_neighbor_of_hegemon_trigger = {
HEGEMON = h_eastern_roman_empire
}
is_tributary_or_independent_neighbor_of_hegemon_trigger = {
HEGEMON = h_dar_al_islam
}
is_tributary_or_independent_neighbor_of_hegemon_trigger = {
HEGEMON = h_india
}
}
}
}
}
trigger_if = {
limit = {
scope:recipient = {
government_has_flag = government_is_mandala
}
scope:actor = {
OR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_mandala
}
}
}
always = yes
}
trigger_else = {
custom_tooltip = {
text = offer_tributarization_interaction_aibehavior_not_higher_rank
scope:recipient.highest_held_title_tier >= scope:actor.highest_held_title_tier
}
}
scope:actor = {
is_available_allow_travelling = yes
is_confederation_member = no
is_at_war = no
}As written in game/common/character_interactions/00_tributary_interactions.txt.
Effects (on_send, on_accept, on_decline) (172 lines of game script)
on_send = if = {
limit = {
scope:recipient = {
highest_held_title_tier >= tier_hegemony
}
}
scope:actor = {
if = {
limit = {
scope:recipient.primary_title = title:h_china
}
open_view_data = {
view = decision_detail
data = decision:tribute_mission_decision_china
player = scope:actor
}
}
else_if = {
limit = {
scope:recipient.primary_title = title:h_roman_empire
}
open_view_data = {
view = decision_detail
data = decision:tribute_mission_decision_roman_empire
player = scope:actor
}
}
else_if = {
limit = {
scope:recipient.primary_title = title:h_eastern_roman_empire
}
open_view_data = {
view = decision_detail
data = decision:tribute_mission_decision_eastern_roman_empire
player = scope:actor
}
}
else_if = {
limit = {
scope:recipient.primary_title = title:h_dar_al_islam
}
open_view_data = {
view = decision_detail
data = decision:tribute_mission_decision_dar_al_islam
player = scope:actor
}
}
else_if = {
limit = {
scope:recipient.primary_title = title:h_india
}
open_view_data = {
view = decision_detail
data = decision:tribute_mission_decision_india
player = scope:actor
}
}
}
}
on_accept = if = {
limit = {
scope:actor.suzerain ?= {
NOR = {
government_has_flag = government_is_mandala
this = scope:actor
}
}
}
scope:actor.suzerain = {
if = {
limit = {
has_relation_rival = scope:actor
}
scope:actor = {
set_relation_nemesis = {
reason = rival_disloyal_tributary
target = scope:actor.suzerain
}
}
}
else = {
scope:actor = {
set_relation_rival = {
reason = rival_disloyal_tributary
target = scope:actor.suzerain
}
}
}
add_opinion = {
modifier = betrayal_opinion
target = scope:actor
opinion = -75
}
if = {
limit = {
NOT = {
any_claim = {
this = scope:actor.primary_title
}
}
}
add_unpressed_claim = scope:actor.primary_title
}
}
}
else_if = {
limit = {
scope:actor.suzerain ?= {
NOT = {
this = scope:actor
}
}
}
scope:actor.suzerain = {
add_opinion = {
modifier = betrayal_opinion
target = scope:actor
opinion = -30
}
}
}
if = {
limit = {
scope:recipient = {
highest_held_title_tier < tier_hegemony
}
}
scope:actor = {
if = {
limit = {
is_tributary = yes
}
mandala_end_tributary_with_notification_effect = yes
}
}
start_tributary_interaction_effect = {
TRIBUTARY = scope:actor
SUZERAIN = scope:recipient
}
scope:actor = {
trigger_event = char_interaction.0360
}
scope:recipient = {
if = {
limit = {
scope:high_obligations = yes
}
add_opinion = {
modifier = tributary_volunteered_opinion
target = scope:actor
opinion = 20
}
}
else_if = {
limit = {
scope:normal_obligations = yes
}
add_opinion = {
modifier = tributary_volunteered_opinion
target = scope:actor
}
}
consume_all_criminal_reasons_effect = {
LIEGE = scope:recipient
CRIMINAL = scope:actor
}
}
}
else = { }
on_decline = scope:actor = {
trigger_event = char_interaction.0361
}As written in game/common/character_interactions/00_tributary_interactions.txt.
- Category
- Vassal actions
- In the menu
- under More…
- ID
become_tributary_interaction
Source: game/common/character_interactions/00_tributary_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.