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

Educate Child

No costAccepted automatically

Appoint a Ward and a Guardian in your Court

What you need

You

To send it

  • If

    a check the game hides

    Then

    • The character you send:
      • Is not imprisoned
      • Is not incapable
      • Is at home
      • Num of relation ward less than 2
  • If

    a check the game hides

    Then

    • The other character:
      • Is not imprisoned
      • If

        Then

        • Is not traveling
      • Is not incapable
      • Is at home
      • If

        • is_hostage = yes

        Then

        • Is a courtier of you
  • If a check the game hides passes: the same again (3 lines)
    • The other character:
      • … is traveling to become a Ward
      • … is traveling to become a Hostage
      • 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 (3 lines)
    • The character you send:
      • … 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:
    • One of these

      • All of these

        • Is a child
        • Is available (not imprisoned, not incapable)
        • num_of_relation_guardian = 0
      • or

        Any courtier:
        • Is a child
        • Is close family of you
        • num_of_relation_guardian = 0
        • Is available (not imprisoned, not incapable)
  • If

    a check the game hides

    Then

    • The character you send:
      • Is an Adult
      • Num of relation ward less than 2
  • If a check the game hides passes: the same again (2 lines)
    • The other character:
      • Is a child
      • num_of_relation_guardian = 0

The character you target

To send it

  • Is not incapable
  • If

    a check the game hides

    Then

    • Is a courtier of you
  • Also needed: not imprisoned

To see it in the menu

  • is_in_the_same_court_as = scope:puppet_or_actor

Which character you can pick

  • If

    • One of these

      • All of these

        • Is not a ruler
        • Your liege: Their government is not Adventurer
      • or

        All of these

    Then

    • 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

    Otherwise

    • Is available (not imprisoned, not incapable, not in an army)
    • 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

Educate Child is a friendly character interaction in Crusader Kings III. The character you target needs: Is not imprisoned and Is not incapable. Accepted automatically. 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 Educate Child in CK3?
The character you target: Is not imprisoned and Is not incapable. (patch 1.20.1.2)
Will the AI accept Educate Child?
Yes: it is accepted automatically.

Will they accept?

The other character has no choice: the game accepts it automatically.

Acceptance (ai_accept) (1 line of game script)
base = 100

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

What happens

Effects

  • If

    • scope:ward.age >= 15

    Then

    • … will soon be an adult
  • The guardian liege:
    • 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
              • Is a direct vassal of the ward liege
              • Is a ruler
              • has_vassal_stance = parochial

              Then

              • Opinion: Parochial Guardian of Your Relative

              Else if

              • … (more in the script below)
      • … (more in the script below)
    • … (more in the script below)
  • … (more in the script below)

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 UniversityAccess to University at the recipient's Court allows a Ward to get a better Education Trait
  • Use a Hook

• 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) (39 lines of game script)
is_available = trigger_if = {
	limit = {
		is_ai = yes
	}
	OR = {
		AND = {
			is_adult = no
			is_physically_able = yes
			num_of_relation_guardian = 0
		}
		any_courtier = {
			is_adult = no
			is_close_family_of = root
			num_of_relation_guardian = 0
			is_physically_able = yes
		}
	}
}
is_shown = scope:recipient = {
	is_in_the_same_court_as = scope:puppet_or_actor
}
trigger_if = {
	limit = {
		exists = scope:secondary_actor
	}
	scope:secondary_actor = {
		is_adult = yes
		num_of_relation_ward < 2
	}
}
trigger_if = {
	limit = {
		exists = scope:secondary_recipient
	}
	scope:secondary_recipient = {
		is_adult = no
		num_of_relation_guardian = 0
	}
}

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

Can be sent when (is_valid…) (163 lines of game script)
scope:recipient = {
	is_imprisoned = no
	is_incapable = no
	trigger_if = {
		limit = {
			this != scope:puppet_or_actor
		}
		is_courtier_of = scope:puppet_or_actor
	}
}
trigger_if = {
	limit = {
		exists = scope:secondary_actor
	}
	scope:secondary_actor = {
		is_imprisoned = no
		is_incapable = no
		is_at_home = yes
		num_of_relation_ward < 2
	}
}
trigger_if = {
	limit = {
		exists = scope:secondary_recipient
	}
	scope:secondary_recipient = {
		is_imprisoned = no
		trigger_if = {
			limit = {
				scope:puppet_or_actor = {
					is_landless_adventurer = no
				}
			}
			is_travelling = no
		}
		is_incapable = no
		is_at_home = yes
		NOT = {
			exists = var:hostage_travelling_to_warden
		}
		trigger_if = {
			limit = {
				is_hostage = yes
			}
			is_courtier_of = scope:puppet_or_actor
		}
	}
}
custom_description = {
	text = character_to_guard_exists
	subject = scope:puppet_or_actor
	scope:puppet_or_actor = {
		OR = {
			any_courtier = {
				is_adult = yes
				num_of_relation_ward < 2
				is_imprisoned = no
				is_incapable = no
			}
			AND = {
				is_adult = yes
				num_of_relation_ward < 2
				is_imprisoned = no
				is_incapable = no
			}
		}
	}
}
custom_description = {
	text = character_to_educate_exists
	object = scope:puppet_or_actor
	scope:puppet_or_actor = {
		OR = {
			any_courtier = {
				is_adult = no
				num_of_relation_guardian = 0
				is_imprisoned = no
				is_incapable = no
			}
			AND = {
				is_adult = no
				num_of_relation_guardian = 0
				is_imprisoned = no
				is_incapable = no
			}
		}
	}
}
trigger_if = {
	limit = {
		exists = scope:secondary_recipient
	}
	scope:secondary_recipient = {
		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 = {
		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 = {
						scope:secondary_actor.num_of_relation_ward >= 1
					}
				}
			}
		}
	}
}
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) (67 lines of game script)
on_accept = scope:secondary_recipient = {
	save_scope_as = ward
	scope:secondary_actor = {
		save_scope_as = guardian
	}
	scope:recipient = {
		save_scope_as = ward_liege
	}
	scope:puppet_or_actor = {
		save_scope_as = guardian_liege
	}
}
scope:puppet_or_actor = {
	if = {
		limit = {
			is_ai = no
		}
		scope:ward = {
			add_character_flag = player_educated
		}
	}
}
if = {
	limit = {
		scope:ward.age >= 15
	}
	custom_description_no_bullet = {
		text = ward_nearing_adulthood_tt
		object = scope:ward
	}
}
scope:guardian_liege = {
	send_interface_message = {
		type = event_childhood_neutral
		title = educate_child_interaction_notification
		left_icon = scope:guardian
		right_icon = scope:ward
		educate_child_interaction_effect = yes
		show_as_tooltip = {
			scope:ward = {
				if = {
					limit = {
						exists = var:ward_travelling_to_guardian
					}
					custom_tooltip = ward_departs_tt
				}
				else_if = {
					limit = {
						exists = scope:guardian.var:guardian_travelling_to_ward
					}
					scope:guardian = {
						custom_tooltip = guardian_departs_tt
					}
				}
				else = {
					set_relation_guardian = scope:guardian
				}
			}
		}
	}
}
show_as_tooltip = {
	scope:guardian = {
		set_relation_ward = scope:ward
	}
}
accolade_ward_education_notification_effect = yes

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

Category
Friendly actions
In the menu
main list
ID
educate_child_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?