N3OW/events/yearly_events/court_yearly_events.txt

6400 lines
135 KiB
Text
Raw Permalink Normal View History

2025-12-16 13:42:24 +00:00
namespace = court_yearly
#####################################
# Growing Debauchery #
# by Sean Hughes #
# 1000-1001 #
#####################################
scripted_trigger court_1000_valid_child = {
is_courtier_of = root
age >= 16
OR = {
can_be_drunkard = yes
can_be_hashishiyah = yes
can_be_rakish = yes
}
NOR = {
has_trait = drunkard
has_trait = hashishiyah
has_trait = rakish
}
}
scripted_effect court_1000_gain_debauchery_trait = {
if = {
limit = { scope:debauchery_type = flag:hashishiyah }
add_trait = hashishiyah
}
else_if = {
limit = { scope:debauchery_type = flag:drunkard }
add_trait = drunkard
}
else_if = {
limit = { scope:debauchery_type = flag:rakish }
add_trait = rakish
}
}
scripted_trigger court_1001_valid_debaucher = {
is_courtier_of = root
age >= 16
exists = scope:debauchery_type
OR = {
AND = {
scope:debauchery_type = flag:hashishiyah
can_be_hashishiyah = yes
}
AND = {
scope:debauchery_type = flag:drunkard
can_be_drunkard = yes
}
AND = {
scope:debauchery_type = flag:rakish
can_be_rakish = yes
}
}
}
court_yearly.1000 = {
type = character_event
title = court.1000.t
desc = {
desc = court.1000.desc.opening
first_valid = {
triggered_desc = {
trigger = { scope:debauchery_type = flag:drunkard }
desc = court.1000.desc.drunkard
}
triggered_desc = {
trigger = { scope:debauchery_type = flag:hashishiyah }
desc = court.1000.desc.hashishiyah
}
triggered_desc = {
trigger = { scope:debauchery_type = flag:rakish }
desc = court.1000.desc.rakish
}
}
desc = court.1000.desc.ending
}
theme = court
left_portrait = {
character = root
animation = stress
}
right_portrait = {
character = scope:child
triggered_animation = {
trigger = {
scope:debauchery_type = flag:drunkard
}
animation = drink
}
triggered_animation = {
trigger = {
scope:debauchery_type = flag:hashishiyah
}
animation = personality_irrational
}
triggered_animation = {
trigger = {
scope:debauchery_type = flag:rakish
}
animation = flirtation
}
}
override_background = {
trigger = {
OR = {
scope:debauchery_type = flag:drunkard
scope:debauchery_type = flag:rakish
}
}
reference = tavern
}
override_background = {
trigger = {
scope:debauchery_type = flag:hashishiyah
}
reference = bp1_wine_cellar
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
any_child = {
court_1000_valid_child = yes
}
NOT = { has_character_flag = court_1000_discouraged_debauchery }
}
weight_multiplier = {
base = 1
# Court weightings.
# ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
random_child = {
limit = {
court_1000_valid_child = yes
}
save_scope_as = child
random_list = {
50 = {
trigger = { can_be_drunkard = yes }
modifier = {
factor = 0.1
OR = {
faith = { trait_is_sin = drunkard }
religion = religion:islam_religion
}
}
save_scope_value_as = {
name = debauchery_type
value = flag:drunkard
}
}
40 = {
trigger = { can_be_hashishiyah = yes }
modifier = {
factor = 0.1
faith = { trait_is_sin = hashishiyah }
}
save_scope_value_as = {
name = debauchery_type
value = flag:hashishiyah
}
}
10 = {
trigger = { can_be_rakish = yes }
modifier = {
factor = 0.1
faith = { trait_is_virtue = lustful }
}
save_scope_value_as = {
name = debauchery_type
value = flag:rakish
}
}
}
}
}
# Option A: Publicly reprimand/humilite your child to make them stop
option = {
name = court.1000.a
scope:child = {
add_prestige_level = -1
add_opinion = {
modifier = angry_opinion
target = root
opinion = -50
}
}
custom_tooltip = court.1000.a.tt
hidden_effect = {
add_character_flag = {
flag = court_1000_discouraged_debauchery
years = 30
}
}
}
# Option B: Give your child a title or court position to try and keep them occupied
option = {
name = court.1000.b
trigger = {
any_held_title = {
title_tier = county
is_landless_type_title = no
count >= 2
}
}
random_held_title = {
title_tier = county
limit = {
is_landless_type_title = no
}
save_scope_as = granted_title
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
}
scope:granted_title = {
change_title_holder = {
holder = scope:child
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:child = {
random_list = {
50 = {
desc = court.1000.b.success
ai_value_modifier = {
ai_energy = 0.5
ai_greed = 0.2
ai_honor = 0.2
}
add_stewardship_skill = 2
}
50 = {
desc = court.1000.b.failure
ai_value_modifier = {
ai_energy = -0.5
ai_greed = -0.2
ai_honor = -0.2
}
court_1000_gain_debauchery_trait = yes
}
}
}
}
# Option C: Let the behavior continue unpunished, maybe joning in from time to time
option = {
name = court.1000.c
scope:child = {
court_1000_gain_debauchery_trait = yes
add_stress = medium_stress_loss
}
add_stress = medium_stress_loss
custom_tooltip = court.1000.c.tt
# Other courtiers might be tempted by the unmoderated indulgence of vices
hidden_effect = {
every_courtier = {
limit = {
this != scope:child
court_1001_valid_debaucher = yes
}
random_list = {
80 = {
# Nothing happens
}
20 = {
ai_value_modifier = {
ai_energy = -0.1
ai_honor = -0.1
}
modifier = {
add = 140
OR = {
AND = {
scope:debauchery_type = flag:drunkard
OR = {
has_trait = gluttonous
has_trait = lifestyle_reveler
}
}
AND = {
scope:debauchery_type = flag:hashishiyah
OR = {
has_trait = gluttonous
has_trait = lazy
}
}
AND = {
scope:debauchery_type = flag:rakish
has_trait = lustful
}
}
}
modifier = {
factor = 0
OR = {
has_trait = temperate
has_trait = zealous
has_trait = chaste
}
}
trigger_event = {
id = court_yearly.1001
days = { 14 60 }
}
}
}
}
}
}
}
court_yearly.1001 = {
hidden = yes
trigger = {
# We are still in the same court as the initial debaucher.
has_royal_court = yes
has_dlc_feature = royal_court
scope:child = {
is_courtier_of = root.court_owner
}
# We are not opposed to debauchery
court_1001_valid_debaucher = yes
}
immediate = {
court_owner = {
if = {
# If we're important to our liege in some way, gain debauchery trait with a notification send to them.
limit = {
is_of_major_interest_trigger = { CHARACTER = root }
}
root = { save_scope_as = courtier }
send_interface_message = {
type = event_generic_neutral
title = court.1001.title
root = {
court_1000_gain_debauchery_trait = yes
}
}
}
else = {
# Otherwise we silently gain the trait, in order to avoid notification spam.
root = {
court_1000_gain_debauchery_trait = yes
}
}
}
}
}
#####################################
# Long Arm of the Law #
# by Sean Hughes #
# 1020 #
#####################################
scripted_trigger court_1020_suitable_guest_trigger = {
# Of suitable age.
age >= 16
# Lacks the principle award.
save_temporary_scope_as = fugitive_check
NOT = {
root = { has_strong_hook = scope:fugitive_check }
}
}
scripted_effect court_1020_remove_opinion_from_root_modifier = {
if = {
limit = {
has_opinion_modifier = {
modifier = $OPINION_MODIFIER$
target = root
}
}
remove_opinion = {
modifier = $OPINION_MODIFIER$
target = root
}
}
}
court_yearly.1020 = {
type = letter_event
opening = court.1020.opening
desc = {
desc = court.1020.desc
first_valid = {
triggered_desc = {
trigger = {scope:compensation = flag:forgive_this}
desc = court.1020.desc.forgive_this
}
triggered_desc = {
trigger = {scope:compensation = flag:forgive_all}
desc = court.1020.desc.forgive_all
}
triggered_desc = {
trigger = {scope:compensation = flag:gold}
desc = court.1020.desc.gold
}
triggered_desc = {
trigger = {scope:compensation = flag:opinion}
desc = court.1020.desc.opinion
}
}
}
sender = scope:foreign_ruler
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
any_pool_guest = { court_1020_suitable_guest_trigger = yes }
any_neighboring_and_across_water_top_liege_realm = {
exists = holder
}
}
weight_multiplier = {
base = 1
}
immediate = {
random_pool_guest = {
limit = { court_1020_suitable_guest_trigger = yes }
save_scope_as = fugitive
}
random_neighboring_and_across_water_top_liege_realm = {
holder = { save_scope_as = foreign_ruler }
}
scope:foreign_ruler = {
random_list = {
33 = {
ai_value_modifier = {
ai_vengefulness = 0.15
ai_greed = 0.1
}
if = {
limit = {
root = { is_ai = no }
scope:foreign_ruler = {
OR = {
has_opinion_modifier = {
modifier = hate_opinion
target = root
}
has_opinion_modifier = {
modifier = refusal_opinion
target = root
}
has_opinion_modifier = {
modifier = suspicion_opinion
target = root
}
has_opinion_modifier = {
modifier = disappointed_opinion
target = root
}
has_opinion_modifier = {
modifier = insult_opinion
target = root
}
has_opinion_modifier = {
modifier = angry_opinion
target = root
}
has_opinion_modifier = {
modifier = declared_war
target = root
}
has_opinion_modifier = {
modifier = declared_war_on_son_daughter
target = root
}
}
}
}
save_scope_value_as = {
name = compensation
value = flag:forgive_all
}
}
else = {
save_scope_value_as = {
name = compensation
value = flag:forgive_this
}
}
}
33 = {
ai_value_modifier = {
ai_greed = -0.3
}
save_scope_value_as = {
name = compensation
value = flag:gold
}
}
33 = {
ai_value_modifier = {
ai_compassion = 0.2
ai_honor = 0.1
}
if = {
limit = {
root = { is_ai = no }
scope:foreign_ruler = {
OR = {
has_opinion_modifier = {
modifier = hate_opinion
target = root
}
has_opinion_modifier = {
modifier = refusal_opinion
target = root
}
has_opinion_modifier = {
modifier = suspicion_opinion
target = root
}
has_opinion_modifier = {
modifier = disappointed_opinion
target = root
}
has_opinion_modifier = {
modifier = insult_opinion
target = root
}
has_opinion_modifier = {
modifier = angry_opinion
target = root
}
has_opinion_modifier = {
modifier = declared_war
target = root
}
has_opinion_modifier = {
modifier = declared_war_on_son_daughter
target = root
}
}
}
}
save_scope_value_as = {
name = compensation
value = flag:forgive_all
}
}
else = {
save_scope_value_as = {
name = compensation
value = flag:opinion
}
}
}
}
}
}
# Option A: Agree to the foreign ruler's demand and hand over the fugitive
option = {
name = court.1020.a
if = {
limit = {
scope:compensation = flag:forgive_all
}
scope:foreign_ruler = {
court_1020_remove_opinion_from_root_modifier = { OPINION_MODIFIER = hate_opinion }
court_1020_remove_opinion_from_root_modifier = { OPINION_MODIFIER = refusal_opinion }
court_1020_remove_opinion_from_root_modifier = { OPINION_MODIFIER = suspicion_opinion }
court_1020_remove_opinion_from_root_modifier = { OPINION_MODIFIER = disappointed_opinion }
court_1020_remove_opinion_from_root_modifier = { OPINION_MODIFIER = insult_opinion }
court_1020_remove_opinion_from_root_modifier = { OPINION_MODIFIER = angry_opinion }
court_1020_remove_opinion_from_root_modifier = { OPINION_MODIFIER = declared_war }
court_1020_remove_opinion_from_root_modifier = { OPINION_MODIFIER = declared_war_on_son_daughter }
}
}
else_if = {
limit = {
scope:compensation = flag:gold
}
scope:foreign_ruler = {
pay_treasury_or_gold = {
target = root
value = minor_treasury_or_gold_value
}
}
}
else_if = {
limit = {
scope:compensation = flag:opinion
}
scope:foreign_ruler = {
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 20
}
}
}
rightfully_imprison_character_effect = {
TARGET = scope:fugitive
IMPRISONER = scope:foreign_ruler
}
}
# Option B: Offer the fugitive your protection, pissing off the foreign ruler
option = {
name = court.1020.b
if = {
limit = {
can_add_hook = {
target = scope:fugitive
type = loyalty_hook
}
}
add_hook = {
type = loyalty_hook
target = scope:fugitive
}
}
scope:foreign_ruler = {
add_opinion = {
modifier = refusal_opinion
target = root
opinion = -30
}
}
}
# Option C: Warn the fugitive and let them escape
option = {
name = court.1020.c
scope:fugitive = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
select_and_move_to_pool_effect = yes
}
scope:foreign_ruler = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -5
}
}
}
}
##################################################
# Competitive Cronying
# by Ewan Cowhig Croft
# 2001 - 2010
##################################################
scripted_trigger court_2001_valid_toadies_available_trigger = {
# Standard checks.
is_available_ai_adult = yes
# Lacks a personality that would actively stop them from toadying:
NOR = {
has_trait = honest
has_trait = arrogant
has_trait = shy
has_trait = content
}
# Isn't immediately related to you.
NOR = {
any_close_or_extended_family_member = { this = root }
any_spouse = { this = root }
}
# And likes you enough to want to suck up to you.
opinion = {
target = root
value >= low_negative_opinion
}
}
court_yearly.2001 = {
type = character_event
title = court.2001.t
desc = court.2001.desc
theme = court
left_portrait = {
character = scope:crony_a
animation = disapproval
}
right_portrait = {
character = scope:crony_b
animation = dismissal
}
cooldown = { years = 10 }
trigger = {
# DLC check.
has_royal_court = yes
has_dlc_feature = royal_court
# Standard checks.
is_available_at_peace_adult = yes
is_landed = yes
# At least two courtiers or guests are suitable toadies.
any_courtier_or_guest = {
count >= 2
court_2001_valid_toadies_available_trigger = yes
}
}
weight_multiplier = {
base = 1
# Court weightings.
# ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
# Grab two random toadies.
random_courtier_or_guest = {
limit = { court_2001_valid_toadies_available_trigger = yes }
weight = {
base = 1
is_of_minor_interest_to_weight_up_modifier = { CHARACTER = root }
is_of_major_interest_to_weight_up_modifier = { CHARACTER = root }
opinion_modifier = {
opinion_target = root
# Cap it a bit so we don't always have opinion gain with characters that already love you.
max = 50
}
}
save_scope_as = crony_a
}
random_courtier_or_guest = {
limit = {
court_2001_valid_toadies_available_trigger = yes
this != scope:crony_a
}
weight = {
base = 1
is_of_minor_interest_to_weight_up_modifier = { CHARACTER = root }
is_of_major_interest_to_weight_up_modifier = { CHARACTER = root }
}
save_scope_as = crony_b
}
}
# Honestly, you could both try harder.
option = {
name = court.2001.a
trigger = {
NOT = { has_trait = sadistic }
}
# Gain opinion with the lackeys as they hard-core focus on sucking up to ye.
reverse_add_opinion = {
target = scope:crony_a
modifier = shamed_me_opinion
opinion = 40
}
reverse_add_opinion = {
target = scope:crony_b
modifier = shamed_me_opinion
opinion = 40
}
# Add a little CGV for all these obsequious toadies constantly making a big deal about you.
change_current_court_grandeur = miniscule_court_grandeur_gain
stress_impact = {
arrogant = miniscule_stress_impact_loss
humble = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.5
ai_greed = 0.25
ai_compassion = -0.5
}
}
}
# Whoever bows lowest gets a shiny coin.
option = {
name = court.2001.a.sadistic
trigger = { has_trait = sadistic }
# Gain opinion with the lackeys as they hard-core focus on sucking up to ye.
reverse_add_opinion = {
target = scope:crony_a
modifier = shamed_me_opinion
opinion = 60
}
reverse_add_opinion = {
target = scope:crony_b
modifier = shamed_me_opinion
opinion = 60
}
# And toss the coin at random.
random_list = {
50 = {
desc = court.2001.a.sadistic.crony_a_wins
send_interface_toast = {
type = event_toast_effect_neutral
title = court.2001.a.sadistic.crony_a_wins
left_icon = scope:crony_a
pay_short_term_gold = {
target = scope:crony_a
gold = 1
}
}
}
50 = {
desc = court.2001.a.sadistic.crony_b_wins
send_interface_toast = {
type = event_toast_effect_neutral
title = court.2001.a.sadistic.crony_b_wins
left_icon = scope:crony_b
pay_short_term_gold = {
target = scope:crony_b
gold = 1
}
}
}
}
# Add a little CGV for all these obsequious toadies constantly making a big deal about you.
change_current_court_grandeur = minor_court_grandeur_gain
stress_impact = {
arrogant = miniscule_stress_impact_loss
humble = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.5
ai_greed = 0.25
ai_compassion = -0.5
}
}
}
# These empty platitudes are disgusting!
option = {
name = court.2001.b
# Gain prestige for renouncing their lackeying.
add_prestige = minor_prestige_gain
# Lose opinion with both.
reverse_add_opinion = {
target = scope:crony_a
modifier = hurt_opinion
opinion = -25
}
reverse_add_opinion = {
target = scope:crony_b
modifier = hurt_opinion
opinion = -25
}
stress_impact = {
humble = miniscule_stress_impact_loss
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -0.25
ai_sociability = -0.25
ai_compassion = -0.25
}
}
}
# There's one obvious way you haven't tried...
option = {
name = court.2001.c
# Both pay you cash-monies.
scope:crony_a = {
pay_short_term_gold = {
target = root
gold = minor_gold_value
}
}
scope:crony_b = {
pay_short_term_gold = {
target = root
gold = minor_gold_value
}
}
# Both dislike you for the direct demand.
reverse_add_opinion = {
target = scope:crony_a
modifier = respect_opinion
opinion = -35
}
reverse_add_opinion = {
target = scope:crony_b
modifier = respect_opinion
opinion = -35
}
stress_impact = {
greedy = miniscule_stress_impact_loss
generous = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 0.75
ai_compassion = -0.25
}
}
}
# This is beneath me.
option = {
name = court.2001.d
# Gain some fame for your straight-talking.
add_prestige_experience = medium_prestige_gain
stress_impact = {
shy = miniscule_stress_impact_loss
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 0.5
ai_sociability = -0.5
}
}
}
}
#########################
# Scrounger Life #
# by Claudia Baldassi #
# 6040-6041 #
#########################
scripted_trigger court_6040_has_valid_scrounger_trigger = {
is_adult = yes
NOR = {
is_close_family_of = root
is_councillor_of = root
}
OR = {
has_trait = lazy
has_trait = greedy
has_trait = gluttonous
has_trait = drunkard
has_trait = comfort_eater
has_trait = profligate
has_trait = rakish
has_trait = hashishiyah
}
OR = {
learning >= 8
diplomacy >= 8
}
}
# You have a useless scrounger at court, but if supported long enough, he turns out to be a great poet (might become a Great Person?) #
court_yearly.6040 = {
type = character_event
title = court.6040.t
desc = court.6040.desc
theme = court
left_portrait = {
character = scope:scrounger
animation = happiness
}
right_portrait = {
character = root
animation = disapproval
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
any_courtier_or_guest = {
court_6040_has_valid_scrounger_trigger = yes
}
NOT = {
has_character_flag = court_6040_cooldown
}
}
weight_multiplier = {
base = 1
# Court weightings.
# ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
add_character_flag = {
flag = court_6040_cooldown
years = 20
}
random_courtier_or_guest = {
limit = {
court_6040_has_valid_scrounger_trigger = yes
}
save_scope_as = scrounger
}
personality_check_shared_good_ruler_traits_effect = {
CHAR1 = root
CHAR2 = scope:scrounger
STRICT = no
}
set_variable = court_6040_best_looking_var
if = {
limit = {
employs_court_position = court_jester_court_position
any_court_position_holder = {
type = court_jester_court_position
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = court_jester_court_position
limit = { is_available_ai_adult = yes }
save_scope_as = jester
}
}
}
after = {
remove_variable = court_6040_best_looking_var
}
# Option A: make them earn their living by making them court jester
option = {
name = court.6040.a
trigger = {
scope:scrounger = { can_be_employed_as = court_jester_court_position }
OR = {
can_employ_court_position_type = court_jester_court_position
exists = scope:jester
}
}
court_position_grant_effect = { POS = court_jester CANDIDATE = scope:scrounger EMPLOYER = root }
change_current_court_grandeur = minor_court_grandeur_gain
every_courtier_or_guest = {
custom = court_6000_all_courtiers_and_guests
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 5
}
}
ai_chance = {
base = 100
}
}
# Option B: tolerate them
option = {
name = court.6040.b
remove_treasury_or_gold = tiny_treasury_or_gold_value
add_prestige = minor_prestige_gain
if = {
limit = {
NOR = {
has_relation_potential_friend = scope:scrounger
has_relation_friend = scope:scrounger
}
can_set_relation_potential_friend_trigger = { CHARACTER = scope:scrounger }
}
set_relation_potential_friend = scope:scrounger
}
else_if = {
limit = {
has_relation_potential_friend = scope:scrounger
can_set_relation_friend_trigger = { CHARACTER = scope:scrounger }
}
set_relation_friend = { reason = friend_amusing_antics target = scope:scrounger }
}
scope:scrounger = {
target_weight_modifier_effect = {
VALUE = 2
}
}
trigger_event = {
id = court_yearly.6041
days = 180
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
ai_sociability = 0.5
}
modifier = {
treasury_or_gold <= tiny_treasury_or_gold_value
add = -200
}
}
}
# Option C: kick them out of court
option = {
name = court.6040.c
remove_courtier_or_guest = {
character = scope:scrounger
}
if = {
limit = {
NOR = {
has_relation_potential_rival = scope:scrounger
has_relation_rival = scope:scrounger
}
can_set_relation_potential_rival_trigger = { CHARACTER = scope:scrounger }
}
set_relation_potential_rival = scope:scrounger
}
else_if = {
limit = {
has_relation_potential_rival = scope:scrounger
can_set_relation_rival_trigger = { CHARACTER = scope:scrounger }
}
set_relation_rival = {
target = scope:scrounger
reason = rival_scrounger_kicked_out_of_court
}
}
add_stress = medium_stress_loss
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -0.5
ai_greed = 0.25
}
}
}
}
court_yearly.6041 = {
type = character_event
title = court.6040.t
desc = court.6041.desc
theme = court
left_portrait = {
character = root
animation = admiration
}
right_portrait = {
character = scope:scrounger
animation = happiness
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
exists = scope:scrounger #checking that they are still alive
scope:scrounger = { is_alive = yes }
}
immediate = {
#poet trait is required for court poet position
hidden_effect = {
scope:scrounger = {
if = {
limit = {
NOT = { has_trait = lifestyle_poet }
}
add_trait = lifestyle_poet
}
}
}
if = {
limit = {
employs_court_position = court_poet_court_position
any_court_position_holder = {
type = court_poet_court_position
}
}
random_court_position_holder = {
type = court_poet_court_position
save_scope_as = c_poet
}
}
}
# Option A:
option = {
name = court.6041.a
if = {
limit = {
exists = scope:c_poet
}
revoke_court_position = {
recipient = scope:c_poet
court_position = court_poet_court_position
}
}
employ_character_as_position_in_current_scope_court_effect = {
CHARACTER = scope:scrounger
POSITION = court_poet
}
ai_chance = {
base = 40
modifier = {
add = 15
can_employ_court_position_type = court_poet_court_position
}
modifier = {
add = -25
short_term_gold < minor_gold_value
}
}
}
# Option B:
option = {
name = court.6041.b
remove_short_term_gold = medium_gold_value
scope:scrounger = {
duel = {
skill = diplomacy
value = average_skill_rating
50 = {
desc = court.6041.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2
}
root = {
send_interface_toast = {
type = event_toast_effect_bad
title = court.6041.b.failure.tt
left_icon = scope:scrounger
stress_impact = {
ambitious = medium_stress_impact_gain
}
}
}
}
10 = {
desc = court.6041.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
create_inspiration = book_inspiration
custom_tooltip = inspire_interaction_book
root = {
send_interface_toast = {
type = event_toast_effect_good
title = court.6041.b.success.tt
left_icon = scope:scrounger
}
}
}
}
}
ai_chance = {
base = 40
modifier = {
add = 15
OR = {
has_trait = ambitious
has_trait = diligent
}
}
modifier = {
add = -25
short_term_gold < medium_gold_value
}
}
}
# Option C: No further investment
option = {
name = court.6041.c
scope:scrounger = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -20
}
}
ai_chance = {
base = 50
modifier = {
add = 15
has_trait = greedy
}
modifier = {
add = 25
short_term_gold < medium_gold_value
}
}
}
}
#####################################
# Lonely Days #
# by Linnéa Thimrén #
#####################################
#Your Friend is struggling with feeling isolated/lonely due to your official duties, make time for them or find other ways to make them feel better
scripted_trigger court_5001_basic_friend_trigger = {
is_courtier_of = root
is_available_ai = yes
}
scripted_trigger court_5001_basic_marriage_trigger = {
is_married = no
is_adult = yes
is_betrothed = no
can_marry_trigger = yes
is_concubine = no
}
court_yearly.5001 = {
type = character_event
title = court.5001.t
desc = court.5001.desc
theme = court
left_portrait = {
character = scope:friend
animation = sadness
}
right_portrait = {
character = scope:match_for_friend
animation = flirtation_left
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
NOT = { has_character_flag = had_event_court_5001 }
any_relation = {
type = friend
court_5001_basic_friend_trigger = yes
}
}
weight_multiplier = {
base = 1
modifier = {
add = 0.25
any_relation = { #More likely if they have no cool minor titles
type = friend
court_5001_basic_friend_trigger = yes
has_any_court_position = no
}
}
modifier = {
add = 0.25
any_relation = { #Slightly more likely if you have a pet companion and they don't
type = friend
court_5001_basic_friend_trigger = yes
root = {
has_cat_or_dog_trigger = yes
}
has_cat_or_dog_trigger = no
}
}
# Court weightings.
# ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
add_character_flag = {
flag = had_event_court_5001
years = 10
}
random_relation = {
type = friend
limit = {
court_5001_basic_friend_trigger = yes
}
weight = {
base = 1
modifier = {
add = -1
has_any_court_position = yes
}
modifier = { #More likely to pick an unmarried friend
add = 1
court_5001_basic_marriage_trigger = yes
save_temporary_scope_as = friend_check
root = {
any_courtier = {
this != scope:friend_check
court_5001_basic_marriage_trigger = yes
can_marry_character_trigger = { CHARACTER = scope:friend_check }
scope:friend_check = { is_attracted_to_gender_of = prev }
}
}
}
}
save_scope_as = friend
}
#Is there anyone for them to marry?
if = {
limit = {
scope:friend = {
court_5001_basic_marriage_trigger = yes
}
any_courtier = {
this != scope:friend
court_5001_basic_marriage_trigger = yes
can_marry_character_trigger = { CHARACTER = scope:friend }
scope:friend = { is_attracted_to_gender_of = prev }
}
}
random_courtier = {
limit = {
this != scope:friend
court_5001_basic_marriage_trigger = yes
can_marry_character_trigger = { CHARACTER = scope:friend }
scope:friend = { is_attracted_to_gender_of = prev }
}
weight = {
base = 1
opinion_modifier = {
opinion_target = scope:friend
multiplier = 1
}
modifier = { #More likely if they're openly lovers
add = 10
has_relation_lover = scope:friend
NOT = { has_secret_relation_lover = scope:friend }
}
modifier = { #Always a plus if your partner is into you
is_attracted_to_gender_of = scope:friend
add = 5
}
modifier = { #Let's aim for a similar age
OR = {
age < scope:friend.age_plus_10
age > scope:friend.age_minus_10
}
add = 2
}
}
save_scope_as = match_for_friend
}
}
#Can you gift them a cat/dog? We check this here so we keep the story used in script consistent even if they have both a cat and a dog
if = {
limit = {
has_cat_or_dog_trigger = yes
scope:friend = {
has_cat_or_dog_trigger = no
}
}
random_owned_story = {
limit = {
OR = {
story_type = story_cycle_pet_dog
story_type = story_cycle_pet_cat
}
}
save_scope_as = story
}
}
if = {
limit = {
scope:friend = { has_any_court_position = no }
character_can_be_employed_in_a_court_position_trigger = {
CHARACTER = scope:friend
}
}
mark_court_position_for_employment_effect = {
CHARACTER = scope:friend
}
}
}
option = { #Make time for them
name = court.5001.a
#Lose some court grandeur.
change_current_court_grandeur = minor_court_grandeur_loss
scope:friend = {
add_opinion = {
target = root
modifier = friendliness_opinion
opinion = 20
}
}
if = {
limit = {
can_set_relation_best_friend_trigger = { CHARACTER = scope:friend }
}
set_relation_best_friend = { reason = best_friend_make_time copy_reason = friend target = scope:friend }
}
}
option = { #Marry them off
name = court.5001.b
trigger = {
exists = scope:match_for_friend
}
scope:friend = {
marry = scope:match_for_friend
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
}
option = { #Gift them your dog/cat
name = {
trigger = {
scope:story = { story_type = story_cycle_pet_dog }
}
text = court.5001.c_dog
}
name = {
trigger = {
scope:story = { story_type = story_cycle_pet_cat }
}
text = court.5001.c_cat
}
trigger = {
exists = scope:story
}
if = {
limit = {
scope:story = { story_type = story_cycle_pet_dog }
}
transfer_dog_story_cycle_to_effect = {
CHARACTER = scope:friend
STORY = scope:story
}
}
else = {
transfer_cat_story_cycle_to_effect = {
CHARACTER = scope:friend
STORY = scope:story
}
}
scope:friend = {
if = {
limit = { #"What am I supposed to do with this??"
OR = {
has_personality_malicious_trigger = yes
AND = {
scope:story = { story_type = story_cycle_pet_cat }
has_character_modifier = cat_story_allergy_modifier
}
AND = {
scope:story = { story_type = story_cycle_pet_dog }
faith = { religion_tag = islam_religion }
}
}
}
add_opinion = {
target = root
modifier = dumped_animal_on_me_opinion
}
}
else = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 15
}
}
}
}
option = { #Give them a minor title
name = court.5001.d
trigger = {
exists = scope:court_position_to_fill
}
employ_character_as_marked_court_position_effect = {
CHARACTER = scope:friend
POSITION = scope:court_position_to_fill
}
scope:friend = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
}
}
#####################################
# The Haunting #
# by Linnéa Thimrén #
#####################################
# Family member died some time ago and is now rumored to haunt the place
court_yearly.5010 = {
type = character_event
title = court.5010.t
desc = court.5010.desc
theme = court
override_background = {
reference = corridor_night
}
left_portrait = {
character = scope:family_member
animation = sadness
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
is_ai = no
location = {
exists = var:possible_haunting
var:possible_haunting = { #The place belongs to the family of the deceased
OR = {
any_close_family_member = {
this = root
}
any_spouse = {
this = root
}
is_grandparent_of = root
is_great_grandparent_of = root
}
}
}
}
weight_multiplier = {
base = 0.5
modifier = { #More likely if the death was gruesome
add = 0.75
location = {
var:possible_haunting = {
had_gruesome_death_trigger = yes
}
}
}
# Court weightings.
# ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
location = {
var:possible_haunting = {
save_scope_as = family_member
}
remove_variable = possible_haunting
}
}
option = { #Dismiss their fears and denounce their superstition
name = court.5010.a
trigger = {
faith = {
NOR = {
has_doctrine = tenet_ancestor_worship
has_doctrine = tenet_adorcism
}
}
}
if = {
limit = {
capital_county = {
NOT = { has_county_modifier = county_dismissed_servants_fear_modifier }
}
}
capital_county = {
add_county_modifier = {
modifier = county_dismissed_servants_fear_modifier
days = 3650
}
}
}
add_piety = minor_piety_gain
}
option = { #Encourage them to be respectful and leave the ghost be
name = court.5010.b
trigger = {
faith = {
OR = {
has_doctrine = tenet_ancestor_worship
has_doctrine = tenet_adorcism
}
}
}
if = {
limit = {
capital_county = {
NOT = { has_county_modifier = county_dismissed_servants_fear_modifier }
}
}
capital_county = {
add_county_modifier = {
modifier = county_dismissed_servants_fear_modifier
days = 3650
}
}
}
add_piety = minor_piety_gain
}
option = { #Hire someone to investigate and banish the ghost
name = court.5010.c
if = {
limit = {
capital_county = {
NOT = { has_county_modifier = county_acknowledged_servants_fear_modifier }
}
}
capital_county = {
add_county_modifier = {
modifier = county_acknowledged_servants_fear_modifier
days = 3650
}
}
}
remove_short_term_gold = minor_gold_value
if = {
limit = {
exists = cp:councillor_court_chaplain
}
cp:councillor_court_chaplain = {
add_opinion = {
target = root
modifier = impious_opinion
opinion = -20
}
}
}
}
}
#####################################
# Pillow Talk #
# by Linnéa Thimrén #
#####################################
# Your cat has claimed a courtier's bed
court_yearly.5020 = {
type = character_event
title = court.5020.t
desc = court.5020.desc
theme = court
left_portrait = {
character = scope:courtier
animation = anger
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
NOT = { has_character_flag = had_event_court_5020 }
any_owned_story = {
type = story_cycle_pet_cat
}
any_courtier = {
is_available_ai_adult = yes
}
}
weight_multiplier = {
base = 0.5
modifier = { #More likely if you have a (potential)rival to irritate
add = 0.75
any_courtier = {
OR = {
has_relation_rival = root
has_relation_potential_rival = root
}
}
}
# Court weightings.
# ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
add_character_flag = {
flag = had_event_court_5020
years = 10
}
random_courtier = {
weight = { #More likely if you dislike each other
opinion_modifier = {
opinion_target = root
multiplier = -0.5
}
modifier = {
add = 5
OR = {
has_relation_rival = root
has_relation_potential_rival = root
}
}
ai_value_modifier = {
ai_boldness = 0.75
}
}
save_scope_as = courtier
}
random_owned_story = {
type = story_cycle_pet_cat
save_scope_as = story
}
}
option = { #It's the cat's pillow now
name = court.5020.a
if = {
limit = {
NOT = { has_relation_rival = scope:courtier }
}
progress_towards_rival_effect = {
REASON = rival_deposed_for_cat
CHARACTER = scope:courtier
OPINION = default_rival_opinion
}
}
else = {
scope:courtier = {
add_opinion = {
target = root
modifier = angry_opinion
opinion = -20
}
}
}
#Might backfire...
hidden_effect = {
scope:courtier = {
if = {
limit = {
ai_vengefulness >= medium_positive_ai_value
}
random = {
chance = 20
ai_value_modifier = {
ai_vengefulness = 1
ai_compassion = -0.5
}
root = {
trigger_event = {
id = court_yearly.5021
days = { 50 100 }
}
}
}
}
}
}
}
option = { #I'll handle it
name = court.5020.b
scope:courtier = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
#Might backfire... Cat runs away
hidden_effect = {
random = {
chance = 20
add_character_flag = cat_is_dying #Just so no other cat-events trigger in the meantime
trigger_event = {
id = pet_animal.0197
days = { 50 100 }
}
}
}
}
}
#The courtier killed the cat
court_yearly.5021 = {
type = character_event
title = court.5020.t
desc = {
desc = court.5021.desc
triggered_desc = { #The things we do for bad jokes...
trigger = {
var:story_cycle_cat_name = flag:cat_name_mittens
}
desc = court.5021.desc_mittens
}
}
theme = court
left_portrait = {
character = scope:courtier
animation = happiness
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
exists = scope:story
scope:courtier = {
is_alive = yes
is_courtier_of = root
}
}
immediate = {
show_as_tooltip = {
remove_cat_story_modifiers_effect = yes
}
scope:courtier = {
hidden_effect = {
add_character_modifier = {
modifier = cat_story_fur_mittens_modifier
years = 10
}
}
}
}
option = {
name = {
trigger = {
var:story_cycle_cat_name = flag:cat_name_mittens
}
text = court.5021.a_mittens
}
name = {
trigger = {
NOT = { var:story_cycle_cat_name = flag:cat_name_mittens }
}
text = court.5021.a
}
}
option = { #Throw them in jail!
name = court.5021.b
imprison_character_effect = {
TARGET = scope:courtier
IMPRISONER = root
}
}
option = { #Give them a similar fate
name = court.5021.c
execute_prisoner_effect = {
VICTIM = scope:courtier
EXECUTIONER = root
}
}
after = {
scope:story = {
hidden_effect = { end_story = yes }
}
}
}
#####################################
# The Ballad of the Garlic King #
# by Claudia Baldassi #
# 6030 #
#####################################
# The adventures of a foolish ruler have become really popular among wandering minstrels. The king of the story looks too much like you for comfort. #
scripted_trigger court_6030_valid_courtier_trigger = {
is_available_ai_adult = yes
OR = {
has_relation_rival = root
opinion = {
target = root
value < 0
}
has_trait = intellect_bad
has_trait = dull
}
}
court_yearly.6030 = {
type = character_event
title = court.6030.t
desc = court.6030.desc
theme = court
left_portrait = {
character = root
animation = anger
}
right_portrait = {
character = scope:6030_courtier
animation = happiness
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
highest_held_title_tier >= tier_kingdom
is_adult = yes
NOT = {
has_character_flag = court_6030_cooldown
}
any_courtier_or_guest = {
court_6030_valid_courtier_trigger = yes
}
}
weight_multiplier = {
base = 0.8
# Court weightings.
# ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
add_character_flag = court_6030_cooldown
random_courtier_or_guest = {
limit = {
court_6030_valid_courtier_trigger = yes
}
save_scope_as = 6030_courtier
}
}
# Option F: I don't care
option = {
name = court.6030.f
if = {
limit = {
NOT = {
has_trait = reclusive
}
}
add_stress = medium_stress_gain
}
random = {
chance = 15
if = {
limit = {
is_female = yes
}
give_nickname = nick_garlic_queen
}
else = {
give_nickname = nick_the_garlic
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_energy = -0.5
ai_sociability = -0.5
}
modifier = {
has_trait = reclusive
add = 25
}
}
}
# Option D: prohibit and arrest
option = {
name = court.6030.d
custom_tooltip = court.6030.d.tt
trigger = {
OR = {
has_trait = wrathful
has_trait = vengeful
has_trait = callous
has_trait = irritable
has_trait = arrogant
}
}
imprison = {
target = scope:6030_courtier
type = dungeon
}
add_prestige = minor_prestige_gain
add_dread = major_dread_gain
every_courtier_or_guest = {
custom = court_6000_all_courtiers_and_guests
add_opinion = {
target = root
modifier = scared_opinion
opinion = -20
}
}
stress_impact = {
just = medium_stress_impact_gain
gregarious = medium_stress_impact_gain
shy = medium_stress_impact_gain
craven = medium_stress_impact_gain
humble = medium_stress_impact_gain
compassionate = major_stress_impact_gain
forgiving = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
ai_energy = 0.25
}
modifier = {
has_trait = just
add = -25
}
modifier = {
has_trait = gregarious
add = -25
}
modifier = {
has_trait = shy
add = -25
}
modifier = {
has_trait = craven
add = -25
}
modifier = {
has_trait = humble
add = -25
}
modifier = {
has_trait = compassionate
add = -50
}
}
}
# Option A: laugh it off
option = {
name = court.6030.a
trigger = {
OR = {
has_trait = gregarious
has_trait = forgiving
has_trait = humble
}
NOR = {
has_trait = shy
has_trait = depressed_1
has_trait = depressed_genetic
has_trait = craven
has_trait = reclusive
}
}
every_courtier_or_guest = {
custom = court_6000_all_courtiers_and_guests
add_opinion = {
target = root
modifier = amused_opinion
opinion = 10
}
}
add_stress = medium_stress_loss
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 1
}
}
}
# Option B: this is so humiliating...
option = {
name = court.6030.b
trigger = {
OR = {
has_trait = shy
has_trait = depressed_1
has_trait = depressed_genetic
has_trait = craven
has_trait = reclusive
}
NOR = {
has_trait = gregarious
has_trait = forgiving
has_trait = humble
}
}
add_prestige = medium_prestige_loss
random = {
chance = 15
if = {
limit = {
is_female = yes
}
give_nickname = nick_garlic_queen
}
else = {
give_nickname = nick_the_garlic
}
}
every_courtier_or_guest = {
custom = court_6000_all_courtiers_and_guests
add_opinion = {
target = root
modifier = amused_opinion
opinion = 15
}
}
add_stress = medium_stress_gain
ai_chance = {
base = 80
ai_value_modifier = {
ai_sociability = -1
}
}
}
# Option C: lash out at your court
option = {
name = court.6030.c
trigger = {
OR = {
has_trait = wrathful
has_trait = irritable
has_trait = arbitrary
has_trait = vengeful
has_trait = callous
}
}
add_dread = medium_dread_gain
every_courtier_or_guest = {
custom = court_6000_all_courtiers_and_guests
add_opinion = {
target = root
modifier = scared_opinion
opinion = -10
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = 0.25
ai_vengefulness = 0.5
}
}
}
# Option E: heads will roll...
option = {
name = court.6030.e
trigger = {
OR = {
has_trait = wrathful
has_trait = sadistic
has_trait = torturer
has_trait = vengeful
has_trait = giant
has_trait = physique_good
has_trait = berserker
}
}
custom_tooltip = court.6030.e.tt
random_list = {
20 = {
scope:6030_courtier = {
death = {
death_reason = death_beaten
killer = root
}
}
}
50 = {
scope:6030_courtier = {
increase_wounds_effect = { REASON = beaten }
}
}
30 = {
progress_towards_rival_effect = {
REASON = rival_punched_for_song
CHARACTER = scope:6030_courtier
OPINION = -30
}
reverse_add_opinion = {
target = scope:6030_courtier
modifier = scared_opinion
opinion = -50
}
}
}
every_courtier_or_guest = {
custom = court_6000_all_courtiers_and_guests
add_opinion = {
target = root
modifier = scared_opinion
opinion = -25
}
}
stress_impact = {
eccentric = medium_stress_impact_loss
shy = major_stress_impact_gain
compassionate = major_stress_impact_gain
patient = major_stress_impact_gain
}
add_dread = major_dread_gain
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 1
ai_rationality = -0.5
}
}
}
}
#########################
# Captured Beast
# by George Luff
#########################
scripted_trigger court_7100_huntsmaster_trigger = {
has_court_position = master_of_hunt_court_position
is_available_healthy_ai_adult = yes
}
scripted_effect court_7100_animal_bonus_effect = {
# Gains modifier based on animal
if = {
limit = {
scope:captured_animal = flag:wolf
}
add_character_modifier = {
modifier = exotic_pet_wolf
years = 10
}
}
else_if = {
limit = {
scope:captured_animal = flag:bear
}
add_character_modifier = {
modifier = exotic_pet_bear
years = 10
}
}
else_if = {
limit = {
scope:captured_animal = flag:lion
}
add_character_modifier = {
modifier = exotic_pet_lion
years = 10
}
}
else_if = {
limit = {
scope:captured_animal = flag:tiger
}
add_character_modifier = {
modifier = exotic_pet_tiger
years = 10
}
}
}
### Exotic Animal event
court_yearly.7100 = {
type = character_event
title = court.7100.title
desc = court.7100.desc
theme = court
left_portrait = {
character = root
animation = fear
}
right_portrait = {
character = scope:huntmaster
animation = personality_bold
}
cooldown = { years = 10 }
weight_multiplier = {
base = 1
# Court weightings.
# ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
# Has Master of the Hunt employed
any_court_position_holder = {
court_7100_huntsmaster_trigger = yes
}
# Does not already have an exotic pet
NOR = {
has_character_modifier = exotic_pet_wolf
has_character_modifier = exotic_pet_bear
has_character_modifier = exotic_pet_lion
has_character_modifier = exotic_pet_tiger
}
}
immediate = {
# Decide on which animal it is
random_list = {
25 = { # Wolf
save_scope_value_as = {
name = captured_animal
value = flag:wolf
}
}
25 = { # Bear
# Not outside of Europe or Asian black bear territory
modifier = {
factor = 0
location = {
NOR = {
geographical_region = world_europe
geographical_region = world_tibet
geographical_region = world_himalaya
geographical_region = world_burma
geographical_region = world_middle_east_persia
geographical_region = world_asia_china
geographical_region = world_asia_japan
geographical_region = world_asia_korea
geographical_region = world_asia_southeast
}
}
}
save_scope_value_as = {
name = captured_animal
value = flag:bear
}
}
25 = { # Lion
# Not outside of Africa
modifier = {
factor = 0
location = {
NOT = { geographical_region = world_africa }
}
}
save_scope_value_as = {
name = captured_animal
value = flag:lion
}
}
25 = { # Tiger
# Not outside of India or Asia
modifier = {
factor = 0
location = {
NOR = {
geographical_region = world_india
geographical_region = world_tibet
geographical_region = world_himalaya
geographical_region = world_burma
geographical_region = world_asia_china
geographical_region = world_asia_korea
geographical_region = world_asia_southeast
}
}
}
save_scope_value_as = {
name = captured_animal
value = flag:tiger
}
}
}
# Save the Master of the Hunt in scope
random_court_position_holder = {
limit = {
court_7100_huntsmaster_trigger = yes
}
save_scope_as = huntmaster
}
}
# Dispose of it immediately!
option = {
name = court.7100.a
custom_tooltip = court.7100.a.tt
scope:huntmaster = {
add_opinion = {
modifier = rejected_gift_opinion
target = root
opinion = -20
}
}
stress_impact = {
brave = medium_stress_impact_gain
}
}
# I shall keep it as a pet!
option = {
name = court.7100.b
stress_impact = {
craven = medium_stress_impact_gain
}
random = {
chance = 75
modifier = {
add = {
value = prowess
multiply = -1
multiply = 2.5
min = -50
}
}
increase_wounds_no_death_effect = { REASON = wild_animal }
}
court_7100_animal_bonus_effect = yes
}
# You can keep it!
option = {
name = court.7100.c
scope:huntmaster = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
random = {
chance = 75
modifier = {
add = {
value = scope:huntmaster.prowess
multiply = -1
multiply = 2.5
min = -50
}
}
increase_wounds_no_death_effect = { REASON = wild_animal }
}
court_7100_animal_bonus_effect = yes
}
}
}
#########################
# Loud and Proud
# by George Luff
#########################
scripted_trigger court_7200_court_musician_trigger = {
has_court_position = court_musician_court_position
is_available_healthy_ai_adult = yes
}
## Musician won't stop making noise
court_yearly.7200 = {
type = character_event
title = court.7200.title
desc = {
desc = court.7200.intro.desc
first_valid = {
triggered_desc = {
trigger = {
has_character_flag = court_7200_drum
}
desc = court.7200.drum.desc
}
triggered_desc = {
trigger = {
has_character_flag = court_7200_trombone
}
desc = court.7200.trombone.desc
}
triggered_desc = {
trigger = {
has_character_flag = court_7200_pipes
}
desc = court.7200.pipes.desc
}
triggered_desc = {
trigger = {
has_character_flag = court_7200_guitar
}
desc = court.7200.guitar.desc
}
}
desc = court.7200.outro.desc
}
theme = court
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:loud_musician
animation = happiness
}
cooldown = { years = 5 }
weight_multiplier = {
base = 1
# Court weightings.
# ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
# Employs a Court Musician
any_court_position_holder = {
court_7200_court_musician_trigger = yes
}
}
immediate = {
# Select court musician
random_court_position_holder = {
limit = {
court_7200_court_musician_trigger = yes
}
save_scope_as = loud_musician
}
random_list = {
25 = {
add_character_flag = court_7200_drum
}
25 = {
add_character_flag = court_7200_trombone
}
25 = {
add_character_flag = court_7200_pipes
}
25 = {
add_character_flag = court_7200_guitar
}
}
}
# Persuade the musician to keep to a curfew on the racket
option = {
name = court.7200.a
stress_impact = {
sadistic = medium_stress_impact_gain
}
every_courtier_or_guest = {
custom = all_courtiers_and_guests
limit = {
this != scope:loud_musician
}
add_opinion = {
modifier = angry_opinion
target = root
opinion = -10
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_rationality = 10
ai_vengefulness = -10
}
}
}
# Strip them of their position
option = {
name = court.7200.b
stress_impact = {
arbitrary = medium_stress_impact_loss
}
revoke_court_position = {
court_position = court_musician_court_position
recipient = scope:loud_musician
}
scope:loud_musician = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -15
}
}
add_character_modifier = {
modifier = fired_court_position
years = 5
}
every_courtier_or_guest = {
limit = {
this != scope:loud_musician
}
custom = all_courtiers_and_guests
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 25
}
}
}
# Just knock it off, okay?
option = {
name = court.7200.c
stress_impact = {
calm = medium_stress_impact_gain
wrathful = medium_stress_impact_loss
}
scope:loud_musician = {
add_opinion = {
target = root
modifier = cruelty_opinion
opinion = -20
}
}
every_courtier_or_guest = {
limit = {
this != scope:loud_musician
}
custom = all_courtiers_and_guests
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 15
}
}
}
}
# Court event 7030 - Foreign Merchants wish to establish a merchant quarter
court_yearly.7030 = {
type = character_event
title = court.7030.title
desc = court.7030.desc
theme = court
cooldown = { years = 20 }
left_portrait = {
character = scope:foreign_merchant
animation = personality_rational
}
right_portrait = {
character = scope:steward
animation = disapproval
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
exists = cp:councillor_steward
cp:councillor_steward = {
is_available_ai_adult = yes
}
any_character_to_title_neighboring_and_across_water_county = {
NOT = {
culture = { this = root.culture }
}
}
}
immediate = {
# Save foreign county as scope
random_character_to_title_neighboring_and_across_water_county = {
limit = {
NOT = {
culture = { this = root.culture }
}
}
save_scope_as = merchant_county
}
cp:councillor_steward = {
save_scope_as = steward
}
## Create Merchant
create_character = {
template = foreign_merchant_template
location = root.capital_province
save_scope_as = foreign_merchant
}
}
option = { # Establish merchant quarter, cultural acceptance
name = court.7030.a
root.culture = {
change_cultural_acceptance = {
target = scope:foreign_merchant.culture
value = major_cultural_acceptance_gain
desc = cultural_acceptance_foreign_merchants
}
}
root.capital_county = {
add_county_modifier = {
modifier = foreign_merchant_community
years = 20
}
}
stress_impact = {
arrogant = minor_stress_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_sociability = 0.2
ai_greed = 0.5
}
}
}
option = { # Expand the mercantile district for everyone
name = court.7030.c
trigger = {
capital_county = {
title_province = {
OR = {
AND = {
building_common_tradeport_requirement_terrain = yes
NOT = { has_building = common_tradeport_08 }
}
AND = {
has_building_or_higher = city_01
NOT = { has_building = guild_halls_08 }
}
}
}
}
}
remove_treasury_or_gold = medium_treasury_or_gold_value
if = {
limit = {
root.capital_county = {
title_province = {
building_common_tradeport_requirement_terrain = yes
}
}
}
root.capital_county = {
title_province = {
upgrade_tradeport = yes
}
}
}
else_if = {
limit = {
root.capital_county = {
title_province = {
has_building_or_higher = city_01
}
}
}
root.capital_county = {
title_province = {
upgrade_guildhall = yes
}
}
}
ai_chance = {
base = 20
ai_value_modifier = {
ai_greed = -0.5
ai_rationality = 0.2
}
}
stress_impact = {
greedy = medium_stress_gain
}
}
option = { # Ban the foreigners!
name = court.7030.d
custom_tooltip = court.7030.d.tt
add_treasury_or_gold = medium_treasury_or_gold_value
scope:foreign_merchant = {
show_as_tooltip = {
banish = yes
}
silent_disappearance_effect = yes
}
root.culture = {
change_cultural_acceptance = {
target = scope:foreign_merchant.culture
value = major_cultural_acceptance_loss
desc = cultural_acceptance_foreigners_expelled
}
}
ai_chance = {
base = 20
ai_value_modifier = {
ai_zeal = 1
ai_rationality = -1
ai_greed = 1
ai_compassion = -0.5
}
}
stress_impact = {
eccentric = minor_stress_impact_loss
generous = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
cynical = minor_stress_impact_gain
}
}
}
### One of your courtiers has started sitting on a pillar during the day
scripted_trigger court_7040_ascetic_religion_trigger = {
faith = {
OR = {
religion_tag = christianity_religion
religion_tag = buddhism_religion
religion_tag = jainism_religion
religion_tag = taoism_religion
religion_tag = dualism_religion
has_doctrine = tenet_asceticism
}
}
}
court_yearly.7040 = {
type = character_event
title = court.7040.title
desc = court.7040.desc
theme = court
cooldown = { years = 10 }
left_portrait = {
character = root
animation = throne_room_conversation_1
}
right_portrait = {
character = scope:chaplain
animation = disapproval
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
NOT = { has_character_modifier = court_7040_ascetic_practices }
# Must follow a faith that historically practised asceticism, or possess the asceticism tenet
root = { court_7040_ascetic_religion_trigger = yes }
# Courtier must be of the same faith as root
any_courtier = {
ep1_spare_courtier_trigger = yes
faith = root.faith
}
# We need the court chaplain for narrative purposes
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
is_available_healthy_ai_adult = yes
}
}
immediate = {
# Select courtier
random_courtier = {
limit = {
ep1_spare_courtier_trigger = yes
faith = root.faith
}
add_trait = reclusive
save_scope_as = ascetic
}
# Select the court chaplain
cp:councillor_court_chaplain = {
save_scope_as = chaplain
}
# Select religious head for option b
if = {
limit = {
faith = {
religious_head ?= {
this != root
}
}
}
faith.religious_head = {
save_scope_as = head_of_faith
}
}
}
option = { # Send them to the religious head, if they exist
name = court.7040.b
trigger = {
exists = scope:head_of_faith
exists = scope:head_of_faith.capital_province
}
remove_courtier_or_guest = { character = scope:ascetic new_location = scope:head_of_faith.capital_province }
scope:head_of_faith = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 25
}
}
faith = {
change_fervor = {
value = 5
desc = fervor_gain_ascetic_example
}
}
ai_chance = {
base = 40
ai_value_modifier = {
ai_zeal = 0.4
ai_compassion = -0.2
}
}
}
option = { # Truly a pious individual, their example inspires me!
name = court.7040.c
add_character_modifier = {
modifier = court_7040_ascetic_practices
years = 10
}
stress_impact = {
lazy = minor_stress_gain
cynical = minor_stress_gain
}
ai_chance = {
base = 40
ai_value_modifier = {
ai_zeal = 1
ai_boldness = 0.5
ai_honor = 0.5
}
}
}
option = { # If you want to live in isolation, do so somewhere else!
name = court.7040.d
add_piety = minor_piety_loss
stress_impact = {
zealous = medium_stress_gain
}
scope:ascetic = {
show_as_tooltip = {
banish = yes
}
silent_disappearance_effect = yes
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_zeal = -1
ai_compassion = -1
ai_honor = -0.5
ai_vengefulness = 1
}
}
}
option = { # Just ignore them, they'll get over it eventually.
name = court.7040.a
scope:chaplain = {
add_opinion = {
target = root
modifier = ignored_concerns
}
}
add_piety = minor_piety_loss
stress_impact = {
zealous = minor_stress_gain
impatient = minor_stress_gain
}
ai_chance = {
base = 10
ai_value_modifier = {
ai_zeal = -1
ai_rationality = 1
ai_compassion = 0.5
}
}
}
}
########## Your caravans are attacked by rampaging Christian nobles!
court_yearly.4350 = {
type = character_event
title = court.4350.t
desc = court.4350.desc
theme = diplomacy_foreign_affairs_focus
lower_left_portrait = {
character = scope:caravan_attacker_liege
}
left_portrait = {
character = root
animation = personality_honorable
}
right_portrait = {
character = scope:concerned_marshal
animation = worry
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
NOT = { has_character_flag = has_had_caravan_islamic_event }
is_at_war = no
religion = religion:islam_religion
any_neighboring_realm_same_rank_owner = {
is_landed = yes
OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion }
in_diplomatic_range = root
liege != root
}
exists = root.cp:councillor_marshal
}
immediate = {
add_character_flag = {
flag = has_had_caravan_islamic_event
days = 1825
}
cp:councillor_marshal = { save_scope_as = concerned_marshal }
random_neighboring_realm_same_rank_owner = {
limit = {
is_landed = yes
OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion }
in_diplomatic_range = root
liege != root
}
save_scope_as = caravan_attacker_liege
}
remove_treasury_or_gold = medium_treasury_or_gold_value
}
option = {
name = court.4350.a
every_courtier_or_guest = {
limit = {
NOT = { has_trait = temperate }
}
custom = all_courtiers_and_guests
add_opinion = {
target = root
modifier = given_luxuries_opinion
opinion = 10
}
}
scope:caravan_attacker_liege = {
add_opinion = {
target = root
opinion = 40
modifier = pleased_opinion
}
if = {
limit = {
NOR = {
is_allied_to = root
has_truce = root
}
}
add_truce_both_ways = {
character = root
days = 1825
name = TRUCE_TRADE_DEAL
}
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 0.25
ai_greed = 0.25
}
}
}
option = {
name = court.4350.b
add_dread = medium_dread_gain
add_character_modifier = {
modifier = leading_looting_modifier
days = 1000
}
add_gold = minor_gold_value
scope:caravan_attacker_liege = {
add_opinion = {
target = root
opinion = -40
modifier = disappointed_opinion
}
every_vassal = {
custom = all_vassals
add_opinion = {
target = root
opinion = -40
modifier = disappointed_opinion
}
}
}
scope:caravan_attacker_liege = {
if = {
limit = {
OR = {
is_allied_to = root
has_truce = root
}
}
cancel_truce_both_ways = root
break_alliance = root
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.25
ai_greed = 0.25
ai_vengefulness = 0.5
}
}
}
option = {
name = court.4350.c
flavor = court.4350.c.tt
add_dread = minor_dread_gain
add_piety = minor_piety_gain
scope:caravan_attacker_liege = {
add_opinion = {
target = root
opinion = -20
modifier = disappointed_opinion
}
this.capital_province = {
add_province_modifier = {
modifier = spurned_by_traders
years = 10
}
}
every_vassal = {
custom = all_vassals
add_opinion = {
target = root
opinion = -20
modifier = disappointed_opinion
}
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = 0.25
}
}
}
}
### Reversed POV - one of our nobles attacked a trading caravan!
court_yearly.4355 = {
type = character_event
title = court.4355.t
desc = court.4355.desc
theme = diplomacy_foreign_affairs_focus
left_portrait = {
character = scope:reporting_marshal
animation = personality_honorable
}
right_portrait = {
character = scope:caravan_attacker
animation = rage
}
lower_left_portrait = {
character = scope:attacked_liege
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
NOT = { has_character_flag = has_had_caravan_christian_event }
is_at_war = no
OR = { has_religion = religion:eastern_orthodox_religion has_religion = religion:catholic_religion has_religion = religion:protestant_religion }
any_neighboring_realm_same_rank_owner = {
is_landed = yes
religion = religion:islam_religion
in_diplomatic_range = root
liege != root
}
any_powerful_vassal = {
opinion = {
target = root
value <= medium_negative_opinion
}
age > 15
}
exists = root.cp:councillor_marshal
}
weight_multiplier = {
base = 1
}
immediate = {
add_character_flag = {
flag = has_had_caravan_christian_event
days = 1825
}
cp:councillor_marshal = { save_scope_as = reporting_marshal }
random_vassal = {
limit = {
opinion = {
target = root
value < 20
}
is_imprisoned = no
age > 15
is_ai = yes
}
weight = {
base = 1
modifier = {
has_relation_rival = root
factor = 20
}
modifier = {
factor = 20
is_powerful_vassal = yes
}
}
save_scope_as = caravan_attacker
}
random_neighboring_realm_same_rank_owner = {
limit = {
is_landed = yes
religion = religion:islam_religion
in_diplomatic_range = root
}
save_scope_as = attacked_liege
}
}
option = {
name = court.4355.a
flavor = court.4355.a.tt
every_courtier_or_guest = {
custom = all_courtiers_and_guests
add_opinion = {
target = root
opinion = 10
modifier = given_luxuries_opinion
}
}
faith.religious_head = {
add_opinion = {
target = root
opinion = 10
modifier = pious_opinion
}
}
scope:attacked_liege = {
add_opinion = {
target = root
opinion = -40
modifier = disappointed_opinion
}
}
add_character_modifier = {
modifier = leading_looting_modifier
days = 1000
}
scope:attacked_liege = {
if = {
limit = {
OR = {
is_allied_to = root
has_truce = root
}
}
cancel_truce_both_ways = root
}
}
capital_province = {
add_province_modifier = {
modifier = spurned_by_traders
years = 10
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_zeal = 0.5
}
}
}
option = {
name = court.4355.b
scope:caravan_attacker = {
add_opinion = {
target = root
opinion = -40
modifier = disappointed_opinion
}
}
scope:attacked_liege = {
add_opinion = {
target = root
opinion = 20
modifier = respect_opinion
}
if = {
limit = {
NOR = {
is_allied_to = root
has_truce = root
}
}
add_truce_both_ways = {
character = root
days = 1825
name = TRUCE_TRADE_DEAL
}
}
}
add_diplomacy_lifestyle_xp = major_lifestyle_xp
add_dread = medium_dread_gain
stress_impact = {
sadistic = medium_stress_loss
wrathful = medium_stress_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_zeal = -0.5
}
}
}
option = {
name = court.4355.c
flavor = court.4355.c.tt
stress_impact = {
arbitrary = medium_stress_loss
craven = medium_stress_loss
}
if = {
limit = {
scope:caravan_attacker = { has_relation_rival = root }
}
scope:caravan_attacker = { remove_relation_rival = root }
}
scope:caravan_attacker = {
add_opinion = {
target = root
opinion = 20
modifier = pleased_opinion
}
}
capital_province = {
add_province_modifier = {
modifier = spurned_by_traders
years = 10
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_zeal = 0.5
}
}
}
}
court_yearly.4800 = {
type = character_event
title = court.4800.t
desc = court.4800.desc
cooldown = { years = 10 }
theme = court
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
OR = {
any_court_position_holder = {
type = bodyguard_court_position
is_available_ai_adult = yes
}
any_court_position_holder = {
type = akolouthos_court_position
is_available_ai_adult = yes
}
}
OR = {
AND = {
employs_court_position = court_jester_court_position
any_court_position_holder = {
type = court_jester_court_position
is_available_ai_adult = yes
}
}
AND = {
employs_court_position = keeper_of_swans_court_position
any_court_position_holder = {
type = keeper_of_swans_court_position
is_available_ai_adult = yes
}
}
}
}
left_portrait = {
character = scope:defenestrated_character
animation = flirtation
}
right_portrait = {
character = scope:defenestrating_bodyguard
animation = rage
}
weight_multiplier = {
base = 1
}
immediate = {
if = {
limit = {
employs_court_position = bodyguard_court_position
}
random_court_position_holder = {
type = akolouthos_court_position
limit = {
is_available_ai_adult = yes
}
save_scope_as = defenestrating_bodyguard
}
}
else = {
random_court_position_holder = {
type = bodyguard_court_position
limit = {
is_available_ai_adult = yes
}
save_scope_as = defenestrating_bodyguard
}
}
if = {
limit ={
employs_court_position = court_jester_court_position
any_court_position_holder = {
type = court_jester_court_position
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = court_jester_court_position
save_scope_as = defenestrated_character
}
}
else = {
random_court_position_holder = {
type = keeper_of_swans_court_position
save_scope_as = defenestrated_character
}
}
}
option = {
name = court.4800.a
stress_impact = {
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
arbitrary = minor_stress_loss
sadistic = minor_stress_loss
}
random_list = {
10 = {
scope:defenestrated_character = {
increase_wounds_effect = { REASON = defenestration }
apply_maimed_trait_and_modifier_effect = yes
add_opinion = {
target = root
opinion = -20
modifier = hate_opinion
}
add_opinion = {
target = scope:defenestrating_bodyguard
opinion = -40
modifier = hate_opinion
}
}
hidden_effect = {
send_interface_toast = {
type = event_toast_effect_neutral
left_icon = scope:defenestrated_character
title = court.4800.maimed_toast
show_as_tooltip = {
scope:defenestrated_character = {
increase_wounds_effect = { REASON = defenestration }
apply_maimed_trait_and_modifier_effect = yes
}
}
}
}
}
5 = {
scope:defenestrated_character = {
death = {
death_reason = death_defenestration
killer = scope:defenestrating_bodyguard
}
}
hidden_effect = {
send_interface_toast = {
type = event_toast_effect_neutral
left_icon = scope:defenestrated_character
title = court.4800.death_toast
show_as_tooltip = {
scope:defenestrated_character = {
death = {
death_reason = death_defenestration
killer = scope:defenestrating_bodyguard
}
}
}
}
}
}
}
add_dread = minor_dread_gain
scope:defenestrating_bodyguard = {
add_opinion = {
target = root
opinion = 10
modifier = respect_opinion
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
ai_vengefulness = 0.5
ai_boldness = 0.25
ai_rationality = -0.5
}
}
}
option = {
name = court.4800.b
stress_impact = {
compassionate = minor_stress_gain
just = minor_stress_gain
sadistic = miniscule_stress_impact_loss
}
scope:defenestrated_character = {
increase_wounds_effect = { REASON = fight }
add_opinion = {
target = root
opinion = -5
modifier = scared_opinion
}
add_opinion = {
target = scope:defenestrating_bodyguard
opinion = -25
modifier = scared_opinion
}
}
scope:defenestrating_bodyguard = {
add_opinion = {
target = root
opinion = 10
modifier = respect_opinion
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.25
ai_vengefulness = 0.25
ai_boldness = 0.25
ai_rationality = -0.25
}
}
}
option = {
name = court.4800.c
if = {
limit = {
scope:defenestrating_bodyguard = {
has_court_position = bodyguard_court_position
}
}
revoke_court_position = {
recipient = scope:defenestrating_bodyguard
court_position = bodyguard_court_position
}
}
else = {
revoke_court_position = {
recipient = scope:defenestrating_bodyguard
court_position = akolouthos_court_position
}
}
reverse_add_opinion = {
target = scope:defenestrated_character
opinion = 30
modifier = grateful_opinion
}
reverse_add_opinion = {
target = scope:defenestrating_bodyguard
opinion = -30
modifier = insulted_opinion
}
add_martial_lifestyle_xp = medium_lifestyle_xp
add_prestige = minor_prestige_gain
ai_chance = {
base = 50
ai_value_modifier = {
ai_rationality = 0.5
}
}
}
}
#Rando criminal is spawned based on what your culture considers criminal/shunned
scripted_effect event_0101_spawn_criminal_effect = {
create_character = {
location = root.capital_province
template = generic_peasant_character
faith = root.capital_province.faith #Character is meant to be a random lowborn, should be the local faith/culture rather than ruling class
culture = root.capital_province.culture
save_scope_as = lowborn_criminal
}
scope:lowborn_criminal = {
random_list = {
10 = {
modifier = {
factor = 0
root.faith = { has_doctrine_parameter = deviancy_accepted }
}
modifier = {
factor = 0.5
root.faith = { has_doctrine_parameter = deviancy_shunned }
}
add_trait = deviant
save_scope_value_as = {
name = criminal_trait
value = flag:deviant_trait_flag
}
}
10 = {
add_trait = murderer
}
10 = {
modifier = {
factor = 0
root.faith = { has_doctrine_parameter = witchcraft_accepted }
}
modifier = {
factor = 0.5
root.faith = { has_doctrine_parameter = witchcraft_shunned }
}
add_trait = witch
save_scope_value_as = {
name = criminal_trait
value = flag:witch_trait_flag
}
}
10 = {
add_trait = lazy
}
10 = { #Dumb crimes that aren't trait-specific
}
}
}
if = {
limit = {
scope:lowborn_criminal = {
has_trait = murderer
}
}
scope:lowborn_criminal = {
random_list = {
10 = {
add_trait = cannibal
game_rule_create_spouse_and_children = { CHARACTER = scope:lowborn_criminal LOCATION = scope:lowborn_criminal }
every_child = {
add_trait = cannibal
}
every_spouse = {
add_trait = cannibal
}
save_scope_value_as = {
name = criminal_trait
value = flag:cannibal_trait_flag
}
}
10 = {
add_trait = sadistic
save_scope_value_as = {
name = criminal_trait
value = flag:sadistic_trait_flag
}
}
10 = { #Holy man murderer
modifier = {
factor = 0
NOT = { has_allowed_gender_for_clergy = scope:lowborn_criminal }
}
replace_with_learning_trait_effect = yes
add_character_flag = {
flag = need_priest_outfit
}
}
}
}
}
if = {
limit = {
scope:lowborn_criminal = {
has_trait = deviant
}
}
scope:lowborn_criminal = {
random_list = {
10 = { #Stableboy
add_character_flag = {
flag = stableboy_crime
}
pick_servant_romance_target_effect = yes
}
10 = { #Kinky
add_character_flag = {
flag = kinky_crime
}
}
10 = { #Animal lover
add_character_flag = {
flag = beastiality_crime
}
}
}
}
}
if = {
limit = {
scope:lowborn_criminal = {
has_trait = witch
}
}
scope:lowborn_criminal = {
random_list = {
10 = { #Baby soup
add_character_flag = {
flag = baby_soup_crime
}
}
10 = { #Evil healer
add_character_flag = {
flag = healer_crime
}
replace_with_learning_trait_effect = yes
add_trait = lifestyle_herbalist
give_nickname = nick_the_angel_of_death
}
10 = { #Devil worshiper
add_character_flag = {
flag = devil_worship_crime
}
}
}
}
}
scope:lowborn_criminal = {
add_to_list = lowborn_criminal_list
every_child = {
add_to_list = lowborn_criminal_list
}
every_spouse = {
add_to_list = lowborn_criminal_list
}
}
}
# Rando criminal shows up
court_yearly.0101 = {
type = character_event
title = court.0101.t
desc = {
desc = court.0101.desc.opening
first_valid = { #What the crime was
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = murderer
}
}
desc = court.0101.desc.murderer
}
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = deviant
}
}
desc = court.0101.desc.deviant
}
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = witch
}
}
desc = court.0101.desc.witch
}
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = lazy
}
}
desc = court.0101.desc.lazy
}
}
random_valid = { #Traitless crimes
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
NOR = {
has_trait = murderer
has_trait = witch
has_trait = deviant
has_trait = lazy
}
}
}
desc = court.0101.desc.thief
}
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
NOR = {
has_trait = murderer
has_trait = witch
has_trait = deviant
has_trait = lazy
}
}
}
desc = court.0101.desc.sumptuary
}
}
first_valid = { #Details about the crime
#Murderer
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = murderer
has_trait = cannibal
}
}
desc = court.0101.desc.cannibal
}
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = murderer
has_trait = sadistic
}
}
desc = court.0101.desc.sadistic
}
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = murderer
has_character_flag = need_priest_outfit
}
}
desc = court.0101.desc.priest
}
#Deviant
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = deviant
has_character_flag = stableboy_crime
}
}
desc = court.0101.desc.stableboy
}
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = deviant
has_character_flag = kinky_crime
}
}
desc = court.0101.desc.kinky
}
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = deviant
has_character_flag = beastiality_crime
}
}
desc = court.0101.desc.animals
}
#Witch
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = witch
has_character_flag = baby_soup_crime
}
}
desc = court.0101.desc.baby_soup
}
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = witch
has_character_flag = healer_crime
}
}
desc = court.0101.desc.suspicious_healer
}
triggered_desc = {
trigger = {
scope:lowborn_criminal = {
has_trait = witch
has_character_flag = devil_worship_crime
}
}
desc = court.0101.desc.devil_worshiper
}
}
desc = court.0101.desc.outro
}
theme = court
left_portrait = {
character = scope:executioner
animation = schadenfreude
}
right_portrait = {
character = scope:lowborn_criminal
animation = fear
}
# More likely to trigger if you are a sadistic person
weight_multiplier = {
base = 1
modifier = {
add = 0.5
has_trait = sadistic
}
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
is_available_at_peace_adult = yes
employs_court_position = executioner_court_position
}
immediate = {
event_0101_spawn_criminal_effect = yes
if = {
limit = {
any_court_position_holder = {
type = executioner_court_position
}
}
random_court_position_holder = {
type = executioner_court_position
save_scope_as = executioner
}
}
}
# Option A: Ironic punishment
option = {
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = murderer
has_trait = cannibal
}
}
text = court.0101.a.cannibal
}
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = murderer
has_trait = sadistic
}
}
text = court.0101.a.sadistic
}
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = murderer
has_character_flag = need_priest_outfit
faith = { has_doctrine_parameter = sky_burials_active }
}
}
text = court.0101.a.priest.sky
}
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = murderer
has_character_flag = need_priest_outfit
}
}
text = court.0101.a.priest
}
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = deviant
has_character_flag = stableboy_crime
}
}
text = court.0101.a.stableboy
}
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = deviant
has_character_flag = kinky_crime
}
}
text = court.0101.a.kinky
}
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = deviant
has_character_flag = beastiality_crime
}
}
text = court.0101.a.animals
}
#Witch
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = witch
has_character_flag = baby_soup_crime
}
}
text = court.0101.a.baby_soup
}
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = witch
has_character_flag = healer_crime
}
}
text = court.0101.a.suspicious_healer
}
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = witch
}
has_character_flag = devil_worship_crime
}
text = court.0101.a.devil_worshiper
}
name = {
trigger = {
}
text = court.0101.a
}
stress_impact = {
zealous = minor_stress_impact_loss #They are a criminal afterall
vengeful = minor_stress_impact_loss
wrathful = minor_stress_impact_loss
sadistic = major_stress_impact_loss
compassionate = major_stress_impact_gain
forgiving = major_stress_impact_gain
}
scope:lowborn_criminal = {
every_child = {
limit = {
has_trait = cannibal
}
death = {
killer = root
death_reason = death_torture
}
}
every_spouse = {
limit = {
has_trait = cannibal
}
death = {
killer = root
death_reason = death_torture
}
}
death = {
killer = root
death_reason = death_torture
}
}
progress_towards_friend_effect = {
CHARACTER = scope:executioner
OPINION = default_friend_opinion
REASON = friend_art_of_torture_punishment
}
}
#Option C: I like this person, bring them to court!
option = {
trigger = {
OR = {
AND = {
OR = {
has_trait = sadistic
any_secret = { type = secret_murder }
}
scope:criminal_trait ?= flag:sadistic_trait_flag
}
AND = {
OR = {
has_trait = cannibal
any_secret = { type = secret_cannibal }
}
scope:criminal_trait ?= flag:cannibal_trait_flag
}
AND = {
OR = {
has_trait = deviant
any_secret = { type = secret_deviant }
}
scope:criminal_trait ?= flag:deviant_trait_flag
}
AND = {
OR = {
has_trait = witch
any_secret = { type = secret_witch }
}
scope:criminal_trait ?= flag:witch_trait_flag
}
}
}
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = deviant
has_character_flag = beastiality_crime
}
}
text = court.0101.c.beastiality
}
name = {
trigger = {
scope:lowborn_criminal = {
has_trait = deviant
NOT = { has_character_flag = beastiality_crime }
}
}
text = court.0101.c.deviant
}
name = {
trigger = {
scope:lowborn_criminal = {
NOT = { has_trait = deviant }
}
}
text = court.0101.c
}
stress_impact = {
zealous = minor_stress_impact_gain
vengeful = minor_stress_impact_gain
sadistic = minor_stress_impact_gain #You wanna see them hurt, even if you are both sadists
witch = minor_stress_impact_loss
deviant = minor_stress_impact_loss #Another pervert for me to have fun with
compassionate = major_stress_impact_loss
forgiving = major_stress_impact_loss
}
every_in_list = {
list = lowborn_criminal_list
root = {
add_courtier = prev
}
}
if = {
limit = {
has_trait = deviant
can_set_relation_lover_trigger = { CHARACTER = scope:lowborn_criminal }
}
set_relation_lover = { reason = lover_deviant target = scope:lowborn_criminal }
}
}
#Option D: Keep them in the castle prison
option = {
name = court.0101.d
every_in_list = {
list = lowborn_criminal_list
root = {
add_courtier = prev
}
rightfully_imprison_character_effect = {
TARGET = this
IMPRISONER = root
}
}
}
#Option B: I don't care
option = {
name = court.0101.b
scope:lowborn_criminal = {
silent_disappearance_effect = yes
every_child = {
silent_disappearance_effect = yes
}
every_spouse = {
silent_disappearance_effect = yes
}
}
}
}
# Executioner feeling lonely
court_yearly.0102 = {
type = character_event
title = court.0102.t
desc = court.0102.desc
theme = court
left_portrait = {
character = scope:executioner
animation = sadness
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
employs_court_position = executioner_court_position
is_available_adult = yes
any_court_position_holder = {
type = executioner_court_position
is_available_ai_adult = yes
}
}
# More likely to trigger if the executioner actually likes other humans
weight_multiplier = {
base = 1
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = gregarious
}
}
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = compassionate
}
}
modifier = {
add = -0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = shy
}
}
}
immediate = {
if = {
limit = {
any_court_position_holder = {
type = executioner_court_position
}
}
random_court_position_holder = {
type = executioner_court_position
save_scope_as = executioner
}
}
}
# Option A: Pity the executioner
option = {
name = court.0102.a
progress_towards_friend_effect = {
CHARACTER = scope:executioner
OPINION = default_friend_opinion
REASON = friend_took_pity
}
reverse_add_opinion = {
target = scope:executioner
modifier = grateful_opinion
opinion = 15
}
stress_impact = {
vengeful = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
shy = minor_stress_impact_gain
compassionate = minor_stress_impact_loss
gregarious = minor_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
ai_vengefulness = 0.5
}
}
}
#Option C: Repremand the executioner for moaning about being lonely
option = {
name = court.0102.c
progress_towards_rival_effect = {
REASON = rival_reprimanded_lonely
CHARACTER = scope:executioner
OPINION = -25
}
scope:executioner = {
add_stress = minor_stress_gain
}
stress_impact = {
vengeful = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
shy = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
ai_vengefulness = 0.5
}
}
}
#Option B: I don't care
option = {
name = court.0102.b
scope:executioner = {
add_stress = minor_stress_gain
}
stress_impact = {
vengeful = minor_stress_impact_loss
compassionate = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
}
}
}
}
# Executioner selling... items from the prisoners
court_yearly.0103 = {
type = character_event
title = court.0103.t
desc = {
desc = court.0103.desc.opening
random_valid = { #What did the executioner do
desc = court.0103.desc.hair_and_teeth
desc = court.0103.desc.jewelry
triggered_desc = {
trigger = {
scope:executioner = {
NOR = {
has_trait = compassionate
has_trait = content
has_trait = just
AND = {
has_trait = zealous
faith = {
NOT = {
has_doctrine = tenet_ritual_cannibalism
}
}
}
}
}
}
desc = court.0103.desc.meat
}
triggered_desc = {
trigger = {
scope:executioner = {
is_christian_trigger = yes
NOT = {
has_trait = zealous
}
}
}
desc = court.0103.desc.saint_bones
}
}
desc = court.0103.desc.outro
}
theme = court
left_portrait = {
character = scope:executioner
animation = personality_greedy
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
employs_court_position = executioner_court_position
is_available_adult = yes
any_court_position_holder = {
type = executioner_court_position
is_available_ai_adult = yes
NOT = {
has_trait = improvident
}
}
}
weight_multiplier = {
base = 0.5
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = greedy
}
}
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = sadistic
}
}
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = callous
}
}
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = ambitious
}
}
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = deceitful
}
}
modifier = {
add = -0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = honest
}
}
modifier = {
add = -0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = just
}
}
}
immediate = {
if = {
limit = {
any_court_position_holder = {
type = executioner_court_position
}
}
random_court_position_holder = {
type = executioner_court_position
save_scope_as = executioner
}
}
}
# Option A: Get in on this
option = {
name = court.0103.a
reverse_add_opinion = {
target = scope:executioner
modifier = grateful_opinion
opinion = 15
}
add_gold = medium_gold_value
add_piety = major_piety_loss
stress_impact = {
vengeful = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
greedy = major_stress_impact_loss
compassionate = major_stress_impact_gain
zealous = major_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -1
ai_vengefulness = 1.5
}
}
}
#Option B: Repremand the executioner
option = {
name = court.0103.b
rightfully_imprison_character_effect = {
TARGET = scope:executioner
IMPRISONER = root
}
stress_impact = {
greedy = major_stress_impact_gain
just = minor_stress_impact_loss
zealous = minor_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = 0.5
ai_vengefulness = -0.5
}
}
}
#Option C: Don't care
option = {
name = court.0103.c
reverse_add_opinion = {
target = scope:executioner
modifier = grateful_opinion
opinion = 15
}
stress_impact = {
greedy = major_stress_impact_gain
just = minor_stress_impact_gain
zealous = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = -0.5
ai_vengefulness = -0.5
}
}
}
}
#################################################
# The executioner events #
# by James Beaumont #
# 0104 - Child into exectution #
# 0106 - Executioner asks how far they can go #
#################################################
# Executioner talking to a ward about their trade
court_yearly.0104 = {
type = character_event
title = court.0104.t
desc = court.0104.desc
theme = court
left_portrait = {
character = scope:executioner
animation = happiness
}
right_portrait = {
character = scope:morbid_child
animation = admiration
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
employs_court_position = executioner_court_position
any_relation = {
type = ward
NOT = { has_trait = compassionate }
is_available = yes
age >= 5
}
is_available_adult = yes
any_court_position_holder = {
type = executioner_court_position
is_available_ai_adult = yes
}
}
# More likely to trigger if the executioner likes talking to children
weight_multiplier = {
base = 1
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = gregarious
}
}
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = trusting
}
}
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = patient #You gotta have some real patience to answer some children's questions
}
}
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = family_first
}
}
modifier = {
add = -0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = shy
}
}
modifier = {
add = -0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = impatient
}
}
}
immediate = {
if = {
limit = {
any_court_position_holder = {
type = executioner_court_position
}
}
random_court_position_holder = {
type = executioner_court_position
save_scope_as = executioner
}
}
random_relation = {
type = ward
limit = {
NOT = { has_trait = compassionate }
is_available = yes
age >= 5
}
save_scope_as = morbid_child
}
}
# Option A: Join in the conversation
option = {
name = court.0104.a
scope:morbid_child = {
add_trait = sadistic
}
progress_towards_friend_effect = {
CHARACTER = scope:morbid_child
OPINION = default_friend_opinion
REASON = friend_torture_stories
}
reverse_add_opinion = {
target = scope:morbid_child
modifier = grateful_opinion
opinion = 15
}
progress_towards_friend_effect = {
CHARACTER = scope:executioner
OPINION = default_friend_opinion
REASON = friend_torture_stories
}
reverse_add_opinion = {
target = scope:executioner
modifier = grateful_opinion
opinion = 15
}
scope:morbid_child = {
progress_towards_friend_effect = {
CHARACTER = scope:executioner
OPINION = default_friend_opinion
REASON = friend_torture_stories
}
}
stress_impact = {
sadistic = minor_stress_impact_loss
shy = minor_stress_impact_gain
compassionate = major_stress_impact_gain
gregarious = minor_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
ai_vengefulness = 0.5
}
modifier = {
factor = 0.5
scope:morbid_child = { has_trait = sadistic }
}
}
}
#Option B: Repremand the executioner for talking to your ward
option = {
name = court.0104.b
progress_towards_rival_effect = {
REASON = rival_morbid_child
CHARACTER = scope:morbid_child
OPINION = -25
}
scope:morbid_child = {
add_stress = minor_stress_gain
}
progress_towards_rival_effect = {
REASON = rival_reprimanded_child
CHARACTER = scope:executioner
OPINION = -25
}
scope:executioner = {
add_stress = minor_stress_gain
}
stress_impact = {
vengeful = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
shy = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 0.5
}
modifier = { #The kid is already a sadist
factor = 2
scope:morbid_child = { has_trait = sadistic }
}
}
}
#Option C: Pretend you didn't hear
option = {
name = court.0104.c
random_list = {
50 = {}
50 = {
scope:morbid_child = {
add_trait = sadistic
}
}
}
scope:morbid_child = {
progress_towards_friend_effect = {
CHARACTER = scope:executioner
OPINION = default_friend_opinion
REASON = friend_torture_stories
}
}
stress_impact = {
compassionate = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
}
}
}
}
# Executioner asks how far they can go
court_yearly.0106 = {
type = character_event
title = court.0106.t
desc = court.0106.desc
theme = court
left_portrait = {
character = scope:executioner
animation = scheme
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
employs_court_position = executioner_court_position
is_available_adult = yes
any_court_position_holder = {
type = executioner_court_position
is_available_ai_adult = yes
}
}
weight_multiplier = {
base = 0.5
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = sadistic
}
}
modifier = {
add = 0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = callous
}
}
modifier = {
add = 1.0
any_prisoner = { has_any_secrets = yes }
}
modifier = {
add = -0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = just
}
}
modifier = {
add = -0.5
any_court_position_holder = {
type = executioner_court_position
has_trait = compassionate
}
}
}
immediate = {
if = {
limit = {
any_court_position_holder = {
type = executioner_court_position
}
}
random_court_position_holder = {
type = executioner_court_position
save_scope_as = executioner
}
}
}
# Option A: Go hard on the prisoners
option = {
name = court.0106.a
if = {
limit = {
any_prisoner = { has_any_secrets = yes }
}
random_prisoner = {
random_secret = {
limit = {
NOT = {
any_secret_knower = {
this = root
}
}
}
reveal_to = root
}
}
}
if = {
limit = {
scope:executioner = {
has_trait = sadistic
}
}
scope:executioner = { add_stress = major_stress_impact_loss }
progress_towards_friend_effect = {
CHARACTER = scope:executioner
OPINION = default_friend_opinion
REASON = friend_shared_opinions_on_punishment
}
}
else_if = {
limit = {
scope:executioner = {
has_trait = compassionate
}
}
scope:executioner = { add_stress = major_stress_impact_gain }
progress_towards_rival_effect = {
REASON = rival_go_hard_on_prisoners
CHARACTER = scope:executioner
OPINION = default_rival_opinion
}
}
stress_impact = {
vengeful = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
callous = minor_stress_impact_loss
compassionate = major_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -1
ai_vengefulness = 1.5
}
}
}
#Option B: Be a little gentle
option = {
name = court.0106.b
if = {
limit = {
scope:executioner = {
has_trait = compassionate
}
}
scope:executioner = { add_stress = major_stress_impact_loss }
progress_towards_friend_effect = {
CHARACTER = scope:executioner
OPINION = default_friend_opinion
REASON = friend_shared_opinions_on_punishment
}
}
else_if = {
limit = {
scope:executioner = {
has_trait = sadistic
}
}
scope:executioner = { add_stress = major_stress_impact_gain }
progress_towards_rival_effect = {
REASON = rival_go_easy_on_prisoners
CHARACTER = scope:executioner
OPINION = default_rival_opinion
}
}
stress_impact = {
vengeful = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
compassionate = major_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = 0.5
ai_vengefulness = -0.5
}
}
}
#Option C: Don't care
option = {
name = court.0106.c
if = {
limit = {
any_prisoner = { has_any_secrets = yes }
}
random_list = {
50 = {
}
50 = {
random_prisoner = {
random_secret = {
limit = {
NOT = {
any_secret_knower = {
this = root
}
}
}
reveal_to = root
}
}
}
}
}
stress_impact = {
vengeful = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
just = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = -0.5
ai_vengefulness = -0.5
}
}
}
}
# Parent sends you to horny jail
court_yearly.0110 = {
type = character_event
title = court.0110.t
desc = {
desc = court.0110.desc.intro
first_valid = {
triggered_desc = {
trigger = {
has_trait = deviant
}
desc = court.0110.desc.deviant
}
triggered_desc = {
trigger = {
has_trait = lovers_pox
}
desc = court.0110.desc.pox
}
desc = court.0110.desc.notspecial
}
desc = court.0110.desc.outro
}
theme = court
left_portrait = {
character = scope:parent
animation = worry
}
right_portrait = {
character = cp:councillor_court_chaplain
animation = anger
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
any_parent = {
exists = yes
is_available_adult = yes
liege = root
is_landed = no
}
cp:councillor_court_chaplain ?= { is_available_adult = yes }
is_available_adult = yes
OR = {
trait_is_shunned_in_faith_trigger = { TRAIT = adulterer FAITH = root.faith GENDER_CHARACTER = root } #Fornicator is handled by same rules
trait_is_criminal_in_faith_trigger = { TRAIT = adulterer FAITH = root.faith GENDER_CHARACTER = root } #Fornicator is handled by same rules
}
OR = {
has_trait = deviant
has_trait = lovers_pox
any_relation = {
type = lover
NOT = { is_consort_of = root }
}
any_relation = {
type = soulmate
NOT = { is_consort_of = root }
}
}
is_eunuch_trigger = no
NOR = {
has_trait = celibate
has_trait = chaste
}
}
# More likely to trigger if your character is lustful and your parent is chaste
weight_multiplier = {
base = 1
modifier = {
add = 0.5
any_parent = {
exists = yes
is_available_adult = yes
liege = root
is_landed = no
has_trait = chaste
}
}
modifier = {
add = 0.5
cp:councillor_court_chaplain = {
has_trait = chaste
}
}
modifier = {
add = -0.5
cp:councillor_court_chaplain = {
has_trait = lustful
}
}
modifier = {
add = 0.5
has_trait = lustful
}
}
immediate = {
random_parent = {
limit = {
is_alive = yes
is_available_adult = yes
liege = root
is_landed = no
}
save_scope_as = parent
}
cp:councillor_court_chaplain = {
save_scope_as = chaplain
}
}
# Option A: Imprison your parent and chaplain
option = {
name = court.0110.a
progress_towards_rival_effect = {
REASON = rival_parent_imprisoned
CHARACTER = scope:parent
OPINION = default_rival_opinion
}
progress_towards_rival_effect = {
REASON = rival_parent_imprisoned
CHARACTER = cp:councillor_court_chaplain
OPINION = default_rival_opinion
}
imprison_character_effect = {
TARGET = scope:parent
IMPRISONER = root
}
imprison_character_effect = {
TARGET = cp:councillor_court_chaplain
IMPRISONER = root
}
stress_impact = {
just = major_stress_impact_gain
compassionate = major_stress_impact_gain
forgiving = major_stress_impact_gain
calm = major_stress_impact_gain
}
ai_chance = {
base = 25
ai_value_modifier = {
ai_vengefulness = 0.5
ai_honor = -1
}
}
}
#Option B: Agree, become celibate
option = {
name = court.0110.b
add_trait = celibate
add_piety = medium_piety_gain
reverse_add_opinion = {
target = cp:councillor_court_chaplain
modifier = impressed_opinion
opinion = 15
}
reverse_add_opinion = {
target = scope:parent
modifier = relieved_opinion
opinion = 15
}
stress_impact = {
vengeful = minor_stress_impact_gain
lustful = major_stress_impact_gain
rakish = massive_stress_impact_gain
stubborn = major_stress_impact_gain
wrathful = major_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = -0.5
ai_zeal = 0.5
}
modifier = { #Character shouldn't give up sex if they haven't got any children
factor = 0
any_child = { is_alive = yes count < 1 }
}
modifier = { #More likely to do it if they have a lot of kids
add = 5
any_child = { is_alive = yes count > 4 }
}
}
}
#Option C: Refuse and move on
option = {
name = court.0110.c
reverse_add_opinion = {
target = cp:councillor_court_chaplain
modifier = disappointed_opinion
opinion = -15
}
reverse_add_opinion = {
target = scope:parent
modifier = disappointed_opinion
opinion = -15
}
stress_impact = {
}
ai_chance = {
base = 50
}
}
}
###########################
# Questionable Concoction #
# by Joe Parkin #
###########################
scripted_trigger court_8100_physician_trigger = {
is_available_ai_adult = yes
NOT = { government_has_flag = government_is_theocracy }
NOT = { has_trait = devoted }
NAND = {
exists = ROOT.cp:councillor_court_chaplain
THIS = ROOT.cp:councillor_court_chaplain
}
}
scripted_trigger court_8100_witch_trigger = {
OR = {
has_trait = lifestyle_mystic
has_trait = lifestyle_herbalist
has_trait = witch
any_secret = { type = secret_witch }
}
}
court_yearly.8100 = {
type = character_event
title = court.8100.t
desc = court.8100.desc
theme = court
cooldown = { years = 10 }
left_portrait = {
character = scope:physician
animation = throne_room_conversation_4
}
right_portrait = {
character = scope:food_taster
animation = throne_room_conversation_1
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
employs_court_position = court_physician_court_position
any_court_position_holder = {
type = court_physician_court_position
court_8100_physician_trigger = yes
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
any_court_position_holder = {
type = court_physician_court_position
court_8100_physician_trigger = yes
court_8100_witch_trigger = yes
}
}
}
immediate = {
random_court_position_holder = {
type = court_physician_court_position
limit = { court_8100_physician_trigger = yes }
weight = {
modifier = {
factor = 100
court_8100_witch_trigger = yes
}
}
save_scope_as = physician
}
if = {
limit = {
employs_court_position = food_taster_court_position
any_court_position_holder = {
type = food_taster_court_position
is_available_ai_adult = yes
THIS != scope:physician
}
}
random_court_position_holder = {
type = food_taster_court_position
limit = {
is_available_ai_adult = yes
THIS != scope:physician
}
save_scope_as = food_taster
}
}
else = {
random_courtier_or_guest = { save_scope_as = food_taster }
}
}
option = { # Your strongest potion, you say?
name = court.8100.a
stress_impact = {
craven = major_stress_impact_gain # What if I am not strong enough?
humble = medium_stress_impact_gain # I am fine with my strength
content = medium_stress_impact_gain # ""
}
add_prestige = minor_prestige_gain
random_list = {
1 = {
desc = court.8100.tt.handle_potion
modifier = { factor = scope:physician.learning }
modifier = {
factor = 2
scope:physician = { has_trait = lifestyle_mystic }
}
modifier = {
factor = 2
scope:physician = { has_trait = lifestyle_herbalist }
}
modifier = {
factor = 2
scope:physician = {
OR = {
has_trait = witch
any_secret = { type = secret_witch }
}
}
}
add_character_modifier = {
modifier = strong_potion_modifier
years = 5
}
}
45 = {
desc = court.8100.tt.need_weaker
add_character_modifier = {
modifier = feeling_unwell_modifier
years = 5
}
stress_impact = {
base = medium_stress_impact_gain
}
}
1 = {
desc = court.8100.tt.too_strong
modifier = {
factor = 2
scope:physician = { has_relation_rival = ROOT }
}
modifier = {
factor = 2
scope:physician = { learning < average_skill_rating }
}
death = {
death_reason = death_strongest_potion
killer = scope:physician
}
add_internal_flag = dangerous
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -2
ai_energy = 1
}
modifier = { #Weight down for stress.
add = -30
has_trait = craven
}
modifier = { #Weight down for stress.
add = -15
has_trait = humble
}
modifier = { #Weight down for stress.
add = -15
has_trait = content
}
}
}
option = { # Try it on my taster first
name = court.8100.b
trigger = {
exists = scope:food_taster
scope:food_taster = { has_court_position = food_taster_court_position } # To check against fallback
}
add_tyranny = minor_tyranny_gain
random_list = {
1 = {
desc = court.8100.tt.handle_potion
modifier = { factor = scope:physician.learning }
modifier = {
factor = 2
scope:physician = { has_trait = lifestyle_mystic }
}
modifier = {
factor = 2
scope:physician = { has_trait = lifestyle_herbalist }
}
modifier = {
factor = 2
scope:physician = {
OR = {
has_trait = witch
any_secret = { type = secret_witch }
}
}
}
scope:food_taster = {
add_character_modifier = {
modifier = strong_potion_modifier
years = 5
}
if = {
limit = {
NOT = { has_trait = forgiving }
}
custom_tooltip = court.8100.b.tt_forgiving
add_opinion = {
target = ROOT
modifier = angry_opinion
opinion = -15
}
}
}
add_character_modifier = {
modifier = strong_potion_modifier
years = 5
}
}
45 = {
desc = court.8100.tt.need_weaker
scope:food_taster = {
add_character_modifier = {
modifier = feeling_unwell_modifier
years = 5
}
add_opinion = {
target = ROOT
modifier = angry_opinion
opinion = -15
}
}
}
1 = {
desc = court.8100.tt.too_strong
modifier = {
factor = 2
scope:physician = { has_relation_rival = ROOT }
}
modifier = {
factor = 2
scope:physician = { learning < average_skill_rating }
}
scope:food_taster = {
death = {
death_reason = death_strongest_potion
killer = scope:physician
}
}
add_opinion = {
target = scope:physician
modifier = attempted_murder_opinion
}
}
}
stress_impact = {
brave = medium_stress_impact_gain # What if I am not strong enough?
humble = medium_stress_impact_gain # I am fine with my strength
content = medium_stress_impact_gain # ""
compassionate = major_stress_impact_gain # Food tasters are people too
greedy = medium_stress_impact_gain # It's mine, it came to me!
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -2
ai_energy = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = brave
}
modifier = { #Weight down for stress.
add = -15
has_trait = humble
}
modifier = { #Weight down for stress.
add = -15
has_trait = content
}
modifier = { #Weight down for stress.
add = -30
has_trait = compassionate
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
}
}
option = { # Sacrilege
name = court.8100.c
add_piety = minor_piety_gain
revoke_court_position = {
court_position = court_physician_court_position
recipient = scope:physician
}
reverse_add_opinion = {
target = scope:physician
modifier = angry_opinion
opinion = -15
}
stress_impact = {
cynical = medium_stress_impact_gain # There is no god
arrogant = medium_stress_impact_gain # I want to be swole
ambitious = medium_stress_impact_gain # ""
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 1
ai_boldness = -1
}
modifier = { #Weight down for stress.
add = -30
has_trait = cynical
}
modifier = { #Weight down for stress.
add = -15
has_trait = arrogant
}
modifier = { #Weight down for stress.
add = -15
has_trait = ambitious
}
}
}
option = { # I have no need of your potions
name = court.8100.d
add_prestige = miniscule_prestige_loss
reverse_add_opinion = {
target = scope:physician
modifier = insulted_opinion
opinion = -5
}
stress_impact = {
brave = minor_stress_impact_gain
arrogant = medium_stress_impact_gain # I want to be swole
ambitious = medium_stress_impact_gain # ""
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = -2
ai_greed = -1
}
modifier = { #Weight down for stress.
add = -5
has_trait = brave
}
modifier = { #Weight down for stress.
add = -15
has_trait = arrogant
}
modifier = { #Weight down for stress.
add = -15
has_trait = ambitious
}
}
}
}
#########################
# Novel Perspectives #
# by Joe Parkin #
#########################
scripted_trigger root_faith_compare_doctrine_trigger = {
OR = {
AND = {
faith = { has_doctrine = $DOCTRINE$ }
NOT = {
ROOT.faith = { has_doctrine = $DOCTRINE$ }
}
}
AND = {
ROOT.faith = { has_doctrine = $DOCTRINE$ }
NOT = {
faith = { has_doctrine = $DOCTRINE$ }
}
}
}
}
scripted_trigger court_8120_zealous_vassal_trigger = {
faith = ROOT.faith
has_trait = zealous
NOR = {
THIS = scope:accuser
THIS = scope:refuter
}
}
scripted_effect court_8120_convert_vassal_effect = {
if = {
limit = {
any_vassal = {
court_8120_zealous_vassal_trigger = yes
faith = $FAITH$
NOT = { THIS = $CONVERTOR$ }
}
}
every_vassal = {
limit = {
court_8120_zealous_vassal_trigger = yes
faith = $FAITH$
NOT = { THIS = $CONVERTOR$ }
}
add_opinion = {
target = ROOT
modifier = pious_opinion
opinion = 10
}
}
hidden_effect = {
every_courtier_or_guest = {
limit = {
court_8120_zealous_vassal_trigger = yes
faith = $FAITH$
NOT = { THIS = $CONVERTOR$ }
}
add_opinion = {
target = ROOT
modifier = pious_opinion
opinion = 10
}
}
}
}
else_if = {
limit = {
any_courtier_or_guest = {
court_8120_zealous_vassal_trigger = yes
faith = $FAITH$
NOT = { THIS = $CONVERTOR$ }
}
}
every_courtier_or_guest = {
limit = {
court_8120_zealous_vassal_trigger = yes
faith = $FAITH$
NOT = { THIS = $CONVERTOR$ }
}
add_opinion = {
target = ROOT
modifier = pious_opinion
opinion = 10
}
}
}
}
scripted_trigger court_8120_debater_trigger = {
is_available_ai_adult = yes
faith != ROOT.faith
faith = {
faith_hostility_level = {
target = ROOT.faith
value <= faith_hostile_level
}
}
ROOT.faith = {
faith_hostility_level = {
target = PREV.faith
value <= faith_hostile_level
}
}
OR = {
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_monogamy } # Marriage
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_divorce_disallowed } # Divorce
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_adultery_women_accepted } # Adultery Female
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_adultery_men_accepted } # Adultery Male
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_witchcraft_accepted } # Witchcraft
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_gender_equal } # Equality
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_consanguinity_unrestricted } # Cosanguity
}
}
court_yearly.8120 = {
type = character_event
title = court.8120.t
desc = {
desc = court.8120.desc.intro
first_valid = {
triggered_desc = {
trigger = { scope:accuser.religion = ROOT.religion }
desc = court.8120.desc.same_religion
}
desc = court.8120.desc.other_religion
}
first_valid = {
# Variables used to find randomly chosen doctrine difference
triggered_desc = { # Marriage
trigger = { var:court_8120_issue = 0 }
desc = court.8120.desc.marriage
}
triggered_desc = { # Divorce
trigger = { var:court_8120_issue = 1 }
desc = court.8120.desc.divorce
}
triggered_desc = { # Adultery
trigger = { var:court_8120_issue = 2 }
desc = court.8120.desc.adultery
}
triggered_desc = { # Witchcraft
trigger = { var:court_8120_issue = 3 }
desc = court.8120.desc.witchcraft
}
triggered_desc = { # Equality
trigger = { var:court_8120_issue = 4 }
desc = court.8120.desc.equality
}
triggered_desc = { # Cosanguity
trigger = { var:court_8120_issue = 5 }
desc = court.8120.desc.cosanguity
}
}
desc = court.8120.desc.outro
}
theme = court
cooldown = { years = 10 }
left_portrait = {
character = scope:accuser
animation = throne_room_conversation_2
}
right_portrait = {
character = scope:refuter
animation = throne_room_conversation_4
}
trigger = {
has_royal_court = yes
has_dlc_feature = royal_court
any_courtier_or_guest = { court_8120_debater_trigger = yes }
trigger_if = {
limit = {
NOT = { exists = cp:councillor_court_chaplain }
}
any_courtier_or_guest = {
is_available_ai_adult = yes
faith = ROOT.faith
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
# ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
# Save 1st debater
ordered_courtier_or_guest = {
limit = { court_8120_debater_trigger = yes }
order_by = learning
random_list = {
4 = { # Marriage
trigger = {
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_monogamy } # 1/2 faiths have this
}
ROOT = {
set_variable = { # To track which issue was raised
name = court_8120_issue
value = 0
}
}
if = { # Accuser attacks polygamy
limit = {
faith = { has_doctrine = doctrine_monogamy }
}
save_scope_as = accuser
}
else = { save_scope_as = refuter }
}
4 = { # Divorce
trigger = {
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_divorce_disallowed } # 1/2 faiths have this
}
ROOT = {
set_variable = { # To track which issue was raised
name = court_8120_issue
value = 1
}
}
if = { # Accuser attacks divorce
limit = {
faith = { has_doctrine = doctrine_divorce_disallowed }
}
save_scope_as = accuser
}
else = { save_scope_as = refuter }
}
2 = { # Adultery
trigger = {
OR = {
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_adultery_women_accepted } # 1/2 faiths have this
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_adultery_men_accepted } # 1/2 faiths have this
}
}
ROOT = {
set_variable = { # To track which issue was raised
name = court_8120_issue
value = 2
}
}
if = { # Accuser attacks adultery
limit = {
NOT = {
faith = { has_doctrine = doctrine_adultery_women_accepted }
}
}
save_scope_as = accuser
}
else = { save_scope_as = refuter }
}
4 = { # Witchcraft
trigger = {
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_witchcraft_accepted } # 1/2 faiths have this
}
ROOT = {
set_variable = { # To track which issue was raised
name = court_8120_issue
value = 3
}
}
if = { # Accuser attacks magic
limit = {
NOT = {
faith = { has_doctrine_parameter = witchcraft_accepted }
}
}
save_scope_as = accuser
}
else = { save_scope_as = refuter }
}
2 = { # Equality
trigger = {
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_gender_equal } # 1/2 faiths have this
}
ROOT = {
set_variable = { # To track which issue was raised
name = court_8120_issue
value = 4
}
}
if = { # Accuser attacks inequality
limit = {
faith = { has_doctrine = doctrine_gender_equal }
}
save_scope_as = accuser
}
else = { save_scope_as = refuter }
}
4 = { # Cosanguity
trigger = {
root_faith_compare_doctrine_trigger = { DOCTRINE = doctrine_consanguinity_unrestricted } # 1/2 faiths have this
}
ROOT = {
set_variable = { # To track which issue was raised
name = court_8120_issue
value = 5
}
}
if = { # Accuser attacks intermarriage
limit = {
NOT = {
faith = { has_doctrine = doctrine_consanguinity_unrestricted }
}
}
save_scope_as = accuser
}
else = { save_scope_as = refuter }
}
}
}
# Save 2nd debater
if = {
limit = { exists = cp:councillor_court_chaplain }
cp:councillor_court_chaplain = {
if = {
limit = {
NOT = { exists = scope:accuser }
}
save_scope_as = accuser
}
else = { save_scope_as = refuter }
}
}
else = {
ordered_courtier_or_guest = {
limit = {
is_available_ai_adult = yes
faith = ROOT.faith
}
order_by = learning
if = {
limit = {
NOT = { exists = scope:accuser }
}
save_scope_as = accuser
}
else = { save_scope_as = refuter }
}
}
# Scopes for conversion effects
save_scope_as = character
if = {
limit = { scope:refuter.faith = ROOT.faith }
scope:accuser.faith = { save_scope_as = new_faith }
}
else = {
scope:refuter.faith = { save_scope_as = new_faith }
}
scope:accuser = { assign_quirk_effect = yes }
scope:refuter = { assign_quirk_effect = yes }
}
option = { # Convert
name = {
text = court.8120.a.accuser
trigger = { scope:refuter.faith = ROOT.faith }
}
name = {
text = court.8120.a.refuter
trigger = { scope:accuser.faith = ROOT.faith }
}
add_piety = massive_piety_loss
if = {
limit = { faith = scope:refuter.faith }
reverse_add_opinion = {
target = scope:refuter
modifier = disappointed_opinion
opinion = -40
}
reverse_add_opinion = {
target = scope:accuser
modifier = respect_opinion
opinion = 40
}
court_8120_convert_vassal_effect = {
FAITH = scope:accuser.faith
CONVERTOR = scope:accuser
}
set_character_faith_with_conversion = scope:accuser.faith
}
else = {
reverse_add_opinion = {
target = scope:accuser
modifier = disappointed_opinion
opinion = -40
}
reverse_add_opinion = {
target = scope:refuter
modifier = respect_opinion
opinion = 40
}
court_8120_convert_vassal_effect = {
FAITH = scope:refuter.faith
CONVERTOR = scope:refuter
}
set_character_faith_with_conversion = scope:refuter.faith
}
stress_impact = {
zealous = massive_stress_impact_gain
stubborn = medium_stress_impact_gain
lazy = medium_stress_impact_gain
callous = medium_stress_impact_gain
}
ai_chance = {
base = 20
ai_value_modifier = {
ai_zeal = -1
ai_energy = 0.5
ai_rationality = 0.5
}
modifier = { # Weight down.
add = -100
THIS = ROOT.faith.religious_head
}
modifier = { # Weight down for stress.
add = -30
has_trait = zealous
}
modifier = { # Weight down for stress.
add = -15
has_trait = stubborn
}
modifier = { # Weight down for stress.
add = -15
has_trait = lazy
}
modifier = { # Weight down for stress.
add = -15
has_trait = callous
}
}
}
option = { # Theological kumbaya
name = court.8120.c
trigger = { has_trait = theologian }
reverse_add_opinion = {
target = scope:accuser
modifier = respect_opinion
opinion = 15
}
reverse_add_opinion = {
target = scope:refuter
modifier = respect_opinion
opinion = 15
}
stress_impact = {
base = minor_stress_impact_loss
diplomat = minor_stress_impact_loss
cynical = medium_stress_impact_gain
eccentric = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 0.5
ai_rationality = 1
}
modifier = { # Weight up.
add = 15
has_trait = diplomat
}
modifier = { # Weight down for stress.
add = -15
has_trait = cynical
}
}
}
option = { # Defender of the faith
name = court.8120.d
trigger = { has_trait = zealous }
create_artifact = {
name = my_holy_book
description = my_holy_book_description
type = journal
visuals = book
modifier = artifact_monthly_piety_2_modifier
}
if = {
limit = { faith = scope:refuter.faith }
scope:accuser = { select_and_move_to_pool_effect = yes }
reverse_add_opinion = {
target = scope:accuser
modifier = insulted_opinion
opinion = -15
}
reverse_add_opinion = {
target = scope:refuter
modifier = pious_opinion
opinion = 15
}
}
else = {
scope:refuter = { select_and_move_to_pool_effect = yes }
reverse_add_opinion = {
target = scope:refuter
modifier = insulted_opinion
opinion = -15
}
reverse_add_opinion = {
target = scope:accuser
modifier = pious_opinion
opinion = 15
}
}
every_vassal = {
limit = { court_8120_zealous_vassal_trigger = yes } # root faith, zealous, not accuser/refuter
custom = court.8120.d.tt
add_opinion = {
target = root
modifier = pious_opinion
opinion = 10
}
}
hidden_effect = {
every_courtier_or_guest = {
limit = { court_8120_zealous_vassal_trigger = yes } # root faith, zealous, not accuser/refuter
add_opinion = {
target = root
modifier = pious_opinion
opinion = 10
}
}
}
stress_impact = {
base = minor_stress_impact_loss
lazy = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 1
ai_energy = -1
}
modifier = { # Weight up.
add = 15
has_trait = diplomat
}
modifier = { # Weight down for stress.
add = -30
has_trait = lazy
}
}
}
option = { # Admonish
name = court.8120.e
if = {
limit = { faith = scope:refuter.faith }
reverse_add_opinion = {
target = scope:accuser
modifier = insulted_opinion
opinion = -10
}
reverse_add_opinion = {
target = scope:refuter
modifier = pious_opinion
opinion = 10
}
progress_towards_rival_effect = {
REASON = rival_refuted_faith
CHARACTER = scope:accuser
OPINION = 0
}
}
else = {
scope:refuter = { select_and_move_to_pool_effect = yes }
reverse_add_opinion = {
target = scope:refuter
modifier = insulted_opinion
opinion = -10
}
reverse_add_opinion = {
target = scope:accuser
modifier = pious_opinion
opinion = 10
}
}
stress_impact = {
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 0.5
ai_compassion = -0.5
}
modifier = { # Weight down for stress.
add = -15
has_trait = cynical
}
}
}
option = { # Dismiss
name = court.8120.f
add_piety = miniscule_piety_gain
reverse_add_opinion = {
target = scope:accuser
modifier = humbled_opinion
opinion = -5
}
reverse_add_opinion = {
target = scope:refuter
modifier = humbled_opinion
opinion = -5
}
ai_chance = {
base = 100
}
}
after = { remove_variable = court_8120_issue }
}