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

Offer Guardianship

No costAccepted automatically in some cases; otherwise the AI weighs it

Offer the recipient a Guardian, making someone in their Court the Ward of the chosen adult

What you need

You

To send it

  • None of these

    • You: Is at war with the target
  • If

    a check the game hides

    Then

    • The other character:
      • Is available (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
      • You are already planning another Activity
      • You are currently busy in a Mandala succession
      • Is not imprisoned
      • is_hostage = no
      • … is traveling to become a Hostage
      • Already under negotiation to become someone's Ward
      • Already under negotiation to become someone's Guardian
      • … is traveling to become a Ward
      • If

        a check the game hides

        Then

        • var:ward_waiting_for_guardian: … is traveling to become a Guardian
  • If a check the game hides passes: the same again (4 lines)
    • The character you send:
      • Is not imprisoned
      • … is traveling to become a Guardian
      • … is traveling to become a Hostage
      • If

        a check the game hides

        Then

        • var:guardian_waiting_for_ward: … is traveling to become a Ward
  • If

    Then

To see it in the menu

  • If played by the AI:
    • Is not imprisoned
    • Is not incapable
  • If

    a check the game hides

    Then

    • The other character: Is a child
  • If

    Then

    • The character you target: Is a courtier of you

The character you target

To send it

  • is_hostage = no
  • … is traveling to become a Hostage
  • Already under negotiation to become someone's Ward
  • Already under negotiation to become someone's Guardian
  • Also needed: not imprisoned

To see it in the menu

  • Is a ruler
  • One of these

    • Cannot play landless rulers without having an Estate
    • or

      If

      • One of these

        • Is landed
        • or

          Government is a Theocratic-type Government

      Then

    • or

      All of these

      • Their liege:
        • All of these

          • Holds China
          • Government is Celestial
          • Their government has the government uses ministry budget flag
      • One of these

    • or

      Has “laamp transition” (a variable the game's script sets)

Which character you can pick

  • Is available (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
  • You are currently busy in a Mandala succession
  • Already under negotiation to become someone's Ward
  • Already under negotiation to become someone's Guardian
  • … is traveling to become a Hostage

Offer Guardianship is a friendly character interaction in Crusader Kings III. The character you target needs: Is not imprisoned, Already under negotiation to become someone's Ward and Already under negotiation to become someone's Guardian. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include Weak Hook used (+200), You … their Liege (+100), Guardian's Own Child (+100) and 31 more. Patch 1.20.1.2, from game/common/character_interactions/00_education_interactions.txt.

for a guide, post or blog
Quick answers (2)
What are the requirements for Offer Guardianship in CK3?
The character you target: Is not imprisoned, Already under negotiation to become someone's Ward and Already under negotiation to become someone's Guardian. (patch 1.20.1.2)
How do I get the AI to accept Offer Guardianship?
Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: Weak Hook used +200, You … their Liege +100, Guardian's Own Child +100, Foreign Court -75, Sending Child to Foreign Court -100, Sending Child to a Vassal's Court -50, Being Educated by Family +25, Converting culture -100, Converting faith -100, They is your Friend +50, They is your Rival -50, The character you send are the true father +100, … Opinion of …, Not of the same Culture -5, Not of the same Culture -10, Your Tolerance Towards my Faith, Guardian's Diplomacy Skill, Guardian's Martial Skill, Guardian's Stewardship Skill, Guardian's Intrigue Skill, Guardian's Learning Skill, Beacon of Learning +15, Rank Difference +30, Rank Difference +40, Rank Difference +50, Rank Difference +60, Rank Difference +70, Rank Difference -30, Rank Difference -40, Rank Difference -50, Rank Difference -60, Rank Difference -70, Allied +40, Intimidated by you +50, Terrified of you +100, Intimidated by you +10, Terrified of you +20, Your Court Grandeur +20, Your Court Grandeur +40, Won't give child to Feud House -200, Appropriate for Regent +50 and Wants to increase House Unity.

Will they accept?

Accepted automatically when:

  • They use their Hook on …

Otherwise the AI adds these up and accepts above zero. Reasons in italics are the script's, with no label in the game.

ReasonAmount
Base-50
Weak Hook used
when
  • The option “education hook” is chosen
  • Does not have a Strong Hook on the target
+200
You … their Liege
when
  • The character you target: Is a vassal (or below) of you
+100
Guardian's Own Child
when
  • The other character:
    • Is a child
    • Is a child of the character you send
+100
Foreign Court
when
  • None of these

    • The other character: Is a child of you
  • None of these

    • The other character: Is a child of the target
  • None of these

    • The character you target: Is a vassal (or below) of you
-75
Sending Child to Foreign Court
when
  • None of these

    • The other character: Is a child of you
  • None of these

    • The character you target: Is a vassal (or below) of you
    • The character you target: Is the liege (or above) of you
  • The target’s top liege is not your
  • The other character: Is a child of the target
-100
Sending Child to a Vassal's Court
when
  • None of these

    • The other character: Is a child of you
  • The character you target: Is the liege (or above) of you
  • The other character: Is a child of the target
-50
Being Educated by Family
when
  • The other character: Is family of the character you send
+25
Converting culture
when
  • The option “convert culture” is chosen
  • The other character’s culture is the target’s
-100
Converting faith
when
  • The option “convert faith” is chosen
  • The other character’s rite is the target’s
-100
They is your Friend
when
  • The character you target: Has you as friend
+50
They is your Rival
when
  • The character you target: Has you as rival
-50
The character you send are the true father
when
  • scope:recipient = scope:secondary_recipient.mother
  • One of these

    • You › Any known secret:
      • One of these

        • secret_type = secret_unmarried_illegitimate_child
        • or

          secret_type = secret_disputed_heritage
      • secret_target ?= scope:secondary_recipient
    • or

      The other character: Has the Trait: Disputed Heritage
    • or

      All of these

      • The other character: Has the Trait: Bastard
      • NOT = { exists = scope:secondary_recipient.father }
  • scope:secondary_recipient.real_father = scope:secondary_actor
+100
… Opinion of …varies
Not of the same Culture
when
  • Your culture:
    • has_same_culture_heritage = scope:recipient.culture
  • NOT = { has_same_culture_as = scope:recipient }
-5
Not of the same Culture
when
  • None of these

    • Your culture:
      • has_same_culture_heritage = scope:recipient.culture
-10
Your Tolerance Towards my Faith
when
  • The target’s faith is not your
varies
Guardian's Diplomacy Skill
when
  • step = 4
  • offset = -5
  • min = 0
  • The character you send: Diplomacy at least 11
diplomacy
Guardian's Martial Skill
when
  • step = 4
  • offset = -5
  • min = 0
  • The character you send: Martial at least 11
martial
Guardian's Stewardship Skill
when
  • step = 4
  • offset = -5
  • min = 0
  • The character you send: Stewardship at least 11
stewardship
Guardian's Intrigue Skill
when
  • step = 4
  • offset = -5
  • min = 0
  • The character you send: Intrigue at least 11
intrigue
Guardian's Learning Skill
when
  • step = 4
  • offset = -5
  • min = 0
  • The character you send: Learning at least 11
learning
Beacon of Learning
when
+15
Rank Difference
when
  • tier_difference = { target = scope:recipient value = 1 }
+30
Rank Difference
when
  • tier_difference = { target = scope:recipient value = 2 }
+40
Rank Difference
when
  • tier_difference = { target = scope:recipient value = 3 }
+50
Rank Difference
when
  • tier_difference = { target = scope:recipient value = 4 }
+60
Rank Difference
when
  • tier_difference = { target = scope:recipient value = 5 }
+70
Rank Difference
when
  • tier_difference = { target = scope:recipient value = -1 }
-30
Rank Difference
when
  • tier_difference = { target = scope:recipient value = -2 }
-40
Rank Difference
when
  • tier_difference = { target = scope:recipient value = -3 }
-50
Rank Difference
when
  • tier_difference = { target = scope:recipient value = -4 }
-60
Rank Difference
when
  • tier_difference = { target = scope:recipient value = -5 }
-70
Allied
when
  • Is allied to the target
+40
Intimidated by you
when
  • The character you target:
    • Is a vassal (or below) of you
    • has_dread_level_towards = { target = scope:puppet_or_actor level = 1 }
+50
Terrified of you
when
  • The character you target:
    • Is a vassal (or below) of you
    • has_dread_level_towards = { target = scope:puppet_or_actor level = 2 }
+100
Intimidated by you
when
  • The character you target:
    • Is not a vassal (or below) of you
    • has_dread_level_towards = { target = scope:puppet_or_actor level = 1 }
+10
Terrified of you
when
  • The character you target:
    • Is not a vassal (or below) of you
    • has_dread_level_towards = { target = scope:puppet_or_actor level = 2 }
+20
Your Court Grandeur
when
  • Have a Royal Court
  • Is the liege (or above) of the target
  • Court grandeur current level at least 7
  • Court grandeur current level less than 9
+20
Your Court Grandeur
when
  • Have a Royal Court
  • Is the liege (or above) of the target
  • Court grandeur current level at least 9
+40
Won't give child to Feud House
when
  • The target’s house:
    • scope:secondary_recipient.house ?= this
    • NOT = { root.house ?= this }
    • Any house relation:
      • has_house_relation_level = feud
      • Any relation house:
        • root.house ?= this
-200
Appropriate for Regent
when
  • scope:recipient.diarch ?= scope:puppet_or_actor
+50
Wants to increase House Unity
when
varies
Acceptance (ai_accept) (264 lines of game script)
base = -50
modifier = {
	scope:education_hook = yes
	add = 200
	scope:puppet_or_actor = {
		NOT = {
			has_strong_hook = scope:recipient
		}
	}
	desc = SCHEME_WEAK_HOOK_USED
}
modifier = {
	add = 100
	scope:recipient = {
		target_is_liege_or_above = scope:puppet_or_actor
	}
	desc = EDUCATE_CHILD_ACTOR_IS_MY_LIEGE
}
modifier = {
	add = 100
	scope:secondary_recipient ?= {
		is_adult = no
		is_child_of = scope:secondary_actor
	}
	desc = AI_GUARDIANS_OWN_CHILD
}
modifier = {
	add = -75
	scope:secondary_actor.court_owner = {
		NOR = {
			this = scope:recipient.court_owner
			this = scope:secondary_recipient.court_owner
		}
	}
	NOT = {
		scope:secondary_recipient ?= {
			is_child_of = scope:puppet_or_actor
		}
	}
	NOT = {
		scope:secondary_recipient ?= {
			is_child_of = scope:recipient
		}
	}
	NOT = {
		scope:recipient = {
			target_is_liege_or_above = scope:puppet_or_actor
		}
	}
	desc = AI_FOREIGN_COURT
}
modifier = {
	add = -100
	scope:secondary_actor.court_owner = {
		NOR = {
			this = scope:recipient.court_owner
			this = scope:secondary_recipient.court_owner
		}
	}
	NOT = {
		scope:secondary_recipient ?= {
			is_child_of = scope:puppet_or_actor
		}
	}
	scope:secondary_recipient ?= {
		is_child_of = scope:recipient
	}
	NOR = {
		scope:recipient = {
			target_is_liege_or_above = scope:puppet_or_actor
		}
		scope:recipient = {
			target_is_vassal_or_below = scope:puppet_or_actor
		}
	}
	scope:recipient.top_liege != scope:puppet_or_actor.top_liege
	desc = AI_CHILD_TO_FOREIGN_COURT
}
modifier = {
	add = -50
	scope:secondary_actor.court_owner = {
		NOR = {
			this = scope:recipient.court_owner
			this = scope:secondary_recipient.court_owner
		}
	}
	NOT = {
		scope:secondary_recipient ?= {
			is_child_of = scope:puppet_or_actor
		}
	}
	scope:secondary_recipient ?= {
		is_child_of = scope:recipient
	}
	scope:recipient = {
		target_is_vassal_or_below = scope:puppet_or_actor
	}
	desc = AI_CHILD_TO_VASSAL_COURT
}
modifier = {
	add = 25
	scope:secondary_recipient ?= {
		is_close_or_extended_family_of = scope:secondary_actor
	}
	desc = AI_CHILD_EDUCATED_BY_FAMILY
}
modifier = {
	add = -100
	scope:convert_culture = yes
	scope:secondary_recipient.culture = scope:recipient.culture
	desc = AI_CONVERT_CULTURE
}
modifier = {
	add = -100
	scope:convert_faith = yes
	scope:secondary_recipient.rite = scope:recipient.rite
	desc = AI_CONVERT_FAITH
}
modifier = {
	add = 50
	scope:recipient = {
		has_relation_friend = scope:puppet_or_actor
	}
	desc = AI_YOUR_FRIEND
}
modifier = {
	add = -50
	scope:recipient = {
		has_relation_rival = scope:puppet_or_actor
	}
	desc = AI_YOUR_RIVAL
}
modifier = {
	add = 100
	exists = scope:secondary_recipient.mother
	scope:recipient = scope:secondary_recipient.mother
	OR = {
		scope:puppet_or_actor = {
			any_known_secret = {
				OR = {
					secret_type = secret_unmarried_illegitimate_child
					secret_type = secret_disputed_heritage
				}
				secret_target ?= scope:secondary_recipient
			}
		}
		scope:secondary_recipient = {
			has_trait = disputed_heritage
		}
		AND = {
			scope:secondary_recipient = {
				has_trait = bastard
			}
			NOT = {
				exists = scope:secondary_recipient.father
			}
		}
	}
	exists = scope:secondary_recipient.real_father
	scope:secondary_recipient.real_father = scope:secondary_actor
	desc = AI_YOU_ARE_THE_FATHER
}
opinion_modifier = {
	opinion_target = scope:puppet_or_actor
	who = scope:recipient
	multiplier = 1
	desc = AI_OPINION_REASON
}
modifier = {
	add = -5
	trigger = {
		scope:puppet_or_actor = {
			this = scope:secondary_actor
			culture = {
				has_same_culture_heritage = scope:recipient.culture
			}
			NOT = {
				has_same_culture_as = scope:recipient
			}
		}
	}
	desc = AI_NOT_CULTURE
}
modifier = {
	add = -10
	trigger = {
		scope:puppet_or_actor = {
			this = scope:secondary_actor
			NOT = {
				culture = {
					has_same_culture_heritage = scope:recipient.culture
				}
			}
		}
	}
	desc = AI_NOT_CULTURE
}
modifier = {
	add = {
		value = -5
		if = {
			limit = {
				scope:recipient.faith = {
					faith_hostility_level = {
						target = scope:puppet_or_actor.faith
						value >= faith_hostile_level
					}
				}
			}
			subtract = 5
		}
		if = {
			limit = {
				scope:recipient.faith = {
					faith_hostility_level = {
						target = scope:puppet_or_actor.faith
						value >= faith_evil_level
					}
				}
			}
			subtract = 10
		}
	}
	trigger = {
		scope:recipient.faith != scope:puppet_or_actor.faith
	}
	desc = AI_RELIGION
}
compare_modifier = {
	trigger = {
		scope:secondary_actor = {
			diplomacy >= 11
		}
	}
	target = scope:secondary_actor
	value = diplomacy
	step = 4
	multiplier = 0.75
	offset = -5
	min = 0
	desc = AI_GUARDIAN_SKILL_DIPLOMACY
}
compare_modifier = {
	trigger = {
		scope:secondary_actor = {
			martial >= 11
		}
	}
	target = scope:secondary_actor
	value = martial
	step = 4
	multiplier = 0.75
	offset = -5
	min = 0
	desc = AI_GUARDIAN_SKILL_MARTIAL
}
compare_modifier = {
	trigger = {
		scope:secondary_actor = {
			stewardship >= 11
		}
	}
	target = sc
# … (cut here; the rest is in the file)

As written in game/common/character_interactions/00_education_interactions.txt.

What happens

If they accept

  • If

    • The option “education hook” is chosen
    • Has a usable Hook on the target

    Then

    • Use a Hook on the target
  • If

    • scope:ward.age >= 15

    Then

    • … will soon be an adult
  • The guardian:
    • set_relation_ward = scope:ward
  • The ward:
  • The ward › If any relation:
    • The guardian to remove:
      • remove_relation_ward = scope:ward
      • return_guardian_travel_effect = { GUARDIAN = scope:guardian_to_remove WARD = scope:ward }
    • If never › The ward:
      • return_ward_travel_effect = { }
    • Otherwise:
      • guardian_remove_opinion_effect = { GUARDIAN = scope:guardian_to_remove WARD = scope:ward WARD_LIEGE = scope:ward.liege }
  • If

    • One of these

      • scope:ward = scope:guardian.host
      • or

        scope:guardian = scope:ward.host
      • or

        The ward’s host is the guardian’s
      • or

        All of these

        • The ward:
          • is_landed_or_landless_administrative_or_theocratic = { }
        • The guardian:
          • is_landed_or_landless_administrative_or_theocratic = { }

    Then

    • The guardian › If played by the AI:
      • If

        • The ward liege:
          • player_heir = scope:ward
        • Is a direct vassal of the ward liege
        • Is a ruler
        • has_vassal_stance = parochial

        Then

        Else if

        • The ward liege:
          • player_heir = scope:ward

        Then

        • Opinion: Guardian of Your Heir

        Else if

        • The ward liege: Is close family of the ward
        • Is a direct vassal of the ward liege
        • Is a ruler
        • has_vassal_stance = parochial

        Then

        • Opinion: Parochial Guardian of Your Relative

        Else if

        • The ward liege: Is close family of the ward

        Then

        • Opinion: Guardian of Your Relative
      • If

        • Their liege: Is played by the AI
        • Is not a ruler
        • Is not a direct vassal of the ward liege

        Then

        • Their liege:
          • If

            • The ward liege:
              • player_heir = scope:ward
            • Is a direct vassal of the ward liege
            • Is a ruler
            • has_vassal_stance = parochial

            Then

            Else if

            • The ward liege:
              • player_heir = scope:ward

            Then

            • Opinion: Guardian of Your Heir

            Else if

            • The ward liege: Is close family of the ward
            • … (more in the script below)
          • … (more in the script below)
    • … (more in the script below)
  • … (more in the script below)

If they refuse

  • If

    • None of these

      • You: Has the opinion “Declined Guardianship” of the target

    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

      • Yes
      • 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 = { … }
  • Event char_interaction.0081
  • Opinion: Declined Guardianship (-15)

Options when sending

  • Convert CultureAttempt to convert the character you send to the other character's Culture (…).
  • Convert RiteAttempt to convert the character you send to the other character's Rite (…).
  • Send to University
  • Use a Hook

Events it fires: char_interaction.0080, char_interaction.0078, char_interaction.0079, char_interaction.0081

• 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) (29 lines of game script)
is_available = trigger_if = {
	limit = {
		is_ai = yes
	}
	is_imprisoned = no
	is_incapable = no
}
is_shown = scope:recipient = {
	this != scope:puppet_or_actor
	is_playable_character = yes
}
trigger_if = {
	limit = {
		exists = scope:secondary_recipient
	}
	scope:secondary_recipient = {
		is_adult = no
	}
}
trigger_if = {
	limit = {
		scope:puppet_or_actor = {
			has_government = landless_adventurer_government
		}
	}
	scope:recipient = {
		is_courtier_of = scope:puppet_or_actor
	}
}

As written in game/common/character_interactions/00_education_interactions.txt.

Can be sent when (is_valid…) (118 lines of game script)
custom_description = {
	text = character_to_educate_exists
	object = scope:recipient
	scope:recipient = {
		OR = {
			any_courtier = {
				is_adult = no
			}
			AND = {
				is_adult = no
			}
		}
	}
}
custom_description = {
	text = character_to_guard_exists
	subject = scope:recipient
	scope:recipient = {
		OR = {
			any_courtier = {
				is_adult = yes
				num_of_relation_ward < 2
			}
			AND = {
				is_adult = yes
				num_of_relation_ward < 2
			}
		}
	}
}
NOT = {
	scope:puppet_or_actor = {
		is_at_war_with = scope:recipient
	}
}
scope:recipient = {
	is_imprisoned = no
	bp2_valid_for_standard_interactions_trigger = yes
}
trigger_if = {
	limit = {
		exists = scope:secondary_recipient
	}
	scope:secondary_recipient = {
		is_available = yes
		is_imprisoned = no
		bp2_valid_for_standard_interactions_trigger = yes
		custom_tooltip = {
			text = ward_travelling_tt
			NOT = {
				exists = var:ward_travelling_to_guardian
			}
		}
		custom_tooltip = {
			text = hostage_travelling_tt
			NOT = {
				exists = var:hostage_travelling_to_warden
			}
		}
		trigger_if = {
			limit = {
				exists = var:ward_waiting_for_guardian
			}
			var:ward_waiting_for_guardian = {
				custom_tooltip = {
					text = guardian_travelling_tt
					NOT = {
						exists = scope:secondary_recipient.var:ward_waiting_for_guardian
					}
				}
			}
		}
	}
}
trigger_if = {
	limit = {
		exists = scope:secondary_actor
	}
	scope:secondary_actor = {
		is_imprisoned = no
		custom_tooltip = {
			text = guardian_travelling_tt
			NOT = {
				exists = var:guardian_travelling_to_ward
			}
		}
		custom_tooltip = {
			text = hostage_travelling_tt
			NOT = {
				exists = var:hostage_travelling_to_warden
			}
		}
		trigger_if = {
			limit = {
				exists = var:guardian_waiting_for_ward
			}
			var:guardian_waiting_for_ward = {
				custom_tooltip = {
					text = ward_travelling_tt
					NOT = {
						exists = scope:secondary_actor.var:guardian_waiting_for_ward
					}
				}
			}
		}
	}
}
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/00_education_interactions.txt.

Effects (on_send, on_accept, on_decline) (137 lines of game script)
on_send = scope:secondary_recipient = {
	add_character_flag = {
		flag = under_offer_as_ward_flag
		months = 1
	}
}
scope:secondary_actor = {
	add_character_flag = {
		flag = under_offer_as_guardian_flag
		months = 1
	}
}
on_accept = scope:secondary_actor = {
	save_scope_as = guardian
}
scope:puppet_or_actor = {
	save_scope_as = guardian_liege
}
scope:secondary_recipient = {
	save_scope_as = ward
}
scope:recipient = {
	save_scope_as = ward_liege
}
scope:puppet_or_actor = {
	if = {
		limit = {
			scope:education_hook ?= yes
			has_usable_hook = scope:recipient
		}
		use_hook = scope:recipient
	}
}
if = {
	limit = {
		scope:ward.age >= 15
	}
	custom_description_no_bullet = {
		text = ward_nearing_adulthood_tt
		object = scope:ward
	}
}
show_as_tooltip = {
	scope:guardian = {
		set_relation_ward = scope:ward
	}
	educate_child_interaction_effect = yes
}
if = {
	limit = {
		scope:puppet_or_actor = {
			is_ai = no
		}
	}
	scope:ward = {
		add_character_flag = player_educated
	}
}
if = {
	limit = {
		scope:guardian = {
			num_of_relation_ward < 2
		}
	}
	save_scope_value_as = {
		name = offer_guardianship_interaction
		value = yes
	}
	scope:puppet_or_actor = {
		if = {
			limit = {
				this != scope:recipient
			}
			trigger_event = char_interaction.0080
		}
	}
}
else = {
	scope:recipient = {
		trigger_event = char_interaction.0078
	}
	scope:puppet_or_actor = {
		trigger_event = char_interaction.0079
	}
}
add_clan_unity_interaction_effect = {
	CHARACTER = scope:puppet_or_actor
	TARGET = scope:recipient
	VALUE = miniscule_unity_gain
	DESC = clan_unity_guardianship.desc
	REVERSE_NON_HOUSE_TARGET = yes
}
accolade_ward_education_notification_effect = yes
on_decline = if = {
	limit = {
		NOT = {
			scope:puppet_or_actor = {
				has_opinion_modifier = {
					target = scope:recipient
					modifier = declined_guardianship_opinion
				}
			}
		}
	}
	add_clan_unity_interaction_effect = {
		CHARACTER = scope:puppet_or_actor
		TARGET = scope:recipient
		VALUE = miniscule_unity_loss
		DESC = clan_unity_guardianship_decline.desc
		REVERSE_NON_HOUSE_TARGET = yes
	}
}
scope:puppet_or_actor = {
	trigger_event = char_interaction.0081
	add_opinion = {
		modifier = declined_guardianship_opinion
		target = scope:recipient
		opinion = -15
	}
}
scope:recipient = {
	if = {
		limit = {
			is_ai = no
		}
		add_character_flag = {
			flag = ai_guardianship_ask_cooldown
			years = 5
		}
	}
}
scope:secondary_recipient = {
	remove_character_flag = under_offer_as_ward_flag
}
scope:secondary_actor = {
	remove_character_flag = under_offer_as_guardian_flag
}

As written in game/common/character_interactions/00_education_interactions.txt.

Category
Friendly actions
In the menu
under More…
ID
offer_guardianship_interaction

Source: game/common/character_interactions/00_education_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?