Interaction · Uncategorized actions
Offer of Peace
What you need
You
To send it
- The war: Has a valid Casus Belli
To see it in the menu
- If played by the AI:
- Is at War
- Any character war:
- Is war leader in the war against you
One of these
- Defender war score at least 100
or
All of these
primary_defender ?= { is_ai = yes }One of these
- Attacker war score at least 90
or
All of these
- You › Your dynasty: The Dynasty has the The Secret History Legacy
- Attacker war score at least 80
- You: Has the Peacemaker Perk
or
All of these
primary_defender ?= { is_ai = yes }- You › Your dynasty: The Dynasty has the The Secret History Legacy
One of these
- Attacker war score at least 90
or
All of these
- You: Has the Peacemaker Perk
- Attacker war score at least 80
or
All of these
primary_attacker ?= { save_temporary_scope_as = attacker is_ai = yes }- Defender war score at least 70
- You:
- Has “peace acceptance head scare” (a variable the game's script sets)
- var:peace_acceptance_head_scare: Is the attacker
Which character you can pick
- The war:
- Hostages cannot be exchanged to settle Great Holy Wars
- Hostages cannot be used to settle a …
Offer of Peace is an uncategorized character interaction in Crusader Kings III. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include Would Win (+1,000), Peacemaker (+10), The Secret History (+10) and 2 more. Patch 1.20.1.2, from game/common/character_interactions/00_war.txt.
Quick answers (1)
- How do I get the AI to accept Offer of Peace?
- Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: War Score, Would Win +1,000, Peacemaker +10, The Secret History +10, Cowed by predecessor's beheading +30, Stalwart Culture +10, The character you send's value as a Hostage and The other character's value as a Hostage.
Will they accept?
Accepted automatically when:
One of these
- The war: Defender war score at least 100
or
All of these
- The character you target: Is played by the AI
scope:war.casus_belli.primary_defender ?= scope:recipient
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 | -99 |
| War Score | defender_war_score |
Would Winwhen
| +1,000 |
Peacemakerwhen
| +10 |
The Secret Historywhen
| +10 |
Cowed by predecessor's beheadingwhen
| +30 |
Stalwart Culturewhen
| +10 |
| The character you send's value as a Hostage | war_actor_hostage_value |
| The other character's value as a Hostage | war_recipient_hostage_value |
Acceptance (ai_accept) (75 lines of game script)
base = -99
compare_modifier = {
target = scope:war
value = defender_war_score
desc = WARSCORE_MODIFIER
}
modifier = {
add = 1000
scope:war.casus_belli = {
primary_defender = scope:recipient
}
desc = WOULD_WIN_MODIFIER
}
modifier = {
scope:war.casus_belli = {
primary_defender = {
has_perk = peacemaker_perk
this != scope:recipient
}
}
add = peacemaker_value
desc = PEACEMAKER_PERK_MODIFIER
}
modifier = {
scope:war.casus_belli = {
primary_defender = {
dynasty ?= {
has_dynasty_perk = mpo_nomad_legacy_3
}
NOT = {
this = scope:recipient
}
}
}
add = 10
desc = NOMAD_LEGACY_PERK_MODIFIER
}
modifier = {
scope:war.casus_belli = {
primary_attacker = {
is_ai = yes
save_temporary_scope_as = attacker
}
primary_defender = {
has_variable = peace_acceptance_head_scare
var:peace_acceptance_head_scare = {
this = scope:attacker
}
}
}
add = 30
desc = COWED_BY_SEVERED_HEAD_MODIFIER
}
modifier = {
scope:war.casus_belli = {
primary_defender = {
culture = {
has_cultural_parameter = can_end_defensive_wars_earlier
}
this != scope:recipient
}
}
add = 10
desc = TRADITION_BONUS_DEFENSIVE_WARS
}
modifier = {
exists = scope:secondary_actor
add = war_actor_hostage_value
desc = WAR_OVERVIEW_HOSTAGE_OFFER_VALUE
}
modifier = {
exists = scope:secondary_recipient
add = war_recipient_hostage_value
desc = WAR_OVERVIEW_HOSTAGE_DEMAND_VALUE
}As written in game/common/character_interactions/00_war.txt.
What happens
If they accept
- The war:
casus_belli = { … }If
- Not: The war’s casus belli is Rescue House Members
Then
- Every war defender › Every prisoner:
- Where:
One of these
this = scope:war.primary_attackeror
The war’s primary attacker’s primary title:place_in_line_of_succession = { target = prev value <= 3 }
release_from_prison = yes
- Where:
- Every war attacker › Every prisoner:
- Where:
One of these
this = scope:war.primary_defenderor
The war’s primary defender’s primary title:place_in_line_of_succession = { target = prev value <= 3 }
release_from_prison = yes
- Where:
If
- The war:
- Not: The war’s casus belli is Great Holy War
- Not: The war’s casus belli is Great Holy War
None of these
- The war’s casus belli is Raid for Captives
- The war’s casus belli is Excommunication
- The war’s casus belli is Border Raid
- The war’s casus belli is Iberian Reclamation
- The war’s casus belli is Artifact
- The war’s casus belli is Holy Relic Reclamation
- The war’s casus belli is Diarch Seizure
- The war’s casus belli is Remove Regent
- The war’s casus belli is Independence Faction
- The war’s casus belli is Liberty Faction
- The war’s casus belli is Rebellion
- The war’s casus belli is Claimant Faction
- The war’s casus belli is Depose
- The war’s casus belli is Rebellion
- The war’s casus belli is Independence War
- The war’s casus belli is Dissolution Faction
- The war’s casus belli is Invasion
- The war’s casus belli is Invasion
- The war’s casus belli is Invasion
- The war’s casus belli is Invasion
Then
If
- The character you target: Is landed
Then
- The character you send:
- If any relation › Every relation:
- The current guardian scope:
remove_relation_ward = scope:secondary_actorreturn_guardian_travel_effect = { GUARDIAN = scope:current_guardian_scope WARD = scope:secondary_actor }
- If never › The character you send:
return_ward_travel_effect = { }
- Otherwise:
guardian_remove_opinion_effect = { GUARDIAN = scope:current_guardian_scope WARD = scope:secondary_actor WARD_LIEGE = scope:secondary_actor.liege }
- The current guardian scope:
- Else, if any relation › Every relation:
- The character you send:
remove_relation_ward = scope:current_ward_scopereturn_guardian_travel_effect = { GUARDIAN = scope:secondary_actor WARD = scope:current_ward_scope }
If
always = yes
Then
- The current ward scope:
return_ward_travel_effect = { }
Otherwise
guardian_remove_opinion_effect = { GUARDIAN = scope:secondary_actor WARD = scope:current_ward_scope WARD_LIEGE = scope:current_ward_scope.liege }
- The character you send:
- The character you target:
take_hostage = scope:secondary_actor
If
One of these
All of these
exists = scope:actor.primary_titleexists = scope:recipient.primary_titlescope:recipient.primary_title.tier < scope:actor.primary_title.tier
or
All of these
exists = scope:actor.dynastyexists = scope:recipient.dynastyscope:recipient.dynasty.dynasty_prestige_level < scope:actor.dynasty.dynasty_prestige_level
Then
If
- The target’s faith:
faith_hostility_level = { target = scope:actor.faith value >= faith_hostile_level }
Then
- They will earn Prestige, Renown, and Piety
- ⟨faith⟩ consider ⟨faith⟩ Faith …
If
bp2_warden_dynasty_renown_lower_trigger = { WARDEN = scope:recipient HOME_COURT = scope:actor }
Then
- … has higher Level of Splendor than …
If
bp2_warden_title_tier_lower_trigger = { WARDEN = scope:recipient HOME_COURT = scope:actor }
Then
- … is higher Tier than …
Otherwise
- They will earn Prestige and Renown
If
bp2_warden_dynasty_renown_lower_trigger = { WARDEN = scope:recipient HOME_COURT = scope:actor }
Then
- … has higher Level of Splendor than …
If
bp2_warden_title_tier_lower_trigger = { WARDEN = scope:recipient HOME_COURT = scope:actor }
Then
- … is higher Tier than …
- The target’s faith:
Otherwise
- They will earn Prestige
- Sets out on a journey (a travel plan)
- If any relation › Every relation:
If
- You: Is landed
Then
- The other character:
- If any relation › Every relation:
- The current guardian scope:
remove_relation_ward = scope:secondary_recipientreturn_guardian_travel_effect = { GUARDIAN = scope:current_guardian_scope WARD = scope:secondary_recipient }
- If never › The other character:
return_ward_travel_effect = { }
- Otherwise:
guardian_remove_opinion_effect = { GUARDIAN = scope:current_guardian_scope WARD = scope:secondary_recipient WARD_LIEGE = scope:secondary_recipient.liege }
- The current guardian scope:
- … (more in the script below)
- If any relation › Every relation:
- The war:
- … (more in the script below)
• 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) (63 lines of game script)
is_available = trigger_if = {
limit = {
is_ai = yes
}
is_at_war = yes
any_character_war = {
is_war_leader = root
OR = {
defender_war_score >= 100
AND = {
primary_defender ?= {
is_ai = yes
}
OR = {
attacker_war_score >= 90
AND = {
root = {
dynasty ?= {
has_dynasty_perk = mpo_nomad_legacy_3
}
}
attacker_war_score >= 80
}
}
root = {
has_perk = peacemaker_perk
}
}
AND = {
primary_defender ?= {
is_ai = yes
}
root = {
dynasty ?= {
has_dynasty_perk = mpo_nomad_legacy_3
}
}
OR = {
attacker_war_score >= 90
AND = {
root = {
has_perk = peacemaker_perk
}
attacker_war_score >= 80
}
}
}
AND = {
primary_attacker ?= {
save_temporary_scope_as = attacker
is_ai = yes
}
defender_war_score >= 70
root = {
has_variable = peace_acceptance_head_scare
var:peace_acceptance_head_scare ?= {
this = scope:attacker
}
}
}
}
}
}As written in game/common/character_interactions/00_war.txt.
Can be sent when (is_valid…) (3 lines of game script)
scope:war ?= {
has_valid_casus_belli = yes
}As written in game/common/character_interactions/00_war.txt.
Effects (on_send, on_accept, on_decline) (104 lines of game script)
on_accept = scope:war ?= {
casus_belli = {
primary_attacker = {
save_scope_as = attacker_loser
}
primary_defender = {
save_scope_as = defender_winner
set_signature_weapon_effect = yes
}
}
if = {
limit = {
NOT = {
using_cb = fp3_free_house_member_cb
}
}
release_prisoners_of_war_effect = yes
}
}
if = {
limit = {
scope:war ?= {
NOR = {
using_cb = undirected_great_holy_war
using_cb = directed_great_holy_war
}
bp2_hostage_exchange_invalid_cb_trigger = no
}
}
if = {
limit = {
exists = scope:secondary_actor
scope:recipient = {
is_landed = yes
}
}
hostage_depart_effect = {
HOSTAGE = scope:secondary_actor
WARDEN = scope:recipient
HOME_COURT = scope:actor
}
}
if = {
limit = {
exists = scope:secondary_recipient
scope:actor = {
is_landed = yes
}
}
hostage_depart_effect = {
HOSTAGE = scope:secondary_recipient
WARDEN = scope:actor
HOME_COURT = scope:recipient
}
}
}
hidden_effect = {
scope:attacker_loser = {
if = {
limit = {
any_vassal = {
this != scope:defender_winner
}
}
every_vassal = {
limit = {
this != scope:defender_winner
}
send_interface_toast = {
type = msg_liege_war_ended_defender_win
title = war_event.notification_liege_loss.t
left_icon = scope:attacker_loser
right_icon = scope:defender_winner
custom_tooltip = war_event.1905
}
}
}
}
scope:defender_winner = {
if = {
limit = {
any_vassal = {
this != scope:attacker_loser
}
}
every_vassal = {
limit = {
this != scope:attacker_loser
}
send_interface_toast = {
type = msg_liege_war_ended_defender_win
title = war_event.notification_liege_win.t
left_icon = scope:defender_winner
right_icon = scope:attacker_loser
custom_tooltip = war_event.1906
}
}
}
}
}
scope:war ?= {
end_war = defender
}
on_decline = As written in game/common/character_interactions/00_war.txt.
- Category
- Uncategorized actions
- In the menu
- no (opened from elsewhere)
- ID
end_war_attacker_defeat_interaction
Source: game/common/character_interactions/00_war.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.