N3OW/events/activities/hold_court_activity/hold_court_events_general.txt
2026-01-06 14:25:21 +01:00

26947 lines
578 KiB
Text

namespace = hold_court
# Differences in namespace range down to the ongoing CD civil war between whether a range starts at 0 or 1.
## It starts at 001 and goes to 000, damn it, and anyone who says otherwise is a knave and a cur.
##################################################
# # RANGES
# 0001 - 0100 Setup, Example, & Misc
# 1001 - 2000 Shoes
# 2001 - 2999 Ewan
# 3000 - 4000 Bianca
# 4001 - 5000 Isabella
# 5001 - 5999 Linnea
# 6000 - 6999 Claudia
# 7000 - 8000 George
# 8001 - 8999 Joe
# 9000 - 9999 Oltner
#
##################################################
##################################################
# Setup, Example, & Misc
##################################################
# 0001 - 0010 Example Event
# 0011 - 0010 Activity Start
# 0021 - 0020 Activity End
##################################################
##################################################
# Example Event
# by Ewan Cowhig Croft
# 0001 - 0010
##################################################
# Example hold court event for studying.
hold_court.0001 = {
# Court-type events only appear in the Royal Court view, and, for the Hold Court activity, are mandatory.
type = court_event
# Desc and theming rules are as normal, but since there's no background, there's no need for background overrides.
title = hold_court.0001.t
desc = hold_court.0001.desc
theme = court
# Main portraits are unnecessary: we define this stuff via the court_scene block instead.
# Secondary portraits may be used as usual.
lower_left_portrait = scope:character_c
# Hold Court events should be fired from their specific on_action (hold_court_event_selection), but since this is an example, it's left orphaned.
orphan = yes
# Here, we define how the event appears inside the court view.
## This block exists in the root scope, so you can just define anyone you'd normally have access to/set up in the immediate block here.
court_scene = {
# Define which character will have the button for starting the event appear over the top of 'em.
button_position_character = scope:character_a
# Forcibly open the event next.
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
# Roles defined in \ck3\game\gfx\court_scene\character_roles\, if you want to change them or add new ones.
roles = {
# First, we take each scoped relevant scoped character.
scope:character_a = {
# Then we define their role, where they're positioned in the scene.
group = petitioners_group
# Next, we select their animation override (if applicable: you can leave it to the generic default/role default if defined, though generally you'll want to define this).
animation = anger
}
scope:character_b = {
group = petitioners_group
animation = rage
}
# Characters who are not physically present are referred to only via copy links or lower portraits, so we don't bother putting them here.
}
}
# Add the widget to show which court event we're currently at in the chain.
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
weight_multiplier = {
base = 1
# Court weightings: plug in a court type that should see this event more often.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
# As with portraits, we do our general character setup stuff in this event.
random_courtier_or_guest = { save_scope_as = character_a }
random_courtier_or_guest = {
limit = {
this != scope:character_a
}
save_scope_as = character_b
}
}
# Court events, as with all events, require at least one option to display.
option = {
name = hold_court.0001.a
}
}
##################################################
# Activity Start
# by Sean Hughes & Ewan Cowhig Croft
# 0011 - 0010
##################################################
# Played at the start of the activity as an intro.
hold_court.0011 = {
type = court_event
title = hold_court.0001.t
desc = hold_court.0001.desc
theme = realm
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" }
court_scene = {
button_position_character = root
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
# roles = {
# root = {
# role = ruler
# animation = throne_room_ruler
# }
# }
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
immediate = {
# Play the appropriate music cue.
if = {
limit = {
culture = { has_graphical_mena_culture_group_trigger = yes }
}
play_music_cue = "middleeasterncourt_cue"
}
else_if = {
limit = {
culture = { has_graphical_mediterranean_culture_group_trigger = yes }
}
play_music_cue = "mediterraneancourt_cue"
}
else_if = {
limit = {
culture = { has_graphical_india_culture_group_trigger = yes }
}
play_music_cue = "indiancourt_cue"
}
else_if = {
limit = {
culture = { has_graphical_east_asia_culture_group_trigger = yes }
}
play_music_cue = "mx_cue_tgp_asian_tournament"
}
## If we can't find a more specific cue track, default to something more neutral.
else = { play_music_cue = "europeancourt_cue" }
# Set variable so we know if a player is holding court
if = {
limit = {
has_multiple_players = no
}
add_character_flag = {
flag = holding_court_character_flag
days = 5
}
}
else = {
add_character_flag = {
flag = holding_court_character_flag
years = 1
}
}
# Tracking for how many petitioners have come through.
set_variable = {
name = num_petitioners
value = initial_petitioners_value
}
# Start a counting variable for widget progress.
set_variable = {
name = petitioner_current_progress
value = 0
}
# Widget setup.
## Set the total length of the chain.
save_scope_value_as = {
name = event_chain_length
value = petitioner_total_chain_length_value
}
## Manually set the current widget length.
### Due to code-side shenanigans, we do this a bit awkwardly.
save_scope_value_as = {
name = event_chain_progress
value = 1
}
}
option = {
name = hold_court.0001.a
custom_tooltip = hold_court_start_activity
# Set up the general flow.
hold_court_queue_next_event_effect = yes
}
option = {
name = hold_court.0001.b
remove_variable = num_petitioners
remove_variable = petitioner_current_progress
remove_character_flag = holding_court_character_flag
ai_chance = {
base = 0
}
}
}
##################################################
# Activity End
# by Sean Hughes & Ewan Cowhig Croft
# 0021 - 0030
##################################################
# Played at the end of the activity to clean it up.
hold_court.0021 = {
type = court_event
title = hold_court.0021.t
desc = hold_court.0021.desc
theme = realm
override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic }
court_scene = {
button_position_character = root
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
# roles = {
# root = {
# role = ruler
# animation = throne_room_ruler
# }
# }
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
immediate = {
# Clean up the ol' variable.
remove_variable = petitioner_current_progress
remove_character_flag = holding_court_character_flag
# Update the widget one last time.
save_scope_value_as = {
name = event_chain_progress
value = petitioner_total_chain_length_value
}
root = { apply_hold_court_grace_effect = yes }
}
option = {
name = hold_court.0021.a
# Guaranteed small grandeur reward, in addition to any from events
change_current_court_grandeur = minor_court_grandeur_gain
# LEGITIMACY GAIN FROM HOLDING COURT
if = {
limit = {
has_legitimacy = yes
}
add_legitimacy = minor_legitimacy_gain
}
}
}
##################################################
# Shoes
##################################################
# 1001 - 1010 Indirect Espionage
# 1011 - 1020 A Call to War
# 1021 - 1030 Dust to Dust
# 1031 - 1040 A Traitor Uncovered
# 1041 - 1050 God's Own Lands
##################################################
##################################################
# Indirect Espionage
# by Sean Hughes
# 1001 - 1010
##################################################
# Guest arrives in your court, offers to spill rumors in exchange for money.
hold_court.1001 = {
type = court_event
title = hold_court.1001.t
desc = hold_court.1001.desc
theme = realm
override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic }
lower_right_portrait = scope:neighboring_ruler
court_scene = {
button_position_character = scope:rumormonger
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:rumormonger = {
group = petitioners_group
animation = personality_greedy
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
NOT = { has_character_flag = had_event_hold_court_1001 }
any_pool_guest = {
save_temporary_scope_as = rumor_person
is_available_adult = yes
any_known_secret = {
NOR = {
is_known_by = root
secret_target ?= scope:rumor_person
}
secret_target ?= {
top_liege ?= { is_landed = yes }
top_liege != root.top_liege
}
}
has_court_event_flag = no
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue }
}
immediate = {
add_character_flag = {
flag = had_event_hold_court_1001
years = 10
}
random_pool_guest = {
limit = {
save_temporary_scope_as = rumor_person
is_available_adult = yes
any_known_secret = {
NOR = {
is_known_by = root
secret_target ?= scope:rumor_person
}
secret_target ?= {
top_liege ?= { is_landed = yes }
top_liege != root.top_liege
}
}
has_court_event_flag = no
}
save_scope_as = rumormonger
court_event_character_flag_effect = yes
random_known_secret = {
limit = {
NOR = {
is_known_by = root
secret_target ?= scope:rumor_person
}
secret_target ?= {
top_liege ?= { is_landed = yes }
top_liege != root.top_liege
}
}
secret_target.top_liege = {
save_scope_as = neighboring_ruler
court_event_character_flag_effect = yes
primary_title = {
save_scope_as = neighboring_realm
}
}
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = {
name = hold_court.1001.a
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= major_gold_value
}
}
pay_short_term_gold = {
target = scope:rumormonger
gold = tiny_gold_value
}
custom_tooltip = hold_court.1001.a.success.tt
hidden_effect = {
scope:rumormonger = {
every_known_secret = {
limit = {
NOR = {
is_known_by = root
secret_target ?= scope:rumor_person
}
secret_target = {
top_liege ?= { is_landed = yes }
top_liege != root.top_liege
}
}
reveal_to = root
}
}
}
}
option = {
name = hold_court.1001.a.seducer
trigger = {
has_trait = seducer
might_cheat_on_every_partner_trigger = yes
scope:rumormonger = {
is_attracted_to_gender_of = root
might_cheat_on_every_partner_trigger = yes
}
}
trait = seducer
had_sex_with_effect = {
CHARACTER = scope:rumormonger
PREGNANCY_CHANCE = pregnancy_chance
}
custom_tooltip = hold_court.1001.a.success.tt
hidden_effect = {
scope:rumormonger = {
every_known_secret = {
limit = {
NOR = {
is_known_by = root
secret_target ?= scope:rumor_person
}
secret_target = {
top_liege ?= { is_landed = yes }
top_liege != root.top_liege
}
}
reveal_to = root
}
}
}
}
option = {
name = hold_court.1001.b
add_dread = minor_dread_gain
imprison_character_effect = {
TARGET = scope:rumormonger
IMPRISONER = root
}
}
option = {
name = hold_court.1001.c
change_current_court_grandeur = medium_court_grandeur_gain
custom_tooltip = hold_court_1001_pool_tt
hidden_effect = {
scope:rumormonger = {
move_to_pool = yes
}
}
}
after = {
scope:rumormonger = {
clear_court_event_participation = yes
}
scope:neighboring_ruler = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# A Call to War
# by Sean Hughes
# 1011 - 1020
##################################################
scripted_trigger hold_court_1011_valid_neighbour_trigger = {
tier < root.primary_title.tier
any_claimant = { hold_court_1011_valid_neighbour_claimant_trigger = yes }
}
scripted_trigger hold_court_1011_valid_neighbour_claimant_trigger = {
is_ruler = no
is_adult = yes
basic_is_available_ai = yes
has_court_event_flag = no
NOT = { is_courtier_of = root }
}
# Claimant asks for your help in pushing their claim RIGHT NOW!!!
hold_court.1011 = {
type = court_event
title = hold_court.1011.t
desc = hold_court.1011.desc
theme = realm
override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic }
lower_right_portrait = scope:target_character
court_scene = {
button_position_character = scope:claimant_guest
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:claimant_guest = {
group = petitioners_group
animation = personality_bold
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
any_neighboring_and_across_water_top_liege_realm = { hold_court_1011_valid_neighbour_trigger = yes }
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike}
}
immediate = {
random_neighboring_and_across_water_top_liege_realm = {
limit = { hold_court_1011_valid_neighbour_trigger = yes }
random_claimant = {
limit = { hold_court_1011_valid_neighbour_claimant_trigger = yes }
save_scope_as = claimant_guest
court_event_character_flag_effect = yes
}
save_scope_as = target_title
holder = {
save_scope_as = target_character
}
}
hidden_effect = {
add_visiting_courtier = scope:claimant_guest
scope:claimant_guest = { save_scope_as = courtier }
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = {
name = hold_court.1011.a
add_courtier = scope:claimant_guest
add_hook = {
type = loyalty_hook
target = scope:claimant_guest
}
reverse_add_opinion = {
target = scope:target_character
modifier = insult_opinion
opinion = -25
}
show_as_tooltip = {
random_list = {
desc = courtier_guest_management.0102.a.rl.desc
1 = {
show_chance = no
desc = courtier_guest_management.0102.a.stay
custom_tooltip = courtier_guest_management.0102.a.stay.tt
}
1 = {
show_chance = no
desc = courtier_guest_management.0102.a.leave
scope:claimant_guest = { select_and_move_to_pool_effect = yes }
}
}
}
hidden_effect = {
scope:claimant_guest = {
add_character_flag = {
flag = courtier_staying_for_claim
years = 1
}
trigger_event = {
id = courtier_guest_management.0103
years = 1
}
}
}
}
option = {
name = hold_court.1011.b
remove_courtier_or_guest = scope:claimant_guest
scope:claimant_guest = {
add_opinion = {
modifier = refusal_opinion
target = root
opinion = -20
}
}
scope:target_character = {
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 20
}
}
}
option = {
name = hold_court.1011.c
show_as_tooltip = {
add_visiting_courtier = scope:claimant_guest
}
scope:claimant_guest = {
add_opinion = {
modifier = kindness_opinion
target = root
opinion = 10
}
}
}
after = {
scope:claimant_guest = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Dust to Dust
# by Sean Hughes
# 1021 - 1030
##################################################
# Dust to Dust: A peasant asks for financial relief
hold_court.1021 = {
type = court_event
title = hold_court.1021.t
desc = hold_court.1021.desc
theme = realm
override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic }
court_scene = {
button_position_character = scope:peasant
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:peasant = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
# Portrait left in in order to apply outfit tags.
left_portrait = {
character = scope:peasant
outfit_tags = { beggar_rags }
hide_info = yes
}
trigger = {
NOT = { has_character_flag = had_event_hold_court_2001 }
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
add_character_flag = {
flag = had_event_hold_court_2001
years = 10
}
random_sub_realm_barony = {
limit = { county = { holder = root } }
save_scope_as = village
county = { save_scope_as = county }
}
hidden_effect = {
create_character = {
template = servant_character
dynasty = none
location = root.capital_province
gender_female_chance = root_soldier_female_chance
save_scope_as = peasant
}
scope:peasant = {
add_trait = peasant_leader
change_current_weight = -60
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = {
trigger = { stewardship >= high_skill_rating }
name = hold_court.1021.a.stewardship
skill = stewardship
every_sub_realm_county = {
custom = county_or_15_dev
limit = {
OR = {
this = scope:county
development_level <= 15
}
}
add_county_modifier = {
modifier = hold_court_cropsharing
years = 20
}
}
}
option = {
name = hold_court.1021.a
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= medium_treasury_or_gold_value
}
}
remove_treasury_or_gold = medium_treasury_or_gold_value
every_sub_realm_county = {
custom = county_or_15_dev
limit = {
OR = {
this = scope:county
development_level <= 15
}
}
add_county_modifier = {
modifier = hold_court_grateful_peasants_modifier
years = 10
}
}
change_current_court_grandeur = medium_court_grandeur_gain
}
option = {
name = hold_court.1021.b
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= medium_gold_value
}
}
remove_treasury_or_gold = minor_treasury_or_gold_value
every_sub_realm_county = {
custom = county_or_15_dev
limit = {
OR = {
this = scope:county
development_level <= 15
}
}
add_county_modifier = {
modifier = hold_court_free_labor
years = 10
}
}
}
option = {
name = hold_court.1021.c
every_sub_realm_county = {
custom = county_or_15_dev
limit = {
OR = {
this = scope:county
development_level <= 15
}
}
add_county_modifier = {
modifier = hold_court_ploughs_to_swords
years = 10
}
}
}
after = {
scope:peasant = { silent_disappearance_effect = yes }
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Ewan
# [slightly anachronistic tumbleweed imagery]
##################################################
# Bianca
##################################################
# 3000 - 3001 A Feast in your Name
# 3010 An Unconventional Preacher
# 3020 Culture Clash: Offensive Monument
# 3030 War Restorations
# 3040 Laughs Requested
# 3050 A Noble Responsibility
# 3060 Addressing the Corruption
# 3070 The Child with Two Mothers
# 3080 Exhibiting your collection
# 3090 - 3091 Celebrating another culture
##################################################
#####################################
# A Feast in your Name #
# by Bianca Savazzi #
# 3000 - 3001 #
#####################################
scripted_trigger hold_court_3000_vassal_trigger = {
basic_is_available_ai = yes
is_adult = yes
short_term_gold >= standard_activity_cost
has_court_event_flag = no
NOT = {
has_hook_of_type = {
target = root
type = favor_hook
}
}
trigger_if = {
limit = { exists = root.var:was_promised_a_feast }
root.var:was_promised_a_feast = { this != prev }
}
}
# You're approached by a vassal that offers to pay for your next feast
hold_court.3000 = {
type = court_event
title = hold_court.3000.t
desc = {
first_valid = {
triggered_desc = {
trigger = { has_trait = blind }
desc = hold_court.3000.desc.opening.blind
}
triggered_desc = {
desc = hold_court.3000.desc.opening
}
}
first_valid = {
triggered_desc = {
trigger = {
scope:feast_vassal = {
opinion = {
target = root
value >= 10
}
}
}
desc = hold_court.3000.desc.dislikes
}
triggered_desc = {
desc = hold_court.3000.desc.likes
}
}
}
theme = court
cooldown = { years = 5 }
court_scene = {
button_position_character = scope:feast_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:feast_vassal = {
group = petitioners_group
animation = happiness
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
weight_multiplier = {
base = 1
modifier = {
add = 1
has_character_flag = had_event_vassal_2101 # Event where vassal requests a feast
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
trigger = {
NOT = { government_has_flag = government_is_mandala }
is_landed_or_landless_administrative = yes
is_in_civil_war = no
is_adult = yes
any_vassal = {
hold_court_3000_vassal_trigger = yes
}
}
immediate = {
random_vassal = {
limit = {
hold_court_3000_vassal_trigger = yes
}
save_scope_as = feast_vassal
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
# Option A: Accept, grant a favour
option = {
name = hold_court.3000.a
scope:feast_vassal = {
add_opinion = {
modifier = ep1_accepted_sponsoring_a_feast_opinion
target = root
}
add_hook = {
target = root
type = favor_hook
}
pay_short_term_gold = {
target = root
gold = standard_activity_cost
}
}
custom_tooltip = hold_court.3000.a.tt
hidden_effect = {
set_variable = {
name = hold_court_sponsored_a_feast
value = scope:feast_vassal
years = 5
}
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_honor = tiny_chance_impact_positive_ai_value # Honorable characters tend to agree to fair deals
ai_greed = medium_chance_impact_negative_ai_value # Greedy characters don't necessarily want a "fair" deal
}
}
}
# Option B: Accept greedily
option = {
name = hold_court.3000.b
trigger = {
OR = {
has_trait = greedy
has_trait = arbitrary
has_trait = arrogant
}
}
stress_impact = {
greedy = medium_stress_loss
}
scope:feast_vassal = {
if = {
limit = {
OR = {
has_trait = generous
has_trait = humble
}
}
add_opinion = {
modifier = ep1_took_advantage_of_kindness_opinion
target = root
opinion = -10
}
}
else = {
add_opinion = {
modifier = ep1_took_advantage_of_kindness_opinion
target = root
}
}
pay_short_term_gold = {
target = root
gold = standard_activity_cost
}
}
custom_tooltip = hold_court.3000.a.tt
hidden_effect = {
set_variable = {
name = hold_court_sponsored_a_feast
value = scope:feast_vassal
years = 5
}
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_honor = medium_chance_impact_negative_ai_value # Honorable characters tend to agree to fair deals
ai_greed = medium_chance_impact_positive_ai_value # Greedy characters don't necessarily want a "fair" deal
}
}
}
# Option C: Persuade them to change the deal
option = {
name = hold_court.3000.c
trigger = {
OR = {
has_lifestyle = diplomacy_lifestyle
diplomacy >= high_skill_rating
has_education_diplomacy_trigger = yes
}
}
duel = {
skill = diplomacy
value = 10
30 = {
desc = hold_court.3000.c.success
compare_modifier = {
value = scope:duel_value
multiplier = 0.5
}
hidden_effect = {
set_variable = {
name = hold_court_sponsored_a_feast
value = scope:feast_vassal
years = 5
}
}
send_interface_toast = {
title = hold_court.3000.t
left_icon = scope:feast_vassal
custom_tooltip = hold_court.3000.c.success
}
}
10 = {
desc = hold_court.3000.c.failure
scope:feast_vassal = {
add_opinion = {
modifier = ep1_rejected_sponsoring_a_feast_opinion
target = root
}
}
send_interface_toast = {
title = hold_court.3000.t
left_icon = scope:feast_vassal
custom_tooltip = hold_court.3000.c.failure
}
}
}
ai_chance = {
base = 15
modifier = {
OR = {
has_lifestyle = diplomacy_lifestyle
diplomacy >= high_skill_rating
has_education_diplomacy_trigger = yes
}
add = 40
}
ai_value_modifier = {
ai_honor = medium_chance_impact_positive_ai_value # Honorable characters tend to agree to fair deals
ai_greed = medium_chance_impact_positive_ai_value # Greedy characters don't necessarily want a "fair" deal
}
}
}
# Option D: Reject
option = {
name = hold_court.3000.d
scope:feast_vassal = {
add_opinion = {
modifier = ep1_rejected_sponsoring_a_feast_opinion
target = root
}
}
ai_chance = {
base = 15
modifier = {
OR = {
has_trait = reclusive
has_trait = shy
}
add = 40
}
modifier = {
gold < -100 #AI should want to take the loan if out of money
add = -100
}
}
}
after = {
add_character_flag = {
flag = hold_court_3000_a_feast_in_your_name
years = 5
}
scope:feast_vassal = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
# Follow-up event Gain some GSV
hold_court.3001 = {
type = character_event
title = hold_court.3000.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:feast_vassal = { is_alive = yes }
}
desc = hold_court.3001.desc
}
triggered_desc = {
desc = hold_court.3001.desc.dead
}
}
}
theme = court
left_portrait = {
character = root
animation = happiness
}
right_portrait = {
character = scope:feast_vassal
animation = happiness
}
trigger = {
has_character_flag = hold_court_3000_a_feast_in_your_name
has_variable = hold_court_sponsored_a_feast
}
immediate = {
var:hold_court_sponsored_a_feast = {
save_scope_as = feast_vassal
}
remove_variable = hold_court_sponsored_a_feast
}
# Option A: Celebrate your success!
option = {
name = hold_court.3001.a
trigger = {
scope:feast_vassal = { is_alive = yes }
}
ai_chance = {
base = 1
}
}
# Option B: Celebrate your success, even if the vassal is dead!
option = {
name = hold_court.3001.b
trigger = {
scope:feast_vassal = { is_alive = no }
}
ai_chance = {
base = 1
}
}
after = {
change_current_court_grandeur = medium_court_grandeur_gain
}
}
#####################################
# An Unconventional Preacher #
# by Bianca Savazzi #
# 3010 #
#####################################
scripted_trigger court_3010_an_unconventional_preacher_vassal_trigger = {
faith = root.faith
is_available_healthy_ai_adult = yes
has_court_event_flag = no
save_temporary_scope_as = unconventional_preacher_temp
}
# Vassal requests investigation of an unorthodox preacher. Another pleas for more tolerance or even a change in doctrines.
hold_court.3010 = {
type = court_event
title = hold_court.3010.t
desc = {
desc = hold_court.3010.desc.opening
first_valid = {
triggered_desc = {
trigger = {
faith = {
OR = {
has_doctrine = doctrine_clerical_gender_male_only
has_doctrine = doctrine_clerical_gender_female_only
}
}
}
desc = hold_court.3010.desc.preacher_gender
}
}
desc = hold_court.3010.desc.closing
}
theme = court
lower_center_portrait = scope:unconventional_preacher
cooldown = { years = 5 }
court_scene = {
button_position_character = scope:religious_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:religious_vassal = {
group = petitioners_group
animation = personality_zealous
}
scope:tolerant_vassal = {
group = petitioners_group
animation = personality_forgiving
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
any_vassal = {
court_3010_an_unconventional_preacher_vassal_trigger = yes
count >= 2
}
faith = {
# Faith requires some restriction on who can practise it for the event to make sense
NOT = {
has_doctrine = doctrine_clerical_gender_either
}
}
OR = {
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher_temp
COURT_POS = high_almoner_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher_temp
COURT_POS = court_artificer_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher_temp
COURT_POS = court_physician_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher_temp
COURT_POS = chief_qadi_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher_temp
COURT_POS = court_tutor_court_position
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
if = {
limit = {
faith = { has_doctrine_parameter = clergy_must_be_male }
}
create_character = {
template = virtuous_priest_character_template
location = root.capital_province
gender = female
dynasty = none
save_scope_as = unconventional_preacher
}
}
else_if = {
limit = {
faith = { has_doctrine_parameter = clergy_must_be_female }
}
create_character = {
template = virtuous_priest_character_template
location = root.capital_province
gender = male
dynasty = none
save_scope_as = unconventional_preacher
}
}
else = {
create_character = {
template = virtuous_priest_character_template
location = root.capital_province
gender_female_chance = 50
dynasty = none
save_scope_as = unconventional_preacher
}
}
hidden_effect = {
# We add them to court so that they can become high almoner, but hide that from the tooltip
add_courtier = scope:unconventional_preacher
}
random_vassal = {
limit = { court_3010_an_unconventional_preacher_vassal_trigger = yes }
weight = {
base = 1
modifier = {
add = 10
has_trait = zealous
}
modifier = {
add = 5
OR = {
has_trait = stubborn
has_trait = diligent
has_trait = impatient
}
}
modifier = {
add = -3
OR = {
has_trait = forgiving
has_trait = compassionate
}
}
modifier = {
add = -5
OR = {
has_trait = cynical
any_secret = {
type = secret_non_believer
}
}
}
modifier = {
add = 2
has_council_position = councillor_court_chaplain #Slight pivot towards picking
}
}
save_scope_as = religious_vassal
court_event_character_flag_effect = yes
}
random_vassal = {
limit = {
this != scope:religious_vassal
court_3010_an_unconventional_preacher_vassal_trigger = yes
}
weight = {
base = 1
modifier = {
add = -10
has_trait = zealous
}
modifier = {
add = 5
OR = {
has_trait = forgiving
has_trait = compassionate
}
}
modifier = {
add = 5
OR = {
has_trait = cynical
any_secret = {
type = secret_non_believer
}
}
}
modifier = {
add = 2
has_council_position = councillor_court_chaplain
}
}
save_scope_as = tolerant_vassal
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
# Option A: Leave the preacher alone
option = {
trigger = {
OR = {
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher
COURT_POS = court_artificer_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher
COURT_POS = court_physician_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher
COURT_POS = chief_qadi_court_position
}
}
}
name = hold_court.3010.a
reverse_add_opinion = {
target = scope:religious_vassal
modifier = impious_opinion
opinion = -10
}
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher
COURT_POS = chief_qadi_court_position
}
}
employ_character_as_position_in_current_scope_court_effect = {
CHARACTER = scope:unconventional_preacher
POSITION = chief_qadi
}
}
else_if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher
COURT_POS = court_artificer_court_position
}
}
employ_character_as_position_in_current_scope_court_effect = {
CHARACTER = scope:unconventional_preacher
POSITION = court_artificer
}
}
else_if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher
COURT_POS = court_physician_court_position
}
}
employ_character_as_position_in_current_scope_court_effect = {
CHARACTER = scope:unconventional_preacher
POSITION = court_physician
}
}
ai_chance = {
base = 15
modifier = {
gold < tiny_gold_value # AI won't hire positions if they don't have money
add = -15
}
ai_value_modifier = {
ai_zeal = medium_chance_impact_negative_ai_value # Zealous characters don't like unconventional preachers
}
}
}
# Option C: Appoint them as your almoner
option = {
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher
COURT_POS = high_almoner_court_position
}
}
name = hold_court.3010.c
reverse_add_opinion = {
target = scope:religious_vassal
modifier = impious_opinion
opinion = -10
}
employ_character_as_position_in_current_scope_court_effect = {
CHARACTER = scope:unconventional_preacher
POSITION = high_almoner
}
ai_chance = {
base = 15
modifier = {
gold < tiny_gold_value # AI won't hire positions if they don't have money
add = -15
}
ai_value_modifier = {
ai_zeal = medium_chance_impact_negative_ai_value # Zealous characters don't like unconventional preachers
}
}
}
# Option D: Invite the preacher to serve as court tutor
option = {
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:unconventional_preacher
COURT_POS = court_tutor_court_position
}
}
name = hold_court.3010.d
reverse_add_opinion = {
target = scope:religious_vassal
modifier = impious_opinion
opinion = -10
}
employ_character_as_position_in_current_scope_court_effect = {
CHARACTER = scope:unconventional_preacher
POSITION = court_tutor
}
ai_chance = {
base = 15
modifier = {
gold < tiny_gold_value # AI won't hire positions if they don't have money
add = -15
}
ai_value_modifier = {
ai_zeal = medium_chance_impact_negative_ai_value # Zealous characters don't like unconventional preachers
}
}
}
# Option B: Punish the preacher
option = {
name = hold_court.3010.b
scope:unconventional_preacher = {
silent_disappearance_effect = yes
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_zeal = medium_chance_impact_positive_ai_value # Zealous characters don't like unconventional preachers
ai_compassion = medium_chance_impact_negative_ai_value # Compassionate characters rather not punish those who do good
}
}
}
after = {
scope:tolerant_vassal = {
clear_court_event_participation = yes
}
scope:religious_vassal = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
#####################################
# Culture Clash: Offensive Monument #
# by Bianca Savazzi #
# 3020 #
#####################################
scripted_trigger hold_court_3020_peasant_trigger = {
basic_is_available_ai = yes
is_adult = yes
is_lowborn = yes
has_court_event_flag = no
#culture is left out for reusability
}
scripted_trigger hold_court_3020_valid_barony = {
tier = tier_barony
holder ?= {
this != root
culture = root.culture
has_court_event_flag = no
}
}
# Peasants of another culture want to restore a controversial monument that mocks yours
hold_court.3020 = {
type = court_event
title = hold_court.3020.t
desc = hold_court.3020.desc
theme = court
cooldown = { years = 5 }
court_scene = {
button_position_character = scope:holder_of_area
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:holder_of_area = {
group = petitioners_group
animation = shock
}
scope:different_culture_peasant = {
group = petitioners_group
animation = anger
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
any_held_title = {
title_tier = county
any_in_de_jure_hierarchy = {
hold_court_3020_valid_barony = yes
}
culture != root.culture
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
random_held_title = {
title_tier = county
limit = {
any_in_de_jure_hierarchy = {
hold_court_3020_valid_barony = yes
}
culture != root.culture
}
random_in_de_jure_hierarchy = {
limit = {
hold_court_3020_valid_barony = yes
}
save_scope_as = village
holder = {
save_scope_as = holder_of_area
court_event_character_flag_effect = yes
}
county = { save_scope_as = village_county }
}
}
# Try to fetch an existing character
if = {
limit = {
any_pool_guest = {
hold_court_3020_peasant_trigger = yes
culture = scope:village.culture
}
}
random_pool_guest = {
limit = {
hold_court_3020_peasant_trigger = yes
culture = scope:village.culture
}
add_trait = peasant_leader
save_scope_as = different_culture_peasant
court_event_character_flag_effect = yes
}
}
else = { # else, make one for the event
create_character = {
template = servant_character
location = scope:village.title_province
culture = scope:village.title_province.culture
dynasty = none
trait = peasant_leader
save_scope_as = different_culture_peasant
}
add_character_flag = created_character_hold_court_3020
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
# Option C: Build something marrying the two cultures
option = {
name = hold_court.3020.c
trigger = {
has_trait = eccentric
}
remove_treasury_or_gold = medium_treasury_or_gold_value
every_held_title = {
title_tier = county
limit = {
culture = scope:village.culture
}
custom = every_county_of_culture
add_county_modifier = {
modifier = 3020_multicultural_monument
years = 15
}
}
scope:village.culture = {
change_cultural_acceptance = {
target = root.culture
value = medium_positive_culture_acceptance
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_greed = medium_chance_impact_negative_ai_value # SPeNd rEsouRcEs!?
ai_compassion = high_chance_impact_positive_ai_value # Compassionate characters don't like punishing others
}
modifier = {
factor = 0
short_term_treasury_or_gold < medium_treasury_or_gold_value
}
}
}
# Option A: Destroy the statue and build one for YOUR culture!
option = {
name = hold_court.3020.a
add_dread = minor_dread_gain
every_held_title = {
title_tier = county
limit = {
culture = scope:village.culture
}
custom = every_county_of_culture
add_county_modifier = {
modifier = 3020_own_culture_monument
years = 15
}
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_vengefulness = medium_chance_impact_positive_ai_value # Vengeful characters don't like being mocked
ai_compassion = medium_chance_impact_negative_ai_value # Compassionate characters don't like punishing others
}
}
}
# Option B: Accept
option = {
name = hold_court.3020.b
remove_treasury_or_gold = minor_treasury_or_gold_value
every_held_title = {
title_tier = county
limit = {
culture = scope:village.culture
}
custom = every_county_of_culture
add_county_modifier = {
modifier = hold_court_grateful_peasants_modifier
years = 15
}
}
scope:village.culture = {
change_cultural_acceptance = {
target = root.culture
value = low_positive_culture_acceptance
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_greed = medium_chance_impact_negative_ai_value # SPend resources!?
ai_compassion = medium_chance_impact_positive_ai_value # Compassionate characters don't like punishing others
}
modifier = {
factor = 0
short_term_treasury_or_gold < minor_treasury_or_gold_value
}
}
}
after = {
if = {
limit = { has_character_flag = created_character_hold_court_3020 }
hidden_effect = {
scope:different_culture_peasant = {
clear_court_event_participation = yes
death = {
death_reason = death_vanished
}
}
remove_character_flag = created_character_hold_court_3020
}
}
scope:holder_of_area = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
#####################################
# War Restorations #
# by Bianca Savazzi #
# 3030 #
#####################################
# Peasants of another culture want to restore a monument that was looted during war
hold_court.3030 = {
type = court_event
title = hold_court.3030.t
desc = hold_court.3030.desc
theme = court
cooldown = { years = 5 }
court_scene = {
button_position_character = scope:different_culture_peasant
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:different_culture_peasant = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
is_at_war = no
days_of_continuous_peace < 600
any_directly_owned_province = {
culture != root.culture
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
random_directly_owned_province = {
limit = {
culture != root.culture
}
weight = {
base = 1
modifier = {
add = 10
has_free_building_slot = yes
}
}
save_scope_as = province
}
# Try to fetch an existing character
if = {
limit = {
any_pool_guest = {
hold_court_3020_peasant_trigger = yes
culture = scope:province.culture
}
}
random_pool_guest = {
limit = {
hold_court_3020_peasant_trigger = yes
culture = scope:province.culture
}
add_trait = peasant_leader
save_scope_as = different_culture_peasant
court_event_character_flag_effect = yes
}
}
else = { # else, make one for the event
create_character = {
template = servant_character
location = scope:province
culture = scope:province.culture
dynasty = none
trait = peasant_leader
save_scope_as = different_culture_peasant
}
scope:different_culture_peasant = {
court_event_character_flag_effect = yes
}
add_character_flag = created_character_hold_court_3030
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
# Option A: Pay to restore the building
option = {
name = hold_court.3030.a
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= major_treasury_or_gold_value
}
}
remove_treasury_or_gold = medium_treasury_or_gold_value
stress_impact = {
greedy = medium_stress_gain
generous = medium_stress_loss
improvident = medium_stress_loss
}
scope:province.culture = {
change_cultural_acceptance = {
target = root.culture
value = low_positive_culture_acceptance
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
}
# Option B: Raze monument to use the materials elsewhere
option = {
name = hold_court.3030.b
trigger = {
scope:province = { has_free_building_slot = yes }
}
stress_impact = {
greedy = medium_stress_loss
}
scope:province = {
add_province_modifier = {
modifier = hold_court_less_building_cost_modifier
days = 3650
}
}
scope:province.culture = {
change_cultural_acceptance = {
target = root.culture
value = medium_negative_culture_acceptance
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
}
# Option C: Refuse
option = {
name = hold_court.3030.c
stress_impact = {
generous = medium_stress_gain
improvident = medium_stress_gain
}
scope:province = {
county = {
add_county_modifier = {
modifier = hold_court_displeased_peasants_modifier
years = 5
}
}
}
}
after = {
if = {
limit = { has_character_flag = created_character_hold_court_3030 }
hidden_effect = {
scope:different_culture_peasant = {
clear_court_event_participation = yes
death = {
death_reason = death_vanished
}
}
remove_character_flag = created_character_hold_court_3030
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
#####################################
# Laughs Requested #
# by Bianca Savazzi #
# 3040 #
#####################################
# Vassal/Courtier petitions for the recruitment of a jester
hold_court.3040 = {
type = court_event
title = hold_court.3040.t
desc = hold_court.3040.desc
theme = court
lower_center_portrait = scope:potential_jester
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:jester_requester
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:jester_requester = {
group = petitioners_group
animation = happiness
}
scope:kill_joy = {
group = petitioners_group
animation = dismissal
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
NOT = {
employs_court_position = court_jester_court_position
}
can_employ_court_position_type = court_jester_court_position
any_vassal = {
is_available_ai_adult = yes
has_court_event_flag = no
save_temporary_scope_as = extroverted_vassal_check
}
any_vassal = {
is_available_ai_adult = yes
has_court_event_flag = no
this != scope:extroverted_vassal_check
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
random_vassal = {
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
}
weight = {
base = 1
modifier = {
has_personality_extroverted_trigger = yes
add = 10
}
modifier = {
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
add = 5
}
}
save_scope_as = jester_requester
court_event_character_flag_effect = yes
assign_quirk_effect = yes # So that they have a quirk in loc
create_character = {
template = pool_repopulate_diplomacy
location = scope:jester_requester.location
dynasty = none #It has to be a lowborn
save_scope_as = potential_jester
}
}
hidden_effect = { add_courtier = scope:potential_jester } # So they're considered valid for the position
random_vassal = {
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
this != scope:jester_requester
}
weight = {
base = 1
modifier = {
has_trait_introverted_trigger = yes
add = 10
}
modifier = {
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
add = 5
}
}
save_scope_as = kill_joy
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
# Option A: Employ peasant
option = {
name = hold_court.3040.a
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:potential_jester
COURT_POS = court_jester_court_position
}
}
hidden_effect = {
reverse_add_opinion = {
target = scope:potential_jester
modifier = loyal_servant
}
}
court_position_grant_effect = {
EMPLOYER = root
POS = court_jester
CANDIDATE = scope:potential_jester
}
custom_tooltip = {
text = generic_cp_discount_tt
scope:potential_jester = {
add_character_flag = cp_discount
}
}
reverse_add_opinion = {
target = scope:jester_requester
modifier = pleased_opinion
opinion = 20
}
ai_chance = {
base = 5
modifier = {
has_trait_extroverted_trigger = yes
add = 2
}
modifier = {
short_term_gold >= medium_gold_value
add = 5
}
ai_value_modifier = {
ai_greed = tiny_chance_impact_negative_ai_value #Recruiting this person means less cost to find a jester
}
}
}
# Option B: Employ jester requester as jester
option = {
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:jester_requester
COURT_POS = court_jester_court_position
}
}
name = hold_court.3040.b
court_position_grant_effect = {
EMPLOYER = root
POS = court_jester
CANDIDATE = scope:jester_requester
}
hidden_effect = {
scope:potential_jester = {
death = {
death_reason = death_vanished #Ripperoni
}
}
}
ai_chance = {
base = 5
modifier = {
opinion = {
target = scope:jester_requester
value <= low_positive_opinion
}
add = 5
}
modifier = {
has_trait = arbitrary
add = 5
}
modifier = {
short_term_gold >= medium_gold_value
add = 5
}
}
}
# Option C: Employ killjoy as jester
option = {
name = hold_court.3040.c
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:kill_joy
COURT_POS = court_jester_court_position
}
}
court_position_grant_effect = {
EMPLOYER = root
POS = court_jester
CANDIDATE = scope:kill_joy
}
scope:kill_joy = {
progress_towards_rival_effect = {
CHARACTER = root
REASON = rival_killjoy_jester
OPINION = -20
}
}
reverse_add_opinion = {
target = scope:jester_requester
modifier = pleased_opinion
opinion = 35
}
hidden_effect = {
scope:potential_jester = {
death = {
death_reason = death_vanished
}
}
}
ai_chance = {
base = 5
modifier = {
opinion = {
target = scope:kill_joy
value <= low_positive_opinion
}
add = 5
}
modifier = {
has_trait = arbitrary
add = 5
}
modifier = {
short_term_gold >= medium_gold_value
add = 5
}
}
}
# Option E: Do nothing
option = {
name = hold_court.3040.e
hidden_effect = {
scope:potential_jester = {
death = {
death_reason = death_vanished
}
}
}
ai_chance = {
base = 2
modifier = {
has_trait_introverted_trigger = yes
add = 2
}
modifier = {
short_term_gold < medium_gold_value
add = 5
}
}
}
after = {
scope:jester_requester = {
clear_court_event_participation = yes
}
scope:kill_joy = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
#####################################
# Addressing the Corruption #
# by Bianca Savazzi #
# 3060 #
#####################################
scripted_trigger hold_court_3060_county_and_holder_trigger = {
county_control <= low_county_control
holder = {
this != root
is_vassal_of = root
basic_is_available_ai = yes
is_adult = yes
has_court_event_flag = no
}
}
scripted_trigger hold_court_3060_replacement_candidate_trigger = {
basic_is_available_ai = yes
has_court_event_flag = no
is_adult = yes
stewardship >= mediocre_skill_rating
NOT = { is_of_major_or_minor_interest_trigger = { CHARACTER = root } }
can_be_steward_trigger = { COURT_OWNER = scope:county_petitioner }
}
scripted_effect hold_court_3060_remove_corruption = {
if = {
limit = {
scope:corrupt_county = {
has_county_modifier = county_corruption_inefficient_tax_collection_modifier
}
}
scope:corrupt_county = {
remove_county_modifier = county_corruption_inefficient_tax_collection_modifier
}
}
if = {
limit = {
scope:corrupt_county = {
has_county_modifier = county_corruption_deserting_levies_modifier
}
}
scope:corrupt_county = {
remove_county_modifier = county_corruption_deserting_levies_modifier
}
}
if = {
limit = {
scope:corrupt_county = {
has_county_modifier = county_corruption_lackluster_administration_modifier
}
}
scope:corrupt_county = {
remove_county_modifier = county_corruption_lackluster_administration_modifier
}
}
if = {
limit = {
scope:corrupt_county = {
has_county_modifier = county_corruption_uncooperative_guilds_modifier
}
}
scope:corrupt_county = {
remove_county_modifier = county_corruption_uncooperative_guilds_modifier
}
}
if = {
limit = {
scope:corrupt_county = {
has_county_modifier = county_corruption_lack_of_sheriffs_modifier
}
}
scope:corrupt_county = {
remove_county_modifier = county_corruption_lack_of_sheriffs_modifier
}
}
if = {
limit = {
scope:corrupt_county = {
has_county_modifier = county_corruption_lack_of_courts_modifier
}
}
scope:corrupt_county = {
remove_county_modifier = county_corruption_lack_of_courts_modifier
}
}
if = {
limit = {
scope:corrupt_county = {
has_county_modifier = county_corruption_bandits_rampant_modifier
}
}
scope:corrupt_county = {
remove_county_modifier = county_corruption_bandits_rampant_modifier
}
}
if = {
limit = {
scope:corrupt_county = {
has_county_modifier = county_corruption_unsafe_highways_modifier
}
}
scope:corrupt_county = {
remove_county_modifier = county_corruption_unsafe_highways_modifier
}
}
if = {
limit = {
scope:corrupt_county = {
has_county_modifier = county_corruption_smuggling_ring_modifier
}
}
scope:corrupt_county = {
remove_county_modifier = county_corruption_smuggling_ring_modifier
}
}
if = {
limit = {
scope:corrupt_county = {
has_county_modifier = county_corruption_thieves_guild_modifier
}
}
scope:corrupt_county = {
remove_county_modifier = county_corruption_thieves_guild_modifier
}
}
}
# Banditry is rife in a county and now a vassal is coming to you asking for help.
hold_court.3060 = {
type = court_event
title = hold_court.3060.t
desc = {
desc = hold_court.3060.desc.opening
first_valid = {
random_valid = {
triggered_desc = {
trigger = {
scope:corrupt_county = {
OR = {
has_county_modifier = county_corruption_smuggling_ring_modifier
has_county_modifier = county_corruption_thieves_guild_modifier
}
}
}
desc = hold_court.3060.desc.thieves
}
triggered_desc = {
trigger = {
scope:corrupt_county = {
OR = {
county_control <= low_county_control
has_county_modifier = county_corruption_bandits_rampant_modifier
has_county_modifier = county_corruption_unsafe_highways_modifier
}
}
}
desc = hold_court.3060.desc.bandits
}
triggered_desc = {
trigger = {
scope:corrupt_county = { has_county_modifier = county_corruption_inefficient_tax_collection_modifier }
}
desc = hold_court.3060.desc.tax
}
triggered_desc = {
trigger = {
scope:corrupt_county = { has_county_modifier = county_corruption_lack_of_sheriffs_modifier }
}
desc = hold_court.3060.desc.sheriffs
}
triggered_desc = {
trigger = {
scope:corrupt_county = { has_county_modifier = county_corruption_uncooperative_guilds_modifier }
}
desc = hold_court.3060.desc.guilds
}
triggered_desc = {
trigger = {
scope:corrupt_county = { has_county_modifier = county_corruption_deserting_levies_modifier }
}
desc = hold_court.3060.desc.levies
}
triggered_desc = {
trigger = {
scope:corrupt_county = { has_county_modifier = county_corruption_lack_of_courts_modifier }
}
desc = hold_court.3060.desc.courts
}
triggered_desc = {
trigger = {
scope:corrupt_county = {
has_county_modifier = county_corruption_inefficient_census_modifier
has_county_modifier = county_corruption_lackluster_administration_modifier
}
}
desc = hold_court.3060.desc.rulers
}
}
}
desc = hold_court.3060.desc.closing
}
theme = court
lower_left_portrait = {
trigger = {
exists = scope:cp_steward
exists = scope:cp_steward_replacement
}
character = scope:cp_steward
}
lower_right_portrait = {
trigger = {
exists = scope:cp_steward_replacement
}
character = scope:cp_steward_replacement
}
court_scene = {
button_position_character = scope:county_petitioner
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:county_petitioner = {
group = petitioners_group
animation = personality_rational
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
any_sub_realm_county = {
hold_court_3060_county_and_holder_trigger = yes
}
NOT = { has_character_flag = hold_court_3060_corrupt_county }
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
#Cooldown flag
add_character_flag = {
flag = hold_court_3060_corrupt_county
years = 10
}
random_sub_realm_county = {
limit = { hold_court_3060_county_and_holder_trigger = yes }
holder = {
save_scope_as = county_petitioner
assign_quirk_effect = yes
court_event_character_flag_effect = yes
}
save_scope_as = corrupt_county
}
# Getting random better courtier for Option D
if = {
limit = {
scope:county_petitioner = {
exists = cp:councillor_steward
is_ai = yes
}
}
scope:county_petitioner.cp:councillor_steward = { save_scope_as = cp_steward }
random_courtier = {
limit = {
hold_court_3060_replacement_candidate_trigger = yes
stewardship > scope:cp_steward.stewardship #should be better than the current one to be considered a better replacement
}
save_scope_as = cp_steward_replacement
court_event_character_flag_effect = yes
}
}
else = {
random_courtier = {
limit = {
hold_court_3060_replacement_candidate_trigger = yes
}
save_scope_as = cp_steward_replacement
court_event_character_flag_effect = yes
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
# Option A: Gold
option = {
name = hold_court.3060.a
pay_treasury_or_gold = {
target = scope:county_petitioner
value = medium_treasury_or_gold_value
}
every_sub_realm_county = {
custom = every_low_county_control
limit = { county_control <= low_county_control }
change_county_control = 20
}
hold_court_3060_remove_corruption = yes
scope:county_petitioner = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 20
}
hidden_effect = {
stress_impact = {
greedy = medium_stress_loss
}
}
}
ai_chance = {
base = 15
modifier = {
has_trait = generous
add = 5
}
modifier = {
has_trait = greedy
add = -15
}
modifier = {
short_term_treasury_or_gold <= medium_treasury_or_gold_value
factor = 0
}
}
}
# Option B: Offer a courtier
option = {
name = hold_court.3060.d
trigger = {
exists = scope:cp_steward_replacement
}
scope:county_petitioner = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 20
}
fire_councillor = scope:cp_steward
assign_councillor_type = {
type = councillor_steward
target = scope:cp_steward_replacement
}
}
every_sub_realm_county = {
custom = every_low_county_control
limit = { county_control <= low_county_control }
change_county_control = 20
}
hold_court_3060_remove_corruption = yes
ai_chance = {
base = 0
}
}
# Option C: Do nothing
option = {
name = hold_court.3060.c
ai_chance = {
base = 100
}
}
after = {
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
scope:county_petitioner = {
clear_court_event_participation = yes
}
}
}
#####################################
# Exhibiting your collection #
# by Bianca Savazzi #
# 3080 #
#####################################
# Antiquarian suggests letting people pay to see your artifacts
hold_court.3080 = {
type = court_event
title = hold_court.3080.t
desc = hold_court.3080.desc
theme = court
cooldown = { years = 5 }
court_scene = {
button_position_character = scope:antiquarian
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:antiquarian = {
group = petitioners_group
animation = happiness
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
employs_court_position = antiquarian_court_position
any_court_position_holder = {
type = antiquarian_court_position
is_physically_able_ai_adult = yes
has_court_event_flag = no
}
any_character_artifact = {
count >= 2
}
}
weight_multiplier = {
base = 1
modifier = {
add = -0.5
NOR = {
gold < minor_gold_value
prestige < minor_prestige_value
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
random_court_position_holder = {
type = antiquarian_court_position
limit = {
is_physically_able_ai_adult = yes
has_court_event_flag = no
}
save_scope_as = antiquarian
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
# Option A: Charge money
option = {
name = hold_court.3080.a
custom_tooltip = hold_court.3080.a.tt
add_gold = medium_gold_value
add_character_modifier = {
modifier = petition_event_artifact_exhibition_for_gold
years = 10
}
stress_impact = {
greedy = medium_stress_loss
arrogant = medium_stress_loss
generous = medium_stress_gain
humble = medium_stress_gain
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_greed = 1
}
modifier = {
gold < minor_gold_value
add = 5
}
}
}
# Option B: Gain Prestige
option = {
name = hold_court.3080.b
custom_tooltip = hold_court.3080.a.tt
add_prestige = medium_prestige_gain
add_character_modifier = {
modifier = petition_event_artifact_exhibition_for_prestige
years = 10
}
stress_impact = {
greedy = minor_stress_gain
arrogant = medium_stress_loss
generous = medium_stress_gain
humble = medium_stress_gain
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_greed = -0.5
ai_boldness = 1
}
modifier = {
has_trait = ambitious
add = 5
}
modifier = {
has_trait = arrogant
add = 5
}
}
}
# Option C: Not worth the risk
option = {
name = hold_court.3080.c
ai_chance = {
base = 15
modifier = {
has_trait = lazy
add = 5
}
modifier = {
has_trait = paranoid #They're already after me! Why would I invite an increased risk!?
add = 50
}
}
}
after = {
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
scope:antiquarian = {
clear_court_event_participation = yes
}
}
}
#####################################
# Celebrating another culture #
# by Bianca Savazzi #
# 3090 - 3091 #
#####################################
#A vassal of a minority culture suggest holding a festival/exhibit/faire of their minority Culture
scripted_trigger hold_court_3090_different_culture_vassal_trigger = {
culture != root.culture
culture = {
cultural_acceptance = { target = root.culture value < hybridization_threshold_value }
}
is_physically_able_ai_adult = yes
has_court_event_flag = no
}
hold_court.3090 = {
type = court_event
title = hold_court.3090.t
desc = hold_court.3090.desc
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:different_culture_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:different_culture_vassal = {
group = petitioners_group
animation = happiness
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
any_vassal = {
hold_court_3090_different_culture_vassal_trigger = yes
}
}
immediate = {
random_vassal = {
limit = {
hold_court_3090_different_culture_vassal_trigger = yes
}
save_scope_as = different_culture_vassal
court_event_character_flag_effect = yes
assign_quirk_effect = yes # So that they have a quirk in loc
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#More common if you're currently Promoting Acceptance
weight_multiplier = {
base = 0.5
modifier = {
add = 10
exists = cp:councillor_steward
cp:councillor_steward = {
is_performing_council_task = task_accept_culture
}
}
modifier = {
add = 0.5
short_term_gold < minor_gold_value
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
# Option A: Celebrate both cultures!
option = {
name = hold_court.3090.a
remove_treasury_or_gold = major_treasury_or_gold_value
culture = {
change_cultural_acceptance = {
target = scope:different_culture_vassal.culture
value = medium_positive_culture_acceptance
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
reverse_add_opinion = {
modifier = impressed_opinion
target = scope:different_culture_vassal
opinion = 40
}
if = {
limit = {
any_vassal = {
is_ai = no
has_court_event_flag = no
scope:different_culture_vassal != this
culture = scope:different_culture_vassal.culture
}
}
every_vassal = {
custom = custom.every_vassal_of_target_culture
limit = {
culture = scope:different_culture_vassal.culture
has_court_event_flag = no
is_ai = no
}
add_opinion = {
target = root
opinion = 10
modifier = respect_opinion
}
}
}
stress_impact = {
greedy = major_stress_gain #SO. MUCH. SPENT. MONEY.
arrogant = medium_stress_gain #Presenting oursselves as equals!? BAH!
compassionate = major_stress_loss #Promoting understanding between the two, yaaaaaay!
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_greed = -1
ai_boldness = 1
ai_compassion = 0.5
}
modifier = {
has_trait = compassionate
add = 50
}
modifier = {
short_term_treasury_or_gold < major_treasury_or_gold_value #AI don't do it if they can't afford it
factor = 0
}
}
}
# Option B: Their culture in the capital!
option = {
name = hold_court.3090.b
remove_treasury_or_gold = medium_treasury_or_gold_value
culture = {
change_cultural_acceptance = {
target = scope:different_culture_vassal.culture
value = low_positive_culture_acceptance
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
reverse_add_opinion = {
modifier = pleased_opinion
target = scope:different_culture_vassal
opinion = 20
}
if = {
limit = {
any_vassal = {
scope:different_culture_vassal != this
culture = scope:different_culture_vassal.culture
}
}
every_vassal = {
custom = custom.every_vassal_of_target_culture
limit = {
culture = scope:different_culture_vassal.culture
}
add_opinion = {
target = root
opinion = 5
modifier = respect_opinion
}
}
}
stress_impact = {
greedy = medium_stress_loss
arrogant = medium_stress_loss
generous = medium_stress_gain
humble = medium_stress_gain
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_greed = -0.5
}
modifier = {
short_term_treasury_or_gold < medium_treasury_or_gold_value #AI don't do it if they can't afford it
factor = 0
}
}
}
# Option C: OUR culture, in their area
option = {
name = hold_court.3090.c
remove_treasury_or_gold = minor_treasury_or_gold_value
culture = {
change_cultural_acceptance = {
target = scope:different_culture_vassal.culture
value = miniscule_positive_culture_acceptance
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
reverse_add_opinion = {
modifier = disappointed_opinion
target = scope:different_culture_vassal
opinion = -10
}
stress_impact = {
arrogant = medium_stress_loss
humble = medium_stress_gain
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_greed = 1
ai_boldness = 1
}
modifier = {
short_term_treasury_or_gold < minor_treasury_or_gold_value #AI don't do it if they can't afford it
factor = 0
}
modifier = {
has_trait = arrogant
add = 5
}
}
}
# Option D: Nah
option = {
name = hold_court.3090.d
reverse_add_opinion = {
modifier = disappointed_opinion
target = scope:different_culture_vassal
opinion = -30
}
ai_chance = {
base = 15
modifier = {
has_trait = lazy
add = 5
}
modifier = {
short_term_treasury_or_gold < minor_treasury_or_gold_value #AI won't do anything if they can't afford it
factor = 2
}
}
}
after = {
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
scope:different_culture_vassal = {
clear_court_event_participation = yes
}
}
}
#Vassal wants to peacock a culture that's close to hybridizing with your culture
scripted_trigger hold_court_3091_different_culture_vassal_trigger = {
culture != root.culture
culture = {
cultural_acceptance = { target = root.culture value >= hybridization_threshold_value }
}
is_physically_able_ai_adult = yes
has_court_event_flag = no
}
hold_court.3091 = {
type = court_event
title = hold_court.3091.t
desc = hold_court.3091.desc
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:same_culture_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:same_culture_vassal = {
group = petitioners_group
animation = happiness
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
any_vassal = {
hold_court_3091_different_culture_vassal_trigger = yes
}
any_vassal = {
culture = root.culture
is_physically_able_ai_adult = yes
has_court_event_flag = no
}
}
immediate = {
random_vassal = {
limit = {
hold_court_3091_different_culture_vassal_trigger = yes
}
save_scope_as = different_culture_vassal #Used to track the culture that's close to hybridization
}
random_vassal = {
limit = {
culture = root.culture
is_physically_able_ai_adult = yes
has_court_event_flag = no
}
weight = {
base = 1
ai_value_modifier = {
ai_compassion = -1 #More likely to pick a vassal with less compassion and understanding
}
modifier = {
add = 10
has_trait = arrogant #believes they are better
}
modifier = {
add = 10
has_trait = zealous #zealous and not tolerant
faith = { NOT = { has_doctrine = doctrine_pluralism_pluralistic } }
}
}
save_scope_as = same_culture_vassal
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#More common if you're currently Promoting Culture
weight_multiplier = {
base = 0.5
modifier = {
add = 10
exists = cp:councillor_steward
cp:councillor_steward = {
is_performing_council_task = task_promote_culture
}
}
modifier = {
add = 0.5
short_term_gold < minor_gold_value
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
# Option A: Peacocking to the max, strut your culture struff
option = {
name = hold_court.3091.a
add_prestige = major_prestige_gain
culture = {
change_cultural_acceptance = {
target = scope:different_culture_vassal.culture
value = low_negative_culture_acceptance
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
reverse_add_opinion = {
modifier = impressed_opinion
target = scope:same_culture_vassal
opinion = 40
}
every_vassal = {
custom = custom.every_vassal_of_target_culture
limit = {
culture = scope:different_culture_vassal.culture
}
add_opinion = {
target = root
opinion = -10
modifier = annoyed_opinion
}
}
stress_impact = {
arrogant = major_stress_loss #Yeah, we awesome
humble = major_stress_gain #I don't think we should claim to be better
compassionate = major_stress_gain #but... why not understanding between us?
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_greed = 1
ai_boldness = 1
ai_compassion = -0.5
}
}
}
# Option B: Humblebrag
option = {
name = hold_court.3091.b
add_prestige = medium_prestige_gain
culture = {
change_cultural_acceptance = {
target = scope:different_culture_vassal.culture
value = miniscule_negative_culture_acceptance
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
reverse_add_opinion = {
modifier = pleased_opinion
target = scope:same_culture_vassal
opinion = 20
}
every_vassal = {
custom = custom.every_vassal_of_target_culture
limit = {
culture = scope:different_culture_vassal.culture
}
add_opinion = {
target = root
opinion = -5
modifier = annoyed_opinion
}
}
stress_impact = {
arrogant = medium_stress_loss
generous = medium_stress_gain
humble = medium_stress_gain
}
ai_chance = {
base = 15
ai_value_modifier = {
ai_greed = -0.5
}
}
}
# Option C: Nah
option = {
name = hold_court.3091.c
reverse_add_opinion = {
modifier = disappointed_opinion
target = scope:same_culture_vassal
opinion = -30
}
ai_chance = {
base = 15
modifier = {
has_trait = lazy
add = 5
}
}
}
after = {
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
scope:same_culture_vassal = {
clear_court_event_participation = yes
}
}
}
##################################################
# Isabella
##################################################
# 4001 Scourge - Your heir is a terrible person, vassals request new heir
# 4500 Endless Poetry - Great Poet appears at court
# 4600 SheHe who makes a Beast out of HerHimself... - Peasants are convinced tyrannical ruler is an actual monster
# 4700 An End to Agony - Vassals discuss the state of your prisons
# 4800 I Should Like a Veal Cutlet - House arrest prisoner demands fancy dinner
# 4900 In Ancient Times... - Dodgy genealogist offers to trace your lineage back to mythic heroes
##################################################
##################################################
# Scourge
# by Isabella Welch
# 4001
##################################################
# Your heir is a terrible person, vassals request new heir
hold_court.4001 = {
type = court_event
title = hold_court.4001.t
desc = {
desc = hold_court.4001.desc.intro
first_valid = {
triggered_desc = {
trigger = {
has_character_flag = heir_gets_in_street_fights
}
desc = hold_court.4001.heir_street_fight
}
triggered_desc = {
trigger = {
has_character_flag = heir_robbed_me
}
desc = hold_court.4001.heir_robbery
}
triggered_desc = {
trigger = {
has_character_flag = heir_lives_in_tavern
}
desc = hold_court.4001.heir_tavern
}
triggered_desc = {
trigger = {
has_character_flag = heir_poor_diplomat
}
desc = hold_court.4001.heir_diplomacy_failure
}
triggered_desc = {
trigger = {
has_character_flag = heir_personally_hated
}
desc = hold_court.4001.heir_hated
}
}
first_valid = {
triggered_desc = {
trigger = {
has_character_flag = has_protective_spouse
}
desc = hold_court.4001.protective_parent
}
desc = hold_court.4001.accusation_default
}
desc = hold_court.4001.heir_admission
}
theme = diplomacy_family_focus
lower_left_portrait = scope:protective_parent
lower_right_portrait = scope:preferred_heir
court_scene = {
button_position_character = scope:annoyed_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:annoyed_vassal = {
group = petitioners_group
animation = rage
}
scope:annoying_heir = {
group = petitioners_group
animation = scheme
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
NOT = { has_character_flag = has_had_disliked_heir_event }
any_vassal = {
count >= 1
has_court_event_flag = no
is_ai = yes
}
root.primary_heir = {
has_court_event_flag = no
is_ai = yes
age >= 13
is_player_heir_of = root
is_child_of = root
OR = {
has_trait = arrogant
has_trait = arbitrary
has_trait = wrathful
has_trait = sadistic
has_trait = lunatic
has_trait = callous
has_trait = drunkard
has_trait = deceitful
has_trait = greedy
has_trait = lazy
has_trait = lustful
has_trait = stubborn
has_trait = rakish
has_trait = fornicator
has_trait = adulterer
has_trait = deviant
has_trait = rowdy
has_trait = murderer
has_trait = vengeful
has_trait = torturer
any_vassal = {
opinion = {
target = root.primary_heir
value <= medium_negative_opinion
}
}
diplomacy <= low_skill_rating
}
}
any_child = {
NOT = { is_player_heir_of = root }
NOT = { has_trait = bastard }
has_court_event_flag = no
is_ai = yes
character_gender_can_inherit_from_trigger = { CHARACTER = root }
is_child_of = root
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue }
}
immediate = {
save_scope_as = actor # for loc
add_character_flag = {
flag = has_had_disliked_heir_event
days = 1825
}
primary_heir = {
save_scope_as = annoying_heir
court_event_character_flag_effect = yes
}
random_child = {
limit = {
NOT = { is_player_heir_of = root }
NOT = { has_trait = bastard }
has_court_event_flag = no
character_gender_can_inherit_from_trigger = { CHARACTER = root }
is_child_of = root
is_ai = yes
}
court_event_character_flag_effect = yes
save_scope_as = preferred_heir
}
random_vassal = {
weight = {
base = 1
modifier = {
has_relation_rival = scope:annoying_heir
factor = 20
}
modifier = {
factor = 20
opinion = {
target = scope:annoying_heir
value <= medium_negative_opinion
}
}
modifier = {
factor = 5
is_powerful_vassal = yes
}
}
limit = {
is_ai = yes
has_court_event_flag = no
NOT = {
scope:annoying_heir = {
is_child_of = prev
}
}
}
save_scope_as = annoyed_vassal
court_event_character_flag_effect = yes
}
if = {
limit = {
any_spouse = {
is_parent_of = scope:annoying_heir
has_court_event_flag = no
is_ai = no
}
}
random_spouse = {
limit = {
is_parent_of = scope:annoying_heir
has_court_event_flag = no
is_ai = no
}
save_scope_as = protective_parent
}
add_character_flag = has_protective_spouse
}
if = {
limit = {
scope:annoying_heir = {
OR = {
has_trait = wrathful
has_trait = sadistic
has_trait = vengeful
has_trait = torturer
has_trait = murderer
has_trait = callous
has_trait = stubborn
}
}
}
add_character_flag = heir_gets_in_street_fights
}
else_if = {
limit = {
scope:annoying_heir = {
OR = {
has_trait = greedy
has_trait = arrogant
has_trait = deceitful
has_trait = arbitrary
has_trait = lunatic
}
}
}
add_character_flag = heir_robbed_me
}
else_if = {
limit = {
scope:annoying_heir = {
OR = {
has_trait = drunkard
has_trait = lazy
has_trait = fornicator
has_trait = lustful
has_trait = adulterer
has_trait = rakish
has_trait = rowdy
}
}
}
add_character_flag = heir_lives_in_tavern
}
else_if = {
limit = {
scope:annoying_heir = {
diplomacy <= low_skill_rating
}
}
add_character_flag = heir_poor_diplomat
}
else = {
add_character_flag = heir_personally_hated
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = {
name = hold_court.4001.b
set_designated_heir = scope:preferred_heir
scope:annoying_heir = {
disinherit_effect = { DISINHERITOR = root }
}
stress_impact = {
family_first = medium_stress_gain
}
every_courtier_or_guest = {
custom = all_courtiers_and_guests
add_opinion = {
opinion = 15
target = root
modifier = grateful_opinion
}
}
ai_chance = {
base = 25
ai_value_modifier = {
ai_vengefulness = 0.75
ai_rationality = -0.5
ai_sociability = 0.5
}
}
}
option = {
name = hold_court.4001.d
trigger = {
scope:preferred_heir = {
NOR = {
has_trait = arrogant
has_trait = arbitrary
has_trait = wrathful
has_trait = sadistic
has_trait = lunatic
has_trait = callous
has_trait = drunkard
has_trait = deceitful
has_trait = greedy
has_trait = lazy
has_trait = lustful
has_trait = stubborn
has_trait = rakish
has_trait = fornicator
has_trait = adulterer
has_trait = deviant
has_trait = rowdy
has_trait = murderer
has_trait = vengeful
has_trait = torturer
}
}
scope:annoying_heir = {
number_of_commander_traits > 0
}
}
scope:annoying_heir = {
if = {
limit = {
NOT = { has_trait = reckless }
}
add_trait = reckless
}
add_prowess_skill = 4
}
ai_chance = {
base =50
ai_value_modifier = {
ai_boldness = 0.5
}
}
}
option = {
name = hold_court.4001.a
add_legitimacy = miniscule_legitimacy_gain
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = -0.75
ai_rationality = -0.5
ai_sociability = -0.5
}
}
}
after = {
remove_character_flag = heir_personally_hated
remove_character_flag = heir_poor_diplomat
remove_character_flag = heir_lives_in_tavern
remove_character_flag = heir_robbed_me
remove_character_flag = heir_gets_in_street_fights
remove_character_flag = has_protective_spouse
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
scope:annoyed_vassal = {
clear_court_event_participation = yes
}
scope:annoying_heir = {
clear_court_event_participation = yes
}
}
}
##################################################
# Endless Poetry
# by Isabella Welch
# 4500
##################################################
# Demanding poet!
scripted_trigger demanding_poet_scripted_gender_trigger = {
primary_title = {
OR = {
has_title_law = female_only_law
has_title_law = female_preference_law
}
}
NOT = { root.faith = { has_doctrine_parameter = clergy_must_be_male } }
}
hold_court.4500 = {
type = court_event
title = hold_court.4500.t
desc = hold_court.4500.desc
theme = learning_scholarship_focus
court_scene = {
button_position_character = scope:demanding_poet
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:demanding_poet = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
is_ai = no
NOT = {
has_character_flag = has_had_demanding_poet_event
NOT = { has_free_council_slot = yes }
}
can_employ_court_position_type = court_poet_court_position
NOT = { employs_court_position = court_poet_court_position }
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
add_character_flag = {
flag = has_had_demanding_poet_event
days = 7300
}
save_scope_as = realm_holder
if = {
limit = { demanding_poet_scripted_gender_trigger = yes }
create_character = {
location = root.capital_province
template = demanding_poet_character
gender = female
save_scope_as = demanding_poet
}
}
else = {
create_character = {
location = root.capital_province
template = demanding_poet_character
gender = male
save_scope_as = demanding_poet
}
}
hidden_effect = {
add_courtier = scope:demanding_poet
scope:demanding_poet = {
give_nickname = nick_the_poet
court_event_character_flag_effect = yes
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = {
name = hold_court.4500.b
change_current_court_grandeur = minor_court_grandeur_gain
replace_existing_position_with_character_in_current_scope_court_effect = {
CHARACTER = scope:demanding_poet
POSITION = court_poet_court_position
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -0.25
ai_rationality = 0.75
}
}
}
option = {
name = hold_court.4500.a
scope:demanding_poet = { silent_disappearance_effect = yes }
stress_impact = {
lifestyle_poet = minor_stress_gain
journaller = medium_stress_gain
arbitrary = minor_stress_gain
}
ai_chance = {
base = 75
ai_value_modifier = {
ai_boldness = -0.25
ai_rationality = 0.75
}
}
}
after = {
scope:demanding_poet = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# SheHe who makes a Beast out of HerHimself...
# by Isabella Welch
# 4600
##################################################
scripted_trigger cannibal_follow_up_trigger = {
scope:possible_cannibal_ruler = {
is_alive = yes
is_cannibal_trigger = no
}
scope:cannibal_vassal = {
is_alive = yes
is_cannibal_trigger = yes
is_ai = yes
has_court_event_flag = no
}
}
# Peasants are convinced you're a literal monster
hold_court.4600 = {
type = court_event
title = hold_court.4600.t
desc = hold_court.4600.desc
theme = intrigue_intimidation_focus
override_background = {
reference = throne_room
}
lower_left_portrait = scope:chancellor
court_scene = {
button_position_character = scope:challenger_peasant
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:challenger_peasant = {
group = petitioners_group
animation = rage
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
NOT = { has_character_flag = has_had_monstrous_ruler_event }
OR = {
tyranny >= medium_tyranny
has_trait = torturer
has_trait = schemer
has_trait = sadistic
AND = {
is_witch_trigger = yes
trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = witch GENDER_CHARACTER = root }
}
AND = {
is_cannibal_trigger = yes
trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = cannibal GENDER_CHARACTER = root }
}
}
OR = { # I care about dread
has_focus = intrigue_skulduggery_focus
has_focus = intrigue_intimidation_focus
has_focus = diplomacy_majesty_focus
has_focus = martial_authority_focus
dread <= low_dread
}
exists = cp:councillor_chancellor
cp:councillor_chancellor = {
has_court_event_flag = no
is_ai = yes
}
}
weight_multiplier = {
base = 1
# Court weightings.
## The beast...
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
## & his library...
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
add_character_flag = {
flag = has_had_monstrous_ruler_event
years = 5
}
save_scope_as = possible_cannibal_ruler
create_character = {
location = root.capital_province
template = challenger_peasant_character
save_scope_as = challenger_peasant
}
scope:challenger_peasant = {
court_event_character_flag_effect = yes
}
cp:councillor_chancellor = {
save_scope_as = chancellor
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = {
name = hold_court.4600.a
trigger = {
has_trait = eccentric
}
add_prestige = medium_prestige_gain
change_current_court_grandeur = minor_court_grandeur_gain
add_intrigue_lifestyle_perk_points = 1
every_held_county = {
custom = custom.every_held_county
add_county_modifier = {
modifier = county_confident_in_humanity_modifier
years = 25
}
}
add_dread = medium_dread_gain
ai_chance = {
base = 200
ai_value_modifier = {
ai_boldness = 0.25
ai_rationality = 0.25
}
}
}
option = {
name = hold_court.4600.b
add_dread = medium_dread_gain
if = {
limit = {
any_vassal_or_below = {
is_ai = yes
OR = {
has_trait = cannibal
any_secret = { type = secret_cannibal }
}
}
}
random_vassal_or_below = {
limit = {
is_ai = yes
has_court_event_flag = no
OR = {
has_trait = cannibal
any_secret = { type = secret_cannibal }
}
NOR = {
has_relation_lover = root
has_relation_friend = root
has_relation_rival = root
has_relation_soulmate = root
is_close_family_of = root
}
}
save_scope_as = cannibal_vassal
}
trigger_event = {
id = hold_court.4601
days = { 30 40 }
}
}
give_nickname = nick_the_child_of_devilgod
ai_chance = {
base = 25
ai_value_modifier = {
ai_boldness = 0.25
ai_honor = -0.75
}
}
}
option = {
name = hold_court.4600.c
flavor = hold_court.4600.c.tt
add_dread = major_dread_loss
if = {
limit = { has_trait = sadistic }
remove_trait = sadistic
add_trait_force_tooltip = compassionate
}
else_if = {
limit = { has_trait = callous }
remove_trait = callous
add_trait_force_tooltip = compassionate
}
if = {
limit = {
is_cannibal_trigger = yes
}
remove_cannibal_secret_or_trait_effect = yes
}
if = {
limit = {
is_witch_trigger = yes
}
remove_witch_secret_or_trait_effect = yes
}
every_held_county = {
custom = custom.every_held_county
add_county_modifier = {
modifier = county_confident_in_humanity_modifier
years = 25
}
}
stress_impact = {
sadistic = massive_stress_impact_gain
callous = massive_stress_impact_gain
confider = medium_stress_loss
just = medium_stress_loss
}
ai_chance = {
base = 0 # We don't want the AI changing their traits
}
}
option = {
name = hold_court.4600.d
ai_chance = {
base = 15
ai_value_modifier = {
ai_boldness = -0.25
ai_rationality = 1
}
}
}
after = {
hidden_effect = {
scope:challenger_peasant = {
clear_court_event_participation = yes
death = {
death_reason = death_vanished
}
}
}
scope:chancellor = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
hold_court.4601 = {
type = letter_event
opening = { desc = hold_court.4601.t }
desc = hold_court.4601.d
sender = scope:cannibal_vassal
trigger = {
cannibal_follow_up_trigger = yes
}
option = {
name = hold_court.4601.a
add_prestige = minor_prestige_gain
trigger_event = {
id = hold_court.4602
days = { 7 9 }
}
ai_chance = {
base = 25
ai_value_modifier = {
ai_sociability = 0.25
}
}
}
option = {
name = hold_court.4601.b
add_prestige = minor_prestige_loss
scope:cannibal_vassal = {
add_opinion = {
modifier = rejected_invitation_opinion
opinion = -10
target = root
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_sociability = -0.25
}
}
}
}
hold_court.4602 = {
type = character_event
title = hold_court.4602.t
desc = hold_court.4602.desc
theme = murder_scheme
left_portrait = {
character = scope:cannibal_vassal
animation = flirtation
}
trigger = {
cannibal_follow_up_trigger = yes
}
immediate = {
scope:cannibal_vassal = {
if = {
limit = {
any_secret = {
type = secret_cannibal
NOT = { any_secret_knower = { this = root } }
}
}
random_secret = {
type = secret_cannibal
reveal_to = root
}
}
}
}
option = {
name = hold_court.4602.a
give_cannibal_secret_or_trait_effect = yes
scope:cannibal_vassal = {
add_opinion = {
target = root
modifier = also_cannibal
}
}
ai_chance = {
base = 5
ai_value_modifier = {
ai_rationality = -0.75
}
modifier = {
has_trait = gluttonous
add = 20
}
}
}
option = {
name = hold_court.4602.b
if = {
limit = {
scope:cannibal_vassal = { is_attracted_to_gender_of = root }
is_attracted_to_gender_of = scope:cannibal_vassal
}
set_relation_lover = { reason = lover_cannibal_seduction target = scope:cannibal_vassal }
}
else = {
set_relation_friend = { reason = friend_private_feast target = scope:cannibal_vassal }
}
increase_wounds_effect = { REASON = eaten }
scope:cannibal_vassal = {
add_opinion = {
target = root
opinion = 40
modifier = delicious_morsel_opinion
}
}
ai_chance = {
base = 5
ai_value_modifier = {
ai_rationality = -0.75
}
modifier = {
has_trait = lustful
add = 20
}
}
}
option = {
name = hold_court.4602.c
trigger = {
is_cannibal_trigger = no
}
add_opinion = {
target = scope:cannibal_vassal
opinion = -50
modifier = tried_to_eat_me_opinion
}
scope:cannibal_vassal = {
add_opinion = {
target = root
opinion = -20
modifier = rejected_opinion
}
}
ai_chance = {
base = 75
ai_value_modifier = {
ai_rationality = 0.75
}
modifier = {
has_trait = gluttonous
add = -20
}
}
}
}
##################################################
# In Ancient Times...
# by Isabella Welch
# 4900
##################################################
# Shady genealogist offers to write up your legendary family history
hold_court.4900 = {
type = court_event
title = hold_court.4900.t
desc = hold_court.4900.desc
theme = diplomacy_family_focus
court_scene = {
button_position_character = scope:suspicious_genealogist
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:suspicious_genealogist = {
group = petitioners_group
animation = scheme
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
NOT = { has_character_flag = has_had_suspicious_genealogist_event }
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
has_court_event_flag = no
is_ai = yes
}
OR = {
AND = {
is_female = yes
mother ?= {
mother ?= {
mother ?= {
mother ?= {
exists = mother
}
}
}
}
}
AND = {
is_male = yes
father ?= {
father ?= {
father ?= {
father ?= {
exists = father
}
}
}
}
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
add_character_flag = {
flag = has_had_suspicious_genealogist_event
years = 5
}
save_scope_as = ruler_history_target
create_character = {
location = root.capital_province
template = suspicious_genealogist_character
save_scope_as = suspicious_genealogist
}
scope:suspicious_genealogist = {
court_event_character_flag_effect = yes
}
primary_title = { save_scope_as = target_title }
grab_mythical_founder_effect = yes
cp:councillor_court_chaplain = {
save_scope_as = chaplain
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = {
name = hold_court.4900.e
trigger = {
NOT = { exists = promoted_legend }
has_dlc_feature = legends
NOT = { has_game_rule = historical_legends_only }
}
create_legend_seed = {
type = legitimizing
quality = famed
chronicle = ancestral_glory_not_in_history
properties = {
ancestor_flag = root.var:mythical_ancestor_var
title = root.primary_title
}
}
stress_impact = {
arrogant = major_stress_impact_loss
honest = minor_stress_impact_gain
humble = major_stress_impact_gain
}
ai_chance = {
base = 75
ai_value_modifier = {
ai_boldness = 0.75
ai_honor = 0.75
}
}
}
option = {
name = hold_court.4900.a
trigger = {
root.dynasty = {
dynasty_prestige_level >= low_dynasty_prestige_level
dynasty_prestige_level < high_dynasty_prestige_level
}
}
root.dynasty = { add_dynasty_prestige = medium_dynasty_prestige_gain }
hidden_effect = {
scope:suspicious_genealogist = {
death = {
death_reason = death_vanished
}
}
}
ai_chance = {
base = 75
ai_value_modifier = {
ai_boldness = 0.75
ai_honor = 0.75
}
}
}
option = {
name = hold_court.4900.b
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= medium_gold_value
}
}
change_current_court_grandeur = major_court_grandeur_gain
trigger_event = {
id = hold_court.4901
days = { 1 2 }
}
remove_short_term_gold = minor_gold_value
ai_chance = {
base = 25
}
}
option = {
name = hold_court.4900.c
trigger = {
root.dynasty = {
dynasty_prestige_level >= high_dynasty_prestige_level
}
}
root.dynasty = { add_dynasty_prestige = medium_dynasty_prestige_gain }
hidden_effect = {
scope:suspicious_genealogist = {
death = {
death_reason = death_vanished
}
}
}
ai_chance = {
base = 25
}
}
option = {
name = hold_court.4900.d
trigger = {
root.dynasty = {
dynasty_prestige_level < low_dynasty_prestige_level
}
}
root.dynasty = { add_dynasty_prestige = medium_dynasty_prestige_gain }
hidden_effect = {
scope:suspicious_genealogist = {
death = {
death_reason = death_vanished
}
}
}
ai_chance = {
base = 25
}
}
after = {
scope:chaplain = {
clear_court_event_participation = yes
}
scope:suspicious_genealogist = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
# the reading of the family lineage...
hold_court.4901 = {
type = character_event
title = hold_court.4900.t
theme = diplomacy_family_focus
desc = {
desc = hold_court.4901.desc.intro
first_valid = {
triggered_desc = {
trigger = {
is_female = yes
}
desc = hold_court.4901.mothers
}
triggered_desc = {
trigger = {
is_male = yes
}
desc = hold_court.4901.fathers
}
}
desc = hold_court.4901.desc.outro
}
left_portrait = {
character = root
animation = personality_bold
}
right_portrait = {
character = scope:suspicious_genealogist
animation = scheme
}
trigger = {
scope:suspicious_genealogist = { is_alive = yes }
scope:ruler_history_target = { is_alive = yes }
}
immediate = {
if = {
limit = { is_female = yes }
root.mother = {
save_scope_as = mother_1
this.mother = {
save_scope_as = mother_2
this.mother = {
save_scope_as = mother_3
this.mother = {
save_scope_as = mother_4
this.mother = {
save_scope_as = mother_5
}
}
}
}
}
}
if = {
limit = { is_male = yes }
root.father = {
save_scope_as = father_1
this.father = {
save_scope_as = father_2
this.father = {
save_scope_as = father_3
this.father = {
save_scope_as = father_4
this.father = {
save_scope_as = father_5
}
}
}
}
}
}
cp:councillor_court_chaplain = { save_scope_as = chaplain }
}
option = {
name = hold_court.4901.a
flavor = hold_court.4901.a.tt
every_courtier_or_guest = {
custom = all_courtiers_and_guests
add_opinion = {
target = root
modifier = bored_opinion
opinion = -5
}
}
stress_impact = {
diligent = medium_stress_gain
patient = medium_stress_gain
family_first = medium_stress_gain
}
every_child = {
limit = {
age < 15
has_education_diplomacy_trigger = yes
}
add_diplomacy_skill = 2
}
every_child = {
limit = {
has_trait = bastard
}
add_opinion = {
target = root
opinion = -15
modifier = flaunted_lineage_opinion
}
}
ai_chance = {
base = 25
modifier = {
has_trait = family_first
add = 50
}
}
}
option = {
name = hold_court.4901.b
every_courtier_or_guest = {
limit = { NOT = { is_close_or_extended_family_of = root } }
custom = all_courtiers_and_guests
add_opinion = {
target = root
modifier = bored_opinion
opinion = -5
}
}
stress_impact = {
humble = major_stress_gain
family_first = minor_stress_loss
}
every_close_or_extended_family_member = {
limit = {
NOR = {
is_courtier_of = root
}
}
custom = all_family_members
add_opinion = {
target = root
modifier = flaunted_lineage_opinion
opinion = 15
}
}
ai_chance = {
base = 25
modifier = {
has_trait = patient
add = 50
}
}
}
option = {
name = hold_court.4901.c
every_courtier_or_guest = {
custom = all_courtiers_and_guests
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 5
}
}
stress_impact = {
impatient = major_stress_loss
}
ai_chance = {
base = 25
modifier = {
has_trait = impatient
add = 50
}
}
}
after = {
hidden_effect = {
scope:suspicious_genealogist = {
death = {
death_reason = death_vanished
}
}
}
}
}
##################################################
# Linnea
##################################################
# 5010 - 5019 Out of Control
# 5020 - 5029 Dancing Plague
# 5030 - 5039 New Written Language
##################################################
##################################################
# Out of Control
# by Linnéa Thimrén
# 5010 - 5019
##################################################
# Low control - give control to low control counties
hold_court.5010 = {
type = court_event
title = hold_court.5010.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
exists = scope:marshal
}
desc = hold_court.5010.desc_marshal
}
desc = hold_court.5010.desc
}
desc = hold_court.5010.desc.outro
}
theme = realm
override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic }
left_portrait = {
character = scope:peasant
animation = beg
}
lower_right_portrait = scope:portrait
court_scene = {
button_position_character = scope:peasant
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:peasant = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
NOT = { has_character_flag = had_event_hold_court_5010 }
any_sub_realm_county = {
county_control < medium_county_control
NOT = { has_county_modifier = county_increased_presence_modifier }
}
}
weight_multiplier = {
base = 0.5
modifier = {
add = 0.5
exists = cp:councillor_marshal
cp:councillor_marshal = {
is_performing_council_task = task_increase_control
is_available = yes #Not currently travelling or attending activity
location.county ?= {
county_control < medium_county_control
NOT = { has_county_modifier = county_increased_presence_modifier }
}
}
}
modifier = {
add = 0.25
any_sub_realm_county = {
county_control <= low_county_control
NOT = { has_county_modifier = county_increased_presence_modifier }
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
add_character_flag = {
flag = had_event_hold_court_5010
years = 10
}
every_sub_realm_county = {
limit = {
county_control < medium_county_control
NOT = { has_county_modifier = county_increased_presence_modifier }
}
add_to_list = potential_county
}
random_in_list = {
list = potential_county
limit = {
exists = root.cp:councillor_marshal
root.cp:councillor_marshal = {
is_performing_council_task = task_increase_control
is_available = yes #Not currently travelling or attending activity
councillor_task_target = prev.title_province
}
}
alternative_limit = {
county_control <= low_county_control
}
alternative_limit = {
always = yes
}
save_scope_as = county
}
create_character = {
template = servant_character
dynasty = none
location = root.capital_province
trait = compassionate
save_scope_as = peasant
}
scope:peasant = {
court_event_character_flag_effect = yes
}
#To save the most relevant character for loc and portrait
if = {
limit = {
exists = cp:councillor_marshal
cp:councillor_marshal = {
has_court_event_flag = no
is_ai = yes
is_performing_council_task = task_increase_control
councillor_task_target = scope:county.title_province
}
}
cp:councillor_marshal = {
save_scope_as = marshal
save_scope_as = portrait
court_event_character_flag_effect = yes
}
}
else_if = {
limit = {
scope:county.holder != root
scope:county.holder = { has_court_event_flag = no }
}
scope:county.holder = {
save_scope_as = vassal
save_scope_as = portrait
court_event_character_flag_effect = yes
}
}
else = {
save_scope_as = portrait
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Let's go for it
name = hold_court.5010.a
remove_treasury_or_gold = medium_treasury_or_gold_value
scope:county = {
change_county_control = medium_county_control_gain
}
every_sub_realm_county = {
custom = every_low_county_control
limit = {
county_control <= low_county_control
NOT = { this = scope:county }
}
change_county_control = minor_county_control_gain
}
stress_impact = {
compassionate = medium_stress_impact_loss
callous = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_rationality = 1
ai_greed = -1
ai_compassion = 1
}
modifier = {
factor = 0
gold <= medium_treasury_or_gold_value
}
}
}
option = { # We need more violence!
name = hold_court.5010.b
scope:county = {
add_county_modifier = {
modifier = county_increased_presence_modifier
days = 3650
}
change_county_control = major_county_control_gain
}
every_sub_realm_county = {
custom = every_low_county_control
limit = {
county_control <= low_county_control
NOT = { this = scope:county }
}
add_county_modifier = {
modifier = county_increased_presence_modifier
days = 3650
}
change_county_control = major_county_control_gain
}
stress_impact = {
sadistic = medium_stress_impact_loss
compassionate = medium_stress_impact_gain
}
}
option = { # Idc lol
name = hold_court.5010.c
stress_impact = {
compassionate = minor_stress_impact_gain
}
}
after = {
if = {
limit = {
exists = scope:marshal
}
clear_court_event_participation = yes
}
else_if = {
limit = {
exists = scope:vassal
}
clear_court_event_participation = yes
}
hidden_effect = {
scope:peasant = {
clear_court_event_participation = yes
}
if = {
limit = {
scope:county = {
has_county_modifier = county_increased_presence_modifier
}
}
scope:peasant = {
death = {
death_reason = death_hanged
}
}
}
else_if = {
limit = {
scope:county.holder != root
scope:county.holder.capital_province = {
local_pool_is_full_trigger = no
}
}
scope:peasant = {
move_to_pool_at = scope:county.holder.capital_province
}
}
else = {
scope:peasant = {
death = {
death_reason = death_vanished
}
}
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# New Written Language
# by Linnéa Thimrén
# 5030 - 5039
##################################################
# Minority gender in your court develops their own written language (think Nüshu)
scripted_trigger hold_court_5030_courtier_basic_trigger = {
has_court_event_flag = no
is_ai = yes
faith = root.faith
is_imprisoned = no
NOT = { has_trait = incapable }
OR = {
AND = {
OR = {
root = { has_realm_law = male_only_law }
root = { has_realm_law = male_preference_law }
}
is_female = yes
}
AND = {
OR = {
root = { has_realm_law = female_only_law }
root = { has_realm_law = female_preference_law }
}
is_male = yes
}
}
}
scripted_trigger hold_court_5030_courtier_adult_trigger = {
hold_court_5030_courtier_basic_trigger = yes
is_adult = yes
NOT = { has_court_position = court_tutor_court_position }
}
hold_court.5030 = {
type = court_event
title = hold_court.5030.t
desc = hold_court.5030.desc
theme = realm
override_sound = { reference = event:/SFX/Events/Themes/sfx_event_theme_type_generic }
lower_right_portrait = scope:court_tutor
court_scene = {
button_position_character = scope:courtier
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:courtier = {
group = petitioners_group
animation = happiness
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
any_courtier = {
hold_court_5030_courtier_adult_trigger = yes
}
OR = {
AND = {
OR = {
root = { has_realm_law = male_only_law }
root = { has_realm_law = male_preference_law }
}
is_female = yes
}
AND = {
OR = {
root = { has_realm_law = female_only_law }
root = { has_realm_law = female_preference_law }
}
is_male = yes
}
}
OR = { # Make sure you care about schemes and such
has_lifestyle = intrigue_lifestyle
any_scheme = { is_hostile = yes }
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue }
}
cooldown = { years = 40 }
immediate = {
random_courtier = {
limit = {
hold_court_5030_courtier_adult_trigger = yes
}
weight = {
base = 1
compare_modifier = {
value = learning
multiplier = 2
}
}
save_scope_as = courtier
court_event_character_flag_effect = yes
}
if = {
limit = {
employs_court_position = court_tutor_court_position
any_court_position_holder = {
type = court_tutor_court_position
is_physically_able_adult = yes
has_court_event_flag = no
is_ai = yes
}
}
random_court_position_holder = {
type = court_tutor_court_position
limit = {
is_physically_able_adult = yes
has_court_event_flag = no
is_ai = yes
}
save_scope_as = court_tutor
court_event_character_flag_effect = yes
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Allow it
name = hold_court.5030.a
#If you're part of the gender minority you get a boost as well
if = {
limit = {
OR = {
AND = {
OR = {
has_realm_law = male_only_law
has_realm_law = male_preference_law
}
is_female = yes
}
AND = {
OR = {
has_realm_law = female_only_law
has_realm_law = female_preference_law
}
is_male = yes
}
}
}
if = {
limit = {
is_male = yes
}
add_character_modifier = {
modifier = hold_court_written_language_men_advanced_modifier
years = 20
}
}
else = {
add_character_modifier = {
modifier = hold_court_written_language_women_advanced_modifier
years = 20
}
}
}
#Boost all courtiers of the relevant gender
every_courtier = {
limit = {
hold_court_5030_courtier_basic_trigger = yes
}
custom = hold_court.5030.courtiers
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 10
}
if = {
limit = {
is_male = yes
}
add_character_modifier = {
modifier = hold_court_written_language_men_modifier
years = 20
}
}
else = {
add_character_modifier = {
modifier = hold_court_written_language_women_modifier
years = 20
}
}
}
}
option = { # Embrace it and task your Court Tutor with teaching it
name = hold_court.5030.b
trigger = {
exists = scope:court_tutor
}
#If you're part of the gender minority you get a boost as well
if = {
limit = {
OR = {
AND = {
OR = {
has_realm_law = male_only_law
has_realm_law = male_preference_law
}
is_female = yes
}
AND = {
OR = {
has_realm_law = female_only_law
has_realm_law = female_preference_law
}
is_male = yes
}
}
}
if = {
limit = {
is_male = yes
}
add_character_modifier = {
modifier = hold_court_written_language_men_advanced_modifier
years = 20
}
}
else = {
add_character_modifier = {
modifier = hold_court_written_language_women_advanced_modifier
years = 20
}
}
}
#Boost all courtiers of the relevant gender
every_courtier = {
limit = {
hold_court_5030_courtier_basic_trigger = yes
}
custom = hold_court.5030.courtiers
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 10
}
if = {
limit = {
is_male = yes
}
add_character_modifier = {
modifier = hold_court_written_language_men_advanced_modifier
years = 20
}
}
else = {
add_character_modifier = {
modifier = hold_court_written_language_women_advanced_modifier
years = 20
}
}
}
}
option = { # Use their expertise for other things
name = hold_court.5030.c
scope:courtier = {
add_opinion = {
target = root
modifier = refusal_opinion
opinion = -15
}
}
add_character_modifier = {
modifier = invented_code_resistance_modifier
years = 5
}
stress_impact = {
paranoid = medium_stress_impact_loss
}
}
after = {
scope:courtier = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:court_tutor }
scope:court_tutor = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Claudia
##################################################
# 6000 Empty Granaries
# 6010 Land Grants
# 6020 Hawks and Doves
# 6030 From Beyond the Border
# 6040 A Lost Treasure
# 6050 - 6051 A Holy Tomb
# 6060 A Convenient Offer
# 6070 Budding Ally
# 6080 Settling the [people]
# 6090 Heretics at Large
# 6100 - 6101 A Land at War
# 6110 A Ravaged Land
# 6120 - 6121 The Day of Truth
# 6130 The Cadastre
# 6140 A Cumbersome Gift
# 6150 The End Is Nigh!
# 6160 Empty Coffers
# 6170 Ignoble Imprisonment
# 6180 The Shadow Behind the Throne
# 6190 A Shadow in the Night
# 6200 - 6201 The Monster of X
# 6210 A Land of Barbarians
# 6220 Studying the Dead
# 6230 A Massive Problem
##################################################
##################################################
# Empty Granaries
# by Claudia Baldassi
# 6000
##################################################
# A province has been hit by a famine and is asking for your help. What do you do? #
scripted_trigger hold_court_6000_valid_province_trigger = {
OR = {
has_province_modifier = recently_looted_modifier
has_province_modifier = disease_spreading_modifier
has_province_modifier = winter_harsh_modifier
barony = {
holder ?= {
has_character_flag = recently_occupied_flag
}
}
}
barony = {
holder ?= {
this != root
is_available_ai_adult = yes
has_court_event_flag = no
}
}
}
scripted_trigger hold_court_6000_valid_inspector_trigger = {
has_court_event_flag = no
OR = {
stewardship >= 14
has_trait = education_stewardship_2
has_trait = education_stewardship_3
has_trait = education_stewardship_4
has_trait = education_stewardship_5
has_trait = administrator
}
NOR = {
has_trait = lazy
is_spouse_of = root
is_concubine_of = root
}
is_councillor = no
is_available_ai_adult = yes
}
hold_court.6000 = {
type = court_event
title = hold_court.6000.t
desc = {
desc = hold_court.6000.desc_intro
first_valid = {
triggered_desc = {
trigger = {
scope:6000_poor = {
has_character_flag = recently_occupied_flag
}
}
desc = hold_court.6000.desc_occupation
}
triggered_desc = {
trigger = {
scope:6000_province = {
has_province_modifier = recently_looted_modifier
}
}
desc = hold_court.6000.desc_raiding
}
triggered_desc = {
trigger = {
scope:6000_province = {
has_province_modifier = disease_spreading_modifier
}
}
desc = hold_court.6000.desc_epidemics
}
triggered_desc = {
trigger = {
scope:6000_province = {
has_province_modifier = winter_harsh_modifier
}
}
desc = hold_court.6000.desc_winter
}
}
desc = hold_court.6000.desc_middle
triggered_desc = {
trigger = {
exists = scope:6000_count
}
desc = hold_court.6000.desc_count
}
desc = hold_court.6000.desc_ending
}
theme = court
lower_left_portrait = scope:6000_count
lower_right_portrait = scope:inspector
court_scene = {
button_position_character = scope:6000_poor
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6000_poor = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
any_realm_province = {
hold_court_6000_valid_province_trigger = yes
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
random_realm_province = {
limit = {
hold_court_6000_valid_province_trigger = yes
}
save_scope_as = 6000_province
}
scope:6000_province = {
barony = {
holder = {
save_scope_as = 6000_poor
}
}
}
if = {
limit = {
employs_court_position = seneschal_court_position
any_court_position_holder = {
type = seneschal_court_position
is_available_ai_adult = yes
has_court_event_flag = no
}
}
random_court_position_holder = {
type = seneschal_court_position
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
}
save_scope_as = inspector
court_event_character_flag_effect = yes
}
}
else_if = {
limit = {
any_courtier_or_guest = {
hold_court_6000_valid_inspector_trigger = yes
}
}
random_courtier_or_guest = {
limit = {
hold_court_6000_valid_inspector_trigger = yes
}
save_scope_as = inspector
court_event_character_flag_effect = yes
}
}
if = {
limit = {
scope:6000_province.county.holder = {
NOR = {
this = root
this = scope:6000_poor
}
}
}
scope:6000_province.county.holder = {
save_scope_as = 6000_count
court_event_character_flag_effect = yes
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: send money
option = {
name = hold_court.6000.a
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= medium_gold_value
}
}
pay_treasury_or_gold = {
target = scope:6000_poor
value = medium_treasury_or_gold_value
}
add_hook = {
type = favor_hook
target = scope:6000_poor
}
every_sub_realm_county = {
limit = {
title_province = { hold_court_6000_valid_province_trigger = yes }
}
add_county_modifier = {
modifier = invested_in_province_modifier
years = 10
}
}
if = {
limit = { exists = scope:6000_count }
scope:6000_count = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 5
modifier = {
gold < 0
add = -10
}
modifier = {
short_term_gold >= medium_gold_value
add = 5
}
modifier = {
OR = {
has_trait = generous
has_trait = improvident
has_trait = profligate
}
add = 15
}
}
}
#Option B: less taxes
option = {
name = hold_court.6000.b
every_sub_realm_county = {
limit = {
title_province = { hold_court_6000_valid_province_trigger = yes }
}
add_county_modifier = {
modifier = court_tax_relief_county_modifier
years = 10
}
}
if = {
limit = { exists = scope:6000_count }
scope:6000_count = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 30
}
}
}
add_hook = {
type = indebted_hook
target = scope:6000_poor
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 5
modifier = {
gold < 0
add = -5
}
modifier = {
OR = {
has_trait = greedy
ai_greed >= medium_positive_ai_value
}
add = -10
}
}
}
#Option C: send inspector - limited to adequate character
option = {
name = hold_court.6000.c
trigger = {
exists = scope:inspector
}
custom_tooltip = hold_court.6000.c.tt
scope:inspector = {
add_character_modifier = {
modifier = hold_court_inspector_modifier
years = 10
}
}
remove_courtier_or_guest = {
character = scope:inspector
new_location = scope:6000_province
}
ai_chance = {
base = 10
}
}
#Option D: they can manage it on their own
option = {
name = hold_court.6000.d
stress_impact = {
generous = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
gregarious = medium_stress_impact_gain
just = medium_stress_impact_gain
}
ai_chance = {
base = 2
modifier = {
has_trait = lazy
add = 10
}
modifier = {
OR = {
has_trait = just
has_trait = generous
has_trait = compassionate
has_trait = gregarious
}
add = -5
}
}
}
after = {
if = {
limit = {
exists = scope:inspector
}
scope:inspector = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# From Beyond the Border
# by Claudia Baldassi
# 6030
##################################################
# A bilingual monk from a (recently conquered) county of a different culture is offering their translation of the great works of their culture into your language #
scripted_trigger hold_court_6030_valid_county_trigger = {
culture = {
this != root.culture
save_temporary_scope_as = 6030_border_culture
}
any_neighboring_county = {
holder = {
this != root
culture = scope:6030_border_culture
}
}
any_county_province = {
has_holding_type = church_holding
}
religion = {
any_faith = {
has_doctrine = tenet_monasticism
}
}
}
hold_court.6030 = {
type = court_event
title = hold_court.6030.t
desc = hold_court.6030.desc
theme = court
court_scene = {
button_position_character = scope:6030_monk
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6030_monk = {
group = petitioners_group
animation = personality_rational
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 25 }
trigger = {
any_held_county = {
hold_court_6030_valid_county_trigger = yes
}
}
weight_multiplier = {
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
random_held_county = {
limit = {
hold_court_6030_valid_county_trigger = yes
}
save_scope_as = 6030_border
}
scope:6030_border = {
random_county_province = {
limit = {
has_holding_type = church_holding
}
save_scope_as = 6030_church
}
}
create_character = {
location = root.capital_province
template = priest_character_template
faith = scope:6030_border.faith
culture = scope:6030_border.culture
gender_female_chance = root_faith_clergy_gender_female_chance
trait = devoted
save_scope_as = 6030_monk
}
hidden_effect = {
add_courtier = scope:6030_monk
}
scope:6030_monk = {
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: accept the translation
option = {
name = hold_court.6030.a
add_prestige = minor_prestige_gain
change_current_court_grandeur = minor_court_grandeur_gain
scope:6030_monk = { select_and_move_to_pool_effect = yes }
culture = {
change_cultural_acceptance = {
target = scope:6030_monk.culture
value = minor_cultural_acceptance_value
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
scope:6030_monk = {
add_character_flag = 6030_remove_char_flag
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 0.5
}
}
}
#Option B: you ask them to stay and teach you
option = {
name = hold_court.6030.b
trigger = {
learning >= 12
}
skill = learning
add_prestige = medium_prestige_gain
change_current_court_grandeur = minor_court_grandeur_gain
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:6030_monk
COURT_POS = court_tutor_court_position
}
}
court_position_grant_effect = {
EMPLOYER = root
POS = court_tutor
CANDIDATE = scope:6030_monk
}
}
add_character_modifier = {
modifier = hold_court_bilingual_readings_modifier
years = 10
}
culture = {
change_cultural_acceptance = {
target = scope:6030_monk.culture
value = minor_cultural_acceptance_gain
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
stress_impact = {
content = minor_stress_impact_gain
impatient = minor_stress_impact_gain
irritable = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 0.5
}
modifier = {
has_trait = content
add = -25
}
modifier = {
has_trait = impatient
add = -25
}
modifier = {
has_trait = irritable
add = -50
}
modifier = {
has_trait = arrogant
add = -50
}
modifier = {
has_trait = lazy
add = -50
}
modifier = {
has_trait = ambitious
add = 50
}
}
}
#Option C: I don't care
option = {
name = hold_court.6030.c
scope:6030_monk = { select_and_move_to_pool_effect = yes }
scope:6030_monk = {
add_character_flag = 6030_remove_char_flag
}
stress_impact = {
lazy = medium_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = -0.5
}
modifier = {
has_trait = lazy
add = 50
}
}
}
after = {
scope:6030_monk = {
clear_court_event_participation = yes
if = {
limit = { has_character_flag = 6030_remove_char_flag }
silent_disappearance_effect = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# A Lost Treasure
# by Claudia Baldassi
# 6040
##################################################
# Scribes from a remote monastery think they've found a rare/long-lost manuscript. It might be a fake, something worthless, or an artifact #
hold_court.6040 = {
type = court_event
title = hold_court.6040.t
desc = hold_court.6040.desc
theme = court
lower_left_portrait = scope:antiquarian
court_scene = {
button_position_character = scope:6040_monk
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6040_monk = {
group = petitioners_group
animation = ecstasy
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 20 }
trigger = {
any_realm_province = {
has_holding_type = church_holding
religion = {
any_faith = {
has_doctrine = tenet_monasticism
}
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
random_realm_province = {
limit = {
has_holding_type = church_holding
religion = {
any_faith = {
has_doctrine = tenet_monasticism
}
}
}
save_scope_as = 6040_church
}
create_character = {
location = root.capital_province
template = priest_character_template
faith = scope:6040_church.faith
gender_female_chance = root_faith_clergy_gender_female_chance
trait = devoted
save_scope_as = 6040_monk
}
scope:6040_monk = {
court_event_character_flag_effect = yes
}
if = {
limit = {
employs_court_position = antiquarian_court_position
}
court_position:antiquarian_court_position = { save_scope_as = antiquarian }
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option B: send for the antiquarian - if you have one
option = {
name = hold_court.6040.b
trigger = {
exists = scope:antiquarian
}
random_list = {
10 = { #it's an artifact!
desc = hold_court.6040.c.tt.4
send_interface_toast = {
title = hold_court_6040_b_artifact
random_dummy_gender_effect = yes
create_artifact_book_effect = {
OWNER = root
CREATOR = scope:dummy_gender
SET_SUBJECT = flag:lunatic
SET_TOPIC = flag:artifact_book_voynich
}
}
scope:antiquarian = { add_learning_skill = 2 }
add_prestige = medium_prestige_gain
}
35 = { #it's an old book
desc = hold_court.6040.c.tt.3
send_interface_toast = {
title = hold_court_6040_b_generic
scope:antiquarian = { add_learning_skill = 1 }
add_prestige = minor_prestige_gain
}
}
30 = { #they have no clue
modifier = {
factor = 0
scope:antiquarian = {
OR = {
has_trait = education_learning_4
has_trait = education_learning_5
has_trait = intellect_good_3
has_trait = scholar
learning > 20
}
}
}
modifier = {
add = -20
scope:antiquarian = {
OR = {
has_trait = education_learning_3
has_trait = intellect_good_2
learning >= 15
learning <= 20
}
}
}
desc = hold_court.6040.b.tt
send_interface_toast = {
title = hold_court_6040_b_clueless
add_character_modifier = hold_court_mysterious_book_modifier
add_prestige = medium_prestige_loss
}
}
20 = { #it's a fake!
desc = hold_court.6040.c.tt
send_interface_toast = {
title = hold_court_6040_b_fake
add_prestige = medium_prestige_gain
scope:antiquarian = { add_learning_skill = 2 }
}
}
}
ai_chance = {
base = 150
ai_value_modifier = {
ai_rationality = 0.5
}
}
}
#Option C: study it yourself - if you can
option = {
name = hold_court.6040.c
trigger = {
learning >= 12
}
skill = learning
random_list = {
30 = { #it's an old book
desc = hold_court.6040.c.tt.3
send_interface_toast = {
title = hold_court_6040_b_generic
add_learning_skill = 1
add_prestige = minor_prestige_gain
create_artifact_book_effect = {
OWNER = root
CREATOR = scope:dummy_gender
SET_SUBJECT = flag:lunatic
SET_TOPIC = flag:artifact_book_voynich
}
}
}
50 = { #you have no clue
modifier = {
factor = 0
OR = {
has_trait = education_learning_4
has_trait = education_learning_5
has_trait = intellect_good_3
has_trait = scholar
learning > 20
}
}
modifier = {
add = -20
OR = {
has_trait = education_learning_3
has_trait = intellect_good_2
AND = {
learning <= 20
learning >= 15
}
}
}
desc = hold_court.6040.c.tt.2
send_interface_toast = {
title = hold_court_6040_c_clueless
add_prestige = medium_prestige_loss
add_character_modifier = hold_court_mysterious_book_modifier
}
}
15 = { #it's a fake!
desc = hold_court.6040.c.tt
send_interface_toast = {
title = hold_court_6040_b_fake
add_prestige = medium_prestige_gain
add_learning_skill = 2
}
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 0.5
ai_energy = 0.25
}
}
}
#Option D: it's clearly demonic!
option = {
name = hold_court.6040.d
trigger = {
OR = {
has_trait = zealous
has_trait = theologian
}
}
add_piety = major_piety_gain
add_prestige = minor_prestige_loss
add_dread = minor_dread_gain
add_stress = major_stress_impact_loss
ai_chance = {
base = 200
}
}
#Option E: who cares about books?
option = {
name = hold_court.6040.e
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = -0.5
}
modifier = {
has_trait = lazy
add = 50
}
}
}
after = {
scope:6040_monk = {
clear_court_event_participation = yes
silent_disappearance_effect = yes
}
if = {
limit = { exists = scope:antiquarian }
scope:antiquarian = { clear_court_event_participation = yes }
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# A Holy Tomb
# by Claudia Baldassi
# 6050 - 6051
##################################################
# The tomb of a local saint has been growing in popularity. The devotees of the saint are now asking for a land grant to support the growing religious establishment there. #
scripted_trigger hold_court_6050_religion_trigger = {
OR = {
OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion }
religion = religion:islam_religion
religion = religion:buddhism_religion
religion = religion:hinduism_religion
}
}
hold_court.6050 = {
type = court_event
title = hold_court.6050.t
desc = {
desc = hold_court.6050.desc
triggered_desc = {
trigger = {
exists = scope:6050_pop.faith.religious_head
scope:6050_pop.faith.religious_head = root
}
desc = hold_court.6050.desc_hof
}
}
theme = court
lower_left_portrait = scope:6050_holy
court_scene = {
button_position_character = scope:6050_pop
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6050_pop = {
group = petitioners_group
animation = ecstasy
}
scope:chaplain = {
group = petitioners_group
animation = ecstasy
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
#Note: This event is triggered by hold_court.6051 and cannot have any triggers of its own. All triggers must be in hold_court.6051 or the queue can get stuck here forever.
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
create_character = {
location = root.capital_province
template = servant_character
faith = scope:6050_tomb.faith
culture = scope:6050_tomb.culture
save_scope_as = 6050_pop
}
scope:6050_pop = {
court_event_character_flag_effect = yes
}
cp:councillor_court_chaplain = {
save_scope_as = chaplain
court_event_character_flag_effect = yes
}
if = {
limit = {
exists = scope:6050_pop.faith.religious_head
scope:6050_pop.faith.religious_head != root
}
random = {
chance = 20
add_character_flag = {
flag = 6050_church_approves
days = 10
}
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: create a temple on the tomb
option = {
name = hold_court.6050.a
trigger = {
NOT = { has_trait = lifestyle_mystic }
}
scope:6050_tomb = {
set_holding_type = church_holding
}
if = {
limit = {
OR = {
has_character_flag = 6050_church_approves
AND = {
exists = scope:6050_pop.faith.religious_head
scope:6050_pop.faith.religious_head = root
}
}
}
add_piety = major_piety_gain
}
else = {
add_piety = major_piety_loss
}
scope:6050_tomb.county = {
add_county_modifier = {
modifier = tougher_to_convert
years = 10
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 1
}
}
}
#Option B: limited to mystic: relic
option = {
name = hold_court.6050.b
trigger = { has_trait = lifestyle_mystic }
religion = { save_scope_as = statue_religion }
create_artifact = {
name = artifact_pedestal_reliquary_6050_saint_name
description = artifact_pedestal_reliquary_6050_saint_desc
type = pedestal
template = 6050_relic_template
visuals = reliquary
modifier = artifact_monthly_piety_3_modifier
save_scope_as = 6050_relic
}
scope:6050_relic = {
set_variable = { # required to track equipability in template
name = statue_religion
value = root.religion
}
}
scope:6050_tomb = {
set_holding_type = church_holding
}
if = {
limit = {
OR = {
has_character_flag = 6050_church_approves
AND = {
exists = scope:6050_pop.faith.religious_head
scope:6050_pop.faith.religious_head = root
}
}
}
add_piety = major_piety_gain
}
else = {
add_piety = major_piety_loss
}
scope:6050_tomb.county = {
add_county_modifier = {
modifier = tougher_to_convert
years = 10
}
}
ai_chance = {
base = 200
}
}
#Option C: persecute the local cult
option = {
name = hold_court.6050.c
add_dread = medium_dread_gain
if = {
limit = {
OR = {
NOT = {
has_character_flag = 6050_church_approves
}
AND = {
exists = scope:6050_pop.faith.religious_head
scope:6050_pop.faith.religious_head = root
}
}
}
add_piety = major_piety_gain
}
if = {
limit = {
scope:6050_tomb.county.faith != root.faith
}
scope:6050_tomb.county = {
set_county_faith = root.faith
}
}
scope:6050_tomb.county = {
change_county_control = 50
}
stress_impact = {
lifestyle_mystic = medium_stress_impact_gain
trusting = minor_stress_impact_gain
compassionate = major_stress_impact_gain
forgiving = major_stress_impact_gain
}
if = {
limit = {
has_character_flag = 6050_church_approves
}
stress_impact = {
zealous = major_stress_impact_gain
}
}
else = {
stress_impact = {
zealous = major_stress_impact_loss
}
}
ai_chance = {
base = 100
modifier = {
has_trait = trusting
add = -25
}
modifier = {
has_trait = lifestyle_mystic
add = -50
}
modifier = {
has_trait = compassionate
add = -75
}
modifier = {
has_trait = forgiving
add = -75
}
}
}
#Option D: ignore them
option = {
name = hold_court.6050.d
ai_chance = {
base = 100
modifier = {
has_trait = lazy
add = 50
}
}
}
after = {
scope:6050_pop = {
clear_court_event_participation = yes
silent_disappearance_effect = yes
}
scope:chaplain = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
hold_court.6051 = { #Hidden event to create the saint
type = character_event
hidden = yes
cooldown = { years = 30 }
trigger = {
any_realm_province = {
has_holding = no
hold_court_6050_religion_trigger = yes
county.faith != root.faith
}
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
has_court_event_flag = no
is_available_ai_adult = yes
}
}
immediate = {
random_realm_province = {
limit = {
has_holding = no
hold_court_6050_religion_trigger = yes
}
save_scope_as = 6050_tomb
}
create_character = {
location = scope:6050_tomb
template = local_saint_template
faith = scope:6050_tomb.faith
culture = scope:6050_tomb.culture
save_scope_as = 6050_holy
}
scope:6050_holy = {
death = {
death_reason = death_mysterious
}
}
trigger_event = hold_court.6050
}
}
##################################################
# A Convenient Offer
# by Claudia Baldassi
# 6060
##################################################
# A wealthy knight or merchant offers to purchase a piece of land from you - in exchange for money, which you really need #
scripted_trigger hold_court_6060_valid_county_trigger = {
OR = {
has_holding = no
AND = {
is_county_capital = no
barony = {
holder = root
is_leased_out = no
}
NOT = {
has_holding_type = church_holding
}
}
}
}
scripted_trigger hold_court_6060_valid_knight_trigger = {
has_court_event_flag = no
is_landed = no
stewardship >= 6
NOT = { has_trait = celibate }
is_available_ai_adult = yes
}
hold_court.6060 = {
type = court_event
title = hold_court.6060.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:6060_rich = { is_knight = yes }
}
desc = hold_court.6060.desc
}
desc = hold_court.6060.desc_merchant
}
desc = hold_court.6060.desc_ending
}
theme = court
court_scene = {
button_position_character = scope:6060_rich
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6060_rich = {
group = petitioners_group
animation = personality_bold
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 20 }
trigger = {
faith = {
trait_is_sin = drunkard
}
any_held_county = {
any_county_province = {
hold_court_6060_valid_county_trigger = yes
}
}
trigger_if = {
limit = {
highest_held_title_tier = tier_empire
}
gold < 500
}
trigger_if = {
limit = {
highest_held_title_tier = tier_kingdom
}
gold < 250
}
NOR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_nomadic
}
}
weight_multiplier = {
base = 1
modifier = {
add = 2
gold <= 0
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
random_held_county = {
limit = {
any_county_province = {
hold_court_6060_valid_county_trigger = yes
}
}
random_county_province = {
limit = {
hold_court_6060_valid_county_trigger = yes
}
save_scope_as = 6060_offer
}
}
if = {
limit = {
any_knight = {
hold_court_6060_valid_knight_trigger = yes
}
}
random_knight = {
limit = {
hold_court_6060_valid_knight_trigger = yes
}
save_scope_as = 6060_rich
court_event_character_flag_effect = yes
}
}
else = {
create_character = {
location = root.capital_province
template = stewardship_wealth_focus_friend_template
trait = ambitious
save_scope_as = 6060_rich
}
}
hidden_effect = {
scope:6060_rich = {
court_event_character_flag_effect = yes
add_treasury_or_gold = major_treasury_or_gold_value
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: sell the province
option = {
name = hold_court.6060.a
scope:6060_rich = {
pay_treasury_or_gold = {
target = root
value = major_treasury_or_gold_value
}
}
if = {
limit = {
scope:6060_offer = {
has_holding = no
}
}
scope:6060_offer = {
set_holding_type = castle_holding
}
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:6060_offer = {
barony = {
change_title_holder = {
holder = scope:6060_rich
change = scope:change
}
}
}
custom_tooltip = {
text = character_title_cannot_be_revoked_tt
scope:6060_rich = {
add_character_flag = {
flag = titles_protected
years = 25
}
}
}
resolve_title_and_vassal_change = scope:change
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -0.25
ai_honor = 0.25
}
}
}
#Option B: Allow it as a city
option = {
name = hold_court.6060.b
scope:6060_rich = {
pay_treasury_or_gold = {
target = root
value = 250
}
}
if = {
limit = {
scope:6060_offer = {
has_holding = no
}
}
scope:6060_offer = {
set_holding_type = city_holding
}
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:6060_offer = {
barony = {
change_title_holder = {
holder = scope:6060_rich
change = scope:change
}
}
}
custom_tooltip = {
text = character_title_cannot_be_revoked_tt
scope:6060_rich = {
add_character_flag = {
flag = titles_protected
years = 25
}
}
}
resolve_title_and_vassal_change = scope:change
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 0.5
ai_boldness = 0.5
}
modifier = {
has_trait = greedy
add = 50
}
}
}
#Option C: refuse
option = {
name = hold_court.6060.c
ai_chance = {
base = 100
}
}
after = {
scope:6060_rich = {
clear_court_event_participation = yes
if = {
limit = {
is_knight = no
is_landed = no
}
silent_disappearance_effect = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Budding Ally
# by Claudia Baldassi
# 6070
##################################################
# An ally is asking you to raise their child as their guardian #
scripted_trigger hold_court_6070_valid_child_trigger = {
has_court_event_flag = no
is_available_ai_child = yes
age >= 6
age <= 12
is_incapable = no
is_courtier_of = prev
is_alive = yes
is_landed = no
}
scripted_trigger hold_court_6070_valid_friend_trigger = {
has_court_event_flag = no
is_available_ai_child = yes
age >= 4
age <= 14
is_incapable = no
is_alive = yes
is_landed = no
is_courtier_of = root
}
scripted_trigger hold_court_6070_valid_betrothed_trigger = {
has_court_event_flag = no
is_betrothed = no
is_married = no
could_marry_character_trigger = { CHARACTER = scope:6070_child }
is_alive = yes
is_landed = no
is_incapable = no
is_courtier_of = root
basic_is_available_ai = yes
}
hold_court.6070 = {
type = court_event
title = hold_court.6070.t
desc = hold_court.6070.desc
theme = court
court_scene = {
button_position_character = scope:6070_embassy
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6070_embassy = {
group = petitioners_group
animation = admiration
}
scope:6070_child = {
group = petitioners_group
animation = worry
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 15 }
trigger = {
is_adult = yes
num_of_relation_ward < 2
any_ally = {
is_ruler = yes
is_available_ai_adult = yes
has_court_event_flag = no
any_child = {
hold_court_6070_valid_child_trigger = yes
save_temporary_scope_as = temp_ward
}
}
trigger_if = {
limit = {
scope:temp_ward = {
any_relation = { type = guardian }
}
}
any_ally = {
is_ruler = yes
is_available_ai_adult = yes
has_court_event_flag = no
any_child = {
this = scope:temp_ward
}
any_courtier_or_guest = {
has_relation_guardian = scope:temp_ward
is_available_ai_adult = yes
has_court_event_flag = no
}
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
random_ally = {
limit = {
any_child = {
hold_court_6070_valid_child_trigger = yes
}
}
save_scope_as = 6070_sender
court_event_character_flag_effect = yes
}
scope:6070_sender = {
random_child = {
limit = {
hold_court_6070_valid_child_trigger = yes
}
save_scope_as = 6070_child
court_event_character_flag_effect = yes
}
}
if = {
limit = {
scope:6070_sender = {
any_courtier = {
has_court_event_flag = no
is_available_healthy_ai_adult = yes
}
}
}
scope:6070_sender = {
random_courtier = {
limit = {
has_court_event_flag = no
is_available_healthy_ai_adult = yes
}
save_scope_as = 6070_embassy
court_event_character_flag_effect = yes
}
}
}
else = {
create_character = {
location = scope:6070_sender.capital_province
template = pool_repopulate_diplomacy
culture = scope:6070_sender.culture
faith = scope:6070_sender.faith
save_scope_as = 6070_embassy
}
scope:6070_embassy = {
court_event_character_flag_effect = yes
add_character_flag = 6070_remove_char_flag
}
}
if = {
limit = {
any_child = {
is_heir_of = root
hold_court_6070_valid_friend_trigger = yes
}
}
random_child = {
limit = {
is_heir_of = root
hold_court_6070_valid_friend_trigger = yes
}
save_scope_as = 6070_friend
court_event_character_flag_effect = yes
}
}
else_if = {
limit = {
any_child = {
hold_court_6070_valid_friend_trigger = yes
}
}
random_child = {
limit = {
hold_court_6070_valid_friend_trigger = yes
}
save_scope_as = 6070_friend
court_event_character_flag_effect = yes
}
}
if = {
limit = {
any_child = {
hold_court_6070_valid_betrothed_trigger = yes
}
}
random_child = {
limit = {
hold_court_6070_valid_betrothed_trigger = yes
}
save_scope_as = 6070_betrothed_temp
}
}
if = {
limit = {
exists = scope:6070_betrothed_temp
scope:6070_child = {
is_betrothed = no
could_marry_character_trigger = { CHARACTER = scope:6070_betrothed_temp }
}
}
scope:6070_betrothed_temp = {
save_scope_as = 6070_betrothed
court_event_character_flag_effect = yes
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: Accept
option = {
name = hold_court.6070.a
scope:6070_sender = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 30
}
}
if = {
limit = {
scope:6070_child = {
any_relation = { type = guardian }
}
}
scope:6070_child = {
every_relation = {
type = guardian
remove_guardian_effect = {
GUARDIAN = this
WARD = scope:6070_child
RETURN_WARD = no
HIDE_OPINION = no
}
}
}
}
scope:6070_child = {
set_relation_guardian = root
}
set_variable = {
name = character_requested_as_educator
value = root
years = 10
}
set_variable = {
name = character_making_education_request
value = scope:6070_sender
years = 10
}
if = {
limit = {
root != scope:6070_child.host
}
root = {
add_visiting_courtier = scope:6070_child
}
}
stress_impact = {
shy = medium_stress_impact_gain
reclusive = medium_stress_impact_gain
paranoid = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.25
ai_honor = 0.25
}
modifier = {
has_trait = shy
add = -50
}
modifier = {
has_trait = reclusive
add = -50
}
modifier = {
has_trait = paranoid
add = -75
}
}
}
#Option B: Accept + encourage friendship with your child (limited if child available)
option = {
name = hold_court.6070.b
trigger = {
exists = scope:6070_friend
}
scope:6070_sender = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 35
}
}
if = {
limit = {
scope:6070_child = {
any_relation = { type = guardian }
}
}
scope:6070_child = {
every_relation = {
type = guardian
remove_guardian_effect = {
GUARDIAN = this
WARD = scope:6070_child
RETURN_WARD = no
HIDE_OPINION = no
}
}
}
}
scope:6070_child = {
set_relation_guardian = root
progress_towards_friend_effect = {
REASON = friend_childhood_new_home
CHARACTER = scope:6070_friend
OPINION = 10
}
}
if = {
limit = {
root != scope:6070_child.host
}
root = {
add_visiting_courtier = scope:6070_child
}
}
stress_impact = {
shy = medium_stress_impact_gain
reclusive = medium_stress_impact_gain
paranoid = major_stress_impact_gain
}
ai_chance = {
base = 150
ai_value_modifier = {
ai_sociability = 0.25
}
modifier = {
has_trait = shy
add = -50
}
modifier = {
has_trait = reclusive
add = -50
}
modifier = {
has_trait = paranoid
add = -75
}
}
}
#Option C: Accept + require betrothal (limited if child available)
option = {
name = hold_court.6070.c
trigger = {
exists = scope:6070_betrothed
}
scope:6070_sender = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 40
}
}
if = {
limit = {
scope:6070_child = {
any_relation = { type = guardian }
}
}
scope:6070_child = {
every_relation = {
type = guardian
remove_guardian_effect = {
GUARDIAN = this
WARD = scope:6070_child
RETURN_WARD = no
HIDE_OPINION = no
}
}
}
}
scope:6070_child = {
set_relation_guardian = root
create_betrothal = scope:6070_betrothed
}
if = {
limit = {
root != scope:6070_child.host
}
root = {
add_visiting_courtier = scope:6070_child
}
}
stress_impact = {
shy = medium_stress_impact_gain
reclusive = medium_stress_impact_gain
paranoid = major_stress_impact_gain
diplomat = major_stress_impact_loss
family_first = major_stress_impact_loss
}
ai_chance = {
base = 150
ai_value_modifier = {
ai_sociability = 0.25
}
modifier = {
has_trait = shy
add = -50
}
modifier = {
has_trait = reclusive
add = -50
}
modifier = {
has_trait = paranoid
add = -75
}
modifier = {
has_trait = diplomat
add = 75
}
modifier = {
has_trait = family_first
add = 75
}
}
}
#Option D: Refuse
option = {
name = hold_court.6070.d
scope:6070_sender = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -30
}
}
stress_impact = {
shy = medium_stress_impact_loss
paranoid = medium_stress_impact_loss
reclusive = medium_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = -0.25
ai_honor = -0.25
}
modifier = {
has_trait = shy
add = 50
}
modifier = {
has_trait = reclusive
add = 50
}
modifier = {
has_trait = paranoid
add = 75
}
}
}
#Option E: Refuse because child is a menace!
option = {
name = hold_court.6070.e
trigger = {
scope:6070_child = {
OR = {
has_trait = rowdy
has_trait = bossy
has_trait = callous
has_trait = wrathful
has_trait = sadistic
}
}
}
scope:6070_sender = {
add_opinion = {
target = root
modifier = insult_opinion
opinion = -50
}
}
stress_impact = {
base = medium_stress_impact_loss
}
ai_chance = {
base = 150
}
}
after = {
scope:6070_sender = {
clear_court_event_participation = yes
}
scope:6070_child = {
clear_court_event_participation = yes
}
scope:6070_embassy = {
clear_court_event_participation = yes
if = {
limit = { has_character_flag = 6070_remove_char_flag }
silent_disappearance_effect = yes
}
}
if = {
limit = { exists = scope:6070_friend }
scope:6070_friend = {
clear_court_event_participation = yes
}
}
if = {
limit = { exists = scope:6070_betrothed }
scope:6070_betrothed = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Settling the [people]
# by Claudia Baldassi
# 6080
##################################################
# A representative of another culture in a county you own offers to settle an unused holding. You can grant them the county, which cannot be revoked for a long while. #
scripted_trigger hold_court_6080_valid_county_trigger = {
is_landless_type_title = no
any_county_province = {
has_holding = no
}
culture = {
this != root.culture
}
}
hold_court.6080 = {
type = court_event
title = hold_court.6080.t
desc = hold_court.6080.desc
theme = court
court_scene = {
button_position_character = scope:6080_count
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6080_count = {
group = petitioners_group
animation = happiness
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 20 }
trigger = {
any_held_county = {
hold_court_6080_valid_county_trigger = yes
}
government_has_flag = government_is_feudal
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
random_held_county = {
limit = {
hold_court_6080_valid_county_trigger = yes
}
save_scope_as = 6080_county
}
scope:6080_county.culture = {
save_scope_as = 6080_culture
}
if = {
limit = {
any_courtier_or_guest = {
has_court_event_flag = no
is_available_healthy_ai_adult = yes
culture = {
this = scope:6080_culture
}
}
}
random_courtier_or_guest = {
limit = {
has_court_event_flag = no
is_available_healthy_ai_adult = yes
culture = {
this = scope:6080_culture
}
}
save_scope_as = 6080_count
court_event_character_flag_effect = yes
}
}
else = {
create_character = {
location = root.capital_province
template = merchant_template
culture = scope:6080_culture
save_scope_as = 6080_count
}
scope:6080_count = {
add_character_flag = 6080_remove_char_flag
court_event_character_flag_effect = yes
}
}
scope:6080_county = {
random_county_province = {
limit = {
has_holding = no
}
save_scope_as = 6080_province
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option C: Grant the barony
option = {
name = hold_court.6080.c
trigger = {
has_trait = administrator
}
scope:6080_province = {
set_holding_type = church_holding
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:6080_province = {
barony = {
change_title_holder = {
holder = scope:6080_count
change = scope:change
}
}
}
custom_tooltip = {
text = character_title_cannot_be_revoked_tt
scope:6080_count = {
add_character_flag = {
flag = titles_protected
years = 25
}
}
}
resolve_title_and_vassal_change = scope:change
scope:6080_county = {
culture = {
change_cultural_acceptance = {
target = root.culture
value = minor_cultural_acceptance_gain
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = greedy
add = -50
}
}
}
#Option A: Grant the county
option = {
name = hold_court.6080.a
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:6080_county = {
change_title_holder = {
holder = scope:6080_count
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:6080_count = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 30
}
if = {
limit = {
government_has_flag = government_is_feudal
}
vassal_contract_set_obligation_level = {
type = title_revocation_rights
level = 1
}
set_subject_contract_modification_blocked = yes
}
}
custom_tooltip = hold_court.6080.a.tt
scope:6080_county = {
culture = {
change_cultural_acceptance = {
target = root.culture
value = medium_cultural_acceptance_gain
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
add_county_modifier = {
modifier = hold_court_grateful_peasants_modifier
years = 50
}
scope:6080_province = {
random_list = {
40 = {
set_holding_type = city_holding
}
25 = {
set_holding_type = castle_holding
}
15 = {
set_holding_type = church_holding
}
}
}
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = greedy
add = -75
}
}
}
#Option B: Say no
option = {
name = hold_court.6080.b
scope:6080_county = {
change_county_control = 10
}
stress_impact = {
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = generous
add = -50
}
}
}
after = {
scope:6080_count = {
clear_court_event_participation = yes
if = {
limit = {
has_character_flag = 6080_remove_char_flag
is_landed = no
}
silent_disappearance_effect = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Heretics at Large
# by Claudia Baldassi
# 6090
##################################################
# A vassal comes to you begging for help because their land is overrun by heretics/infidels. #
scripted_trigger hold_court_6090_valid_vassal_trigger = {
has_court_event_flag = no
is_available_ai_adult = yes
faith = root.faith
is_landed_or_landless_administrative = yes
capital_county ?= {
hold_court_6090_valid_county_trigger = yes
}
}
scripted_trigger hold_court_6090_valid_county_trigger = {
is_landless_type_title = no
faith = {
this != root.faith
faith_hostility_level = {
target = root.faith
value >= faith_hostile_level
}
}
}
hold_court.6090 = {
type = court_event
title = hold_court.6090.t
desc = {
desc = hold_court.6090.desc
triggered_desc = {
trigger = {
exists = scope:high_almoner
}
desc = hold_court.6090.desc.almoner
}
triggered_desc = {
trigger = {
exists = scope:executioner
}
desc = hold_court.6090.desc.executioner
}
}
theme = court
lower_right_portrait = scope:high_almoner
lower_center_portrait = scope:executioner
lower_left_portrait = scope:court_chaplain
court_scene = {
button_position_character = scope:6090_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6090_vassal = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 20 }
trigger = {
any_vassal = {
hold_court_6090_valid_vassal_trigger = yes
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
random_vassal = {
limit = {
hold_court_6090_valid_vassal_trigger = yes
}
save_scope_as = 6090_vassal
court_event_character_flag_effect = yes
}
if = {
limit = {
employs_court_position = high_almoner_court_position
any_court_position_holder = {
type = high_almoner_court_position
is_available_ai_adult = yes
has_court_event_flag = no
}
}
random_court_position_holder = {
type = high_almoner_court_position
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
}
save_scope_as = high_almoner
court_event_character_flag_effect = yes
}
}
if = {
limit = {
employs_court_position = executioner_court_position
any_court_position_holder = {
type = executioner_court_position
is_available_ai_adult = yes
has_court_event_flag = no
}
}
random_court_position_holder = {
type = executioner_court_position
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
}
save_scope_as = executioner
court_event_character_flag_effect = yes
}
}
if = {
limit = {
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
is_available_ai_adult = yes
has_court_event_flag = no
}
}
cp:councillor_court_chaplain = {
save_scope_as = court_chaplain
court_event_character_flag_effect = yes
}
}
scope:6090_vassal = {
capital_county = {
save_scope_as = 6090_main_county
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: send court chaplain
option = {
name = hold_court.6090.a
trigger = {
exists = scope:court_chaplain
}
scope:6090_vassal = {
every_sub_realm_county = {
limit = {
hold_court_6090_valid_county_trigger = yes
}
add_county_modifier = {
modifier = easier_to_convert
years = 15
}
}
}
scope:court_chaplain = {
set_council_task = {
task_type = task_conversion
target = scope:6090_main_county.title_province
}
}
scope:6090_vassal = {
add_opinion = {
target = root
modifier = pious_opinion
opinion = 20
}
}
stress_impact = {
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 1
}
modifier = {
has_trait = cynical
add = -75
}
}
}
#Option B: send the almoners
option = {
name = hold_court.6090.b
trigger = {
exists = scope:high_almoner
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= major_treasury_or_gold_value
}
}
scope:6090_vassal = {
every_sub_realm_county = {
limit = {
hold_court_6090_valid_county_trigger = yes
}
add_county_modifier = {
modifier = easier_to_convert
years = 15
}
}
}
remove_treasury_or_gold = medium_gold_value
scope:6090_vassal = {
every_sub_realm_county = {
limit = {
hold_court_6090_valid_county_trigger = yes
}
add_county_modifier = {
modifier = court_6090_almoners_county_modifier
years = 15
}
}
add_opinion = {
target = root
modifier = pious_opinion
opinion = 30
}
}
scope:high_almoner = {
add_opinion = {
target = root
modifier = pious_opinion
opinion = 30
}
}
stress_impact = {
greedy = major_stress_impact_gain
}
change_current_court_grandeur = medium_court_grandeur_gain
add_piety = medium_piety_gain
ai_chance = {
base = 200
modifier = {
gold < medium_gold_value
add = -200
}
ai_value_modifier = {
ai_zeal = 1
}
modifier = {
has_trait = cynical
add = -75
}
}
}
#Option C: tolerance
option = {
name = hold_court.6090.c
trigger = {
NOT = { has_trait = zealous }
}
scope:6090_vassal = {
every_sub_realm_county = {
limit = {
hold_court_6090_valid_county_trigger = yes
}
add_county_modifier = {
modifier = governance_1074_local_faith_respected_modifier
years = 10
}
}
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
custom_tooltip = {
text = title_granted_to_local_leader_tt
create_character = {
template = servant_character
location = root.location
faith = scope:6090_main_county.faith
culture = scope:6090_main_county.culture
save_scope_as = new_ruler
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:6090_main_county = {
change_title_holder = {
holder = scope:new_ruler
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:new_ruler ?= {
if = {
limit = {
government_has_flag = government_is_feudal
}
vassal_contract_set_obligation_level = {
type = religious_rights
level = 1
}
set_subject_contract_modification_blocked = yes
}
}
add_hook = {
target = scope:new_ruler
type = loyalty_hook
}
}
change_current_court_grandeur = minor_court_grandeur_gain
add_prestige = medium_prestige_gain
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = -1
}
modifier = {
has_trait = cynical
add = 75
}
}
}
#Option D: send the executioners
option = {
name = hold_court.6090.d
trigger = {
exists = scope:executioner
}
scope:6090_vassal = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 25
}
every_sub_realm_county = {
limit = {
hold_court_6090_valid_county_trigger = yes
}
add_county_modifier = {
modifier = court_6090_executioners_county_modifier
years = 5
}
add_county_modifier = {
modifier = easier_to_convert
years = 15
}
}
}
scope:executioner = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 25
}
}
stress_impact = {
just = major_stress_impact_gain
compassionate = massive_stress_impact_gain
}
ai_chance = {
base = 150
ai_value_modifier = {
ai_zeal = 1
ai_vengefulness = 0.5
}
modifier = {
has_trait = just
add = -75
}
modifier = {
has_trait = compassionate
add = -100
}
modifier = {
has_trait = zealous
add = 50
}
modifier = {
has_trait = callous
add = 75
}
}
}
#Option E: It's your problem
option = {
name = hold_court.6090.e
scope:6090_vassal = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -30
}
if = {
limit = {
has_trait = zealous
can_set_relation_rival_trigger = { CHARACTER = root }
}
progress_towards_rival_effect = {
CHARACTER = root
REASON = rival_province_help
OPINION = 0
}
}
}
stress_impact = {
lazy = medium_stress_impact_loss
diligent = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = lazy
add = 50
}
modifier = {
has_trait = diligent
add = -75
}
}
}
after = {
scope:6090_vassal = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:high_almoner }
scope:high_almoner = {
clear_court_event_participation = yes
}
}
if = {
limit = { exists = scope:executioner }
scope:executioner = {
clear_court_event_participation = yes
}
}
if = {
limit = { exists = scope:court_chaplain }
scope:court_chaplain = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# A Land at War
# by Claudia Baldassi
# 6100 - 6101
##################################################
# Two vassals have been waging a long inconclusive war and come to you to settle the dispute #
scripted_trigger vassal_war_char_trigger = {
has_court_event_flag = no
is_at_war = yes
is_at_war_with_liege = no
is_available_ai_adult = yes
}
scripted_trigger vassal_war_conflict_trigger = {
any_war_participant = {
count = 0
OR = {
top_liege = this
NOT = { is_vassal_or_below_of = root }
}
}
war_days >= 365
attacker_war_score >= -50
attacker_war_score <= 50
casus_belli = {
primary_attacker = {
vassal_war_char_trigger = yes
is_vassal_of = root
}
primary_defender = {
vassal_war_char_trigger = yes
is_vassal_of = root
}
}
}
hold_court.6100 = {
type = court_event
title = hold_court.6100.t
desc = {
desc = hold_court.6100.desc
triggered_desc = {
trigger = {
exists = scope:jester
NOR = {
scope:6100_vassal_1 = { has_trait = lifestyle_poet }
scope:6100_vassal_2 = { has_trait = lifestyle_poet }
}
}
desc = hold_court.6100.desc.jester
}
}
theme = court
lower_center_portrait = scope:jester
court_scene = {
button_position_character = scope:6100_vassal_1
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6100_vassal_1 = {
group = petitioners_group
animation = personality_bold
}
scope:6100_vassal_2 = {
group = petitioners_group
animation = personality_bold
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
any_vassal = {
vassal_war_char_trigger = yes
any_character_war = { vassal_war_conflict_trigger = yes }
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
random_vassal = {
limit = { vassal_war_char_trigger = yes }
random_character_war = {
limit = { vassal_war_conflict_trigger = yes }
save_scope_as = vassal_war
}
}
scope:vassal_war = {
primary_attacker = {
save_scope_as = 6100_vassal_1
court_event_character_flag_effect = yes
}
primary_defender = {
save_scope_as = 6100_vassal_2
court_event_character_flag_effect = yes
}
}
if = {
limit = {
employs_court_position = court_jester_court_position
any_court_position_holder = {
type = court_jester_court_position
has_court_event_flag = no
is_landed = no
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = court_jester_court_position
limit = {
has_court_event_flag = no
is_landed = no
is_available_ai_adult = yes
}
save_scope_as = jester
court_event_character_flag_effect = yes
}
}
root = {
save_scope_as = 6100_lord
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: Attacker is right
option = {
name = hold_court.6100.a
scope:vassal_war = {
end_war = attacker
}
scope:6100_vassal_1 = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 50
}
}
scope:6100_vassal_2 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -50
}
}
ai_chance = {
base = 100
modifier = {
opinion = {
target = scope:6100_vassal_1
value >= low_positive_opinion
}
opinion = {
target = scope:6100_vassal_2
value <= low_positive_opinion
}
add = 50
}
modifier = {
opinion = {
target = scope:6100_vassal_1
value >= high_positive_opinion
}
opinion = {
target = scope:6100_vassal_2
value <= low_negative_opinion
}
add = 100
}
}
}
#Option B: Defender is right
option = {
name = hold_court.6100.b
scope:vassal_war = {
end_war = defender
}
scope:6100_vassal_2 = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 50
}
}
scope:6100_vassal_1 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -50
}
}
ai_chance = {
base = 100
modifier = {
opinion = {
target = scope:6100_vassal_2
value >= low_positive_opinion
}
opinion = {
target = scope:6100_vassal_1
value <= low_positive_opinion
}
add = 50
}
modifier = {
opinion = {
target = scope:6100_vassal_2
value >= high_positive_opinion
}
opinion = {
target = scope:6100_vassal_1
value <= low_negative_opinion
}
add = 100
}
}
}
#Option C: ask for a white peace
option = {
name = hold_court.6100.c
trigger = {
NOT = { exists = scope:jester }
}
scope:vassal_war = {
end_war = white_peace
}
scope:6100_vassal_1 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
scope:6100_vassal_2 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
add_prestige = medium_prestige_gain
add_piety = medium_piety_gain
stress_impact = {
wrathful = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
}
modifier = {
has_trait = wrathful
add = -50
}
}
}
#Option D: cruel/arbitrary - throw them both in prison
option = {
name = hold_court.6100.d
trigger = {
OR = {
has_trait = arbitrary
has_trait = sadistic
has_trait = paranoid
has_trait = deceitful
has_trait = torturer
}
NOT = { exists = scope:jester }
}
imprison_character_effect = {
IMPRISONER = root
TARGET = scope:6100_vassal_1
}
imprison_character_effect = {
IMPRISONER = root
TARGET = scope:6100_vassal_2
}
add_dread = major_dread_gain
ai_chance = {
base = 200
}
}
#Option E: propose a duel - if possible
option = {
name = hold_court.6100.e
custom_tooltip = hold_court.6100.e.tt
trigger = {
scope:6100_vassal_1 = {
can_start_single_combat_trigger = yes
}
scope:6100_vassal_2 = {
can_start_single_combat_trigger = yes
}
NOR = {
has_trait = arbitrary
has_trait = sadistic
has_trait = paranoid
has_trait = deceitful
has_trait = torturer
}
NOT = { exists = scope:jester }
}
configure_start_single_combat_effect = {
SC_INITIATOR = scope:6100_vassal_1
SC_ATTACKER = scope:6100_vassal_1
SC_DEFENDER = scope:6100_vassal_2
FATALITY = no
FIXED = no
LOCALE = terrain_scope
OUTPUT_EVENT = hold_court.6101
INVALIDATION_EVENT = fp1_tbc.0102
}
add_prestige = medium_prestige_gain
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 1
}
}
}
#Option F: jester proposes a funny solution/competition
option = {
name = hold_court.6100.f
trigger = {
exists = scope:jester
NOR = {
scope:6100_vassal_1 = { has_trait = lifestyle_poet }
scope:6100_vassal_2 = { has_trait = lifestyle_poet }
}
}
scope:6100_vassal_1 = {
add_opinion = {
target = root
modifier = humiliated_opinion
opinion = -75
}
}
scope:6100_vassal_2 = {
add_opinion = {
target = root
modifier = humiliated_opinion
opinion = -75
}
}
scope:6100_vassal_1 = {
duel = {
skill = diplomacy
target = scope:6100_vassal_2
10 = {
desc = hold_court.6100.f.1
compare_modifier = {
value = scope:duel_value
multiplier = 3
}
root = {
send_interface_toast = {
title = hold_court.6100.f.1.t
scope:vassal_war = {
end_war = attacker
}
}
}
}
10 = {
desc = hold_court.6100.f.2
compare_modifier = {
value = scope:duel_value
multiplier = -3
}
root = {
send_interface_toast = {
title = hold_court.6100.f.2.t
scope:vassal_war = {
end_war = defender
}
}
}
}
}
}
every_courtier_or_guest = {
custom = custom.every_courtier_and_guest
add_opinion = {
target = root
modifier = amused_opinion
opinion = 10
}
}
stress_impact = {
base = medium_stress_impact_loss
}
ai_chance = {
base = 150
ai_value_modifier = {
ai_sociability = 0.25
}
}
}
#Option G: solve your own problems
option = {
name = hold_court.6100.g
custom_tooltip = hold_court.6100.g.tt
scope:6100_vassal_1 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
scope:6100_vassal_2 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
stress_impact = {
lazy = medium_stress_impact_loss
content = medium_stress_impact_loss
diligent = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = lazy
add = 50
}
modifier = {
has_trait = content
add = 50
}
modifier = {
has_trait = diligent
add = -50
}
modifier = {
has_trait = compassionate
add = -50
}
}
}
after = {
scope:6100_vassal_1 = {
clear_court_event_participation = yes
}
scope:6100_vassal_2 = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:jester }
scope:jester = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
hold_court.6101 = {
hidden = yes
immediate = {
scope:6100_lord = {
send_interface_toast = {
title = hold_court.6101.t
left_icon = scope:sc_victor
right_icon = scope:sc_loser
custom_tooltip = hold_court.6101.tt
}
}
if = {
limit = {
scope:sc_victor = {
this = scope:6100_vassal_1
}
}
scope:vassal_war = {
end_war = attacker
}
scope:6100_vassal_1 = {
add_prestige = medium_prestige_gain
}
}
else = {
scope:vassal_war = {
end_war = defender
}
scope:6100_vassal_2 = {
add_prestige = medium_prestige_gain
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
}
##################################################
# A Ravaged Land
# by Claudia Baldassi
# 6110
##################################################
# Two vassals are fighting a bitter & bloody war, with the land/peasants suffering as it rages onwards. The peasants come to complain and ask for a peaceful solution #
scripted_trigger hold_court_6110_valid_pool_character_trigger = {
has_court_event_flag = no
is_available_ai_adult = yes
is_lowborn = yes
OR = {
faith = scope:6110_vassal_1.capital_county.faith
faith = scope:6110_vassal_2.capital_county.faith
}
OR = {
culture = scope:6110_vassal_1.capital_county.culture
culture = scope:6110_vassal_2.capital_county.culture
}
}
hold_court.6110 = {
type = court_event
title = hold_court.6110.t
desc = {
desc = hold_court.6110.desc
triggered_desc = {
trigger = {
exists = scope:almoner
}
desc = hold_court.6110.desc.almoner
}
}
theme = court
lower_left_portrait = scope:6110_vassal_1
lower_center_portrait = scope:6110_vassal_2
court_scene = {
button_position_character = scope:6110_rep
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6110_rep = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
any_vassal = {
vassal_war_char_trigger = yes
any_character_war = { vassal_war_conflict_trigger = yes }
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
random_vassal = {
limit = { vassal_war_char_trigger = yes }
random_character_war = {
limit = { vassal_war_conflict_trigger = yes }
save_scope_as = vassal_war
}
}
scope:vassal_war = {
primary_attacker = {
save_scope_as = 6110_vassal_1
court_event_character_flag_effect = yes
}
primary_defender = {
save_scope_as = 6110_vassal_2
court_event_character_flag_effect = yes
}
}
if = {
limit = {
any_pool_character = {
province = root.capital_province
hold_court_6110_valid_pool_character_trigger = yes
}
}
random_pool_character = {
province = root.capital_province
limit = {
hold_court_6110_valid_pool_character_trigger = yes
}
save_scope_as = 6110_rep
}
}
else = {
create_character = {
location = root.capital_province
template = servant_character
faith = scope:6110_vassal_2.capital_county.faith
culture = scope:6110_vassal_2.capital_county.culture
save_scope_as = 6110_rep
}
scope:6110_rep = {
add_character_flag = 6110_remove_char_flag
}
}
scope:6110_rep = {
court_event_character_flag_effect = yes
}
hidden_effect = { add_courtier = scope:6110_rep }
if = {
limit = {
employs_court_position = high_almoner_court_position
any_court_position_holder = {
type = high_almoner_court_position
has_court_event_flag = no
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = high_almoner_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
}
save_scope_as = almoner
court_event_character_flag_effect = yes
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: decree ceasefire (enforce demands)
option = {
name = hold_court.6110.a
scope:vassal_war = {
end_war = attacker
}
scope:6110_vassal_1 = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 30
}
every_sub_realm_county = {
custom = 6110_custom_every_realm_1
change_county_control = 15
}
}
scope:6110_vassal_2 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -30
}
every_sub_realm_county = {
custom = 6110_custom_every_realm_2
change_county_control = 15
}
}
ai_chance = {
base = 100
modifier = {
gold < medium_gold_value
add = -100
}
modifier = {
has_trait = profligate
add = 75
}
modifier = {
has_trait = improvident
add = 75
}
modifier = {
has_trait = greedy
add = -75
}
ai_value_modifier = {
ai_greed = 0.5
}
}
}
#Option B: decree ceasefire (white peace)
option = {
name = hold_court.6110.b
scope:vassal_war = {
end_war = white_peace
}
scope:6110_vassal_1 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -15
}
every_sub_realm_county = {
custom = 6110_custom_every_realm_1
change_county_control = 15
}
}
scope:6110_vassal_2 = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 15
}
every_sub_realm_county = {
custom = 6110_custom_every_realm_2
change_county_control = 15
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
}
modifier = {
has_trait = wrathful
add = -50
}
}
}
#Option C: decree ceasefire (surrender)
option = {
name = hold_court.6110.c
scope:vassal_war = {
end_war = defender
}
scope:6110_vassal_1 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -30
}
every_sub_realm_county = {
custom = 6110_custom_every_realm_1
change_county_control = 15
}
}
scope:6110_vassal_2 = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 30
}
every_sub_realm_county = {
custom = 6110_custom_every_realm_2
change_county_control = 15
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
}
modifier = {
has_trait = wrathful
add = -50
}
}
}
#Option E: don't meddle
option = {
name = hold_court.6110.e
scope:6110_vassal_1 = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 5
}
every_sub_realm_county = {
custom = 6110_custom_every_realm_1
change_county_control = -5
}
}
scope:6110_vassal_2 = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 5
}
every_sub_realm_county = {
custom = 6110_custom_every_realm_2
change_county_control = 5
}
}
ai_chance = {
base = 100
}
}
after = {
scope:6100_vassal_1 = {
clear_court_event_participation = yes
}
scope:6100_vassal_2 = {
clear_court_event_participation = yes
}
scope:6110_rep = {
clear_court_event_participation = yes
if = {
limit = {
has_character_flag = 6110_remove_char_flag
is_imprisoned = no
}
silent_disappearance_effect = yes
}
}
if = {
limit = { exists = scope:almoner }
scope:almoner = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# The Day of Truth
# by Claudia Baldassi
# 6120 - 6121
##################################################
# Your steward requires you to invest in a large-scale survey of your kingdom and people to make taxation more efficient (think Domesday Book) #
scripted_effect hold_court_6120_rewards = {
every_sub_realm_county = {
custom = all_realm_county
change_county_control = 20
}
if = {
limit = {
any_court_position_holder = {
type = seneschal_court_position
}
}
add_character_modifier = {
modifier = 6121_seneschal_domesday_modifier
years = 30
}
}
else = {
add_character_modifier = {
modifier = 6121_steward_domesday_modifier
years = 30
}
}
}
hold_court.6120 = {
type = court_event
title = hold_court.6120.t
desc = {
desc = hold_court.6120.desc
first_valid = {
triggered_desc = {
trigger = {
exists = scope:keeper_swans
}
desc = hold_court.6120.desc.swans
}
triggered_desc = {
trigger = {
exists = scope:seneschal
}
desc = hold_court.6120.desc.seneschal
}
}
triggered_desc = {
trigger = {
exists = scope:jester
}
desc = hold_court.6120.desc.jester
}
}
theme = court
lower_left_portrait = scope:seneschal
lower_center_portrait = scope:keeper_swans
lower_right_portrait = scope:jester
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:steward
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:steward = {
group = petitioners_group
animation = personality_rational
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
exists = cp:councillor_steward
cp:councillor_steward = {
has_court_event_flag = no
is_available_ai_adult = yes
}
NOT = { #not using cooldown because the cooldown is only valid if you do the survey
has_character_flag = 6120_has_domesday_book_flag
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
cp:councillor_steward = {
save_scope_as = steward
court_event_character_flag_effect = yes
}
if = {
limit = {
employs_court_position = keeper_of_swans_court_position
any_court_position_holder = {
type = keeper_of_swans_court_position
has_court_event_flag = no
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = keeper_of_swans_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
}
save_scope_as = keeper_swans
court_event_character_flag_effect = yes
}
}
else_if = {
limit = {
employs_court_position = seneschal_court_position
any_court_position_holder = {
type = seneschal_court_position
has_court_event_flag = no
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = seneschal_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
}
save_scope_as = seneschal
court_event_character_flag_effect = yes
}
}
if = {
limit = {
employs_court_position = court_jester_court_position
any_court_position_holder = {
type = court_jester_court_position
has_court_event_flag = no
is_available_ai_adult = yes
is_landed = no
}
}
random_court_position_holder = {
type = court_jester_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
is_landed = no
}
save_scope_as = jester
court_event_character_flag_effect = yes
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: yes
option = {
name = hold_court.6120.a
trigger = {
NOT = { exists = scope:seneschal }
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= major_treasury_or_gold_value
}
}
remove_treasury_or_gold = major_treasury_or_gold_value
add_character_flag = {
flag = 6120_has_domesday_book_flag
years = 50
}
show_as_tooltip = {
random_list = {
100 = {
show_chance = no
desc = hold_court.6120.a.tt
hold_court_6120_rewards = yes
}
}
}
hidden_effect = {
scope:steward = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 20
}
}
trigger_event = {
id = hold_court.6121
days = 185
}
}
stress_impact = {
lazy = major_stress_impact_gain
content = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
gold < major_gold_value
add = -100
}
ai_value_modifier = {
ai_energy = 0.25
ai_rationality = 0.5
ai_greed = -0.25
}
modifier = {
has_trait = lazy
add = -75
}
modifier = {
has_trait = content
add = -75
}
}
}
#Option C: did you say TAXES??
option = {
name = hold_court.6120.c
every_vassal = {
limit = {
is_ai = yes
}
custom = 6120_every_vassal
pay_treasury_or_gold = {
target = root
value = tiny_treasury_or_gold_value
}
}
add_character_modifier = {
modifier = 6120_extra_taxes_modifier
years = 10
}
stress_impact = {
generous = major_stress_impact_gain
compassionate = major_stress_impact_gain
just = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = generous
add = -75
}
modifier = {
has_trait = compassionate
add = -75
}
modifier = {
has_trait = just
add = -75
}
ai_value_modifier = {
ai_greed = -0.5
}
}
}
#Option D: no
option = {
name = hold_court.6120.d
trigger = {
NOT = { exists = scope:jester }
}
stress_impact = {
ambitious = medium_stress_impact_gain
diligent = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = ambitious
add = -50
}
modifier = {
has_trait = diligent
add = -75
}
}
}
#Option E: no but with jester
option = {
name = hold_court.6120.e
trigger = {
exists = scope:jester
}
scope:jester = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 30
}
}
stress_impact = {
ambitious = major_stress_impact_gain
diligent = massive_stress_impact_gain
}
ai_chance = {
base = 150
modifier = {
has_trait = ambitious
add = -50
}
modifier = {
has_trait = diligent
add = -75
}
}
}
after = {
scope:steward = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:keeper_swans }
scope:keeper_swans = {
clear_court_event_participation = yes
}
}
if = {
limit = { exists = scope:seneschal }
scope:seneschal = {
clear_court_event_participation = yes
}
}
if = {
limit = { exists = scope:jester }
scope:jester = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
hold_court.6121 = {
type = character_event
title = hold_court.6121.t
desc = hold_court.6121.desc
theme = court
left_portrait = {
character = root
animation = happiness
}
right_portrait = {
character = scope:6121_responsible
animation = personality_rational
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
OR = {
AND = {
exists = cp:councillor_steward
cp:councillor_steward = {
is_available_ai_adult = yes
}
}
AND = {
employs_court_position = seneschal_court_position
any_court_position_holder = {
type = seneschal_court_position
is_available_ai_adult = yes
}
}
}
}
immediate = {
if = {
limit = {
employs_court_position = seneschal_court_position
any_court_position_holder = {
type = seneschal_court_position
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = seneschal_court_position
limit = { is_available_ai_adult = yes }
save_scope_as = 6121_responsible
}
}
else = {
cp:councillor_steward = {
save_scope_as = 6121_responsible
}
}
}
option = {
name = hold_court.6121.a
hold_court_6120_rewards = yes
}
}
##################################################
# The Cadastre
# by Claudia Baldassi
# 6130
##################################################
# Someone suggests a "cadastral survey" - high cost for an increase of development in all counties you hold #
scripted_trigger hold_court_6130_valid_child_trigger = {
has_court_event_flag = no
is_courtier_of = root
age >= 11
is_available_ai_child = yes
}
scripted_effect hold_court_6130_a_rewards = {
if = {
limit = {
OR = {
has_character_flag = 6130_seneschal_assigned
has_character_flag = 6131_seneschal_assigned
}
}
every_held_county = {
custom = custom.every_held_county
change_development_progress_with_overflow = 50
}
}
else_if = {
limit = {
OR = {
has_character_flag = 6130_steward_assigned
has_character_flag = 6131_steward_assigned
}
}
every_held_county = {
custom = custom.every_held_county
change_development_progress_with_overflow = 35
}
}
scope:6130_proposer = {
add_prestige = minor_prestige_gain
}
every_held_county = {
custom = custom.every_held_county
add_county_modifier = {
modifier = 6131_mapped_wilderness_county_modifier
years = 10
}
}
add_prestige = medium_prestige_gain
}
hold_court.6130 = {
type = court_event
title = hold_court.6130.t
desc = hold_court.6130.desc
theme = court
lower_left_portrait = scope:tutor
lower_center_portrait = scope:m_hunt
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:6130_proposer
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6130_proposer = {
group = petitioners_group
animation = personality_rational
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
exists = cp:councillor_steward
cp:councillor_steward = {
has_court_event_flag = no
is_available_ai_adult = yes
}
NOT = { # not cooldown because it's only valid if you do the cadastre
has_character_flag = 6130_has_done_cadastre
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
if = {
limit = {
employs_court_position = seneschal_court_position
any_court_position_holder = {
type = seneschal_court_position
has_court_event_flag = no
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = seneschal_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
}
save_scope_as = 6130_proposer
save_scope_as = seneschal
court_event_character_flag_effect = yes
}
add_character_flag = {
flag = 6130_seneschal_assigned
months = 6
}
}
else = {
cp:councillor_steward = {
save_scope_as = 6130_proposer
court_event_character_flag_effect = yes
}
add_character_flag = {
flag = 6130_steward_assigned
days = 180
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: yes
option = {
name = hold_court.6130.a
remove_treasury_or_gold = major_treasury_or_gold_value
show_as_tooltip = {
random_list = {
100 = {
show_chance = no
desc = hold_court.6130.a.tt
hold_court_6130_a_rewards = yes
}
}
}
hidden_effect = {
trigger_event = {
id = hold_court.6131
days = { 93 171 }
}
add_character_flag = {
flag = 6130_has_done_cadastre
years = 20
}
}
stress_impact = {
lazy = minor_stress_gain
greedy = medium_stress_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = lazy
add = -50
}
modifier = {
has_trait = greedy
add = -75
}
modifier = {
gold < major_treasury_or_gold_value
factor = 0
}
ai_value_modifier = {
ai_greed = -0.25
ai_rationality = 0.25
}
}
}
#Option D: no
option = {
name = hold_court.6130.d
scope:6130_proposer = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
if = {
limit = {
has_character_flag = 6130_seneschal_assigned
}
remove_character_flag = 6130_seneschal_assigned
}
if = {
limit = {
has_character_flag = 6130_steward_assigned
}
remove_character_flag = 6130_steward_assigned
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = -0.25
}
modifier = {
gold < major_gold_value
add = 100
}
}
}
after = {
scope:6130_proposer = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:m_hunt }
scope:m_hunt = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
hold_court.6131 = {
type = character_event
title = hold_court.6131.t
desc = hold_court.6131.desc
theme = court
right_portrait = {
character = scope:6131_proposer
animation = personality_rational
}
trigger = {
trigger_if = {
limit = {
scope:6130_proposer = { is_alive = no }
}
OR = {
exists = cp:councillor_steward
any_court_position_holder = {
type = seneschal_court_position
}
}
}
}
immediate = {
if = {
limit = {
scope:6130_proposer = { is_alive = yes }
}
scope:6130_proposer = {
save_scope_as = 6131_proposer
}
}
else_if = {
limit = {
any_court_position_holder = {
type = seneschal_court_position
}
}
random_court_position_holder = {
type = seneschal_court_position
save_scope_as = 6131_proposer
}
add_character_flag = {
flag = 6131_seneschal_assigned
days = 3
}
}
else = {
cp:councillor_steward = {
save_scope_as = 6131_proposer
}
add_character_flag = {
flag = 6131_steward_assigned
days = 3
}
}
if = {
limit = {
scope:6130_proposer = {
is_alive = no
}
}
if = {
limit = {
has_character_flag = 6130_seneschal_assigned
}
remove_character_flag = 6130_seneschal_assigned
}
if = {
limit = {
has_character_flag = 6130_steward_assigned
}
remove_character_flag = 6130_steward_assigned
}
}
}
option = {
name = hold_court.6131.a
hold_court_6130_a_rewards = yes
}
}
##################################################
# A Cumbersome Gift
# by Claudia Baldassi
# 6140
##################################################
# A vassal offers you a bear/tiger/lion. Do you keep it for entertainment, kill it for a soft carpet, or...? If you keep it to show off during banquets, something might happen, good or bad! #
scripted_trigger hold_court_6140_valid_vassal_trigger = {
has_court_event_flag = no
opinion = {
target = root
value >= 50
}
is_available_healthy_ai_adult = yes
any_held_county = {
title_province = {
OR = {
hold_court_6140_europe_trigger = yes
hold_court_6140_india_trigger = yes
hold_court_6140_africa_trigger = yes
}
}
}
}
scripted_trigger hold_court_6140_europe_trigger = {
terrain = forest
geographical_region = world_europe
}
scripted_trigger hold_court_6140_india_trigger = {
terrain = jungle
geographical_region = world_india
}
scripted_trigger hold_court_6140_africa_trigger = {
OR = {
terrain = jungle
terrain = desert_mountains
terrain = oasis
terrain = drylands
}
geographical_region = world_africa
}
hold_court.6140 = {
type = court_event
title = hold_court.6140.t
desc = hold_court.6140.desc
theme = court
lower_right_portrait = scope:jester
court_scene = {
button_position_character = scope:6140_gifter
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6140_gifter = {
group = petitioners_group
animation = happiness
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 20 }
trigger = {
any_vassal = {
hold_court_6140_valid_vassal_trigger = yes
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
random_vassal = {
limit = {
hold_court_6140_valid_vassal_trigger = yes
}
save_scope_as = 6140_gifter
court_event_character_flag_effect = yes
random_held_county = {
limit = {
title_province = {
OR = {
hold_court_6140_europe_trigger = yes
hold_court_6140_india_trigger = yes
hold_court_6140_africa_trigger = yes
}
}
}
save_scope_as = location
title_province = {
save_scope_as = 6140_province
}
}
}
if = {
limit = {
employs_court_position = court_jester_court_position
any_court_position_holder = {
type = court_jester_court_position
has_court_event_flag = no
is_available_healthy_ai_adult = yes
}
}
random_court_position_holder = {
type = court_jester_court_position
limit = {
has_court_event_flag = no
is_available_healthy_ai_adult = yes
}
save_scope_as = jester
}
}
hunt_activity_dangerous_game_effect = { PROVINCE = scope:6140_province }
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: Kill it for pelt (chance to get an artifact)
option = {
name = hold_court.6140.a
custom_tooltip = hold_court.6140.a.tt
random_list = {
80 = {
add_character_modifier = {
modifier = 6140_new_carpet_modifier
years = 50
}
}
20 = {
create_artifact_animal_hide_effect = {
OWNER = root
HUNTER = root
LEGENDARY = no
ANIMAL = root.var:animal_type
}
if = {
limit = { exists = scope:newly_created_artifact }
scope:newly_created_artifact = { save_scope_as = pelt }
send_interface_toast = {
title = hold_court.6140.artifact_toast
left_icon = scope:pelt
show_as_tooltip = {
scope:pelt = { set_owner = root }
}
}
}
custom_tooltip = hold_court.6140.artifact_tt
}
}
change_current_court_grandeur = minor_court_grandeur_gain
ai_chance = {
base = 100
}
}
#Option B: Keep it as pet
option = {
name = hold_court.6140.b
change_current_court_grandeur = monumental_court_grandeur_gain
add_character_modifier = {
modifier = 6140_pet_modifier
years = 10
}
ai_chance = {
base = 100
}
}
#Option C: if you have a jester
option = {
name = hold_court.6140.c
trigger = {
exists = scope:jester
}
change_current_court_grandeur = medium_court_grandeur_gain
reverse_add_opinion = {
target = scope:jester
modifier = scared_opinion
opinion = -30
}
add_character_modifier = {
modifier = 6140_pet_modifier
years = 10
}
every_courtier_or_guest = {
custom = 6140_every_courtier_or_guest
add_opinion = {
target = root
modifier = amused_opinion
opinion = 10
}
}
scope:jester = {
duel = {
skill = prowess
value = average_skill_rating
50 = { #Success!
compare_modifier = {
value = scope:duel_value
multiplier = 4
min = -50
}
desc = hold_court.6140.c.success
root = {
send_interface_toast = {
title = hold_court.6140.c.success.tt
left_icon = scope:jester
every_courtier_or_guest = {
custom = 6140_every_courtier_or_guest
add_opinion = {
target = scope:jester
modifier = impressed_opinion
opinion = 20
}
}
}
}
}
30 = { #Soft failure
compare_modifier = {
value = scope:duel_value
multiplier = 1
min = -20
}
desc = hold_court.6140.c.soft_failure
root = {
send_interface_toast = {
title = hold_court.6140.c.soft_failure.tt
left_icon = scope:jester
every_courtier_or_guest = {
custom = 6140_every_courtier_or_guest
add_opinion = {
target = scope:jester
modifier = amused_opinion
opinion = 10
}
}
}
}
}
15 = { #Middle failure
compare_modifier = {
value = scope:duel_value
multiplier = -2
min = -20
}
desc = hold_court.6140.c.middle_failure
root = {
send_interface_toast = {
title = hold_court.6140.c.middle_failure.tt
left_icon = scope:jester
scope:jester = {
random_list = {
30 = {
apply_maimed_trait_and_modifier_effect = yes
}
30 = {
add_trait = one_legged
}
30 = {
add_trait = disfigured
}
}
}
}
}
}
5 = { #Hard failure
compare_modifier = {
value = scope:duel_value
multiplier = -1
min = -1
}
desc = hold_court.6140.c.hard_failure
root = {
send_interface_toast = {
title = hold_court.6140.c.hard_failure.tt
left_icon = scope:jester
scope:jester = {
death = {
death_reason = death_riding_animal
}
}
}
}
}
}
}
ai_chance = {
base = 120
ai_value_modifier = {
ai_compassion = -0.25
ai_sociability = 0.25
}
}
}
#Option D: if you are a torturer
option = {
name = hold_court.6140.d
trigger = {
OR = {
has_trait = torturer
has_trait = callous
has_trait = sadistic
}
}
trait = torturer
trait = callous
trait = sadistic
add_character_modifier = {
modifier = 6140_pet_modifier
years = 10
}
every_prisoner = {
custom = 6140_every_prisoner
add_opinion = {
target = root
modifier = scared_opinion
opinion = -50
}
add_character_modifier = 6140_animal_guardian_modifier
}
ai_chance = {
base = 150
}
}
#Option E: Turn it away
option = {
name = hold_court.6140.e
reverse_add_opinion = {
target = scope:6140_gifter
modifier = insult_opinion
opinion = -40
}
ai_chance = {
base = 75
}
}
after = {
remove_variable = animal_type
scope:6140_gifter = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:jester }
scope:jester = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
#feast events:
# -host-only - you bring in the beast: you/someone gets hurt or killed, your master of the hunt intervenes, jester rides it, you intimidate your enemies, all guests are impressed (if no one dies)
# -host-triggered - the host brings in the beast: you are scared/impressed, you/someone gets hurt or killed, master of the hunt of host intervenes, jester rides it
##################################################
# Empty Coffers
# by Claudia Baldassi
# 6160
##################################################
# A vassal is bankrupt and is asking for money to be bailed out. #
scripted_trigger hold_court_6160_valid_bankrupt_vassal_trigger = {
has_court_event_flag = no
is_available_ai_adult = yes
gold < 0
}
scripted_trigger hold_court_6160_valid_hook_trigger = {
OR = {
has_hook_of_type = {
type = indebted_hook
target = root
}
has_hook_of_type = {
type = favor_hook
target = root
}
}
}
scripted_trigger hold_court_6160_valid_friend_trigger = {
has_court_event_flag = no
is_available_ai_adult = yes
OR = {
has_any_good_relationship_with_root_trigger = yes
is_child_of = root
has_relation_best_friend = root
has_relation_soulmate = root
is_close_family_of = root
}
}
hold_court.6160 = {
type = court_event
title = hold_court.6160.t
desc = {
desc = hold_court.6160.desc
first_valid = {
triggered_desc = {
trigger = {
scope:6160_vassal = { hold_court_6160_valid_friend_trigger = yes }
}
desc = hold_court.6160.desc_friend
}
triggered_desc = {
trigger = {
scope:6160_vassal = { hold_court_6160_valid_hook_trigger = yes }
}
desc = hold_court.6160.desc_hook
}
desc = hold_court.6160.desc_fallback
}
}
theme = court
lower_left_portrait = scope:almoner
lower_center_portrait = scope:seneschal
court_scene = {
button_position_character = scope:6160_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6160_vassal = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 15 }
trigger = {
any_vassal = { hold_court_6160_valid_bankrupt_vassal_trigger = yes }
}
weight_multiplier = {
base = 1
modifier = {
factor = 3
any_vassal = {
hold_court_6160_valid_bankrupt_vassal_trigger = yes
hold_court_6160_valid_hook_trigger = yes
}
}
modifier = {
factor = 2
any_vassal = {
hold_court_6160_valid_bankrupt_vassal_trigger = yes
hold_court_6160_valid_friend_trigger = yes
}
}
modifier = {
factor = 0.1
gold < 0
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
if = {
limit = {
any_vassal = {
hold_court_6160_valid_bankrupt_vassal_trigger = yes
hold_court_6160_valid_hook_trigger = yes
}
}
random_vassal = {
limit = {
hold_court_6160_valid_bankrupt_vassal_trigger = yes
hold_court_6160_valid_hook_trigger = yes
}
save_scope_as = 6160_vassal
}
}
else_if = {
limit = {
any_vassal = {
hold_court_6160_valid_bankrupt_vassal_trigger = yes
hold_court_6160_valid_friend_trigger = yes
}
}
random_vassal = {
limit = {
hold_court_6160_valid_bankrupt_vassal_trigger = yes
hold_court_6160_valid_friend_trigger = yes
}
save_scope_as = 6160_vassal
}
}
else = {
random_vassal = {
limit = { hold_court_6160_valid_bankrupt_vassal_trigger = yes }
save_scope_as = 6160_vassal
}
}
scope:6160_vassal = {
court_event_character_flag_effect = yes
}
if = {
limit = {
employs_court_position = high_almoner_court_position
any_court_position_holder = {
type = high_almoner_court_position
has_court_event_flag = no
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = high_almoner_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
}
save_scope_as = almoner
court_event_character_flag_effect = yes
}
}
if = {
limit = {
employs_court_position = seneschal_court_position
any_court_position_holder = {
type = seneschal_court_position
has_court_event_flag = no
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = seneschal_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
}
save_scope_as = seneschal
court_event_character_flag_effect = yes
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: money for new hook
option = {
name = hold_court.6160.a
trigger = {
NOT = {
scope:6160_vassal = {
hold_court_6160_valid_hook_trigger = yes
}
}
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= major_gold_value
}
}
pay_short_term_gold = {
target = scope:6160_vassal
gold = medium_gold_value
}
add_hook = {
type = indebted_hook
target = scope:6160_vassal
}
reverse_add_opinion = {
target = scope:6160_vassal
modifier = grateful_opinion
opinion = 20
}
stress_impact = {
greedy = medium_stress_gain
}
ai_chance = {
base = 100
modifier = {
gold < medium_gold_value
add = -95
}
modifier = {
has_trait = greedy
add = -50
}
ai_value_modifier = {
ai_greed = -0.25
}
}
}
#Option B: gold for old hook
option = {
name = hold_court.6160.b
trigger = {
scope:6160_vassal = {
hold_court_6160_valid_hook_trigger = yes
}
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= major_gold_value
}
}
scope:6160_vassal = {
remove_hook = { target = root }
}
pay_short_term_gold = {
target = scope:6160_vassal
gold = medium_gold_value
}
reverse_add_opinion = {
target = scope:6160_vassal
modifier = grateful_opinion
opinion = 30
}
stress_impact = {
greedy = medium_stress_gain
}
ai_chance = {
base = 120
modifier = {
gold < medium_gold_value
add = -95
}
modifier = {
has_trait = greedy
add = -50
}
ai_value_modifier = {
ai_greed = -0.25
ai_honor = 0.25
}
}
}
#Option C: gold for friend
option = {
name = hold_court.6160.c
trigger = {
scope:6160_vassal = {
hold_court_6160_valid_friend_trigger = yes
NOT = {
hold_court_6160_valid_hook_trigger = yes
}
}
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= major_gold_value
}
}
pay_short_term_gold = {
target = scope:6160_vassal
gold = medium_gold_value
}
add_prestige = major_prestige_gain
change_current_court_grandeur = medium_court_grandeur_gain
reverse_add_opinion = {
target = scope:6160_vassal
modifier = grateful_opinion
opinion = 40
}
stress_impact = {
gregarious = medium_stress_loss
improvident = major_stress_loss
greedy = major_stress_gain
}
ai_chance = {
base = 100
modifier = {
gold < medium_gold_value
add = -95
}
modifier = {
has_trait = greedy
add = -75
}
modifier = {
has_trait = gregarious
add = 50
}
modifier = {
has_trait = improvident
add = 75
}
ai_value_modifier = {
ai_greed = -0.5
}
}
}
#Option D: almoner
option = {
name = hold_court.6160.d
trigger = {
exists = scope:almoner
NOT = { exists = scope:seneschal } # Prevent option bloat
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= major_gold_value
}
}
pay_short_term_gold = {
target = scope:6160_vassal
gold = major_gold_value
}
add_piety = major_piety_gain
change_current_court_grandeur = major_court_grandeur_gain
reverse_add_opinion = {
target = scope:6160_vassal
modifier = grateful_opinion
opinion = 30
}
add_hook = {
type = indebted_hook
target = scope:6160_vassal
}
stress_impact = {
improvident = major_stress_loss
greedy = major_stress_gain
}
ai_chance = {
base = 100
modifier = {
gold < major_gold_value
add = -95
}
modifier = {
has_trait = greedy
add = -75
}
modifier = {
has_trait = improvident
add = 75
}
modifier = {
has_trait = zealous
add = 25
}
ai_value_modifier = {
ai_greed = -0.5
ai_zeal = 0.5
}
}
}
#Option E: seneschal
option = {
name = hold_court.6160.e
trigger = {
exists = scope:seneschal
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= major_gold_value
}
}
if = {
limit = {
scope:6160_vassal = {
hold_court_6160_valid_hook_trigger = yes
}
}
scope:6160_vassal = {
remove_hook = { target = root }
}
}
pay_treasury_or_gold = {
target = scope:6160_vassal
value = medium_treasury_or_gold_value
}
scope:6160_vassal = {
add_character_modifier = {
modifier = 6160_seneschal_help_modifier
years = 5
}
}
add_hook = {
type = indebted_hook
target = scope:6160_vassal
}
add_prestige = medium_prestige_gain
change_current_court_grandeur = medium_court_grandeur_gain
reverse_add_opinion = {
target = scope:6160_vassal
modifier = grateful_opinion
opinion = 30
}
stress_impact = {
greedy = medium_stress_gain
}
ai_chance = {
base = 120
modifier = {
gold < medium_treasury_or_gold_value
add = -95
}
modifier = {
has_trait = greedy
add = -50
}
ai_value_modifier = {
ai_greed = -0.25
}
}
}
#Option F: no money to spare
option = {
name = hold_court.6160.f
reverse_add_opinion = {
target = scope:6160_vassal
modifier = disappointed_opinion
opinion = -10
}
stress_impact = {
generous = major_stress_gain
improvident = massive_stress_gain
}
ai_chance = {
base = 100
modifier = {
gold < medium_gold_value
add = 95
}
modifier = {
has_trait = greedy
add = 50
}
modifier = {
has_trait = generous
add = -75
}
modifier = {
has_trait = improvident
add = -100
}
ai_value_modifier = {
ai_greed = 0.25
}
}
}
after = {
scope:6160_vassal = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:almoner }
scope:almoner = {
clear_court_event_participation = yes
}
}
if = {
limit = { exists = scope:seneschal }
scope:seneschal = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Ignoble Imprisonment
# by Claudia Baldassi
# 6170
##################################################
# A vassal has a family member imprisoned by another vassal in your realm. They petition you to have them released #
scripted_trigger hold_court_6170_valid_vassal_trigger = {
is_available_ai_adult = yes
has_court_event_flag = no
save_temporary_scope_as = vassal_scope
OR = {
any_close_or_extended_family_member = {
hold_court_6170_valid_prisoner_trigger = yes
}
any_consort = {
hold_court_6170_valid_prisoner_trigger = yes
}
betrothed ?= {
hold_court_6170_valid_prisoner_trigger = yes
}
}
}
scripted_trigger hold_court_6170_valid_prisoner_trigger = {
has_court_event_flag = no
is_imprisoned = yes
is_ai = yes
imprisoner = {
is_vassal_of = root
NOR = {
AND = {
exists = scope:vassal_scope
this = scope:vassal_scope
}
AND = {
exists = scope:6170_vassal
this = scope:6170_vassal
}
}
}
}
hold_court.6170 = {
type = court_event
title = hold_court.6170.t
desc = hold_court.6170.desc
theme = court
lower_right_portrait = scope:6170_relative
lower_left_portrait = scope:6170_rival
court_scene = {
button_position_character = scope:6170_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6170_vassal = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
any_vassal = {
hold_court_6170_valid_vassal_trigger = yes
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
random_vassal = {
limit = {
hold_court_6170_valid_vassal_trigger = yes
}
save_scope_as = 6170_vassal
court_event_character_flag_effect = yes
}
if = {
limit = {
scope:6170_vassal = {
any_close_or_extended_family_member = {
hold_court_6170_valid_prisoner_trigger = yes
}
}
}
scope:6170_vassal = {
random_close_or_extended_family_member = {
limit = {
hold_court_6170_valid_prisoner_trigger = yes
}
save_scope_as = 6170_relative
}
}
}
else_if = {
limit = {
scope:6170_vassal = {
any_consort = {
hold_court_6170_valid_prisoner_trigger = yes
}
}
}
scope:6170_vassal = {
random_consort = {
limit = {
hold_court_6170_valid_prisoner_trigger = yes
}
save_scope_as = 6170_relative
}
}
}
else = {
scope:6170_vassal = {
betrothed = {
save_scope_as = 6170_relative
}
}
}
scope:6170_relative = {
court_event_character_flag_effect = yes
imprisoner = {
save_scope_as = 6170_rival
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: release them
option = {
name = hold_court.6170.a
if = {
limit = {
can_add_hook = {
type = favor_hook
target = scope:6170_vassal
}
}
add_hook = {
type = favor_hook
target = scope:6170_vassal
}
}
if = {
limit = {
can_add_hook = {
type = favor_hook
target = scope:6170_relative
}
}
add_hook = {
type = favor_hook
target = scope:6170_relative
}
}
scope:6170_relative = { release_from_prison = yes }
reverse_add_opinion = {
target = scope:6170_vassal
modifier = grateful_opinion
opinion = 30
}
if = {
limit = {
scope:6170_vassal = {
can_set_relation_potential_friend_trigger = { CHARACTER = root }
}
}
scope:6170_vassal = {
set_relation_potential_friend = root
}
}
reverse_add_opinion = {
target = scope:6170_relative
modifier = grateful_opinion
opinion = 30
}
stress_impact = {
callous = medium_stress_gain
torturer = medium_stress_gain
arbitrary = medium_stress_gain
sadistic = medium_stress_gain
vengeful = medium_stress_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 1
}
modifier = {
has_trait = callous
add = -50
}
modifier = {
has_trait = torturer
add = -50
}
modifier = {
has_trait = arbitrary
add = -50
}
modifier = {
has_trait = sadistic
add = -50
}
modifier = {
has_trait = vengeful
add = -50
}
}
}
#Option E: I don't care
option = {
name = hold_court.6170.e
stress_impact = {
lazy = medium_stress_loss
compassionate = medium_stress_gain
diligent = medium_stress_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = lazy
add = 50
}
modifier = {
has_trait = compassionate
add = -50
}
modifier = {
has_trait = diligent
add = -50
}
}
}
after = {
scope:6170_vassal = {
clear_court_event_participation = yes
}
scope:6170_relative = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
#############################
# A Shadow in the Night #
# by Claudia Baldassi #
# 6190 #
#############################
# Court physician has been spotted in the cemetery excavating the graves of the recently deceased. He is using them to practice dissecting/documentation but the locals are (understandably) not happy and want you to disown him. #
hold_court.6190 = {
type = court_event
title = hold_court.6190.t
desc = hold_court.6190.desc
theme = court
court_scene = {
button_position_character = scope:6190_local
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6190_local = {
group = petitioners_group
animation = anger
}
scope:physician = {
group = petitioners_group
animation = schadenfreude
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 20 }
trigger = {
employs_court_position = court_physician_court_position
any_court_position_holder = {
type = court_physician_court_position
has_court_event_flag = no
is_available_ai_adult = yes
OR = {
has_trait = ambitious
has_trait = cynical
has_trait = callous
has_trait = sadistic
}
}
}
weight_multiplier = {
base = 1
modifier = {
add = 20
employs_court_position = court_physician_court_position
any_court_position_holder = {
type = court_physician_court_position
has_focus_or_focus_trait_trigger = { FOCUS = intrigue_intimidation_focus }
}
}
modifier = {
add = 10
employs_court_position = court_physician_court_position
any_court_position_holder = {
type = court_physician_court_position
has_focus_or_focus_trait_trigger = { FOCUS = learning_medicine_focus }
}
}
modifier = {
add = 5
employs_court_position = court_physician_court_position
any_court_position_holder = {
type = court_physician_court_position
has_trait = lifestyle_physician
has_trait_xp = {
trait = lifestyle_physician
value >= 100
}
}
}
modifier = {
add = 10
employs_court_position = court_physician_court_position
any_court_position_holder = {
type = court_physician_court_position
has_trait = ambitious
}
}
modifier = {
add = 10
employs_court_position = court_physician_court_position
any_court_position_holder = {
type = court_physician_court_position
has_trait = cynical
}
}
modifier = {
add = 10
employs_court_position = court_physician_court_position
any_court_position_holder = {
type = court_physician_court_position
has_trait = callous
}
}
modifier = {
add = 10
employs_court_position = court_physician_court_position
any_court_position_holder = {
type = court_physician_court_position
has_trait = sadistic
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
random_court_position_holder = {
type = court_physician_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
}
save_scope_as = physician
court_event_character_flag_effect = yes
}
create_character = {
location = root.capital_province
template = generic_peasant_character
save_scope_as = 6190_local
}
scope:6190_local = {
court_event_character_flag_effect = yes
}
capital_province = {
save_scope_as = capital
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: these studies are necessary
option = {
name = hold_court.6190.a
capital_county = {
add_county_modifier = {
modifier = 6190_grave_robbing_county_modifier
years = 10
}
}
every_courtier_or_guest = {
custom = custom.every_non_callous_or_sadistic_courtier_and_guest
limit = {
NOR = {
has_trait = callous
has_trait = sadistic
this = scope:physician
}
}
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -10
}
}
scope:physician = {
if = {
limit = {
NAND = {
has_trait = lifestyle_physician
has_trait_xp = {
trait = lifestyle_physician
value >= 100
}
}
}
random = {
chance = 15
physician_lifestyle_rank_up_effect = yes
}
}
else_if = {
limit = {
NOT = {
has_trait = lifestyle_physician
}
}
add_trait = lifestyle_physician
}
else = {
add_learning_skill = 1
}
}
stress_impact = {
zealous = major_stress_impact_gain
compassionate = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = -0.25
}
}
}
#Option B: I wanna take part! FOR SCIENCE!
option = {
name = hold_court.6190.b
trigger = {
OR = {
has_trait = lifestyle_physician
has_trait = cynical
has_trait = callous
has_trait = sadistic
AND = {
has_focus_or_focus_trait_trigger = { FOCUS = learning_medicine_focus }
has_trait = ambitious
}
has_focus_or_focus_trait_trigger = { FOCUS = intrigue_intimidation_focus }
}
}
add_dread = medium_dread_gain
change_current_court_grandeur = minor_court_grandeur_loss
add_learning_lifestyle_perk_points = 1
every_courtier_or_guest = {
custom = custom.every_non_callous_or_sadistic_courtier_and_guest
limit = {
NOR = {
has_trait = callous
has_trait = sadistic
this = scope:physician
}
}
add_opinion = {
target = root
modifier = impious_opinion
opinion = -20
}
}
scope:physician = {
if = {
limit = {
NAND = {
has_trait = lifestyle_physician
has_trait_xp = {
trait = lifestyle_physician
value >= 100
}
}
}
random = {
chance = 20
physician_lifestyle_rank_up_effect = yes
}
}
else_if = {
limit = {
NOT = {
has_trait = lifestyle_physician
}
}
add_trait = lifestyle_physician
}
else = {
add_learning_skill = 1
}
}
capital_county = {
add_county_modifier = {
modifier = 6190_grave_robbing_county_modifier
years = 10
}
}
stress_impact = {
compassionate = major_stress_impact_gain
zealous = major_stress_impact_gain
just = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = -0.5
ai_compassion = -0.5
}
}
}
#Option D: Blasphemy! Punish the physician
option = {
name = hold_court.6190.d
revoke_court_position = {
recipient = scope:physician
court_position = court_physician_court_position
}
rightfully_imprison_character_effect = {
TARGET = scope:physician
IMPRISONER = root
}
capital_county = {
add_county_modifier = {
modifier = 6190_safe_graves_county_modifier
years = 10
}
}
every_courtier_or_guest = {
custom = custom.every_zealous_courtier_and_guest
limit = {
has_trait = zealous
this != scope:physician
}
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 25
}
}
stress_impact = {
zealous = medium_stress_impact_loss
sadistic = medium_stress_impact_gain
callous = medium_stress_impact_gain
torturer = medium_stress_impact_gain
vengeful = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 1
ai_compassion = -1
}
}
}
#Option E: Just stop
option = {
name = hold_court.6190.e
scope:physician = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -5
}
}
capital_county = {
add_county_modifier = {
modifier = 6190_safe_graves_county_modifier
years = 10
}
}
ai_chance = {
base = 100
}
}
after = {
scope:physician = {
clear_court_event_participation = yes
}
scope:6190_local = {
clear_court_event_participation = yes
if = {
limit = {
is_alive = yes
is_imprisoned = no
}
silent_disappearance_effect = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
#########################
# A Land of Foreigners #
# by Claudia Baldassi #
# 6210 #
#########################
# A vassal comes to you begging for help because their land is overrun by unhappy barbarians (= other culture). #
scripted_trigger hold_court_6210_valid_vassal_trigger = {
has_court_event_flag = no
culture = {
this = root.culture
any_parent_culture_or_above = {
save_temporary_scope_as = parent
}
}
is_landed_or_landless_administrative = yes
is_available_ai_adult = yes
exists = capital_county
OR = {
capital_county = {
hold_court_6210_valid_county_trigger = yes
}
AND = {
realm_size >= 4
any_sub_realm_county = {
count >= 3
hold_court_6210_valid_county_trigger = yes
}
}
}
}
scripted_trigger hold_court_6210_valid_county_trigger = {
culture = {
NOR = {
this = root.culture
any_parent_culture_or_above = {
this = root.culture
this = scope:parent
}
}
}
}
hold_court.6210 = {
type = court_event
title = hold_court.6210.t
desc = hold_court.6210.desc
theme = court
lower_left_portrait = {
trigger = { exists = scope:steward }
character = scope:steward
}
lower_center_portrait = {
trigger = { exists = scope:r_architect }
character = scope:r_architect
}
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:6210_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6210_vassal = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
any_vassal = {
hold_court_6210_valid_vassal_trigger = yes
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
random_vassal = {
limit = {
hold_court_6210_valid_vassal_trigger = yes
}
save_scope_as = 6210_vassal
court_event_character_flag_effect = yes
}
if = {
limit = {
any_court_position_holder = {
type = royal_architect_court_position
has_court_event_flag = no
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = royal_architect_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
}
save_scope_as = r_architect
court_event_character_flag_effect = yes
}
}
if = {
limit = {
exists = cp:councillor_steward
cp:councillor_steward = {
has_court_event_flag = no
is_available_ai_adult = yes
}
}
cp:councillor_steward = {
save_scope_as = steward
court_event_character_flag_effect = yes
}
}
if = {
limit = {
scope:6210_vassal.capital_county = {
hold_court_6210_valid_county_trigger = yes
}
}
scope:6210_vassal.capital_county = {
save_scope_as = 6210_main_county
}
}
else = {
scope:6210_vassal = {
random_sub_realm_county = {
limit = {
hold_court_6210_valid_county_trigger = yes
}
save_scope_as = 6210_main_county
}
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: send steward
option = {
name = hold_court.6210.a
trigger = {
exists = scope:steward
}
scope:steward = {
set_council_task = {
task_type = task_promote_culture
target = scope:6210_main_county.title_province
}
}
scope:6210_main_county = {
add_county_modifier = {
modifier = easier_to_culture_convert
years = 25
}
}
scope:6210_vassal = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 20
}
}
stress_impact = {
humble = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = humble
add = -25
}
}
}
#Option B: send the architect
option = {
name = hold_court.6210.b
trigger = {
exists = scope:r_architect
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= major_gold_value
}
}
custom_tooltip = hold_court.6210.b.tt
remove_treasury_or_gold = medium_treasury_or_gold_value
scope:6210_vassal = {
every_sub_realm_county = {
limit = {
hold_court_6210_valid_county_trigger = yes
}
add_county_modifier = {
modifier = 6210_architect_county_modifier
years = 5
}
}
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 30
}
}
scope:r_architect = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 30
}
}
change_current_court_grandeur = major_court_grandeur_gain
add_prestige = medium_prestige_gain
scope:6210_main_county = {
add_county_modifier = {
modifier = easier_to_culture_convert
years = 25
}
}
stress_impact = {
greedy = major_stress_impact_gain
}
ai_chance = {
base = 200
modifier = {
gold < medium_treasury_or_gold_value
add = -200
}
}
}
#Option C: tolerance
option = {
name = hold_court.6210.c
scope:6210_vassal = {
every_sub_realm_county = {
limit = {
hold_court_6210_valid_county_trigger = yes
}
add_county_modifier = {
modifier = governance_1073_conversion_resistance_modifier
years = 10
}
}
}
scope:6210_main_county.culture = {
change_cultural_acceptance = {
target = root.culture
value = minor_cultural_acceptance_gain
desc = cultural_acceptance_gain_hold_court_event_outcome
}
}
change_current_court_grandeur = minor_court_grandeur_gain
add_prestige = medium_prestige_gain
ai_chance = {
base = 100
modifier = {
has_trait = trusting
add = 20
}
modifier = {
has_trait = compassionate
add = 30
}
modifier = {
culture = { has_cultural_pillar = ethos_egalitarian }
add = 100
}
modifier = {
has_trait = paranoid
add = -100
}
}
}
after = {
scope:6210_vassal = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:r_architect }
scope:r_architect = {
clear_court_event_participation = yes
}
}
if = {
limit = { exists = scope:steward }
scope:steward = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
#############################
# A Massive Problem #
# by Claudia Baldassi #
# 6230 #
#############################
# A vassal in India has problem with a horde of elephants that have gone berserk and brought ruin and destruction in one (several?) of his counties. He pleads for help to manage the elephants and rebuild! #
hold_court.6230 = {
type = court_event
title = hold_court.6230.t
desc = hold_court.6230.desc
theme = court
lower_left_portrait = scope:m_horse
court_scene = {
button_position_character = scope:6230_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:6230_vassal = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 20 }
trigger = {
any_vassal_or_below = {
has_court_event_flag = no
is_available_ai_adult = yes
is_landed_or_landless_administrative = yes
capital_province = {
geographical_region = world_innovation_elephants
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
random_vassal_or_below = {
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
is_landed_or_landless_administrative = yes
capital_province = {
geographical_region = world_innovation_elephants
}
}
save_scope_as = 6230_vassal
court_event_character_flag_effect = yes
}
scope:6230_vassal.capital_province = {
save_scope_as = 6230_province
}
if = {
limit = {
employs_court_position = master_of_horse_court_position
any_court_position_holder = {
type = master_of_horse_court_position
has_court_event_flag = no
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = master_of_horse_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
}
save_scope_as = m_horse
court_event_character_flag_effect = yes
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
#Option A: send gold to rebuild
option = {
name = hold_court.6230.a
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= major_gold_value
}
}
pay_treasury_or_gold = {
target = scope:6230_vassal
value = medium_gold_value
}
reverse_add_opinion = {
target = scope:6230_vassal
modifier = grateful_opinion
opinion = 20
}
scope:6230_province.county = {
add_county_modifier = {
modifier = 6230_rebuilding
years = 25
}
}
add_prestige = medium_prestige_gain
stress_impact = {
greedy = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 1
}
modifier = {
add = -200
gold < medium_gold_value
}
}
}
#Option B: send aid in capturing the elephants
option = {
name = hold_court.6230.b
trigger = {
NOT = { exists = scope:m_horse }
}
duel = {
skill = martial
value = average_skill_rating
40 = {
desc = hold_court.6230.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 3
}
send_interface_toast = {
title = hold_court.6230.b.success.tt
add_character_modifier = {
modifier = 6230_new_elephants_modifier
years = 10
}
change_current_court_grandeur = medium_court_grandeur_gain
}
}
60 = {
desc = hold_court.6230.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3
}
send_interface_toast = {
title = hold_court.6230.b.failure.tt
change_current_court_grandeur = medium_court_grandeur_loss
scope:6230_province.county = { change_county_control = -5 }
}
}
}
stress_impact = {
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = -0.5
}
modifier = {
add = -75
martial < 10
}
}
}
#Option C: send master of horse to help
option = {
name = hold_court.6230.c
trigger = {
exists = scope:m_horse
}
scope:m_horse = {
duel = {
skill = martial
value = average_skill_rating
40 = {
desc = hold_court.6230.c.success
compare_modifier = {
value = scope:duel_value
multiplier = 3
}
root = {
send_interface_toast = {
title = hold_court.6230.b.success.tt
add_character_modifier = {
modifier = 6230_new_elephants_modifier
years = 10
}
change_current_court_grandeur = medium_court_grandeur_gain
}
}
}
60 = {
desc = hold_court.6230.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3
}
root = {
send_interface_toast = {
title = hold_court.6230.b.failure.tt
change_current_court_grandeur = medium_court_grandeur_loss
scope:6230_province.county = { change_county_control = -5 }
}
}
}
}
}
ai_chance = {
base = 100
}
}
#Option D: Ganesh leads them
option = {
name = hold_court.6230.d
trigger = {
faith.religion = religion:hinduism_religion
}
add_piety = major_piety_gain
stress_impact = {
cynical = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 1
}
}
}
#Option E: nope
option = {
name = hold_court.6230.e
reverse_add_opinion = {
target = scope:6230_vassal
modifier = disappointed_opinion
opinion = -20
}
scope:6230_province.county = { change_county_control = -5 }
ai_chance = {
base = 75
}
}
after = {
scope:6230_vassal = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:m_horse }
scope:m_horse = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Joe Parkin
##################################################
# 8001 Stifled Commerce
# 8010 The X Frontier
# 8020 Sacred Claims
# 8030 Civic Rivalry
# 8040 Special Treatment
# 8050 - 8053 Royal Service
# 8060 - 8061 A Temple for X
# 8070 - 8071 The Growth of X
# 8080 The Republic of X
# 8090 A Place at Court
# 8100 A Child of the Court
# 8110 Serious Business
# 8120 Evangelical Backlash
# 8130 Cultural Pride
# 8140 - 8142 Puppy Patronage
# 8150 Contractual Compromise
# 8160 Public Accusation
# 8161 Personal Matter
# 8170 - 8171 Services Rendered
# 8180 Noble Privileges
# 8190 Enemy Within
# 8200 Servant of God
# 8210 Rightful Lands
# 8220 - 8222 Opportunity Knocks
# 8240 Thy Neighbor's Wife
# 8241 Spoiled for Choice
# 8250 Hankering for X
# 8251 The Dancer
# 8260 The King's Peace
# 8270 Oath of Fealty
# 8280 Nomadic Neighbors
##################################################
##################################################
# Stifled Commerce
# by Joe Parkin
# 8001
##################################################
scripted_trigger hold_court_available_mayor_trigger = {
has_court_event_flag = no
is_available_ai_adult = yes
primary_title = {
tier = tier_barony
NOT = { has_variable = hold_court_city_cooldown_var }
}
government_has_flag = government_is_republic
NOT = { is_close_or_extended_family_of = root }
}
scripted_effect hold_court_8001_revoke_title_effect = {
if = {
limit = { has_relation_friend = root }
remove_relation_friend = root
}
if = { # If they recently imprisoned you, or asked for your excommunication, they become your rival
limit = {
OR = {
has_opinion_modifier = {
target = root
modifier = released_from_prison
}
AND = {
exists = var:requested_my_excommunication
var:requested_my_excommunication = root
}
}
NOT = { has_relation_rival = root }
}
if = {
limit = { has_relation_potential_rival = root }
remove_relation_potential_rival = root
}
root = {
set_relation_rival = {
target = prev
reason = rival_revoked_title
}
}
}
else = {
progress_towards_rival_effect = {
CHARACTER = root
REASON = rival_removed_mayor
OPINION = 0
}
}
}
# A merchant complains about the mayor of their town
hold_court.8001 = {
type = court_event
title = hold_court.8001.t
desc = hold_court.8001.desc
theme = court
lower_right_portrait = scope:portrait
court_scene = {
button_position_character = scope:merchant
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:merchant = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
any_vassal = { hold_court_available_mayor_trigger = yes }
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
every_vassal = {
limit = { hold_court_available_mayor_trigger = yes }
add_to_list = potential_mayor
}
random_in_list = {
list = potential_mayor
limit = {
OR = {
has_trait = lazy
has_trait = greedy
has_trait = deceitful
has_trait = arbitrary
stewardship <= mediocre_skill_rating
}
}
alternative_limit = {
NOR = {
has_trait = diligent
has_trait = generous
has_trait = honest
has_trait = just
stewardship >= decent_skill_rating
}
}
alternative_limit = {
always = yes
}
save_scope_as = mayor
save_scope_as = portrait
court_event_character_flag_effect = yes
primary_title = {
save_scope_as = town
set_variable = {
name = hold_court_city_cooldown_var
years = 25
}
}
}
create_character = {
template = merchant_template
location = root.capital_province
trait = honest
save_scope_as = merchant
after_creation = {
add_character_flag = created
}
}
scope:merchant = {
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Replace the Mayor
name = hold_court.8001.a
scope:mayor = {
depose = yes # depose_effect unnecessary for AI mayor
add_opinion = {
modifier = angry_opinion
target = root
opinion = -40
}
hold_court_8001_revoke_title_effect = yes
}
scope:town.county = { change_development_progress = 50 }
add_character_modifier = {
modifier = hold_court_8001_deposed_modifier
years = 10
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 0.25
ai_compassion = 0.25
ai_rationality = 0.25
ai_greed = -0.5
ai_boldness = -0.5
}
}
}
option = { # Make Merchant the Mayor
name = hold_court.8001.b
create_title_and_vassal_change = {
type = revoked
save_scope_as = change
add_claim_on_loss = no
}
scope:town = {
change_title_holder = {
holder = scope:merchant
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:mayor = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -60
}
hold_court_8001_revoke_title_effect = yes
}
random_list = {
30 = {
modifier = {
add = 5
scope:merchant = { has_trait = diligent }
}
modifier = {
add = 5
scope:merchant = { has_trait = generous }
}
modifier = {
add = 5
scope:merchant = { has_trait = honest }
}
modifier = {
add = 5
scope:merchant = { has_trait = just }
}
modifier = {
add = 5
scope:merchant = { stewardship >= decent_skill_rating }
}
send_interface_toast = {
title = hold_court.8001.b.tt_success
scope:town.county = {
add_county_modifier = {
modifier = hold_court_8001_merchant_boon_modifier
years = 15
}
change_development_level = 1
}
}
}
70 = {
modifier = {
add = 5
scope:merchant = { has_trait = lazy }
}
modifier = {
add = 5
scope:merchant = { has_trait = greedy }
}
modifier = {
add = 5
scope:merchant = { has_trait = arbitrary }
}
modifier = {
add = 5
scope:merchant = { has_trait = deceitful }
}
modifier = {
add = 5
scope:merchant = { stewardship <= 6 }
}
modifier = {
add = 5
scope:merchant = { age < 25 }
}
modifier = {
add = 5
scope:merchant = { has_trait = infirm }
}
modifier = {
add = 5
scope:merchant = { has_trait = incapable }
}
modifier = {
add = 5
scope:merchant = { age > 60 }
}
send_interface_toast = {
title = hold_court.8001.b.tt_failure
scope:town.county = {
add_county_modifier = {
modifier = hold_court_8001_merchant_bust_modifier
years = 15
}
}
stress_impact = {
just = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
}
}
}
add_character_modifier = {
modifier = hold_court_8001_deposed_modifier
years = 10
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -0.25
ai_compassion = -0.25
ai_rationality = -0.25
ai_greed = -0.5
ai_boldness = 0.5
}
}
}
option = { # Fine the Mayor
name = hold_court.8001.c
duel = {
skill = stewardship
value = average_skill_rating
8 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
desc = hold_court.8001.c.tt_success
send_interface_toast = {
title = hold_court.8001.c.tt_success
scope:mayor = {
pay_short_term_gold = {
target = root
gold = root.medium_gold_value
}
add_opinion = {
modifier = annoyed_opinion
target = root
opinion = -15
}
}
}
}
12 = {
compare_modifier = {
value = scope:duel_value
multiplier = -2
min = -9
}
desc = hold_court.8001.c.tt_failure
send_interface_toast = {
title = hold_court.8001.c.tt_failure
scope:town.county = {
scope:town.county = { change_development_progress = -50 }
add_county_modifier = {
modifier = hold_court_8001_ignored_modifier
years = 10
}
}
stress_impact = {
just = medium_stress_impact_gain
greedy = medium_stress_impact_gain
}
}
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 0.25
ai_greed = 0.5
}
modifier = { #Weight up for duel.
add = 15
stewardship > scope:mayor.stewardship
}
}
}
option = { # Compensate the Merchants
name = hold_court.8001.d
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= major_treasury_or_gold_value
}
}
remove_treasury_or_gold = medium_treasury_or_gold_value
scope:mayor = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
scope:town.county = {
add_county_modifier = {
modifier = hold_court_8001_compensated_modifier
years = 15
}
}
stress_impact = {
greedy = massive_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 0.25
ai_compassion = 0.5
ai_greed = -0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = greedy
}
}
}
option = { # Imprison the Merchant
name = hold_court.8001.e
imprison_character_effect = {
TARGET = scope:merchant
IMPRISONER = root
}
scope:mayor = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 20
}
}
add_dread = minor_dread_gain
scope:town.county = {
add_county_modifier = {
modifier = hold_court_8001_imprisoned_modifier
years = 10
}
}
stress_impact = {
just = medium_stress_impact_gain
calm = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -0.5
ai_greed = -0.5
ai_rationality = -0.25
ai_compassion = -0.25
ai_boldness = 0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = just
}
modifier = { #Weight down for stress.
add = -30
has_trait = calm
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
}
}
after = {
scope:mayor = {
clear_court_event_participation = yes
}
scope:merchant = {
clear_court_event_participation = yes
if = {
limit = {
is_landed = no
is_imprisoned = no
}
silent_disappearance_effect = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
scope:merchant = {
if = {
limit = {
is_ruler = no
}
silent_disappearance_ai_if_created_effect = yes
}
}
}
}
##################################################
# The X Frontier
# by Joe Parkin
# 8010
##################################################
scripted_trigger hold_court_8010_lord_trigger = {
has_court_event_flag = no
is_available_ai_adult = yes
primary_title.tier >= tier_county
government_has_flag = government_is_feudal
subject_contract_is_blocked_from_modification = no
OR = {
vassal_contract_obligation_level_can_be_increased = fortification_rights
NOT = { vassal_contract_has_flag = has_march_contract }
}
}
scripted_trigger hold_court_8010_contract_trigger = {
scope:frontier_lord = {
government_has_flag = government_is_feudal
vassal_contract_has_modifiable_obligations = yes
OR = {
AND = {
root.culture = { has_innovation = innovation_battlements }
vassal_contract_obligation_level_can_be_increased = fortification_rights
}
AND = {
root.culture = { has_innovation = innovation_burhs }
NOT = { vassal_contract_has_flag = has_march_contract }
}
}
}
}
# A vassal bordering a powerful neighbor is worried
hold_court.8010 = {
type = court_event
title = hold_court.8010.t
desc = hold_court.8010.desc
theme = court
lower_right_portrait = scope:neighboring_enemy
court_scene = {
button_position_character = scope:frontier_lord
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:frontier_lord = {
group = petitioners_group
animation = worry
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 20 }
trigger = {
top_liege = this
NOT = {
any_vassal = { has_character_modifier = hold_court_8010_fortifications_modifier }
}
any_vassal = {
hold_court_8010_lord_trigger = yes
any_sub_realm_county = { hold_court_8010_county_trigger = yes }
}
}
weight_multiplier = {
base = 1
modifier = {
add = 1
any_vassal = {
hold_court_8010_lord_trigger = yes
any_sub_realm_county = { hold_court_8010_county_trigger = yes }
primary_title.tier >= 2
OR = {
has_trait = paranoid
has_trait = lazy
has_trait = craven
is_powerful_vassal = yes
}
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
capital_barony = { save_scope_as = capital }
ordered_vassal = {
limit = {
hold_court_8010_lord_trigger = yes
any_sub_realm_county = { hold_court_8010_county_trigger = yes } # Prefer Dukes...
primary_title.tier = tier_duchy
}
alternative_limit = {
hold_court_8010_lord_trigger = yes
any_sub_realm_county = { hold_court_8010_county_trigger = yes } # ...then Counts...
primary_title.tier = tier_county
}
alternative_limit = {
hold_court_8010_lord_trigger = yes
any_sub_realm_county = { hold_court_8010_county_trigger = yes } # ...then Kings
primary_title.tier = tier_kingdom
}
order_by = hold_court_8010_border_length_value
save_scope_as = frontier_lord
court_event_character_flag_effect = yes
random_sub_realm_county = {
limit = { hold_court_8010_county_trigger = yes }
title_province.barony = { save_scope_as = frontier_barony }
ordered_title_to_title_neighboring_county = {
limit = {
holder.top_liege = {
NOR = {
this = root
is_allied_to = root
max_military_strength < hold_court_8010_75_strength_value # 75% of root's soldiers
}
}
}
order_by = holder.top_liege.max_military_strength
de_jure_liege = { save_scope_as = neighboring_duchy }
holder.top_liege = { save_scope_as = neighboring_enemy }
}
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Give vassal defensive contract (March/Fortification Rights)
name = hold_court.8010.a
trigger = {
hold_court_8010_contract_trigger = yes
OR = {
AND = {
culture = { has_innovation = innovation_burhs }
scope:frontier_lord.primary_title.tier >= tier_duchy
}
AND = {
culture = { has_innovation = innovation_battlements }
scope:frontier_lord = { vassal_contract_obligation_level_can_be_increased = fortification_rights }
}
}
}
scope:frontier_lord = {
if = {
limit = {
AND = {
root.culture = { has_innovation = innovation_battlements }
vassal_contract_obligation_level_can_be_increased = fortification_rights
}
}
vassal_contract_set_obligation_level = {
type = fortification_rights
level = 1
}
}
else = {
vassal_contract_set_obligation_level = {
type = special_contract
level = 2
}
}
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 20
}
}
if = {
limit = {
can_add_hook = {
target = scope:frontier_lord
type = indebted_hook
}
}
add_hook = {
target = scope:frontier_lord
type = indebted_hook
}
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -0.5
ai_compassion = 0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = greedy
}
}
}
option = { # Pay for vassals fortications (if A is unavailable)
name = hold_court.8010.b
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= major_treasury_or_gold_value
}
}
remove_treasury_or_gold = medium_treasury_or_gold_value
scope:frontier_barony.county = {
add_county_modifier = {
modifier = hold_court_8010_fortifications_modifier
years = 15
}
}
scope:frontier_lord = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 20
}
}
if = {
limit = {
can_add_hook = {
target = scope:frontier_lord
type = indebted_hook
}
}
add_hook = {
target = scope:frontier_lord
type = indebted_hook
}
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -0.5
ai_compassion = 0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = greedy
}
}
}
option = { # Fortify your own capital instead
name = hold_court.8010.c
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= major_treasury_or_gold_value
}
}
remove_treasury_or_gold = medium_treasury_or_gold_value
capital_county = {
add_county_modifier = {
modifier = hold_court_8010_fortifications_modifier
years = 15
}
}
scope:frontier_lord = {
add_opinion = {
modifier = annoyed_opinion
target = root
opinion = -15
}
}
stress_impact = {
brave = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = -0.5
ai_honor = -0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = brave
}
}
}
option = { # Argue that it is unwarranted
name = hold_court.8010.d
duel = {
skill = diplomacy
value = average_skill_rating
8 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
desc = hold_court.8010.d.tt_success
send_interface_toast = {
title = hold_court.8010.d.tt_success
left_icon = scope:frontier_lord
change_current_court_grandeur = medium_court_grandeur_gain
}
}
12 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
desc = hold_court.8010.d.tt_failure
send_interface_toast = {
title = hold_court.8010.d.tt_failure
left_icon = scope:frontier_lord
add_prestige = minor_prestige_loss
scope:frontier_lord = {
add_opinion = {
modifier = dismissive_opinion
target = root
opinion = -20
}
}
}
}
}
stress_impact = {
honest = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 0.25
ai_greed = 0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = honest
}
modifier = { #Weight down for stress.
add = -15
has_trait = paranoid
}
modifier = { #Weight up for duel.
add = 15
diplomacy > scope:frontier_lord.diplomacy
}
}
}
option = { # Dismiss vassal
name = hold_court.8010.e
add_character_modifier = {
modifier = hold_court_8010_vassal_modifier
years = 10
}
scope:frontier_lord = {
add_opinion = {
modifier = dismissive_opinion
target = root
opinion = -10
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_greed = 0.5
}
}
}
after = {
scope:frontier_lord = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Sacred Claims
# by Joe Parkin
# 8020
##################################################
scripted_trigger hold_court_8020_county_trigger = {
this != root.capital_county
any_county_province = {
barony = { is_holy_site_of = root.faith }
}
faith = root.faith
holder = {
has_court_event_flag = no
NOR = {
government_has_flag = government_is_theocracy
this = root.cp:councillor_court_chaplain
trigger_if = {
limit = {
exists = root.faith.religious_head
root != root.faith.religious_head
}
this = root.faith.religious_head
}
}
any_held_title = {
count >= 2
title_tier = county
}
OR = {
this = root
AND = {
is_available_ai_adult = yes
NOT = { has_any_bad_relationship_with_root_trigger = yes }
}
}
}
}
scripted_trigger hold_court_8020_cathedral_barony_trigger = {
is_holy_site_of = root.faith
title_province = {
OR = {
has_building = holy_site_cathedral_01
has_building = holy_site_mosque_01
has_building = holy_site_pagan_grand_temple_01
has_building = holy_site_indian_grand_temple_01
has_building = holy_site_other_grand_temple_01
# TGP
has_building = holy_site_buddhist_grand_temple_01
has_building = holy_site_japanese_temple_01
has_building = holy_site_chinese_temple_01
has_building = holy_site_se_asia_pagan_temple_01
}
}
}
scripted_effect hold_court_8020_grant_effect = {
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
if = {
limit = { exists = scope:vassal }
scope:vassal = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -20
}
}
}
scope:target_county = {
change_title_holder = {
holder = scope:candidate
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
hidden_effect = {
scope:candidate = { change_government = theocracy_government }
}
}
# Chaplain asks for a holy site
hold_court.8020 = {
type = court_event
title = hold_court.8020.t
desc = {
desc = hold_court.8020.desc.intro
first_valid = {
triggered_desc = {
trigger = { exists = scope:pope }
desc = hold_court.8020.desc.body_pope
}
desc = hold_court.8020.desc.body_fallback
}
desc = hold_court.8020.desc.body_1
first_valid = {
triggered_desc = {
trigger = { scope:target_county.holder = root } # Owns target personally
desc = hold_court.8020.desc.body_personal
}
desc = hold_court.8020.desc.body_vassal # Vassal owns target
}
desc = hold_court.8020.desc.body_2
}
theme = realm
lower_left_portrait = scope:candidate
lower_right_portrait = scope:pope
artifact = {
target = scope:bishop_relic
position = lower_center_portrait
}
court_scene = {
button_position_character = scope:bishop
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:bishop = {
group = petitioners_group
animation = chaplain
}
scope:vassal_or_candidate = {
group = petitioners_group
animation = disapproval
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 30 }
trigger = {
NOT = { has_character_flag = has_had_county_request_event }
top_liege = this
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
has_court_event_flag = no
is_available_ai_adult = yes
}
faith = {
has_doctrine = doctrine_theocracy_temporal
NOT = { has_doctrine_parameter = unreformed }
}
any_realm_county = { # Less than 10% theocratic counties in realm
percent <= 0.1
holder = { government_has_flag = government_is_theocracy }
}
any_realm_county = { hold_court_8020_county_trigger = yes } # there is a holy_site in the realm
}
weight_multiplier = {
base = 1
modifier = { # County has a cathedral
add = 1
any_realm_county = {
hold_court_8020_county_trigger = yes
any_county_province = {
barony = { hold_court_8020_cathedral_barony_trigger = yes }
}
OR = {
holder = root
holder = { is_vassal_of = root }
}
}
}
modifier = { # No prince bishops in realm
add = 0.5
NOT = {
any_vassal_or_below = {
primary_title = { tier >= tier_county }
government_has_flag = government_is_theocracy
}
}
}
modifier = { # Favor emperors
add = 1
highest_held_title_tier = tier_empire
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
add_character_flag = {
flag = has_had_county_request_event
years = 15
}
cp:councillor_court_chaplain = {
save_scope_as = bishop
court_event_character_flag_effect = yes
}
hidden_effect = {
if = {
limit = { OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } }
create_artifact_pedestal_reliquary_christian_effect = { OWNER = scope:bishop }
}
else_if = {
limit = { religion = religion:islam_religion }
create_artifact_pedestal_reliquary_islam_effect = { OWNER = scope:bishop }
}
else_if = {
limit = { religion = religion:buddhism_religion }
create_artifact_pedestal_reliquary_buddhism_effect = { OWNER = scope:bishop }
}
else_if = {
limit = { religion = religion:judaism_religion }
create_artifact_pedestal_reliquary_judaism_effect = { OWNER = scope:bishop }
}
else = {
create_artifact_sculpture_religious_effect = { OWNER = scope:bishop }
}
scope:newly_created_artifact = { save_scope_as = bishop_relic }
}
if = {
limit = {
exists = faith.religious_head
NOR = {
faith.religious_head = root
faith.religious_head = scope:bishop
}
}
faith.religious_head = { save_scope_as = pope }
}
every_realm_county = {
limit = { hold_court_8020_county_trigger = yes }
add_to_list = potential_princebishoprics
}
random_in_list = {
list = potential_princebishoprics
limit = {
holder = root
any_county_province = {
barony = { hold_court_8020_cathedral_barony_trigger = yes }
}
}
alternative_limit = {
any_county_province = {
barony = { hold_court_8020_cathedral_barony_trigger = yes }
}
}
alternative_limit = { holder = root }
alternative_limit = { always = yes }
save_scope_as = target_county
root = {
set_variable = { # Save var for custom loc
name = holy_site_var
value = scope:target_county
}
}
}
if = {
limit = {
scope:target_county.holder != root
}
scope:target_county.holder = {
save_scope_as = vassal
court_event_character_flag_effect = yes
}
}
create_character = {
age = { 30 50 }
template = priest_character_template
location = root.capital_province
trait = devoted
save_scope_as = candidate
}
scope:candidate = {
court_event_character_flag_effect = yes
}
if = {
limit = { exists = scope:vassal }
scope:vassal = { save_scope_as = vassal_or_candidate }
}
else = {
scope:candidate = { save_scope_as = vassal_or_candidate }
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Gift the county
name = hold_court.8020.a
scope:bishop_relic = {
set_owner = {
target = root
history = {
location = root.capital_province
actor = scope:bishop
recipient = root
type = given
}
}
}
hold_court_8020_grant_effect = yes
scope:target_county = {
if = {
limit = {
any_county_province = {
barony = { hold_court_8020_cathedral_barony_trigger = yes }
}
}
root = { add_piety = massive_piety_gain }
}
else = {
root = { add_piety = major_piety_gain }
}
}
scope:bishop = {
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 30
}
}
if = {
limit = { exists = scope:pope }
scope:pope = {
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 15
}
}
}
if = {
limit = { scope:target_county.holder = root }
stress_impact = { greedy = medium_stress_impact_gain }
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = -0.5
ai_greed = -0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = greedy
}
}
}
option = { # Theocratic debate
name = hold_court.8020.b
duel = {
skill = learning
target = scope:bishop
8 = {
desc = hold_court.8020.b.tt_success
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
send_interface_toast = {
title = hold_court.8020.b.tt_success
left_icon = scope:bishop
change_current_court_grandeur = medium_court_grandeur_gain
add_prestige = medium_prestige_gain
}
}
12 = {
desc = hold_court.8020.b.tt_failure
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
send_interface_toast = {
title = hold_court.8020.b.tt_failure
left_icon = scope:bishop
hold_court_8020_grant_effect = yes
scope:target_county = {
if = {
limit = {
any_county_province = {
barony = { hold_court_8020_cathedral_barony_trigger = yes }
}
}
root = { add_piety = major_piety_gain }
}
else = {
root = { add_piety = minor_piety_gain }
}
}
scope:bishop = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 10
}
}
if = {
limit = { exists = scope:pope }
scope:pope = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 5
}
}
}
}
}
}
stress_impact = {
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_greed = 0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = cynical
}
modifier = { #Weight up for duel.
add = 15
learning > scope:bishop.learning
}
}
}
option = { # Refuse no pope + no candidate
name = hold_court.8020.c
trigger = {
NOT = { exists = scope:pope }
scope:target_county.holder = root
}
add_piety = minor_piety_loss
scope:bishop = {
add_opinion = {
modifier = refusal_opinion
target = root
opinion = -20
}
}
stress_impact = {
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_greed = 0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = zealous
}
}
}
option = { # Refuse no pope + candidate
name = hold_court.8020.d
trigger = {
NOT = { exists = scope:pope }
scope:target_county.holder != root
}
add_piety = minor_piety_loss
scope:target_county.holder = {
if = {
limit = {
this != root
}
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 15
}
}
}
scope:bishop = {
add_opinion = {
modifier = refusal_opinion
target = root
opinion = -10
}
}
stress_impact = {
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_greed = 0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = zealous
}
}
}
option = { # Refuse pope + no candidate
name = hold_court.8020.e
trigger = {
exists = scope:pope
scope:target_county.holder = root
}
add_piety = minor_piety_loss
scope:bishop = {
add_opinion = {
modifier = refusal_opinion
target = root
opinion = -20
}
}
scope:pope = {
add_opinion = {
modifier = refusal_opinion
target = root
opinion = -10
}
}
stress_impact = {
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_greed = 0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = zealous
}
}
}
option = { # Refuse pope + candidate
name = hold_court.8020.e
trigger = {
exists = scope:pope
scope:target_county.holder != root
}
add_piety = minor_piety_loss
scope:target_county.holder = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 15
}
}
scope:bishop = {
add_opinion = {
modifier = refusal_opinion
target = root
opinion = -10
}
}
scope:pope = {
add_opinion = {
modifier = refusal_opinion
target = root
opinion = -5
}
}
stress_impact = {
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_greed = 0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = zealous
}
}
}
after = {
scope:bishop = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:vassal }
scope:vassal = {
clear_court_event_participation = yes
}
}
if = {
limit = { exists = scope:candidate }
scope:candidate = {
clear_court_event_participation = yes
if = {
limit = {
is_alive = yes
is_landed = no
}
silent_disappearance_effect = yes
}
}
}
remove_variable = holy_site_var
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Special Treatment
# by Joe Parkin
# 8040
##################################################
scripted_trigger hold_court_8040_vassal_trigger = {
has_court_event_flag = no
faith != root.faith
faith = {
NOT = { has_doctrine_parameter = unreformed }
}
government_has_flag = government_is_feudal
vassal_contract_obligation_level_can_be_increased = religious_rights
liege.faith = {
faith_hostility_level = {
target = prev.faith
value < faith_evil_level
}
}
}
# A vassal of another faith asks for religious freedom
hold_court.8040 = {
type = court_event
title = hold_court.8040.t
desc = {
desc = hold_court.8040.desc
first_valid = {
triggered_desc = {
trigger = {
scope:infidel_vassal.religion = root.religion
}
desc = hold_court.8040.desc.intro_same_religion
}
triggered_desc = {
trigger = {
always = yes
}
desc = hold_court.8040.desc.intro_fallback
}
}
}
theme = court
lower_right_portrait = scope:bishop
court_scene = {
button_position_character = scope:infidel_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:infidel_vassal = {
group = petitioners_group
animation = worry
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
faith = {
NOT = { has_doctrine_parameter = unreformed }
}
any_vassal = { hold_court_8040_vassal_trigger = yes }
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
has_court_event_flag = no
is_available_ai_adult = yes
}
}
weight_multiplier = {
base = 1
modifier = {
add = 1
any_vassal = {
hold_court_8040_vassal_trigger = yes
is_powerful_vassal = yes
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
cp:councillor_court_chaplain = {
save_scope_as = bishop
court_event_character_flag_effect = yes
}
ordered_vassal = {
limit = { hold_court_8040_vassal_trigger = yes }
order_by = max_military_strength
save_scope_as = infidel_vassal
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Grant religious rights
name = hold_court.8040.a
if = {
limit = {
can_add_hook = {
target = scope:infidel_vassal
type = indebted_hook
}
}
add_hook = {
target = scope:infidel_vassal
type = indebted_hook
}
}
scope:infidel_vassal = {
vassal_contract_set_obligation_level = {
type = religious_rights
level = 1
}
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 20
}
}
scope:bishop = {
if = {
limit = { scope:infidel_vassal.religion = root.religion }
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
else = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -20
}
}
}
stress_impact = {
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
ai_rationality = 0.25
}
modifier = { #Weight down for stress.
add = -30
has_trait = zealous
}
}
}
option = { # Learning debate with same religion
name = hold_court.8040.b
trigger = { scope:infidel_vassal.religion = root.religion }
duel = {
skill = learning
target = scope:infidel_vassal
10 = {
desc = hold_court.8040.c.tt_accept
compare_modifier = {
value = scope:duel_value
multiplier = 1
}
send_interface_toast = {
title = hold_court.8040.c.tt_accept
left_icon = scope:infidel_vassal
right_icon = scope:bishop
add_prestige = medium_prestige_gain
save_scope_as = actor
scope:infidel_vassal = { save_scope_as = recipient }
custom_tooltip = demand_conversion_tt
hidden_effect = { demand_conversion_interaction_effect = yes }
}
}
10 = {
desc = hold_court.8040.c.tt_refuse
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
send_interface_toast = {
title = hold_court.8040.c.tt_refuse
left_icon = scope:infidel_vassal
right_icon = scope:bishop
scope:bishop = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
}
}
}
}
option = { # Different faith demand
name = {
trigger = {
scope:infidel_vassal.religion != root.religion
}
text = hold_court.8040.c.religion
}
name = {
trigger = {
scope:infidel_vassal.faith != root.faith
}
text = hold_court.8040.c.faith
}
scope:infidel_vassal = {
add_opinion = {
modifier = demanded_my_conversion_opinion
target = root
opinion = -10
}
}
random_list = {
40 = {
modifier = {
add = -20
scope:infidel_vassal.religion != root.religion
}
show_chance = no
desc = hold_court.8040.c.tt_accept
send_interface_toast = {
title = hold_court.8040.c.tt_accept
left_icon = scope:infidel_vassal
add_piety = medium_piety_gain
save_scope_as = actor
scope:infidel_vassal = { save_scope_as = recipient }
custom_tooltip = demand_conversion_tt
hidden_effect = { demand_conversion_interaction_effect = yes }
scope:bishop = {
add_opinion = {
modifier = pious_opinion
target = root
opinion = 10
}
}
}
}
60 = {
show_chance = no
desc = hold_court.8040.c.tt_refuse
send_interface_toast = {
title = hold_court.8040.c.tt_refuse
left_icon = scope:infidel_vassal
stress_impact = { zealous = medium_stress_impact_gain }
}
}
}
stress_impact = {
cynical = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
humble = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_compassion = -0.5
ai_rationality = -0.25
}
modifier = { #Weight down for stress.
add = -30
has_trait = compassionate
}
modifier = { #Weight down for stress.
add = -30
has_trait = cynical
}
modifier = { #Weight down for stress.
add = -15
has_trait = humble
}
}
}
option = { # Refuse
name = hold_court.8040.d
add_piety = minor_piety_gain
scope:infidel_vassal = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
scope:bishop = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
}
after = {
scope:bishop = {
clear_court_event_participation = yes
}
scope:infidel_vassal = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Royal Service
# by Joe Parkin
# 8050 - 054
##################################################
scripted_trigger hold_court_8050_knight_trigger = {
has_court_event_flag = no
is_available_ai_adult = yes
is_landed = no
faith = root.faith
top_liege = root
NOT = { is_primary_heir_of = prev } # prev = scope:vassal
NOT = { is_knight_of = root }
NOT = { has_relation_rival = root }
NOT = { is_close_family_of = root }
court_position_martial_trigger = { EMPLOYER = root }
}
scripted_trigger hold_court_8050_vassal_trigger = {
has_court_event_flag = no
is_available_ai_adult = yes
NOT = { is_close_family_of = root }
NOT = { has_relation_rival = root }
NOT = { has_court_position = bodyguard_court_position }
OR = {
any_close_or_extended_family_member = { hold_court_8050_knight_trigger = yes }
any_courtier = {
has_relation_friend = prev
hold_court_8050_knight_trigger = yes
}
is_ai = no
}
}
scripted_effect hold_court_8050_accepted_knight_effect = {
scope:knight = {
hidden_effect = {
if = {
limit = {
is_foreign_court_or_pool_guest = yes
}
return_to_court = yes
}
set_employer = root
set_knight_status = force
}
set_variable = {
name = hold_court_8050_knight
value = scope:vassal
years = 10
}
add_prestige = minor_prestige_gain
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 20
}
}
trigger_event = {
id = hold_court.8054
days = 365
}
send_interface_message = {
title = hold_court.8050.a.tt_toast
left_icon = scope:knight
right_icon = scope:vassal
scope:knight = { custom_tooltip = hold_court.8050.a.tt_knight }
}
}
# Vassal presents their relative as a potential knight
hold_court.8050 = {
type = court_event
title = hold_court.8050.t
desc = {
desc = hold_court.8050.desc
first_valid = {
triggered_desc = {
trigger = { scope:knight.prowess >= extremely_high_skill_rating }
desc = hold_court.8050.desc_talented
}
triggered_desc = {
trigger = { scope:knight.prowess >= decent_skill_rating }
desc = hold_court.8050.desc_suitable
}
triggered_desc = {
trigger = { scope:knight.prowess >= mediocre_skill_rating }
desc = hold_court.8050.desc_passing
}
desc = hold_court.8050.desc_unsuitable
}
}
theme = court
lower_right_portrait = scope:grandmaster
lower_center_portrait = {
character = scope:bodyguard
trigger = {
scope:knight.prowess > medium_skill_rating
NOT = {
scope:vassal = { has_hook = root }
}
}
}
court_scene = {
button_position_character = scope:vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:vassal = {
group = petitioners_group
animation = admiration
}
scope:knight = {
group = petitioners_group
animation = marshal
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 15 }
trigger = {
any_vassal = { hold_court_8050_vassal_trigger = yes }
NOT = { has_character_flag = hold_court_8051_flag }
}
weight_multiplier = {
base = 1
modifier = {
add = 1
number_of_knights < max_number_of_knights
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
random_vassal = { # Find a vassal with someone to present
limit = { hold_court_8050_vassal_trigger = yes }
save_scope_as = vassal
court_event_character_flag_effect = yes
if = {
limit = {
any_close_or_extended_family_member = { hold_court_8050_knight_trigger = yes }
}
random_close_or_extended_family_member = {
limit = { hold_court_8050_knight_trigger = yes }
save_scope_as = knight
set_signature_weapon_effect = yes
}
}
else_if = {
limit = {
any_courtier = {
has_relation_friend = scope:vassal
hold_court_8050_knight_trigger = yes
}
}
random_courtier = {
limit = {
has_relation_friend = scope:vassal
hold_court_8050_knight_trigger = yes
}
save_scope_as = knight
set_signature_weapon_effect = yes
}
}
else = {
create_character = {
gender_female_chance = root_soldier_female_chance
location = scope:vassal.capital_province
template = soldier_friend_character
dynasty = generate
save_scope_as = knight
}
scope:knight = { set_signature_weapon_effect = yes }
}
}
scope:knight = {
court_event_character_flag_effect = yes
}
faith = { # Find a holy order
if = {
limit = {
any_faith_holy_order = { always = yes }
}
random_faith_holy_order = {
limit = {
leader = { NOT = { has_relation_rival = scope:knight } }
}
alternative_limit = { always = yes }
leader = { save_scope_as = grandmaster }
}
}
}
if = {
limit = {
any_court_position_holder = {
type = bodyguard_court_position
count >= 2
this != scope:vassal
}
}
ordered_court_position_holder = {
type = bodyguard_court_position
limit = {
this != scope:vassal
}
order_by = {
value = 0
subtract = prowess
}
save_scope_as = bodyguard
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Accept
name = hold_court.8050.a
highlight_portrait = scope:knight
set_variable = {
name = hold_court_8050_promise
value = scope:knight
years = 10
}
scope:vassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
if = {
limit = { has_hook = root }
custom_tooltip = hold_court.8050.a.tt_hook
remove_hook = { target = root }
}
}
hold_court_8050_accepted_knight_effect = yes
stress_impact = {
gallant = medium_stress_impact_loss
paranoid = medium_stress_impact_gain
shy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 0.5
ai_compassion = 0.25
}
modifier = {
add = 30
number_of_knights < max_number_of_knights
}
modifier = { #Weight up for stress.
add = 30
has_trait = gallant
}
modifier = { #Weight down for stress.
add = -30
has_trait = paranoid
}
}
}
option = { # Take a hook if they suck
name = hold_court.8050.b
trigger = {
scope:knight.prowess < medium_skill_rating
NOR = {
scope:vassal = { has_hook = root }
root = { has_hook = scope:vassal }
}
}
highlight_portrait = scope:vassal
set_variable = {
name = hold_court_8050_promise
value = scope:knight
years = 10
}
scope:vassal = {
add_opinion = {
modifier = annoyed_opinion
target = root
opinion = -10
}
}
if = {
limit = {
can_add_hook = {
target = scope:vassal
type = indebted_hook
}
}
add_hook = {
target = scope:vassal
type = indebted_hook
}
}
hold_court_8050_accepted_knight_effect = yes
stress_impact = {
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 0.5
ai_rationality = 0.25
ai_compassion = -0.25
}
modifier = { #Weight down for stress.
add = -30
has_trait = generous
}
}
}
option = { # Send to Holy Order instead
name = hold_court.8050.c
trigger = {
has_trait = zealous
exists = scope:grandmaster
NOT = {
scope:vassal = { has_hook = root }
}
NOT = { # unlikely to be the case, but since they are more complicated to break, let's just avoid breaking grand wedding
scope:knight = { has_been_promised_grand_wedding = yes }
}
}
trait = zealous
highlight_portrait = scope:grandmaster
add_piety = medium_piety_gain
scope:vassal = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
scope:knight = {
add_trait = order_member
if = {
limit = { is_married = yes }
every_spouse = { divorce = scope:knight }
}
if = {
limit = { exists = betrothed }
break_betrothal = betrothed
}
}
scope:grandmaster = {
add_courtier = scope:knight
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 10
}
}
stress_impact = {
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 2
}
modifier = { #Weight down for stress.
add = -30
has_trait = cynical
}
}
}
option = { # Make them your new bodyguard
name = hold_court.8050.d
trigger = {
scope:knight.prowess > medium_skill_rating
scope:vassal = {
NOR = {
has_hook = root
has_court_position = bodyguard_court_position
}
}
}
scope:vassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 15
}
}
set_variable = {
name = hold_court_8050_promise
value = scope:knight
years = 10
}
add_courtier = scope:knight
scope:knight = {
hidden_effect = { return_to_court = yes }
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 30
}
hidden_effect = {
add_prestige = medium_prestige_gain
progress_towards_friend_effect = {
REASON = friend_hired_body_guard
CHARACTER = root
OPINION = 0
}
}
set_variable = {
name = hold_court_8050_knight
value = scope:vassal
years = 10
}
}
if = {
limit = { exists = scope:bodyguard }
revoke_court_position = {
recipient = scope:bodyguard
court_position = bodyguard_court_position
}
scope:bodyguard = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -10
}
}
}
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:knight
COURT_POS = bodyguard_court_position
}
}
court_position_grant_effect = {
EMPLOYER = root
POS = bodyguard
CANDIDATE = scope:knight
}
}
hidden_effect = {
send_interface_message = {
title = hold_court.8050.a.tt_toast
left_icon = scope:knight
right_icon = scope:vassal
scope:knight = { custom_tooltip = hold_court.8050.d.tt_bodyguard }
}
}
trigger_event = {
id = hold_court.8054
days = 365
}
stress_impact = {
paranoid = medium_stress_impact_gain
shy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 0.5
ai_rationality = 0.5
ai_compassion = 0.25
}
modifier = { #Weight up.
add = 30
scope:knight.prowess > decent_skill_rating
}
modifier = { #Weight up.
add = 30
scope:knight.prowess > very_high_skill_rating
}
modifier = { #Weight down for stress.
add = -30
has_trait = paranoid
}
modifier = { #Weight down for stress.
add = -30
has_trait = shy
}
}
}
option = { # Refuse
name = {
trigger = {
scope:knight.prowess >= 20
}
text = hold_court.8050.e.talented
}
name = {
trigger = {
scope:knight.prowess < 20
scope:knight.prowess >= 14
}
text = hold_court.8050.e.suitable
}
name = {
trigger = {
scope:knight.prowess < 14
scope:knight.prowess >= 8
}
text = hold_court.8050.e.passing
}
name = {
trigger = {
scope:knight.prowess < 8
}
text = hold_court.8050.e.unsuitable
}
trigger = {
NOT = {
scope:vassal = { has_hook = root }
}
}
scope:vassal = {
add_opinion = {
modifier = refusal_opinion
target = root
opinion = -10
}
}
scope:knight = {
add_prestige = minor_prestige_loss
add_opinion = {
modifier = refusal_opinion
target = root
opinion = -20
}
progress_towards_rival_effect = {
CHARACTER = root
REASON = rival_refused_service
OPINION = 0
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -0.5
}
modifier = {
add = 15
scope:knight.prowess < 10
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
}
}
after = {
scope:vassal = {
clear_court_event_participation = yes
}
scope:knight = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
scripted_trigger hold_court_8050_angry_trigger = {
OR = {
prowess >= high_skill_rating
has_trait = vengeful
has_trait = wrathful
has_trait = just
has_trait = honest
has_trait = ambitious
has_trait = arrogant
has_trait = brave
AND = {
has_variable = hold_court_8050_knight
var:hold_court_8050_knight = {
is_alive = yes
is_vassal_of = root
has_relation_friend = prev # prev = scope:vassal
}
}
}
}
scripted_effect hold_court_8051_promise_opinion_effect = {
if = {
limit = {
has_opinion_modifier = {
modifier = grateful_opinion
target = root
}
}
remove_opinion = {
modifier = grateful_opinion
target = root
}
}
add_opinion = {
modifier = broke_promise
target = root
}
}
# Vassal is angry you fired the knight
hold_court.8051 = {
type = court_event
title = hold_court.8051.t
desc = hold_court.8051.desc
theme = court
court_scene = {
button_position_character = scope:vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:vassal = {
group = petitioners_group
animation = anger
}
scope:knight = {
group = petitioners_group
animation = shame
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
weight_multiplier = {
base = 1
modifier = {
add = 3
var:hold_court_8050_promise = { hold_court_8050_angry_trigger = yes }
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
var:hold_court_8050_promise = {
save_scope_as = knight
var:hold_court_8050_knight = { save_scope_as = vassal }
}
add_character_flag = {
flag = hold_court_8051_flag
years = 15
}
}
option = { # Reinstate
name = hold_court.8051.a
scope:knight = {
if = {
limit = { scope:knight.employer = root }
custom_tooltip = hold_court.8051.a.tt_knight
}
else = {
hidden_effect = { set_employer = root }
custom_tooltip = hold_court.8050.a.tt_knight
}
hidden_effect = { set_knight_status = force }
}
stress_impact = {
arbitrary = medium_stress_impact_gain
}
trigger_event = {
id = hold_court.8054
days = 365
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -0.25
ai_honor = -0.25
}
modifier = { #Weight down for stress.
add = -15
has_trait = arbitrary
}
}
}
option = { # Refuse
name = hold_court.8051.b
scope:vassal = { hold_court_8051_promise_opinion_effect = yes }
scope:knight = {
hold_court_8051_promise_opinion_effect = yes
hidden_effect = {
return_to_court = yes
set_employer = scope:vassal
}
custom_tooltip = hold_court.8051.b.tt_return
}
remove_variable = hold_court_8050_promise
stress_impact = {
just = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -0.25
ai_honor = -0.25
}
modifier = {
add = 15
scope:knight.prowess < 10
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
}
}
}
# Vassal is apoplectic! You the fired knight again!
hold_court.8052 = {
type = court_event
title = hold_court.8052.t
desc = {
desc = hold_court.8052.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:vassal = { has_trait = wrathful }
}
desc = hold_court.8052.desc.wrath
}
desc = hold_court.8052.desc.fallback
}
}
theme = court
court_scene = {
button_position_character = scope:vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:vassal = {
group = petitioners_group
animation = rage
}
scope:knight = {
group = petitioners_group
animation = marshal
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
weight_multiplier = {
base = 1
modifier = {
add = 3
var:hold_court_8050_promise = { hold_court_8050_angry_trigger = yes }
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
var:hold_court_8050_promise = {
save_scope_as = knight
var:hold_court_8050_knight = { save_scope_as = vassal }
remove_variable = hold_court_8050_knight
}
scope:vassal = { hold_court_8051_promise_opinion_effect = yes }
scope:knight = { hold_court_8051_promise_opinion_effect = yes }
}
option = { # Oh get over it
name = hold_court.8052.a
scope:knight = {
hidden_effect = {
return_to_court = yes
set_employer = scope:vassal
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = -0.5
ai_boldness = -0.5
}
}
}
option = { # Arrest them
name = hold_court.8052.b
trigger = {
scope:vassal = { has_trait = wrathful }
OR = {
has_trait = vengeful
has_trait = wrathful
has_trait = arrogant
}
}
trait = vengeful
trait = wrathful
trait = arrogant
imprison_character_effect = {
TARGET = scope:vassal
IMPRISONER = root
}
scope:vassal = { hold_court_8051_promise_opinion_effect = yes }
scope:knight = {
hold_court_8051_promise_opinion_effect = yes
hidden_effect = {
return_to_court = yes
set_employer = scope:vassal
}
}
stress_impact = {
just = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 2
ai_boldness = 0.5
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
modifier = { #Weight down for stress.
add = -15
has_trait = forgiving
}
}
}
after = { remove_variable = hold_court_8050_promise }
}
# Knight dies in your service
hold_court.8053 = {
type = character_event
title = hold_court.8053.t
desc = {
desc = hold_court.8053.desc.intro
first_valid = {
triggered_desc = {
trigger = { exists = scope:knight.killer }
desc = hold_court.8053.killer
}
desc = hold_court.8053.battle
}
random_valid = {
triggered_desc = {
trigger = { scope:knight.prowess >= 20 }
desc = hold_court.8053.desc_talented
}
triggered_desc = {
trigger = { scope:knight.prowess >= 14 }
desc = hold_court.8053.desc_suitable
}
triggered_desc = {
trigger = { scope:knight.prowess >= 8 }
desc = hold_court.8053.desc_passing
}
triggered_desc = {
trigger = { has_trait = craven }
desc = hold_court.8053.desc_coward
}
triggered_desc = {
trigger = {
NOT = { has_trait = craven }
scope:knight.prowess < 8
}
desc = hold_court.8053.desc_unsuitable
}
}
desc = hold_court.8053.desc.body
}
theme = court
override_background = { reference = battlefield }
left_portrait = {
character = scope:vassal
animation = sadness
}
right_portrait = {
character = scope:knight
}
trigger = { primary_title.tier >= tier_kingdom }
immediate = {
scope:knight = {
show_as_tooltip = {
if = {
limit = { exists = killer }
death = {
death_reason = death_battle
killer = scope:knight.killer
}
}
else = {
death = { death_reason = death_battle }
}
}
}
}
option = { # Oh
name = hold_court.8053.a
}
}
scripted_trigger hold_court_8050_fired_trigger = {
has_variable = hold_court_8050_knight
this = root.var:hold_court_8050_promise
is_knight = no
var:hold_court_8050_knight = {
is_landed_or_landless_administrative = yes
is_vassal_or_below_of = root
NOT = { has_relation_rival = root }
}
NOR = {
has_trait = disfigured
has_trait = maimed
has_relation_friend = root
has_relation_rival = root
has_court_position = bodyguard_court_position
}
}
# Trigger for follow up events
hold_court.8054 = {
hidden = yes
trigger = {
has_variable = hold_court_8050_promise
primary_title.tier >= tier_kingdom }
immediate = {
if = {
limit = { hold_court_8050_fired_trigger = yes }
if = {
limit = { has_variable = hold_court_8051_flag }
trigger_event = hold_court.8052
}
else = { trigger_event = hold_court.8051 }
}
else = {
trigger_event = {
id = hold_court.8054
days = 365
}
}
}
}
##################################################
# A Temple for X
# by Joe Parkin
# 8060 - 061
##################################################
scripted_trigger hold_court_8060_vassal_trigger = {
faith = root.faith
NOR = {
this = scope:bishop
is_vassal_of = scope:bishop
}
}
scripted_effect hold_court_8060_completion_effect = {
show_as_tooltip = {
scope:target_county = {
custom_tooltip = hold_court.8060.a.tt
add_county_modifier = {
modifier = hold_court_8060_built_modifier
years = 20
}
}
scope:bishop = {
custom_tooltip = hold_court.8060.a.tt
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 20
}
}
}
}
# Chaplain wants a new Temple built
hold_court.8060 = {
type = court_event
title = hold_court.8060.t
desc = {
desc = hold_court.8060.desc
first_valid = {
triggered_desc = {
trigger = { scope:target_county.holder = root }
desc = hold_court.8060.desc.owned
}
triggered_desc = {
trigger = {
exists = scope:vassal
scope:vassal = { is_vassal_of = root }
}
desc = hold_court.8060.desc.vassal
}
desc = hold_court.8060.desc.subvassal
}
first_valid = {
triggered_desc = {
trigger = {
scope:target_county = {
any_county_province = { has_holding_type = church_holding }
}
}
desc = hold_court.8060.desc.existing
}
desc = hold_court.8060.desc.first
}
desc = hold_court.8060.desc.end
}
theme = realm
lower_left_portrait = scope:vassal
lower_center_portrait = scope:subvassal
court_scene = {
button_position_character = scope:bishop
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:bishop = {
group = petitioners_group
animation = chaplain
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 15 }
trigger = {
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
has_court_event_flag = no
is_available_ai_adult = yes
}
NOT = { has_character_flag = has_had_holding_request_event }
NOT = { has_variable = hold_court_8060_church_var }
gold > hold_court_holding_cost_double_value
faith = {
has_doctrine = doctrine_theocracy_temporal
NOT = { has_doctrine_parameter = unreformed }
}
OR = {
any_held_title = {
county_has_empty_province_trigger = yes
faith = ROOT.faith
}
any_sub_realm_county = {
faith = root.faith
holder = {
NOR = {
this = root.cp:councillor_court_chaplain
is_vassal_of = root.cp:councillor_court_chaplain
}
}
any_county_province = { province_has_no_holding_trigger = yes }
}
}
}
weight_multiplier = {
base = 1
modifier = {
add = 2
any_held_title = {
title_tier = county
county_has_empty_province_trigger = yes
faith = ROOT.faith
county_has_no_church_trigger = yes
}
}
modifier = {
add = 1
any_held_title = {
title_tier = county
county_has_empty_province_trigger = yes
faith = ROOT.faith
county_has_all_holding_types = yes
}
}
modifier = {
add = -2
cp:councillor_court_chaplain.learning < 10
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
add_character_flag = {
flag = has_had_holding_request_event
years = 15
}
cp:councillor_court_chaplain = {
save_scope_as = bishop
court_event_character_flag_effect = yes
}
if = { # root's counties...
limit = {
any_held_title = {
county_has_empty_province_trigger = yes
faith = ROOT.faith
}
}
ordered_held_title = {
limit = {
county_has_empty_province_trigger = yes
faith = ROOT.faith
county_has_no_church_trigger = yes
}
alternative_limit = {
county_has_empty_province_trigger = yes
faith = ROOT.faith
county_has_all_holding_types = yes
}
alternative_limit = { county_has_empty_province_trigger = yes }
order_by = development_level
save_scope_as = target_county
}
}
else = { # ... vassal counties
ordered_sub_realm_county = {
limit = {
holder = {
is_vassal_of = ROOT
hold_court_8060_vassal_trigger = yes
}
faith = ROOT.faith
any_county_province = { province_has_no_holding_trigger = yes }
county_has_no_church_trigger = yes
}
alternative_limit = {
holder = {
is_vassal_of = ROOT
hold_court_8060_vassal_trigger = yes
}
faith = ROOT.faith
any_county_province = { province_has_no_holding_trigger = yes }
county_has_all_holding_types = yes
}
alternative_limit = {
holder = {
is_vassal_of = ROOT
hold_court_8060_vassal_trigger = yes
}
faith = ROOT.faith
any_county_province = { province_has_no_holding_trigger = yes }
}
alternative_limit = {
holder = { hold_court_8060_vassal_trigger = yes }
faith = ROOT.faith
any_county_province = { province_has_no_holding_trigger = yes }
county_has_no_church_trigger = yes
}
alternative_limit = {
holder = { hold_court_8060_vassal_trigger = yes }
faith = ROOT.faith
any_county_province = { province_has_no_holding_trigger = yes }
county_has_all_holding_types = yes
}
alternative_limit = {
holder = { hold_court_8060_vassal_trigger = yes }
faith = ROOT.faith
any_county_province = { province_has_no_holding_trigger = yes }
}
order_by = development_level
save_scope_as = target_county
holder = {
if = {
limit = {
NOT = { is_vassal_of = root }
}
liege = { save_scope_as = vassal }
save_scope_as = subvassal
}
else = { save_scope_as = vassal }
}
}
}
scope:target_county = {
random_county_province = {
limit = { province_has_no_holding_trigger = yes }
save_scope_as = target_province
}
}
if = {
limit = {
any_court_position_holder = { type = royal_architect_court_position }
}
random_court_position_holder = {
type = royal_architect_court_position
save_scope_as = royal_architect
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Pay for the Temple
name = hold_court.8060.a
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= major_treasury_or_gold_value
}
}
remove_treasury_or_gold = hold_court_holding_cost_cheaper_value
scope:target_province = {
begin_create_holding = {
type = church_holding
refund_cost = { gold = hold_court_holding_cost_cheaper_value }
}
}
hold_court_8060_completion_effect = yes
if = {
limit = { exists = scope:vassal }
scope:vassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
if = {
limit = { exists = scope:subvassal }
scope:subvassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
set_variable = {
name = hold_court_8060_church_var
value = scope:target_province
years = 6
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -0.5
ai_zeal = 0.5
ai_rationality = 0.25
ai_compassion = 0.25
}
modifier = { #Weight down for stress.
add = -30
has_trait = greedy
}
}
}
option = { # Get the Vassal to pay half
name = hold_court.8060.b
trigger = {
exists = scope:vassal
scope:vassal = { is_vassal_of = root }
scope:vassal.short_term_gold >= hold_court_holding_cost_half_value
}
show_as_unavailable = { scope:vassal.short_term_gold < hold_court_holding_cost_half_value }
highlight_portrait = scope:vassal
remove_treasury_or_gold = hold_court_holding_cost_half_value
scope:vassal = {
remove_treasury_or_gold = hold_court_holding_cost_half_value
add_opinion = {
modifier = annoyed_opinion
target = root
opinion = -15
}
}
scope:target_province = {
begin_create_holding = {
type = church_holding
refund_cost = { gold = hold_court_holding_cost_half_value }
}
}
hold_court_8060_completion_effect = yes
set_variable = {
name = hold_court_8060_church_var
value = scope:target_province
years = 6
}
stress_impact = {
greedy = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -0.25
ai_compassion = 0.5
ai_zeal = 0.25
}
modifier = { #Weight down for stress.
add = -30
has_trait = greedy
}
}
}
option = { # Get the Subvassal to pay half
name = hold_court.8060.c
trigger = {
exists = scope:subvassal
OR = {
scope:subvassal.short_term_gold >= hold_court_holding_cost_half_value
scope:vassal.short_term_gold >= hold_court_holding_cost_half_value
}
}
show_as_unavailable = {
scope:subvassal.short_term_gold < hold_court_holding_cost_half_value
scope:vassal.short_term_gold < hold_court_holding_cost_half_value
}
highlight_portrait = scope:subvassal
remove_treasury_or_gold = hold_court_holding_cost_half_value
scope:subvassal = { # Vassals not happy about paying
if = {
limit = { long_term_gold >= hold_court_holding_cost_half_value }
remove_treasury_or_gold = hold_court_holding_cost_half_value
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -15
}
}
else = {
scope:vassal = {
remove_treasury_or_gold = hold_court_holding_cost_half_value
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -15
}
}
}
}
scope:target_province = {
begin_create_holding = {
type = church_holding
refund_cost = { gold = hold_court_holding_cost_half_value }
}
}
hold_court_8060_completion_effect = yes
set_variable = {
name = hold_court_8060_church_var
value = scope:target_province
years = 6
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -0.25
ai_compassion = 0.5
ai_zeal = 0.25
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
}
}
option = { # Architect involved
name = hold_court.8060.d
trigger = { exists = scope:royal_architect }
scope:royal_architect = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
duel = {
skill = stewardship
value = average_skill_rating
6 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
desc = hold_court.8060.d.tt_success
send_interface_toast = {
title = hold_court.8060.d.tt_success
left_icon = scope:frontier_lord
root = {
remove_treasury_or_gold = hold_court_holding_cost_architect_cheaper_value
scope:target_province = {
begin_create_holding = {
type = church_holding
refund_cost = { gold = hold_court_holding_cost_architect_cheaper_value }
}
}
}
}
}
10 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
desc = hold_court.8060.d.tt_normal
send_interface_toast = {
title = hold_court.8060.d.tt_normal
left_icon = scope:frontier_lord
root = {
remove_treasury_or_gold = hold_court_holding_cost_cheaper_value
scope:target_province = {
begin_create_holding = {
type = church_holding
refund_cost = { gold = hold_court_holding_cost_cheaper_value }
}
}
}
}
}
4 = {
compare_modifier = {
value = scope:duel_value
multiplier = -0.5
}
desc = hold_court.8060.d.tt_failure
send_interface_toast = {
title = hold_court.8060.d.tt_failure
left_icon = scope:frontier_lord
root = {
remove_treasury_or_gold = hold_court_holding_cost_architect_expensive_value
scope:target_province = {
begin_create_holding = {
type = church_holding
refund_cost = { gold = hold_court_holding_cost_architect_expensive_value }
}
}
}
}
}
}
}
hold_court_8060_completion_effect = yes
stress_impact = {
diligent = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = -0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = diligent
}
}
}
option = { # Refuse
name = {
trigger = {
NOT = { exists = scope:vassal }
}
text = hold_court.8060.e.own
}
name = {
trigger = { exists = scope:vassal }
text = hold_court.8060.e.vassal
}
if = {
limit = { exists = scope:vassal }
add_piety = miniscule_piety_loss
}
else = { add_piety = minor_piety_loss }
scope:bishop = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
if = {
limit = { exists = scope:vassal }
scope:vassal = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
}
if = {
limit = { exists = scope:subvassal }
scope:subvassal = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
}
stress_impact = {
zealous = medium_stress_impact_gain
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 0.5
ai_zeal = -0.5
ai_compassion = -0.25
}
modifier = { #Weight down for stress.
add = -15
has_trait = zealous
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
}
}
after = {
if = {
limit = { has_variable = hold_court_8060_church_var }
trigger_event = {
id = hold_court.8061
days = 1830 # 5 years + 5 days
}
}
scope:bishop = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
# The Temple is complete
hold_court.8061 = {
type = character_event
title = hold_court.8061.t
desc = {
first_valid = {
triggered_desc = { # In case you have no bishop on completion
trigger = {
exists = scope:bishop
scope:bishop = { is_alive = yes }
}
desc = hold_court.8061.desc.bishop
}
desc = hold_court.8061.desc.fallback
}
first_valid = {
triggered_desc = {
trigger = { scope:target_county.holder = root }
desc = hold_court.8061.desc.owned
}
triggered_desc = {
trigger = {
exists = scope:vassal
scope:vassal = { is_vassal_of = root }
}
desc = hold_court.8061.desc.vassal
}
}
first_valid = {
triggered_desc = {
trigger = {
scope:target_county = {
any_county_province = {
count >= 2
has_holding_type = church_holding
}
}
}
desc = hold_court.8061.desc.existing
}
desc = hold_court.8061.desc.first
}
}
theme = realm
override_background = {
trigger = {
NOR = {
faith = { religion = religion:hinduism_religion }
faith = { religion = religion:buddhism_religion }
faith = { religion = religion:jainism_religion }
}
}
reference = temple
}
override_background = {
trigger = {
OR = {
faith = { religion = religion:hinduism_religion }
faith = { religion = religion:buddhism_religion }
faith = { religion = religion:jainism_religion }
}
}
reference = ep2_holy_site_indian
}
left_portrait = {
character = scope:bishop
animation = happiness
trigger = {
scope:bishop = { is_alive = yes }
}
}
lower_right_portrait = scope:vassal
trigger = {
has_variable = hold_court_8060_church_var
var:hold_court_8060_church_var = {
OR = {
county.holder = root
county.holder.top_liege = root
}
}
}
immediate = {
if = {
limit = { exists = cp:councillor_court_chaplain }
cp:councillor_court_chaplain = { save_scope_as = bishop }
}
var:hold_court_8060_church_var = {
save_scope_as = target_province
county = {
save_scope_as = target_county
holder = {
if = {
limit = {
this != root
}
if = {
limit = {
liege != root
}
save_scope_as = subvassal
liege = { save_scope_as = vassal }
}
else = { save_scope_as = vassal }
}
}
}
}
if = {
limit = { exists = scope:vassal }
scope:vassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
if = {
limit = { exists = scope:subvassal }
scope:subvassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
show_as_tooltip = {
scope:target_county.holder = {
add_piety = massive_piety_gain
}
faith = {
change_fervor = {
value = 1
desc = fervor_gain_built_temple_holding
}
}
}
}
option = { # Great
name = hold_court.8061.a
if = {
limit = { exists = scope:vassal }
add_piety = major_piety_gain
}
scope:target_county = {
add_county_modifier = {
modifier = hold_court_8060_built_modifier
years = 25
}
}
scope:bishop = {
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 20
}
}
}
after = { remove_variable = hold_court_8060_church_var }
}
##################################################
# The Growth of X
# by Joe Parkin
# 8070 - 071
##################################################
scripted_trigger hold_court_8070_vassal_trigger = { # Vassal who is not the steward
NOR = {
this = scope:steward
is_vassal_of = scope:steward
}
}
scripted_effect hold_court_8070_completion_effect = { # Show effects once holding is built
show_as_tooltip = {
scope:target_county = {
custom_tooltip = hold_court.8070.a.tt
add_county_modifier = {
modifier = hold_court_8070_built_modifier
years = 25
}
}
scope:steward = {
custom_tooltip = hold_court.8070.a.tt
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 20
}
}
}
}
# Steward wants investment in City
hold_court.8070 = {
type = court_event
title = hold_court.8070.t
desc = {
desc = hold_court.8070.desc.intro
first_valid = { # County owner descriptions
triggered_desc = {
trigger = { scope:target_county.holder = root }
desc = hold_court.8060.desc.owned
}
triggered_desc = {
trigger = {
exists = scope:vassal
scope:vassal = { is_vassal_of = root }
}
desc = hold_court.8060.desc.vassal
}
desc = hold_court.8060.desc.subvassal
}
desc = hold_court.8070.desc.body
first_valid = { # City number descriptions
triggered_desc = {
trigger = {
scope:target_county = {
any_county_province = { has_holding_type = city_holding }
}
}
desc = hold_court.8070.desc.existing
}
desc = hold_court.8070.desc.first
}
desc = hold_court.8070.desc.end
}
theme = realm
lower_right_portrait = scope:vassal
court_scene = {
button_position_character = scope:steward
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:steward = {
group = petitioners_group
animation = steward
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 30 }
trigger = {
exists = cp:councillor_steward
cp:councillor_steward = {
has_court_event_flag = no
is_available_ai_adult = yes
}
NOT = { has_character_flag = has_had_holding_request_event }
NOT = { has_variable = hold_court_8070_city_var }
gold > hold_court_holding_cost_double_value
OR = {
any_held_title = { county_has_empty_province_trigger = yes }
any_sub_realm_county = {
holder = {
NOR = {
this = root.cp:councillor_steward
is_vassal_of = root.cp:councillor_steward
}
}
any_county_province = { province_has_no_holding_trigger = yes }
}
}
}
weight_multiplier = {
base = 1
modifier = {
add = 2
any_held_title = {
title_tier = county
county_has_empty_province_trigger = yes
county_has_no_city_trigger = yes
}
}
modifier = {
add = 1
any_held_title = {
title_tier = county
county_has_empty_province_trigger = yes
county_has_all_holding_types = yes
}
}
modifier = {
add = -2
cp:councillor_steward.stewardship < 10
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
add_character_flag = {
flag = has_had_holding_request_event
years = 15
}
cp:councillor_steward = {
save_scope_as = steward
court_event_character_flag_effect = yes
}
if = { # root's counties...
limit = {
any_held_title = { county_has_empty_province_trigger = yes }
}
ordered_held_title = {
limit = {
county_has_empty_province_trigger = yes
county_has_no_city_trigger = yes
}
alternative_limit = {
county_has_empty_province_trigger = yes
county_has_all_holding_types = yes
}
alternative_limit = { county_has_empty_province_trigger = yes }
order_by = development_level
save_scope_as = target_county
}
}
else = { # ... vassal counties
ordered_sub_realm_county = {
limit = {
holder = {
is_vassal_of = root
hold_court_8070_vassal_trigger = yes
}
any_county_province = { province_has_no_holding_trigger = yes }
county_has_no_city_trigger = yes
}
alternative_limit = {
holder = {
is_vassal_of = root
hold_court_8070_vassal_trigger = yes
}
any_county_province = { province_has_no_holding_trigger = yes }
county_has_all_holding_types = yes
}
alternative_limit = {
holder = {
is_vassal_of = root
hold_court_8070_vassal_trigger = yes
}
any_county_province = { province_has_no_holding_trigger = yes }
}
alternative_limit = {
holder = { hold_court_8070_vassal_trigger = yes }
any_county_province = { province_has_no_holding_trigger = yes }
county_has_no_city_trigger = yes
}
alternative_limit = {
holder = { hold_court_8070_vassal_trigger = yes }
any_county_province = { province_has_no_holding_trigger = yes }
county_has_all_holding_types = yes
}
alternative_limit = {
holder = { hold_court_8070_vassal_trigger = yes }
any_county_province = { province_has_no_holding_trigger = yes }
}
order_by = development_level
save_scope_as = target_county
holder = { save_scope_as = vassal }
}
}
scope:target_county = {
random_county_province = {
limit = { province_has_no_holding_trigger = yes }
save_scope_as = target_province
}
}
if = {
limit = {
any_court_position_holder = { type = royal_architect_court_position }
}
random_court_position_holder = {
type = royal_architect_court_position
save_scope_as = royal_architect
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Pay for the City
name = hold_court.8070.a
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= major_gold_value
}
}
remove_treasury_or_gold = hold_court_holding_cost_cheaper_value
scope:target_province = {
begin_create_holding = {
type = city_holding
refund_cost = { gold = hold_court_holding_cost_cheaper_value }
}
}
hold_court_8070_completion_effect = yes
show_as_tooltip = {
if = {
limit = { exists = scope:vassal }
scope:vassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
if = {
limit = { exists = scope:subvassal }
scope:subvassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
}
set_variable = {
name = hold_court_8070_city_var
value = scope:target_province
years = 6
}
stress_impact = {
greedy = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -0.5
ai_rationality = 0.25
ai_compassion = 0.25
}
modifier = { #Weight down for stress.
add = -30
has_trait = greedy
}
}
}
option = { # Get the Vassal to pay half
name = hold_court.8070.b
trigger = {
exists = scope:vassal
scope:vassal = { is_vassal_of = root }
scope:vassal.short_term_gold >= hold_court_holding_cost_half_value
}
show_as_unavailable = { scope:vassal.short_term_gold < hold_court_holding_cost_half_value }
highlight_portrait = scope:vassal
remove_treasury_or_gold = hold_court_holding_cost_half_value
scope:vassal = {
remove_treasury_or_gold = hold_court_holding_cost_half_value
add_opinion = {
modifier = annoyed_opinion
target = root
opinion = -15
}
}
scope:target_province = {
begin_create_holding = {
type = city_holding
refund_cost = { gold = hold_court_holding_cost_half_value }
}
}
hold_court_8070_completion_effect = yes
set_variable = {
name = hold_court_8070_city_var
value = scope:target_province
years = 6
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -0.25
ai_rationality = 0.25
ai_compassion = 0.5
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
}
}
option = { # Get the Subvassal to pay half
name = hold_court.8070.c
trigger = {
exists = scope:vassal
exists = scope:subvassal
OR = {
scope:subvassal.short_term_gold >= hold_court_holding_cost_half_value
scope:vassal.short_term_gold >= hold_court_holding_cost_half_value
}
}
show_as_unavailable = {
scope:subvassal.short_term_gold < hold_court_holding_cost_half_value
scope:vassal.short_term_gold < hold_court_holding_cost_half_value
}
remove_treasury_or_gold = hold_court_holding_cost_half_value
scope:subvassal = { # Vassals not happy about paying
if = {
limit = { long_term_gold >= hold_court_holding_cost_half_value }
remove_treasury_or_gold = hold_court_holding_cost_half_value
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -15
}
}
else = {
scope:vassal = {
remove_treasury_or_gold = hold_court_holding_cost_half_value
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -15
}
}
}
}
scope:target_province = {
begin_create_holding = {
type = city_holding
refund_cost = { gold = hold_court_holding_cost_half_value }
}
}
hold_court_8070_completion_effect = yes
set_variable = {
name = hold_court_8070_city_var
value = scope:target_province
years = 6
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -0.25
ai_rationality = 0.25
ai_compassion = 0.5
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
}
}
option = { # Architect involved
name = hold_court.8070.d
trigger = { exists = scope:royal_architect }
scope:royal_architect = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
duel = {
skill = stewardship
value = average_skill_rating
6 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
desc = hold_court.8060.d.tt_success
send_interface_toast = {
title = hold_court.8060.d.tt_success
left_icon = scope:royal_architect
root = {
remove_treasury_or_gold = hold_court_holding_cost_architect_cheaper_value
scope:target_province = {
begin_create_holding = {
type = city_holding
refund_cost = { gold = hold_court_holding_cost_architect_cheaper_value }
}
}
}
}
}
10 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
desc = hold_court.8060.d.tt_normal
send_interface_toast = {
title = hold_court.8060.d.tt_normal
left_icon = scope:royal_architect
root = {
remove_treasury_or_gold = hold_court_holding_cost_cheaper_value
scope:target_province = {
begin_create_holding = {
type = city_holding
refund_cost = { gold = hold_court_holding_cost_cheaper_value }
}
}
}
}
}
4 = {
compare_modifier = {
value = scope:duel_value
multiplier = -0.5
}
desc = hold_court.8060.d.tt_failure
send_interface_toast = {
title = hold_court.8060.d.tt_failure
left_icon = scope:royal_architect
root = {
remove_treasury_or_gold = hold_court_holding_cost_architect_expensive_value
scope:target_province = {
begin_create_holding = {
type = city_holding
refund_cost = { gold = hold_court_holding_cost_architect_expensive_value }
}
}
}
}
}
}
}
hold_court_8070_completion_effect = yes
stress_impact = {
diligent = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = -0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = diligent
}
}
}
option = { # Refuse
name = hold_court.8070.e
add_prestige = minor_prestige_loss
scope:steward = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
if = {
limit = { exists = scope:vassal }
scope:vassal = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
}
if = {
limit = { exists = scope:subvassal }
scope:subvassal = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
}
stress_impact = {
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 0.5
ai_compassion = -0.25
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
}
}
after = {
scope:steward = {
clear_court_event_participation = yes
}
if = {
limit = { has_variable = hold_court_8070_city_var }
trigger_event = {
id = hold_court.8071
days = 1830 # 5 years + 10 days
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
# The City is complete
hold_court.8071 = {
type = character_event
title = hold_court.8071.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
exists = scope:steward
scope:steward = { is_alive = yes }
}
desc = hold_court.8071.desc.steward
}
desc = hold_court.8071.desc.fallback
}
first_valid = {
triggered_desc = {
trigger = { scope:target_county.holder = root }
desc = hold_court.8071.desc.owned
}
triggered_desc = {
trigger = {
exists = scope:vassal
scope:vassal = { is_vassal_of = root }
}
desc = hold_court.8071.desc.vassal
}
}
first_valid = {
triggered_desc = {
trigger = {
scope:target_county = {
any_county_province = {
count >= 2
has_holding_type = city_holding
}
}
}
desc = hold_court.8071.desc.existing
}
desc = hold_court.8071.desc.first
}
}
theme = realm
override_background = { reference = market }
left_portrait = {
character = scope:steward
animation = happiness
trigger = {
scope:steward = { is_alive = yes }
}
}
lower_right_portrait = scope:vassal
trigger = {
has_variable = hold_court_8070_city_var
var:hold_court_8070_city_var = {
OR = {
county.holder = root
county.holder.top_liege = root
}
}
}
immediate = {
if = {
limit = { exists = cp:councillor_steward }
cp:councillor_steward = { save_scope_as = steward }
}
var:hold_court_8070_city_var = {
save_scope_as = target_province
county = {
save_scope_as = target_county
holder = {
if = {
limit = {
this != root
}
if = {
limit = {
liege != root
}
save_scope_as = subvassal
liege = { save_scope_as = vassal }
}
else = { save_scope_as = vassal }
}
}
}
}
if = {
limit = { exists = scope:vassal }
scope:vassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
if = {
limit = { exists = scope:subvassal }
scope:subvassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
}
option = { # Great
name = hold_court.8071.a
scope:target_county = {
add_county_modifier = {
modifier = hold_court_8070_built_modifier
years = 25
}
}
scope:steward = {
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 20
}
}
}
after = { remove_variable = hold_court_8070_city_var }
}
##################################################
# The Republic of X
# by Joe Parkin
# 8080
##################################################
scripted_trigger hold_court_8080_mayor_trigger = { # Check mayor's culture, and city wealth
hold_court_available_mayor_trigger = yes
culture = { has_innovation = innovation_development_02 }
primary_title = {
de_jure_liege = {
this != root.capital_county
}
title_province.combined_building_level >= 5
}
}
scripted_effect hold_court_8080_grant_effect = { # Grant county to mayor
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:mayor.primary_title.de_jure_liege = {
change_title_holder = {
holder = scope:mayor
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:target_county = {
add_county_modifier = {
modifier = hold_court_8080_granted_modifier
years = 20
}
}
}
# Mayor wants rights over a county
hold_court.8080 = {
type = court_event
title = hold_court.8080.t
desc = {
desc = hold_court.8080.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:target_county = {
has_coastal_province = yes
}
}
desc = hold_court.8080.desc.body_sea
}
desc = hold_court.8080.desc.body_fallback
}
desc = hold_court.8080.desc.body
}
theme = realm
court_scene = {
button_position_character = scope:mayor
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:mayor = {
group = petitioners_group
animation = admiration
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 40 }
trigger = {
NOR = {
has_character_flag = has_had_county_request_event
has_character_flag = has_had_government_request_event
}
top_liege = this
culture = { has_innovation = innovation_development_02 }
any_vassal = { hold_court_8080_mayor_trigger = yes }
NOT = {
any_sub_realm_county = {
percent > 0.1
holder = { government_has_flag = government_is_republic }
}
}
}
weight_multiplier = {
base = 1
modifier = {
add = 1
any_vassal = {
hold_court_8080_mayor_trigger = yes
primary_title.title_province = { has_building_or_higher = common_tradeport_01 }
}
}
modifier = {
add = 1
any_vassal = {
hold_court_8080_mayor_trigger = yes
primary_title = {
de_jure_liege = {
has_coastal_province = yes
}
}
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
add_character_flag = {
flag = has_had_county_request_event
years = 15
}
add_character_flag = {
flag = has_had_government_request_event
years = 15
}
ordered_vassal = {
limit = {
hold_court_8080_mayor_trigger = yes
primary_title.title_province = { has_building_or_higher = common_tradeport_01 }
}
alternative_limit = {
hold_court_8080_mayor_trigger = yes
primary_title = {
de_jure_liege = {
has_coastal_province = yes
}
}
}
alternative_limit = { hold_court_8080_mayor_trigger = yes }
order_by = primary_title.title_province.combined_building_level
save_scope_as = mayor
court_event_character_flag_effect = yes
primary_title = {
save_scope_as = target_city
set_variable = {
name = hold_court_city_cooldown_var
years = 10
}
de_jure_liege = { save_scope_as = target_county }
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Grant Republican County
name = hold_court.8080.a
hold_court_8080_grant_effect = yes
scope:mayor = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 20
}
}
stress_impact = {
greedy = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -2
ai_compassion = 0.25
}
modifier = { #Weight down for stress.
add = -30
has_trait = greedy
}
}
}
option = { # For a gift
name = hold_court.8080.b
if = {
limit = { scope:mayor.short_term_treasury_or_gold >= root.medium_treasury_or_gold_value }
scope:mayor = {
pay_treasury_or_gold = {
target = root
value = root.medium_treasury_or_gold_value
}
}
}
else = { add_treasury_or_gold = major_treasury_or_gold_value }
hold_court_8080_grant_effect = yes
stress_impact = {
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -1
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
}
}
option = { # Offer smaller privileges
name = hold_court.8080.c
duel = {
skill = stewardship
target = scope:mayor
8 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
desc = hold_court.8080.c.tt_success
send_interface_toast = {
title = hold_court.8080.c.tt_success
left_icon = scope:mayor
scope:mayor = {
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 10
}
}
scope:target_county = {
add_county_modifier = {
modifier = hold_court_8080_compromise_modifier
years = 20
}
}
}
}
8 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
desc = hold_court.8080.c.tt_failure
send_interface_toast = {
title = hold_court.8080.c.tt_failure
left_icon = scope:mayor
add_prestige = minor_prestige_loss
scope:mayor = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
}
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 1
ai_rationality = 0.5
}
}
}
option = { # Refuse
name = hold_court.8080.d
scope:mayor = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
scope:target_county = {
add_county_modifier = {
modifier = hold_court_8080_upset_modifier
years = 15
}
}
stress_impact = {
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 1
ai_rationality = 0.5
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
}
}
option = { # Imprison the Mayor
name = hold_court.8080.e
imprison_character_effect = {
TARGET = scope:mayor
IMPRISONER = root
}
add_dread = minor_dread_gain
add_character_modifier = {
modifier = hold_court_8080_prison_modifier
years = 10
}
stress_impact = {
humble = medium_stress_impact_gain
just = medium_stress_impact_gain
calm = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -0.5
ai_greed = -0.5
ai_rationality = -0.25
ai_compassion = -0.25
ai_boldness = 0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = humble
}
modifier = { #Weight down for stress.
add = -30
has_trait = just
}
modifier = { #Weight down for stress.
add = -30
has_trait = calm
}
modifier = { #Weight down for stress.
add = -30
has_trait = compassionate
}
}
}
after = {
scope:mayor = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# A Place at Court
# by Joe Parkin
# 8090
##################################################
scripted_trigger hold_court_8090_can_move_trigger = {
has_court_event_flag = no
AND = {
has_any_court_position = no
can_be_employed_as_any_court_position_trigger = yes
}
is_available_ai_adult = yes
is_landed = no
faith = root.faith
top_liege = root
NOT = { is_primary_heir_of = prev } # prev = scope:vassal
NOT = { has_relation_rival = root }
NOT = { is_close_family_of = root }
}
scripted_trigger hold_court_8090_candidate_trigger = { # Courtier is not already in a position
has_court_event_flag = no
is_available_ai_adult = yes
OR = {
AND = {
has_any_court_position = no
can_be_employed_as_any_court_position_trigger = yes
}
any_close_family_member = { hold_court_8090_can_move_trigger = yes }
}
}
scripted_effect hold_court_8090_hook_effect = {
if = {
limit = {
NOR = {
has_relation_lover = $CHAR$
has_relation_friend = $CHAR$
}
}
if = {
limit = {
can_add_hook = {
target = $CHAR$
type = indebted_hook
}
}
add_hook = {
target = $CHAR$
type = indebted_hook
}
}
}
else = {
if = {
limit = { has_character_modifier = hold_court_8090_favorites_modifier }
hidden_effect = { remove_character_modifier = hold_court_8090_favorites_modifier }
}
add_character_modifier = {
modifier = hold_court_8090_favorites_modifier
years = 5
}
}
}
# Vassal/courtier wants a Court Position
hold_court.8090 = {
type = court_event
title = hold_court.8090.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
NOT = { exists = scope:vassal_advocate }
}
desc = hold_court.8090.desc.intro
}
desc = hold_court.8090.desc.intro_advocate
}
first_valid = {
triggered_desc = {
trigger = {
exists = scope:old_holder
scope:vassal = { has_relation_rival = scope:old_holder }
}
desc = hold_court.8090.desc.rival # RIVAL HOLDS POS
}
triggered_desc = {
trigger = {
exists = scope:old_holder
exists = scope:vassal_advocate
}
desc = hold_court.8090.desc.other_advocate
}
triggered_desc = {
trigger = { exists = scope:old_holder }
desc = hold_court.8090.desc.other
}
triggered_desc = {
trigger = {
NOT = { exists = scope:vassal_advocate }
scope:vassal = { has_trait = arrogant }
}
desc = hold_court.8090.desc.arrogant # FILLED BUT ARROGANT
}
triggered_desc = {
trigger = {
NOT = { exists = scope:vassal_advocate }
scope:vassal = { has_trait = ambitious }
}
desc = hold_court.8090.desc.ambitious # FILLED BUT AMBITIOUS
}
triggered_desc = {
trigger = {
exists = scope:old_holder
OR = {
AND = { # Stewardship roles
scope:vassal.var:target_court_position = flag:royal_architect
scope:vassal.var:target_court_position = flag:seneschal
scope:vassal.var:target_court_position = flag:court_gardener
scope:vassal.var:target_court_position = flag:keeper_of_swans
scope:vassal.stewardship > scope:old_holder.stewardship
}
AND = { # Learning roles
scope:vassal.var:target_court_position = flag:court_tutor
scope:vassal.var:target_court_position = flag:high_almoner
scope:vassal.var:target_court_position = flag:court_physician
scope:vassal.var:target_court_position = flag:antiquarian
scope:vassal.var:target_court_position = flag:court_artificer
scope:vassal.var:target_court_position = flag:chief_qadi
scope:vassal.var:target_court_position = flag:court_astrologer
scope:vassal.learning > scope:old_holder.learning
}
AND = { # Martial roles
scope:vassal.var:target_court_position = flag:master_of_horse
scope:vassal.var:target_court_position = flag:bodyguard
scope:vassal.var:target_court_position = flag:champion
scope:vassal.var:target_court_position = flag:master_of_hunt
scope:vassal.var:target_court_position = flag:garuda
scope:vassal.martial > scope:old_holder.martial
scope:vassal.var:target_court_position = flag:akolouthos
}
AND = { # Diplomacy roles
scope:vassal.var:target_court_position = flag:court_poet
scope:vassal.var:target_court_position = flag:court_musician
scope:vassal.var:target_court_position = flag:cupbearer
scope:vassal.var:target_court_position = flag:lady_in_waiting
scope:vassal.var:target_court_position = flag:cultural_emissary
scope:vassal.diplomacy > scope:old_holder.diplomacy
}
AND = { # Intrigue roles
scope:vassal.var:target_court_position = flag:chief_eunuch
scope:vassal.intrigue > scope:old_holder.intrigue
}
}
}
desc = hold_court.8090.desc.superior # Position is occupied but by someone worse at it
}
}
first_valid = {
triggered_desc = {
trigger = { exists = scope:vassal_advocate }
desc = hold_court.8090.desc.empty_advocate
}
desc = hold_court.8090.desc.empty
}
random_valid = {
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:royal_architect
scope:vassal = { has_trait = architect }
}
desc = hold_court_8090_interest_architect
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:seneschal
scope:vassal = { has_trait = administrator }
}
desc = hold_court_8090_interest_seneschal_administrator
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:seneschal
scope:vassal = { is_eunuch_trigger = yes }
}
desc = hold_court_8090_interest_seneschal_eunuch
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:high_almoner
scope:vassal = { has_trait = improvident }
}
desc = hold_court_8090_interest_almoner
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:court_physician
scope:vassal = { has_trait = lifestyle_physician }
}
desc = hold_court_8090_interest_physician_experience
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:court_physician
scope:vassal = { has_trait = lifestyle_mystic }
}
desc = hold_court_8090_interest_physician_mystic
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:court_physician
scope:vassal = { has_trait = lifestyle_herbalist }
}
desc = hold_court_8090_interest_physician_herbalist
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:antiquarian
scope:vassal = { has_trait = scholar }
}
desc = hold_court_8090_interest_antiquarian
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:master_of_horse
scope:vassal = { has_trait = overseer }
}
desc = hold_court_8090_interest_horse
}
triggered_desc = {
trigger = {
OR = {
scope:vassal.var:target_court_position = flag:bodyguard
scope:vassal.var:target_court_position = flag:akolouthos
}
has_relation_soulmate = scope:vassal
}
desc = hold_court_8090_interest_bodyguard_soulmate
}
triggered_desc = {
trigger = {
OR = {
scope:vassal.var:target_court_position = flag:bodyguard
scope:vassal.var:target_court_position = flag:akolouthos
}
has_relation_lover = scope:vassal
}
desc = hold_court_8090_interest_bodyguard_lover
}
triggered_desc = {
trigger = {
OR = {
scope:vassal.var:target_court_position = flag:bodyguard
scope:vassal.var:target_court_position = flag:akolouthos
}
has_relation_best_friend = scope:vassal
}
desc = hold_court_8090_interest_bodyguard_bestie
}
triggered_desc = {
trigger = {
OR = {
scope:vassal.var:target_court_position = flag:bodyguard
scope:vassal.var:target_court_position = flag:akolouthos
}
has_relation_friend = scope:vassal
}
desc = hold_court_8090_interest_bodyguard_friend
}
triggered_desc = {
trigger = {
OR = {
scope:vassal.var:target_court_position = flag:champion
scope:vassal.var:target_court_position = flag:garuda
}
scope:vassal = { has_trait = lifestyle_blademaster }
}
desc = hold_court_8090_interest_champion
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:master_of_hunt
scope:vassal = { has_trait = lifestyle_hunter }
}
desc = hold_court_8090_interest_hunt
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:court_poet
scope:vassal = { has_trait = lifestyle_poet }
}
desc = hold_court_8090_interest_poet
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:court_musician
scope:vassal = { has_trait = gregarious }
}
desc = hold_court_8090_interest_musician_gregarious
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:court_musician
scope:vassal = {
culture = {
this != scope:second.culture
has_cultural_tradition = tradition_music_theory
}
}
}
desc = hold_court_8090_interest_musician_culture
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:cupbearer
scope:vassal = { has_trait = lifestyle_reveler }
}
desc = hold_court_8090_interest_cupbearer
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:lady_in_waiting
has_relation_soulmate = scope:vassal
}
desc = hold_court_8090_interest_lady_soulmate
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:lady_in_waiting
has_relation_lover = scope:vassal
}
desc = hold_court_8090_interest_lady_lover
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:lady_in_waiting
has_relation_best_friend = scope:vassal
}
desc = hold_court_8090_interest_lady_bestie
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:lady_in_waiting
has_relation_friend = scope:vassal
}
desc = hold_court_8090_interest_lady_friend
}
triggered_desc = {
trigger = { scope:vassal.var:target_court_position = flag:chief_eunuch }
desc = hold_court_8090_interest_eunuch
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:court_gardener
scope:vassal = {
OR = {
has_trait = lifestyle_gardener
has_trait = lifestyle_herbalist
}
}
}
desc = hold_court_8090_interest_gardener
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:court_artificer
scope:vassal = { has_completed_inspiration = yes }
}
desc = hold_court_8090_interest_artificer
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:cultural_emissary
scope:vassal = { has_trait = diplomat }
}
desc = hold_court_8090_interest_emissary
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:chief_qadi
scope:vassal = { has_trait = scholar }
}
desc = hold_court_8090_interest_qadi
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:garuda
scope:vassal = { has_trait = lifestyle_blademaster }
}
desc = hold_court_8090_interest_garuda
}
triggered_desc = {
trigger = {
scope:vassal.var:target_court_position = flag:keeper_of_swans
scope:vassal = { has_trait = lifestyle_hunter }
}
desc = hold_court_8090_interest_keeper_of_swans
}
triggered_desc = {
trigger = { has_relation_soulmate = scope:vassal }
desc = hold_court_8090_interest_soulmate
}
triggered_desc = {
trigger = { has_relation_lover = scope:vassal }
desc = hold_court_8090_interest_lover
}
triggered_desc = {
trigger = { has_relation_best_friend = scope:vassal }
desc = hold_court_8090_interest_bestie
}
triggered_desc = {
trigger = { has_relation_friend = scope:vassal }
desc = hold_court_8090_interest_friend
}
triggered_desc = {
trigger = { exists = scope:old_holder }
desc = hold_court_8090_interest_other
}
triggered_desc = {
trigger = {
NOT = { exists = scope:old_holder }
}
desc = hold_court_8090_interest_fallback
}
}
}
theme = realm
lower_right_portrait = scope:old_holder
court_scene = {
button_position_character = scope:vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:vassal = {
group = petitioners_group
animation = admiration
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
OR = {
any_vassal = { hold_court_8090_candidate_trigger = yes }
any_courtier = { hold_court_8090_candidate_trigger = yes }
}
}
weight_multiplier = {
base = 1
modifier = {
add = 2
has_employed_any_court_position = no
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
save_scope_as = liege
every_vassal = {
limit = { hold_court_8090_candidate_trigger = yes }
add_to_list = hold_court_8090_candidate_list
}
every_courtier = {
limit = { hold_court_8090_candidate_trigger = yes }
add_to_list = hold_court_8090_candidate_list
}
random_in_list = {
list = hold_court_8090_candidate_list
weight = {
base = 1
modifier = {
add = 2
is_landed_or_landless_administrative = yes
}
modifier = {
add = -1
highest_held_title_tier = tier_barony
}
modifier = {
add = 2
highest_held_title_tier = tier_duchy
}
modifier = {
add = 4
highest_held_title_tier = tier_kingdom
}
modifier = {
add = -20
is_councillor_of = root
}
modifier = {
add = 2
has_trait = arrogant
}
modifier = {
add = 2
has_trait = ambitious
}
modifier = {
add = 10
has_relation_friend = root
}
modifier = {
add = 20
has_relation_best_friend = root
}
modifier = {
add = 30
has_relation_lover = root
}
modifier = {
add = 40
has_relation_soulmate = root
}
}
hidden_effect = {
random_list = {
2 = {
trigger = { has_any_court_position = no }
save_scope_as = vassal
court_event_character_flag_effect = yes
}
2 = {
trigger = {
any_close_family_member = { hold_court_8090_can_move_trigger = yes }
}
save_scope_as = vassal_advocate
court_event_character_flag_effect = yes
ordered_close_family_member = {
limit = { hold_court_8090_can_move_trigger = yes }
save_scope_as = vassal
court_event_character_flag_effect = yes
}
}
}
}
}
scope:vassal = {
court_position_generator_effect = { VAR = target EMPLOYER = root }
court_position_generator_effect = { VAR = backup EMPLOYER = root }
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Grant desired position
name = {
trigger = { exists = scope:old_holder } # Replace
text = hold_court.8090.b
}
name = { # Lady-in-Waiting Soulmate
trigger = {
scope:vassal.var:target_court_position = flag:lady_in_waiting
has_relation_soulmate = scope:vassal
}
text = hold_court.8090.a.lady_in_waiting_soulmate
}
name = { # Lady-in-Waiting Lover
trigger = {
scope:vassal.var:target_court_position = flag:lady_in_waiting
has_relation_lover = scope:vassal
}
text = hold_court.8090.a.lady_in_waiting_lover
}
name = { # Bodyguard Soulmate
trigger = {
OR = {
scope:vassal.var:target_court_position = flag:bodyguard
scope:vassal.var:target_court_position = flag:akolouthos
}
has_relation_soulmate = scope:vassal
}
text = hold_court.8090.a.bodyguard_soulmate
}
name = { # Bodyguard Lover
trigger = {
OR = {
scope:vassal.var:target_court_position = flag:bodyguard
scope:vassal.var:target_court_position = flag:akolouthos
}
has_relation_lover = scope:vassal
}
text = hold_court.8090.a.bodyguard_lover
}
name = { # Default
trigger = { always = yes }
text = hold_court.8090.a
}
trigger = { exists = scope:vassal.var:target_court_position }
court_position_generator_assignment_effect = { VAR = target CANDIDATE = scope:vassal EMPLOYER = root }
if = {
limit = {
NOT = { exists = scope:vassal_advocate }
}
if = {
limit = { exists = scope:vassal_advocate }
hold_court_8090_hook_effect = { CHAR = scope:vassal_advocate }
scope:vassal_advocate = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 15
}
}
}
}
else = {
hold_court_8090_hook_effect = { CHAR = scope:vassal }
}
scope:vassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
if = {
limit = {
OR = {
has_relation_lover = scope:vassal
has_relation_soulmate = scope:vassal
}
OR = {
scope:vassal.var:target_court_position = flag:bodyguard
scope:vassal.var:target_court_position = flag:akolouthos
scope:vassal.var:target_court_position = flag:lady_in_waiting
}
}
had_sex_with_effect = {
CHARACTER = scope:vassal
PREGNANCY_CHANCE = pregnancy_chance
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
}
modifier = { #Weight up.
add = 15
has_relation_friend = scope:vassal
}
modifier = { #Weight up.
add = 30
has_relation_best_friend = scope:vassal
}
modifier = { #Weight up.
add = 45
has_relation_lover = scope:vassal
}
modifier = { #Weight up.
add = 60
has_relation_soulmate = scope:vassal
}
}
}
option = { # Grant some other unclaimed position
name = hold_court.8090.c
trigger = { exists = scope:vassal.var:backup_court_position }
show_unlock_reason = no
court_position_generator_assignment_effect = { VAR = backup CANDIDATE = scope:vassal EMPLOYER = root }
if = {
limit = { exists = scope:vassal_advocate }
scope:vassal_advocate = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 5
}
}
}
scope:vassal = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
stress_impact = {
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 2
ai_energy = 1
ai_compassion = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = lazy
}
}
}
option = { # Offer bad role
name = {
text = hold_court.8090.d.advocate
trigger = { exists = scope:vassal_advocate }
}
name = {
text = hold_court.8090.d
trigger = {
NOT = { exists = scope:vassal_advocate }
}
}
trigger = {
OR = {
AND = {
has_imprisonment_reason = scope:vassal
can_appoint_char_to_court_position = {
CHAR = scope:vassal
COURT_POS = executioner_court_position
}
NOR = {
scope:vassal.var:target_court_position ?= flag:executioner
scope:vassal.var:backup_court_position ?= flag:executioner
}
}
AND = {
can_appoint_char_to_court_position = {
CHAR = scope:vassal
COURT_POS = court_jester_court_position
}
NOR = {
scope:vassal.var:target_court_position ?= flag:court_jester
scope:vassal.var:backup_court_position ?= flag:court_jester
}
}
AND = {
can_appoint_char_to_court_position = {
CHAR = scope:vassal
COURT_POS = food_taster_court_position
}
NOR = {
scope:vassal.var:target_court_position ?= flag:food_taster
scope:vassal.var:backup_court_position ?= flag:food_taster
}
}
}
}
scope:vassal = {
if = {
limit = {
NOR = {
is_vassal_of = root
is_courtier_of = root
employer = root
}
}
hidden_effect = { set_employer = root }
}
}
if = {
limit = { # Executioner
can_appoint_char_to_court_position = {
CHAR = scope:vassal
COURT_POS = executioner_court_position
}
NOR = {
scope:vassal.var:target_court_position = flag:executioner
scope:vassal.var:backup_court_position = flag:executioner
}
}
court_position_grant_effect = {
EMPLOYER = root
POS = executioner
CANDIDATE = scope:vassal
}
if = {
limit = {
NOT = { has_imprisonment_reason = scope:vassal }
}
stress_impact = {
just = medium_stress_impact_gain
}
}
}
else_if = { # Jester
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:vassal
COURT_POS = court_jester_court_position
}
NOR = {
scope:vassal.var:target_court_position = flag:court_jester
scope:vassal.var:backup_court_position = flag:court_jester
}
}
court_position_grant_effect = {
EMPLOYER = root
POS = court_jester
CANDIDATE = scope:vassal
}
stress_impact = {
just = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
}
}
else_if = { # Taster
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:vassal
COURT_POS = food_taster_court_position
}
NOR = {
scope:vassal.var:target_court_position = flag:food_taster
scope:vassal.var:backup_court_position = flag:food_taster
}
}
court_position_grant_effect = {
EMPLOYER = root
POS = food_taster
CANDIDATE = scope:vassal
}
stress_impact = {
just = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
}
}
if = {
limit = { exists = scope:vassal_advocate }
scope:vassal_advocate = {
add_opinion = {
modifier = insulted_opinion
target = root
opinion = -10
}
}
}
scope:vassal = {
if = {
limit = { has_court_position = executioner_court_position }
root = { consume_imprisonment_reasons = scope:vassal }
}
if = {
limit = { has_relation_friend = root }
remove_relation_friend = root
}
add_opinion = {
modifier = insulted_opinion
target = root
opinion = -15
}
}
ai_chance = {
base = 100
modifier = { #Weight up.
add = 15
has_imprisonment_reason = scope:vassal
has_trait = just
}
modifier = { #Weight up.
add = 15
NOT = { has_imprisonment_reason = scope:vassal }
has_trait = arbitrary
}
}
}
option = { # Refuse
name = {
text = hold_court.8090.e.advocate
trigger = { exists = scope:vassal_advocate }
}
name = {
text = hold_court.8090.e
trigger = {
NOT = { exists = scope:vassal_advocate }
}
}
if = {
limit = { exists = scope:vassal_advocate }
scope:vassal_advocate = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
}
scope:vassal = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -0.5
}
}
}
after = {
scope:vassal = {
clear_court_event_participation = yes
remove_variable = target_court_position
remove_variable = backup_court_position
}
if = {
limit = { exists = scope:vassal_advocate }
scope:vassal_advocate = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# A Child of the Court
# by Joe Parkin
# 8100
##################################################
scripted_trigger hold_court_8100_child_trigger = {
has_court_event_flag = no
is_available_ai_child = yes # Children only
age < 14 # Not already almost done with education, sets time which must be invested to get rewards
NOT = { is_child_of = root } # Is not your child
NOT = { has_relation_ward = root } # Is not already a ward of the player
NOT = {
root = { has_strong_hook = prev } # prev = scope:ward
}
trigger_if = {
limit = { is_close_or_extended_family_of = root } # If related to the player, must be a nibling or great nibling
OR = {
AND = {
exists = root.father
OR = {
is_grandchild_of = root.father
is_great_grandchild_of = root.father
}
}
AND = {
exists = root.mother
OR = {
is_grandchild_of = root.mother
is_great_grandchild_of = root.mother
}
}
}
}
faith = root.faith # Has the same faith as the player
trigger_if = {
limit = {
faith = { has_doctrine = doctrine_gender_male_dominated } # If male dominated, must be no father
}
OR = {
NOT = { exists = father }
father = {
OR = {
is_alive = no
is_imprisoned = yes
}
}
}
NOR = {
AND = {
is_courtier_of = root
mother ?= { is_courtier_of = root }
}
AND = {
is_courtier_of = root
father ?= { is_courtier_of = root }
}
}
}
trigger_if = {
limit = {
faith = { has_doctrine = doctrine_gender_female_dominated } # If female dominated, must be no mother
}
OR = {
NOT = { exists = mother }
mother = {
OR = {
is_alive = no
is_imprisoned = yes
}
}
}
}
}
scripted_trigger hold_court_8100_parent_trigger = { # is a parent eligible to advocate?
this != root
OR = {
is_alive = yes
is_imprisoned = no
}
has_court_event_flag = no
is_available_ai_adult = yes
OR = {
employer = root
AND = {
exists = scope:ward_employer
employer = scope:ward_employer
}
}
}
scripted_trigger hold_court_8100_adopt_trigger = { # is someone disadvantaged by adoption?
OR = {
is_child_of = root
AND = {
is_spouse_of = root
root = {
any_child = {
any_parent = { this = scope:advocate }
}
}
}
}
}
scripted_effect hold_court_8100_root_effect = { # make root the guardian
hidden_effect = {
if = {
limit = {
employer != root
}
set_employer = root
}
}
set_relation_guardian = root
set_variable = {
name = hold_court_8100_fosterer
value = root
years = 17
}
root = {
if = {
limit = {
NOT = {
scope:ward = { is_close_family_of = root }
}
}
change_current_court_grandeur = medium_court_grandeur_gain
}
}
}
scripted_effect hold_court_8100_guardian_effect = { # make scope:guardian the guardian
hidden_effect = {
if = {
limit = {
employer != scope:guardian.employer
}
set_employer = scope:guardian.employer
}
}
set_relation_guardian = scope:guardian
root = {
if = {
limit = {
NOT = {
scope:ward = { is_close_family_of = root }
}
}
change_current_court_grandeur = minor_court_grandeur_gain
}
}
}
scripted_effect hold_court_8100_root_or_guardian_effect = { # make root guardian, or scope:guardian if not
if = {
limit = {
root = { num_of_relation_ward < 2 }
}
hold_court_8100_root_effect = yes
}
else = { hold_court_8100_guardian_effect = yes }
}
# A parent wants you to be their child's ward
hold_court.8100 = {
type = court_event
title = hold_court.8100.t
desc = {
desc = hold_court.8100.desc.intro
first_valid = {
triggered_desc = {
trigger = {
exists = scope:ward_employer
scope:ward_employer != root
}
desc = hold_court.8100.desc.vassal
}
desc = hold_court.8100.desc.court
}
desc = hold_court.8100.desc.body
first_valid = {
triggered_desc = {
trigger = {
scope:ward = { is_close_or_extended_family_of = root }
}
desc = hold_court.8100.desc.interest_family
}
triggered_desc = {
trigger = {
scope:ward = {
is_landed_or_landless_administrative = yes
OR = {
AND = {
is_female = yes
faith = { has_doctrine = doctrine_gender_male_dominated }
}
AND = {
is_female = no
faith = { has_doctrine = doctrine_gender_female_dominated }
}
}
}
}
desc = hold_court.8100.desc.interest_marriage
}
triggered_desc = {
trigger = {
scope:ward = { is_landed_or_landless_administrative = yes }
}
desc = hold_court.8100.desc.interest_alliance
}
desc = hold_court.8100.desc.interest_fallback
}
}
theme = realm
override_background = { reference = throne_room }
lower_left_portrait = scope:ward_employer
lower_right_portrait = scope:guardian
court_scene = {
button_position_character = scope:advocate
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:advocate = {
group = petitioners_group
animation = beg
}
scope:ward = {
group = petitioners_group
animation = sadness
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
NOT = {
any_courtier = {
has_variable = hold_court_8100_fosterer
var:hold_court_8100_fosterer = root
}
}
trigger_if = { # There is a parentless child at court
limit = {
any_courtier = { hold_court_8100_child_trigger = yes }
}
any_courtier = {
hold_court_8100_child_trigger = yes
save_temporary_scope_as = ward_temp
}
}
trigger_else = {
any_vassal = {
any_courtier = {
hold_court_8100_child_trigger = yes
save_temporary_scope_as = ward_temp
}
}
}
OR = {
num_of_relation_ward < 2
any_courtier = { # Guardian
has_court_event_flag = no
is_available_ai_adult = yes
num_of_relation_ward < 2
NOT = { is_parent_of = scope:ward_temp }
save_temporary_scope_as = compare_character
scope:ward_temp = { has_ward_guardian_education_match_compare_character_trigger = yes } # same education
}
}
any_courtier = { # Advocate backup
has_court_event_flag = no
is_available_ai_adult = yes
NOT = { is_parent_of = scope:ward_temp }
trigger_if = {
limit = { exists = scope:compare_character }
this != scope:compare_character
}
}
}
weight_multiplier = {
base = 1
# Shares education focus of player
modifier = {
add = 1
any_courtier = {
hold_court_8100_child_trigger = yes
root = { save_temporary_scope_as = compare_character }
has_ward_guardian_education_match_compare_character_trigger = yes # same education interest
}
}
modifier = {
add = 1
any_vassal = {
any_courtier = {
hold_court_8100_child_trigger = yes
root = { save_temporary_scope_as = compare_character }
has_ward_guardian_education_match_compare_character_trigger = yes # same education interest
}
}
}
# Has no guardian
modifier = {
add = 2
any_courtier = {
hold_court_8100_child_trigger = yes
num_of_relation_guardian = 0
}
}
modifier = {
add = 2
any_vassal = {
any_courtier = {
hold_court_8100_child_trigger = yes
num_of_relation_guardian = 0
}
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
every_courtier = {
limit = { hold_court_8100_child_trigger = yes }
add_to_list = hold_court_8100_list
}
every_vassal = {
every_courtier = {
limit = { hold_court_8100_child_trigger = yes }
add_to_list = hold_court_8100_list
}
}
random_in_list = {
list = hold_court_8100_list
weight = {
base = 1
# Shares education focus of root
modifier = {
add = 10
root = { save_temporary_scope_as = compare_character }
has_ward_guardian_education_match_compare_character_trigger = yes # same education interest
}
# Has no guardian
modifier = {
add = 2
num_of_relation_guardian = 0
}
# Not a more suitable ward
modifier = {
add = 20
any_sibling = {
count = all
hold_court_8100_child_trigger = yes
OR = {
AND = {
root = { save_temporary_scope_as = compare_character }
has_ward_guardian_education_match_compare_character_trigger = yes # same education interest
}
age < prev.age # prev = scope:ward
}
}
}
# Related to root
modifier = {
add = 100
is_close_or_extended_family_of = root
}
# In root court
modifier = {
add = 25
employer = root
}
}
save_scope_as = ward
court_event_character_flag_effect = yes
if = {
limit = {
employer ?= {
this != root
}
}
employer = { save_scope_as = ward_employer }
}
}
random_courtier = { # Guardian
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
num_of_relation_ward < 2
NOT = { is_parent_of = scope:ward }
save_temporary_scope_as = compare_character
scope:ward = { has_ward_guardian_education_match_compare_character_trigger = yes } # same education
}
alternative_limit = {
has_court_event_flag = no
is_available_ai_adult = yes
num_of_relation_ward < 2
NOT = { is_parent_of = scope:ward }
}
save_scope_as = guardian
court_event_character_flag_effect = yes
}
scope:ward = {
if = {
limit = {
mother ?= { hold_court_8100_parent_trigger = yes }
}
mother = { save_scope_as = advocate }
}
else_if = {
limit = {
father ?= { hold_court_8100_parent_trigger = yes }
}
father = { save_scope_as = advocate }
}
else = {
root = {
random_courtier = { # Advocate backup
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
NOT = { is_parent_of = scope:ward }
trigger_if = {
limit = { exists = scope:guardian }
this != scope:guardian
}
}
weight = {
base = 1
modifier = {
factor = 10
OR = {
has_trait = compassionate
has_trait = generous
has_trait = just
has_trait = paranoid
has_trait = family_first
has_trait = gallant
has_trait = diligent
has_trait = lazy
}
}
modifier = {
factor = 50
is_close_family_of = scope:ward
}
}
save_scope_as = advocate
court_event_character_flag_effect = yes
}
}
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Become the child's guardian
name = hold_court.8100.a
trigger = { num_of_relation_ward < 2 }
highlight_portrait = root
scope:ward = {
hold_court_8100_root_effect = yes
custom_tooltip = hold_court.8100.hook.tt
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 20
}
}
scope:advocate = {
add_opinion = {
modifier = respect_opinion
target = root
opinion = 10
}
}
if = {
limit = { exists = scope:ward_employer }
scope:ward_employer = {
add_opinion = {
modifier = respect_opinion
target = root
opinion = 5
}
}
}
stress_impact = {
greedy = medium_stress_impact_gain
callous = medium_stress_impact_gain
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
ai_energy = 0.25
ai_greed = -0.25
}
modifier = { #Weight up.
add = 30
scope:ward = {
root = { save_temporary_scope_as = compare_character }
has_ward_guardian_education_match_compare_character_trigger = yes # same education interest
}
}
modifier = { #Weight up.
add = 30
scope:ward = { is_close_or_extended_family_of = root }
}
modifier = { #Weight down for stress.
add = -45
has_trait = greedy
}
modifier = { #Weight down for stress.
add = -30
has_trait = callous
}
modifier = { #Weight down for stress.
add = -15
has_trait = lazy
}
}
}
option = { # Find another guardian
name = hold_court.8100.b
trigger = { exists = scope:guardian }
highlight_portrait = scope:guardian
scope:ward = {
hold_court_8100_guardian_effect = yes
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
scope:advocate = {
if = {
limit = { is_close_family_of = root }
add_opinion = {
target = root
modifier = respect_opinion
opinion = 5
}
}
else = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
}
if = {
limit = { exists = scope:ward_employer }
scope:ward_employer = {
add_opinion = {
modifier = respect_opinion
target = root
opinion = 5
}
}
}
stress_impact = {
greedy = medium_stress_impact_gain
callous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.25
ai_greed = -0.25
}
modifier = { #Weight down for stress.
add = -30
has_trait = greedy
}
modifier = { #Weight down for stress.
add = -15
has_trait = callous
}
}
}
option = { # Adopt them
name = hold_court.8100.c
trigger = {
scope:ward = { is_lowborn = yes }
}
scope:ward = {
if = {
limit = {
can_add_hook = {
target = scope:ward
type = loyalty_hook
}
}
add_hook = {
target = scope:ward
type = loyalty_hook
}
}
hidden_effect = {
if = {
limit = {
employer != root
}
set_employer = root
}
}
set_relation_guardian = root
if = {
limit = {
root = { is_male = yes }
}
set_father = root
}
else = { set_mother = root }
set_house = root.house
add_opinion = {
modifier = grateful_child
target = root
opinion = 40
}
add_character_modifier = { modifier = hold_court_8100_adopted_modifier }
}
scope:advocate = {
if = {
limit = { hold_court_8100_adopt_trigger = yes }
add_opinion = {
target = root
modifier = envy_opinion
opinion = -20
}
}
else = {
add_opinion = {
modifier = respect_opinion
target = root
opinion = 20
}
}
}
if = {
limit = {
exists = scope:ward_employer
scope:ward_employer = {
NOT = { hold_court_8100_adopt_trigger = yes }
}
}
scope:ward_employer = {
add_opinion = {
modifier = respect_opinion
target = root
opinion = 10
}
}
}
every_child = {
custom = hold_court.8100.c.tt_child
limit = {
this != scope:ward
}
add_opinion = {
target = root
modifier = envy_opinion
opinion = -20
}
add_opinion = {
target = scope:ward
modifier = envy_opinion
opinion = -40
}
}
stress_impact = {
arrogant = medium_stress_impact_gain
callous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
ai_greed = -0.5
}
modifier = { #Weight up.
add = 50
AND = {
any_child = { count = 0 }
OR = {
can_have_children = no
AND = {
is_married = yes
primary_spouse = { can_have_children = no }
allowed_more_spouses = no
max_number_of_concubines = 0
}
}
}
}
modifier = { #Weight down.
add = -50
any_child = {
count > 0
this = root.primary_heir
}
}
modifier = { #Weight down.
add = -50
any_child = {
count > 2
}
}
modifier = { #Weight down for stress.
add = -30
has_trait = arrogant
}
modifier = { #Weight down for stress.
add = -30
has_trait = callous
}
modifier = {
factor = 0
is_adult = no
}
}
}
option = { # Pay their way
name = hold_court.8100.d
trigger = {
OR = {
scope:advocate.gold >= root.minor_gold_value
scope:ward.gold >= root.minor_gold_value
}
}
if = {
limit = { scope:ward.gold >= root.minor_gold_value }
scope:ward = {
pay_short_term_gold = {
target = root
gold = root.minor_gold_value
}
add_opinion = {
target = root
modifier = cruelty_opinion
opinion = -15
}
}
scope:advocate = {
add_opinion = {
target = root
modifier = cruelty_opinion
opinion = -10
}
}
}
else = {
scope:advocate = {
pay_short_term_gold = {
target = root
gold = root.minor_gold_value
}
add_opinion = {
target = root
modifier = angry_opinion
opinion = -15
}
}
scope:ward = {
add_opinion = {
target = root
modifier = cruelty_opinion
opinion = -10
}
}
}
if = {
limit = { exists = scope:ward_employer }
scope:ward_employer = {
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 5
}
}
}
if = {
limit = { num_of_relation_ward < 2 }
scope:ward = {
hidden_effect = {
if = {
limit = {
employer != root
}
set_employer = root
}
}
set_relation_guardian = root
set_variable = {
name = hold_court_8100_fosterer
value = root
years = 17
}
custom_tooltip = hold_court.8100.hook.tt
}
}
else = {
scope:ward = {
hidden_effect = {
if = {
limit = {
employer != scope:guardian.employer
}
set_employer = scope:guardian.employer
}
}
set_relation_guardian = scope:guardian
}
}
stress_impact = {
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -0.25
ai_greed = 0.5
}
modifier = { #Weight down for stress.
add = -30
has_trait = generous
}
}
}
option = { # Refuse
name = hold_court.8100.e
if = {
limit = {
NOT = {
scope:ward = { is_close_family_of = root }
}
}
change_current_court_grandeur = medium_court_grandeur_loss
}
scope:ward = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
scope:advocate = {
if = {
limit = { is_close_family_of = root }
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
else = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -10
}
}
}
if = {
limit = { exists = scope:ward_employer }
scope:ward_employer = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -1
}
modifier = { #Weight down for stress.
add = -30
has_trait = compassionate
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
}
}
after = {
scope:ward = {
clear_court_event_participation = yes
}
scope:guardian = {
clear_court_event_participation = yes
}
scope:advocate = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Serious Business
# by Joe Parkin
# 8110
##################################################
# A peasant comes to you with a very provincial problem
hold_court.8110 = {
type = court_event
title = hold_court.8110.t
desc = {
desc = hold_court.8110.desc
random_valid = {
desc = hold_court.8110.desc.affair
desc = hold_court.8110.desc.fence
desc = hold_court.8110.desc.goat
desc = hold_court.8110.desc.veg
desc = hold_court.8110.desc.drink
}
}
theme = realm
lower_center_portrait = cp:councillor_steward
lower_right_portrait = scope:executioner
court_scene = {
button_position_character = scope:peasant
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:peasant = {
group = petitioners_group
animation = happiness
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 20 }
trigger = {
any_held_title = {
title_tier = county
county = {
county_control > 80
any_county_province = { has_holding = yes }
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
## Since you take peasant administrative concerns seriously...
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
random_held_title = { # Find a place for loc
title_tier = county
limit = {
county = {
county_control > 80
any_county_province = { has_holding = yes }
}
}
random_county_province = {
limit = { has_holding = yes }
save_scope_as = peasant_holding
}
}
hidden_effect = { # Create peasants
create_character = {
template = servant_character
dynasty = none
location = root.capital_province
gender_female_chance = root_soldier_female_chance
trait = beauty_bad_2
save_scope_as = peasant
}
dummy_female = { save_scope_as = dummy_female }
dummy_male = { save_scope_as = dummy_male }
}
scope:peasant = {
court_event_character_flag_effect = yes
}
if = { # Save Steward if relevant
limit = {
exists = cp:councillor_steward
cp:councillor_steward = {
has_court_event_flag = no
is_available_ai_adult = yes
}
}
cp:councillor_steward = {
save_scope_as = steward
court_event_character_flag_effect = yes
}
}
if = { # Save Executioner if relevant
limit = {
employs_court_position = executioner_court_position
any_court_position_holder = {
type = executioner_court_position
has_court_event_flag = no
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = executioner_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
}
save_scope_as = executioner
court_event_character_flag_effect = yes
}
}
court_position_old_holder_effect = { POS = court_jester EMPLOYER = root } # Save Jester if relevant
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Hear them out
name = hold_court.8110.a
add_character_modifier = {
modifier = hold_court_8110_common_modifier
years = 10
}
stress_impact = {
base = medium_stress_impact_gain
lazy = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
impatient = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 0.25
ai_energy = 0.25
}
modifier = { #Weight down for stress.
add = -15
has_trait = lazy
}
modifier = { #Weight down for stress.
add = -30
has_trait = arrogant
}
modifier = { #Weight down for stress.
add = -30
has_trait = impatient
}
}
}
option = { # Steward handle it
name = hold_court.8110.b
trigger = { exists = scope:steward }
highlight_portrait = scope:steward
scope:steward = {
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -15
}
}
scope:peasant_holding.county = {
add_county_modifier = {
modifier = hold_court_8110_steward_modifier
years = 10
}
}
stress_impact = {
patient = medium_stress_impact_gain
diligent = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = -0.5
}
modifier = { #Weight down for stress.
add = -15
has_trait = patient
}
modifier = { #Weight down for stress.
add = -15
has_trait = diligent
}
}
}
option = { # Execute them
name = hold_court.8110.c
trigger = { exists = scope:executioner }
highlight_portrait = scope:executioner
add_tyranny = minor_tyranny_gain
add_dread = miniscule_dread_gain
scope:peasant = {
death = {
killer = scope:executioner
death_reason = death_execution
}
}
scope:peasant_holding.county = {
add_county_modifier = {
modifier = hold_court_8110_execute_modifier
years = 10
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -0.5
ai_compassion = -0.5
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
}
}
option = { # Make them a jester
name = hold_court.8110.d
scope:peasant = {
hidden_effect = { set_employer = root }
add_opinion = {
modifier = insult_opinion
target = root
opinion = -10
}
}
if = {
limit = { exists = scope:old_holder }
show_as_tooltip = {
appoint_court_position = {
recipient = scope:peasant
court_position = court_jester_court_position
}
}
hidden_effect = {
add_character_flag = temporary_court_position_cost_removal
replace_court_position = {
recipient = scope:peasant
holder = scope:old_holder
court_position = court_jester_court_position
}
remove_character_flag = temporary_court_position_cost_removal
}
}
else = {
if = {
limit = {
can_employ_court_position_type = court_jester_court_position
}
court_position_grant_effect = {
EMPLOYER = root
POS = court_jester
CANDIDATE = scope:peasant
}
}
}
scope:peasant_holding.county = {
add_county_modifier = {
modifier = hold_court_8110_jester_modifier
years = 10
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
humble = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_compassion = 0.25
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
modifier = { #Weight down for stress.
add = -15
has_trait = humble
}
}
}
option = { # Be done with it
name = hold_court.8110.e
add_character_modifier = {
modifier = hold_court_8110_haughty_modifier
years = 10
}
stress_impact = {
just = medium_stress_impact_gain
patient = medium_stress_impact_gain
humble = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 0.5
ai_boldness = -0.5
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
modifier = { #Weight down for stress.
add = -15
has_trait = patient
}
modifier = { #Weight down for stress.
add = -15
has_trait = humble
}
}
}
after = {
scope:peasant = {
clear_court_event_participation = yes
if = {
limit = {
is_alive = yes
NOT = { has_court_position = court_jester_court_position }
}
silent_disappearance_effect = yes
}
}
scope:steward ?= {
clear_court_event_participation = yes
}
scope:executioner ?= {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Evangelical Backlash
# by Joe Parkin
# 8120
##################################################
scripted_trigger hold_court_8120_syncretic_faith_trigger = {
scope:peasant.religion != root.religion
OR = {
AND = { # Eastern
scope:peasant.faith.religion = { is_in_family = rf_eastern }
faith = { has_doctrine = tenet_eastern_syncretism }
}
AND = { # Pagan
scope:peasant.faith = { has_doctrine_parameter = unreformed }
faith = { has_doctrine = tenet_unreformed_syncretism }
}
AND = { # Christian
OR = {
scope:peasant.religion = religion:eastern_orthodox_religion
scope:peasant.religion = religion:catholic_religion
scope:peasant.religion = religion:protestant_religion
}
faith = { has_doctrine = tenet_christian_syncretism }
}
AND = { # Islam
scope:peasant.religion = religion:islam_religion
faith = { has_doctrine = tenet_islamic_syncretism }
}
AND = { # Judaism
scope:peasant.religion = religion:judaism_religion
faith = { has_doctrine = tenet_jewish_syncretism }
}
}
}
scripted_effect hold_court_8120_stop_effect = {
set_variable = {
name = hold_court_8120_religion_block
value = scope:conversion_target.faith
years = 15
}
add_character_modifier = {
modifier = hold_court_8120_tolerance_modifier
years = 10
}
scope:bishop = {
add_opinion = {
modifier = impious_opinion
target = root
opinion = -15
}
set_council_task = { task_type = task_religious_relations }
}
scope:conversion_target = {
add_county_modifier = {
modifier = hold_court_8120_stopped_modifier
years = 15
}
}
custom_tooltip = hold_court.8120.a.tt_conversion
stress_impact = {
zealous = medium_stress_impact_gain
callous = medium_stress_impact_gain
}
}
# Locals ask you to stop trying to convert them
hold_court.8120 = {
type = court_event
title = hold_court.8120.t
desc = {
desc = hold_court.8120.desc
first_valid = {
triggered_desc = {
trigger = { scope:peasant.religion = root.religion }
desc = hold_court.8120.desc.same_religion
}
triggered_desc = {
trigger = { scope:peasant.culture = root.culture }
desc = hold_court.8120.desc.same_culture
}
desc = hold_court.8120.desc.other
}
}
theme = realm
lower_right_portrait = scope:bishop
court_scene = {
button_position_character = scope:peasant
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:peasant = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 20 }
trigger = {
NOT = { has_character_flag = has_had_conversion_event }
top_liege = this
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
has_court_event_flag = no
is_available_ai_adult = yes
}
any_held_county = { is_target_of_council_task = task_conversion }
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
add_character_flag = {
flag = has_had_conversion_event
years = 15
}
cp:councillor_court_chaplain = {
save_scope_as = bishop
court_event_character_flag_effect = yes
}
random_held_county = {
limit = { is_target_of_council_task = task_conversion }
save_scope_as = conversion_target
}
create_character = {
template = servant_character
dynasty = none
location = root.capital_province
gender_female_chance = root_soldier_female_chance
culture = scope:conversion_target.culture
faith = scope:conversion_target.faith
save_scope_as = peasant
}
scope:peasant = {
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Stop the priests - unsyncretic
name = hold_court.8120.a
trigger = { hold_court_8120_syncretic_faith_trigger = no }
if = {
limit = {
faith = {
faith_hostility_level = {
target = scope:peasant.faith
value >= faith_evil_level
}
}
}
add_piety = medium_piety_loss
}
else_if = {
limit = {
faith = {
faith_hostility_level = {
target = scope:peasant.faith
value >= faith_hostile_level
}
}
}
add_piety = minor_piety_loss
}
else_if = {
limit = {
faith = {
faith_hostility_level = {
target = scope:peasant.faith
value >= faith_astray_level
}
}
}
add_piety = miniscule_piety_loss
}
hold_court_8120_stop_effect = yes
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
ai_zeal = -1
}
modifier = { #Weight down for stress.
add = -30
has_trait = callous
}
modifier = { #Weight down for stress.
add = -30
has_trait = zealous
}
}
}
option = { # Stop the priests - syncretic
name = hold_court.8120.b
trigger = { hold_court_8120_syncretic_faith_trigger = yes }
if = {
limit = {
AND = {
scope:peasant.faith.religion = { is_in_family = rf_eastern }
faith = { has_doctrine = tenet_eastern_syncretism }
}
}
custom_tooltip = hold_court.8120.b.tt_eastern # Eastern
}
else_if = {
limit = {
AND = {
scope:peasant.faith = { has_doctrine_parameter = unreformed }
faith = { has_doctrine = tenet_unreformed_syncretism }
}
}
custom_tooltip = hold_court.8120.b.tt_pagan # Pagan
}
else_if = {
limit = {
AND = {
OR = {
scope:peasant.religion = religion:eastern_orthodox_religion
scope:peasant.religion = religion:catholic_religion
scope:peasant.religion = religion:protestant_religion
}
faith = { has_doctrine = tenet_christian_syncretism }
}
}
custom_tooltip = hold_court.8120.b.tt_christianity # Christian
}
else_if = {
limit = {
AND = {
scope:peasant.religion = religion:islam_religion
faith = { has_doctrine = tenet_islamic_syncretism }
}
}
custom_tooltip = hold_court.8120.b.tt_islam # Islam
}
else = { custom_tooltip = hold_court.8120.b.tt_judaism } # Judaism
add_piety = medium_piety_gain
hold_court_8120_stop_effect = yes
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
ai_zeal = -1
}
modifier = { #Weight down for stress.
add = -30
has_trait = callous
}
modifier = { #Weight down for stress.
add = -30
has_trait = zealous
}
}
}
option = { # Demand religious taxes
name = hold_court.8120.c
add_treasury_or_gold = minor_treasury_or_gold_value
if = {
limit = {
NOT = {
faith = {
OR = {
has_doctrine = tenet_tax_nonbelievers
has_doctrine = special_doctrine_jizya
}
}
}
}
custom_tooltip = hold_court.8120.c.tt_tenet
stress_impact = {
honest = medium_stress_impact_gain
zealous = medium_stress_impact_gain
}
}
else = {
add_piety = minor_piety_gain
stress_impact = {
cynical = medium_stress_impact_gain
}
}
stress_impact = {
generous = medium_stress_impact_gain
}
set_variable = {
name = hold_court_8120_religion_block
value = scope:conversion_target.faith
years = 15
}
scope:bishop = {
if = {
limit = {
faith = {
OR = {
has_doctrine = tenet_tax_nonbelievers
has_doctrine = special_doctrine_jizya
}
}
}
add_opinion = {
modifier = pious_opinion
target = root
opinion = 5
}
}
else = {
add_opinion = {
modifier = impious_opinion
target = root
opinion = -10
}
}
set_council_task = { task_type = task_religious_relations }
}
scope:conversion_target = {
add_county_modifier = {
modifier = hold_court_8120_tax_modifier
years = 15
}
custom_tooltip = hold_court.8120.a.tt_conversion
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 2
ai_zeal = 1
}
modifier = { #Weight up for stress.
add = 30
NOT = {
faith = {
OR = {
has_doctrine = tenet_tax_nonbelievers
has_doctrine = special_doctrine_jizya
}
}
}
OR = {
has_trait = cynical
has_trait = deceitful
}
}
modifier = { #Weight down for stress.
add = -30
NOT = {
faith = {
OR = {
has_doctrine = tenet_tax_nonbelievers
has_doctrine = special_doctrine_jizya
}
}
}
OR = {
has_trait = honest
has_trait = zealous
}
}
modifier = { #Weight down for stress.
add = -15
faith = {
OR = {
has_doctrine = tenet_tax_nonbelievers
has_doctrine = special_doctrine_jizya
}
}
has_trait = cynical
}
modifier = { #Weight down for stress.
add = -30
has_trait = generous
}
}
}
option = { # Execute
name = hold_court.8120.d
if = {
limit = {
faith = {
faith_hostility_level = {
target = scope:peasant.faith
value >= faith_evil_level
}
}
}
add_piety = major_piety_gain
}
else_if = {
limit = {
faith = {
faith_hostility_level = {
target = scope:peasant.faith
value >= faith_hostile_level
}
}
}
add_piety = medium_piety_gain
}
else_if = {
limit = {
faith = {
faith_hostility_level = {
target = scope:peasant.faith
value >= faith_astray_level
}
}
}
add_piety = minor_piety_gain
}
add_dread = minor_dread_gain
add_character_modifier = {
modifier = hold_court_8120_terror_modifier
years = 10
}
scope:peasant = {
death = {
killer = root
death_reason = death_execution
}
}
scope:bishop = {
add_opinion = {
modifier = pious_opinion
target = root
opinion = 20
}
}
stress_impact = {
cynical = medium_stress_impact_gain
compassionate = massive_stress_impact_gain
torturer = medium_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 2
ai_compassion = -1
}
modifier = { #Weight down for stress.
add = -30
has_trait = cynical
}
modifier = { #Weight down for stress.
add = -30
has_trait = compassionate
}
modifier = { #Weight up for stress.
add = 15
has_trait = torturer
}
}
}
option = { # Refuse
name = hold_court.8120.e
scope:bishop = {
add_opinion = {
modifier = pious_opinion
target = root
opinion = 10
}
}
scope:conversion_target = {
add_county_modifier = {
modifier = hold_court_8120_refused_modifier
years = 20
}
}
stress_impact = {
callous = medium_stress_impact_gain
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = callous
}
modifier = { #Weight down for stress.
add = -15
has_trait = cynical
}
}
}
after = {
scope:bishop = {
clear_court_event_participation = yes
}
scope:peasant = {
clear_court_event_participation = yes
if = {
limit = { is_alive = yes }
silent_disappearance_effect = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Cultural Pride
# by Joe Parkin
# 8130
##################################################
scripted_trigger hold_court_8130_county_trigger = {
NOR = {
has_county_modifier = hold_court_8120_tax_modifier
has_county_modifier = hold_court_8120_stopped_modifier
has_county_modifier = hold_court_8120_refused_modifier
has_county_modifier = hold_court_8130_service_modifier
}
}
scripted_effect hold_court_8130_stop_effect = {
set_variable = {
name = hold_court_8130_culture_block
value = scope:conversion_target.culture
years = 15
}
add_character_modifier = {
modifier = hold_court_8130_tolerance_modifier
years = 10
}
scope:steward = {
if = {
limit = {
culture != scope:conversion_target.culture
}
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
else = {
add_opinion = {
modifier = respect_opinion
target = root
opinion = 10
}
}
set_council_task = { task_type = task_collect_taxes }
}
scope:conversion_target = {
add_county_modifier = {
modifier = hold_court_8120_stopped_modifier
years = 15
}
custom_tooltip = hold_court.8120.a.tt_conversion
}
stress_impact = {
arrogant = medium_stress_impact_gain
}
}
# Locals ask you to stop trying to integrate them
hold_court.8130 = {
type = court_event
title = hold_court.8130.t
desc = {
desc = hold_court.8130.desc
first_valid = {
triggered_desc = {
trigger = {
scope:peasant.culture = { has_same_culture_language = root.culture }
}
desc = hold_court.8130.desc.same_language
}
triggered_desc = {
trigger = {
scope:peasant.culture = { has_same_culture_heritage = root.culture }
}
desc = hold_court.8130.desc.same_heritage
}
triggered_desc = {
trigger = {
scope:peasant.culture = { has_same_culture_ethos = root.culture }
}
desc = hold_court.8130.desc.same_ethos
}
desc = hold_court.8130.desc.other
}
}
theme = realm
lower_right_portrait = scope:steward
court_scene = {
button_position_character = scope:peasant
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:peasant = {
group = petitioners_group
animation = beg
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
NOT = { has_character_flag = has_had_conversion_event }
top_liege = this
exists = cp:councillor_steward
cp:councillor_steward = {
has_court_event_flag = no
is_available_ai_adult = yes
}
any_held_county = {
is_target_of_council_task = task_promote_culture
hold_court_8130_county_trigger = yes
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
add_character_flag = {
flag = has_had_conversion_event
years = 5
}
cp:councillor_steward = {
save_scope_as = steward
court_event_character_flag_effect = yes
}
random_held_county = {
limit = {
is_target_of_council_task = task_promote_culture
hold_court_8130_county_trigger = yes
}
save_scope_as = conversion_target
}
create_character = {
template = servant_character
dynasty = none
location = root.capital_province
gender_female_chance = root_soldier_female_chance
culture = scope:conversion_target.culture
faith = scope:conversion_target.faith
save_scope_as = peasant
}
scope:peasant = {
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Stop
name = hold_court.8130.a
trigger = {
NOT = {
root.culture = { has_cultural_pillar = ethos_egalitarian }
}
}
add_prestige = minor_prestige_loss
hold_court_8130_stop_effect = yes
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 1
}
modifier = { #Weight down for stress.
add = -60
has_trait = arrogant
}
}
}
option = { # Stop - but egalitarian!
name = hold_court.8130.b
trigger = {
root.culture = { has_cultural_pillar = ethos_egalitarian }
}
hold_court_8130_stop_effect = yes
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 1
ai_zeal = -2
}
modifier = { #Weight down for stress.
add = -60
has_trait = arrogant
}
}
}
option = { # Demand
name = hold_court.8130.c
custom_tooltip = hold_court.8130.c.tt_service
hidden_effect = {
create_character = {
gender_female_chance = root_soldier_female_chance
location = root.capital_province
template = new_warrior_character
faith = scope:conversion_target.faith
culture = scope:conversion_target.culture
save_scope_as = soldier
}
send_interface_message = {
type = event_guest_neutral
title = hold_court.8130.c.tt_service_title
right_icon = scope:soldier
hidden_effect = {
scope:soldier = { set_employer = root }
}
scope:soldier = {
add_opinion = {
modifier = kindness_opinion
target = root
opinion = 15
}
}
}
}
set_variable = {
name = hold_court_8130_culture_block
value = scope:conversion_target.culture
years = 15
}
scope:steward = {
if = {
limit = {
culture != scope:conversion_target.culture
}
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
else = {
add_opinion = {
modifier = respect_opinion
target = root
opinion = 10
}
}
set_council_task = { task_type = task_collect_taxes }
}
scope:conversion_target = {
add_county_modifier = {
modifier = hold_court_8130_service_modifier
years = 15
}
custom_tooltip = hold_court.8120.a.tt_conversion
}
stress_impact = {
generous = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = { #Weight down for stress.
add = -30
has_trait = generous
}
modifier = { #Weight down for stress.
add = -30
has_trait = arrogant
}
}
}
option = { # Execute
name = hold_court.8130.d
trigger = {
OR = {
has_trait = arrogant
has_trait = torturer
has_trait = sadistic
has_trait = callous
}
}
trait = arrogant
trait = torturer
trait = sadistic
trait = callous
add_dread = minor_dread_gain
add_character_modifier = {
modifier = hold_court_8130_terror_modifier
years = 10
}
scope:peasant = {
death = {
killer = root
death_reason = death_execution
}
}
scope:steward = {
if = {
limit = {
culture != scope:conversion_target.culture
}
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 20
}
}
else = {
add_opinion = {
modifier = cruelty_opinion
target = root
opinion = -10
}
}
}
stress_impact = {
torturer = medium_stress_impact_loss
compassionate = massive_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 2
ai_compassion = -1
}
modifier = { #Weight up for stress.
add = 15
has_trait = torturer
}
modifier = { #Weight down for stress.
add = -30
has_trait = compassionate
}
}
}
option = { # Refuse
name = hold_court.8130.e
scope:steward = {
if = {
limit = {
culture != scope:conversion_target.culture
}
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 10
}
}
else = {
add_opinion = {
modifier = hurt_opinion
target = root
opinion = -5
}
}
}
scope:conversion_target = {
add_county_modifier = {
modifier = hold_court_8120_refused_modifier
years = 20
}
}
stress_impact = {
callous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = callous
}
}
}
after = {
scope:steward = {
clear_court_event_participation = yes
}
scope:peasant = {
clear_court_event_participation = yes
if = {
limit = { is_alive = yes }
silent_disappearance_effect = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Puppy Patronage
# by Joe Parkin
# 8140 - 142
##################################################
# Master of the hunt brings a pup
hold_court.8140 = {
type = court_event
title = hold_court.8140.t
desc = hold_court.8140.desc
theme = realm
court_scene = {
button_position_character = scope:huntmaster
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:huntmaster = {
group = petitioners_group
animation = admiration
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
any_court_position_holder = {
type = master_of_hunt_court_position
has_court_event_flag = no
is_available_ai_adult = yes
NOR = {
has_any_bad_relationship_with_root_trigger = yes
any_owned_story = { type = story_cycle_pet_cat }
has_character_modifier = cat_story_modifier
}
}
NOR = {
house = { has_house_modifier = hold_court_8140_house_modifier }
any_owned_story = { type = story_cycle_pet_dog }
any_owned_story = { type = story_cycle_pet_cat }
has_character_modifier = dog_story_modifier
has_character_modifier = cat_story_modifier
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
random_court_position_holder = {
type = master_of_hunt_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
NOR = {
has_any_bad_relationship_with_root_trigger = yes
any_owned_story = { type = story_cycle_pet_cat }
has_character_modifier = cat_story_modifier
}
}
save_scope_as = huntmaster
court_event_character_flag_effect = yes
}
save_scope_as = pup_house_ruler
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Invest in the kennel
name = hold_court.8140.a
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= massive_treasury_or_gold_value
}
}
remove_treasury_or_gold = major_treasury_or_gold_value
house = {
add_house_modifier = {
modifier = hold_court_8140_house_modifier
years = 30
}
custom_tooltip = hold_court.8140.a.tt
every_house_member = {
limit = {
is_ai = no
is_landed_or_landless_administrative = yes
this != root
}
trigger_event = hold_court.8141
}
set_variable = {
name = hold_court_8140_pup_founder
value = root
}
}
scope:huntmaster = {
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 15
}
progress_towards_friend_effect = {
REASON = friend_invested_in_kennel
CHARACTER = root
OPINION = 0
}
}
start_dog_story_cycle_effect = yes
change_current_court_grandeur = medium_court_grandeur_gain
stress_impact = {
lifestyle_hunter = minor_stress_impact_loss
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.25
ai_greed = -0.5
ai_boldness = 1
ai_energy = 2
}
modifier = { #Weight up.
add = 30
has_trait = lifestyle_hunter
}
modifier = { #Weight down for stress.
add = -15
has_trait = lazy
}
}
}
option = { # Just take the pup
name = hold_court.8140.b
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= medium_gold_value
}
}
remove_short_term_gold = minor_gold_value
start_dog_story_cycle_effect = yes
scope:huntmaster = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
stress_impact = {
callous = medium_stress_impact_gain
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 1
ai_greed = -0.25
ai_energy = 1
}
modifier = { #Weight up.
add = 15
has_trait = lifestyle_hunter
}
modifier = { #Weight down for stress.
add = -15
has_trait = callous
}
modifier = { #Weight down for stress.
add = -15
has_trait = lazy
}
}
}
option = { # Cat's are better tho
name = hold_court.8140.c
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_gold >= medium_gold_value
}
}
remove_short_term_gold = minor_gold_value
start_cat_story_cycle_effect = yes
scope:huntmaster = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -15
}
progress_towards_rival_effect = {
CHARACTER = root
REASON = rival_dogs_suck
OPINION = 0
}
}
if = {
limit = {
any_vassal_or_below = {
any_owned_story = { type = story_cycle_pet_cat }
}
}
every_vassal_or_below = {
limit = {
any_owned_story = { type = story_cycle_pet_cat }
}
add_opinion = {
modifier = respect_opinion
target = root
opinion = 10
}
}
}
stress_impact = {
diligent = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -1
ai_greed = -0.25
ai_energy = -1
}
modifier = { #Weight down for stress.
add = -15
has_trait = diligent
}
}
}
option = { # Refuse
name = hold_court.8140.d
scope:huntmaster = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
change_current_court_grandeur = minor_court_grandeur_loss
stress_impact = {
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 1
ai_compassion = -2
ai_energy = -2
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
}
}
after = {
scope:huntmaster = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
hold_court.8141 = { # Ping for non-AI house members
type = character_event
title = hold_court.8140.t
desc = hold_court.8141.desc
theme = realm
override_background = { reference = throne_room }
left_portrait = {
character = scope:pup_house_ruler
}
right_portrait = {
character = scope:huntmaster
animation = admiration
}
option = { # Yay puppos
name = hold_court.8141.a
show_as_tooltip = {
house = {
add_house_modifier = {
modifier = hold_court_8140_house_modifier
years = 30
}
custom_tooltip = hold_court.8140.a.tt
}
}
}
}
hold_court.8142 = { # Event on puppy adoption
type = character_event
title = hold_court.8142.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
house ?= { has_variable = hold_court_8140_pup_founder }
}
desc = hold_court.8142.desc
}
desc = hold_court.8142.desc_alternative
}
}
theme = realm
override_background = { reference = throne_room }
left_portrait = {
character = scope:pup_house_ruler
animation = happiness
}
immediate = {
if = {
limit = {
house ?= { has_variable = hold_court_8140_pup_founder }
}
house.var:hold_court_8140_pup_founder = { save_scope_as = pup_house_ruler }
}
else = {
save_scope_as = pup_house_ruler
}
}
option = { # Accept
name = hold_court.8142.a
start_dog_story_cycle_effect = yes
}
option = { # Change mind
name = hold_court.8142.b
add_gold = minor_gold_value
}
}
##################################################
# Contractual Compromise
# by Joe Parkin
# 8150
##################################################
scripted_trigger hold_court_8150_faction_trigger = {
exists = yes
NOT = { exists = faction_war }
faction_leader ?= {
has_court_event_flag = no
is_available_ai_adult = yes
is_vassal_of = root
government_has_flag = government_is_feudal
OR = {
vassal_contract_obligation_level_can_be_decreased = feudal_government_taxes
vassal_contract_obligation_level_can_be_decreased = feudal_government_levies
}
}
OR = {
faction_is_type = independence_faction
faction_is_type = liberty_faction
faction_is_type = claimant_faction
}
}
scripted_effect hold_court_8150_obligation_effect = {
hidden_effect = {
random_list = {
50 = {
trigger = { vassal_contract_obligation_level_can_be_decreased = feudal_government_taxes }
vassal_contract_decrease_obligation_level = feudal_government_taxes
}
50 = {
trigger = { vassal_contract_obligation_level_can_be_decreased = feudal_government_levies }
vassal_contract_decrease_obligation_level = feudal_government_levies
}
}
}
add_character_flag = {
flag = joining_faction_block
years = 5
}
}
# Leader of a faction offers you an out
hold_court.8150 = {
type = court_event
title = hold_court.8150.t
desc = {
desc = hold_court.8150.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:target_faction = {
any_faction_member = { count = 1 }
}
}
desc = hold_court.8150.desc.alone
}
triggered_desc = {
trigger = {
scope:target_faction = {
any_faction_member = { count <= 3 }
}
}
desc = hold_court.8150.desc.few
}
desc = hold_court.8150.desc.group
}
desc = hold_court.8150.desc.body
first_valid = {
triggered_desc = {
trigger = {
scope:target_faction = { faction_is_type = independence_faction }
}
desc = hold_court.8150.desc.independence
}
triggered_desc = {
trigger = {
scope:target_faction = { faction_is_type = liberty_faction }
}
desc = hold_court.8150.desc.liberty
}
triggered_desc = {
trigger = {
scope:target_faction = { faction_is_type = claimant_faction }
exists = scope:target_faction.special_character
scope:target_faction.faction_leader = scope:target_faction.special_character
}
desc = hold_court.8150.desc.claimant_self
}
triggered_desc = {
trigger = {
scope:target_faction = { faction_is_type = claimant_faction }
}
desc = hold_court.8150.desc.claimant
}
}
desc = hold_court.8150.desc.outro
}
theme = realm
court_scene = {
button_position_character = scope:target_faction.faction_leader
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:target_faction.faction_leader = {
group = petitioners_group
animation = disapproval
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
any_targeting_faction = { hold_court_8150_faction_trigger = yes }
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
any_targeting_faction = {
hold_court_8150_faction_trigger = yes
any_faction_member = { count >= 5 }
}
}
modifier = {
factor = 2
any_targeting_faction = {
hold_court_8150_faction_trigger = yes
faction_power >= faction_power_threshold
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
ordered_targeting_faction = {
limit = { hold_court_8150_faction_trigger = yes }
order_by = faction_power
save_scope_as = target_faction
faction_leader = {
court_event_character_flag_effect = yes
save_scope_as = targeted_factions_leader #Saving in order to be able to clear the flag.
}
}
if = {
limit = {
any_held_title = {
count > 1
title_tier = county
is_landless_type_title = no
}
}
ordered_held_title = {
title_tier = county
limit = {
this != root.capital_county
is_landless_type_title = no
}
order_by = {
value = 0
subtract = title_province.combined_building_level
}
save_scope_as = bribe_county
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Accept
name = hold_court.8150.a
change_current_court_grandeur = medium_court_grandeur_loss
scope:target_faction = {
if = { # Split effects for nicer tooltips
limit = {
any_faction_member = { count = 1 }
}
faction_leader = {
custom_tooltip = hold_court.8150.a.tt_single_all
hold_court_8150_obligation_effect = yes
}
}
else = {
every_faction_member = {
custom = hold_court.8150.a.tt_multiple_feudal_intro
limit = { government_has_flag = government_is_feudal }
custom_tooltip = hold_court.8150.a.tt_shared
hold_court_8150_obligation_effect = yes
}
}
destroy_faction = yes
}
stress_impact = {
arrogant = medium_stress_impact_gain
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -1
ai_boldness = -2
}
modifier = { #Weight down for stress.
add = -15
has_trait = arrogant
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
}
}
option = { # Arrest
name = hold_court.8150.b
imprison_character_effect = {
TARGET = scope:target_faction.faction_leader
IMPRISONER = root
}
scope:target_faction = {
every_faction_member = {
custom = hold_court.8150.a.tt_multiple_intro
limit = {
this != scope:target_faction.faction_leader
}
add_opinion = {
modifier = angry_opinion
target = root
opinion = -20
}
}
if = {
limit = {
any_faction_member = { count = 1 }
}
show_as_tooltip = { destroy_faction = yes }
}
}
add_dread = minor_dread_gain
stress_impact = {
just = medium_stress_impact_gain
patient = medium_stress_impact_gain
shy = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -1
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
modifier = { #Weight down for stress.
add = -15
has_trait = patient
}
modifier = { #Weight down for stress.
add = -15
has_trait = shy
}
modifier = { #Weight down for stress.
add = -15
has_trait = forgiving
}
}
}
option = { # Bribe
name = hold_court.8150.c
trigger = {
NOT = {
scope:target_faction.faction_leader = { has_relation_rival = root }
}
}
random_list = {
40 = {
desc = hold_court.8150.d.tt_accept
send_interface_toast = {
title = hold_court.8150.c.tt_success
left_icon = scope:target_faction.faction_leader
if = {
limit = { exists = scope:bribe_county }
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:bribe_county = {
change_title_holder = {
holder = scope:target_faction.faction_leader
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
else = {
pay_short_term_gold = {
target = scope:target_faction.faction_leader
gold = root.major_gold_value
}
}
scope:target_faction = {
faction_leader = {
custom_tooltip = hold_court.8150.a.tt_single_cooldown
add_character_flag = {
flag = joining_faction_block
years = 5
}
}
every_faction_member = {
custom = hold_court.8150.a.tt_multiple_intro
limit = {
this != scope:target_faction.faction_leader
}
add_opinion = {
target = scope:target_faction.faction_leader
modifier = angry_opinion
opinion = -20
}
}
destroy_faction = yes
}
}
modifier = {
factor = 10
has_trait = deceitful
}
modifier = {
factor = 10
has_trait = greedy
}
modifier = {
factor = 10
has_trait = fickle
}
}
60 = {
desc = hold_court.8150.d.tt_reject
send_interface_toast = {
title = hold_court.8150.c.tt_failure
left_icon = scope:target_faction.faction_leader
scope:target_faction = {
add_faction_discontent = 15
every_faction_member = {
custom = hold_court.8150.a.tt_multiple_intro
add_opinion = {
target = root
modifier = disgusted_opinion
opinion = -15
}
}
}
}
modifier = {
factor = 10
has_trait = honest
}
modifier = {
factor = 10
has_trait = stubborn
}
modifier = {
factor = 20
scope:target_faction.faction_leader = scope:target_faction.special_character
}
}
}
stress_impact = {
generous = medium_stress_impact_gain
honest = medium_stress_impact_gain
just = medium_stress_impact_gain
vengeful = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -0.5
ai_greed = -0.5
ai_rationality = 1
ai_boldness = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
modifier = { #Weight down for stress.
add = -15
has_trait = honest
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
modifier = { #Weight down for stress.
add = -15
has_trait = vengeful
}
}
}
option = { # Convince
name = hold_court.8150.d
duel = {
skill = diplomacy
target = scope:target_faction.faction_leader
8 = {
compare_modifier = {
value = scope:duel_value
multiplier = 1
}
desc = hold_court.8150.d.tt_accept
send_interface_toast = {
title = hold_court.8150.d.tt_accept
left_icon = scope:target_faction.faction_leader
add_prestige = medium_prestige_gain
scope:target_faction = {
faction_leader = {
custom_tooltip = hold_court.8150.a.tt_single_cooldown
add_character_flag = {
flag = joining_faction_block
years = 5
}
}
every_faction_member = {
custom = hold_court.8150.a.tt_multiple_intro
limit = {
this != scope:target_faction.faction_leader
}
add_opinion = {
target = scope:target_faction.faction_leader
modifier = disappointed_opinion
opinion = -10
}
}
destroy_faction = yes
}
}
}
12 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
desc = hold_court.8150.d.tt_reject
send_interface_toast = {
title = hold_court.8150.d.tt_reject
left_icon = scope:target_faction.faction_leader
scope:target_faction = { add_faction_discontent = 10 }
}
}
}
stress_impact = {
humble = medium_stress_impact_gain
vengeful = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 1
ai_rationality = 1
ai_boldness = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = humble
}
modifier = { #Weight down for stress.
add = -15
has_trait = vengeful
}
}
}
option = { # Refuse
name = hold_court.8150.e
add_prestige = medium_prestige_loss
scope:target_faction = { add_faction_discontent = 5 }
stress_impact = {
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 2
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = paranoid
}
}
}
after = {
scope:targeted_factions_leader = { clear_court_event_participation = yes }
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Public Accusation
# by Joe Parkin
# 8160
##################################################
# Is the scheme a valid court scheme?
scripted_trigger hold_court_8160_valid_court_scheme_trigger = {
exists = scheme_target_character.liege
OR = { # Victim and plotter share same court
scheme_owner = scheme_target_character.liege
scheme_owner = { is_vassal_or_below_of = prev.scheme_target_character.liege }
scheme_owner = { is_courtier_of = prev.scheme_target_character.liege }
}
NOR = {
scheme_owner = root
scheme_target_character = root
}
}
scripted_trigger hold_court_8160_valid_plotter_trigger = {
this != root
is_available_ai_adult = yes
exists = scope:scheme_target_scope
trigger_if = {
limit = { exists = scope:scheme_target_scope }
NOR = {
this = scope:scheme_target_scope # victim
has_friendly_relationship_trigger = { CHARACTER = scope:scheme_target_scope } # victim
}
can_start_scheme = {
type = murder
target_character = scope:scheme_target_scope # victim
}
}
}
# Is the scheme a valid murder/abduct scheme?
scripted_trigger hold_court_8160_valid_hostile_scheme_trigger = {
AND = {
hold_court_8160_valid_court_scheme_trigger = yes
OR = {
scheme_type = murder
scheme_type = abduct
}
}
scheme_target_character = {
save_temporary_scope_as = scheme_target_scope
liege = {
OR = {
any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes }
any_courtier = { hold_court_8160_valid_plotter_trigger = yes }
}
}
}
}
# Is the character a valid advocate of the victim?
scripted_trigger hold_court_8160_valid_concerned_trigger = {
this != root
is_available_ai_adult = yes
top_liege = prev.top_liege # victim
NOT = {
is_scheming_against = { target = prev } # victim
}
}
# Is the character already targeted by a valid scheme?
scripted_trigger hold_court_8160_current_hostile_target_trigger = {
this != root
has_court_event_flag = no
is_available_ai = yes
any_targeting_scheme = { hold_court_8160_valid_hostile_scheme_trigger = yes }
trigger_if = { # if target is a child, they have a parent or family member to advocate
limit = { is_adult = no }
OR = {
any_parent = { hold_court_8160_valid_concerned_trigger = yes }
any_close_family_member = { hold_court_8160_valid_concerned_trigger = yes }
}
}
}
# Is the character, their spouse, or a family member, targeted?
scripted_trigger hold_court_8160_valid_existing_hostile_trigger = {
this != root
OR = {
hold_court_8160_current_hostile_target_trigger = yes
AND = {
is_married = yes
primary_spouse = {
top_liege = prev.top_liege
hold_court_8160_current_hostile_target_trigger = yes
}
}
any_close_family_member = {
exists = yes
OR = {
is_vassal_or_below_of = prev.liege # victim.root
is_courtier_of = prev.liege # victim.root
}
hold_court_8160_current_hostile_target_trigger = yes
}
}
}
scripted_effect hold_court_8160_save_create_scheme_effect = {
if = {
limit = {
any_targeting_scheme = { hold_court_8160_valid_hostile_scheme_trigger = yes }
}
random_targeting_scheme = {
limit = { hold_court_8160_valid_hostile_scheme_trigger = yes }
save_scope_as = victim_scheme
scheme_target_character = { save_scope_as = victim }
scheme_owner = { save_scope_as = debug_scheme_owner }
}
}
else = {
save_temporary_scope_as = scheme_target_scope
save_scope_as = victim
liege = {
if = {
limit = {
any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes }
}
random_vassal_or_below = {
limit = { hold_court_8160_valid_plotter_trigger = yes }
save_scope_as = debug_scheme_owner
start_scheme = {
type = murder
target_character = scope:victim
}
}
}
else = {
random_courtier = {
limit = { hold_court_8160_valid_plotter_trigger = yes }
save_scope_as = debug_scheme_owner
start_scheme = {
type = murder
target_character = scope:victim
}
}
}
}
random_targeting_scheme = {
limit = { scheme_owner = scope:debug_scheme_owner }
save_scope_as = victim_scheme
}
}
scope:victim = {
court_event_character_flag_effect = yes
}
}
# Choose who is the target of the scheme
scripted_effect hold_court_8160_vassal_picker_scheme_effect = {
hidden_effect = {
random_list = {
100 = {
modifier = {
factor = 100
hold_court_8160_current_hostile_target_trigger = yes
}
hold_court_8160_save_create_scheme_effect = yes
}
50 = {
trigger = { is_married = yes }
modifier = {
factor = 100
primary_spouse = { hold_court_8160_current_hostile_target_trigger = yes }
}
primary_spouse = { hold_court_8160_save_create_scheme_effect = yes }
}
50 = {
trigger = {
any_close_family_member = { count = 1 }
}
modifier = {
factor = 100
any_close_family_member = { hold_court_8160_current_hostile_target_trigger = yes }
}
random_close_family_member = {
limit = { hold_court_8160_current_hostile_target_trigger = yes }
alternative_limit = { always = yes }
hold_court_8160_save_create_scheme_effect = yes
}
}
}
}
}
scripted_effect hold_court_8160_imprison_effect = {
rightfully_imprison_character_effect = {
TARGET = scope:accused
IMPRISONER = root
}
hidden_effect = {
scope:accused = {
if = {
limit = {
exists = scope:victim.primary_spouse
scope:victim_scheme = { scheme_type = seduce }
this != scope:victim.primary_spouse
}
add_opinion = {
modifier = angry_opinion
target = scope:victim.primary_spouse
opinion = -20
}
}
else = {
add_opinion = {
modifier = angry_opinion
target = scope:victim
opinion = -20
}
}
if = {
limit = { exists = scope:concerned }
add_opinion = {
modifier = angry_opinion
target = scope:concerned
opinion = -20
}
}
}
}
scope:victim = {
if = {
limit = {
exists = primary_spouse
scope:victim_scheme = { scheme_type = seduce }
scope:accused != scope:victim.primary_spouse
}
primary_spouse = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
else = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
if = {
limit = { exists = scope:concerned }
scope:concerned = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
}
scripted_trigger hold_court_8160_accused_trigger = {
this != root
is_available_ai_adult = yes
NOR = {
this = scope:victim
has_friendly_relationship_trigger = { CHARACTER = scope:victim }
}
can_start_scheme = {
type = murder
target_character = scope:victim
}
}
# Target of a scheme wants you to punish the schemer - murder/abduct version
hold_court.8160 = {
type = court_event
title = hold_court.8160.t
desc = {
# Who is coming to the throne?
first_valid = {
triggered_desc = { # Child with family
trigger = {
scope:victim = { is_adult = no }
}
desc = hold_court.8160.desc.intro_child
}
triggered_desc = { # Spouse
trigger = { exists = scope:concerned }
desc = hold_court.8160.desc.intro_spouse
}
desc = hold_court.8160.desc.intro_alone # fallback/default
}
first_valid = {
triggered_desc = { # Spouse
trigger = { exists = scope:concerned }
desc = hold_court.8160.desc.intro_other
}
desc = hold_court.8160.desc.intro_me
}
# Who is accused?
first_valid = {
triggered_desc = { # Actually revealed to be involved in scheme
trigger = {
scope:accused = { is_agent_exposed_in_scheme = scope:victim_scheme }
}
desc = hold_court.8160.desc.exposed
}
desc = hold_court.8160.desc.suspicion # Speculation
}
# What is the reason for suspicion?
first_valid = {
triggered_desc = { # Nemeses
trigger = {
scope:accused = { has_relation_nemesis = scope:victim }
}
desc = hold_court.8160.desc.nemesis
}
triggered_desc = { # Rivals
trigger = {
scope:accused = { has_relation_rival = scope:victim }
}
desc = hold_court.8160.desc.rival
}
triggered_desc = { # Accused has claim on Target
trigger = {
scope:accused = {
any_claim = { holder = scope:victim }
}
}
desc = hold_court.8160.desc.my_claimant
}
triggered_desc = { # Target has claim on Accused
trigger = {
scope:accused = {
any_held_title = {
any_claimant = { this = scope:victim }
}
}
}
desc = hold_court.8160.desc.their_claimant
}
triggered_desc = { # Accused and Target covet same title
trigger = {
scope:victim = {
any_claim = {
any_claimant = { this = scope:accused }
}
}
}
desc = hold_court.8160.desc.joint_claimant
}
triggered_desc = { # Accused is a villain
trigger = {
scope:accused = {
OR = {
has_education_intrigue_trigger = yes
has_trait = deceitful
}
}
}
desc = hold_court.8160.desc.intrigue
}
triggered_desc = { # Accused dislikes Target
trigger = {
scope:accused = {
opinion = {
target = scope:victim
value < 0
}
}
}
desc = hold_court.8160.desc.their_dislike
}
triggered_desc = { # Target dislikes Accused
trigger = {
scope:accused = {
reverse_opinion = {
target = scope:victim
value < 0
}
}
}
desc = hold_court.8160.desc.my_dislike
}
desc = hold_court.8160.desc.fallback # No good reason
}
# How many agents revealed?
desc = hold_court.8160.desc.outro
}
theme = realm
lower_right_portrait = scope:accused
court_scene = {
button_position_character = scope:concerned
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:concerned = {
group = petitioners_group
animation = worry
}
scope:victim = {
group = petitioners_group
animation = paranoia
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 5 }
trigger = {
is_ai = no # Murder schemes are heavy for performance
OR = {
any_vassal_or_below = {
save_temporary_scope_as = scheme_target_scope
OR = {
hold_court_8160_valid_existing_hostile_trigger = yes
liege = {
OR = {
any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes }
any_courtier = { hold_court_8160_valid_plotter_trigger = yes }
}
}
}
}
any_courtier = {
save_temporary_scope_as = scheme_target_scope
OR = {
hold_court_8160_valid_existing_hostile_trigger = yes
liege = {
OR = {
any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes }
any_courtier = { hold_court_8160_valid_plotter_trigger = yes }
}
}
}
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue }
}
immediate = {
every_vassal_or_below = {
limit = { hold_court_8160_valid_existing_hostile_trigger = yes }
alternative_limit = {
save_temporary_scope_as = scheme_target_scope
liege = {
OR = {
any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes }
any_courtier = { hold_court_8160_valid_plotter_trigger = yes }
}
}
}
add_to_list = victim_list
}
every_courtier = {
limit = { hold_court_8160_valid_existing_hostile_trigger = yes }
alternative_limit = {
save_temporary_scope_as = scheme_target_scope
liege = {
OR = {
any_vassal_or_below = { hold_court_8160_valid_plotter_trigger = yes }
any_courtier = { hold_court_8160_valid_plotter_trigger = yes }
}
}
}
add_to_list = victim_list
}
random_in_list = {
list = victim_list
limit = { hold_court_8160_current_hostile_target_trigger = yes }
alternative_limit = {
is_married = yes
primary_spouse = {
top_liege = prev.top_liege
hold_court_8160_current_hostile_target_trigger = yes
}
}
alternative_limit = {
any_close_family_member = {
exists = yes
OR = {
is_vassal_or_below_of = prev.liege # victim.root
is_courtier_of = prev.liege # victim.root
}
hold_court_8160_current_hostile_target_trigger = yes
}
}
alternative_limit = { is_vassal_of = root }
alternative_limit = { is_courtier_of = root }
alternative_limit = { always = yes }
weight = {
modifier = {
factor = 50
has_trait = paranoid
}
modifier = {
factor = 25
has_trait = arrogant
}
}
hold_court_8160_vassal_picker_scheme_effect = yes
}
if = { # Find actual scheme owner if revealed
limit = {
exists = scope:victim_scheme
scope:victim_scheme.scheme_owner = { is_agent_exposed_in_scheme = scope:victim_scheme } # scheme owner is known by target
}
scope:victim_scheme.scheme_owner = {
save_scope_as = accused
court_event_character_flag_effect = yes
}
}
else = { # Else find a suspect
every_vassal_or_below = {
limit = { hold_court_8160_accused_trigger = yes }
add_to_list = accused_list
}
every_courtier = {
limit = { hold_court_8160_accused_trigger = yes }
add_to_list = accused_list
}
random_in_list = {
list = accused_list
limit = { is_vassal_of = root }
alternative_limit = { is_courtier_of = root }
alternative_limit = { always = yes }
weight = {
base = 1
modifier = { # Nemeses
add = 100
has_relation_nemesis = scope:victim
}
modifier = { # Rivals
add = 50
has_relation_rival = scope:victim
}
modifier = { # Accused has claim on Target
add = 100
any_claim = { holder = scope:victim }
}
modifier = { # Target has claim on Accused
add = 100
any_held_title = {
any_claimant = { this = scope:victim }
}
}
modifier = { # Accused and Target covet same title
add = 100
any_claim = {
any_claimant = { this = scope:victim }
}
}
modifier = { # Accused is a villain
add = 100
OR = {
has_education_intrigue_trigger = yes
has_trait = deceitful
}
}
modifier = { # Accused dislikes Target
add = 25
opinion = {
target = scope:victim
value < 0
}
}
modifier = { # Target dislikes Accused
add = 25
reverse_opinion = {
target = scope:victim
value < 0
}
}
}
save_scope_as = accused
}
}
# Save an advocate if necessary/relevant
scope:victim = {
if = {
limit = { is_adult = no }
if = {
limit = {
OR = {
faith_dominant_gender_female_or_equal = yes
father = { hold_court_8160_valid_concerned_trigger = no }
}
mother ?= { hold_court_8160_valid_concerned_trigger = yes }
}
mother = { save_scope_as = concerned }
}
else_if = {
limit = {
OR = {
faith_dominant_gender_male_or_equal = yes
mother = { hold_court_8160_valid_concerned_trigger = no }
}
father ?= { hold_court_8160_valid_concerned_trigger = yes }
}
father = { save_scope_as = concerned }
}
else = {
ordered_close_family_member = {
limit = { hold_court_8160_valid_concerned_trigger = yes }
order_by = age
save_scope_as = concerned
}
}
}
else_if = {
limit = {
is_married = yes
primary_spouse = { hold_court_8160_valid_concerned_trigger = yes }
}
primary_spouse = { save_scope_as = concerned }
}
else_if = {
limit = {
NOT = { is_vassal_of = root }
any_close_family_member = { hold_court_8160_valid_concerned_trigger = yes }
}
random_close_family_member = {
limit = { hold_court_8160_valid_concerned_trigger = yes }
save_scope_as = concerned
}
}
if = {
limit = { exists = scope:concerned }
scope:concerned = {
court_event_character_flag_effect = yes
}
}
}
if = {
limit = { exists = scope:concerned }
add_character_flag = {
flag = concerned_exists
years = 1
}
}
# Save titles for motives localization
scope:accused = {
if = {
limit = {
any_claim = { holder = scope:victim }
}
ordered_claim = {
limit = { holder = scope:victim }
order_by = tier
save_scope_as = relevant_title
}
}
else_if = {
limit = {
any_held_title = {
any_claimant = { this = scope:victim }
}
}
ordered_held_title = {
limit = {
any_claimant = { this = scope:victim }
}
order_by = tier
save_scope_as = relevant_title
}
}
else_if = {
limit = {
any_claim = {
any_claimant = { this = scope:victim }
}
}
ordered_claim = {
limit = {
any_claimant = { this = scope:victim }
}
order_by = tier
save_scope_as = relevant_title
}
}
}
if = {
limit = {
any_court_position_holder = {
type = executioner_court_position
has_court_event_flag = no
is_available_ai_adult = yes
NOR = {
this = scope:victim
this = scope:accused
AND = {
exists = scope:concerned
this = scope:concerned
}
}
}
}
random_court_position_holder = {
type = executioner_court_position
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
NOR = {
this = scope:victim
this = scope:accused
AND = {
exists = scope:concerned
this = scope:concerned
}
}
}
save_scope_as = executioner
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Arrest
name = hold_court.8160.a
if = {
limit = {
scope:victim_scheme = { scheme_type = murder }
}
add_opinion = {
modifier = attempted_murder_opinion
target = scope:accused
}
}
else = {
add_opinion = {
modifier = attempted_abduction_opinion
target = scope:accused
}
}
scope:accused = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -20
}
hidden_effect = {
add_opinion = {
modifier = angry_opinion
target = scope:victim
opinion = -20
}
if = {
limit = { exists = scope:concerned }
add_opinion = {
modifier = angry_opinion
target = scope:concerned
opinion = -20
}
}
}
}
scope:victim = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
if = {
limit = { exists = scope:concerned }
scope:concerned = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
}
if = {
limit = { scope:accused = scope:debug_scheme_owner }
add_tyranny = minor_tyranny_gain
}
else = {
stress_impact = {
just = medium_stress_impact_gain
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -1
ai_compassion = -2
ai_boldness = 1
}
modifier = { #Weight down for stress.
add = -30
scope:accused = scope:debug_scheme_owner
has_trait = just
}
}
}
option = { # Torture
name = {
trigger = { has_trait = torturer }
text = hold_court.8160.b.torturer
}
name = {
trigger = {
exists = scope:executioner
}
text = hold_court.8160.b.executioner
}
trigger = {
OR = {
exists = scope:executioner
has_trait = torturer
}
}
scope:accused = {
random_list = {
75 = {
modifier = {
factor = 2
has_trait = craven
}
modifier = {
factor = 2
has_trait = fickle
}
modifier = {
factor = 2
has_trait = arbitrary
}
modifier = {
factor = 2
is_agent_exposed_in_scheme = scope:victim_scheme
}
desc = hold_court.8160.b.tt_confession
root = {
send_interface_toast = {
title = hold_court.8160.b.tt_confession
left_icon = scope:accused
right_icon = scope:victim
hold_court_8160_imprison_effect = yes
}
}
}
25 = {
modifier = {
factor = 2
has_trait = stubborn
}
modifier = {
factor = 2
has_trait = brave
}
modifier = {
factor = 2
has_trait = just
}
modifier = {
factor = 2
AND = {
NOT = { is_agent_exposed_in_scheme = scope:victim_scheme }
has_trait = honest
}
}
modifier = {
factor = 2
AND = {
is_agent_exposed_in_scheme = scope:victim_scheme
has_trait = deceitful
}
}
desc = hold_court.8160.b.tt_silence
root = {
send_interface_toast = {
title = hold_court.8160.b.tt_silence
left_icon = scope:accused
right_icon = scope:victim
}
}
}
}
add_opinion = {
modifier = tortured_me
target = root
}
if = {
limit = { exists = scope:executioner }
hidden_effect = {
add_opinion = {
modifier = tortured_me
target = scope:executioner
}
}
}
if = {
limit = {
is_married = yes
NOR = {
primary_spouse = {
this = root
this = scope:victim
AND = {
exists = scope:concerned
this = scope:concerned
}
}
}
}
primary_spouse = {
add_opinion = {
modifier = tortured_family_member
target = root
}
if = {
limit = { exists = scope:executioner }
hidden_effect = {
add_opinion = {
modifier = tortured_family_member
target = scope:executioner
}
}
}
}
}
every_close_family_member = {
limit = {
NOR = {
this = root
this = scope:victim
AND = {
exists = scope:concerned
this = scope:concerned
}
}
}
add_opinion = {
modifier = tortured_family_member
target = root
}
if = {
limit = { exists = scope:executioner }
hidden_effect = {
add_opinion = {
modifier = tortured_family_member
target = scope:executioner
}
}
}
}
}
scope:victim = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 15
}
if = {
limit = { exists = scope:executioner }
hidden_effect = {
add_opinion = {
modifier = grateful_opinion
target = scope:executioner
opinion = 15
}
}
}
}
if = {
limit = { exists = scope:concerned }
scope:concerned = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 15
}
if = {
limit = { exists = scope:executioner }
hidden_effect = {
add_opinion = {
modifier = grateful_opinion
target = scope:executioner
opinion = 15
}
}
}
}
}
if = {
limit = {
scope:victim_scheme.scheme_owner = { is_agent_exposed_in_scheme = scope:victim_scheme }
}
add_tyranny = medium_tyranny_gain
stress_impact = {
just = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
}
else = {
add_tyranny = major_tyranny_gain
stress_impact = {
just = major_stress_impact_gain
compassionate = major_stress_impact_gain
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -1
ai_compassion = -2
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -30
has_trait = just
}
modifier = { #Weight down for stress.
add = -30
has_trait = compassionate
}
}
}
option = { # Attempt to find the truth
name = hold_court.8160.c
show_as_tooltip = {
duel = {
skill = intrigue
target = scope:accused
1 = {
show_chance = no
desc = hold_court.8160.c.tt_success
hold_court_8160_imprison_effect = yes
}
1 = {
show_chance = no
desc = hold_court.8160.c.tt_failure
scope:victim = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
}
}
}
hidden_effect = {
duel = {
skill = intrigue
target = scope:accused
8 = {
trigger = {
scope:victim_scheme = {
any_scheme_agent_character = { this = scope:accused }
}
}
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
send_interface_toast = {
title = hold_court.8160.c.tt_success
left_icon = scope:accused
right_icon = scope:victim
hold_court_8160_imprison_effect = yes
}
}
12 = {
compare_modifier = {
value = scope:duel_value
multiplier = -2
min = -9
}
send_interface_toast = {
title = hold_court.8160.c.tt_failure
left_icon = scope:accused
right_icon = scope:victim
add_prestige = medium_prestige_loss
scope:victim = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
if = {
limit = { exists = scope:concerned }
scope:concerned = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
}
}
}
}
}
stress_impact = {
arbitrary = medium_stress_impact_gain
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 1
ai_compassion = 1
ai_zeal = -1
ai_energy = -1
ai_rationality = 1
}
modifier = { #Weight down for stress.
add = -30
has_trait = arbitrary
}
modifier = { #Weight down for stress.
add = -30
has_trait = lazy
}
}
}
option = { # Dismiss
name = {
trigger = {
scope:victim_scheme = {
any_scheme_agent_character = { this = root }
}
}
text = hold_court.8160.d.involved
}
name = {
trigger = {
scope:victim_scheme.scheme_owner = { is_agent_exposed_in_scheme = scope:victim_scheme }
}
text = hold_court.8160.d.proof
}
name = {
trigger = { always = yes }
text = hold_court.8160.d.fallback
}
scope:victim_scheme = {
if = {
limit = {
any_scheme_agent_character = { this = root }
}
add_scheme_progress = scheme_progress_gain
}
}
scope:accused = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
if = {
limit = { exists = scope:concerned }
scope:concerned = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
}
scope:victim = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
if = {
limit = {
scope:victim_scheme.scheme_owner = { is_agent_exposed_in_scheme = scope:victim_scheme }
}
stress_impact = {
just = major_stress_impact_gain
compassionate = major_stress_impact_gain
}
}
else = {
stress_impact = {
just = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 0.5
ai_compassion = 0.5
ai_energy = -2
}
}
}
after = {
if = {
limit = { has_character_flag = concerned_exists }
remove_character_flag = concerned_exists
}
scope:victim = {
clear_court_event_participation = yes
}
scope:accused = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:concerned }
scope:concerned = {
clear_court_event_participation = yes
}
}
if = {
limit = { exists = scope:executioner }
scope:executioner = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Personal Matter
# by Joe Parkin
# 8161
##################################################
# Is the character able to be targeted by a valid scheme?
scripted_trigger hold_court_8161_valid_seduce_target_trigger = {
this != root
age < 50
has_court_event_flag = no
is_available_ai_adult = yes
exists = liege
save_temporary_scope_as = hold_court_8161_victim
liege = {
any_vassal_or_below = { hold_court_8161_valid_seduce_plotter_trigger = yes }
}
}
# Is the character able to start a valid scheme?
scripted_trigger hold_court_8161_valid_seduce_plotter_trigger = {
NOR = {
this = root
is_spouse_of = root
}
age < 50
is_available_ai_adult = yes
possibly_interested_in_character_trigger = { CHARACTER = scope:hold_court_8161_victim } # victim
might_cheat_on_every_partner_trigger = yes
can_start_scheme = {
type = seduce
target_character = scope:hold_court_8161_victim # victim
}
exists = scope:hold_court_8161_victim.primary_spouse # to avoid errors
NOR = {
has_trait = chaste
has_trait = shy
has_trait = craven
has_trait = content
has_trait = celibate
}
NOR = {
this = scope:hold_court_8161_victim # victim
this = scope:hold_court_8161_victim.primary_spouse # victim's spouse
has_friendly_relationship_trigger = { CHARACTER = scope:hold_court_8161_victim.primary_spouse } # victim's spouse
}
}
# Is the scheme a valid seduction scheme?
scripted_trigger hold_court_8161_valid_seduce_scheme_trigger = {
hold_court_8160_valid_court_scheme_trigger = yes
scheme_type = seduce
scheme_success_chance >= 30
}
# Is the character a valid event target?
scripted_trigger hold_court_8161_valid_target_vassal_trigger = {
NOR = {
this = root
is_spouse_of = root
}
has_court_event_flag = no
is_available_ai_adult = yes
is_married = yes
top_liege = primary_spouse.top_liege
trigger_if = {
limit = {
primary_spouse = { is_male = yes }
}
NOT = {
faith = { has_doctrine = doctrine_adultery_men_accepted }
}
}
trigger_else = {
NOT = {
faith = { has_doctrine = doctrine_adultery_women_accepted }
}
}
OR = {
hold_court_8161_valid_seduce_target_trigger = yes
primary_spouse = { hold_court_8161_valid_seduce_target_trigger = yes }
}
}
scripted_trigger hold_court_8161_existing_seduction_target_trigger = {
this != root
OR = {
any_targeting_scheme = { hold_court_8161_valid_seduce_scheme_trigger = yes }
primary_spouse = {
any_targeting_scheme = { hold_court_8161_valid_seduce_scheme_trigger = yes }
}
}
}
scripted_trigger hold_court_8161_religious_crime_trigger = {
OR = {
AND = {
scope:victim.primary_spouse = { is_female = yes }
NOT = {
faith = { has_doctrine = doctrine_adultery_women_accepted }
}
}
AND = {
scope:victim.primary_spouse = { is_male = yes }
NOT = {
faith = { has_doctrine = doctrine_adultery_men_accepted }
}
}
AND = {
OR = {
AND = {
scope:victim = { is_male = yes }
scope:accused = { is_male = yes }
}
AND = {
scope:victim = { is_female = yes }
scope:accused = { is_female = yes }
}
}
NOT = {
faith = { has_doctrine = doctrine_homosexuality_accepted }
}
}
}
}
# Save or create a seduction scheme in the court
scripted_effect hold_court_8161_save_create_scheme_effect = {
if = {
limit = {
any_targeting_scheme = { hold_court_8161_valid_seduce_scheme_trigger = yes }
}
random_targeting_scheme = {
limit = { hold_court_8161_valid_seduce_scheme_trigger = yes }
save_scope_as = victim_scheme
scheme_target_character = { save_scope_as = victim }
scheme_owner = { save_scope_as = debug_scheme_owner }
}
}
else = {
save_scope_as = victim
liege = {
random_vassal_or_below = {
limit = { hold_court_8161_valid_seduce_plotter_trigger = yes }
weight = {
base = 1
modifier = {
factor = 2
has_trait = lustful
}
modifier = {
factor = 4
has_trait = honest
}
modifier = {
factor = 2
intrigue < average_skill_rating
}
modifier = {
factor = 4
has_trait = contrite
}
modifier = {
factor = 4
has_trait = confider
}
modifier = {
factor = 2
has_trait = trusting
}
}
save_scope_as = debug_scheme_owner
start_scheme = {
type = seduce
target_character = scope:victim
}
}
}
random_targeting_scheme = {
limit = { scheme_owner = scope:debug_scheme_owner }
save_scope_as = victim_scheme
}
}
scope:victim = {
court_event_character_flag_effect = yes
primary_spouse = {
court_event_character_flag_effect = yes
}
}
}
# Choose who is the target of the scheme
scripted_effect hold_court_8161_vassal_spouse_scheme_effect = {
hidden_effect = {
random_list = {
50 = {
trigger = { hold_court_8161_valid_seduce_target_trigger = yes }
hold_court_8161_save_create_scheme_effect = yes
}
100 = {
trigger = {
primary_spouse = { hold_court_8161_valid_seduce_target_trigger = yes }
}
primary_spouse = { hold_court_8161_save_create_scheme_effect = yes }
}
}
}
}
# Spouse of the target of a scheme wants you to punish the schemer - seduction version
hold_court.8161 = {
type = court_event
title = hold_court.8161.t
desc = {
desc = hold_court.8161.desc.intro
first_valid = {
triggered_desc = { # Nemeses
trigger = {
scope:accused = { has_relation_nemesis = scope:victim.primary_spouse }
}
desc = hold_court.8161.desc.nemesis
}
triggered_desc = { # Rivals
trigger = {
scope:accused = { has_relation_rival = scope:victim.primary_spouse }
}
desc = hold_court.8161.desc.rival
}
triggered_desc = { # Quarry
trigger = {
scope:victim = {
OR = {
has_trait = beauty_good_1
has_trait = beauty_good_2
has_trait = beauty_good_3
has_trait = lustful
}
}
}
desc = hold_court.8161.desc.quarry
}
triggered_desc = { # Accused dislikes Target
trigger = {
scope:accused = {
opinion = {
target = scope:victim.primary_spouse
value < 0
}
}
}
desc = hold_court.8161.desc.their_dislike
}
triggered_desc = { # Target dislikes Accused
trigger = {
scope:accused = {
reverse_opinion = {
target = scope:victim.primary_spouse
value < 0
}
}
}
desc = hold_court.8161.desc.my_dislike
}
triggered_desc = { # Accused is a villain
trigger = {
scope:accused = {
OR = {
has_education_intrigue_trigger = yes
has_trait = deceitful
has_trait = lustful
has_trait = seducer
}
}
}
desc = hold_court.8161.desc.intrigue
}
desc = hold_court.8161.desc.fallback # No good reason
}
desc = hold_court.8161.desc.body
}
theme = realm
lower_right_portrait = scope:accused
court_scene = {
button_position_character = scope:victim.primary_spouse
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:victim.primary_spouse = {
group = petitioners_group
animation = anger
}
scope:victim = {
group = petitioners_group
animation = disapproval
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 5 }
trigger = {
OR = {
any_courtier_or_guest = {
hold_court_8161_valid_target_vassal_trigger = yes
trigger_if = {
limit = { NOT = { exists = scope:victim } }
save_temporary_scope_as = victim
}
exists = scope:victim.primary_spouse
}
any_vassal = {
hold_court_8161_valid_target_vassal_trigger = yes
trigger_if = {
limit = { NOT = { exists = scope:victim } }
save_temporary_scope_as = victim
}
exists = scope:victim.primary_spouse
}
}
OR = {
any_vassal_or_below = {
age < 50
is_available_ai_adult = yes
possibly_interested_in_character_trigger = { CHARACTER = scope:victim }
can_start_scheme = {
type = seduce
target_character = scope:victim
}
exists = scope:victim.primary_spouse
NOR = {
this = scope:victim
this = scope:victim.primary_spouse
has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse }
}
}
any_courtier_or_guest = {
age < 50
is_available_ai_adult = yes
possibly_interested_in_character_trigger = { CHARACTER = scope:victim }
can_start_scheme = {
type = seduce
target_character = scope:victim
}
exists = scope:victim.primary_spouse
NOR = {
this = scope:victim
this = scope:victim.primary_spouse
has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse }
}
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue }
}
immediate = {
random_list = {
2 = {
trigger = {
any_courtier_or_guest = { hold_court_8161_valid_target_vassal_trigger = yes }
}
random_courtier_or_guest = {
limit = {
hold_court_8161_valid_target_vassal_trigger = yes
hold_court_8161_existing_seduction_target_trigger = yes
}
alternative_limit = {
hold_court_8161_valid_target_vassal_trigger = yes
}
weight = {
modifier = {
factor = 50
has_trait = paranoid
}
modifier = {
factor = 25
has_trait = arrogant
}
}
hold_court_8161_vassal_spouse_scheme_effect = yes
}
}
2 = {
trigger = {
any_vassal_or_below = { hold_court_8161_valid_target_vassal_trigger = yes }
}
random_vassal_or_below = {
limit = {
hold_court_8161_valid_target_vassal_trigger = yes
hold_court_8161_existing_seduction_target_trigger = yes
}
alternative_limit = {
hold_court_8161_valid_target_vassal_trigger = yes
}
weight = {
modifier = {
factor = 50
has_trait = paranoid
}
modifier = {
factor = 25
has_trait = arrogant
}
}
hold_court_8161_vassal_spouse_scheme_effect = yes
}
}
}
hidden_effect = {
random_list = {
50 = {
trigger = { exists = scope:debug_scheme_owner }
scope:debug_scheme_owner = { save_scope_as = accused }
}
25 = {
trigger = {
any_vassal_or_below = {
age < 50
is_available_ai_adult = yes
possibly_interested_in_character_trigger = { CHARACTER = scope:victim }
can_start_scheme = {
type = seduce
target_character = scope:victim
}
exists = scope:victim.primary_spouse
NOR = {
this = scope:victim
this = scope:victim.primary_spouse
has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse }
}
}
}
random_vassal_or_below = {
limit = {
age < 50
is_available_ai_adult = yes
possibly_interested_in_character_trigger = { CHARACTER = scope:victim }
can_start_scheme = {
type = seduce
target_character = scope:victim
}
exists = scope:victim.primary_spouse
NOR = {
this = scope:victim
this = scope:victim.primary_spouse
has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse }
}
}
weight = {
base = 1
modifier = {
factor = 100
has_relation_nemesis = scope:victim.primary_spouse # Nemeses
}
modifier = {
factor = 50
has_relation_rival = scope:victim.primary_spouse # Rivals
}
modifier = {
factor = 25
opinion = {
target = scope:victim.primary_spouse # Accused dislikes Target
value < 0
}
}
modifier = {
factor = 25
reverse_opinion = {
target = scope:victim.primary_spouse # Target dislikes Accused
value < 0
}
}
modifier = { # Accused is a villain
factor = 50
OR = {
has_education_intrigue_trigger = yes
has_trait = deceitful
has_trait = lustful
has_trait = seducer
}
}
}
save_scope_as = accused
}
}
25 = {
trigger = {
any_courtier_or_guest = {
age < 50
is_available_ai_adult = yes
possibly_interested_in_character_trigger = { CHARACTER = scope:victim }
can_start_scheme = {
type = seduce
target_character = scope:victim
}
exists = scope:victim.primary_spouse
NOR = {
THIS = scope:victim
THIS = scope:victim.primary_spouse
has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse }
}
}
}
random_courtier_or_guest = {
limit = {
age < 50
is_available_ai_adult = yes
possibly_interested_in_character_trigger = { CHARACTER = scope:victim }
can_start_scheme = {
type = seduce
target_character = scope:victim
}
exists = scope:victim.primary_spouse
NOR = {
THIS = scope:victim
THIS = scope:victim.primary_spouse
has_friendly_relationship_trigger = { CHARACTER = scope:victim.primary_spouse }
}
}
weight = {
base = 1
modifier = {
factor = 100
has_relation_nemesis = scope:victim.primary_spouse # Nemeses
}
modifier = {
factor = 50
has_relation_rival = scope:victim.primary_spouse # Rivals
}
modifier = {
factor = 25
opinion = {
target = scope:victim.primary_spouse # Accused dislikes Target
value < 0
}
}
modifier = {
factor = 25
reverse_opinion = {
target = scope:victim.primary_spouse # Target dislikes Accused
value < 0
}
}
modifier = { # Accused is a villain
factor = 50
OR = {
has_education_intrigue_trigger = yes
has_trait = deceitful
has_trait = lustful
has_trait = seducer
}
}
}
save_scope_as = accused
}
}
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Arrest
name = {
trigger = {
OR = {
AND = {
scope:victim = { is_male = yes }
scope:accused = { is_male = yes }
}
AND = {
scope:victim = { is_female = yes }
scope:accused = { is_female = yes }
}
}
NOT = {
faith = { has_doctrine = doctrine_homosexuality_accepted }
}
}
text = hold_court.8161.a.homosexual
}
name = {
trigger = {
OR = {
AND = {
scope:victim.primary_spouse = { is_female = yes }
NOT = {
faith = { has_doctrine = doctrine_adultery_women_accepted }
}
}
AND = {
scope:victim.primary_spouse = { is_male = yes }
NOT = {
faith = { has_doctrine = doctrine_adultery_men_accepted }
}
}
}
}
text = hold_court.8161.a.adultery
}
trigger = { hold_court_8161_religious_crime_trigger = yes }
if = {
limit = {
OR = {
AND = {
scope:victim.primary_spouse = { is_female = yes }
NOT = {
faith = { has_doctrine = doctrine_adultery_women_accepted }
}
}
AND = {
scope:victim.primary_spouse = { is_male = yes }
NOT = {
faith = { has_doctrine = doctrine_adultery_men_accepted }
}
}
}
}
add_opinion = {
modifier = fornicator_crime
target = scope:accused
}
}
else = {
add_opinion = {
modifier = deviant_crime
target = scope:accused
}
}
scope:victim.primary_spouse = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
scope:accused = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -10
}
add_opinion = {
modifier = angry_opinion
target = scope:victim.primary_spouse
opinion = -10
}
}
if = {
limit = {
exists = cp:councillor_court_chaplain
NOR = {
cp:councillor_court_chaplain = scope:accused
cp:councillor_court_chaplain = scope:victim
cp:councillor_court_chaplain = scope:victim.primary_spouse
}
NOR = {
AND = {
scope:victim.primary_spouse = { is_female = yes }
faith = { has_doctrine = doctrine_adultery_women_accepted }
}
AND = {
scope:victim.primary_spouse = { is_male = yes }
faith = { has_doctrine = doctrine_adultery_men_accepted }
}
}
}
cp:councillor_court_chaplain = {
add_opinion = {
modifier = pious_opinion
target = root
opinion = 10
}
}
}
stress_impact = {
just = medium_stress_impact_gain
cynical = medium_stress_impact_gain
deviant = medium_stress_impact_gain
lustful = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -0.25
ai_compassion = -1
ai_zeal = 1
}
modifier = { #Weight down for stress.
add = -30
has_trait = just
}
modifier = { #Weight down for stress.
add = -30
has_trait = cynical
}
modifier = { #Weight down for stress.
add = -30
has_trait = deviant
}
modifier = { #Weight down for stress.
add = -30
has_trait = lustful
}
}
}
option = { # Attempt to find truth
name = hold_court.8161.c
show_as_tooltip = {
duel = {
skill = intrigue
target = scope:accused
1 = {
show_chance = no
desc = hold_court.8160.c.tt_success
hold_court_8160_imprison_effect = yes
}
1 = {
show_chance = no
desc = hold_court.8160.c.tt_failure
scope:accused = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -10
}
}
}
}
}
hidden_effect = {
duel = {
skill = intrigue
target = scope:accused
8 = {
trigger = {
scope:victim_scheme ?= {
any_scheme_agent_character = { this = scope:accused }
}
}
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
send_interface_toast = {
title = hold_court.8160.c.tt_success
left_icon = scope:accused
right_icon = scope:victim
hold_court_8160_imprison_effect = yes
}
}
12 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
send_interface_toast = {
title = hold_court.8160.c.tt_failure
left_icon = scope:accused
right_icon = scope:victim
scope:accused = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -10
}
}
}
}
}
}
stress_impact = {
arbitrary = medium_stress_impact_gain
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 1
ai_compassion = 1
ai_zeal = -1
ai_energy = -1
ai_rationality = 1
}
modifier = { #Weight down for stress.
add = -30
has_trait = arbitrary
}
modifier = { #Weight down for stress.
add = -30
has_trait = lazy
}
}
}
option = { # Dismiss
name = {
trigger = {
scope:victim_scheme ?= {
any_scheme_agent_character = { this = root }
}
}
text = hold_court.8161.d.involved
}
name = {
trigger = {
OR = {
AND = {
scope:victim.primary_spouse = { is_female = yes }
faith = { has_doctrine = doctrine_adultery_women_accepted }
}
AND = {
scope:victim.primary_spouse = { is_male = yes }
faith = { has_doctrine = doctrine_adultery_men_accepted }
}
}
}
text = hold_court.8161.d.permitted
}
name = {
trigger = { always = yes }
text = hold_court.8161.d.fallback
}
scope:victim_scheme ?= {
if = {
limit = {
any_scheme_agent_character = { this = root }
}
add_scheme_progress = scheme_progress_gain
}
}
scope:victim.primary_spouse = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
stress_impact = {
chaste = medium_stress_impact_gain
}
if = {
limit = { hold_court_8161_religious_crime_trigger = yes }
stress_impact = {
zealous = medium_stress_impact_gain
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 0.5
ai_compassion = 0.5
ai_energy = -2
}
modifier = { #Weight down for stress.
add = -30
has_trait = chaste
}
modifier = { #Weight down for stress.
add = -30
hold_court_8161_religious_crime_trigger = yes
has_trait = zealous
}
}
}
after = {
scope:victim = {
clear_court_event_participation = yes
primary_spouse = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Noble Privileges
# by Joe Parkin
# 8180
##################################################
# Is there a duke or higher vassal has room for a positive contract change?
scripted_trigger hold_court_8180_lord_trigger = {
has_court_event_flag = no
is_available_ai_adult = yes
primary_title.tier >= tier_duchy
government_has_flag = government_is_feudal
subject_contract_is_blocked_from_modification = no
NOT = { has_variable = hc_8180_contract_var }
NOT = { has_hook = root }
OR = {
AND = {
faith != liege.faith
vassal_contract_obligation_level_can_be_increased = religious_rights # Religious
}
AND = {
liege.culture = { has_innovation = innovation_battlements }
vassal_contract_obligation_level_can_be_increased = fortification_rights # Fortification
}
AND = {
liege.culture = { has_innovation = innovation_currency_02 }
vassal_contract_obligation_level_can_be_increased = coinage_rights # Coinage
}
AND = {
liege = {
OR = { # Only relevant if war declaration is limited
has_realm_law = crown_authority_2
has_realm_law = crown_authority_3
}
}
vassal_contract_obligation_level_can_be_increased = war_declaration_rights # War Declaration
}
vassal_contract_obligation_level_can_be_increased = council_rights # Council
AND = {
NOT = {
liege = { has_realm_law = crown_authority_0 } # Only relevant if revocation is possible
}
vassal_contract_obligation_level_can_be_increased = title_revocation_rights # Title Revocation
}
AND = { # Scutage
liege.culture = {
has_innovation = innovation_scutage
}
NOT = { vassal_contract_has_flag = has_scutage_contract }
}
AND = { # March
liege.culture = {
has_innovation = innovation_burhs
}
NOT = { vassal_contract_has_flag = has_march_contract }
}
AND = { # Palatinate
liege.culture = {
has_innovation = innovation_divine_right
}
NOT = { vassal_contract_has_flag = has_palatinate_contract }
}
}
}
# Increase the relevant contract
scripted_effect hold_court_8180_grant_contract_effect = {
switch = {
trigger = var:hc_8180_contract_var
1 = { # Religious
vassal_contract_set_obligation_level = {
type = religious_rights
level = 1
}
}
2 = { # Fortification
vassal_contract_set_obligation_level = {
type = fortification_rights
level = 1
}
}
3 = { # Coinage
vassal_contract_set_obligation_level = {
type = coinage_rights
level = 1
}
}
4 = { # War Declaration
vassal_contract_set_obligation_level = {
type = war_declaration_rights
level = 1
}
}
5 = { # Council Rights
vassal_contract_set_obligation_level = {
type = council_rights
level = 1
}
}
6 = { # Title Revocation
vassal_contract_set_obligation_level = {
type = title_revocation_rights
level = 1
}
}
7 = { # Scutage
vassal_contract_set_obligation_level = {
type = special_contract
level = 1
}
}
8 = { # March
vassal_contract_set_obligation_level = {
type = special_contract
level = 2
}
}
9 = { # Palatinate
vassal_contract_set_obligation_level = {
type = special_contract
level = 3
}
}
}
hidden_effect = { set_subject_contract_modification_blocked = yes }
}
# A vassal wants a contract buff
hold_court.8180 = {
type = court_event
title = hold_court.8180.t
desc = {
desc = hold_court.8180.desc.intro
first_valid = { # Contract Type
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 1 }
desc = hold_court.8180.desc.religious # Religious
}
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 2 }
desc = hold_court.8180.desc.fortification # Fortification
}
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 3 }
desc = hold_court.8180.desc.coinage # Coinage
}
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 4 }
desc = hold_court.8180.desc.war_declaration # War Declaration
}
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 5 }
desc = hold_court.8180.desc.council # Council
}
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 6 }
desc = hold_court.8180.desc.title_revocation # Title Revocation
}
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 7 }
desc = hold_court.8180.desc.scutage # Scutage
}
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 8 }
desc = hold_court.8180.desc.march # March
}
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 9 }
desc = hold_court.8180.desc.palatinate # Palatinate
}
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 10 }
desc = hold_court.8180.desc.family_entrepeneurship # Family Entrepeneurship
}
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 11 }
desc = hold_court.8180.desc.centralized_power # Centralized Power
}
}
first_valid = { # Context
# Religious
triggered_desc = {
trigger = {
scope:contract_lord.var:hc_8180_contract_var = 1 # Religious
scope:contract_lord.religion = root.religion
}
desc = hold_court.8180.desc.religious_heretic # Heretic
}
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 1 } # Religious
desc = hold_court.8180.desc.religious_heathen # Heathen
}
# Martial
triggered_desc = {
trigger = {
OR = {
scope:contract_lord.var:hc_8180_contract_var = 2 #Fortification
scope:contract_lord.var:hc_8180_contract_var = 8 # March
}
}
desc = hold_court.8180.desc.martial_defensive # Defensive
}
triggered_desc = {
trigger = {
scope:contract_lord.var:hc_8180_contract_var = 4 # War Declaration
scope:contract_lord.var:hc_8180_contract_var = 7 # Scutage
}
desc = hold_court.8180.desc.martial_offensive # Offensive
}
# Stewardship
triggered_desc = {
trigger = {
OR = {
scope:contract_lord.var:hc_8180_contract_var = 3 # Coinage
scope:contract_lord.var:hc_8180_contract_var = 11 # Centralized Power
}
}
desc = hold_court.8180.desc.stewardship
}
# Status
triggered_desc = {
trigger = {
OR = {
scope:contract_lord.var:hc_8180_contract_var = 5 # Council
scope:contract_lord.var:hc_8180_contract_var = 9 # Palatinate
}
}
desc = hold_court.8180.desc.status
}
# Family
triggered_desc = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 10 } #Family Entrepeneurship
desc = hold_court.8180.desc.family
}
# Other
desc = hold_court.8180.desc.fallback # General
}
}
theme = court
artifact = {
target = scope:vassal_artifact
position = lower_right_portrait
}
court_scene = {
button_position_character = scope:contract_lord
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:contract_lord = {
group = petitioners_group
animation = admiration
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
is_adult = yes
any_vassal = { hold_court_8180_lord_trigger = yes }
}
weight_multiplier = {
base = 1
modifier = {
add = 1
any_vassal = {
hold_court_8180_lord_trigger = yes
OR = {
has_trait = greedy
has_trait = ambitious
has_trait = shrewd
has_trait = intellect_good_1
has_trait = intellect_good_2
has_trait = intellect_good_3
}
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
capital_barony = { save_scope_as = capital }
random_vassal = {
limit = {
hold_court_8180_lord_trigger = yes
primary_title.tier = tier_kingdom # Prefer Kings...
}
alternative_limit = {
hold_court_8180_lord_trigger = yes
primary_title.tier = tier_duchy # ...then Dukes.
}
weight = {
base = 1
modifier = {
factor = 2
NOT = { vassal_contract_obligation_level_can_be_decreased = special_contract } # No existing special contract
}
modifier = {
factor = 2
is_powerful_vassal = yes
}
modifier = {
factor = 2
OR = {
vassal_contract_obligation_level_can_be_increased = feudal_government_taxes
vassal_contract_obligation_level_can_be_increased = feudal_government_levies
}
}
modifier = {
factor = 2
does_ai_vassal_in_vassal_contract_desire_obligation_change = yes
}
modifier = {
factor = 2
has_trait = greedy
has_trait = ambitious
has_trait = shrewd
has_trait = intellect_good_1
has_trait = intellect_good_2
has_trait = intellect_good_3
}
}
save_scope_as = contract_lord
court_event_character_flag_effect = yes
if = {
limit = {
any_held_title = {
count > 1
title_tier = county
is_landless_type_title = no
}
}
ordered_held_title = {
title_tier = county
limit = {
this != holder.capital_county
de_jure_liege.holder = root
is_landless_type_title = no
}
alternative_limit = {
tier = tier_county
this != holder.capital_county
any_neighboring_county = { holder = root }
is_landless_type_title = no
}
alternative_limit = {
tier = tier_county
this != holder.capital_county
is_landless_type_title = no
}
order_by = {
value = 0
subtract = development_level
}
save_scope_as = vassal_title
}
}
if = {
limit = {
any_character_artifact = { exists = yes }
}
ordered_character_artifact = {
order_by = artifact_rarity
save_scope_as = vassal_artifact
}
}
hidden_effect = {
random_list = {
1 = { # Religious Rights / 1
trigger = {
faith != liege.faith
vassal_contract_obligation_level_can_be_increased = religious_rights
}
modifier = {
factor = 2
faith != liege.faith
}
modifier = {
factor = 2
religion != liege.religion
}
modifier = {
factor = 2
has_trait = zealous
}
modifier = { factor = 4 } # contract relative value
set_variable = {
name = hc_8180_contract_var
value = 1
years = 20 # cooldown for this character
}
}
1 = { # Fortification Rights / 2
trigger = {
liege.culture = { has_innovation = innovation_battlements }
vassal_contract_obligation_level_can_be_increased = fortification_rights
}
modifier = {
factor = 2
any_sub_realm_county = { hold_court_8010_county_trigger = yes }
}
modifier = {
factor = 2
has_education_martial_trigger = yes
}
modifier = {
factor = 2
has_martial_lifestyle_trait_trigger = yes
}
modifier = { factor = 2 } # contract relative value
set_variable = {
name = hc_8180_contract_var
value = 2
years = 20 # cooldown for this character
}
}
1 = { # Coinage Rights / 3
trigger = {
liege.culture = { has_innovation = innovation_currency_02 }
vassal_contract_obligation_level_can_be_increased = coinage_rights
}
modifier = {
factor = 2
has_education_stewardship_trigger = yes
}
modifier = {
factor = 2
has_stewardship_lifestyle_trait_trigger = yes
}
modifier = {
factor = 2
has_trait = arrogant
}
modifier = { factor = 2 } # contract relative value
set_variable = {
name = hc_8180_contract_var
value = 3
years = 20 # cooldown for this character
}
}
1 = { # War Declaration / 4
trigger = {
liege = {
OR = { # Only relevant if war declaration is limited
has_realm_law = crown_authority_2
has_realm_law = crown_authority_3
}
}
vassal_contract_obligation_level_can_be_increased = war_declaration_rights
}
modifier = {
factor = 2
has_education_martial_trigger = yes
}
modifier = {
factor = 2
has_martial_lifestyle_trait_trigger = yes
}
modifier = {
factor = 2
has_trait = ambitious
}
modifier = {
factor = 2
has_trait = wrathful
}
modifier = { factor = 3 } # contract relative value
set_variable = {
name = hc_8180_contract_var
value = 4
years = 20 # cooldown for this character
}
}
1 = { # Council Rights / 5
trigger = { vassal_contract_obligation_level_can_be_increased = council_rights }
modifier = {
factor = 2
has_trait = ambitious
}
modifier = {
factor = 2
has_trait = arrogant
}
modifier = {
factor = 2
dynasty.dynasty_prestige_level >= liege.dynasty.dynasty_prestige_level
}
modifier = { factor = 4 } # contract relative value
set_variable = {
name = hc_8180_contract_var
value = 5
years = 20 # cooldown for this character
}
}
1 = { # Title Revocation / 6
trigger = {
NOT = {
liege = { has_realm_law = crown_authority_0 }
}
vassal_contract_obligation_level_can_be_increased = title_revocation_rights
}
modifier = {
factor = 2
has_trait = paranoid
}
modifier = {
factor = 2
has_trait = craven
}
modifier = { factor = 4 } # contract relative value
set_variable = {
name = hc_8180_contract_var
value = 6
years = 20 # cooldown for this character
}
}
1 = { # Scutage / 7
trigger = {
liege.culture = {
has_innovation = innovation_scutage
}
NOT = { vassal_contract_obligation_level_can_be_decreased = special_contract } # No existing special contract
}
modifier = {
factor = 2
OR = {
has_education_martial_trigger = yes
has_martial_lifestyle_trait_trigger = yes
}
}
modifier = { factor = 3 } # contract relative value
set_variable = {
name = hc_8180_contract_var
value = 7
years = 20 # cooldown for this character
}
}
1 = { # March / 8
trigger = {
liege.culture = {
has_innovation = innovation_burhs
}
NOT = { vassal_contract_obligation_level_can_be_decreased = special_contract } # No existing special contract
}
modifier = {
factor = 2
has_education_martial_trigger = yes
}
modifier = {
factor = 2
has_martial_lifestyle_trait_trigger = yes
}
modifier = { factor = 3 } # contract relative value
set_variable = {
name = hc_8180_contract_var
value = 8
years = 20 # cooldown for this character
}
}
1 = { # Palatinate / 9
trigger = {
liege.culture = {
has_innovation = innovation_divine_right
}
is_powerful_vassal = yes
NOT = { vassal_contract_obligation_level_can_be_decreased = special_contract } # No existing special contract
}
modifier = {
factor = 2
has_education_diplomacy_trigger = yes
}
modifier = {
factor = 2
has_diplomacy_lifestyle_trait_trigger = yes
}
modifier = {
factor = 2
has_trait = arrogant
}
modifier = {
factor = 2
dynasty.dynasty_prestige_level >= liege.dynasty.dynasty_prestige_level
}
modifier = { factor = 5 } # contract relative value
set_variable = {
name = hc_8180_contract_var
value = 9
years = 20 # cooldown for this character
}
}
}
if = { # Determine whether tax or levies can be increased, and is relevant
limit = {
has_variable = hc_8180_contract_var
var:hc_8180_contract_var != 9 # Palatinate
OR = {
vassal_contract_obligation_level_can_be_increased = feudal_government_taxes
vassal_contract_obligation_level_can_be_increased = feudal_government_levies
}
}
random_list = {
1 = {
trigger = {
var:hc_8180_contract_var != 8 # March
var:hc_8180_contract_var != 11 # Centralized Power / Support
vassal_contract_obligation_level_can_be_increased = feudal_government_taxes
}
modifier = {
factor = 10
vassal_contract_obligation_level:feudal_government_taxes < vassal_contract_obligation_level:feudal_government_levies
}
set_variable = {
name = hc_8180_increase_var
value = 1
}
}
1 = {
trigger = {
var:hc_8180_contract_var != 7 # Scutage
var:hc_8180_contract_var != 10 # Family Entrepeneurship
vassal_contract_obligation_level_can_be_increased = feudal_government_levies
}
modifier = {
factor = 10
vassal_contract_obligation_level:feudal_government_levies < vassal_contract_obligation_level:feudal_government_taxes
}
set_variable = {
name = hc_8180_increase_var
value = 2
}
}
}
}
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Accept
name = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 1 }
text = hold_court.8180.a.religious
}
name = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 2 }
text = hold_court.8180.a.fortification
}
name = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 3 }
text = hold_court.8180.a.coinage
}
name = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 4 }
text = hold_court.8180.a.war_declaration
}
name = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 5 }
text = hold_court.8180.a.council
}
name = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 6 }
text = hold_court.8180.a.title_revocation
}
name = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 7 }
text = hold_court.8180.a.scutage
}
name = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 8 }
text = hold_court.8180.a.march
}
name = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 9 }
text = hold_court.8180.a.palatinate
}
name = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 10 }
text = hold_court.8180.a.family_entrepeneurship
}
name = {
trigger = { scope:contract_lord.var:hc_8180_contract_var = 11 }
text = hold_court.8180.a.centralized_power
}
if = {
limit = {
can_add_hook = {
target = scope:contract_lord
type = indebted_hook
}
}
add_hook = {
target = scope:contract_lord
type = indebted_hook
}
}
scope:contract_lord = {
hold_court_8180_grant_contract_effect = yes
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 20
}
}
stress_impact = {
greedy = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -2
ai_compassion = 1
ai_boldness = 1
}
modifier = { #Weight down for stress.
add = -30
has_trait = greedy
}
}
}
option = { # Demand payment
name = hold_court.8180.b
trigger = {
scope:contract_lord = { short_term_gold >= root.medium_gold_value }
}
random_list = {
2 = {
desc = hold_court.8180.b.tt.success
modifier = {
factor = 2
scope:contract_lord = { has_trait = content }
}
modifier = {
factor = 2
scope:contract_lord = { has_trait = generous }
}
modifier = { factor = hold_court_8180_contract_value } # based on relative worth of contract
send_interface_toast = {
title = hold_court.8180.b.tt.success
scope:contract_lord = {
pay_short_term_gold = {
target = root
gold = root.medium_gold_value
}
hold_court_8180_grant_contract_effect = yes
add_opinion = {
modifier = annoyed_opinion
target = root
opinion = -5
}
}
}
}
7 = {
desc = hold_court.8180.b.tt.failure
modifier = {
factor = 2
scope:contract_lord = { has_trait = greedy }
}
modifier = {
factor = 2
scope:contract_lord = { has_trait = ambitious }
}
send_interface_toast = {
title = hold_court.8180.b.tt.failure
scope:contract_lord = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -15
}
}
}
}
}
stress_impact = {
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 2
ai_compassion = -0.25
ai_rationality = 1
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
}
}
option = { # Demand artifact
name = hold_court.8180.c
trigger = { exists = scope:vassal_artifact }
random_list = {
2 = {
desc = hold_court.8180.c.tt.success
modifier = {
factor = 2
scope:contract_lord = { has_trait = content }
}
modifier = {
factor = 2
scope:contract_lord = { has_trait = generous }
}
modifier = { factor = hold_court_8180_contract_value } # based on relative worth of contract
send_interface_toast = {
title = hold_court.8180.c.tt.success
scope:contract_lord = {
scope:vassal_artifact = {
set_owner = { target = root }
}
hold_court_8180_grant_contract_effect = yes
add_opinion = {
modifier = annoyed_opinion
target = root
opinion = -5
}
}
}
}
7 = {
desc = hold_court.8180.b.tt.failure
modifier = {
factor = 2
scope:contract_lord = { has_trait = greedy }
}
modifier = {
factor = 2
scope:contract_lord = { has_trait = ambitious }
}
modifier = {
factor = scope:vassal_artifact.var:quality # half of artifact quality
trigger = {
scope:vassal_artifact = { has_variable = quality }
}
}
send_interface_toast = {
title = hold_court.8180.b.tt.failure
scope:contract_lord = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -15
}
}
}
}
}
stress_impact = {
generous = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 2
ai_compassion = -0.25
ai_rationality = 1
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -30
has_trait = generous
}
}
}
option = { # Demand title
name = hold_court.8180.d
trigger = { exists = scope:vassal_title }
random_list = {
2 = {
desc = hold_court.8180.d.tt.success
modifier = {
factor = 2
scope:contract_lord = { has_trait = content }
}
modifier = {
factor = 2
scope:contract_lord = { has_trait = generous }
}
modifier = { factor = hold_court_8180_contract_value } # based on relative worth of contract
send_interface_toast = {
title = hold_court.8180.d.tt.success
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:vassal_title = {
change_title_holder = {
holder = root
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:contract_lord = { hold_court_8180_grant_contract_effect = yes }
}
}
7 = {
desc = hold_court.8180.b.tt.failure
modifier = {
factor = 2
scope:contract_lord = { has_trait = greedy }
}
modifier = {
factor = 2
scope:contract_lord = { has_trait = ambitious }
}
modifier = {
factor = 2
OR = {
scope:vassal_title.de_jure_liege.holder = root
scope:contract_lord.primary_title = { is_de_jure_liege_or_above_target = scope:vassal_title }
}
}
send_interface_toast = {
title = hold_court.8180.b.tt.failure
scope:contract_lord = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -15
}
}
}
}
}
stress_impact = {
generous = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 2
ai_compassion = -0.25
ai_rationality = 1
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -30
has_trait = generous
}
}
}
option = { # Demand forced partition
name = hold_court.8180.e
trigger = {
scope:contract_lord = { vassal_contract_obligation_level_can_be_increased = succession_rights }
}
random_list = {
3 = {
desc = hold_court.8180.e.tt.success
modifier = {
factor = 2
scope:contract_lord = { has_trait = content }
}
modifier = {
factor = 2
scope:contract_lord = { has_trait = generous }
}
modifier = { factor = hold_court_8180_contract_value } # based on relative worth of contract
send_interface_toast = {
title = hold_court.8180.e.tt.success
scope:contract_lord = {
hold_court_8180_grant_contract_effect = yes
vassal_contract_set_obligation_level = {
type = succession_rights
level = 1
}
add_opinion = {
modifier = annoyed_opinion
target = root
opinion = -5
}
}
}
}
6 = {
desc = hold_court.8180.b.tt.failure
modifier = {
factor = 2
scope:contract_lord = { has_trait = greedy }
}
modifier = {
factor = 2
scope:contract_lord = { has_trait = ambitious }
}
modifier = {
factor = 2
any_heir = { count > 1 }
}
send_interface_toast = {
title = hold_court.8180.b.tt.failure
scope:contract_lord = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -15
}
}
}
}
}
stress_impact = {
trusting = medium_stress_impact_gain
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -0.5
ai_greed = 1
ai_compassion = -0.25
ai_rationality = 1
ai_boldness = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = trusting
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
}
}
option = { # Demand contract change
name = hold_court.8180.f
trigger = {
scope:contract_lord = { has_variable = hc_8180_increase_var }
}
scope:contract_lord = {
hold_court_8180_grant_contract_effect = yes
if = {
limit = { var:hc_8180_increase_var = 1 }
vassal_contract_increase_obligation_level = feudal_government_taxes
}
else = { vassal_contract_increase_obligation_level = feudal_government_levies }
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 0.5
ai_compassion = 0.5
ai_rationality = 0.5
ai_boldness = -1
}
}
}
option = { # Dismiss vassal
name = hold_court.8180.g
scope:contract_lord = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
stress_impact = {
greedy = medium_stress_impact_gain
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 1
ai_compassion = -0.5
ai_rationality = -0.25
ai_boldness = 0.5
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
}
}
after = {
scope:contract_lord = {
clear_court_event_participation = yes
if = {
limit = { has_variable = hc_8180_increase_var }
remove_variable = hc_8180_increase_var
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Enemy Within
# by Joe Parkin
# 8190
##################################################
# A vassal wants a foreigner vassal to convert
hold_court.8190 = {
type = court_event
title = hold_court.8190.t
desc = {
desc = hold_court.8190.desc.intro
random_valid = {
triggered_desc = {
trigger = {
NOT = {
scope:other_vassal.culture = { has_same_culture_ethos = root.culture }
}
}
desc = hold_court.8190.desc.ethos
}
triggered_desc = {
trigger = {
NOT = {
scope:other_vassal.culture = { has_same_culture_heritage = root.culture }
}
}
desc = hold_court.8190.desc.heritage
}
triggered_desc = {
trigger = {
NOT = {
scope:other_vassal.culture = { has_same_culture_language = root.culture }
}
}
desc = hold_court.8190.desc.language
}
desc = hold_court.8190.desc.fallback
}
desc = hold_court.8190.desc.body
}
theme = court
lower_right_portrait = scope:other_vassal
court_scene = {
button_position_character = scope:aggressor_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:aggressor_vassal = {
group = petitioners_group
animation = rage
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
any_vassal = { # Is there a vassal who is not root culture?
is_available_ai_adult = yes
culture != root.culture
save_temporary_scope_as = other_temp
}
any_vassal = { # Is there another vassal of root culture who is not humble and doesn't like the other one?
has_court_event_flag = no
is_available_ai_adult = yes
culture = root.culture
NOT = { has_trait = humble }
NOR = {
has_relation_friend = scope:other_temp
scope:other_temp = {
has_friendly_relationship_trigger = { CHARACTER = prev }
}
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
random_vassal = {
limit = {
is_available_ai_adult = yes
culture != root.culture
}
weight = {
base = 1
modifier = { # Victim is at least a count
factor = 2
primary_title.tier > tier_barony
}
}
save_scope_as = other_vassal
}
random_vassal = {
limit = {
is_available_ai_adult = yes
culture = root.culture
NOT = { has_trait = humble }
NOR = {
has_relation_friend = scope:other_vassal
scope:other_vassal = {
has_friendly_relationship_trigger = { CHARACTER = prev }
}
}
}
weight = {
modifier = { # Aggressor is arrogant
factor = 4
has_trait = arrogant
}
modifier = { # Aggressor is a meanie
factor = 2
OR = {
has_trait = vengeful
has_trait = wrathful
has_trait = arbitrary
}
}
modifier = { # Aggressor is not a baron/mayor
factor = 2
primary_title.tier > tier_barony
}
modifier = { # Aggressor borders the victim
factor = 2
any_held_title = {
title_tier = county
any_neighboring_county = { holder = scope:other_vassal }
}
}
modifier = { # Aggressor has claim beef with victim
factor = 2
any_claim = {
OR = {
holder = scope:other_vassal
de_jure_liege.holder = scope:other_vassal
de_facto_liege.holder = scope:other_vassal
}
}
}
modifier = { # Aggressor is a rival of the victim
factor = 4
has_relation_rival = scope:other_vassal
}
modifier = { # Aggressor doesn't like the victim
factor = 2
opinion = {
target = scope:other_vassal
value <= 0
}
}
modifier = { # Aggressor is the same rank as the victim
factor = 2
primary_title.tier = scope:other_vassal.primary_title.tier
}
modifier = { # Aggressor is a powerful vassal
factor = 2
is_powerful_vassal = yes
}
}
save_scope_as = aggressor_vassal
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Demand culture adoption
name = hold_court.8190.a
add_dread = miniscule_dread_gain
scope:aggressor_vassal = {
culture = {
change_cultural_acceptance = {
target = scope:other_vassal.culture
value = -10
desc = cultural_intolerance_tt
}
}
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 10
}
}
every_vassal = {
limit = {
culture != root.culture
}
custom = hold_court.8190.a.tt.vassals
add_opinion = {
target = root
modifier = hurt_opinion
opinion = -10
}
}
if = {
limit = {
any_realm_county = { culture = scope:other_vassal.culture }
}
every_realm_county = {
limit = { culture = scope:other_vassal.culture }
custom = hold_court.8190.a.tt.promote
add_county_modifier = {
modifier = hold_court_8190_vassal_modifier
years = 15
}
}
}
random_list = {
40 = {
modifier = {
add = -20
NOT = {
scope:other_vassal.culture = { has_same_culture_heritage = root.culture }
}
}
modifier = {
add = -20
scope:other_vassal = { has_trait = stubborn }
}
show_chance = no
desc = hold_court.8190.a.tt_accept
send_interface_toast = {
title = hold_court.8190.a.tt_accept
left_icon = scope:other_vassal
save_scope_as = actor
scope:other_vassal = { save_scope_as = recipient }
add_prestige = minor_prestige_gain
new_culture_created_vassal_conversion_effect = {
CONVERTEE = scope:recipient
CONVERTER = scope:actor
CULTURE = scope:actor.culture
}
}
}
60 = {
show_chance = no
desc = hold_court.8190.a.tt_refuse
send_interface_toast = {
title = hold_court.8190.a.tt_refuse
left_icon = scope:other_vassal
scope:other_vassal = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -15
}
}
stress_impact = { zealous = medium_stress_impact_gain }
}
}
}
stress_impact = {
just = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
humble = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -1
ai_boldness = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
modifier = { #Weight down for stress.
add = -15
has_trait = humble
}
}
}
option = { # Cultural acceptance
name = hold_court.8190.b
duel = {
skill = diplomacy
target = scope:aggressor_vassal
8 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = hold_court.8190.b.tt_success
send_interface_toast = {
title = hold_court.8190.b.tt_success
left_icon = scope:aggressor_vassal
right_icon = scope:other_vassal
scope:aggressor_vassal.culture = {
change_cultural_acceptance = {
target = scope:other_vassal.culture
value = 10
desc = cultural_benevolence_tt
}
}
}
}
12 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = hold_court.8190.b.tt_failure
send_interface_toast = {
title = hold_court.8190.b.tt_failure
add_prestige = medium_prestige_loss
}
}
}
scope:aggressor_vassal = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -10
}
}
scope:other_vassal = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
if = {
limit = {
any_vassal = {
culture = scope:other_vassal.culture
this != scope:other_vassal
}
}
every_vassal = {
limit = {
culture = scope:other_vassal.culture
this != scope:other_vassal
}
custom = hold_court.8190.b.tt.vassals
add_opinion = {
target = root
modifier = respect_opinion
opinion = 5
}
}
}
stress_impact = {
arrogant = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 2
ai_boldness = 1
}
modifier = { #Weight down for stress.
add = -30
has_trait = arrogant
}
}
}
option = { # Side with other vassal
name = hold_court.8190.c
trigger = {
NOT = { has_relation_rival = scope:other_vassal }
}
scope:aggressor_vassal = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -20
}
}
scope:other_vassal = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
progress_towards_friend_effect = {
REASON = friend_respected_foreign_culture
CHARACTER = root
OPINION = 0
}
}
stress_impact = {
arrogant = medium_stress_impact_gain
shy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 1
ai_boldness = 0.5
}
modifier = { #Weight down for stress.
add = -15
has_trait = arrogant
}
modifier = { #Weight down for stress.
add = -15
has_trait = shy
}
}
}
option = { # All cultures are equal
name = hold_court.8190.d
change_current_court_grandeur = minor_court_grandeur_gain
every_vassal = {
limit = {
culture != root.culture
}
custom = hold_court.8190.a.tt.vassals
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
scope:aggressor_vassal = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -15
}
}
if = {
limit = {
any_vassal = {
culture = root.culture
has_trait = arrogant
this != scope:aggressor_vassal
}
}
every_vassal = {
limit = {
culture = root.culture
has_trait = arrogant
this != scope:aggressor_vassal
}
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -5
}
}
}
stress_impact = {
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 2
ai_boldness = 0.5
}
modifier = { #Weight down for stress.
add = -15
has_trait = arrogant
}
}
}
after = {
scope:aggressor_vassal = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Servant of God
# by Joe Parkin
# 8200
##################################################
scripted_trigger hold_court_8200_infidel_trigger = {
is_available_ai_adult = yes
faith != root.faith
NOR = {
AND = { # Eastern
religion = { is_in_family = rf_eastern }
root.faith = { has_doctrine = tenet_eastern_syncretism }
}
AND = { # Pagan
faith = { has_doctrine_parameter = unreformed }
root.faith = { has_doctrine = tenet_unreformed_syncretism }
}
AND = { # Christian
OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion }
root.faith = { has_doctrine = tenet_christian_syncretism }
}
AND = { # Islam
religion = religion:islam_religion
root.faith = { has_doctrine = tenet_islamic_syncretism }
}
AND = { # Judaism
religion = religion:judaism_religion
root.faith = { has_doctrine = tenet_jewish_syncretism }
}
}
NAND = {
government_has_flag = government_is_theocracy
primary_title = { is_head_of_faith = yes }
any_held_title = {
count = 0
title_tier < duchy
}
}
}
# A vassal wants an infidel vassal to convert
hold_court.8200 = {
type = court_event
title = hold_court.8200.t
desc = {
desc = hold_court.8200.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:infidel_vassal = { # Victim is a religious head with no other titles
government_has_flag = government_is_theocracy
primary_title = { is_head_of_faith = yes }
}
}
desc = hold_court.8200.desc.pope
}
desc = hold_court.8200.desc.vassal
}
desc = hold_court.8200.desc.body
}
theme = court
lower_right_portrait = scope:infidel_vassal
court_scene = {
button_position_character = scope:aggressor_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:aggressor_vassal = {
group = petitioners_group
animation = rage
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
NOT = {
faith = { has_doctrine = doctrine_pluralism_pluralistic }
}
any_vassal = { # Is there a vassal who is not root faith?
hold_court_8200_infidel_trigger = yes
save_temporary_scope_as = other_temp
}
any_vassal = { # Is there another vassal of root faith who is not cynical and doesn't like the other one?
has_court_event_flag = no
is_available_ai_adult = yes
faith = root.faith
NOT = { has_trait = cynical }
NOR = {
has_relation_friend = scope:other_temp
scope:other_temp = {
has_friendly_relationship_trigger = { CHARACTER = prev }
}
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
random_vassal = {
limit = { hold_court_8200_infidel_trigger = yes }
weight = {
modifier = {
factor = 2
primary_title.tier > tier_barony
}
}
save_scope_as = infidel_vassal
}
random_vassal = {
limit = {
is_available_ai_adult = yes
faith = root.faith
NOR = {
has_relation_friend = scope:infidel_vassal
scope:infidel_vassal = {
has_friendly_relationship_trigger = { CHARACTER = prev }
}
}
}
weight = {
modifier = { # Aggressor is zealous
factor = 4
has_trait = zealous
}
modifier = { # Aggressor is a meanie
factor = 2
OR = {
has_trait = vengeful
has_trait = wrathful
has_trait = arbitrary
}
}
modifier = { # Aggressor is not a baron/mayor
factor = 2
primary_title.tier > tier_barony
}
modifier = { # Aggressor borders the victim
factor = 2
any_held_title = {
title_tier = county
any_neighboring_county = { holder = scope:infidel_vassal }
}
}
modifier = { # Aggressor has claim beef with victim
factor = 2
any_claim = {
OR = {
holder = scope:infidel_vassal
de_jure_liege.holder = scope:infidel_vassal
de_facto_liege.holder = scope:infidel_vassal
}
}
}
modifier = { # Aggressor is a rival of the victim
factor = 4
has_relation_rival = scope:infidel_vassal
}
modifier = { # Aggressor doesn't like the victim
factor = 2
opinion = {
target = scope:infidel_vassal
value <= 0
}
}
modifier = { # Aggressor is the same rank as the victim
factor = 2
primary_title.tier = scope:infidel_vassal.primary_title.tier
}
modifier = { # Aggressor is a powerful vassal
factor = 2
is_powerful_vassal = yes
}
}
save_scope_as = aggressor_vassal
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Demand the vassal's conversion
name = hold_court.8200.a
add_dread = miniscule_dread_gain
scope:aggressor_vassal = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 10
}
}
every_vassal = {
limit = {
NOR = {
faith = root.faith
this = scope:infidel_vassal
}
}
custom = hold_court.8200.a.tt.vassals
add_opinion = {
target = root
modifier = hurt_opinion
opinion = -10
}
}
if = {
limit = {
any_realm_county = { faith = scope:infidel_vassal.faith }
}
every_realm_county = {
limit = { faith = scope:infidel_vassal.faith }
custom = hold_court.8200.a.tt.convert
add_county_modifier = {
modifier = hold_court_8200_vassal_modifier
years = 15
}
}
}
random_list = {
40 = {
modifier = {
add = -20
scope:infidel_vassal.religion != root.religion
}
modifier = {
add = -20
scope:infidel_vassal = { has_trait = zealous }
}
show_chance = no
desc = hold_court.8200.a.tt_accept
send_interface_toast = {
title = hold_court.8200.a.tt_accept
left_icon = scope:infidel_vassal
add_piety = medium_piety_gain
save_scope_as = actor
scope:infidel_vassal = { save_scope_as = recipient }
demand_conversion_interaction_effect = yes
}
}
60 = {
show_chance = no
desc = hold_court.8200.a.tt_refuse
send_interface_toast = {
title = hold_court.8200.a.tt_refuse
left_icon = scope:infidel_vassal
if = {
limit = {
refusing_conversion_is_crime_trigger = {
CHARACTER = scope:infidel_vassal
}
}
add_opinion = {
modifier = illegal_resisted_conversion_opinion
target = scope:infidel_vassal
}
}
scope:infidel_vassal = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -15
}
}
stress_impact = { zealous = medium_stress_impact_gain }
}
}
}
stress_impact = {
cynical = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -2
ai_zeal = 2
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = cynical
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
}
}
option = { # Adopt heretic's faith
name = hold_court.8200.c
trigger = {
NOT = { has_trait = zealous }
}
if = {
limit = { religion = scope:infidel_vassal.religion }
add_piety = medium_piety_loss
}
else = { add_piety = major_piety_loss }
scope:aggressor_vassal = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -40
}
}
scope:infidel_vassal = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
every_vassal = {
limit = {
faith = scope:infidel_vassal.faith
this != scope:infidel_vassal
}
custom = hold_court.8200.c.tt.vassals
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 5
}
}
set_character_faith_with_conversion = scope:infidel_vassal.faith
stress_impact = {
zealous = massive_stress_impact_gain
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 25
ai_value_modifier = {
ai_compassion = 2
ai_zeal = -4
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -60
has_trait = zealous
}
modifier = { #Weight down for stress.
add = -15
has_trait = cynical
}
}
}
option = { # Side with the heretic
name = hold_court.8200.d
trigger = {
NOT = { has_relation_rival = scope:infidel_vassal }
}
scope:aggressor_vassal = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -20
}
}
scope:infidel_vassal = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
progress_towards_friend_effect = {
REASON = friend_respected_other_religion
CHARACTER = root
OPINION = 0
}
}
stress_impact = {
zealous = medium_stress_impact_gain
shy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 2
ai_zeal = -2
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = zealous
}
modifier = { #Weight down for stress.
add = -15
has_trait = shy
}
}
}
option = { # Dismiss zealotry
name = hold_court.8200.e
trigger = {
NOT = { has_trait = zealous }
}
change_current_court_grandeur = minor_court_grandeur_gain
every_vassal = {
limit = {
faith != root.faith
}
custom = hold_court.8200.a.tt.vassals
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
scope:aggressor_vassal = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -15
}
}
if = {
limit = {
any_vassal = {
faith = root.faith
has_trait = zealous
this != scope:aggressor_vassal
}
}
every_vassal = {
limit = {
faith = root.faith
has_trait = zealous
this != scope:aggressor_vassal
}
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -5
}
}
}
stress_impact = {
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 1
ai_zeal = -2
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = zealous
}
}
}
after = {
scope:aggressor_vassal = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Rightful Lands
# by Joe Parkin
# 8210 - 211
##################################################
scripted_trigger hold_court_8210_claim_trigger = {
tier = tier_county
is_landless_type_title = no
NOT = { this = root.capital_county }
holder = {
NOT = { this = $VASSAL$ }
OR = {
AND = {
this = root
root = {
any_held_title = {
count > 1
tier = tier_county
is_landless_type_title = no
}
}
}
is_vassal_of = root
}
NOR = {
has_friendly_relationship_trigger = { CHARACTER = $VASSAL$ }
is_parent_of = $VASSAL$
is_spouse_of = $VASSAL$
}
}
}
scripted_trigger hold_court_8210_vassal_trigger = {
has_court_event_flag = no
is_available_ai_adult = yes
NOT = { has_trait = content }
is_at_war = no
NOT = { is_close_family_of = root }
save_temporary_scope_as = vassal_temp
OR = {
any_de_jure_claim = {
hold_court_8210_claim_trigger = { VASSAL = scope:vassal_temp }
}
any_claim = {
hold_court_8210_claim_trigger = { VASSAL = scope:vassal_temp }
}
any_held_title = {
title_tier = county
any_neighboring_county = {
holder = {
this = root
NOR = {
has_friendly_relationship_trigger = { CHARACTER = scope:vassal_temp }
is_parent_of = scope:vassal_temp
is_spouse_of = scope:vassal_temp
}
}
}
}
}
}
scripted_effect hold_court_8211_duel_win_effect = {
if = {
limit = {
NOR = {
this = root
scope:defender_vassal = root
}
}
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
}
scripted_effect hold_court_8211_duel_lose_effect = {
if = {
limit = {
this != root
}
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -10
}
}
}
# A vassal wants a dejure or claimed county from another vassal
hold_court.8210 = {
type = court_event
title = hold_court.8210.t
desc = {
desc = hold_court.8210.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:aggressor_vassal = {
any_de_jure_claim = { this = scope:vassal_claim }
}
}
desc = hold_court.8210.desc.de_jure
}
triggered_desc = {
trigger = {
scope:aggressor_vassal = { has_strong_claim_on = scope:vassal_claim }
}
desc = hold_court.8210.desc.strong
}
desc = hold_court.8210.desc.weak
}
first_valid = {
triggered_desc = {
trigger = { scope:defender_vassal = root }
desc = hold_court.8210.desc.self
}
desc = hold_court.8210.desc.other
}
}
theme = court
lower_right_portrait = scope:defender_vassal
court_scene = {
button_position_character = scope:aggressor_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:aggressor_vassal = {
group = petitioners_group
animation = disapproval
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
cooldown = { years = 10 }
trigger = {
any_vassal = { hold_court_8210_vassal_trigger = yes } # Is there a vassal with a de jure claim on a title held by another vassal?
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
random_vassal = {
limit = { hold_court_8210_vassal_trigger = yes }
weight = {
modifier = {
factor = 4
primary_title.tier > tier_barony
}
modifier = { # Aggressor is a meanie
factor = 2
OR = {
has_trait = vengeful
has_trait = wrathful
}
}
modifier = { # Aggressor is a coward
factor = 2
has_trait = craven
}
modifier = { # Aggressor is a powerful vassal
factor = 2
is_powerful_vassal = yes
}
modifier = {
factor = 10
any_de_jure_claim = {
hold_court_8210_claim_trigger = { VASSAL = scope:vassal_temp }
}
}
modifier = {
factor = 5
any_claim = {
hold_court_8210_claim_trigger = { VASSAL = scope:vassal_temp }
}
}
}
save_scope_as = aggressor_vassal
court_event_character_flag_effect = yes
if = {
limit = {
any_de_jure_claim = {
hold_court_8210_claim_trigger = { VASSAL = scope:aggressor_vassal }
}
}
random_de_jure_claim = {
limit = {
hold_court_8210_claim_trigger = { VASSAL = scope:aggressor_vassal }
}
weight = {
modifier = {
factor = 4
any_neighboring_county = { holder = scope:aggressor_vassal }
}
modifier = {
factor = 2
de_jure_liege.tier = tier_duchy
}
modifier = {
factor = 2
holder.max_military_strength > scope:aggressor_vassal.max_military_strength
}
modifier = { # More relevant if war declaration is limited
factor = 2
root = {
OR = {
has_realm_law = crown_authority_2
has_realm_law = crown_authority_3
}
}
}
modifier = {
factor = 2
scope:aggressor_vassal = { has_strong_claim_on = prev }
}
modifier = {
factor = 4
holder = { has_relation_rival = scope:aggressor_vassal }
}
modifier = {
factor = 4
holder = {
reverse_opinion = {
target = scope:aggressor_vassal
value <= 0
}
}
}
}
save_scope_as = vassal_claim
holder = { save_scope_as = defender_vassal }
}
}
else_if = {
limit = {
any_claim = {
hold_court_8210_claim_trigger = { VASSAL = scope:aggressor_vassal }
}
}
random_claim = {
limit = {
hold_court_8210_claim_trigger = { VASSAL = scope:aggressor_vassal }
}
weight = {
modifier = {
factor = 4
any_neighboring_county = { holder = scope:aggressor_vassal }
}
modifier = {
factor = 2
de_jure_liege.tier = tier_duchy
}
modifier = {
factor = 2
holder.max_military_strength > scope:aggressor_vassal.max_military_strength
}
modifier = { # More relevant if war declaration is limited
factor = 2
root = {
OR = {
has_realm_law = crown_authority_2
has_realm_law = crown_authority_3
}
}
}
modifier = {
factor = 2
scope:aggressor_vassal = { has_strong_claim_on = prev }
}
}
save_scope_as = vassal_claim
holder = { save_scope_as = defender_vassal }
}
}
else = {
random_held_title = {
title_tier = county
limit = {
any_neighboring_county = {
NOT = { this = root.capital_county }
holder = {
this = root
NOR = {
has_friendly_relationship_trigger = { CHARACTER = scope:aggressor_vassal }
is_parent_of = scope:aggressor_vassal
is_spouse_of = scope:aggressor_vassal
}
}
}
}
random_neighboring_county = {
limit = {
NOT = { this = root.capital_county }
holder = {
this = root
NOR = {
has_friendly_relationship_trigger = { CHARACTER = scope:aggressor_vassal }
is_parent_of = scope:aggressor_vassal
is_spouse_of = scope:aggressor_vassal
}
}
}
save_scope_as = vassal_claim
holder = { save_scope_as = defender_vassal }
}
}
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Support claimant
name = hold_court.8210.a
trigger = {
trigger_if = {
limit = {
scope:aggressor_vassal = {
NOR = {
any_de_jure_claim = { this = scope:vassal_claim }
has_claim_on = scope:vassal_claim
}
}
}
scope:defender_vassal != root
}
}
if = {
limit = { scope:defender_vassal = root }
}
else_if = {
limit = {
scope:aggressor_vassal = {
NOR = {
any_de_jure_claim = { this = scope:vassal_claim }
has_strong_claim_on = scope:vassal_claim
}
}
}
add_tyranny = major_tyranny_gain
}
else = { add_tyranny = minor_tyranny_gain }
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:vassal_claim = {
change_title_holder = {
holder = scope:aggressor_vassal
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:aggressor_vassal = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
if = {
limit = { scope:defender_vassal = root }
stress_impact = {
greedy = medium_stress_impact_gain
}
}
else = {
scope:defender_vassal = {
progress_towards_rival_effect = {
CHARACTER = scope:aggressor_vassal
REASON = rival_claimant_fight
OPINION = 0
}
add_opinion = {
target = root
modifier = angry_opinion
opinion = -30
}
}
stress_impact = {
just = medium_stress_impact_gain
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -2
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
modifier = { #Weight up for relatives.
add = 2
scope:aggressor_vassal = { is_close_family_of = root }
NOT = {
scope:defender_vassal = { is_close_family_of = root }
}
}
}
}
option = { # Start vassal war
name = hold_court.8210.b
trigger = {
is_valid_for_east_asian_events_trigger = no
NOT = {
faith = { has_doctrine = tenet_pacifism }
}
NOR = {
has_realm_law = crown_authority_2
has_realm_law = crown_authority_3
}
scope:defender_vassal != root
}
scope:aggressor_vassal = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -10
}
add_character_flag = temp_no_claim_war_cost
start_war = {
cb = claim_cb
target = scope:vassal_claim.holder
claimant = scope:aggressor_vassal
target_title = scope:vassal_claim
}
remove_character_flag = temp_no_claim_war_cost
}
scope:defender_vassal = {
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -10
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
craven = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 1
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
modifier = { #Weight down for stress.
add = -15
has_trait = craven
}
modifier = {
add = 30
culture = { has_cultural_pillar = ethos_bellicose }
}
}
}
option = { # Start vassal duel
name = {
trigger = {
scope:defender_vassal != root
}
text = hold_court.8210.f.other
}
name = {
trigger = { always = yes }
text = hold_court.8210.f.self
}
trigger = {
is_valid_for_east_asian_events_trigger = no
scope:defender_vassal = { is_adult = yes }
}
custom_tooltip = hold_court.8210.duel_tt
show_as_tooltip = {
random_list = {
10 = {
show_chance = no
desc = hold_court.8210.b.tt_aggressor
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:vassal_claim = {
change_title_holder = {
holder = scope:aggressor_vassal
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:aggressor_vassal = { hold_court_8211_duel_win_effect = yes }
scope:defender_vassal = { hold_court_8211_duel_lose_effect = yes }
}
10 = {
show_chance = no
desc = hold_court.8210.b.tt_defender
scope:defender_vassal = { hold_court_8211_duel_win_effect = yes }
scope:aggressor_vassal = { hold_court_8211_duel_lose_effect = yes }
}
}
}
configure_start_single_combat_effect = {
SC_INITIATOR = scope:aggressor_vassal
SC_ATTACKER = scope:aggressor_vassal
SC_DEFENDER = scope:defender_vassal
FATALITY = no
FIXED = no
LOCALE = terrain_scope
OUTPUT_EVENT = hold_court.8211
INVALIDATION_EVENT = fp1_tbc.0102
}
stress_impact = {
lifestyle_blademaster = medium_stress_impact_loss
viking = medium_stress_impact_loss
varangian = medium_stress_impact_loss
berserker = medium_stress_impact_loss
brave = medium_stress_impact_loss
}
stress_impact = {
compassionate = medium_stress_impact_gain
craven = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 1
ai_boldness = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
modifier = { #Weight down for stress.
add = -15
has_trait = craven
}
modifier = {
add = 30
OR = {
culture = { has_cultural_tradition = tradition_martial_admiration }
culture = { has_cultural_tradition = tradition_chivalry }
culture = { has_cultural_tradition = tradition_futuwaa }
has_trait = gallant
has_perk = stalwart_leader_perk
}
}
}
}
option = { # Support defender
name = {
trigger = {
NOR = {
scope:aggressor_vassal = {
any_de_jure_claim = { this = scope:vassal_claim }
}
scope:aggressor_vassal = { has_claim_on = scope:vassal_claim }
}
}
text = hold_court.8210.c.none
}
name = {
trigger = { scope:defender_vassal = root }
text = hold_court.8210.c.self
}
name = {
trigger = {
scope:defender_vassal != root
}
text = hold_court.8210.c.other
}
scope:aggressor_vassal = {
if = {
limit = {
NOT = {
any_de_jure_claim = { this = scope:vassal_claim }
}
}
add_opinion = {
target = root
modifier = angry_opinion
opinion = -30
}
if = {
limit = { has_strong_claim_on = scope:vassal_claim }
make_claim_weak = scope:vassal_claim
}
else = { remove_claim = scope:vassal_claim }
}
else = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -15
}
}
}
if = {
limit = {
scope:defender_vassal != root
}
scope:defender_vassal = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 15
}
progress_towards_friend_effect = {
REASON = friend_took_side_in_dispute
CHARACTER = root
OPINION = 0
}
}
}
stress_impact = {
arbitrary = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 1
ai_honor = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = arbitrary
}
}
}
option = { # Change liege
name = hold_court.8210.e
trigger = {
scope:defender_vassal != root
scope:aggressor_vassal = {
any_de_jure_claim = { this = scope:vassal_claim }
}
scope:defender_vassal.primary_title.tier < scope:aggressor_vassal.primary_title.tier
}
create_title_and_vassal_change = {
type = created
save_scope_as = change
add_claim_on_loss = no
}
scope:defender_vassal = {
change_liege = {
liege = scope:aggressor_vassal
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:aggressor_vassal = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 10
}
}
scope:defender_vassal = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -5
}
}
stress_impact = {
arbitrary = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = -1
ai_honor = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = arbitrary
}
}
}
option = { # Not my problem
name = hold_court.8210.d
trigger = {
scope:defender_vassal != root
}
add_prestige = minor_prestige_gain
scope:aggressor_vassal = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -10
}
}
scope:defender_vassal = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 5
}
}
stress_impact = {
arrogant = medium_stress_impact_gain
diligent = medium_stress_impact_gain
just = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = -2
ai_honor = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = arrogant
}
modifier = { #Weight down for stress.
add = -15
has_trait = diligent
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
}
}
after = {
scope:aggressor_vassal = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
hold_court.8211 = {
hidden = yes
immediate = {
scope:aggressor_vassal.liege = {
send_interface_toast = {
title = hold_court.8031.t
left_icon = scope:sc_victor
right_icon = scope:sc_loser
scope:sc_victor = {
if = {
limit = {
this != scope:vassal_claim.holder
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:vassal_claim = {
change_title_holder = {
holder = scope:sc_victor
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
if = {
limit = {
liege != root
}
hold_court_8211_duel_win_effect = yes
}
}
scope:sc_loser = {
if = {
limit = {
NOR = {
liege = root
this = root
}
}
hold_court_8211_duel_lose_effect = yes
}
}
}
}
}
}
##################################################
# The King's Peace
# by Joe Parkin
# 8260
##################################################
scripted_trigger hold_court_8260_faction_trigger = {
exists = yes
OR = {
faction_is_type = liberty_faction
faction_is_type = claimant_faction
}
OR = {
faction_power >= faction_power_threshold
faction_is_at_war = yes
}
trigger_if = {
limit = { exists = special_character }
special_character != root
}
}
hold_court.8260 = {
type = court_event
title = hold_court.8260.t
desc = {
desc = hold_court.8260.desc.intro
first_valid = {
triggered_desc = {
trigger = {
exists = scope:vassal_faction.special_character
scope:vassal_faction.faction_leader = scope:vassal_faction.special_character
scope:vassal_faction = { faction_is_type = claimant_faction }
}
desc = hold_court.8220.desc.claimant_self
}
triggered_desc = {
trigger = {
scope:vassal_faction = { faction_is_type = claimant_faction }
}
desc = hold_court.8220.desc.claimant
}
triggered_desc = {
trigger = { always = yes }
desc = hold_court.8220.desc.liberty
}
}
desc = hold_court.8260.desc.body
}
theme = court
override_background = { reference = throne_room }
cooldown = { years = 10 }
lower_center_portrait = {
character = scope:vassal_faction.special_character
trigger = {
scope:vassal_faction = {
exists = special_character
special_character != faction_leader
}
}
}
lower_right_portrait = scope:vassal_faction.faction_leader
court_scene = {
button_position_character = scope:vassal_faction.faction_target
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:vassal_faction_target = {
group = petitioners_group
animation = anger
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
trigger = {
any_vassal = {
has_court_event_flag = no
is_available_ai_adult = yes
any_targeting_faction = { target_of_powerful_faction_trigger = yes }
}
}
immediate = {
random_vassal = {
limit = {
has_court_event_flag = no
is_available_ai_adult = yes
any_targeting_faction = { target_of_powerful_faction_trigger = yes }
}
weight = {
base = 1
modifier = {
factor = 4
any_targeting_faction = { faction_can_press_demands = yes }
}
modifier = {
factor = 4
any_targeting_faction = {
faction_type = claimant_faction
special_title ?= prev.primary_title
}
}
modifier = {
factor = 8
is_close_family_of = root
}
modifier = {
factor = 2
this = root.primary_heir
}
modifier = {
factor = 0.5
primary_title.tier < tier_duchy
}
}
save_scope_as = vassal_faction_target
court_event_character_flag_effect = yes
ordered_targeting_faction = {
limit = {
target_of_powerful_faction_trigger = yes
faction_can_press_demands = yes
}
alternative_limit = {
target_of_powerful_faction_trigger = yes
faction_is_at_war = yes
}
alternative_limit = { target_of_powerful_faction_trigger = yes }
order_by = faction_discontent
save_scope_as = vassal_faction
faction_leader = { save_scope_as = vassal_faction_leader } # For loc
if = {
limit = { exists = special_character }
special_character = { save_scope_as = vassal_claimant }
}
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Break up the faction/force surrender
name = {
trigger = {
scope:vassal_faction = { faction_is_at_war = yes }
}
text = hold_court.8260.a.war
}
name = {
trigger = { always = yes }
text = hold_court.8260.a.peace
}
scope:vassal_faction = {
faction_target = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 10
}
}
if = {
limit = {
exists = special_character
NOT = {
any_faction_member = { this = scope:vassal_faction.special_character }
}
}
special_character = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -10
}
}
}
if = {
limit = { faction_is_at_war = no }
every_faction_member = {
custom = hold_court_8260_faction_member_tt
add_faction_cooldown_effect = { YEARS = faction_war_white_peace_cooldown }
add_opinion = {
target = root
modifier = angry_opinion
opinion = -10
}
}
destroy_faction = yes
}
else = {
every_faction_member = {
custom = hold_court_8260_faction_member_tt
add_faction_cooldown_effect = { YEARS = faction_war_defeat_cooldown }
add_opinion = {
target = root
modifier = angry_opinion
opinion = -25
}
}
faction_war = { end_war = defender }
}
}
stress_impact = {
arbitrary = medium_stress_impact_gain
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 2
ai_energy = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = arbitrary
}
modifier = { #Weight down for stress.
add = -15
has_trait = lazy
}
modifier = { #Weight up for family
add = 25
scope:vassal_faction.faction_target = { is_close_family_of = root }
}
modifier = { #Weight up for relatives
add = 25
scope:vassal_faction.faction_target = { is_close_or_extended_family_of = root }
}
}
}
option = { # Imprison faction leader
name = hold_court.8260.b
add_dread = minor_dread_gain
scope:vassal_faction.faction_target = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
imprison_character_effect = {
TARGET = scope:vassal_faction.faction_leader
IMPRISONER = root
}
scope:vassal_faction = {
if = {
limit = {
exists = special_character
faction_leader != special_character
}
special_character = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -20
}
}
}
every_faction_member = {
limit = { is_a_faction_leader = no }
custom = hold_court_8260_faction_member_tt
add_faction_cooldown_effect = { YEARS = faction_war_defeat_cooldown }
add_opinion = {
target = root
modifier = angry_opinion
opinion = -20
}
}
scope:vassal_faction = {
if = {
limit = { faction_is_at_war = no }
destroy_faction = yes
}
else = {
faction_war = { end_war = defender }
}
}
}
stress_impact = {
just = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = -1
ai_compassion = -2
ai_boldness = 1
ai_vengefulness = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
modifier = { #Weight down for stress.
add = -15
has_trait = forgiving
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
}
}
option = { # End war white peace
name = hold_court.8260.c
trigger = {
scope:vassal_faction = { faction_is_at_war = yes }
}
scope:vassal_faction = {
scope:vassal_faction.faction_target = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 5
}
}
if = {
limit = {
exists = special_character
faction_leader != special_character
}
special_character = {
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -5
}
}
}
every_faction_member = {
limit = { is_a_faction_leader = no }
custom = hold_court_8260_faction_member_tt
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -5
}
}
faction_war = { end_war = white_peace }
}
stress_impact = {
arbitrary = medium_stress_impact_gain
wrathful = medium_stress_impact_gain
vengeful = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 2
ai_compassion = 1
ai_boldness = 1
ai_vengefulness = -1
}
modifier = { #Weight down for stress.
add = -15
has_trait = arbitrary
}
modifier = { #Weight down for stress.
add = -15
has_trait = wrathful
}
}
}
option = { # Make vassal surrender
name = hold_court.8260.d
add_tyranny = minor_tyranny_gain
scope:vassal_faction = {
faction_target = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -30
}
}
faction_leader = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
if = {
limit = {
exists = special_character
faction_leader != special_character
}
special_character = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
}
every_faction_member = {
limit = { is_a_faction_leader = no }
custom = hold_court_8260_faction_member_tt
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 10
}
}
if = {
limit = { faction_is_at_war = no }
if = {
limit = { faction_is_type = claimant_faction }
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = yes
}
special_title = {
change_title_holder_include_vassals = {
holder = scope:vassal_faction.special_character
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
else = {
faction_target = { decrease_crown_authority_effect = yes }
}
}
else = {
faction_war = { end_war = attacker }
}
hidden_effect = {
if = {
limit = {exists = scope:vassal_faction }
destroy_faction = yes
}
}
}
stress_impact = {
paranoid = medium_stress_impact_gain
trusting = medium_stress_impact_gain
vengeful = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = -2
ai_compassion = -1
ai_boldness = 1
ai_vengefulness = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
modifier = { #Weight down for family
add = -25
scope:vassal_faction.faction_target = { is_close_family_of = root }
}
modifier = { #Weight down for relatives
add = -25
scope:vassal_faction.faction_target = { is_close_or_extended_family_of = root }
}
}
}
option = { # Refuse
name = hold_court.8260.e
scope:vassal_faction = {
faction_target = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -10
}
}
every_faction_member = {
custom = hold_court_8260_faction_member_tt
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -5
}
}
}
stress_impact = {
humble = medium_stress_impact_gain
diligent = medium_stress_impact_gain
just = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 1
ai_compassion = 1
ai_boldness = -1
ai_vengefulness = -1
}
modifier = { #Weight down for stress.
add = -15
has_trait = humble
}
modifier = { #Weight down for stress.
add = -15
has_trait = diligent
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
}
}
after = {
scope:vassal_faction_target = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Oath of Fealty
# by Joe Parkin
# 8270
##################################################
scripted_trigger hold_court_8270_neighbor_trigger = {
has_court_event_flag = no
is_available_ai_adult = yes
top_liege = this
primary_title.tier < root.primary_title.tier
primary_title.tier <= tier_duchy
NOT = { has_relation_rival = root }
opinion = {
target = root
value >= -25
}
NOT = {
faith = {
faith_hostility_level = {
target = root.faith
value >= faith_hostile_level
}
}
}
any_neighboring_top_liege_realm_owner = {
count >= 2
primary_title.tier >= prev.primary_title.tier
NOT = { is_allied_to = prev }
max_military_strength > prev.max_military_strength
}
calc_true_if = {
amount >= 2
primary_title = { # is a de jure vassal
any_this_title_or_de_jure_above = {
this != prev
holder = root
}
}
OR = { # cultural acceptance is good
culture = root.culture
culture = {
cultural_acceptance = { target = root.culture value >= 50 }
}
}
primary_title.tier = tier_county
}
}
hold_court.8270 = {
type = court_event
title = hold_court.8270.t
desc = hold_court.8270.desc
theme = court
override_background = { reference = throne_room }
cooldown = { years = 15 }
court_scene = {
button_position_character = scope:neighbor
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:neighbor = {
group = petitioners_group
animation = admiration
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
any_neighboring_top_liege_realm_owner = { hold_court_8270_neighbor_trigger = yes }
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
random_neighboring_top_liege_realm_owner = {
limit = { hold_court_8270_neighbor_trigger = yes }
weight = {
base = 1
modifier = {
factor = 4
is_close_or_extended_family_of = root
}
modifier = {
factor = 10
primary_title.tier = tier_county
}
modifier = {
factor = 4
faith = root.faith
}
modifier = {
factor = 2
religion = root.religion
}
modifier = {
factor = 2
culture = root.culture
}
modifier = {
factor = 4
opinion = {
target = root
value >= 50
}
}
modifier = {
factor = 4
any_neighboring_top_liege_realm_owner = {
this != root
primary_title.tier >= tier_kingdom
OR = {
AND = {
prev.faith = root.faith
faith != prev.faith
}
AND = {
prev.religion = root.religion
religion != prev.religion
}
AND = {
prev.culture = root.culture
culture != prev.culture
}
}
}
}
}
save_scope_as = neighbor
court_event_character_flag_effect = yes
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Accept
name = hold_court.8270.a
create_title_and_vassal_change = {
type = swear_fealty
save_scope_as = change
add_claim_on_loss = no
}
scope:neighbor = {
change_liege = {
liege = root
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:neighbor = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 10
}
# Feudal vassals get contracts.
if = {
limit = { government_has_flag = government_is_feudal }
hidden_effect = {
if = {
limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated)
vassal_contract_set_obligation_level = { type = feudal_government_taxes level = 1 }
vassal_contract_set_obligation_level = { type = feudal_government_levies level = 1 }
}
}
custom_tooltip = low_obligations_taxes
custom_tooltip = low_obligations_levies
}
}
stress_impact = {
greedy = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 2
ai_greed = -2
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
modifier = { #Weight down for stress.
add = -15
has_trait = paranoid
}
}
}
option = { # Demand better deal
name = hold_court.8270.b
random_list = {
2 = {
show_chance = no
desc = hold_court.8270.b.accept
modifier = {
factor = 2
scope:neighbor = { has_trait = craven }
}
modifier = {
factor = 2
scope:neighbor = { has_trait = fickle }
}
modifier = {
factor = 2
scope:neighbor = { has_trait = content }
}
modifier = {
factor = 2
scope:neighbor = { has_trait = humble }
}
modifier = {
factor = 2
scope:neighbor = { has_trait = wrathful }
}
modifier = {
factor = 2
scope:neighbor = { has_trait = vengeful }
}
send_interface_toast = {
title = hold_court.8270.b.accept
left_icon = scope:neighbor
create_title_and_vassal_change = {
type = swear_fealty
save_scope_as = change
add_claim_on_loss = no
}
scope:neighbor = {
change_liege = {
liege = root
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
custom_tooltip = normal_obligations_taxes
custom_tooltip = normal_obligations_levies
}
}
4 = {
show_chance = no
desc = hold_court.8270.b.refuse
modifier = {
factor = 2
scope:neighbor = { has_trait = brave }
}
modifier = {
factor = 2
scope:neighbor = { has_trait = stubborn }
}
modifier = {
factor = 2
scope:neighbor = { has_trait = ambitious }
}
modifier = {
factor = 2
scope:neighbor = { has_trait = arrogant }
}
modifier = {
factor = 2
scope:neighbor = { has_trait = patient }
}
modifier = {
factor = 2
scope:neighbor = { has_trait = forgiving }
}
change_current_court_grandeur = medium_court_grandeur_loss
send_interface_toast = {
title = hold_court.8270.b.refuse
left_icon = scope:neighbor
scope:neighbor = {
add_opinion = {
target = root
modifier = insulted_opinion
opinion = -20
}
}
}
}
}
stress_impact = {
generous = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 2
ai_greed = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
}
}
option = { # Refuse
name = hold_court.8270.d
change_current_court_grandeur = minor_court_grandeur_gain
scope:neighbor = {
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -10
}
}
stress_impact = {
honest = medium_stress_impact_gain
trusting = medium_stress_impact_gain
fickle = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 2
ai_rationality = -2
}
modifier = { #Weight down for stress.
add = -15
has_trait = honest
}
modifier = { #Weight down for stress.
add = -15
has_trait = trusting
}
modifier = { #Weight down for stress.
add = -15
has_trait = fickle
}
}
}
after = {
scope:neighbor = {
clear_court_event_participation = yes
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}
##################################################
# Nomadic Neighbors
# by Joe Parkin
# 8280
##################################################
scripted_trigger nomadic_cultural_traditions_trigger = {
culture = {
OR = {
has_cultural_tradition = tradition_horse_lords
has_cultural_tradition = tradition_pastoralists
}
}
}
scripted_trigger hold_court_8280_nomad_county_trigger = {
nomadic_cultural_traditions_trigger = yes
holder = {
government_has_flag = government_is_tribal
this != root
nomadic_cultural_traditions_trigger = yes
trigger_if = {
limit = { top_liege = root }
is_available_ai_adult = yes
}
}
}
scripted_trigger hold_court_8280_feudal_county_trigger = {
nomadic_cultural_traditions_trigger = no
holder = {
has_court_event_flag = no
is_available_ai_adult = yes
nomadic_cultural_traditions_trigger = no
this != root
OR = {
government_has_flag = government_is_feudal
government_has_flag = government_is_clan
}
}
any_neighboring_county = { hold_court_8280_nomad_county_trigger = yes }
}
hold_court.8280 = {
type = court_event
title = hold_court.8280.t
desc = {
first_valid = { #
triggered_desc = {
trigger = {
scope:nomad.top_liege != root
}
desc = hold_court.8280.desc.foreign
}
triggered_desc = {
trigger = { always = yes }
desc = hold_court.8280.desc.local
}
}
}
theme = court
override_background = { reference = throne_room }
cooldown = { years = 15 }
lower_right_portrait = {
character = scope:nomad.top_liege
trigger = {
scope:nomad.top_liege != root
}
}
court_scene = {
button_position_character = scope:feudal_vassal
court_event_force_open = yes
show_timeout_info = no
should_pause_time = yes
roles = {
scope:feudal_vassal = {
group = petitioners_group
animation = worry
}
scope:nomad_same_liege = {
group = petitioners_group
animation = dismissal
}
}
}
widget = {
gui = "event_window_widget_event_chain_progress"
container = "custom_widgets_container"
controller = event_chain_progress
}
trigger = {
nomadic_cultural_traditions_trigger = no
any_realm_county = { hold_court_8280_feudal_county_trigger = yes }
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
random_realm_county = {
limit = {
holder = { is_vassal_of = root }
hold_court_8280_feudal_county_trigger = yes
}
alternative_limit = { hold_court_8280_feudal_county_trigger = yes }
holder = {
save_scope_as = feudal_vassal
court_event_character_flag_effect = yes
}
save_scope_as = feudal_county
ordered_neighboring_county = {
limit = {
holder.top_liege = {
this != root
government_has_flag = government_is_tribal
culture = { has_cultural_tradition = tradition_horse_lords }
}
hold_court_8280_nomad_county_trigger = yes
}
alternative_limit = {
holder.top_liege != root
hold_court_8280_nomad_county_trigger = yes
}
alternative_limit = { hold_court_8280_nomad_county_trigger = yes }
order_by = {
value = 0
subtract = development_level
}
save_scope_as = nomad_county
culture = { save_scope_as = nomad_culture }
holder = { save_scope_as = nomad }
# Set up portrait groups.
scope:nomad = {
if = {
limit = { top_liege = root }
save_scope_as = nomad_same_liege
court_event_character_flag_effect = yes
}
}
}
}
# Trigger next event in chain.
hold_court_queue_next_event_effect = yes
}
option = { # Kick nomads out
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= minor_treasury_or_gold_value
}
}
name = {
trigger = { scope:nomad.top_liege = root }
text = hold_court.8280.a.local
}
name = {
trigger = { always = yes }
text = hold_court.8280.a.foreign
}
add_prestige = medium_prestige_gain
remove_treasury_or_gold = tiny_treasury_or_gold_value
scope:feudal_vassal = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 10
}
}
scope:nomad = {
if = {
limit = {
top_liege != root
}
top_liege = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -10
}
}
}
else = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -10
}
}
culture = {
if = {
limit = {
this != root.culture
}
change_cultural_acceptance = {
target = root.culture
value = -10
desc = cultural_intolerance_tt
}
}
}
}
if = {
limit = {
scope:feudal_vassal.culture != root.culture
}
scope:feudal_vassal.culture = {
if = {
limit = {
this != scope:nomad_culture
}
change_cultural_acceptance = {
target = scope:nomad_culture
value = -10
desc = cultural_intolerance_tt
}
}
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 1
ai_compassion = -1
}
modifier = { #Weight down for stress.
add = -15
has_trait = compassionate
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
}
}
option = { # Recruit them
name = hold_court.8280.b
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
short_term_treasury_or_gold >= massive_treasury_or_gold_value
}
}
remove_treasury_or_gold = major_treasury_or_gold_value
culture = {
if = {
limit = {
this != scope:nomad_culture
}
change_cultural_acceptance = {
target = scope:nomad.culture
value = 10
desc = cultural_intolerance_tt
}
}
}
scope:feudal_vassal = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 10
}
}
scope:nomad = {
if = {
limit = {
top_liege != root
}
top_liege = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
}
else = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
}
add_character_modifier = {
modifier = hold_court_8280_nomadic_guard
years = 5
}
if = {
limit = {
culture != scope:nomad_culture
}
stress_impact = {
paranoid = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
}
}
stress_impact = {
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -2
ai_energy = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
modifier = { #Weight down for stress.
add = -15
culture != scope:nomad_culture
has_trait = paranoid
}
modifier = { #Weight down for stress.
add = -15
culture != scope:nomad_culture
has_trait = arrogant
}
}
}
option = { # Dismiss
name = hold_court.8280.c
scope:feudal_vassal = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -10
}
}
scope:nomad = {
if = {
limit = { top_liege = root }
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
}
scope:feudal_county = { set_county_culture = scope:nomad_culture }
culture = {
if = {
limit = {
this != scope:nomad_culture
}
change_cultural_acceptance = {
target = scope:nomad_culture
value = 5
desc = cultural_intolerance_tt
}
}
}
if = {
limit = {
culture != scope:nomad_culture
}
stress_impact = {
diligent = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
}
}
stress_impact = {
just = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 2
ai_energy = 1
ai_honor = -1
}
modifier = { #Weight down for stress.
add = -15
has_trait = just
}
modifier = { #Weight down for stress.
add = -15
culture != scope:nomad_culture
has_trait = diligent
}
modifier = { #Weight down for stress.
add = -15
culture != scope:nomad_culture
has_trait = paranoid
}
}
}
after = {
scope:feudal_vassal = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:nomad_same_liege }
scope:nomad_same_liege = {
clear_court_event_participation = yes
}
}
# Finish up the chain if relevant.
hold_court_queue_post_event_effect = yes
}
}