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

Modify … Administration

No costAccepted automatically

Change the administration for the recipient's Province

What you need

You

  • Is not at war with the target
  • … are the Ceremonial Monarch
  • If

    • The character you target:
      • subject_contract_is_blocked_from_modification = yes

    Then

    • The character you target:
      • subject_contract_is_blocked_from_modification = no

    Otherwise

    • If

      • The character you target: Has “admin contract cooldown” (a variable the game's script sets)

      Then

The character you target

  • Is a direct vassal of you
  • One of these

    • Is landed
    • or

      is_councillor_of = scope:puppet_or_actor.top_liege
  • Is not a Tributary
  • Is a ruler
  • vassal_contract_has_modifiable_obligations = yes
  • they has administrative government mechanic
  • Any held title:
    • One of these

      • Title tier at least holder.main administrative tier
      • or

        Title tier at least holder.min title maa tier
    • The … is not a Noble Family Title

Modify … Administration is a vassal character interaction in Crusader Kings III. You need: Is not at war with the target. Accepted automatically. Patch 1.20.1.2, from game/common/character_interactions/00_modifiy_vassal_contract.txt.

for a guide, post or blog
Quick answers (2)
What are the requirements for Modify … Administration in CK3?
You: Is not at war with the target. (patch 1.20.1.2)
Will the AI accept Modify … Administration?
Yes: it is accepted automatically.

Will they accept?

The other character has no choice: the game accepts it automatically.

What happens

Effects

• 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) (19 lines of game script)
is_shown = scope:recipient = {
	this != scope:puppet_or_actor
	liege ?= scope:puppet_or_actor
	OR = {
		is_landed = yes
		is_councillor_of = scope:puppet_or_actor.top_liege
	}
	is_tributary = no
	is_ruler = yes
	vassal_contract_has_modifiable_obligations = yes
	government_has_mechanic = administrative
	any_held_title = {
		OR = {
			tier >= holder.main_administrative_tier
			tier >= holder.min_title_maa_tier
		}
		is_noble_family_title = no
	}
}

As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.

Can be sent when (is_valid…) (38 lines of game script)
scope:puppet_or_actor = {
	NOT = {
		is_at_war_with = scope:recipient
	}
	tgp_is_ceremonial_liege_trigger = no
}
trigger_if = {
	limit = {
		scope:recipient = {
			subject_contract_is_blocked_from_modification = yes
		}
	}
	scope:recipient = {
		subject_contract_is_blocked_from_modification = no
	}
}
trigger_else = {
	trigger_if = {
		limit = {
			scope:recipient = {
				has_variable = admin_contract_cooldown
			}
		}
		custom_tooltip = {
			text = admin_contract_cooldown_desc
			scope:recipient = {
				NOT = {
					has_variable = admin_contract_cooldown
				}
			}
		}
	}
	trigger_else = {
		scope:puppet_or_actor = {
			has_changed_contract_obligation_trigger = yes
		}
	}
}

As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.

Effects (on_send, on_accept, on_decline) (173 lines of game script)
on_accept = hidden_effect = {
	if = {
		limit = {
			catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = {
				CHAR = scope:recipient
			}
			scope:puppet_or_actor = {
				any_character_struggle = {
					involvement = involved
					activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
						CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
						CHAR = scope:recipient
					}
				}
			}
		}
		scope:puppet_or_actor = {
			every_character_struggle = {
				involvement = involved
				limit = {
					activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
						CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
						CHAR = scope:recipient
					}
				}
				activate_struggle_catalyst = {
					catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection
					character = scope:puppet_or_actor
				}
			}
		}
	}
	if = {
		limit = {
			catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = {
				CHAR = scope:recipient
			}
			scope:puppet_or_actor = {
				any_character_struggle = {
					involvement = involved
					activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
						CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
						CHAR = scope:recipient
					}
				}
			}
		}
		scope:puppet_or_actor = {
			every_character_struggle = {
				involvement = involved
				limit = {
					activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
						CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
						CHAR = scope:recipient
					}
				}
				activate_struggle_catalyst = {
					catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
					character = scope:puppet_or_actor
				}
			}
		}
	}
	if = {
		limit = {
			scope:recipient.count_obligation_improvements_for_vassal > 0
			scope:puppet_or_actor = {
				is_diff_faith_or_culture_trigger = {
					CHAR = scope:recipient
					STATUS = involved
				}
				any_character_struggle = {
					involvement = involved
					activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
						CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
						CHAR = scope:recipient
					}
				}
			}
		}
		scope:puppet_or_actor = {
			every_character_struggle = {
				involvement = involved
				limit = {
					activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
						CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
						CHAR = scope:recipient
					}
				}
				activate_struggle_catalyst = {
					catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal
					character = scope:puppet_or_actor
				}
			}
		}
	}
}
scope:puppet_or_actor = {
	send_interface_message = {
		type = msg_vassal_contract_change
		title = modify_vassal_contract_interaction_notification
		right_icon = scope:recipient
		scope:recipient = {
			hidden_effect = {
				set_variable = {
					name = admin_contract_cooldown
					value = yes
					years = admin_contract_cooldown_value
				}
			}
		}
		every_in_list = {
			list = changed_obligations
			save_scope_as = obligation
			scope:recipient = {
				vassal_contract_set_obligation_level = {
					type = scope:obligation.vassal_contract_type
					level = scope:obligation
				}
				if = {
					limit = {
						government_has_flag = government_is_celestial
						scope:obligation.vassal_contract_type = vassal_contract:celestial_provinces
					}
					if = {
						limit = {
							vassal_contract_has_flag = celestial_military_appointment
							NOT = {
								has_realm_law = celestial_military_appointment_succession_law
							}
						}
						add_realm_law_skip_effects = celestial_military_appointment_succession_law
					}
					else_if = {
						limit = {
							vassal_contract_has_flag = celestial_civil_appointment
							NOT = {
								has_realm_law = celestial_appointment_succession_law
							}
						}
						add_realm_law_skip_effects = celestial_appointment_succession_law
					}
				}
				else_if = {
					limit = {
						OR = {
							government_has_flag = government_is_meritocratic
							government_has_flag = government_is_steppe_admin
						}
						scope:obligation.vassal_contract_type = vassal_contract:meritocratic_provinces
					}
					if = {
						limit = {
							vassal_contract_has_flag = meritocratic_military_appointment
							NOT = {
								has_realm_law = meritocratic_military_appointment_succession_law
							}
						}
						add_realm_law_skip_effects = meritocratic_military_appointment_succession_law
					}
					else_if = {
						limit = {
							vassal_contract_has_flag = meritocratic_civil_appointment
							NOT = {
								has_realm_law = meritocratic_appointment_succession_law
							}
						}
						add_realm_law_skip_effects = meritocratic_appointment_succession_law
					}
				}
				else_if = {
					li
# … (cut here; the rest is in the file)

As written in game/common/character_interactions/00_modifiy_vassal_contract.txt.

Category
Vassal actions
In the menu
main list
ID
admin_liege_modify_vassal_contract_interaction

Source: game/common/character_interactions/00_modifiy_vassal_contract.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. “…” marks words the game fills in at play time (a name, a title).

Spotted a mistake on this page?