Interaction · Friendly actions
Swear Oath of True Friendship
Suggest that the recipient and you become Best Friends
What you need
You
To send it
- You're already the best of friends!
If
None of these
- You: Has the target as best friend
Then
- You already have a best friend!
If
None of these
- The character you target: Has you as best friend
Then
- … already has a best friend!
Also needed: available (an adult, not in an army, not imprisoned, not incapable) · none of the traits Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux · not busy in an Activity · not planning another Activity
To see it in the menu
- Your culture: The Culture has the May ask Friends to become Best Friends Tradition
- If played by the AI: Is not imprisoned
- Has the target as friend
The character you target
Also needed: available (an adult, not in an army, not imprisoned, not incapable) · none of the traits Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux · not busy in an Activity · not planning another Activity
Swear Oath of True Friendship is a friendly character interaction in Crusader Kings III. You need: Is available (an adult, not in an army, not imprisoned, not incapable), Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux, You are currently busy … and 2 more. The character you target needs: Is available (an adult, not in an army, not imprisoned, not incapable), Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux, Busy participating in an Activity and 1 more. The AI weighs it (the answer is partly random). Reasons the AI weighs include Shy is nervous about becoming Best Friends (-5), Arbitrary is wary of becoming Best Friends (-30), Gregarious approves of becoming Best Friends (+10) and 9 more. Patch 1.20.1.2, from game/common/character_interactions/03_fp2_interactions.txt.
Quick answers (2)
- What are the requirements for Swear Oath of True Friendship in CK3?
- You: Is available (an adult, not in an army, not imprisoned, not incapable), Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux, You are currently busy …, You are already planning another Activity and You're already the best of friends!. The character you target: Is available (an adult, not in an army, not imprisoned, not incapable), Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux, Busy participating in an Activity and You are already planning another Activity. (patch 1.20.1.2)
- How do I get the AI to accept Swear Oath of True Friendship?
- The AI weighs it (the answer is partly random). Its reasons: … Opinion of …, Shy is nervous about becoming Best Friends -5, Arbitrary is wary of becoming Best Friends -30, Gregarious approves of becoming Best Friends +10, Just approves of becoming Best Friends +30, Rank Difference +75, Rank Difference +50, Rank Difference +25, Rank Difference -100, Rank Difference -75, Rank Difference -50, The recipient has the Foreign Affairs Focus +25 and … Culture does not understand the true meaning of friendship -75.
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 |
| … Opinion of … | varies |
| Their personality (AI values: sociability (scripted), honor (scripted)) | varies |
| Shy is nervous about becoming Best Friends | -5 |
| Arbitrary is wary of becoming Best Friends | -30 |
Gregarious approves of becoming Best Friendswhen
| +10 |
| Just approves of becoming Best Friends | +30 |
Rank Differencewhen
| +75 |
Rank Differencewhen
| +50 |
Rank Differencewhen
| +25 |
Rank Differencewhen
| -100 |
Rank Differencewhen
| -75 |
Rank Differencewhen
| -50 |
The recipient has the Foreign Affairs Focuswhen
| +25 |
… Culture does not understand the true meaning of friendshipwhen
| -75 |
Acceptance (ai_accept) (11 lines of game script)
base = 0
fp2_ritual_best_friendship_interactions_ai_accept_modifier = yes
modifier = {
add = -75
NOT = {
culture = {
has_cultural_parameter = may_propose_best_friendship
}
}
desc = PROPOSE_BEST_FRIEND_OPINION_LACKING_CULTURAL_PARAMETER
}As written in game/common/character_interactions/03_fp2_interactions.txt.
What happens
If they accept
- Gains a Best Friend
- The target gains the opinion “Friendly” (+50) of them
If
NOT = { has_hook_of_type = { target = scope:recipient type = ritual_best_friend_hook } }can_add_hook = { target = scope:recipient type = ritual_best_friend_hook }
Then
- Gain a Best Friend on the target
- The character you target:
- Gains a Best Friend
- You gains the opinion “Friendly” (+50) of them
If
NOT = { has_hook_of_type = { target = scope:actor type = ritual_best_friend_hook } }can_add_hook = { target = scope:actor type = ritual_best_friend_hook }
Then
- Gain a Best Friend on you
If
Then
- Your house:
add_unity_value = { … }
- Your house:
If they refuse
• 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) (12 lines of game script)
is_available = culture ?= {
has_cultural_parameter = may_propose_best_friendship
}
trigger_if = {
limit = {
is_ai = yes
}
is_imprisoned = no
}
is_shown = scope:actor = {
has_relation_friend = scope:recipient
}As written in game/common/character_interactions/03_fp2_interactions.txt.
Can be sent when (is_valid…) (44 lines of game script)
scope:actor = {
is_available_adult = yes
}
scope:recipient = {
is_available_adult = yes
}
custom_tooltip = {
text = propose_best_friendship_interaction.tt.already_best_friends
scope:actor = {
NOT = {
has_relation_best_friend = scope:recipient
}
}
}
trigger_if = {
limit = {
NOT = {
scope:actor = {
has_relation_best_friend = scope:recipient
}
}
}
custom_tooltip = {
text = propose_best_friendship_interaction.tt.actor_has_best_friend
scope:actor = {
num_of_relation_best_friend = 0
}
}
}
trigger_if = {
limit = {
NOT = {
scope:recipient = {
has_relation_best_friend = scope:actor
}
}
}
custom_tooltip = {
text = propose_best_friendship_interaction.tt.recipient_has_best_friend
scope:recipient = {
num_of_relation_best_friend = 0
}
}
}As written in game/common/character_interactions/03_fp2_interactions.txt.
Effects (on_send, on_accept, on_decline) (130 lines of game script)
on_accept = scope:actor = {
send_interface_toast = {
type = event_toast_effect_good
title = propose_best_friendship_interaction.accept.actor.tt
left_icon = scope:recipient
show_as_tooltip = {
set_relation_best_friend = scope:recipient
}
reverse_add_opinion = {
target = scope:recipient
modifier = friendliness_opinion
opinion = 50
}
if = {
limit = {
NOT = {
has_hook_of_type = {
target = scope:recipient
type = ritual_best_friend_hook
}
}
can_add_hook = {
target = scope:recipient
type = ritual_best_friend_hook
}
}
add_hook = {
type = ritual_best_friend_hook
target = scope:recipient
}
}
}
}
scope:recipient = {
send_interface_toast = {
type = event_toast_effect_neutral
title = propose_best_friendship_interaction.accept.recipient.tt
left_icon = scope:actor
show_as_tooltip = {
set_relation_best_friend = scope:actor
}
reverse_add_opinion = {
target = scope:actor
modifier = friendliness_opinion
opinion = 50
}
if = {
limit = {
NOT = {
has_hook_of_type = {
target = scope:actor
type = ritual_best_friend_hook
}
}
can_add_hook = {
target = scope:actor
type = ritual_best_friend_hook
}
}
add_hook = {
type = ritual_best_friend_hook
target = scope:actor
}
}
}
}
hidden_effect = {
scope:actor = {
if = {
limit = {
NOT = {
has_relation_best_friend = scope:recipient
}
}
set_relation_best_friend = {
reason = best_friend_sworn
copy_reason = friend
target = scope:recipient
}
}
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_gain
DESC = clan_unity_oath_of_true_friendship.desc
REVERSE_NON_HOUSE_TARGET = no
}
on_decline = scope:actor = {
send_interface_toast = {
type = event_toast_effect_bad
title = propose_best_friendship_interaction.decline.actor.tt
left_icon = scope:recipient
add_stress = medium_stress_gain
}
}
scope:recipient = {
send_interface_toast = {
type = event_toast_effect_neutral
title = propose_best_friendship_interaction.decline.recipient.tt
left_icon = scope:actor
scope:actor = {
add_opinion = {
target = scope:recipient
modifier = hurt_opinion
opinion = -50
}
}
}
}
hidden_effect = {
scope:recipient = {
if = {
limit = {
NOT = {
has_relation_potential_rival = scope:actor
}
}
set_relation_potential_rival = scope:actor
}
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_loss
DESC = clan_unity_declined_true_friendship.desc
REVERSE_NON_HOUSE_TARGET = no
}As written in game/common/character_interactions/03_fp2_interactions.txt.
- Category
- Friendly actions
- Cooldown
- 5 years
- Again on the same character
- after 10 years
- In the menu
- main list
- ID
propose_best_friendship_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.