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

Scripted effect · Khans of the Steppe files

migration_message_effect

migration_message_effect = yes

game/common/scripted_effects/09_dlc_mpo_scripted_effects.txt, line 337 (122 lines). No parameters.

migration_message_effect is a scripted effect in Crusader Kings III, in the Khans of the Steppe files, written at line 337 of its file. It takes no parameters: migration_message_effect = yes. The game's script calls it in 1 place, among them migration_title_and_vassal_change_effect (scripted effect). Patch 1.20.1.2, from game/common/scripted_effects/09_dlc_mpo_scripted_effects.txt.

What it does

  • If a Tributary:
    • suzerain = { … }
  • Else, if is not an Independent Ruler:
    • clear_saved_scope = top_liege_temp
  • clear_saved_scope = old_holder

• the game's own tooltip text · ◦ our reading of the script line · code the script where neither exists

“They” is whatever it runs on (the scope it is called in). The scripted triggers and effects it calls link to their own pages; $PARAMETERS$ stay as written: each call fills them in.

The script as written (120 lines of game script)
migration_message_effect = {
	save_scope_as = old_holder
	every_neighboring_top_liege_realm_owner = { add_to_temporary_list = old_holder_neighbours }
	# Messages for Self
	send_interface_message = {
		type = msg_migration_into_realm
		title = msg_migration_into_realm_title
		desc = msg_migration_into_realm_desc
		left_icon = scope:actor
		right_icon = scope:target_title
	}
	if = {
		limit = { is_tributary = yes }
		# Messages for Suzerains and fellow Tributaries
		suzerain = {
			save_temporary_scope_as = suzerain_temp
			add_to_temporary_list = old_holder_suzerain # for debugging
			send_interface_message = {
				type = msg_migration_into_realm
				title = msg_migration_into_realm_tributary_title
				desc = msg_migration_into_realm_tributary_desc
				left_icon = scope:actor
				right_icon = scope:old_holder
			}
			every_player = {
				limit = {
					is_tributary_of = scope:suzerain_temp
					NOT = { this = scope:old_holder } # Self
				}
				send_interface_message = {
					type = msg_migration_into_realm
					title = msg_migration_into_realm_fellow_tributary_title
					desc = msg_migration_into_realm_fellow_tributary_desc
					left_icon = scope:actor
					right_icon = scope:old_holder
				}
			}
			clear_saved_scope = suzerain_temp
		}
	}
	else_if = {
		limit = { is_independent_ruler = no }
		# Messages for Lieges and fellow Vassals
		top_liege = {
			save_temporary_scope_as = top_liege_temp
			add_to_temporary_list = old_holder_top_liege # for debugging
			send_interface_message = {
				type = msg_migration_into_realm
				title = msg_migration_into_realm_vassal_title
				desc = msg_migration_into_realm_vassal_desc
				left_icon = scope:actor
				right_icon = scope:old_holder
			}
			every_player = {
				limit = {
					is_vassal_of = scope:top_liege_temp
					NOT = { this = scope:old_holder } # Self
				}
				send_interface_message = {
					type = msg_migration_into_realm
					title = msg_migration_into_realm_fellow_vassal_title
					desc = msg_migration_into_realm_fellow_vassal_desc
					left_icon = scope:actor
					right_icon = scope:old_holder
				}
			}
		}
		clear_saved_scope = top_liege_temp
	}
	# Messages for Vassals
	every_player = {
		limit = { is_vassal_of = scope:old_holder }
		send_interface_message = {
			type = msg_migration_into_realm
			title = msg_migration_into_liege_title
			desc = msg_migration_into_liege_desc
			left_icon = scope:actor
			right_icon = scope:old_holder
		}
	}
	# Messages for Tributaries
	every_player = {
		limit = { is_tributary_of = scope:old_holder }
		send_interface_message = {
			type = msg_migration_into_realm
			title = msg_migration_into_suzerain_title
			desc = msg_migration_into_suzerain_desc
			left_icon = scope:actor
			right_icon = scope:old_holder
		}
	}
	# Messages for Neighbours
	every_player = {
		limit = {
			is_in_list = old_holder_neighbours
			NOR = { # Exclude all those who have already had a message
				this = scope:actor
				is_in_list = old_holder # Self
				is_in_list = old_holder_suzerain # Suzerains
				suzerain = { is_in_list = old_holder_suzerain } # Fellow Tributaries
				is_in_list = old_holder_top_liege # Lieges
				top_liege = { is_in_list = old_holder_top_liege } # Fellow Vassals
				is_vassal_of = scope:old_holder # Vassals
				is_tributary_of = scope:old_holder # Tributaries
				var:migration_neighbour_cooldown ?= scope:actor # Avoid duplicates
			}
		}
		set_variable = {
			name = migration_neighbour_cooldown
			value = scope:actor
			days = 1
		}
		send_interface_message = {
			type = msg_migration_into_neighbour
			title = msg_migration_into_neighbour_title
			desc = msg_migration_into_neighbour_desc
			left_icon = scope:actor
			right_icon = scope:old_holder.top_liege
		}
	}

As written in game/common/scripted_effects/09_dlc_mpo_scripted_effects.txt.

The first 120 of its 122 lines; the rest is in game/common/scripted_effects/09_dlc_mpo_scripted_effects.txt from line 337.

Where it is used

Every place in common/, events/ and history/ that calls migration_message_effect.

Source: game/common/scripted_effects/09_dlc_mpo_scripted_effects.txt and every file of common/, events/ and history/ that calls it, Crusader Kings III 1.20.1.2.

Spotted a mistake on this page?