CK3 DatabaseCrusader Kings III · 1.20.1.2 “Crozier” · unofficial
Silk & Silverout Tue, Nov 17What's free, what needs the DLC, price →

Interaction · Vassal actions

Move to Realm

No costThe AI weighs it

As a landless Noble Family under a Liege with a different form of Government, you can move to other realms with your Government. Ask the recipient to become your Liege

What you need

You

To send it

  • Is at not War
  • Also needed: not imprisoned

To see it in the menu

  • Government allows: noble families
  • Any held title: The … is a Noble Family Title
  • Every held title: The … is a Noble Family Title
  • If played by the AI: Is at not War
  • Your top liege:
    • One of these

      • NOT = { has_same_government = scope:actor }
      • or

        All of these

The character you target

To send it

To see it in the menu

  • has_same_government = scope:actor
  • Is landed
  • Highest held Title is at least scope:actor.highest held title tier Rank

Move to Realm is a vassal character interaction in Crusader Kings III. You need: Is not imprisoned and Is at not War. The AI weighs it. Reasons the AI weighs include They is your Rightful Liege (+25), They is your Rival (-10), They is your Nemesis (-50) and 7 more. Patch 1.20.1.2, from game/common/character_interactions/10_tgp_interactions.txt.

for a guide, post or blog
Quick answers (2)
What are the requirements for Move to Realm in CK3?
You: Is not imprisoned and Is at not War. (patch 1.20.1.2)
How do I get the AI to accept Move to Realm?
The AI weighs it. Its reasons: You are of a different Faith, They is your Rightful Liege +25, They is your Rival -10, They is your Nemesis -50, They belongs to your Dynasty +10, Cultural Acceptance -5, You speak the … Language +5, They is a Claimant to … -15, The recipient rules a Confederation and shares your Culture +100, You refused to be transferred to the recipient -75 and The recipient renounced suzerainty over you -200.

Will they accept?

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
You are of a different Faith
when
  • None of these

    • Your faith is the same as that of recipient
    • Your rite: Has the Pluralist Doctrine
varies
They is your Rightful Liege
when
  • The character you target:
    • is_rightful_liege_of = scope:actor
+25
They is your Rival
when
  • The character you target:
    • Has you as rival
    • Does not have you as nemesis
-10
They is your Nemesis
when
  • The character you target: Has you as nemesis
-50
They belongs to your Dynasty
when
  • The character you target: Is of the same dynasty as you
+10
Cultural Acceptance
when
  • NOT = { has_same_culture_as = scope:recipient }
  • Your culture:
    • cultural_acceptance = { target = scope:recipient.culture value < 50 }
-5
You speak the … Language
when
  • knows_language_of_culture = scope:recipient.culture
+5
They is a Claimant to …
when
  • Your primary title › The character you target:
    • has_claim_on = prev
-15
Their personality (AI values: greed 0.75)varies
Their opinion of you × 0.5varies
The recipient rules a Confederation and shares your Culture
when
+100
You refused to be transferred to the recipient-75
The recipient renounced suzerainty over you-200
Acceptance (ai_accept) (152 lines of game script)
base = 50
modifier = {
	desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
	trigger = {
		scope:actor = {
			NOR = {
				faith = scope:recipient.faith
				rite = {
					rite_has_doctrine = doctrine_pluralism_pluralistic
				}
			}
		}
	}
	add = {
		value = -25
		if = {
			limit = {
				scope:actor.faith = {
					faith_hostility_level = {
						target = scope:recipient.faith
						value >= faith_hostile_level
					}
				}
			}
			add = -10
		}
		if = {
			limit = {
				scope:actor.faith = {
					faith_hostility_level = {
						target = scope:recipient.faith
						value >= faith_evil_level
					}
				}
			}
			add = -25
		}
	}
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_rightfulvassaltitleholder_tt
	trigger = {
		scope:recipient = {
			is_rightful_liege_of = scope:actor
		}
	}
	add = 25
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_rival_tt
	trigger = {
		scope:recipient = {
			has_relation_rival = scope:actor
			NOT = {
				has_relation_nemesis = scope:actor
			}
		}
	}
	add = -10
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_nemesis_tt
	trigger = {
		scope:recipient = {
			has_relation_nemesis = scope:actor
		}
	}
	add = -50
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_dynasty_tt
	trigger = {
		scope:recipient = {
			dynasty = scope:actor.dynasty
		}
	}
	add = 10
}
modifier = {
	add = -5
	desc = cultural_acceptance_interaction_reason
	trigger = {
		scope:actor = {
			NOT = {
				has_same_culture_as = scope:recipient
			}
			culture = {
				cultural_acceptance = {
					target = scope:recipient.culture
					value < 50
				}
			}
		}
	}
}
modifier = {
	add = 5
	desc = speaks_same_language_interaction_reason
	trigger = {
		scope:actor = {
			knows_language_of_culture = scope:recipient.culture
		}
	}
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_claimant_tt
	trigger = {
		scope:actor.primary_title = {
			scope:recipient = {
				has_claim_on = prev
			}
		}
	}
	add = -15
}
ai_value_modifier = {
	ai_greed = 0.75
	min = 0
}
opinion_modifier = {
	who = scope:recipient
	opinion_target = scope:actor
	multiplier = 0.5
}
modifier = {
	add = 100
	desc = CONFEDERATION_CULTURE_REASON
	scope:recipient = {
		is_confederation_member = yes
		culture = {
			this = scope:actor.culture
		}
	}
}
modifier = {
	add = -75
	desc = refused_transfer_reason
	scope:actor = {
		var:refused_transfer_target ?= {
			this = scope:recipient
		}
	}
}
modifier = {
	add = -200
	desc = refused_transfer_liege_reason
	scope:actor = {
		var:refused_transfer_liege ?= {
			this = scope:recipient
		}
	}
}

As written in game/common/character_interactions/10_tgp_interactions.txt.

What happens

If they accept

  • Event char_interaction.0010
  • Your domicile:
    • move_domicile = scope:recipient.capital_province
  • If

    • you has administrative government mechanic
    • The character you target: Their government does not have the administrative mechanic

    Then

  • The former liege:
  • The character you target:
    • If

      • has_imprisonment_reason = scope:actor

      Then

      • consume_imprisonment_reasons = scope:actor
    • If

      • has_revoke_title_reason = scope:actor

      Then

      • consume_revoke_title_reason = scope:actor
    • If

      • has_banish_reason = scope:actor

      Then

      • consume_banish_reasons = scope:actor
    • If

      • has_execute_reason = scope:actor

      Then

      • consume_execute_reasons = scope:actor

If they refuse

Events it fires: char_interaction.0010, char_interaction.0011

• 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) (38 lines of game script)
is_available = government_allows = noble_families
any_held_title = {
	is_noble_family_title = yes
}
any_held_title = {
	count = all
	is_noble_family_title = yes
}
trigger_if = {
	limit = {
		is_ai = yes
	}
	is_at_war = no
}
is_shown = scope:actor = {
	top_liege = {
		this != scope:recipient
		OR = {
			NOT = {
				has_same_government = scope:actor
			}
			AND = {
				scope:actor = {
					government_has_flag = government_is_celestial
				}
				situation:dynastic_cycle ?= {
					situation_current_phase = situation_dynastic_cycle_phase_chaos
				}
			}
		}
	}
}
scope:recipient = {
	has_same_government = scope:actor
	this = top_liege
	is_landed = yes
	highest_held_title_tier >= scope:actor.highest_held_title_tier
}

As written in game/common/character_interactions/10_tgp_interactions.txt.

Can be sent when (is_valid…) (31 lines of game script)
scope:actor = {
	is_imprisoned = no
	is_at_war = no
}
scope:recipient = {
	trigger_if = {
		limit = {
			situation:dynastic_cycle ?= {
				situation_current_phase = situation_dynastic_cycle_phase_chaos
			}
			scope:actor = {
				government_has_flag = government_is_celestial
			}
		}
		custom_tooltip = {
			text = is_part_of_dynastic_cycle
			any_character_situation = {
				situation_type = dynastic_cycle
			}
		}
	}
	trigger_else = {
		custom_description = {
			text = offer_fealty_neighboring_condition
			subject = scope:recipient
			any_neighboring_and_across_water_top_liege_realm_owner = {
				this = scope:actor.top_liege
			}
		}
	}
}

As written in game/common/character_interactions/10_tgp_interactions.txt.

Effects (on_send, on_accept, on_decline) (80 lines of game script)
on_accept = scope:actor.liege = {
	save_scope_as = former_liege
}
hidden_effect = {
	offer_fealty_interaction_effect = yes
}
scope:actor = {
	trigger_event = char_interaction.0010
	domicile = {
		move_domicile = scope:recipient.capital_province
	}
	if = {
		limit = {
			government_has_mechanic = administrative
			scope:recipient = {
				NOT = {
					government_has_mechanic = administrative
				}
			}
		}
		custom_tooltip = will_change_from_administrative_tt
		custom_tooltip = will_lose_administrative_government_type_tt
	}
	if = {
		limit = {
			scope:recipient = {
				is_confederation_member = yes
			}
		}
		add_character_flag = {
			flag = new_confederate
			years = 3
		}
	}
}
scope:former_liege = {
	send_interface_message = {
		type = msg_liege_changed
		title = actor_moved_to_other_realm_title
		desc = actor_moved_to_other_realm_desc
		left_icon = scope:former_liege
		right_icon = scope:actor
		add_opinion = {
			target = scope:actor
			modifier = actor_moved_to_other_realm
		}
		show_as_tooltip = {
			offer_fealty_interaction_effect = yes
		}
	}
}
scope:recipient = {
	if = {
		limit = {
			has_imprisonment_reason = scope:actor
		}
		consume_imprisonment_reasons = scope:actor
	}
	if = {
		limit = {
			has_revoke_title_reason = scope:actor
		}
		consume_revoke_title_reason = scope:actor
	}
	if = {
		limit = {
			has_banish_reason = scope:actor
		}
		consume_banish_reasons = scope:actor
	}
	if = {
		limit = {
			has_execute_reason = scope:actor
		}
		consume_execute_reasons = scope:actor
	}
}
on_decline = scope:actor = {
	trigger_event = char_interaction.0011
}

As written in game/common/character_interactions/10_tgp_interactions.txt.

Category
Vassal actions
In the menu
main list
ID
landless_admin_switch_non_admin_top_liege_interaction

Source: game/common/character_interactions/10_tgp_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?