Interaction · Friendly actions
Offer Ward
Offer the recipient a Ward, making them, or someone in their Court, the Guardian of the chosen child
What you need
You
To send it
None of these
- You: Is at war with the target
To see it in the menu
- If played by the AI:
- Any courtier:
- Is a child
- Is a child of you
num_of_relation_guardian = 0- Is available (not imprisoned, not incapable)
- Any vassal:
primary_title.tier >= tier_county- Opinion of them at most -25
- Any courtier:
The character you target
To send it
Also needed: not imprisoned
To see it in the menu
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 Ward is a friendly character interaction in Crusader Kings III. The character you target needs: Is not imprisoned. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include Your own Child (+200), Educating you (+200), Your Courtier's Child (+200) and 17 more. Patch 1.20.1.2, from game/common/character_interactions/00_education_interactions.txt.
Quick answers (2)
- What are the requirements for Offer Ward in CK3?
- The character you target: Is not imprisoned. (patch 1.20.1.2)
- How do I get the AI to accept Offer Ward?
- Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: Your own Child +200, Educating you +200, Your Courtier's Child +200, Weak Hook used +100, You … their Liege +50, Their Child +100, Their Child +100, … Opinion of …, Not of the same Culture -10, Not of the same Culture -20, 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, Guardian's Diplomacy Skill, Guardian's Martial Skill, Guardian's Stewardship Skill, Guardian's Intrigue Skill, Guardian's Learning Skill, Rank Difference +20, Rank Difference +30, Rank Difference +40, Rank Difference +50, Rank Difference +60, Rank Difference -20, Rank Difference -30, Rank Difference -40, Rank Difference -50, Rank Difference -60, Intimidated by you, Terrified of you, Intimidated by you, Terrified of you, Responsibility as 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.
| Reason | Amount |
|---|---|
| Base | 0 |
Your own Childwhen
| +200 |
Educating youwhen
| +200 |
| Your Courtier's Child | +200 |
Weak Hook usedwhen
| +100 |
You … their Liegewhen
| +50 |
Their Childwhen
| +100 |
Their Childwhen
| +100 |
| … Opinion of … | varies |
Not of the same Culturewhen
| -10 |
Not of the same Culturewhen
| -20 |
Your Tolerance Towards my Faithwhen
| varies |
Guardian's Diplomacy Skillwhen
| diplomacy |
Guardian's Martial Skillwhen
| martial |
Guardian's Stewardship Skillwhen
| stewardship |
Guardian's Intrigue Skillwhen
| intrigue |
Guardian's Learning Skillwhen
| learning |
Guardian's Diplomacy Skillwhen
| diplomacy |
Guardian's Martial Skillwhen
| martial |
Guardian's Stewardship Skillwhen
| stewardship |
Guardian's Intrigue Skillwhen
| intrigue |
Guardian's Learning Skillwhen
| learning |
Rank Differencewhen
| +20 |
Rank Differencewhen
| +30 |
Rank Differencewhen
| +40 |
Rank Differencewhen
| +50 |
Rank Differencewhen
| +60 |
Rank Differencewhen
| -20 |
Rank Differencewhen
| -30 |
Rank Differencewhen
| -40 |
Rank Differencewhen
| -50 |
Rank Differencewhen
| -60 |
Intimidated by youwhen
| intimidated_reason_value |
Terrified of youwhen
| cowed_reason_value |
Intimidated by youwhen
| intimidated_external_reason_value |
Terrified of youwhen
| cowed_external_reason_value |
Responsibility as Regentwhen
| +50 |
Wants to increase House Unitywhen
| varies |
Acceptance (ai_accept) (277 lines of game script)
base = 0
modifier = {
add = 200
scope:secondary_actor = {
is_adult = no
is_child_of = scope:puppet_or_actor
}
desc = AI_YOUR_OWN_CHILD
}
modifier = {
add = 200
scope:secondary_actor = scope:puppet_or_actor
desc = AI_EDUCATE_YOU
}
modifier = {
add = 200
scope:secondary_actor = {
is_adult = no
NOT = {
is_child_of = scope:puppet_or_actor
}
is_courtier_of = scope:puppet_or_actor
}
scope:secondary_recipient ?= {
OR = {
is_of_major_or_minor_interest_trigger = {
CHARACTER = scope:puppet_or_actor
}
is_of_major_or_minor_interest_trigger = {
CHARACTER = scope:secondary_actor
}
highest_held_title_tier <= scope:puppet_or_actor.highest_held_title_tier
}
}
desc = AI_YOUR_COURTIER_CHILD
}
modifier = {
scope:education_hook = yes
add = 100
scope:puppet_or_actor = {
NOT = {
has_strong_hook = scope:recipient
}
}
desc = SCHEME_WEAK_HOOK_USED
}
modifier = {
add = 50
scope:recipient = {
target_is_liege_or_above = scope:puppet_or_actor
}
desc = EDUCATE_CHILD_ACTOR_IS_MY_LIEGE
}
modifier = {
add = 100
scope:secondary_actor = {
is_child_of = scope:recipient
is_adult = no
}
desc = AI_MY_CHILD
}
modifier = {
add = 100
exists = scope:secondary_recipient
scope:secondary_actor = {
is_adult = no
is_child_of = scope:secondary_recipient
}
desc = AI_MY_CHILD
}
opinion_modifier = {
opinion_target = scope:puppet_or_actor
who = scope:recipient
multiplier = 0.5
desc = AI_OPINION_REASON
}
modifier = {
add = -10
trigger = {
scope:secondary_actor = {
culture = {
has_same_culture_heritage = scope:recipient.culture
}
NOT = {
has_same_culture_as = scope:recipient
}
}
}
desc = AI_NOT_CULTURE
}
modifier = {
add = -20
trigger = {
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_recipient ?= {
diplomacy >= 10
}
scope:puppet_or_actor != scope:secondary_actor
}
target = scope:secondary_recipient
value = diplomacy
step = 4
multiplier = -0.5
offset = -2
max = 0
desc = AI_GUARDIAN_SKILL_DIPLOMACY
}
compare_modifier = {
trigger = {
scope:secondary_recipient ?= {
martial >= 10
}
scope:puppet_or_actor != scope:secondary_actor
}
target = scope:secondary_recipient
value = martial
step = 4
multiplier = -0.5
offset = -2
max = 0
desc = AI_GUARDIAN_SKILL_MARTIAL
}
compare_modifier = {
trigger = {
scope:secondary_recipient ?= {
stewardship >= 10
}
scope:puppet_or_actor != scope:secondary_actor
}
target = scope:secondary_recipient
value = stewardship
step = 4
multiplier = -0.5
offset = -2
max = 0
desc = AI_GUARDIAN_SKILL_STEWARDSHIP
}
compare_modifier = {
trigger = {
scope:secondary_recipient ?= {
intrigue >= 10
}
scope:puppet_or_actor != scope:secondary_actor
}
target = scope:secondary_recipient
value = intrigue
step = 4
multiplier = -0.5
offset = -2
max = 0
desc = AI_GUARDIAN_SKILL_INTRIGUE
}
compare_modifier = {
trigger = {
scope:secondary_recipient ?= {
learning >= 10
}
scope:puppet_or_actor != scope:secondary_actor
}
target = scope:secondary_recipient
value = learning
step = 4
multiplier = -0.5
offset = -2
max = 0
desc = AI_GUARDIAN_SKILL_LEARNING
}
compare_modifier = {
trigger = {
AND = {
scope:puppet_or_actor = scope:secondary_actor
scope:puppet_or_actor = {
diplomacy >= 11
}
}
}
target = scope:puppet_or_actor
value = diplomacy
step = 4
multiplier = 0.75
offset = -5
min = 0
desc = AI_GUARDIAN_SKILL_DIPLOMACY
}
compare_modifier = {
trigger = {
AND = {
scope:puppet_or_actor = scope:secondary_actor
scope:puppet_or_actor = {
martial >= 11
}
}
}
target = scope:puppet_or_actor
value = martial
step = 4
multiplier = 0.75
offset = -5
min = 0
desc = AI_GUARDIAN_SKILL_MARTIAL
}
compare_modifier = {
trigger = {
AND = {
scope:puppet_or_actor = scope:secondary_actor
scope:puppet_or_actor = {
stewardship >= 11
}
}
}
target = scope:puppet_or_actor
value = stewardship
step = 4
multiplier = 0.75
offset = -5
min = 0
desc = AI_GUARDIAN_SKILL_STEWARDSHIP
}
compare_modifier = {
trigger = {
AND = {
scope:puppet_or_actor = scope:secondary_actor
scope:puppet_or_actor = {
intrigue >= 11
}
}
}
target = scope:puppet_or_actor
value = intrigue
step = 4
multiplier = 0.75
offset = -5
min = 0
desc = AI_GUARDIAN_SKI
# … (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
scope:ward.age >= 15
Then
- … will soon be an adult
- The ward › If any relation:
- One random relation:
- You:
- The old guardian:
remove_relation_ward = scope:wardIf
is_foreign_court_guest = yesNone of these
host = liegeis_playable_character = { }- Any relation:
is_playable_character = { }this = scope:old_guardian.host
Then
return_to_court = yes
If
always = yes
Then
- The ward:
return_ward_travel_effect = { }
Otherwise
If
a check the game hides
Then
- The old guardian:
If
Then
remove_opinion = { modifier = guardian_of_heir_opinion target = scope:ward.liege }
Else if
- Has the opinion “Guardian of Your Relative”
None of these
- Any relation:
is_close_family_of = scope:ward.liege
- Any relation:
Then
remove_opinion = { modifier = guardian_of_relative_opinion target = scope:ward.liege }
If
Then
remove_opinion = { modifier = guardian_of_heir_parochial_opinion target = scope:ward.liege }
Else if
- Has the opinion “Parochial Guardian of Your Relative”
None of these
- Any relation:
is_close_family_of = scope:ward.liege
- Any relation:
Then
remove_opinion = { modifier = guardian_of_relative_parochial_opinion target = scope:ward.liege }
- The ward:
If
a check the game hides
Then
var:guardian_liege:If
Then
remove_opinion = { modifier = guardian_of_heir_opinion target = scope:ward.liege }
Else if
- Has the opinion “Guardian of Your Relative”
None of these
- Any relation:
is_close_family_of = scope:ward.liege
- Any relation:
Then
remove_opinion = { modifier = guardian_of_relative_opinion target = scope:ward.liege }
If
Then
remove_opinion = { modifier = guardian_of_heir_parochial_opinion target = scope:ward.liege }
Else if
- Has the opinion “Parochial Guardian of Your Relative”
None of these
- Any relation:
is_close_family_of = scope:ward.liege
- Any relation:
Then
remove_opinion = { modifier = guardian_of_relative_parochial_opinion target = scope:ward.liege }
- The old guardian:
If
scope:ward.var:character_requested_as_educator = scope:old_guardianscope:ward.var:character_making_education_request:One of these
- Is the old guardian
or
The old guardian:is_courtier_of = prev
Then
- scope:ward.var:character_making_education_request: Opinion: Insulted (-15)
- The old guardian:
- One random relation:
- The guardian:
set_relation_ward = scope:ward
- The ward:
If
- Never
One of these
- The character you target:
One of these
- Any realm province:
is_higher_studies_location = { }
or
Any realm county: The county has the modifier “Pandidakterion”
- Any realm province:
or
You:- Is the character you send
- Any realm province:
is_higher_studies_location = { }
- The character you target:
Then
- You:
remove_short_term_gold = { … }
If
- The university:
is_province_valid_confucian_education_trigger = { }
None of these
- The guardian: Has the Trait: Confucian Education
- The university:
- … (more in the script below)
- … (more in the script below)
- … (more in the script below)
If they refuse
- Event char_interaction.0081
- Opinion: Declined Ward
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
Events it fires: char_interaction.0090, char_interaction.0080, 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) (45 lines of game script)
is_available = trigger_if = {
limit = {
is_ai = yes
}
any_courtier = {
is_adult = no
is_child_of = root
num_of_relation_guardian = 0
is_physically_able = yes
}
any_vassal = {
primary_title.tier >= tier_county
opinion = {
target = root
value <= -25
}
}
}
is_shown = scope:recipient = {
this != scope:puppet_or_actor
is_playable_character = yes
is_alive = yes
}
trigger_if = {
limit = {
exists = scope:secondary_recipient
}
scope:secondary_recipient = {
is_adult = yes
NOR = {
is_theocratic_lessee = yes
is_consort_of = scope:recipient
}
}
}
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…) (147 lines of game script)
custom_description = {
text = character_to_guard_exists
subject = scope:recipient
scope:recipient = {
OR = {
AND = {
is_adult = yes
num_of_relation_ward < 2
}
any_courtier = {
is_adult = yes
num_of_relation_ward < 2
}
}
}
}
custom_description = {
text = character_to_educate_exists
object = scope:puppet_or_actor
scope:puppet_or_actor = {
OR = {
any_courtier = {
is_adult = no
is_physically_able = yes
NOR = {
any_relation = {
type = guardian
this = scope:recipient
}
any_relation = {
type = guardian
OR = {
is_at_war_with = scope:puppet_or_actor
any_liege_or_above = {
is_at_war_with = scope:puppet_or_actor
}
}
}
}
}
AND = {
is_adult = no
is_physically_able = yes
NOR = {
any_relation = {
type = guardian
this = scope:recipient
}
any_relation = {
type = guardian
OR = {
is_at_war_with = scope:puppet_or_actor
any_liege_or_above = {
is_at_war_with = scope:puppet_or_actor
}
}
}
}
}
}
}
}
NOT = {
scope:puppet_or_actor = {
is_at_war_with = scope:recipient
}
}
scope:recipient = {
is_imprisoned = no
}
trigger_if = {
limit = {
exists = scope:secondary_actor
}
scope:secondary_actor = {
is_imprisoned = no
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_actor.var:ward_waiting_for_guardian
}
}
}
}
}
}
trigger_if = {
limit = {
exists = scope:secondary_recipient
}
scope:secondary_recipient = {
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_recipient.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) (184 lines of game script)
on_send = scope:secondary_recipient = {
add_character_flag = {
flag = under_offer_as_guardian_flag
months = 1
}
}
scope:secondary_actor = {
add_character_flag = {
flag = under_offer_as_ward_flag
months = 1
}
}
on_accept = scope:secondary_actor = {
save_scope_as = ward
}
scope:puppet_or_actor = {
save_scope_as = ward_liege
}
scope:recipient = {
save_scope_as = guardian_liege
}
scope:secondary_recipient = {
save_scope_as = guardian
}
scope:puppet_or_actor = {
if = {
limit = {
scope:education_hook ?= yes
has_usable_hook = scope:recipient
}
use_hook = scope:recipient
}
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:ward = {
if = {
limit = {
any_relation = {
type = guardian
this != scope:guardian
}
}
random_relation = {
type = guardian
save_scope_as = old_guardian
if = {
limit = {
scope:old_guardian != scope:puppet_or_actor
}
scope:old_guardian = {
trigger_event = char_interaction.0090
}
}
}
scope:puppet_or_actor = {
send_interface_message = {
type = event_childhood_neutral
title = remove_guardian_interaction_notification
left_icon = scope:old_guardian
right_icon = scope:ward
remove_guardian_effect = {
GUARDIAN = scope:old_guardian
WARD = scope:ward
RETURN_WARD = yes
HIDE_OPINION = no
}
if = {
limit = {
exists = scope:ward.var:character_requested_as_educator
scope:ward.var:character_requested_as_educator = scope:old_guardian
exists = scope:ward.var:character_making_education_request
scope:ward.var:character_making_education_request = {
is_alive = yes
OR = {
this = scope:old_guardian
scope:old_guardian = {
is_courtier_of = prev
}
}
this != scope:puppet_or_actor
}
}
scope:ward.var:character_making_education_request = {
add_opinion = {
modifier = insult_opinion
target = scope:puppet_or_actor
opinion = -15
}
}
}
}
}
}
}
show_as_tooltip = {
scope:guardian = {
set_relation_ward = scope:ward
}
educate_child_interaction_effect = yes
}
scope:puppet_or_actor = {
if = {
limit = {
this != scope:recipient
scope:ward = {
NOR = {
any_relation = {
type = guardian
this = scope:recipient
}
any_relation = {
type = guardian
OR = {
is_at_war_with = scope:puppet_or_actor
any_liege_or_above = {
is_at_war_with = scope:puppet_or_actor
}
}
}
}
}
scope:guardian = {
num_of_relation_ward < 2
}
}
trigger_event = char_interaction.0080
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:puppet_or_actor
TARGET = scope:recipient
VALUE = miniscule_unity_gain
DESC = clan_unity_ward_offerage.desc
REVERSE_NON_HOUSE_TARGET = yes
}
accolade_ward_education_notification_effect = yes
on_decline = if = {
limit = {
NOT = {
scope:puppet_or_actor = {
has_opinion_modifier = {
modifier = declined_ward_opinion
target = scope:recipient
}
}
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:puppet_or_actor
TARGET = scope:recipient
VALUE = miniscule_unity_loss
DESC = clan_unity_ward_decline.desc
REVERSE_NON_HOUSE_TARGET = yes
}
}
scope:puppet_or_actor = {
trigger_event = char_interaction.0081
add_opinion = {
modifier = declined_ward_opinion
target = scope:recipient
}
}
scope:secondary_recipient = {
remove_character_flag = under_offer_as_guardian_flag
}
scope:secondary_actor = {
remove_character_flag = under_offer_as_ward_flag
}As written in game/common/character_interactions/00_education_interactions.txt.
- Category
- Friendly actions
- In the menu
- under More…
- ID
offer_ward_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.