Interaction · Diplomatic actions
Purchase Truce
Negotiate a preemptive Truce with the recipient in exchange for Gold
What you need
You
To send it
- If your Personal Tenets unlock tenet peace of god personal truce:
piety >= pt_sum_small_value
- Otherwise:
gold >= pt_sum_small_value
- You are at War with …
- You are Allied to …
- You already have a Truce with …
Also needed: available (not imprisoned, not incapable)
To see it in the menu
- If played by the AI:
One of these
- Has the Defensive Measures Perk
or
Any character struggle:involvement = involved
- Is a ruler
One of these
- Is at not War
One of these
- Is played by a person
or
Has the Trait: Profligateor
All of these
- Has the Trait: Improvident
exists = scope:generous_purchase
or
short_term_gold >= purchase_truce_interaction_small_sum
- Is not imprisoned
- Your government is not Adventurer
One of these
or
One of these
- Never
or
Any character struggle:involvement = involvedhas_struggle_phase_parameter = unlocks_truce_purchasing_interaction
or
Has the Defensive Negotiations Perkor
Your culture: The Culture has the Unlocks the Purchase Truce Interaction Traditionor
Your Personal Tenets unlock tenet peace of god personal truce
- If an Independent Ruler:
top_liege = scope:recipient.top_liege
The character you target
To send it
Also needed: available (not imprisoned, not incapable)
To see it in the menu
- Is a ruler
One of these
- No liege or above:
- No vassal or below:
Purchase Truce is a diplomatic character interaction in Crusader Kings III. You need: Is available (not imprisoned, not incapable), You are at War with …, You are Allied to … and 1 more. The character you target needs: Is available (not imprisoned, not incapable). The AI weighs it (the answer is partly random). Reasons the AI weighs include Amount of Gold Offered (-10), Amount of Gold Offered (+25), Amount of Gold Offered (+75) and 17 more. Patch 1.20.1.2, from game/common/character_interactions/03_fp2_interactions.txt.
Quick answers (2)
- What are the requirements for Purchase Truce in CK3?
- You: Is available (not imprisoned, not incapable), You are at War with …, You are Allied to … and You already have a Truce with …. The character you target: Is available (not imprisoned, not incapable). (patch 1.20.1.2)
- How do I get the AI to accept Purchase Truce?
- The AI weighs it (the answer is partly random). Its reasons: Struggle agenda, Amount of Gold Offered -10, Amount of Gold Offered +25, Amount of Gold Offered +75, The recipient upholds the Peace of God +30, The recipient's treasury is low +30, … Opinion of …, Greed, Boldness, Wants the freedom to War -50, Is in Debt, … is pacifist +25, … is pacifist +25, The recipient has personal Claims on your land -20, The recipient has personal Claims on your land -40, The recipient has personal Claims on your land -60, The recipient has De Jure Claims on your land -30, The recipient has De Jure Claims on your land -30, The recipient has De Jure Claims on your land -30, The recipient has De Jure Claims on your land -30, They is much stronger than you -30, They is somewhat stronger than you -10, They is roughly equal in strength to you +10, They is somewhat weaker than you +25 and They is much weaker than you +50.
Will they accept?
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 |
Struggle agendawhen
| varies |
Amount of Gold Offeredwhen
| -10 |
Amount of Gold Offeredwhen
| +25 |
Amount of Gold Offeredwhen
| +75 |
The recipient upholds the Peace of Godwhen
| +30 |
The recipient's treasury is lowwhen
| +30 |
| … Opinion of … | varies |
Greedwhen
| varies |
Boldnesswhen
| varies |
| Wants the freedom to War | -50 |
Is in Debtwhen
| varies |
| … is pacifist | +25 |
| … is pacifist | +25 |
The recipient has personal Claims on your landwhen
| -20 |
The recipient has personal Claims on your landwhen
| -40 |
The recipient has personal Claims on your landwhen
| -60 |
The recipient has De Jure Claims on your landwhen
| -30 |
The recipient has De Jure Claims on your landwhen
| -30 |
The recipient has De Jure Claims on your landwhen
| -30 |
The recipient has De Jure Claims on your landwhen
| -30 |
They is much stronger than youwhen
| -30 |
They is somewhat stronger than youwhen
| -10 |
They is roughly equal in strength to youwhen
| +10 |
They is somewhat weaker than youwhen
| +25 |
They is much weaker than youwhen
| +50 |
Acceptance (ai_accept) (239 lines of game script)
base = 0
modifier = {
trigger_if = {
limit = {
scope:recipient = {
any_character_struggle = {
involvement = involved
}
}
scope:puppet_or_actor = {
any_character_struggle = {
involvement = involved
}
}
}
}
trigger_else = {
always = no
}
add = {
value = 0
if = {
limit = {
scope:recipient = {
any_character_struggle = {
phase_has_catalyst = catalyst_sign_truce_outside_war
}
has_character_flag = agenda_towards_escalation
}
}
add = -50
}
else_if = {
limit = {
scope:recipient = {
any_character_struggle = {
phase_has_catalyst = catalyst_sign_truce_outside_war
}
}
}
add = 100
}
}
desc = AI_STRUGGLE_INTENT
}
modifier = {
add = -10
always = scope:pt_sum_small
desc = PT_AMOUNT_OF_GOLD_OFFERED
}
modifier = {
add = 25
always = scope:pt_sum_medium
desc = PT_AMOUNT_OF_GOLD_OFFERED
}
modifier = {
add = 75
always = scope:pt_sum_large
desc = PT_AMOUNT_OF_GOLD_OFFERED
}
modifier = {
add = 30
scope:recipient.rite ?= {
rite_has_parameter = tenet_peace_of_god_cheaper_truce_purchase
}
desc = PT_PAM_PEACE_OF_GOD_RITE
}
modifier = {
add = 30
gold <= scope:recipient.yearly_character_income
desc = PT_COULD_USE_SOME_POCKET_MONEY
}
opinion_modifier = {
who = scope:recipient
opinion_target = scope:puppet_or_actor
multiplier = 0.5
desc = AI_OPINION_REASON
}
modifier = {
add = {
value = ai_greed
multiply = 2
}
ai_greed >= 1
desc = AI_VALUE_MODIFIER_GREED
}
modifier = {
add = {
value = ai_boldness
multiply = -0.5
}
NOT = {
ai_boldness = 0
}
desc = AI_VALUE_MODIFIER_BOLDNESS
}
modifier = {
add = -50
has_trait = ambitious
desc = PT_AI_LIKES_FREEDOM_TO_WAR_REASON
}
modifier = {
add = {
value = debt_level
add = 1
multiply = 10
}
debt_level >= 0
desc = PT_AI_IS_IN_DEBT
}
modifier = {
add = 25
faith = {
has_doctrine_parameter = pacifist
}
desc = PT_AI_IS_PACIFIST_FAITH
}
modifier = {
add = 25
culture = {
has_cultural_parameter = reduced_cost_for_conversion_to_pacifist_faith
}
desc = PT_AI_IS_PACIFIST_CULTURE
}
modifier = {
add = -20
any_claim = {
count = 1
exists = holder
holder = scope:puppet_or_actor
}
desc = PT_AI_PERSONALLY_CLAIMS_YOUR_LAND
}
modifier = {
add = -40
OR = {
any_claim = {
count >= 2
exists = holder
holder = scope:puppet_or_actor
}
any_claim = {
count = 1
exists = holder
holder = scope:puppet_or_actor
save_temporary_scope_as = claim_temp
scope:recipient = {
has_strong_claim_on = scope:claim_temp
}
}
}
desc = PT_AI_PERSONALLY_CLAIMS_YOUR_LAND
}
modifier = {
add = -60
any_claim = {
count >= 2
exists = holder
holder = scope:puppet_or_actor
save_temporary_scope_as = claim_temp
scope:recipient = {
has_strong_claim_on = scope:claim_temp
}
}
desc = PT_AI_PERSONALLY_CLAIMS_YOUR_LAND
}
modifier = {
add = -30
highest_held_title_tier = tier_duchy
purchase_truce_interaction_recipient_can_de_jure_war_actor_trigger = yes
scope:puppet_or_actor = {
any_sub_realm_county = {
count >= 3
any_this_title_or_de_jure_above = {
holder = scope:puppet_or_actor
}
}
}
desc = PT_AI_DE_JURE_CLAIMS_YOUR_LAND
}
modifier = {
add = -30
highest_held_title_tier = tier_kingdom
purchase_truce_interaction_recipient_can_de_jure_war_actor_trigger = yes
scope:puppet_or_actor = {
any_sub_realm_county = {
count >= 10
any_this_title_or_de_jure_above = {
holder = scope:puppet_or_actor
}
}
}
desc = PT_AI_DE_JURE_CLAIMS_YOUR_LAND
}
modifier = {
add = -30
highest_held_title_tier = tier_empire
purchase_truce_interaction_recipient_can_de_jure_war_actor_trigger = yes
scope:puppet_or_actor = {
any_sub_realm_county = {
count >= 20
any_this_title_or_de_jure_above = {
holder = scope:puppet_or_actor
}
}
}
desc = PT_AI_DE_JURE_CLAIMS_YOUR_LAND
}
modifier = {
add = -30
highest_held_title_tier = tier_hegemony
purchase_truce_interaction_recipient_can_de_jure_war_actor_trigger = yes
scope:puppet_or_actor = {
any_sub_realm_county = {
count >= 30
any_this_title_or_de_jure_above = {
holder = scope:puppet_or_actor
}
}
}
desc = PT_AI_DE_JURE_CLAIMS_YOUR_LAND
}
modifier = {
add = -30
scope:puppet_or_actor.max_military_strength <= scope:recipient.purchase_truce_interaction_recipient_far_weaker_value
desc = PT_AI_RECIPIENT_IS_MUCH_STRONGER
}
modifier = {
add = -10
scope:puppet_or_actor.max_military_strength > scope:recipient.purchase_truce_interaction_recipient_far_weaker_value
scope:puppet_or_actor.max_military_strength <= scope:recipient.purchase_truce_interaction_recipient_somewhat_weaker_value
desc = PT_AI_RECIPIENT_IS_SOMEWHAT_STRONGER
}
modifier = {
add = 10
scope:puppet_or_actor.max_military_strength > scope:recipient.purchase_truce_interaction_recipient_somewhat_weaker_value
scope:puppet_or_actor.max_military_strength <= scope:recipient.purchase_truce_interaction_recipient_somewhat_stronger_value
desc = PT_AI_RECIPIENT_IS_ROU
# … (cut here; the rest is in the file)As written in game/common/character_interactions/03_fp2_interactions.txt.
What happens
If they accept
- If never:
add_truce_both_ways = { character = scope:recipient days = purchase_truce_interaction_truce_days_small_value name = TRUCE_PURCHASED }
- Else, if never:
add_truce_both_ways = { character = scope:recipient days = purchase_truce_interaction_truce_days_large_value name = TRUCE_PURCHASED }
- Otherwise:
add_truce_both_ways = { character = scope:recipient days = purchase_truce_interaction_truce_days_medium_value name = TRUCE_PURCHASED }
- You:
- If the Personal Tenets unlock tenet peace of god personal truce:
- If never:
add_piety = { value = pt_sum_small_value multiply = -1 }- The character you target: Gain … Piety
- Else, if never:
add_piety = { value = pt_sum_large_value multiply = -1 }- The character you target: Gain … Piety
- Otherwise:
add_piety = { value = pt_sum_medium_value multiply = -1 }- The character you target: Gain … Piety
- If never:
- Otherwise:
- If never:
pay_short_term_gold = { … }
- Else, if never:
pay_short_term_gold = { … }
- Otherwise:
pay_short_term_gold = { … }
- If never:
- If the Personal Tenets unlock tenet peace of god personal truce:
If
- Any character struggle:
involvement = involvedphase_has_catalyst = catalyst_bought_important_truce- The character you target › Any character struggle:
involvement = involved
Then
- Every character struggle:
- Where:
phase_has_catalyst = catalyst_bought_important_truce- The character you target › Any character struggle:
involvement = involved
involvement = involvedactivate_struggle_catalyst = { catalyst = catalyst_bought_important_truce character = scope:puppet_or_actor }
- Where:
- Any character struggle:
If
- Any character struggle:
involvement = involvedphase_has_catalyst = catalyst_sign_truce_outside_war- The character you target › Any character struggle:
involvement = involved
Then
- Every character struggle:
- Where:
phase_has_catalyst = catalyst_sign_truce_outside_war- The character you target › Any character struggle:
involvement = involved
involvement = involvedactivate_struggle_catalyst = { catalyst = catalyst_sign_truce_outside_war character = scope:puppet_or_actor }
- Where:
- Any character struggle:
- The character you target:
- If never:
add_truce_both_ways = { character = scope:puppet_or_actor days = purchase_truce_interaction_truce_days_small_value name = TRUCE_PURCHASED }
- Else, if never:
add_truce_both_ways = { character = scope:puppet_or_actor days = purchase_truce_interaction_truce_days_large_value name = TRUCE_PURCHASED }
- Otherwise:
add_truce_both_ways = { character = scope:puppet_or_actor days = purchase_truce_interaction_truce_days_medium_value name = TRUCE_PURCHASED }
- If never:
If
Then
- Your house:
add_unity_value = { … }
- Your house:
If they refuse
Options when sending
- Small Sum
- Medium Sum
- Large Sum
• 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) (49 lines of game script)
is_available = trigger_if = {
limit = {
is_ai = yes
}
OR = {
has_perk = defensive_measures_perk
any_character_struggle = {
involvement = involved
}
}
is_playable_character = yes
is_at_war = no
can_make_expensive_purchase_trigger = {
PRICE = purchase_truce_interaction_small_sum
}
is_imprisoned = no
}
is_shown = scope:puppet_or_actor ?= {
this != scope:recipient
is_landless_adventurer = no
OR = {
AND = {
scope:recipient = {
government_has_flag = government_is_nomadic
}
NOT = {
government_has_flag = government_is_nomadic
}
}
fp2_purchase_truce_interaction_soft_requirements_trigger = yes
}
trigger_if = {
limit = {
top_liege != this
}
top_liege = scope:recipient.top_liege
}
}
scope:recipient = {
is_playable_character = yes
NOR = {
any_liege_or_above = {
this = scope:puppet_or_actor
}
any_vassal_or_below = {
this = scope:puppet_or_actor
}
}
}As written in game/common/character_interactions/03_fp2_interactions.txt.
Can be sent when (is_valid…) (48 lines of game script)
scope:puppet_or_actor = {
trigger_if = {
limit = {
has_personal_tenet_flag = tenet_peace_of_god_personal_truce
}
piety >= pt_sum_small_value
}
trigger_else = {
gold >= pt_sum_small_value
}
is_physically_able = yes
}
scope:recipient = {
is_physically_able = yes
}
scope:puppet_or_actor = {
custom_tooltip = {
text = purchase_truce_interaction.at_war.tt
NOT = {
is_at_war_with = scope:recipient
}
}
custom_tooltip = {
text = purchase_truce_interaction.allied.tt
NOT = {
is_allied_to = scope:recipient
}
}
custom_tooltip = {
text = purchase_truce_interaction.existing_truce.tt
NOT = {
any_truce_holder = {
this = scope:recipient
}
}
}
}
trigger_if = {
limit = {
scope:puppet_or_actor = {
has_government = landless_adventurer_government
}
}
ep3_laamp_diplo_range_trigger = {
TARGET = scope:recipient
LAAMP = scope:puppet_or_actor
}
}As written in game/common/character_interactions/03_fp2_interactions.txt.
Effects (on_send, on_accept, on_decline) (124 lines of game script)
on_accept = scope:puppet_or_actor = {
send_interface_toast = {
type = event_toast_effect_good
title = purchase_truce_interaction.accept.actor.tt
left_icon = scope:recipient
show_as_tooltip = {
purchase_truce_interaction_work_out_truce_days_effect = {
TARGET = scope:recipient
}
}
}
show_as_tooltip = {
purchase_truce_interaction_work_out_purchase_cost_effect = yes
}
show_as_tooltip = {
purchase_truce_interaction_activate_catalyst_effect = yes
}
}
if = {
limit = {
scope:is_puppet_action ?= yes
scope:actor != scope:recipient
}
scope:actor = {
send_interface_toast = {
type = event_toast_effect_good
title = purchase_truce_interaction.accept.actor.tt_puppeteer
left_icon = scope:puppet_or_actor
right_icon = scope:recipient
}
}
}
scope:recipient = {
send_interface_toast = {
type = event_toast_effect_neutral
title = purchase_truce_interaction.accept.recipient.tt
left_icon = scope:puppet_or_actor
show_as_tooltip = {
purchase_truce_interaction_work_out_truce_days_effect = {
TARGET = scope:puppet_or_actor
}
}
}
}
hidden_effect = {
scope:puppet_or_actor = {
purchase_truce_interaction_work_out_truce_days_effect = {
TARGET = scope:recipient
}
purchase_truce_interaction_activate_catalyst_effect = yes
if = {
limit = {
always = scope:pt_sum_small
}
add_to_bought_truce_list = {
TARGET = scope:recipient
DAYS = purchase_truce_interaction_truce_days_small_value
}
}
else_if = {
limit = {
always = scope:pt_sum_large
}
add_to_bought_truce_list = {
TARGET = scope:recipient
DAYS = purchase_truce_interaction_truce_days_large_value
}
}
else = {
add_to_bought_truce_list = {
TARGET = scope:recipient
DAYS = purchase_truce_interaction_truce_days_medium_value
}
}
}
purchase_truce_interaction_work_out_purchase_cost_effect = yes
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:puppet_or_actor
TARGET = scope:recipient
VALUE = minor_unity_gain
DESC = clan_unity_purchased_truce.desc
REVERSE_NON_HOUSE_TARGET = no
}
on_decline = scope:puppet_or_actor = {
send_interface_toast = {
type = event_toast_effect_bad
title = purchase_truce_interaction.decline.actor.tt
left_icon = scope:recipient
add_stress = minor_stress_gain
}
}
if = {
limit = {
scope:is_puppet_action ?= yes
scope:actor != scope:recipient
}
scope:actor = {
send_interface_toast = {
type = event_toast_effect_bad
title = purchase_truce_interaction.decline.actor.tt_puppeteer
left_icon = scope:puppet_or_actor
right_icon = scope:recipient
}
}
}
scope:recipient = {
send_interface_toast = {
type = event_toast_effect_neutral
title = purchase_truce_interaction.decline.recipient.tt
left_icon = scope:puppet_or_actor
reverse_add_opinion = {
target = scope:puppet_or_actor
modifier = warmonger_opinion
}
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:recipient
TARGET = scope:puppet_or_actor
VALUE = minor_unity_loss
DESC = clan_unity_purchased_truce_refusal.desc
REVERSE_NON_HOUSE_TARGET = no
}As written in game/common/character_interactions/03_fp2_interactions.txt.
- Category
- Diplomatic actions
- Cooldown
- 5 years
- Again on the same character
- after 10 years
- In the menu
- main list
- ID
purchase_truce_interaction
Source: game/common/character_interactions/03_fp2_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.