Interaction · Friendly actions
Remove Guardian
Retract the Guardianship of a Guardian or Ward you have authority over
What you need
You
- Is a ruler
One of these
- The character you target › Any relation:
One of these
- Is you
or
Is employed by youor
Any relation: Is youor
Any relation: Is a courtier of you
or
The character you target:One of these
- Is you
or
Is employed by youor
Any relation: Is youor
Any relation: Is a courtier of you
- Any relation:
always = yes
- The character you target › Any relation:
The character you target
If
- The character you target: Is an Adult
Then
- Any relation:
One of these
- Is you
or
Is employed by youor
Any relation: Is youor
Any relation: Is a courtier of you
None of these
- Is at war with you
- Any liege or above: Is at war with you
Otherwise
One of these
- Is you
or
Is employed by youor
Any relation: Is youor
Any relation: Is a courtier of you
- Any relation:
- Any relation:
None of these
- Is at war with you
- Any liege or above: Is at war with you
Remove Guardian is a friendly character interaction in Crusader Kings III. Accepted automatically. Patch 1.20.1.2, from game/common/character_interactions/00_education_interactions.txt.
Quick answers (1)
- Will the AI accept Remove Guardian?
- Yes: it is accepted automatically.
Will they accept?
The other character has no choice: the game accepts it automatically.
What happens
Effects
- The guardian:
remove_relation_ward = scope:wardIf
is_foreign_court_guest = yesNone of these
host = liegeAll of these
- Is a ruler
One of these
- Cannot play landless rulers without having an Estate
or
or
tgp_is_any_minister = { }or
Has “laamp transition” (a variable the game's script sets)
- Any relation:
is_playable_character = { }this = scope:guardian.host
Then
return_to_court = yes
If
always = yes
Then
- The ward:
If
is_foreign_court_guest = yeshost != liege
Then
return_to_court = yes
Otherwise
If
a check the game hides
Then
- The 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 guardian:
If
a check the game hides
Then
- The guardian:
remove_relation_ward = scope:ward_2If
is_foreign_court_guest = yesNone of these
host = liegeis_playable_character = { }- Any relation:
is_playable_character = { }this = scope:guardian.host
Then
return_to_court = yes
If
always = yes
Then
scope:ward_2:If
is_foreign_court_guest = yeshost != liege
Then
return_to_court = yes
Otherwise
If
a check the game hides
Then
- The guardian:
- … (more in the script below)
- … (more in the script below)
- The guardian:
- The guardian:
- … (more in the script below)
Events it fires: char_interaction.0090
• 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) (18 lines of game script)
is_shown = scope:puppet_or_actor ?= {
is_ruler = yes
}
OR = {
scope:recipient = {
any_relation = {
type = ward
remove_guardian_interaction_visible_ward_trigger = yes
}
}
scope:recipient = {
remove_guardian_interaction_visible_ward_trigger = yes
any_relation = {
type = guardian
always = yes
}
}
}As written in game/common/character_interactions/00_education_interactions.txt.
Can be sent when (is_valid…) (36 lines of game script)
scope:recipient = {
trigger_if = {
limit = {
scope:recipient = {
is_adult = yes
}
}
any_relation = {
type = ward
remove_guardian_interaction_visible_ward_trigger = yes
remove_guardian_interaction_available_ward_trigger = yes
}
NOR = {
is_at_war_with = scope:puppet_or_actor
any_liege_or_above = {
is_at_war_with = scope:puppet_or_actor
}
}
}
trigger_else = {
remove_guardian_interaction_visible_ward_trigger = yes
remove_guardian_interaction_available_ward_trigger = yes
any_relation = {
type = guardian
}
any_relation = {
type = guardian
NOR = {
is_at_war_with = scope:puppet_or_actor
any_liege_or_above = {
is_at_war_with = scope:puppet_or_actor
}
}
}
}
}As written in game/common/character_interactions/00_education_interactions.txt.
Effects (on_send, on_accept, on_decline) (224 lines of game script)
on_accept = if = {
limit = {
scope:recipient = {
is_adult = yes
}
}
scope:recipient = {
save_scope_as = guardian
}
}
else = {
scope:recipient = {
every_relation = {
type = guardian
save_scope_as = guardian
}
}
}
scope:guardian = {
if = {
limit = {
this != scope:recipient
}
scope:recipient = {
save_scope_as = ward
}
}
else = {
random_relation = {
type = ward
limit = {
remove_guardian_interaction_visible_ward_trigger = yes
remove_guardian_interaction_available_ward_trigger = yes
}
save_scope_as = ward
save_scope_as = secondary_recipient
}
if = {
limit = {
any_relation = {
type = ward
remove_guardian_interaction_visible_ward_trigger = yes
remove_guardian_interaction_available_ward_trigger = yes
NOR = {
this = scope:ward
scope:ward = scope:recipient
}
}
}
random_relation = {
type = ward
limit = {
remove_guardian_interaction_visible_ward_trigger = yes
remove_guardian_interaction_available_ward_trigger = yes
NOR = {
this = scope:ward
this = scope:recipient
}
}
save_scope_as = ward_2
}
}
}
}
if = {
limit = {
scope:guardian != scope:puppet_or_actor
}
scope: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:guardian
right_icon = scope:ward
remove_guardian_effect = {
GUARDIAN = scope:guardian
WARD = scope:ward
RETURN_WARD = yes
HIDE_OPINION = no
}
if = {
limit = {
exists = scope:ward_2
}
remove_guardian_effect = {
GUARDIAN = scope:guardian
WARD = scope:ward_2
RETURN_WARD = yes
HIDE_OPINION = no
}
}
if = {
limit = {
exists = scope:ward.var:character_requested_as_educator
scope:ward.var:character_requested_as_educator = scope:guardian
exists = scope:ward.var:character_making_education_request
scope:ward.var:character_making_education_request = {
is_alive = yes
OR = {
this = scope:guardian
scope: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
}
}
}
}
}
if = {
limit = {
scope:puppet_or_actor = scope:ward.liege
}
guardian_remove_opinion_effect = {
GUARDIAN = scope:guardian
WARD = scope:ward
WARD_LIEGE = scope:ward.liege
}
}
else = {
hidden_effect = {
guardian_remove_opinion_effect = {
GUARDIAN = scope:guardian
WARD = scope:ward
WARD_LIEGE = scope:ward.liege
}
}
}
if = {
limit = {
exists = scope:ward_2
scope:puppet_or_actor = scope:ward_2.liege
scope:puppet_or_actor != scope:ward.liege
}
guardian_remove_opinion_effect = {
GUARDIAN = scope:guardian
WARD = scope:ward_2
WARD_LIEGE = scope:ward_2.liege
}
}
else_if = {
limit = {
exists = scope:ward_2
}
hidden_effect = {
guardian_remove_opinion_effect = {
GUARDIAN = scope:guardian
WARD = scope:ward_2
WARD_LIEGE = scope:ward_2.liege
}
}
}
if = {
limit = {
NOR = {
scope:ward.liege = scope:puppet_or_actor
scope:ward = scope:puppet_or_actor
}
}
scope:ward.liege = {
add_opinion = {
modifier = insulted_opinion
target = scope:puppet_or_actor
opinion = -15
}
}
}
if = {
limit = {
exists = scope:ward_2
NOR = {
scope:ward_2.liege = scope:puppet_or_actor
scope:ward_2.liege = scope:ward.liege
scope:ward_2 = scope:puppet_or_actor
}
}
scope:ward_2.liege = {
add_opinion = {
modifier = insulted_opinion
target = scope:puppet_or_actor
opinion = -15
}
}
}
if = {
limit = {
scope:puppet_or_actor = {
NOT = {
has_character_flag = guardian_unity_block
}
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:puppet_or_actor
TARGET = scope:recipient
VALUE = minor_unity_loss
DESC = clan_unity_removed_guardian.desc
REVERSE_NON_HOUSE_TARGET = yes
}
}
scope:puppet_or_actor = {
if = {
limit = {
is_ai = no
government_has_flag = government_is_clan
}
add_character_flag = {
flag = guardian_unity_block
months = 3
}
}
}As written in game/common/character_interactions/00_education_interactions.txt.
- Category
- Friendly actions
- In the menu
- under More…
- ID
remove_guardian_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.