CK3 DatabaseCrusader Kings III · 1.20.1.2 “Crozier” · unofficial
Silk & Silverout Tue, Nov 17What's free, what needs the DLC, price →

Interaction · Friendly actions

Reaffirm Oath of True Friendship

No costThe AI weighs it (the answer is partly random)

As the recipient is already your best friend, it is only logical that you swear an oath of mutual fealty

What you need

You

To send it

  • 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

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

Reaffirm 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 1 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.

for a guide, post or blog
Quick answers (2)
What are the requirements for Reaffirm 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 … and You are already planning another Activity. 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 Reaffirm 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 understands the true meaning of friendship +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.

ReasonAmount
Base0
… Opinion of …varies
Their personality (AI values: sociability (scripted), honor (scripted))varies
Shy is nervous about becoming Best Friends
when
-5
Arbitrary is wary of becoming Best Friends
when
-30
Gregarious approves of becoming Best Friends
when
+10
Just approves of becoming Best Friends
when
+30
Rank Difference
when
  • tier_difference = { target = scope:recipient value >= 4 }
+75
Rank Difference
when
  • tier_difference = { target = scope:recipient value = 3 }
+50
Rank Difference
when
  • tier_difference = { target = scope:recipient value = 2 }
+25
Rank Difference
when
  • tier_difference = { target = scope:recipient value = -2 }
-100
Rank Difference
when
  • tier_difference = { target = scope:recipient value = -3 }
-75
Rank Difference
when
  • tier_difference = { target = scope:recipient value <= -4 }
-50
The recipient has the Foreign Affairs Focus
when
  • The character you target:
    • has_focus = diplomacy_foreign_affairs_focus
+25
… Culture understands the true meaning of friendship
when
+50
Acceptance (ai_accept) (9 lines of game script)
base = 0
fp2_ritual_best_friendship_interactions_ai_accept_modifier = yes
modifier = {
	add = 50
	culture = {
		has_cultural_parameter = may_propose_best_friendship
	}
	desc = REAFFIRM_BEST_FRIEND_OPINION_HAS_CULTURAL_PARAMETER
}

As written in game/common/character_interactions/03_fp2_interactions.txt.

What happens

If they accept

  • The target gains the opinion “Friendly” (+25) of them
  • If

    Then

  • The character you target:
    • You gains the opinion “Friendly” (+25) of them
    • If

      Then

  • If

    • You: Government is Clan
    • The character you target: Government is Clan
    • Your house is the target’s
    • If

      • You are not the target

      Then

      • You are not the target

    Then

    • Your house:
      • add_unity_value = { … }

    Else if

    • No
    • You: Government is Clan
    • Your house: Has you as house head
    • One of these

      • All of these

        • exists = scope:recipient.house
        • Your house is not the target’s
      • or

        The character you target: Is Lowborn

    Then

    • Your house:
      • add_unity_value = { … }

If they refuse

  • remove_relation_best_friend = scope:recipient
  • The character you target:
    • remove_relation_best_friend = scope:actor
  • If

    • You: Government is Clan
    • The character you target: Government is Clan
    • Your house is the target’s
    • If

      • You are not the target

      Then

      • You are not the target

    Then

    • Your house:
      • add_unity_value = { … }

    Else if

    • No
    • You: Government is Clan
    • Your house: Has you as house head
    • One of these

      • All of these

        • exists = scope:recipient.house
        • Your house is not the target’s
      • or

        The character you target: Is Lowborn

    Then

    • Your house:
      • add_unity_value = { … }

• 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) (20 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_best_friend = scope:recipient
}
NOR = {
	scope:actor = {
		has_strong_hook = scope:recipient
	}
	scope:recipient = {
		has_strong_hook = scope:actor
	}
}

As written in game/common/character_interactions/03_fp2_interactions.txt.

Can be sent when (is_valid…) (6 lines of game script)
scope:actor = {
	is_available_adult = yes
}
scope:recipient = {
	is_available_adult = yes
}

As written in game/common/character_interactions/03_fp2_interactions.txt.

Effects (on_send, on_accept, on_decline) (90 lines of game script)
on_accept = scope:actor = {
	send_interface_toast = {
		type = event_toast_effect_good
		title = reaffirm_best_friendship_interaction.accept.actor.tt
		left_icon = scope:recipient
		reverse_add_opinion = {
			target = scope:recipient
			modifier = friendliness_opinion
			opinion = 25
		}
		if = {
			limit = {
				NOT = {
					has_strong_hook = scope:recipient
				}
			}
			add_hook = {
				type = ritual_best_friend_hook
				target = scope:recipient
			}
		}
	}
}
scope:recipient = {
	send_interface_toast = {
		type = event_toast_effect_neutral
		title = reaffirm_best_friendship_interaction.accept.recipient.tt
		left_icon = scope:actor
		reverse_add_opinion = {
			target = scope:actor
			modifier = friendliness_opinion
			opinion = 25
		}
		if = {
			limit = {
				NOT = {
					has_strong_hook = scope:actor
				}
			}
			add_hook = {
				type = ritual_best_friend_hook
				target = scope:actor
			}
		}
	}
}
add_clan_unity_interaction_effect = {
	CHARACTER = scope:actor
	TARGET = scope:recipient
	VALUE = minor_unity_gain
	DESC = clan_unity_friendship_is_magic.desc
	REVERSE_NON_HOUSE_TARGET = no
}
on_decline = scope:actor = {
	send_interface_toast = {
		type = event_toast_effect_bad
		title = reaffirm_best_friendship_interaction.decline.actor.tt
		left_icon = scope:recipient
		show_as_tooltip = {
			remove_relation_best_friend = scope:recipient
		}
	}
}
scope:recipient = {
	send_interface_toast = {
		type = event_toast_effect_neutral
		title = reaffirm_best_friendship_interaction.decline.recipient.tt
		left_icon = scope:actor
		remove_relation_best_friend = scope:actor
	}
}
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_friendship_is_not_magic.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
reaffirm_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.

Spotted a mistake on this page?