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

Remove Guardian

No costAccepted automatically

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 you
        • or

          Any relation: Is you
        • or

          Any relation: Is a courtier of you
    • or

      The character you target:
      • One of these

        • Is you
        • or

          Is employed by you
        • or

          Any relation: Is you
        • or

          Any relation: Is a courtier of you
      • Any relation:
        • always = yes

The character you target

  • If

    • The character you target: Is an Adult

    Then

    • Any relation:
      • One of these

        • Is you
        • or

          Is employed by you
        • or

          Any relation: Is you
        • or

          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 you
      • or

        Any relation: Is you
      • or

        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.

for a guide, post or blog
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

  • If

    • The guardian is not you

    Then

  • The guardian:
    • remove_relation_ward = scope:ward
    • If

      • is_foreign_court_guest = yes
      • None of these

        • host = liege
        • All of these

          • 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

              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 = yes
        • host != 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

          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

          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

              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

              Then

              • remove_opinion = { modifier = guardian_of_relative_parochial_opinion target = scope:ward.liege }
  • If

    a check the game hides

    Then

    • The guardian:
      • remove_relation_ward = scope:ward_2
      • If

        • is_foreign_court_guest = yes
        • None of these

          • host = liege
          • is_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 = yes
          • host != 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_2.liege }

            Else if

            • Has the opinion “Guardian of Your Relative”
            • None of these

              • Any relation:
                • is_close_family_of = scope:ward_2.liege

            Then

            • … (more in the script below)
          • … (more in the script below)
        • … (more in the script below)
  • … (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.

Spotted a mistake on this page?