Council modding

From CK3 Wiki
Jump to navigation Jump to search

Councillors are defined in the /common/council_positions/ folder. Council tasks are defined in the /common/council_tasks/ folder.

Council Positions Structure[edit | edit source]

New council positions can be added via the following format:

name_of_the_position = {
	# Main skill to look into the character list. If none the best sumk of all the skills will be at the top.
	skill = diplomacy
	special_council_position = yes # Can be held in addition to regular council positions. E.G., the Spouse council position
	auto_fill = yes/no/{ <triggers> } # Will automatically be filled, without the player being able to select who takes the position. Trigger scope: council owner character. Default: no. An empty trigger is treated as 'no'.
	inherit = yes/no/{ <triggers> } #  Position will be inherited by the primary heir if that character is valid to hold the position. Trigger scope: council owner character. Default: no. An empty trigger is treated as 'no'.
	can_fire = yes/no/{ <triggers> } # The councillor can be fired. Trigger scope: council owner character. Default: yes. An empty trigger is treated as 'yes'.
	can_reassign = yes/no/{ <triggers> } # The councillor can be reassigned. Trigger scope: council owner character. Default: yes. An empty trigger is treated as 'yes'.
	can_change_once  = yes/no/{ <triggers> } # The councillor can be assigned, but not reassigned/fired in their lifetime after the assignment. Trigger scope: council owner character. Default: no. An empty trigger is treated as 'no'.

	name = loc_key # What name to use. Be aware that when a position is unfilled, name_of_the_position is used instead
	name = { # Alternatively, you can use triggered loc. SCOPE is the character, event target 'councillor_liege' is the council owner. If no character is provided, we fall back to the key of the position rather than going through triggered loc
		first_valid = { ... }
	}
	# You also need to define the loc key post-fixed with "_possessive" if "special_council_position = yes" is not set (special council positions do not support possessive versions at this time). If you're combining two or more strings using the dynamic description system, only the last key needs "_possessive" defined

	# Modifier applied to the character in this position. Can take a "scale" parameter to scale by (a script value; see _script_values.info). Up to 5 of these can be defined if more than one scale is necessary
	modifier = {
	}

	# Modifier applied to the liege of the character in this position. Can take a "scale" parameter to scale by (a script value; see _script_values.info). Up to 5 of these can be defined if more than one scale is necessary
	council_owner_modifier = {
	}
	
	# Is this an available position for this council [SCOPE is the CHARACTER owner of the council]
	valid_position = {

	}

	# Is this a valid position for a character. [SCOPE is the character applying to the position]
	valid_character = {

	}

	# Effect applied when a character gets this position. [SCOPE is the character applying to the position]
	on_get_position = {

	}

	# Effect applied when a character lose the position. [SCOPE is the character in the position]
	on_lose_position = {
	
	}

	# Effect applied when a character is fired from the position. [SCOPE is the character in the position]
	on_fired_from_position = {

	}

	# Max number of positions for this type. For modders. Default 1. Infinite 0 or negative.
	max_amount = 2
	
	use_for_scheme_power = yes/no
	use_for_scheme_resistance = yes/no
	
	# Which portrait animation should councillors of this type use in the council window
	portrait_animation = X
}

Note that the council_positions folder does not include court physician.