Scripted effect · The Royal Court files
assign_court_type_traits_to_courtiers_effect
assign_court_type_traits_to_courtiers_effect = yesgame/common/scripted_effects/00_ep1_court_type_effects.txt, line 171 (83 lines). No parameters.
assign_court_type_traits_to_courtiers_effect is a scripted effect in Crusader Kings III, in the The Royal Court files, written at line 171 of its file. It takes no parameters: assign_court_type_traits_to_courtiers_effect = yes. The game's script calls it in 1 place, among them yearly_playable_pulse (on action). Patch 1.20.1.2, from game/common/scripted_effects/00_ep1_court_type_effects.txt.
The comment above it in the file
Main effect for handling courtiers gaining/leveling court type traits
What it does
If
has_court_type = court_diplomatic- Any courtier:
- Days since joined court at least 1825
One of these
ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = diplomatic }or
ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = diplomatic }
Then
court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = diplomatic }
If
One of these
has_court_type = court_warlikeor
has_court_type = court_tribalor
has_court_type = court_nomadic
- Any courtier:
- Days since joined court at least 1825
One of these
ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = warlike }or
ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = warlike }
Then
court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = warlike }
If
has_court_type = court_administrative- Any courtier:
- Days since joined court at least 1825
One of these
ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = administrative }or
ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = administrative }
Then
court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = administrative }
If
has_court_type = court_intrigue- Any courtier:
- Days since joined court at least 1825
One of these
ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = intrigue }or
ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = intrigue }
Then
court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = intrigue }
If
has_court_type = court_scholarly- Any courtier:
- Days since joined court at least 1825
One of these
ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = scholarly }or
ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = scholarly }
Then
court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = scholarly }
• 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 (83 lines of game script)
assign_court_type_traits_to_courtiers_effect = {
save_scope_value_as = {
name = cgv_value
value = root.court_grandeur_current_level
}
# Diplomatic Court
if = {
limit = {
has_court_type = court_diplomatic
any_courtier = {
days_since_joined_court >= days_to_gain_court_type_trait
OR = { #Either they have no trait, or they have one we can level
ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = diplomatic }
ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = diplomatic }
}
}
}
court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = diplomatic }
}
# Warlike Court
if = {
limit = {
OR = {
has_court_type = court_warlike
has_court_type = court_tribal
has_court_type = court_nomadic
}
any_courtier = {
days_since_joined_court >= days_to_gain_court_type_trait
OR = { #Either they have no trait, or they have one we can level
ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = warlike }
ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = warlike }
}
}
}
court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = warlike }
}
# Administrative Court
if = {
limit = {
has_court_type = court_administrative
any_courtier = {
days_since_joined_court >= days_to_gain_court_type_trait
OR = { #Either they have no trait, or they have one we can level
ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = administrative }
ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = administrative }
}
}
}
court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = administrative }
}
# Intrigue Court
if = {
limit = {
has_court_type = court_intrigue
any_courtier = {
days_since_joined_court >= days_to_gain_court_type_trait
OR = { #Either they have no trait, or they have one we can level
ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = intrigue }
ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = intrigue }
}
}
}
court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = intrigue }
}
# Scholarly Court
if = {
limit = {
has_court_type = court_scholarly
any_courtier = {
days_since_joined_court >= days_to_gain_court_type_trait
OR = { #Either they have no trait, or they have one we can level
ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = scholarly }
ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = scholarly }
}
}
}
court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = scholarly }
}
}As written in game/common/scripted_effects/00_ep1_court_type_effects.txt.
Where it is used
Every place in common/, events/ and history/ that calls assign_court_type_traits_to_courtiers_effect.
On actions (the game's own hooks) (1)
- yearly_playable_pulse
Source: game/common/scripted_effects/00_ep1_court_type_effects.txt and every file of common/, events/ and history/ that calls it, Crusader Kings III 1.20.1.2.