N3OW/events/court_events/court_events_general.txt
2026-04-25 13:36:44 +02:00

14400 lines
308 KiB
Text

namespace = court
##################################################
# # RANGES
# 0001 - 0099 Misc Events
# 0100 - 0999 James
# 2001 - 2999 Ewan
# 3000 - 4000 Bianca
# 4001 - 5000 Isabella
# 5001 - 5999 Linnea
# 6000 - 6999 Claudia
# 7000 - 8000 George
# 8001 - 8999 Joe
# 9000 - 9999 Oltner
#
##################################################
##################################################
# Example
##################################################
# 0001 - 0010 Example Event
##################################################
##################################################
# Example Event
# by Ewan Cowhig Croft
# 0001 - 0010
##################################################
# Example court event for studying.
#court.0001 = {
# # Court-type events only appear in the Royal Court view, and are optional to interact with.
# type = court_event
# # Desc and theming rules are as normal, but since there's no background, there's no need for background overrides.
# title = court.0001.t
# desc = court.0001.desc
# theme = court
# # Main portraits are unnecessary: we define this stuff via the court_scene block instead.
# # Secondary portraits may be used as usual.
# lower_left_portrait = scope:character_c
#
# # Court events should be fired from one of their on_actions, but since this is an example, it's left orphaned.
# orphan = yes
#
# # Here, we define how the event appears inside the court view.
# ## This block exists in the root scope, so you can just define anyone you'd normally have access to/set up in the immediate block here.
# court_scene = {
# # Define which character will have the button for starting the event appear over the top of 'em.
# button_position_character = scope:character_a
# # Roles defined in \ck3\game\gfx\court_scene\character_roles\, if you want to change them or add new ones.
# roles = {
# # First, we take each scoped relevant scoped character.
# scope:character_a = {
# # Then we define their role, where they're positioned in the scene. The first character defines always takes the first slot and so on. Slot 1 and 2 look at each other. Slot 3 is beside Slot 2 and facing Slot 1 as well.
# group = event_group
# # Next, we select their animation override (if applicable: you can leave it to the generic default/role default if defined, though generally you'll want to define this).
#
# # This can be a scripted animation block for animation selection based on triggers
# # scripted_animation = {
# # triggered_animation = {
# # trigger = {
# # scope:ruler = {
# # is_female = no
# # }
# # }
# #
# # both syntaxes are supported
# # animation = { rage anger sadness } # randomly chooses one of these animations
# # animation = sadness # selects just one animation
# # You can set a default animation if all triggers fail. Convention is to always have some always-valid trigger and not use this field if using triggered animations.
# animation = anger
# }
# scope:character_b = {
# group = event_group
# animation = rage
# }
# # Characters who are not physically present are referred to only via copy links or lower portraits, so we don't bother putting them here.
# }
# }
#
# weight_multiplier = {
# base = 1
#
# # Court weightings: plug in a court type that should see this event more often.
# ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
# }
#
# immediate = {
# # As with portraits, we do our general character setup stuff in this event.
# random_courtier_or_guest = { save_scope_as = character_a }
# random_courtier_or_guest = {
# limit = {
# this != scope:character_a
# }
# save_scope_as = character_b
# }
# }
#
# # Court events, as with all events, require at least one option to display.
# option = {
# name = court.0001.a
# }
#}
##################################################
# James
##################################################
# 0107 Court tutor reading a boring book to your ward
# 0108 Copyright-friendly foreign Prince/Princess arrives in your court
# 0109 Executioner multiclasses to physician
# 0111 Intervention for your sex addiction
# 0112 Executioner tries their hand at interior decoration
##################################################
#####################################
# Boring book #
# by James Beaumont #
# 0107 #
#####################################
# Tutor reads a boring book to a ward
court.0107 = {
type = court_event
title = court.0107.t
desc = court.0107.desc
theme = court
court_scene = {
button_position_character = scope:tutor
roles = {
scope:tutor = {
group = event_group
animation = anger
}
scope:unruly_child = {
group = event_group
animation = boredom
}
}
}
cooldown = { years = 5 }
trigger = {
employs_court_position = court_tutor_court_position
is_available_adult = yes
court_position:court_tutor_court_position = {
is_available_ai_adult = yes
has_court_event_flag = no
}
any_child = {
is_available_child = yes
age >= 6
has_court_event_flag = no
}
}
# More likely to trigger if the tutor likes writing things
weight_multiplier = {
base = 1
modifier = {
add = 0.5
court_position:court_tutor_court_position = { has_trait = journaller }
}
modifier = {
add = 0.5
court_position:court_tutor_court_position = {
OR = {
has_trait = intellect_good_1
has_trait = intellect_good_2
has_trait = intellect_good_3
}
}
}
modifier = {
add = -0.5
court_position:court_tutor_court_position = {
OR = {
has_trait = intellect_bad_1
has_trait = intellect_bad_2
has_trait = intellect_bad_3
}
}
}
}
immediate = {
random_court_position_holder = {
type = court_tutor_court_position
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
}
save_scope_as = tutor
court_event_character_flag_effect = yes
}
random_child = {
limit = {
is_available_child = yes
age >= 6
OR = {
has_trait = bossy
has_trait = rowdy
}
}
alternative_limit = {
is_available_child = yes
age >= 6
}
save_scope_as = unruly_child
court_event_character_flag_effect = yes
}
}
# Option A: Scold the child for being brazen
option = {
name = court.0107.a
progress_towards_friend_effect = {
REASON = friend_upheld_educational_tactics
CHARACTER = scope:tutor
OPINION = default_friend_opinion
}
progress_towards_rival_effect = {
CHARACTER = scope:unruly_child
REASON = rival_child_scolded
OPINION = default_rival_opinion
}
custom_tooltip = court.0107.a.tt.1
hidden_effect = {
scope:unruly_child = {
education_point_acquisition_effect = yes
}
}
custom_tooltip = court.0107.a.tt.2
scope:tutor = {
add_character_flag = {
flag = court_0107_tutor
years = 20
}
}
stress_impact = {
vengeful = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
ai_vengefulness = 0.5
}
}
}
#Option B: Buy the book yourself
option = {
name = court.0107.b
trigger = {
scope:tutor = { has_education_rank_trigger = { RANK = 2 OPERATOR = greater } }
}
add_opinion = {
target = scope:tutor
modifier = flattered_opinion
opinion = 15
}
pay_short_term_gold = {
target = scope:tutor
gold = medium_gold_value
}
custom_tooltip = court.0107.b.tt
if = {
limit = {
scope:tutor = {
has_trait = education_martial
}
}
create_artifact_book_effect = {
OWNER = root
CREATOR = scope:tutor
SET_SUBJECT = flag:martial
SET_TOPIC = flag:no
}
}
else_if = {
limit = {
scope:tutor = {
has_trait = education_stewardship
}
}
create_artifact_book_effect = {
OWNER = root
CREATOR = scope:tutor
SET_SUBJECT = flag:stewardship
SET_TOPIC = flag:no
}
}
else_if = {
limit = {
scope:tutor = {
has_trait = education_diplomacy
}
}
create_artifact_book_effect = {
OWNER = root
CREATOR = scope:tutor
SET_SUBJECT = flag:diplomacy
SET_TOPIC = flag:no
}
}
else_if = {
limit = {
scope:tutor = {
has_trait = education_intrigue
}
}
create_artifact_book_effect = {
OWNER = root
CREATOR = scope:tutor
SET_SUBJECT = flag:intrigue
SET_TOPIC = flag:no
}
}
else_if = {
limit = {
scope:tutor = {
has_trait = education_learning
}
}
create_artifact_book_effect = {
OWNER = root
CREATOR = scope:tutor
SET_SUBJECT = flag:learning
SET_TOPIC = flag:no
}
}
custom_tooltip = buy_book_artifact
scope:newly_created_artifact = {
save_scope_as = this_artifact
}
scope:tutor = {
save_scope_as = old_owner
}
hidden_effect = {
send_interface_toast = {
title = artifact.0012.t
left_icon = scope:this_artifact
right_icon = scope:old_owner
custom_tooltip = artifact.0012.tooltip
}
}
stress_impact = {
intellect_good_1 = minor_stress_impact_loss
intellect_good_2 = minor_stress_impact_loss
intellect_good_3 = minor_stress_impact_loss
scholar = minor_stress_impact_loss
greedy = minor_stress_impact_gain
intellect_bad_1 = minor_stress_impact_gain
intellect_bad_2 = medium_stress_impact_gain
intellect_bad_3 = major_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
short_term_gold < medium_gold_value
factor = 0
}
}
}
#Option C: Suggest another book - opt out
option = {
name = court.0107.c
add_opinion = {
target = scope:tutor
modifier = insult_opinion
opinion = -15
}
progress_towards_friend_effect = {
REASON = friend_saved_from_boredom
CHARACTER = scope:unruly_child
OPINION = default_friend_opinion
}
stress_impact = {
compassionate = minor_stress_impact_loss
diligent = minor_stress_impact_gain
stubborn = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
}
}
}
after = {
scope:tutor = {
clear_court_event_participation = yes
}
scope:unruly_child = {
clear_court_event_participation = yes
}
}
}
#####################################
# A Spectacular Courtier #
# by James Beaumont #
# 0108 #
#####################################
scripted_effect spawn_foreign_prince_effect = {
random_kingdom = {
limit = {
holder ?= {
is_ai = yes
NOT = {
in_diplomatic_range = root
}
}
}
holder = { save_scope_as = foreign_realm_target }
}
scope:available_child = {
if = {
limit = { is_female = no }
create_character = {
location = root.capital_province
template = prince_ali_template
gender = female
culture = scope:foreign_realm_target.culture
faith = scope:foreign_realm_target.faith
save_scope_as = foreign_prince
}
}
else = {
create_character = {
location = root.capital_province
template = prince_ali_template
gender = male
culture = scope:foreign_realm_target.culture
faith = scope:foreign_realm_target.faith
save_scope_as = foreign_prince
}
}
}
scope:foreign_prince = {
random_list = {
50 = { set_sexuality = heterosexual }
50 = { set_sexuality = bisexual }
}
random_list = {
3 = { add_gold = 100 }
3 = { add_gold = 250 }
3 = { add_gold = 500 }
3 = { add_gold = 750 }
3 = { add_gold = 1000 }
}
set_relation_lover = { reason = lover_magnificently_seduced target = scope:available_child involved_character = root }
give_nickname = nick_fabulous_she_he
visit_court_of = root
}
}
# Foreign Prince comes to propose to an available daughter/son
court.0108 = {
type = court_event
title = court.0108.t
desc = court.0108.desc
theme = court
court_scene = {
button_position_character = scope:sceptical_courtier
roles = {
scope:sceptical_courtier = {
group = event_group
animation = personality_cynical
}
scope:available_child = {
group = event_group
animation = love
}
scope:foreign_prince = {
group = event_group
animation = flirtation_left
}
}
}
cooldown = { years = 50 }
trigger = {
is_available_adult = yes
is_valid_for_east_asian_events_trigger = no
any_child = {
is_available_ai_adult = yes
allowed_more_spouses = yes
is_concubine = no
OR = {
has_sexuality = heterosexual
has_sexuality = bisexual
}
has_court_event_flag = no
}
any_kingdom = {
holder ?= {
is_ai = yes
NOT = {
in_diplomatic_range = root
}
}
}
court_grandeur_current_level >= medium_court_grandeur_level
}
weight_multiplier = {
base = 1
modifier = {
add = 1
root.faith = {
OR = {
religion_tag = islam_religion
has_doctrine_parameter = islamic_syncretic_actor_opinion_active
}
}
}
}
immediate = {
hidden_effect = {
if = {
limit = {
any_court_position_holder = {
has_trait = cynical
is_available_adult = yes
}
}
random_court_position_holder = {
limit = {
has_trait = cynical
is_available_adult = yes
}
save_scope_as = sceptical_courtier
court_event_character_flag_effect = yes
}
}
else_if = {
limit = {
any_courtier = {
has_trait = cynical
is_available_adult = yes
}
}
random_courtier = {
limit = {
has_trait = cynical
is_available_adult = yes
}
save_scope_as = sceptical_courtier
court_event_character_flag_effect = yes
}
}
else = {
random_courtier = {
limit = { is_available_adult = yes }
save_scope_as = sceptical_courtier
court_event_character_flag_effect = yes
}
}
random_child = {
limit = {
is_available_ai_adult = yes
allowed_more_spouses = yes
is_concubine = no
OR = { #They need to be attracted to the Prince
has_sexuality = heterosexual
has_sexuality = bisexual
}
}
save_scope_as = available_child
court_event_character_flag_effect = yes
}
spawn_foreign_prince_effect = yes
}
}
# Option A: Get them married!
option = {
name = court.0108.a
scope:foreign_prince = {
pay_short_term_gold = {
target = root
gold = 50_percent_of_owned_gold
}
}
scope:available_child = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 40
}
}
progress_towards_friend_effect = {
REASON = friend_approved_marriage_proposal
CHARACTER = scope:foreign_prince
OPINION = default_friend_opinion
}
progress_towards_rival_effect = {
CHARACTER = scope:sceptical_courtier
REASON = rival_concerns_dismissed
OPINION = default_rival_opinion
}
if = {
limit = {
has_ep2_dlc_trigger = yes
}
create_grand_wedding_betrothal = {
SPOUSE_1 = scope:available_child
SPOUSE_2 = scope:foreign_prince
HOST = root
PROMISEE = scope:foreign_realm_target
}
}
else_if = {
limit = {
scope:available_child = {
is_female = no
}
}
scope:available_child = { marry = scope:foreign_prince }
}
else = {
scope:available_child = { marry_matrilineal = scope:foreign_prince }
}
change_current_court_grandeur = minor_court_grandeur_gain
stress_impact = {
paranoid = major_stress_impact_gain
cynical = minor_stress_impact_gain
compassionate = minor_stress_impact_loss
trusting = minor_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 2
ai_vengefulness = -0.5
}
}
}
#Option B: Imprison the Prince
option = {
name = court.0108.b
scope:foreign_prince = {
pay_short_term_gold = {
target = root
gold = 80_percent_of_owned_gold
}
}
progress_towards_rival_effect = {
CHARACTER = scope:foreign_prince
REASON = rival_foreign_prince
OPINION = default_rival_opinion
}
progress_towards_rival_effect = {
CHARACTER = scope:available_child
REASON = rival_disallowed_marrying
OPINION = default_rival_opinion
}
progress_towards_friend_effect = {
REASON = friend_believed_claim
CHARACTER = scope:sceptical_courtier
OPINION = default_friend_opinion
}
rightfully_imprison_character_effect = {
TARGET = scope:foreign_prince
IMPRISONER = root
}
stress_impact = {
compassionate = minor_stress_impact_gain
trusting = minor_stress_impact_gain
sadistic = minor_stress_impact_loss
cynical = major_stress_impact_loss
paranoid = major_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
ai_vengefulness = 1
}
}
}
#Option C: Send them away
option = {
name = court.0108.c
scope:available_child = {
add_opinion = {
modifier = hurt_opinion
target = root
opinion = -25
}
}
scope:foreign_prince = {
hidden_effect = { select_and_move_to_pool_effect = yes }
}
show_as_tooltip = {
remove_courtier_or_guest = scope:foreign_prince
}
ai_chance = {
base = 10
}
}
after = {
scope:available_child = {
clear_court_event_participation = yes
}
scope:sceptical_courtier = {
clear_court_event_participation = yes
}
}
}
#####################################
# An Anatomical Expert #
# by James Beaumont #
# 0109 #
#####################################
# Executioner knows medicine, wants to be a doctor
court.0109 = {
type = court_event
title = court.0109.t
desc = court.0109.desc
theme = court
court_scene = {
button_position_character = scope:executioner
roles = {
scope:executioner = {
group = event_group
animation = personality_rational
}
scope:learned_courtier = {
group = event_group
animation = admiration
}
}
}
cooldown = { years = 20 }
trigger = {
employs_court_position = executioner_court_position
court_position:executioner_court_position = {
is_available_ai_adult = yes
has_court_event_flag = no
NOT = { has_court_position = court_physician_court_position }
save_temporary_scope_as = executioner_temp
}
any_courtier = {
exists = yes
is_available_adult = yes
learning >= 10
has_court_event_flag = no
NOR = {
has_court_position = executioner_court_position
this = scope:executioner_temp
}
}
is_available_adult = yes
}
# More likely to trigger if the executioner is smart and cares about other humans
weight_multiplier = {
base = 1
modifier = {
add = 0.5
court_position:executioner_court_position = { has_trait = scholar }
}
modifier = {
add = 0.5
court_position:executioner_court_position = { has_trait = compassionate }
}
modifier = {
add = 0.5
court_position:executioner_court_position = { has_trait = education_learning }
}
modifier = {
add = 0.5
court_position:executioner_court_position = { has_trait = lifestyle_herbalist }
}
modifier = {
add = 0.5
court_position:executioner_court_position = { has_trait = lifestyle_physician }
}
modifier = {
add = 0.5
court_position:executioner_court_position = {
OR = {
has_trait = intellect_good_1
has_trait = intellect_good_2
has_trait = intellect_good_3
}
}
}
modifier = {
add = -0.5
court_position:executioner_court_position = {
OR = {
has_trait = intellect_bad_1
has_trait = intellect_bad_2
has_trait = intellect_bad_3
}
}
}
#Executioner less likely to help the sick and needy if they don't care about the sick and needy
modifier = {
add = -0.5
court_position:executioner_court_position = { has_trait = sadistic }
}
modifier = {
add = -0.5
court_position:executioner_court_position = { has_trait = callous }
}
}
immediate = {
random_court_position_holder = {
type = executioner_court_position
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
NOT = { has_court_position = court_physician_court_position }
}
save_scope_as = executioner
court_event_character_flag_effect = yes
if = {
limit = {
NOT = { has_trait = lifestyle_physician }
}
add_trait = lifestyle_physician
add_random_tiered_trait_xp_effect = {
TRAIT = lifestyle_physician
LEVEL_1 = yes
LEVEL_3 = yes
}
}
}
if = {
limit = {
cp:councillor_court_chaplain = {
exists = yes
learning >= 10
is_available_ai_adult = yes
NOR = {
has_court_position = executioner_court_position
this = scope:executioner
}
}
}
cp:councillor_court_chaplain = {
save_scope_as = learned_courtier
court_event_character_flag_effect = yes
}
}
else = {
random_courtier = {
limit = {
learning >= 10
is_available_adult = yes
has_court_event_flag = no
NOR = {
has_court_position = executioner_court_position
this = scope:executioner
}
}
save_scope_as = learned_courtier
court_event_character_flag_effect = yes
}
}
if = {
limit = {
employs_court_position = court_physician_court_position
court_position:court_physician_court_position = {
this != scope:executioner
}
}
random_court_position_holder = {
type = court_physician_court_position
limit = { this != scope:executioner }
save_scope_as = current_physician
}
}
}
# Option A: Employ executioner as physician
option = {
name = court.0109.a
progress_towards_friend_effect = {
REASON = friend_hired_physician
CHARACTER = scope:executioner
OPINION = 0
}
reverse_add_opinion = {
target = scope:executioner
modifier = grateful_opinion
opinion = 25
}
revoke_court_position = {
recipient = scope:executioner
court_position = executioner_court_position
}
court_position_grant_effect = { POS = court_physician CANDIDATE = scope:executioner EMPLOYER = root }
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 0.5
ai_vengefulness = -0.5
}
modifier = {
factor = 2
scope:executioner = {
has_trait = lifestyle_physician
has_trait_xp = {
trait = lifestyle_physician
value >= 100
}
}
}
}
}
#Option C: Learn from the executioner
option = {
name = court.0109.c
trigger = {
OR = {
has_trait = scholar
has_trait = education_learning
has_lifestyle = learning_lifestyle
}
}
if = {
limit = {
scope:executioner = {
has_trait = lifestyle_physician
has_trait_xp = {
trait = lifestyle_physician
value >= 100
}
}
}
add_learning_lifestyle_xp = major_lifestyle_xp
}
else_if = {
limit = {
scope:executioner = {
has_trait = lifestyle_physician
has_trait_xp = {
trait = lifestyle_physician
value >= 50
}
}
}
add_learning_lifestyle_xp = medium_lifestyle_xp
}
else = {
add_learning_lifestyle_xp = minor_lifestyle_xp
}
stress_impact = {
arrogant = medium_stress_impact_gain
lazy = medium_stress_impact_gain
impatient = medium_stress_impact_gain
shy = medium_stress_impact_gain
}
ai_chance = {
base = 50
}
}
#Option D: Tell them to continue tending to the sick and needy
option = {
name = court.0109.d
primary_title.title_capital_county = {
change_development_progress = medium_development_progress_gain
}
reverse_add_opinion = {
target = scope:executioner
modifier = disappointed_opinion
opinion = -5
}
scope:executioner = {
give_nickname = nick_health_god_mercy
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 0.5
ai_vengefulness = -0.5
}
}
}
after = {
scope:learned_courtier = {
clear_court_event_participation = yes
}
scope:executioner = {
clear_court_event_participation = yes
}
}
}
#####################################
# A Relic of Revenge #
# by James Beaumont #
# 0111 #
#####################################
# Executioner wants to turn the skull of your rival into an artefact
scripted_trigger enticingly_skulled_prisoner = {
is_ai = yes
is_adult = yes
OR = {
has_relation_rival = root
NOT = { has_faith = root.faith }
has_hook = root
num_sinful_traits >= 2
}
}
court.0111 = {
type = court_event
title = court.0111.t
desc = court.0111.desc
theme = court
court_scene = {
button_position_character = scope:executioner
roles = {
scope:executioner = {
group = event_group
animation = scheme
}
scope:antiquarian = {
group = event_group
animation = anger
}
}
}
cooldown = { years = 50 }
trigger = {
employs_court_position = executioner_court_position
employs_court_position = antiquarian_court_position
court_position:executioner_court_position = {
is_available_ai_adult = yes
has_court_event_flag = no
NOT = {
has_court_position = antiquarian_court_position
}
}
court_position:antiquarian_court_position = {
is_available_ai_adult = yes
has_court_event_flag = no
NOT = {
has_court_position = executioner_court_position
}
}
any_prisoner = { enticingly_skulled_prisoner = yes }
}
# More likely to trigger if the executioner is kind of evil
weight_multiplier = {
base = 3
modifier = {
add = 1
court_position:executioner_court_position = {
has_trait = sadistic
}
}
modifier = {
add = 1
court_position:executioner_court_position = {
has_trait = callous
}
}
}
immediate = {
if = {
limit = {
court_position:executioner_court_position = {
is_available_ai_adult = yes
NOT = {
has_court_position = antiquarian_court_position
}
}
}
court_position:executioner_court_position = {
save_scope_as = executioner
court_event_character_flag_effect = yes
}
}
if = {
limit = {
court_position:antiquarian_court_position = {
is_available_ai_adult = yes
NOT = {
has_court_position = executioner_court_position
}
}
}
court_position:antiquarian_court_position = {
save_scope_as = antiquarian
court_event_character_flag_effect = yes
}
}
random_prisoner = {
limit = { enticingly_skulled_prisoner = yes }
save_scope_as = rival
}
}
# Option A: Give me their skull
option = {
name = court.0111.a
progress_towards_friend_effect = {
REASON = friend_took_side_in_dispute
CHARACTER = scope:executioner
OPINION = default_friend_opinion
}
reverse_add_opinion = {
target = scope:antiquarian
modifier = disgusted_opinion
opinion = -30
}
save_scope_as = owner
if = {
limit = {
scope:rival = {
OR = {
has_relation_rival = root
has_hook = root
}
}
}
create_artifact = {
name = artifact_pedestal_skull_of_the_enemy_name
description = artifact_pedestal_skull_of_the_enemy_description
visuals = human_skull
type = pedestal
modifier = artifact_dread_baseline_add_2_modifier
save_scope_as = newly_created_artifact
}
}
else_if = {
limit = {
scope:rival = {
OR = {
NOT = { has_faith = root.faith }
num_sinful_traits >= 2
}
}
}
create_artifact = {
name = artifact_pedestal_skull_of_the_apostate_name
description = artifact_pedestal_skull_of_the_apostate_description
visuals = human_skull
type = pedestal
modifier = artifact_dread_baseline_add_2_modifier
save_scope_as = newly_created_artifact
}
}
hidden_effect = {
scope:newly_created_artifact = {
add_artifact_modifier = artifact_dread_gain_mult_3_modifier
add_artifact_modifier = artifact_intrigue_per_stress_level_1_modifier
}
}
scope:newly_created_artifact = {
save_scope_as = this_artifact
}
scope:rival = {
save_scope_as = old_owner
}
hidden_effect = {
send_interface_toast = {
title = artifact.0012.t
left_icon = scope:this_artifact
right_icon = scope:old_owner
custom_tooltip = artifact.0012.tooltip
}
}
scope:rival = {
death = {
death_reason = death_skull_removed
killer = scope:executioner
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
just = major_stress_impact_gain
forgiving = major_stress_impact_gain
arbitrary = minor_stress_impact_loss
callous = minor_stress_impact_loss
vengeful = minor_stress_impact_loss
wrathful = minor_stress_impact_loss
}
ai_chance = {
base = 25
ai_value_modifier = {
ai_vengefulness = 0.5
ai_honor = -1
}
}
}
#Option B: Refuse the "artifact"
option = {
name = court.0111.b
reverse_add_opinion = {
target = scope:executioner
modifier = disappointed_opinion
opinion = -15
}
reverse_add_opinion = {
target = scope:antiquarian
modifier = relieved_opinion
opinion = 15
}
stress_impact = {
vengeful = minor_stress_impact_gain
wrathful = medium_stress_impact_gain
forgiving = minor_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 0.5
ai_vengefulness = -0.5
ai_zeal = -0.5
}
}
}
after = {
scope:executioner = {
clear_court_event_participation = yes
}
scope:antiquarian = {
clear_court_event_participation = yes
}
}
}
#####################################
# A Closeted Cadaver #
# by James Beaumont #
# 0112 #
#####################################
# Someone has been hiding a cadaver in the closet
scripted_trigger valid_lady_in_waiting_like_character_trigger = {
is_available_ai_adult = yes
has_court_event_flag = no
trigger_if = {
limit = {
root = { is_female = yes }
}
is_female = yes
}
trigger_else = {
is_male = yes
}
OR = {
has_trait = sadistic
has_trait = callous
has_trait = wrathful
has_trait = craven
has_trait = paranoid
}
OR = {
has_court_position = lady_in_waiting_court_position
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
}
NOT = {
is_close_family_of = root
}
}
court.0112 = {
type = court_event
title = court.0112.t
desc = court.0112.desc
theme = court
court_scene = {
button_position_character = scope:guilty_courtier
roles = {
scope:guilty_courtier = {
group = event_group
animation = fear
}
}
}
cooldown = { years = 20 }
trigger = {
any_courtier = {
valid_lady_in_waiting_like_character_trigger = yes
}
any_pool_character = {
province = root.capital_province
is_available_ai_adult = yes
NOT = { exists = scope:inspiration }
}
is_available_adult = yes
}
weight_multiplier = {
base = 0.5
modifier = {
amenity_level = {
target = court_fashion
value > medium_amenity_level
}
add = 0.5
}
modifier = {
add = 0.5
employs_court_position = lady_in_waiting_court_position
}
}
immediate = {
random_courtier = {
limit = {
valid_lady_in_waiting_like_character_trigger = yes
has_court_position = lady_in_waiting_court_position
}
alternative_limit = {
valid_lady_in_waiting_like_character_trigger = yes
}
save_scope_as = guilty_courtier
court_event_character_flag_effect = yes
}
hidden_effect = {
random_pool_character = {
limit = {
is_available_ai_adult = yes
NOT = { exists = scope:inspiration }
}
province = root.capital_province
save_scope_as = corpse
}
unknown_murder_effect = {
VICTIM = scope:corpse
MURDERER = scope:guilty_courtier
REASON = death_murder
}
if = {
limit = {
any_character_artifact = {
OR = {
has_variable = cabinet
has_variable = big_chest
}
NOT = { has_variable = ghost_cabinet }
}
}
random_character_artifact = {
limit = {
OR = {
has_variable = cabinet
has_variable = big_chest
}
NOT = { has_variable = ghost_cabinet }
}
set_variable = {
name = ghost_cabinet
years = 50
}
}
}
}
}
# Option A: I'll forget I saw this, for the good of fashion
option = {
name = court.0112.a
scope:guilty_courtier = {
random_secret = {
type = secret_murder
limit = {
secret_target = scope:corpse
NOT = { any_secret_knower = { this = root } }
}
disable_exposure_by = root
}
}
hidden_effect = {
create_artifact_regalia_effect = {
OWNER = root
SMITH = scope:guilty_courtier
}
}
custom_tooltip = get_regalia_artifact
scope:newly_created_artifact = {
save_scope_as = this_artifact
}
scope:guilty_courtier = {
save_scope_as = old_owner
}
hidden_effect = {
send_interface_toast = {
title = artifact.0012.t
left_icon = scope:this_artifact
right_icon = scope:old_owner
custom_tooltip = artifact.0012.tooltip
}
}
reverse_add_opinion = {
target = scope:guilty_courtier
modifier = grateful_opinion
opinion = 50
}
stress_impact = {
zealous = medium_stress_impact_gain
vengeful = minor_stress_impact_gain
wrathful = minor_stress_impact_gain
just = major_stress_impact_gain
trusting = minor_stress_impact_loss
callous = minor_stress_impact_loss
greedy = minor_stress_impact_loss
}
ai_chance = {
base = 25
ai_value_modifier = {
ai_compassion = 0.5
ai_greed = 0.5
ai_honor = -0.5
}
}
}
#Option B: Expose the murder
option = {
name = court.0112.b
reverse_add_opinion = {
target = scope:guilty_courtier
modifier = hate_opinion
opinion = -50
}
scope:guilty_courtier = {
random_secret = {
type = secret_murder
limit = {
secret_target = scope:corpse
NOT = { any_secret_knower = { this = root } }
}
expose_secret = root
}
}
stress_impact = {
greedy = major_stress_impact_gain
vengeful = minor_stress_impact_gain
wrathful = medium_stress_impact_gain
forgiving = minor_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
ai_greed = -0.5
ai_honor = 0.5
}
}
}
#Option C: Leave without saying anything
option = {
name = court.0112.c
reverse_add_opinion = {
target = scope:guilty_courtier
modifier = scared_opinion
opinion = -15
}
scope:guilty_courtier = {
random_secret = {
type = secret_murder
limit = {
secret_target = scope:corpse
NOT = { any_secret_knower = { this = root } }
}
reveal_to = root
}
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
ai_greed = -0.5
ai_honor = -0.5
}
}
}
after = {
scope:guilty_courtier = {
clear_court_event_participation = yes
}
}
}
##################################################
# Ewan
##################################################
# 2201 - 2210 A Slice of the Pie - Your heirs debate the merits of partition. At length.
# 2401 - 2410 Second-Hand Glamour - Your lacklustre approach to fashion sees courtiers turn elsewhere.
##################################################
##################################################
# MAJESTY SUB-SECTION
##################################################
# A Slice of the Pie
# by Ewan Cowhig Croft
# 2201 - 2210
##################################################
scripted_trigger court_2201_valid_basic_heir_child_trigger = {
exists = root.dynasty
dynasty ?= root.dynasty
# Must be available, and at least a teenager.
is_available_ai = yes
OR = {
is_adult = yes
child_is_teen_trigger = yes
}
# Finally, has to be chilling in the capital.
location = root.capital_province
}
scripted_trigger court_2201_valid_eldest_heir_child_trigger = {
# Basic checks.
court_2201_valid_basic_heir_child_trigger = yes
# Is the eldest heir of root.
save_temporary_scope_as = eldest_heir_temp
root = {
player_heir_position = {
value = 0 #player heir
target = scope:eldest_heir_temp
}
}
}
scripted_trigger court_2201_valid_younger_heir_child_trigger = {
# Basic checks.
court_2201_valid_basic_heir_child_trigger = yes
# Is getting *some* kind of inheritance through partition.
any_heir_title = {
holder ?= root
}
# Is *NOT* the eldest heir of root.
save_temporary_scope_as = younger_heir_temp
root = {
player_heir_position = {
value >= 1
target = scope:younger_heir_temp
}
}
}
court.2201 = {
type = court_event
title = court.2201.t
desc = court.2201.desc
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:eldest_heir
roles = {
scope:eldest_heir = {
group = event_group
animation = anger
}
scope:younger_heir = {
group = event_group
animation = dismissal
}
}
}
trigger = {
# DLC check.
has_royal_court = yes
# Standard checks.
is_available_adult = yes
is_landed = yes
# Is using a form of partition succession.
has_partition_succession_realm_law_trigger = yes
# Has a suitable eldest heir/child.
any_player_heir = {
court_2201_valid_eldest_heir_child_trigger = yes
has_court_event_flag = no
}
# Has a suitable younger heir/child.
any_player_heir = {
court_2201_valid_younger_heir_child_trigger = yes
has_court_event_flag = no
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
# Grab our heirs.
random_player_heir = {
limit = { court_2201_valid_eldest_heir_child_trigger = yes }
save_scope_as = eldest_heir
court_event_character_flag_effect = yes
}
random_player_heir = {
limit = { court_2201_valid_younger_heir_child_trigger = yes }
save_scope_as = younger_heir
court_event_character_flag_effect = yes
}
}
# Entitled to more, scope:eldest_heir? How about *nothing*!
option = {
name = court.2201.a
# Disinherit scope:eldest_heir for free.
scope:eldest_heir = {
disinherit_effect = { DISINHERITOR = root }
}
# Friendship & hook with scope:younger_heir.
progress_towards_friend_effect = {
REASON = friend_disinherited_other_child
CHARACTER = scope:younger_heir
OPINION = 50
}
if = {
limit = {
can_add_hook = {
target = scope:younger_heir
type = favor_hook
}
}
add_hook = {
target = scope:younger_heir
type = favor_hook
}
}
# Insta-rivalry with scope:eldest_heir and between the siblings.
scope:eldest_heir = {
if = {
limit = {
can_set_relation_rival_even_if_teen_trigger = { CHARACTER = root }
}
set_relation_rival = {
target = root
reason = rival_parent_rivalry
}
}
if = {
limit = {
can_set_relation_nemesis_even_if_teen_trigger = { CHARACTER = scope:younger_heir }
}
set_relation_nemesis = {
reason = nemesis_parent_rivalry
copy_reason = rival
target = scope:younger_heir
}
}
else_if = {
limit = {
can_set_relation_rival_even_if_teen_trigger = { CHARACTER = scope:younger_heir }
}
set_relation_rival = {
target = scope:younger_heir
reason = rival_inter_heir_rivalry
}
}
else = {
add_opinion = {
target = scope:younger_heir
modifier = hate_opinion
opinion = -50
}
reverse_add_opinion = {
target = scope:younger_heir
modifier = hate_opinion
opinion = -50
}
}
}
stress_impact = {
vengeful = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
irritable = minor_stress_impact_loss
forgiving = medium_stress_impact_gain
just = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
ai_compassion = 0.25
}
}
}
# Sad to say, scope:younger_heir, GetSheHe makes a good point.
option = {
name = court.2201.b
# Disinherit scope:younger_heir for free.
scope:younger_heir = {
disinherit_effect = { DISINHERITOR = root }
}
# Friendship & hook with scope:eldest_heir.
progress_towards_friend_effect = {
REASON = friend_disinherited_other_child
CHARACTER = scope:eldest_heir
OPINION = 50
}
if = {
limit = {
can_add_hook = {
target = scope:eldest_heir
type = favor_hook
}
}
add_hook = {
target = scope:eldest_heir
type = favor_hook
}
}
# Insta-rivalry with scope:younger_heir and between the siblings.
scope:younger_heir = {
if = {
limit = {
can_set_relation_rival_even_if_teen_trigger = { CHARACTER = root }
}
set_relation_rival = {
target = root
reason = rival_parent_rivalry
}
}
if = {
limit = {
can_set_relation_nemesis_even_if_teen_trigger = { CHARACTER = scope:eldest_heir }
}
set_relation_nemesis = {
reason = nemesis_parent_rivalry
copy_reason = rival
target = scope:eldest_heir
}
}
else_if = {
limit = {
can_set_relation_rival_even_if_teen_trigger = { CHARACTER = scope:eldest_heir }
}
set_relation_rival = {
target = scope:eldest_heir
reason = rival_inter_heir_rivalry
}
}
else = {
add_opinion = {
target = scope:eldest_heir
modifier = hate_opinion
opinion = -50
}
reverse_add_opinion = {
target = scope:eldest_heir
modifier = hate_opinion
opinion = -50
}
}
}
stress_impact = {
vengeful = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
irritable = minor_stress_impact_loss
forgiving = medium_stress_impact_gain
just = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 0.25
ai_compassion = -0.5
}
}
}
# They're siblings, I'm sure they'll get along fine without me.
option = {
name = court.2201.c
trigger = {
NOT = { has_trait = family_first }
}
# Hidden potential rivalry in the future.
hidden_effect = {
scope:eldest_heir = {
progress_towards_rival_effect = {
CHARACTER = scope:younger_heir
REASON = rival_argued_succession
OPINION = -20
}
}
}
# And some diplomacy lifestyle XP for your wisdom.
add_diplomacy_lifestyle_xp = medium_lifestyle_xp
stress_impact = {
trusting = miniscule_stress_impact_loss
lazy = miniscule_stress_impact_loss
arbitrary = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = -0.25
ai_rationality = -0.25
ai_energy = -0.5
}
}
}
after = {
scope:younger_heir = {
clear_court_event_participation = yes
}
scope:eldest_heir = {
clear_court_event_participation = yes
}
}
}
##################################################
# FOREIGN GUESTS SUB-SECTION
##################################################
# Second-Hand Glamour
# by Ewan Cowhig Croft
# 2401 - 2410
##################################################
scripted_trigger court_2401_valid_neighbouring_ruler_trigger = {
# Isn't at war with root.
NOT = {
is_at_war_with = root
}
# Has a royal court, and therefore amenities.
has_royal_court = yes
# Is more fashionable.
amenity_level = {
target = court_fashion
value > medium_amenity_level
}
}
scripted_trigger court_2401_valid_scope_seller_trigger = {
OR = {
has_trait_malicious_trigger = yes
has_trait_dominant_trigger = yes
}
}
court.2401 = {
type = court_event
title = court.2401.t
desc = court.2401.desc
theme = court
cooldown = { years = 15 }
court_scene = {
button_position_character = scope:seller
roles = {
scope:seller = {
group = event_group
animation = flirtation
}
}
}
trigger = {
# DLC check.
has_royal_court = yes
# Standard checks.
is_available_adult = yes
is_landed = yes
# Low fashion amenity.
amenity_level = {
target = court_fashion
value <= medium_amenity_level
}
# Any neighbour with a better fashion amenity.
any_neighboring_and_across_water_realm_same_rank_owner = { court_2401_valid_neighbouring_ruler_trigger = yes }
# Available courtier to become scope:seller.
any_courtier = {
court_2401_valid_scope_seller_trigger = yes
is_available_ai_adult = yes
has_court_event_flag = no
}
}
weight_multiplier = {
base = 1
modifier = {
amenity_level = {
target = court_fashion
value <= low_amenity_level
}
add = 1
}
modifier = {
any_neighboring_and_across_water_realm_same_rank_owner = {
court_2401_valid_neighbouring_ruler_trigger = yes
amenity_level = {
target = court_fashion
value >= high_amenity_level
}
}
add = 1
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
# Grab an appropriate neighbouring realm.
random_neighboring_and_across_water_realm_same_rank_owner = {
limit = { court_2401_valid_neighbouring_ruler_trigger = yes }
save_scope_as = grander_ruler
}
# Grab a scope:seller.
random_courtier = {
limit = {
court_2401_valid_scope_seller_trigger = yes
is_available_ai_adult = yes
}
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 = seller
court_event_character_flag_effect = yes
}
}
# My, those *do* look enticing...
option = {
name = court.2401.a
trigger = {
can_make_expensive_purchase_trigger = { PRICE = medium_gold_value }
}
# Pay gold to copy the fashions.
pay_short_term_gold = {
target = scope:seller
gold = medium_gold_value
}
# Gain some corresponding CGV.
change_current_court_grandeur = major_court_grandeur_gain
# Increase your amenities
add_amenity_level = { type = court_fashion value = 1 }
# And opinion.
reverse_add_opinion = {
target = scope:seller
modifier = pleased_opinion
opinion = 30
}
# But lose a little prestige.
add_prestige = minor_prestige_loss
stress_impact = {
humble = miniscule_stress_impact_loss
fickle = miniscule_stress_impact_loss
arrogant = medium_stress_impact_gain
stubborn = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.5
ai_vengefulness = -0.25
ai_greed = -0.5
}
}
}
# Get those out of here! We don't need foreign nonsense in my court!
option = {
name = court.2401.b
# Gain prestige!
add_prestige = medium_prestige_gain
# But upset scope:seller
reverse_add_opinion = {
target = scope:seller
modifier = angry_opinion
opinion = -30
}
#And loss a little CGV.
change_current_court_grandeur = minor_court_grandeur_loss
#But gain tiny legitimacy
add_legitimacy = miniscule_legitimacy_gain
stress_impact = {
arrogant = miniscule_stress_impact_loss
stubborn = miniscule_stress_impact_loss
humble = medium_stress_impact_gain
fickle = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
ai_sociability = -0.25
}
}
}
# Who cares what people wear?
option = {
name = court.2401.c
# Gain a little consolation prestige.
add_prestige = miniscule_prestige_gain
stress_impact = {
lazy = miniscule_stress_impact_loss
shy = minor_stress_impact_loss
gregarious = minor_stress_impact_gain
arrogant = medium_stress_impact_gain
stubborn = medium_stress_impact_gain
humble = medium_stress_impact_gain
fickle = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = -0.25
ai_vengefulness = -0.25
ai_energy = -0.5
}
}
}
after = {
scope:seller = {
clear_court_event_participation = yes
}
}
}
##################################################
# Bianca
##################################################
# 3040 - 3049 Homesick MotherFather
# 3060 - 3069 A Feline Hunter
##################################################
#####################################
# A courtier's inspired work #
# by Bianca Savazzi #
# 3010 #
#####################################
#scripted_effect court_3010_inspired_work_neutral_toast_effect = {
# hidden_effect = {
# send_interface_toast = {
# title = court.3010.t
# right_icon = scope:inspired_writer
# custom_tooltip = court.3010.c.neutral
# }
# }
#}
#scripted_effect court_3010_inspired_work_stress_toast_effect = {
# if = {
# limit = {
# OR = {
# has_trait = arrogant
# has_trait = wrathful
# has_trait = impatient
# has_trait = sadistic
# }
# }
# stress_impact = {
# arrogant = medium_stress_impact_gain
# wrathful = medium_stress_impact_gain
# impatient = medium_stress_impact_gain
# sadistic = medium_stress_impact_gain
# }
# }
# else = { add_stress = minor_stress_gain }
#
# hidden_effect = {
# root = {
# send_interface_toast = {
# title = court.3010.t
# right_icon = scope:inspired_writer
# custom_tooltip = court.3010.c.stress
# show_as_tooltip = {
# scope:inspired_writer = {
# if = {
# limit = {
# OR = {
# has_trait = arrogant
# has_trait = wrathful
# has_trait = impatient
# has_trait = sadistic
# }
# }
# stress_impact = {
# arrogant = major_stress_impact_gain
# wrathful = major_stress_impact_gain
# impatient = major_stress_impact_gain
# sadistic = major_stress_impact_gain
# }
# }
# else = { add_stress = medium_stress_gain }
# }
# }
# }
# }
# }
#}
scripted_trigger court_3010_inspired_work_courtier_trigger = {
is_available_ai_adult = yes
NOR = {
exists = scope:inspiration
exists = inspiration
}
NOR = {
has_trait = blind
has_relation_rival = root
has_relation_potential_rival = root
has_relation_nemesis = root
}
learning >= 10
diplomacy >= 12
}
## An inspired courtier
court.3011 = {
type = character_event
title = court.3010.t
desc = {
desc = court.3011.desc.opening
first_valid = {
triggered_desc = {
trigger = {
scope:inspired_writer = {
OR = {
has_trait = shy
has_trait = chaste
}
}
}
desc = court.3011.desc.shy_or_chaste
}
triggered_desc = {
trigger = {
scope:inspired_writer = {
OR = {
has_trait = adventurer
has_trait = pilgrim
has_trait = lifestyle_traveler
}
}
}
desc = court.3011.desc.adventurer_or_pilgrim
}
triggered_desc = {
desc = court.3011.desc.generic_fallback
}
}
desc = court.3011.desc.ending
}
theme = court
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:inspired_writer
animation = happiness
}
trigger = {
has_ep1_dlc_trigger = yes
NOT = { has_trait = blind }
has_royal_court = yes
any_courtier_or_guest = {
court_3010_inspired_work_courtier_trigger = yes
}
}
immediate = {
random_courtier_or_guest = {
limit = {
court_3010_inspired_work_courtier_trigger = yes
}
save_scope_as = inspired_writer
}
}
# Option A: Encourage them to keep writing
option = {
name = court.3011.a
custom_tooltip = court.3011.c.tt.gain_inspiration
scope:inspired_writer = { create_inspiration = book_inspiration }
progress_towards_friend_effect = {
REASON = friend_believed_in_my_writing
CHARACTER = scope:inspired_writer
OPINION = 20
}
stress_impact = {
callous = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
sadistic = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 1
}
}
}
# Option C: You tell them to stop
option = {
name = court.3011.c
custom_tooltip = court.3011.c.tt.hurt
add_prestige = minor_prestige_gain
reverse_add_opinion = {
target = scope:inspired_writer
modifier = cruelty_opinion
opinion = -20
}
stress_impact = {
gregarious = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 75
ai_value_modifier = {
ai_sociability = -1
}
}
}
}
#
######################################
## Lady-in-Waiting Events #
## by Bianca Savazzi #
## 3031 #
######################################
#
## Court position smooths things over with people
court.3031 = {
type = court_event
title = court.3031.t
desc = court.3031.desc
theme = court
cooldown = { years = 15 }
court_scene = {
button_position_character = scope:liw
roles = {
scope:liw = {
group = event_group
animation = happiness
}
root = {
group = event_group
animation = personality_rational
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue }
}
trigger = {
has_court_event_flag = no
OR = {
AND = {
employs_court_position = lady_in_waiting_court_position
any_court_position_holder = {
type = lady_in_waiting_court_position
is_available_ai_adult = yes
has_court_event_flag = no
}
}
AND = {
employs_court_position = cultural_emissary_court_position
any_court_position_holder = {
type = cultural_emissary_court_position
is_available_ai_adult = yes
has_court_event_flag = no
}
}
AND = {
employs_court_position = chief_eunuch_court_position
any_court_position_holder = {
type = chief_eunuch_court_position
is_available_ai_adult = yes
has_court_event_flag = no
}
}
AND = {
employs_court_position = court_poet_court_position
any_court_position_holder = {
type = court_poet_court_position
is_available_ai_adult = yes
has_court_event_flag = no
}
}
}
any_vassal = {
count > 0
vassal_stance = minority
}
any_vassal = {
count > 0
vassal_stance = barons_and_minor_landholders
}
any_sub_realm_county = {
culture = {
NOR = {
this = root.culture
this = root.capital_county.culture
}
}
}
}
immediate = {
court_event_character_flag_effect = yes
random_court_position_holder = {
type = lady_in_waiting_court_position
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
}
save_scope_as = liw
}
if = {
limit = {
NOT = { exists = scope:liw }
}
random_court_position_holder = {
type = cultural_emissary_court_position
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
}
save_scope_as = liw
}
}
if = {
limit = {
NOT = { exists = scope:liw }
}
random_court_position_holder = {
type = chief_eunuch_court_position
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
}
save_scope_as = liw
}
}
if = {
limit = {
NOT = { exists = scope:liw }
}
random_court_position_holder = {
type = court_poet_court_position
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
}
save_scope_as = liw
}
}
scope:liw = {
court_event_character_flag_effect = yes
assign_quirk_effect = yes
}
random_sub_realm_county = {
limit = {
culture = {
NOR = {
this = root.culture
this = root.capital_county.culture
}
}
}
save_scope_as = reference_county
}
root = { save_scope_as = root_scope }
}
# Option A: Minority vassals
option = {
name = court.3031.a
every_vassal = {
vassal_stance = minority
custom = every_minority_vassal
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 10
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
}
}
}
# Option B: Baron vassals
option = {
name = court.3031.b
every_vassal = {
vassal_stance = barons_and_minor_landholders
custom = every_baron_vassal
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 10
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.5
}
}
}
# Option C: Minority culture
option = {
name = court.3031.c
every_sub_realm_county = {
custom = every_culture_county_3031
limit = {
culture = scope:reference_county.culture
}
change_county_control = 5
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 0.5
}
}
}
# Option D: Nah
option = {
name = court.3031.d
add_prestige = miniscule_prestige_gain
stress_impact = {
ambitious = minor_stress_impact_gain
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
has_trait = lazy
add = 10
}
modifier = {
has_trait = content
add = 10
}
}
}
after = {
clear_court_event_participation = yes
scope:liw = {
clear_court_event_participation = yes
}
}
}
#
#####################################
# Homesick MotherFather #
# by Bianca Savazzi #
# 3040 - 3041 #
#####################################
# Your parent of a different culture is caught feeling homesick
court.3040 = {
type = court_event
title = court.3040.t
desc = court.3040.desc
theme = court
cooldown = { years = 20 }
court_scene = {
button_position_character = scope:homesick_parent
roles = {
scope:homesick_parent = {
group = event_group
animation = sadness
}
root = {
group = event_group
animation = personality_rational
}
}
}
lower_left_portrait = scope:jester
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
trigger = {
has_court_event_flag = no
any_parent = {
has_court_event_flag = no
is_courtier_of = root
culture != root.culture
save_temporary_scope_as = temp_parent_scope
}
capital_province.culture = root.culture
}
immediate = {
court_event_character_flag_effect = yes
random_parent = {
limit = {
has_court_event_flag = no
is_courtier_of = root
culture != root.culture
}
save_scope_as = homesick_parent
court_event_character_flag_effect = yes
}
if = {
limit = {
any_pool_character = {
province = root.location
culture = scope:homesick_parent.culture
diplomacy >= 8
is_available_ai_adult = yes
}
}
random_pool_character = {
province = root.location
limit = {
culture = scope:homesick_parent.culture
diplomacy >= 8
is_available_ai_adult = yes
}
save_scope_as = jester
}
}
else = {
create_character = {
template = jester_template
location = root.location
culture = scope:homesick_parent.culture
faith = scope:homesick_parent.faith
save_scope_as = jester
}
}
if = {
limit = {
OR = {
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = antiquarian_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = wet_nurse_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = keeper_of_swans_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = court_gardener_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = lady_in_waiting_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = court_tutor_court_position
}
}
}
random_list = {
15 = {
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = antiquarian_court_position
}
}
scope:homesick_parent = { add_character_flag = antiquarian }
}
15 = {
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = wet_nurse_court_position
}
}
scope:homesick_parent = { add_character_flag = wet_nurse }
}
15 = {
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = keeper_of_swans_court_position
}
}
scope:homesick_parent = { add_character_flag = swans }
}
15 = {
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = court_gardener_court_position
}
}
scope:homesick_parent = { add_character_flag = gardener }
}
15 = {
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = lady_in_waiting_court_position
}
}
scope:homesick_parent = { add_character_flag = liw }
}
15 = {
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:homesick_parent
COURT_POS = court_tutor_court_position
}
}
scope:homesick_parent = { add_character_flag = tutor }
}
}
}
}
# Option A: increase amenities
option = {
name = court.3040.a
trigger = {
# The culture of origin has higher court grandeur's courts
scope:homesick_parent.culture = {
any_culture_duchy = {
holder.top_liege ?= {
has_royal_court = yes
court_grandeur_current > root.court_grandeur_current
}
}
}
#Your amenities are not all top level
OR = {
amenity_level = {
target = court_fashion
value < max_amenity_level
}
amenity_level = {
target = court_lodging_standards
value < max_amenity_level
}
amenity_level = {
target = court_food_quality
value < max_amenity_level
}
amenity_level = {
target = court_servants
value < max_amenity_level
}
}
}
custom_tooltip = court.3040.a.tt
hidden_effect = {
random_list = {
25 = {
trigger = {
amenity_level = {
target = court_fashion
value < max_amenity_level
}
}
send_interface_toast = {
title = court.3040.a.tt_2
left_icon = scope:homesick_parent
add_amenity_level = {
type = court_fashion
value = 1
}
}
}
25 = {
trigger = {
amenity_level = {
target = court_lodging_standards
value < max_amenity_level
}
}
send_interface_toast = {
title = court.3040.a.tt_2
left_icon = scope:homesick_parent
add_amenity_level = {
type = court_lodging_standards
value = 1
}
}
}
25 = {
trigger = {
amenity_level = {
target = court_food_quality
value < max_amenity_level
}
}
send_interface_toast = {
title = court.3040.a.tt_2
left_icon = scope:homesick_parent
add_amenity_level = {
type = court_food_quality
value = 1
}
}
}
25 = {
trigger = {
amenity_level = {
target = court_servants
value < max_amenity_level
}
}
send_interface_toast = {
title = court.3040.a.tt_2
left_icon = scope:homesick_parent
add_amenity_level = {
type = court_servants
value = 1
}
}
}
}
}
scope:homesick_parent = {
add_opinion = {
target = root
modifier = listened_opinion
}
}
stress_impact = {
greedy = major_stress_impact_gain
humble = medium_stress_impact_gain
temperate = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -1
}
}
}
# Option B: available job
option = {
name = court.3040.b
trigger = {
scope:homesick_parent = {
OR = {
has_character_flag = antiquarian
has_character_flag = wet_nurse
has_character_flag = swans
has_character_flag = gardener
has_character_flag = liw
has_character_flag = tutor
}
}
}
if = {
limit = {
scope:homesick_parent = { has_character_flag = antiquarian }
}
court_position_grant_effect = { POS = antiquarian CANDIDATE = scope:homesick_parent EMPLOYER = root }
}
else_if = {
limit = {
scope:homesick_parent = { has_character_flag = wet_nurse }
}
court_position_grant_effect = { POS = wet_nurse CANDIDATE = scope:homesick_parent EMPLOYER = root }
}
else_if = {
limit = {
scope:homesick_parent = { has_character_flag = swans }
}
court_position_grant_effect = { POS = keeper_of_swans CANDIDATE = scope:homesick_parent EMPLOYER = root }
}
else_if = {
limit = {
scope:homesick_parent = { has_character_flag = gardener }
}
court_position_grant_effect = { POS = court_gardener CANDIDATE = scope:homesick_parent EMPLOYER = root }
}
else_if = {
limit = {
scope:homesick_parent = { has_character_flag = liw }
}
court_position_grant_effect = { POS = lady_in_waiting CANDIDATE = scope:homesick_parent EMPLOYER = root }
}
else_if = {
limit = {
scope:homesick_parent = { has_character_flag = tutor }
}
court_position_grant_effect = { POS = court_tutor CANDIDATE = scope:homesick_parent EMPLOYER = root }
}
scope:homesick_parent = {
add_opinion = {
target = root
modifier = listened_opinion
}
}
stress_impact = {
lazy = medium_stress_impact_gain
content = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = lazy
add = -25
}
modifier = {
has_trait = content
add = -25
}
}
}
# Option C: parent's culture's jester
option = {
name = court.3040.c
flavor = court.3040.c.tt
trigger = {
exists = scope:jester
}
add_courtier = scope:jester
court_position_grant_effect = { POS = court_jester CANDIDATE = scope:jester EMPLOYER = root }
stress_impact = {
gregarious = minor_stress_impact_loss
shy = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = shy
add = -50
}
}
}
# Option D: Don't care, go sulk elsewhere
option = {
name = court.3040.d
scope:homesick_parent = {
add_opinion = {
target = root
modifier = cruelty_opinion
opinion = -10
}
}
add_prestige = miniscule_prestige_gain
stress_impact = {
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -1
}
}
}
after = {
clear_court_event_participation = yes
scope:homesick_parent = {
clear_court_event_participation = yes
remove_character_flag = antiquarian
remove_character_flag = wet_nurse
remove_character_flag = swans
remove_character_flag = gardener
remove_character_flag = liw
remove_character_flag = tutor
}
if = {
limit = {
is_ai = yes
scope:jester = {
NOT = { has_court_position = court_jester_court_position }
}
}
scope:jester = { silent_disappearance_effect = yes }
}
}
}
#####################################
# A Feline Hunter #
# by Bianca Savazzi #
# 3060 - 3061 #
#####################################
# Court Cat
court.3060 = {
type = court_event
title = court.3060.t
desc = court.3060.desc
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:cat_finder
roles = {
scope:cat_finder = {
group = event_group
animation = happiness
}
}
}
weight_multiplier = {
base = 0.5
modifier = {
has_royal_court = yes
court_grandeur_current_level > 0
add = {
value = 1
divide = court_grandeur_current_level
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
trigger = {
NOR = {
any_owned_story = { type = story_cycle_pet_cat }
has_character_modifier = cat_story_modifier
}
OR = {
any_vassal = {
is_available_ai_adult = yes
has_court_event_flag = no
}
any_courtier = {
is_available_ai_adult = yes
has_court_event_flag = no
}
}
}
immediate = {
#Pick cat finder
if = {
limit = {
employs_court_position = master_of_hunt_court_position
any_court_position_holder = {
type = master_of_hunt_court_position #Primary choice as they are also used for dog option
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = master_of_hunt_court_position
limit = {
is_available_ai_adult = yes
}
save_scope_as = cat_finder
court_event_character_flag_effect = yes
}
}
else_if = {
limit = {
any_vassal = {
is_available_ai_adult = yes
}
}
random_vassal = {
limit = {
is_available_ai_adult = yes
}
save_scope_as = cat_finder
court_event_character_flag_effect = yes
}
}
else_if = {
limit = {
any_courtier = {
is_available_ai_adult = yes
}
}
random_courtier = {
limit = {
is_available_ai_adult = yes
}
save_scope_as = cat_finder
court_event_character_flag_effect = yes
}
}
}
# Option A: Adopt!
option = {
name = court.3060.a
start_cat_story_cycle_effect = yes
hidden_effect = { add_character_modifier = rat_hunting_cat_modifier }
ai_chance = {
base = 20
ai_value_modifier = {
ai_compassion = 1
}
}
}
# Option D: No cat
option = {
name = court.3060.d
scope:cat_finder = {
add_opinion = {
modifier = disappointed_opinion
target = root
opinion = -10
}
}
ai_chance = {
base = 10
ai_value_modifier = {
ai_compassion = -2
}
}
}
after = {
scope:cat_finder = {
clear_court_event_participation = yes
}
}
}
##################################################
# Isabella
##################################################
# 4750 - 4751 Your court poet is writing a heroic book
##################################################
##################################################
# I Need a Hero
# by Isabella Welch
# 4750 - 4759
##################################################
scripted_trigger pope_joan_trigger = {
faith = faith:catholic
is_female = yes
any_held_title = { is_head_of_faith = no }
}
scripted_trigger lady_godiva_trigger = {
OR = {
root.culture = culture:anglo_saxon
root.culture = {
any_parent_culture = { this = culture:anglo_saxon }
}
root.culture = culture:english
root.culture = {
any_parent_culture = { this = culture:english }
}
}
}
scripted_trigger sinbad_trigger = {
capital_province = {
OR = {
geographical_region = world_middle_east
geographical_region = world_africa_east
geographical_region = world_africa_north
}
}
}
scripted_trigger caligula_trigger = {
OR = {
has_trait = sadistic
has_trait = torturer
has_focus = intrigue_intimidation_focus
has_trait = deviant
has_trait = lunatic_1
}
OR = {
has_title = title:k_italy
has_title = title:k_romagna
has_title = title:k_sardinia
has_title = title:e_italy
is_roman_emperor_excluding_byzantium_trigger = yes
capital_province = {
geographical_region = world_europe_west_britannia
geographical_region = world_europe_west_germania
geographical_region = world_europe_west_francia
geographical_region = world_europe_west_iberia
geographical_region = world_europe_west
geographical_region = world_europe_south_italy
geographical_region = world_europe_south
}
culture = { has_cultural_pillar = heritage_byzantine }
}
}
scripted_trigger nasreddin_trigger = {
OR = {
culture = culture:uyghur
culture = culture:afghan
root.culture = {
has_cultural_pillar = heritage_indo_aryan
has_cultural_pillar = heritage_dravidian
}
capital_province = {
geographical_region = world_middle_east
geographical_region = world_middle_east_persia
geographical_region = world_middle_east_arabia
geographical_region = world_india
geographical_region = world_asia_minor
}
}
current_year >1230
}
scripted_trigger valmiki_trigger = {
root.culture = {
has_cultural_pillar = heritage_indo_aryan
}
}
court.4750 = {
type = court_event
title = court.4750.t
desc = court.4750.desc
theme = court
trigger = {
has_court_event_flag = no
can_employ_court_position_type = court_poet_court_position
trigger_if = {
limit = {
is_ai = yes
}
any_pool_character = {
province = root.location
OR = {
diplomacy >= 14
has_trait = lifestyle_poet
}
is_available_ai_adult = yes
}
}
}
cooldown = { years = 25 }
court_scene = {
button_position_character = scope:poet
roles = {
scope:poet = {
group = event_group
animation = happiness
}
root = {
group = event_group
animation = personality_bold
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
court_event_character_flag_effect = yes
if = {
limit = {
any_pool_character = {
province = root.location
OR = {
diplomacy >= 14
has_trait = lifestyle_poet
}
is_available_ai_adult = yes
}
}
random_pool_character = {
province = root.location
limit = {
OR = {
diplomacy >= 14
has_trait = lifestyle_poet
}
is_available_ai_adult = yes
}
save_scope_as = poet
}
if = {
limit = {
scope:poet = {
NOT = { has_trait = lifestyle_poet }
}
}
scope:poet = { add_trait = lifestyle_poet }
}
}
else = {
create_character = {
template = poet_template
location = root.location
save_scope_as = poet
}
scope:poet = { add_character_flag = created }
}
scope:poet = {
court_event_character_flag_effect = yes
}
}
option = {
name = court.4750.a
add_character_flag = pope_joan
trigger = {
pope_joan_trigger = yes
}
change_current_court_grandeur = minor_court_grandeur_gain
add_courtier = scope:poet
ai_chance = {
base = 50
ai_value_modifier = {
ai_zeal = 0.5
ai_vengefulness = -0.5
}
}
}
option = {
name = court.4750.b
add_character_flag = lady_godiva
trigger = {
lady_godiva_trigger = yes
}
change_current_court_grandeur = minor_court_grandeur_gain
add_courtier = scope:poet
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
}
}
}
option = {
name = court.4750.c
add_character_flag = sinbad
add_character_flag = ruler_character
trigger = {
sinbad_trigger = yes
lady_godiva_trigger = no
}
change_current_court_grandeur = minor_court_grandeur_gain
add_courtier = scope:poet
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.25
ai_rationality = -0.5
}
}
}
option = {
name = court.4750.d
add_character_flag = caligula
trigger = {
caligula_trigger = yes
}
change_current_court_grandeur = minor_court_grandeur_gain
add_courtier = scope:poet
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = 0.75
ai_rationality = -0.5
}
}
}
option = {
name = court.4750.e
add_character_flag = nasreddin
add_character_flag = ruler_character
trigger = {
nasreddin_trigger = yes
lady_godiva_trigger = no
pope_joan_trigger = no
}
change_current_court_grandeur = minor_court_grandeur_gain
add_courtier = scope:poet
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = 0.75
ai_rationality = 0.5
}
}
}
option = {
name = court.4750.f
add_character_flag = valmiki
trigger = {
valmiki_trigger = yes
lady_godiva_trigger = no
pope_joan_trigger = no
}
change_current_court_grandeur = minor_court_grandeur_gain
add_courtier = scope:poet
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = 0.75
ai_rationality = 0.5
}
}
}
option = {
name = court.4750.g
add_character_flag = ruler_hero
change_current_court_grandeur = minor_court_grandeur_gain
add_courtier = scope:poet
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
ai_greed = 0.75
}
}
}
option = {
name = court.4750.h
add_character_flag = rejected_poet
stress_impact = {
lifestyle_poet = major_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -0.5
ai_greed = -0.75
}
}
}
after = {
if = {
limit = { NOT = { has_character_flag = rejected_poet } }
trigger_event = {
id = court.4751
days = 90
}
}
else = {
scope:poet = {
if = {
limit = {
has_character_flag = created
}
silent_disappearance_effect = yes
}
}
}
clear_court_event_participation = yes
scope:poet ?= {
clear_court_event_participation = yes
}
remove_character_flag = rejected_poet
}
}
scripted_effect court_4751_flag_removal_effect = {
remove_character_flag = ruler_character
remove_character_flag = pope_joan
remove_character_flag = ruler_hero
remove_character_flag = lady_godiva
remove_character_flag = sinbad
remove_character_flag = caligula
remove_character_flag = nasreddin
remove_character_flag = valmiki
}
court.4751 = {
type = character_event
title = court.4750.t
desc = {
desc = court.4751.intro
first_valid = {
triggered_desc = {
trigger = {
has_character_flag = pope_joan
}
desc = court.4751.topic.pope_joan
}
triggered_desc = {
trigger = {
has_character_flag = lady_godiva
}
desc = court.4751.topic.lady_godiva
}
triggered_desc = {
trigger = {
has_character_flag = sinbad
}
desc = court.4751.topic.sinbad
}
triggered_desc = {
trigger = {
has_character_flag = caligula
}
desc = court.4751.topic.caligula
}
triggered_desc = {
trigger = {
has_character_flag = nasreddin
}
desc = court.4751.topic.nasreddin
}
triggered_desc = {
trigger = {
has_character_flag = valmiki
}
desc = court.4751.topic.valmiki
}
triggered_desc = {
trigger = {
has_character_flag = ruler_hero
}
desc = court.4751.topic.ruler_hero
}
}
desc = court.4751.topic.unexpected
first_valid = {
triggered_desc = {
trigger = {
has_character_flag = ruler_character
}
desc = court.4751.ruler_character
}
triggered_desc = {
trigger = {
has_character_flag = pope_joan
}
desc = court.4701.pope_joan_desc
}
triggered_desc = {
trigger = {
has_character_flag = ruler_hero
}
desc = court.4701.ruler_hero_desc
}
}
first_valid = {
triggered_desc = {
trigger = {
has_character_flag = lady_godiva
}
desc = court.4751.topic.lady_godiva_desc
}
triggered_desc = {
trigger = {
has_character_flag = sinbad
}
desc = court.4751.topic.sinbad_desc
}
triggered_desc = {
trigger = {
has_character_flag = caligula
}
desc = court.4751.topic.caligula_desc
}
triggered_desc = {
trigger = {
has_character_flag = nasreddin
}
desc = court.4751.topic.nasreddin_desc
}
triggered_desc = {
trigger = {
has_character_flag = valmiki
}
desc = court.4751.topic.valmiki_desc
}
}
}
theme = diplomacy_majesty_focus
left_portrait = {
character = root
animation = reading
}
right_portrait = {
character = scope:poet
animation = interested
}
trigger = {
scope:poet = {
is_alive = yes
is_available = yes
liege = root
}
is_available = yes
}
on_trigger_fail = {
court_4751_flag_removal_effect = yes
}
immediate = {
hidden_effect = {
if = {
limit = {
has_character_flag = pope_joan
scope:poet = { NOT = { has_trait = zealous } }
}
scope:poet = {
add_secret = {
type = secret_non_believer
}
}
faith.religious_head = {
save_scope_as = current_head_of_faith
}
}
}
save_scope_as = owner
}
option = {
name = court.4751.a
trigger = {
has_character_flag = pope_joan
is_attracted_to_gender_of = scope:poet
}
if = {
limit = {
can_set_relation_potential_lover_trigger = { CHARACTER = scope:poet }
}
set_relation_potential_lover = scope:poet
}
if = {
limit = { artifacts_use_indian_books_trigger = yes }
create_artifact = {
name = pope_joan_book_name
description = pope_joan_book_desc
type = book
visuals = indian_book
modifier = artifact_monthly_piety_2_modifier
save_scope_as = pope_joan_book
save_scope_as = artifact
}
}
else = {
create_artifact = {
name = pope_joan_book_name
description = pope_joan_book_desc
type = book
visuals = book
modifier = artifact_monthly_piety_2_modifier
save_scope_as = pope_joan_book
save_scope_as = artifact
}
}
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:poet
COURT_POS = court_poet_court_position
}
}
court_position_grant_effect = { POS = court_poet CANDIDATE = scope:poet EMPLOYER = root }
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.75
ai_rationality = -0.5
ai_zeal = -0.75
}
}
}
option = {
name = court.4751.b
trigger = {
has_character_flag = pope_joan
root != scope:current_head_of_faith
}
if = {
limit = { artifacts_use_indian_books_trigger = yes }
create_artifact = {
name = pope_joan_book_name
description = pope_joan_book_desc
type = book
visuals = indian_book
modifier = artifact_monthly_piety_2_modifier
save_scope_as = pope_joan_book
save_scope_as = artifact
}
}
else = {
create_artifact = {
name = pope_joan_book_name
description = pope_joan_book_desc
type = book
visuals = book
modifier = artifact_monthly_piety_2_modifier
save_scope_as = pope_joan_book
save_scope_as = artifact
}
}
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:poet
COURT_POS = court_poet_court_position
}
}
court_position_grant_effect = { POS = court_poet CANDIDATE = scope:poet EMPLOYER = root }
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.75
ai_rationality = -0.5
ai_zeal = 0.75
}
}
}
option = {
name = court.4751.c
flavor = court.4751.c.tt
add_character_modifier = {
modifier = compared_to_lady_godiva
years = 5
}
trigger = {
has_character_flag = lady_godiva
}
if = {
limit = {
any_relation = {
type = potential_lover
}
}
random_relation = {
type = potential_lover
save_scope_as = potential_lover
}
progress_towards_lover_effect = {
CHARACTER = scope:potential_lover
REASON = lover_court_godiva
OPINION = 0
}
}
if = {
limit = { artifacts_use_indian_books_trigger = yes }
create_artifact = {
name = lady_godiva_book_name
description = lady_godiva_book_desc
type = book
visuals = indian_book
modifier = artifact_attraction_opinion_3_modifier
save_scope_as = lady_godiva_book
save_scope_as = artifact
}
}
else = {
create_artifact = {
name = lady_godiva_book_name
description = lady_godiva_book_desc
type = book
visuals = book
modifier = artifact_attraction_opinion_3_modifier
save_scope_as = lady_godiva_book
save_scope_as = artifact
}
}
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:poet
COURT_POS = court_poet_court_position
}
}
court_position_grant_effect = { POS = court_poet CANDIDATE = scope:poet EMPLOYER = root }
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_greed = 0.75
}
}
}
option = {
name = court.4751.e
trigger = {
has_character_flag = nasreddin
}
add_character_modifier = {
modifier = compared_to_nasreddin
years = 5
}
create_artifact = {
name = nasreddin_book_name
description = nasreddin_book_desc
type = book
visuals = book
modifier = artifact_monthly_diplomacy_lifestyle_xp_1_modifier
save_scope_as = nasreddin_book
save_scope_as = artifact
}
if = {
limit = { artifacts_use_indian_books_trigger = yes }
create_artifact = {
name = nasreddin_book_name
description = nasreddin_book_desc
type = book
visuals = indian_book
modifier = artifact_monthly_diplomacy_lifestyle_xp_1_modifier
save_scope_as = nasreddin_book
save_scope_as = artifact
}
}
else = {
create_artifact = {
name = nasreddin_book_name
description = nasreddin_book_desc
type = book
visuals = book
modifier = artifact_monthly_diplomacy_lifestyle_xp_1_modifier
save_scope_as = nasreddin_book
save_scope_as = artifact
}
}
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:poet
COURT_POS = court_poet_court_position
}
}
court_position_grant_effect = { POS = court_poet CANDIDATE = scope:poet EMPLOYER = root }
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = 0.75
}
}
}
option = {
name = court.4751.f
trigger = {
NOT = {
has_character_flag = pope_joan
}
}
if = {
limit = { has_character_flag = valmiki }
add_character_modifier = {
modifier = compared_to_valmiki
years = 5
}
if = {
limit = { artifacts_use_indian_books_trigger = yes }
create_artifact = {
name = valmiki_book_name
description = valmiki_book_desc
type = book
visuals = indian_book
modifier = artifact_monthly_diplomacy_lifestyle_xp_1_modifier
save_scope_as = valmiki_book
save_scope_as = artifact
}
}
else = {
create_artifact = {
name = valmiki_book_name
description = valmiki_book_desc
type = book
visuals = book
modifier = artifact_monthly_diplomacy_lifestyle_xp_1_modifier
save_scope_as = valmiki_book
save_scope_as = artifact
}
}
}
if = {
limit = { has_character_flag = caligula }
add_character_modifier = {
modifier = compared_to_caligula
years = 5
}
if = {
limit = { artifacts_use_indian_books_trigger = yes }
create_artifact = {
name = caligula_book_name
description = caligula_book_desc
type = book
visuals = indian_book
modifier = artifact_monthly_diplomacy_lifestyle_xp_1_modifier
save_scope_as = caligula_book
save_scope_as = artifact
}
}
else = {
create_artifact = {
name = caligula_book_name
description = caligula_book_desc
type = book
visuals = book
modifier = artifact_monthly_diplomacy_lifestyle_xp_1_modifier
save_scope_as = caligula_book
save_scope_as = artifact
}
}
}
if = {
limit = { has_character_flag = ruler_hero }
if = {
limit = { artifacts_use_indian_books_trigger = yes }
create_artifact = {
name = ruler_hero_book_name
description = ruler_hero_book_desc
type = book
visuals = indian_book
modifier = artifact_monthly_diplomacy_lifestyle_xp_1_modifier
save_scope_as = ruler_hero_book
save_scope_as = artifact
}
}
else = {
create_artifact = {
name = ruler_hero_book_name
description = ruler_hero_book_desc
type = book
visuals = book
modifier = artifact_monthly_diplomacy_lifestyle_xp_1_modifier
save_scope_as = ruler_hero_book
save_scope_as = artifact
}
}
}
if = {
limit = {
has_character_flag = sinbad
}
add_character_modifier = {
modifier = compared_to_sinbad
years = 5
}
if = {
limit = { artifacts_use_indian_books_trigger = yes }
create_artifact = {
name = sinbad_book_name
description = sinbad_book_desc
type = book
visuals = indian_book
modifier = artifact_monthly_martial_lifestyle_xp_1_modifier
save_scope_as = sinbad_hero_book
save_scope_as = artifact
}
}
else = {
create_artifact = {
name = sinbad_book_name
description = sinbad_book_desc
type = book
visuals = book
modifier = artifact_monthly_martial_lifestyle_xp_1_modifier
save_scope_as = sinbad_hero_book
save_scope_as = artifact
}
}
}
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:poet
COURT_POS = court_poet_court_position
}
}
court_position_grant_effect = { POS = court_poet CANDIDATE = scope:poet EMPLOYER = root }
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_sociability = 0.75
}
}
}
option = {
name = court.4751.h
scope:poet = {
add_opinion = {
modifier = insulted_opinion
target = root
}
}
ai_chance = {
base = 10
ai_value_modifier = {
ai_vengefulness = 0.75
}
}
}
after = {
if = {
limit = {
scope:poet = {
NOT = { has_court_position = court_poet_court_position }
}
is_ai = yes
}
scope:poet = { silent_disappearance_effect = yes }
}
court_4751_flag_removal_effect = yes
}
}
##################################################
# Linnea
##################################################
# 5030 - 5039 Playtime
# 5040 - 5049 Pranking Spree
# 5055 - 5059 Colorful Talent
# 5060 - 5069 The Gallant Knight
# 5070 - 5074 Dedicated Tutor
# 5075 - 5079 Gift From Neigh-bor
##################################################
#####################################
# Playtime #
# by Linnéa Thimrén #
#####################################
#A child is struggling to focus on ruling
court.5030 = {
type = court_event
title = court.5030.t
desc = {
desc = court.5030.desc_opening
first_valid = {
triggered_desc = {
trigger = { age <= 10 }
desc = court.5030.desc_young
}
desc = court.5030.desc
}
desc = court.5030.desc_ending
}
theme = court
court_scene = {
button_position_character = scope:child
roles = {
scope:child = {
group = event_group
animation = boredom
}
}
}
trigger = {
NOT = { has_character_flag = had_event_court_5030 }
age >= 4
age <= 13
any_courtier = {
age >= 3
age <= 13
has_court_event_flag = no
}
}
weight_multiplier = {
base = 1
# Court weightings.
## Admin courts are extra boring.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
add_character_flag = {
flag = had_event_court_5030
years = 10
}
set_favorite_toy_effect = yes
random_courtier = {
limit = {
age >= 3
age <= 13
}
weight = {
base = 1
modifier = { #More likely to pick someone closer in age
add = 5
age >= root.age_dif_child_down
age <= root.age_dif_child_up
}
}
save_scope_as = child
court_event_character_flag_effect = yes
set_favorite_toy_effect = yes
}
}
option = { #Join in the game
name = court.5030.a
add_prowess_skill = 1
if = {
limit = {
NOT = { has_relation_friend = scope:child }
}
progress_towards_friend_effect = {
REASON = friend_played_with_child
CHARACTER = scope:child
OPINION = default_friend_opinion
}
}
else = {
scope:child = {
add_opinion = {
target = root
modifier = friendliness_opinion
opinion = 15
}
}
}
add_stress = minor_stress_loss
}
option = { #I have to be serious.
name = court.5030.b
add_stewardship_skill = 1
scope:child = {
add_opinion = {
target = root
modifier = refusal_opinion
opinion = -10
}
}
add_stress = medium_stress_gain
}
after = {
scope:child = {
clear_court_event_participation = yes
}
}
}
#####################################
# Colorful Talent #
# by Linnéa Thimrén #
#####################################
scripted_trigger court_5055_child_painter_trigger = {
is_available_ai_child = yes
age >= 6
NOT = { is_player_heir_of = root }
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
}
#A young courtier is exploring their artistic side - encourage or dissuade?
court.5055 = {
type = court_event
title = court.5055.t
desc = court.5055.desc
theme = court
court_scene = {
button_position_character = scope:painter
roles = {
scope:painter = {
group = event_group
animation = admiration
}
}
}
cooldown = { years = 25 }
trigger = {
is_available_adult = yes
any_courtier = {
court_5055_child_painter_trigger = yes
has_court_event_flag = no
}
}
weight_multiplier = {
base = 1
# Court weightings.
## More likely at courts with more time for non-active pursuits.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
random_courtier = {
limit = {
court_5055_child_painter_trigger = yes
}
save_scope_as = painter
court_event_character_flag_effect = yes
}
}
option = { #Make them stop
name = court.5055.a
scope:painter = {
add_martial_skill = 1
add_stewardship_skill = 1
}
}
option = { #Encourage them
name = court.5055.b
scope:painter = {
add_diplomacy_skill = 1
add_intrigue_skill = 1
}
}
after = {
scope:painter = {
clear_court_event_participation = yes
}
}
}
#####################################
# The Gallant Knight #
# by Linnéa Thimrén #
#####################################
scripted_trigger court_5060_knight_trigger = {
is_knight_of = root
basic_is_available_ai = yes
NOT = { has_character_flag = was_the_target_of_event_court_5060 }
exists = var:number_of_impressive_knight_things
}
#A knight has excelled during recent battles (injured or killed enemies) and you are expected to reward them
court.5060 = {
type = court_event
title = court.5060.t
desc = court.5060.desc
theme = court
court_scene = {
button_position_character = scope:knight
roles = {
scope:knight = {
group = event_group
animation = personality_honorable
}
}
}
trigger = {
NOT = { has_character_flag = had_event_court_5060 }
age >= 10
has_variable_list = impressive_knights
any_in_list = {
variable = impressive_knights
court_5060_knight_trigger = yes
has_court_event_flag = no
}
any_held_title = {
title_tier = county
this != root.capital_county
}
}
weight_multiplier = {
base = 1
modifier = {
add = 0.5
any_in_list = {
variable = impressive_knights
court_5060_knight_trigger = yes
var:number_of_impressive_knight_things >= 2
}
}
modifier = {
add = 1
any_in_list = {
variable = impressive_knights
court_5060_knight_trigger = yes
var:number_of_impressive_knight_things >= 4
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
add_character_flag = {
flag = had_event_court_5060
years = 10
}
random_in_list = {
variable = impressive_knights
limit = {
court_5060_knight_trigger = yes
}
add_character_flag = {
flag = was_the_target_of_event_court_5060
years = 10
}
weight = {
base = 1
modifier = {
is_acclaimed = yes
add = 2
}
modifier = {
add = {
add = var:number_of_impressive_knight_things
multiply = 2
}
}
}
save_scope_as = knight
court_event_character_flag_effect = yes
}
}
option = { # Accolade
name = court.5060.c
trigger = {
scope:knight = {
is_acclaimed = yes
}
}
scope:knight = {
accolade_major_glory_gain_with_checks_effect = yes
add_opinion = {
target = root
modifier = friendliness_opinion
opinion = 20
}
}
ai_chance = {
base = 100
modifier = {
has_trait = gregarious
add = 25
}
}
}
option = { #Give minor title
trigger = {
OR = {
can_appoint_char_to_court_position = {
CHAR = scope:knight
COURT_POS = bodyguard_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:knight
COURT_POS = champion_court_position
}
can_appoint_char_to_court_position = {
CHAR = scope:knight
COURT_POS = akolouthos_court_position
}
}
}
# employ them as champion or bodyguard
name = {
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:knight
COURT_POS = akolouthos_court_position
}
}
text = court.5060.d.akolouthos
}
name = {
trigger = {
can_appoint_char_to_court_position = {
CHAR = scope:knight
COURT_POS = champion_court_position
}
}
text = court.5060.d.champion
}
name = {
trigger = {
NOT = {
can_appoint_char_to_court_position = {
CHAR = scope:knight
COURT_POS = bodyguard_court_position
}
}
}
text = court.5060.d.bodyguard
}
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:knight
COURT_POS = akolouthos_court_position
}
}
employ_character_as_position_in_current_scope_court_effect = {
CHARACTER = scope:knight
POSITION = akolouthos
}
}
else_if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:knight
COURT_POS = champion_court_position
}
}
employ_character_as_position_in_current_scope_court_effect = {
CHARACTER = scope:knight
POSITION = champion
}
}
else_if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:knight
COURT_POS = bodyguard_court_position
}
}
employ_character_as_position_in_current_scope_court_effect = {
CHARACTER = scope:knight
POSITION = bodyguard
}
}
scope:knight = {
accolade_minor_glory_gain_with_checks_effect = yes
}
stress_impact = {
paranoid = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
has_trait = paranoid
add = 50
}
}
}
option = { #Pat on the shoulder - opt out
name = court.5060.a
scope:knight = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
ai_chance = {
base = 50
modifier = {
has_trait = arrogant
add = 25
}
modifier = {
has_trait = vengeful
add = 25
}
modifier = {
has_trait = greedy
add = 25
}
}
}
after = {
scope:knight = {
clear_court_event_participation = yes
}
}
}
#Maintenance event for the impressive knight variables - variables decrease over time or is removed
court.5061 = {
hidden = yes
trigger = {
exists = var:number_of_impressive_knight_things
}
immediate = {
if = {
limit = {
liege = {
has_variable_list = impressive_knights
any_in_list = {
variable = impressive_knights
this = root
}
}
}
change_variable = {
name = number_of_impressive_knight_things
subtract = 1
}
if = {
limit = {
var:number_of_impressive_knight_things = 0
}
remove_variable = number_of_impressive_knight_things
liege = {
remove_list_variable = {
name = impressive_knights
target = root
}
}
}
else = {
trigger_event = {
id = court.5061
years = 4
}
}
}
else = {
remove_variable = number_of_impressive_knight_things
}
}
}
#####################################
# Dedicated Tutor #
# by Linnéa Thimrén #
#####################################
#Court tutor asks for more funds
court.5070 = {
type = court_event
title = court.5070.t
desc = court.5070.desc
theme = court
court_scene = {
button_position_character = scope:court_tutor
roles = {
scope:court_tutor = {
group = event_group
animation = admiration
}
}
}
trigger = {
NOT = { has_character_flag = had_event_court_5070 }
age >= 10
short_term_gold > medium_gold_value
employs_court_position = court_tutor_court_position
any_court_position_holder = {
type = court_tutor_court_position
is_available_ai = yes
has_court_event_flag = no
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
add_character_flag = {
flag = had_event_court_5070
years = 15
}
random_court_position_holder = {
type = court_tutor_court_position
limit = {
is_available_ai = yes
}
save_scope_as = court_tutor
court_event_character_flag_effect = yes
}
}
option = { #Pay to improve the education of all your wards
name = court.5070.b
custom_tooltip = court.5070.b.tt
every_courtier = {
limit = {
is_adult = no
any_relation = {
type = guardian
this = root
}
}
hidden_effect = {
education_point_acquisition_additional_points_effect = { LEVEL = mid }
}
}
remove_short_term_gold = medium_gold_value
scope:court_tutor = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 15
}
}
ai_chance = {
base = 50
}
}
option = { #nah
name = court.5070.a
scope:court_tutor = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = -10
}
}
ai_chance = {
base = 10
modifier = {
gold < medium_gold_value
add = 200
}
modifier = {
has_trait = greedy
add = 30
}
}
}
after = {
scope:court_tutor = {
clear_court_event_participation = yes
}
clear_court_event_participation = yes
}
}
#####################################
# Gift From Neigh-bor #
# by Linnéa Thimrén #
#####################################
# You receive a gift of two palfreys
scripted_trigger court_5075_neighbor_trigger = {
NOR = {
has_relation_potential_rival = root
has_relation_rival = root
is_at_war_with = root
is_available_ai_adult = yes
}
OR = {
# They are friendly towards you
has_relation_potential_friend = root
has_relation_friend = root
is_close_or_extended_family_of = root
# They have reason to fear you
root = {
has_dread_level_towards = {
target = prev
level = 1
}
}
root = {
has_dread_level_towards = {
target = prev
level = 2
}
}
current_military_strength < root.current_strength_ninety_percent_value
# They feel indebted
has_opinion_modifier = {
modifier = gift_opinion
target = root
}
root = {
has_hook = prev
}
}
}
court.5075 = {
type = court_event
title = court.5075.t
desc = {
desc = court.5075.desc_opening
first_valid = {
triggered_desc = {
trigger = {
exists = scope:master_of_the_horse
}
desc = court.5075.desc_horse_master
}
desc = court.5075.desc
}
desc = court.5075.desc_ending
}
theme = court
override_background = {
reference = courtyard
}
court_scene = {
button_position_character = scope:master_of_the_horse
roles = {
scope:neighbor = {
group = event_group
animation = admiration
}
scope:master_of_the_horse = {
group = event_group
animation = happiness
}
}
}
trigger = {
NOT = { has_character_flag = had_event_court_5075 }
age >= 14
OR = {
AND = {
top_liege = this
any_neighboring_top_liege_realm_owner = {
court_5075_neighbor_trigger = yes
has_court_event_flag = no
}
}
AND = {
top_liege != this
any_neighboring_realm_same_rank_owner = {
court_5075_neighbor_trigger = yes
has_court_event_flag = no
}
}
}
}
weight_multiplier = {
base = 1
modifier = { #More likely to trigger if you have a Master of the Horse
add = 0.5
employs_court_position = master_of_horse_court_position
any_court_position_holder = {
type = master_of_horse_court_position
is_available_ai = yes
has_court_event_flag = no
}
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
add_character_flag = {
flag = had_event_court_5075
years = 10
}
if = {
limit = {
top_liege = this
}
random_neighboring_top_liege_realm_owner = {
limit = {
court_5075_neighbor_trigger = yes
}
save_scope_as = neighbor
court_event_character_flag_effect = yes
}
}
else = {
random_neighboring_realm_same_rank_owner = {
limit = {
court_5075_neighbor_trigger = yes
}
save_scope_as = neighbor
court_event_character_flag_effect = yes
}
}
if = {
limit = {
employs_court_position = master_of_horse_court_position
any_court_position_holder = {
type = master_of_horse_court_position
is_available_ai = yes
}
}
random_court_position_holder = {
type = master_of_horse_court_position
limit = {
is_available_ai = yes
}
save_scope_as = master_of_the_horse
court_event_character_flag_effect = yes
}
}
random_dummy_gender_effect = yes #for horse gender
}
option = { # give them to the court
name = court.5075.a
change_current_court_grandeur = medium_court_grandeur_gain
if = {
limit = {
government_allows = administrative
}
change_influence = minor_influence_gain
}
else = {
add_prestige = minor_prestige_gain
}
scope:neighbor = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 15
}
}
stress_impact = {
brave = minor_stress_impact_gain
arrogant = medium_stress_impact_gain
greedy = major_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Warhorse
name = court.5075.c
trigger = {
NOT = {
any_owned_story = { type = story_cycle_martial_lifestyle_warhorse }
}
}
add_prestige = medium_prestige_gain
duel = {
skill = prowess
value = average_skill_rating
15 = { # You tame the horse
desc = court.5075.c.success
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
send_interface_toast = {
title = court.5075.c.success
left_icon = root
start_warhorse_story_cycle_effect = yes
}
#To assign the correct gender to the horse
random_owned_story = {
type = story_cycle_martial_lifestyle_warhorse
if = {
limit = { scope:dummy_gender = { is_female = yes } }
assign_horse_gender_effect = { GENDER = female }
}
else = {
assign_horse_gender_effect = { GENDER = male }
}
}
}
6 = { # The horse kicks your ass
desc = court.5075.c.failure
compare_modifier = {
value = scope:duel_value
multiplier = -0.5
}
send_interface_toast = {
title = court.5075.c.failure
left_icon = root
increase_wounds_effect = {
REASON = horse_riding_accident
}
}
}
}
scope:neighbor = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 30
}
}
stress_impact = {
craven = major_stress_impact_gain
paranoid = medium_stress_impact_gain
generous = minor_stress_impact_gain
}
ai_chance = {
base = 200
}
}
option = { # Opt out - Sell them
name = court.5075.b
add_gold = medium_gold_value
scope:neighbor = {
add_opinion = {
target = root
modifier = insulted_opinion
opinion = -20
}
}
stress_impact = {
greedy = medium_stress_impact_loss
}
ai_chance = {
base = 75
}
}
after = {
scope:neighbor = {
clear_court_event_participation = yes
}
scope:master_of_the_horse ?= {
clear_court_event_participation = yes
}
}
}
##################################################
# Claudia
##################################################
# 6000 - 6009 Secret History
# 6010 - 6019 Prophet in the Halls
# 6020 - 6029 Possession at Court
# 6030 - 6039 The Ballad of the Garlic King
# 6040 - 6049 Scrounger Life
# 6050 - 6059 Saucy Readings
# 6060 - 6069 The Joys of Wine
# 6070 - 6079 The Value of Letters
# 6080 The Munificence of X
# 6090 The Art of Rhetoric
##################################################
#########################
# Secret History #
# by Claudia Baldassi #
# 6000-6003 #
#########################
scripted_trigger court_6000_has_valid_secret_trigger = {
NOT = { is_known_by = root }
OR = {
secret_type = secret_lover
secret_type = secret_deviant
secret_type = secret_murder
}
}
# A book detailing the nefarious deeds of your predecessor and their court is being circulated at your court. #
court.6000 = {
type = court_event
title = court.6000.t
desc = {
desc = court.6000.desc_opening
first_valid = {
triggered_desc = {
trigger = {
scope:courtier = {
is_close_or_extended_family_of = root
}
}
desc = court.6000.desc_family
}
desc = court.6000.desc_liege
}
desc = court.6000.desc_ending
}
theme = court
court_scene = {
button_position_character = scope:courtier
roles = {
scope:courtier = {
group = event_group
animation = shame
}
root = {
group = event_group
animation = shock
}
}
}
trigger = {
has_court_event_flag = no
primary_title.tier >= tier_duchy
exists = primary_title.previous_holder
primary_title.previous_holder = {
is_alive = no
dynasty = root.dynasty
prestige_level >= 3
highest_held_title_tier >= tier_duchy
}
age >= 14
any_courtier = {
count >= 2
age >= 14
has_court_event_flag = no
}
any_courtier = {
learning >= 12
intrigue >= 7
is_adult = yes
}
NOR = {
has_trait = blind
has_character_flag = court_6000_cooldown
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
court_event_character_flag_effect = yes
add_character_flag = {
flag = court_6000_cooldown
years = 20
}
random_courtier = {
limit = {
learning >= 12
intrigue >= 7
is_adult = yes
}
save_scope_as = author
}
random_courtier_or_guest = {
limit = {
age >= 14
this != scope:author
}
save_scope_as = courtier
court_event_character_flag_effect = yes
}
if = {
limit = {
primary_title.previous_holder = {
this != root
}
}
primary_title.previous_holder = {
save_scope_as = predecessor
}
}
if = {
limit = {
exists = cp:councillor_spymaster
}
cp:councillor_spymaster = {
save_scope_as = spymaster
}
}
}
# Option A: Outrageous! Investigate who wrote it (has spymaster)
option = {
trigger = {
exists = scope:spymaster
}
name = court.6000.a
custom_tooltip = court.6000.a.tt
add_stress = minor_stress_gain
scope:spymaster = {
set_council_task = {
task_type = task_find_secrets
target = root
}
}
trigger_event = {
id = court.6001
days = { 96 196 }
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = 0.5
ai_rationality = 0.5
ai_vengefulness = 1
}
}
}
# Option E: Outrageous, but without a sypmaster
option = {
name = court.6000.a
trigger = {
NOT = {
exists = cp:councillor_spymaster
}
}
add_stress = minor_stress_gain
custom_tooltip = court.6000.e.tt
trigger_event = {
id = court.6004
days = { 96 196 }
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = 0.5
ai_rationality = 0.5
ai_vengefulness = 1
}
}
}
# Option D: Opt out - You really don't care
option = {
name = court.6000.d
dynasty = { add_dynasty_prestige = minor_dynasty_prestige_loss }
stress_impact = {
base = minor_stress_impact_loss
}
ai_chance = {
base = 75
ai_value_modifier = {
ai_energy = -0.5
}
}
}
after = {
scope:courtier = {
clear_court_event_participation = yes
}
clear_court_event_participation = yes
}
}
court.6001 = {
type = character_event
hidden = yes
immediate = {
scope:spymaster = {
duel = {
skill = intrigue
target = scope:author
50 = { #success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
trigger_event = court.6002
}
50 = { #failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
trigger_event = court.6003
}
}
}
}
}
court.6002 = {
title = court.6000.t
type = character_event
desc = {
first_valid = {
triggered_desc = {
trigger = {
exists = scope:spymaster
}
desc = court.6002.desc
}
desc = court.6002.b.desc_opening
}
desc = court.6002.b.desc_ending
}
theme = court
left_portrait = {
character = root
animation = anger
}
right_portrait = {
character = scope:author
animation = shame
}
# Option A: Force to recant
option = {
name = court.6002.a
flavor = court.6002.a.tt
dynasty = { add_dynasty_prestige = minor_dynasty_prestige_gain }
add_dread = medium_dread_gain
custom_tooltip = court.6002.a.tt2
add_character_flag = {
flag = court_of_no_secrets
years = 15
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 1
}
}
}
#Option D: forgive the author
option = {
name = court.6002.d
change_current_court_grandeur = minor_court_grandeur_gain
scope:author = {
create_inspiration = book_inspiration
add_opinion = {
target = root
modifier = forgiven_opinion
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = -1
}
}
}
}
court.6003 = {
title = court.6000.t
type = character_event
desc = {
first_valid = {
triggered_desc = {
trigger = {
exists = scope:spymaster
}
desc = court.6003.desc
}
desc = court.6002.b.desc_opening
}
desc = court.6003.b.desc_ending
}
theme = court
left_portrait = {
character = root
animation = disapproval
}
right_portrait = {
trigger = {
exists = scope:spymaster
}
character = scope:spymaster
animation = shame
}
#Option B: disappointed
option = {
name = court.6003.b
add_intrigue_lifestyle_xp = medium_lifestyle_xp
add_stress = medium_stress_gain
}
}
court.6004 = {
type = character_event
hidden = yes
immediate = {
duel = {
skill = intrigue
target = scope:author
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 0.5
}
trigger_event = court.6002
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -0.5
}
trigger_event = court.6003
}
}
}
}
#############################
# Prophet in the Halls #
# by Claudia Baldassi #
# 6010-6011 #
#############################
scripted_trigger court_6010_valid_preacher_trigger = {
is_available_ai_adult = yes
has_trait = zealous
faith = scope:target_county.faith
}
# A guest of a different faith has been preaching their beliefs at court a bit too enthusiastically. #
court.6010 = {
type = court_event
title = court.6010.t
desc = court.6010.desc
theme = court
court_scene = {
button_position_character = scope:preacher
roles = {
scope:preacher = {
group = event_group
animation = personality_zealous
}
root = {
group = event_group
animation = disapproval
}
}
}
cooldown = { years = 20 }
trigger = {
has_court_event_flag = no
cp:councillor_court_chaplain ?= {
is_performing_council_task = task_conversion
councillor_task_target = {
NOR = {
faith = root.faith
faith = root.capital_county.faith
faith = { has_doctrine = doctrine_pluralism_pluralistic }
}
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
court_event_character_flag_effect = yes
cp:councillor_court_chaplain = { save_scope_as = chaplain }
scope:chaplain.councillor_task_target.county = { save_scope_as = target_county }
random_courtier_or_guest = {
limit = {
court_6010_valid_preacher_trigger = yes
}
save_scope_as = preacher
}
if = {
limit = {
NOT = { exists = scope:preacher }
}
create_character = {
location = root.location
template = preacher_template
faith = scope:target_county.faith
culture = scope:target_county.culture
save_scope_as = preacher
}
}
scope:preacher = { court_event_character_flag_effect = yes }
# Save the preacher's "liege"
scope:target_county.holder ?= {
save_scope_as = preacher_liege
}
every_realm_county = {
limit = {
faith = scope:preacher.faith
}
add_to_list = preacher_faith_counties
}
save_scope_value_as = {
name = preacher_faith_counties_size
value = list_size:preacher_faith_counties
}
}
#OPTION C: Imprison them
option = {
name = court.6010.c
rightfully_imprison_character_effect = {
TARGET = scope:preacher
IMPRISONER = root
}
if = {
limit = {
exists = scope:preacher_liege
scope:preacher_liege = {
this != root
faith = scope:preacher.faith
is_ai = yes
}
}
custom_tooltip = court.6010.c.tt
trigger_event = {
id = court.6011
days = 5
}
}
custom_tooltip = court.6010.c.tt2
set_variable = {
name = 6010_harsh_conversion
value = scope:preacher.faith
years = 20
}
every_in_list = {
list = preacher_faith_counties
custom = court.6010.a_every_county
change_county_control = -15
}
every_courtier_or_guest = {
limit = {
faith = scope:preacher.faith
}
custom = court_6010_all_courtiers_and_guests_faith
add_opinion = {
target = root
modifier = impious_opinion
opinion = -20
}
}
stress_impact = {
cynical = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
gregarious = medium_stress_impact_gain
just = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = 1
}
}
}
#OPTION A: Let them be
option = {
name = court.6010.a
#you are tolerant and open-minded
change_current_court_grandeur = medium_court_grandeur_gain
custom_tooltip = court.6010.c.tt3
set_variable = {
name = 6010_tolerant_conversion
value = scope:preacher.faith
years = 20
}
every_in_list = {
list = preacher_faith_counties
custom = court.6010.a_every_county
change_county_control = 15
}
every_courtier_or_guest = {
limit = {
faith = scope:preacher.faith
}
custom = court_6010_all_courtiers_and_guests_faith
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 20
}
}
stress_impact = {
zealous = major_stress_impact_gain
patient = medium_stress_impact_gain
wrathful = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = -1
}
}
}
after = {
clear_court_event_participation = yes
scope:preacher = {
clear_court_event_participation = yes
}
}
}
court.6011 = {
type = letter_event
opening = {
desc = court.6011.desc_opening
}
desc = court.6011.desc_prisoner
sender = scope:preacher_liege
#Option A: sorry for the diplomatic blunder - offer repayment
option = {
name = court.6011.a
trigger = {
can_make_expensive_purchase_trigger = {
PRICE = root.minor_gold_value
}
}
if = {
limit = {
government_allows = administrative
}
change_influence = medium_influence_gain
}
else = {
add_prestige = medium_prestige_gain
}
pay_short_term_gold = {
target = scope:preacher_liege
gold = minor_gold_value
}
scope:preacher_liege = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 20
}
}
stress_impact = {
greedy = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = greedy
add = -25
}
modifier = {
has_trait = arrogant
add = -25
}
modifier = {
has_trait = zealous
add = -25
}
modifier = {
has_trait = humble
add = 50
}
}
}
#Option B: reiterate that their religion is not welcome at your court
option = {
name = court.6011.b
add_piety = medium_piety_gain
scope:preacher_liege = {
add_opinion = {
target = root
modifier = insult_opinion
opinion = -20
}
}
stress_impact = {
humble = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = humble
add = -25
}
modifier = {
has_trait = compassionate
add = -25
}
modifier = {
has_trait = zealous
add = 25
}
modifier = {
has_trait = arrogant
add = 25
}
}
}
}
#############################
# Possession at Court #
# by Claudia Baldassi #
# 6020 #
#############################
# A possessed courtier is scaring your more religion-oriented courtiers. #
court.6020 = {
type = court_event
title = court.6020.t
desc = {
desc = court.6020.desc_opening
first_valid = {
triggered_desc = {
trigger = {
exists = scope:court_chaplain
}
desc = court.6020.desc_chaplain
}
desc = court.6020.desc_no_chaplain
}
desc = court.6020.desc_middle
first_valid = {
triggered_desc = {
trigger = {
exists = scope:court_physician
}
desc = court.6020.desc_physician
}
desc = court.6020.desc_no_physician
}
desc = court.6020.desc_ending
}
theme = court
court_scene = {
button_position_character = scope:possessed_char
roles = {
scope:possessed_char = {
group = event_group
animation = worry
}
scope:court_chaplain = {
group = event_group
animation = disgust
}
scope:court_physician = {
group = event_group
animation = disbelief
}
}
}
trigger = {
any_courtier_or_guest = {
OR = {
has_trait = possessed_1
has_trait = possessed_genetic
}
has_court_event_flag = no
}
NOT = {
has_character_flag = court_6020_cooldown
}
# Chaplain & physician don't both have to exist, but can't be the same thing.
cp:councillor_court_chaplain ?= {
NOT = { has_court_position = court_physician_court_position }
}
has_court_type = court_scholarly
}
weight_multiplier = {
base = 0.5
modifier = {
exists = cp:councillor_court_chaplain
add = 0.5
}
modifier = {
employs_court_position = court_physician_court_position
add = 0.5
}
modifier = {
has_trait = lifestyle_physician
add = 0.5
}
modifier = {
has_trait = theologian
add = 0.5
}
modifier = {
has_trait = whole_of_body
add = 0.5
}
}
immediate = {
add_character_flag = {
flag = court_6020_cooldown
years = 20
}
random_courtier_or_guest = {
limit = {
has_trait = possessed
}
save_scope_as = possessed_char
court_event_character_flag_effect = yes
}
if = {
limit = {
exists = cp:councillor_court_chaplain
}
cp:councillor_court_chaplain = {
save_scope_as = court_chaplain
court_event_character_flag_effect = yes
}
}
if = {
limit = {
court_physician_available_trigger = yes
}
save_court_physician_as_effect = { SCOPE_NAME = court_physician }
scope:court_physician = {
court_event_character_flag_effect = yes
}
}
}
# Option A: Court chaplain exorcizes them - limited to christians
option = {
name = court.6020.a
trigger = {
exists = scope:court_chaplain
OR = { scope:court_chaplain.religion = religion:eastern_orthodox_religion scope:court_chaplain.religion = religion:catholic_religion scope:court_chaplain.religion = religion:protestant_religion }
OR = { root.religion = religion:eastern_orthodox_religion root.religion = religion:catholic_religion root.religion = religion:protestant_religion }
}
add_piety = minor_piety_gain
scope:court_chaplain = {
duel = {
skill = learning
target = scope:possessed_char
10 = {
desc = court.6020.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 1
}
send_interface_toast = {
title = court.6020.a.success
custom_tooltip = court.6020.a.success.tt
change_current_court_grandeur = major_court_grandeur_gain
}
}
15 = {
desc = court.6020.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
send_interface_toast = {
title = court.6020.a.failure
custom_tooltip = court.6020.a.failure.tt
change_current_court_grandeur = medium_court_grandeur_loss
}
}
}
}
ai_chance = {
base = 150
ai_value_modifier = {
ai_zeal = 1
ai_rationality = -1
}
}
}
# Option B: it is a sign of the favor of the gods - limited to non-monotheistic
option = {
name = court.6020.b
trigger = {
NOR = {
root.religion = { is_in_family = rf_abrahamic }
scope:court_chaplain ?= {
religion = {
is_in_family = rf_abrahamic
}
}
has_trait = cynical
faith = {
OR = {
trait_is_sin = possessed_1
trait_is_sin = possessed_genetic
}
}
}
}
add_piety = medium_piety_gain
scope:possessed_char = {
add_character_modifier = possessed_prophetic_visions
}
custom_tooltip = court.6020.b.tt
change_current_court_grandeur = medium_court_grandeur_gain
ai_chance = {
base = 150
ai_value_modifier = {
ai_zeal = 1
ai_rationality = -1
}
}
}
# Option E: it's just a disease - court physician
option = {
name = court.6020.e
trigger = {
exists = scope:court_physician
}
if = {
limit = {
OR = {
root.religion = religion:islam_religion
root.religion = { is_in_family = rf_eastern }
}
}
add_learning_lifestyle_xp = major_lifestyle_xp
}
change_current_court_grandeur = major_court_grandeur_gain
scope:possessed_char = {
add_character_modifier = court_possessed_improved_condition_modifier
}
scope:possessed_char = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 60
}
}
ai_chance = {
base = 150
ai_value_modifier = {
ai_zeal = -1
ai_rationality = 1
}
}
}
# Option F: opt out - don't bother me
option = {
name = court.6020.f
add_prestige = minor_prestige_loss
stress_impact = {
base = minor_stress_impact_loss
}
ai_chance = {
base = 75
modifier = {
has_trait = lazy
add = 50
}
}
}
after = {
scope:possessed_char = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:court_chaplain }
scope:court_chaplain = {
clear_court_event_participation = yes
}
}
if = {
limit = { exists = scope:court_physician }
scope:court_physician = {
clear_court_event_participation = yes
}
}
}
}
#########################
# Saucy Readings #
# by Claudia Baldassi #
# 6050 #
#########################
scripted_trigger court_6050_valid_courtier_trigger = {
is_available_ai_adult = yes
has_court_event_flag = no
NOR = {
has_trait = chaste
is_councillor_of = root
}
NOT = {
faith = { trait_is_virtue = lustful }
}
might_cheat_on_every_partner_trigger = yes
}
# Some "compromising" literature is circulating at court #
court.6050 = {
type = court_event
title = court.6050.t
desc = {
desc = court.6050.desc_opening
first_valid = {
triggered_desc = {
trigger = {
OR = {
root.culture = { has_cultural_pillar = language_greek }
root.culture = { has_cultural_pillar = heritage_byzantine }
}
}
desc = court.6050.desc_byz
}
triggered_desc = {
trigger = {
OR = {
root.culture = { has_cultural_pillar = language_arabic }
root.culture = { has_cultural_pillar = language_iranian }
root.culture = { has_cultural_pillar = heritage_iranian }
root.culture = { has_cultural_pillar = heritage_arabic }
}
}
desc = court.6050.desc_islam
}
triggered_desc = {
trigger = {
OR = {
root.culture = { has_cultural_pillar = language_french }
root.culture = { has_cultural_pillar = language_occitano_romance }
root.culture = { has_cultural_pillar = heritage_latin }
}
}
desc = court.6050.desc_sonetti
}
triggered_desc = {
trigger = {
OR = {
root.culture = { has_cultural_pillar = language_anglic }
root.culture = { has_cultural_pillar = language_saxon }
}
}
desc = court.6050.desc_chaucer
}
triggered_desc = {
trigger = { always = yes }
desc = court.6050.desc_generic #fallback option (mostly for other christians)
}
}
desc = court.6050.desc_ending
}
theme = court
court_scene = {
button_position_character = scope:courtier
roles = {
scope:courtier = {
group = event_group
animation = throne_room_writer
}
root = {
group = event_group
animation = shock
}
scope:court_chaplain = {
group = event_group
animation = disapproval
}
}
}
trigger = {
has_court_event_flag = no
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
is_available_ai_adult = yes
has_court_event_flag = no
}
is_adult = yes
NOT = {
faith = { trait_is_virtue = lustful }
}
any_courtier = { court_6050_valid_courtier_trigger = yes }
}
weight_multiplier = {
base = 1
modifier = {
has_lifestyle = intrigue_lifestyle
add = 0.5
}
modifier = {
has_lifestyle = learning_lifestyle
add = 0.5
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
court_event_character_flag_effect = yes
cp:councillor_court_chaplain = {
save_scope_as = court_chaplain
court_event_character_flag_effect = yes
}
random_courtier = {
limit = {
has_trait = lustful
court_6050_valid_courtier_trigger = yes
}
alternative_limit = { court_6050_valid_courtier_trigger = yes }
save_scope_as = courtier
court_event_character_flag_effect = yes
}
}
# Option B: purify them all with fire!
option = {
name = court.6050.b
flavor = court.6050.b.tt
add_dread = major_dread_gain
add_piety = major_piety_gain
custom_tooltip = court.6050.b.tt.2
add_character_flag = {
flag = burned_indecent_books
years = 20
}
scope:court_chaplain = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 30
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
patient = medium_stress_impact_gain
scholar = major_stress_impact_gain
cynical = major_stress_impact_gain
}
ai_chance = {
base = 200
modifier = {
has_trait = compassionate
add = -25
}
modifier = {
has_trait = patient
add = -25
}
modifier = {
has_trait = scholar
add = -50
}
modifier = {
has_trait = cynical
add = -50
}
}
}
# Option C: culture is culture - let them read
option = {
name = court.6050.c
add_learning_lifestyle_xp = major_lifestyle_xp
if = {
limit = {
has_court_type = court_scholarly
}
change_current_court_grandeur = major_court_grandeur_gain
}
else = {
change_current_court_grandeur = minor_court_grandeur_gain
}
custom_tooltip = court.6050.c.tt
add_character_flag = {
flag = supported_indecent_books
years = 20
}
stress_impact = {
zealous = major_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = -1
}
}
}
# Option D: you really get into it
option = {
name = court.6050.d
add_intrigue_lifestyle_xp = major_lifestyle_xp
add_character_modifier = {
modifier = confident_lover
years = 15
}
scope:court_chaplain = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
stress_impact = {
chaste = major_stress_impact_gain
zealous = major_stress_impact_gain
celibate = massive_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_zeal = -0.5
}
modifier = {
has_trait = chaste
add = -100
}
modifier = {
has_trait = celibate
add = -200
}
}
}
#Option F: opt out - move on
option = {
name = court.6050.f
add_piety = minor_piety_gain
stress_impact = {
zealous = medium_stress_impact_gain
chaste = medium_stress_impact_gain
fickle = medium_stress_impact_loss
lazy = medium_stress_impact_loss
}
ai_chance = {
base = 75
modifier = {
has_trait = zealous
add = -25
}
modifier = {
has_trait = chaste
add = -25
}
modifier = {
has_trait = lazy
add = 25
}
}
}
after = {
clear_court_event_participation = yes
scope:courtier = {
clear_court_event_participation = yes
}
scope:court_chaplain = {
clear_court_event_participation = yes
}
}
}
#########################
# The Joys of Wine #
# by Claudia Baldassi #
# 6060 #
#########################
# Your chaplain preaches against wine; your physician (and the court drunkard!) disagrees #
court.6060 = {
type = court_event
title = court.6060.t
desc = {
desc = court.6060.desc_opening
triggered_desc = {
trigger = {
exists = scope:courtier_drunkard
}
desc = court.6060.desc_drunkard_courtier
}
desc = court.6060.desc_ending
}
theme = court
court_scene = {
button_position_character = scope:court_chaplain
roles = {
scope:court_chaplain = {
group = event_group
animation = disapproval
}
scope:courtier_drunkard = {
group = event_group
animation = rage
}
scope:court_physician = {
group = event_group
animation = anger
}
}
}
trigger = {
is_adult = yes
OR = {
OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion }
AND = {
religion = religion:islam_religion
culture = { has_cultural_pillar = heritage_iranian }
}
}
employs_court_position = court_physician_court_position
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
has_court_event_flag = no
NOT = { has_court_position = court_physician_court_position }
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
cp:councillor_court_chaplain = {
save_scope_as = court_chaplain
}
save_court_physician_as_effect = { SCOPE_NAME = court_physician }
scope:court_physician = {
court_event_character_flag_effect = yes
}
if = {
limit = {
any_courtier_or_guest = {
has_trait = drunkard
NOR = {
this = scope:court_physician
this = scope:court_chaplain
}
}
}
random_courtier_or_guest = {
limit = {
has_trait = drunkard
NOR = {
this = scope:court_physician
this = scope:court_chaplain
}
}
save_scope_as = courtier_drunkard
court_event_character_flag_effect = yes
}
}
}
#Option A: side with the chaplain
option = {
name = court.6060.a
add_character_modifier = {
modifier = court_no_wine_modifier
days = 3650
}
add_piety = medium_piety_gain
scope:court_chaplain = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 30
}
}
scope:court_physician = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -15
}
}
if = {
limit = {
exists = scope:courtier_drunkard
}
scope:courtier_drunkard = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -30
}
}
}
stress_impact = {
cynical = medium_stress_impact_gain
gluttonous = major_stress_impact_gain
lifestyle_reveler = major_stress_impact_gain
drunkard = massive_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = cynical
add = -25
}
modifier = {
has_trait = gluttonous
add = -50
}
modifier = {
has_trait = lifestyle_reveler
add = -75
}
modifier = {
has_trait = drunkard
add = -100
}
}
}
#Option B: side with the physician
option = {
name = court.6060.b
add_character_modifier = {
modifier = court_moderate_drinking_modifier
days = 3650
}
add_prestige = medium_prestige_gain
scope:court_physician = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 30
}
}
scope:court_chaplain = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -15
}
}
if = {
limit = {
exists = scope:courtier_drunkard
}
scope:courtier_drunkard = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -15
}
}
}
stress_impact = {
zealous = medium_stress_impact_gain
gluttonous = medium_stress_impact_gain
lifestyle_reveler = medium_stress_impact_gain
drunkard = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = zealous
add = -25
}
modifier = {
has_trait = gluttonous
add = -25
}
modifier = {
has_trait = lifestyle_reveler
add = -25
}
modifier = {
has_trait = drunkard
add = -75
}
modifier = {
has_trait = lifestyle_physician
add = 75
}
modifier = {
has_trait = temperate
add = 75
}
}
}
#Option C: side with the drunkard
option = {
name = court.6060.c
flavor = court.6060.c.tt
trigger = {
exists = scope:courtier_drunkard
}
add_character_modifier = {
modifier = rivers_of_wine_modifier
years = 10
}
custom_tooltip = court.6060.c.tt.2
if = {
limit = {
can_be_drunkard = yes
}
random = {
chance = 25
add_trait = drunkard
}
}
scope:courtier_drunkard = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 30
}
}
if = {
limit = {
NOT = { has_relation_friend = scope:courtier_drunkard }
}
progress_towards_friend_effect = {
REASON = friend_took_side_in_dispute
CHARACTER = scope:courtier_drunkard
OPINION = 0
}
}
scope:court_chaplain = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -30
}
}
scope:court_physician = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -30
}
}
stress_impact = {
base = medium_stress_impact_loss
zealous = medium_stress_impact_gain
temperate = major_stress_impact_gain
lifestyle_physician = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = drunkard
add = 100
}
modifier = {
has_trait = zealous
add = -25
}
modifier = {
has_trait = temperate
add = -50
}
modifier = {
has_trait = lifestyle_physician
add = -50
}
}
}
after = {
if = {
limit = {
exists = scope:courtier_drunkard
}
scope:courtier_drunkard = {
clear_court_event_participation = yes
}
}
scope:court_chaplain = {
clear_court_event_participation = yes
}
scope:court_physician = {
clear_court_event_participation = yes
}
}
}
#############################
# The Value of Letters #
# by Claudia Baldassi #
# 6070-6072 #
#############################
# Your courtiers are dissatisfied with you being completely illiterate. How do you react? #
court.6070 = {
type = court_event
title = court.6070.t
desc = court.6070.desc
theme = court
court_scene = {
button_position_character = scope:tutor_6070
roles = {
scope:tutor_6070 = {
group = event_group
animation = personality_rational
}
root = {
group = event_group
triggered_animation = {
trigger = {
OR = {
has_trait = arrogant
has_trait = stubborn
}
}
animation = personality_bold
}
triggered_animation = {
trigger = {
NOR = {
has_trait = arrogant
has_trait = stubborn
}
}
animation = shame
}
animation = shame
}
}
}
trigger = {
has_court_event_flag = no
OR = {
learning < low_skill_rating
has_trait = intellect_bad
has_trait = dull
}
NOT = {
has_trait = blind
}
is_adult = yes
OR = {
exists = cp:councillor_court_chaplain
AND = {
employs_court_position = court_tutor_court_position
any_court_position_holder = {
type = court_tutor_court_position
is_available_ai_adult = yes
has_court_event_flag = no
}
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
court_event_character_flag_effect = yes
if = {
limit = {
employs_court_position = court_tutor_court_position
any_court_position_holder = {
type = court_tutor_court_position
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = court_tutor_court_position
limit = { is_available_ai_adult = yes }
save_scope_as = tutor_6070
court_event_character_flag_effect = yes
}
}
else = {
cp:councillor_court_chaplain = {
save_scope_as = tutor_6070
court_event_character_flag_effect = yes
}
}
}
#Option A: Get your court chaplain/court tutor to teach you (or try to...)
option = {
name = court.6070.a
random_list = {
1 = {
desc = court.6070.a.success
modifier = {
factor = 2
scope:tutor_6070.learning > root.learning
}
modifier = {
factor = 3
has_trait = diligent
}
modifier = {
factor = 3
scope:tutor_6070 = { has_trait = scholar }
}
modifier = {
factor = 2
scope:tutor_6070 = {
has_education_learning_trigger = yes
}
}
modifier = {
factor = 1.5
has_trait = patient
}
modifier = {
factor = 2
has_trait = ambitious
}
modifier = {
factor = 1.5
has_trait = intellect_good_1
}
modifier = {
factor = 2
has_trait = intellect_good_2
}
modifier = {
factor = 3
has_trait = intellect_good_3
}
trigger_event = {
id = court.6071
days = 100
}
custom_tooltip = court.6070.a.tt.1
show_as_tooltip = {
add_stress = minor_stress_loss
add_prestige = medium_prestige_gain
add_learning_skill = 1
}
}
1 = {
desc = court.6070.a.failure
modifier = {
factor = 2
scope:tutor_6070.learning <= root.learning
}
modifier = {
factor = 4
has_trait = lazy
}
modifier = {
factor = 2
has_trait = fickle
}
modifier = {
factor = 2
has_trait = impatient
}
modifier = {
factor = 2
has_trait = content
}
modifier = {
factor = 4
has_trait = irritable
}
modifier = {
factor = 1.5
has_trait = intellect_bad_1
}
modifier = {
factor = 2
has_trait = intellect_bad_2
}
modifier = {
factor = 3
has_trait = intellect_bad_3
}
modifier = {
factor = 2
has_trait = dull
}
trigger_event = {
id = court.6072
days = 100
}
custom_tooltip = court.6070.a.tt.2
show_as_tooltip = {
every_courtier_or_guest = {
custom = court_6000_all_courtiers_and_guests
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
}
}
}
ai_chance = {
base = 150
modifier = {
has_trait = diligent
add = 25
}
modifier = {
has_trait = lazy
add = -50
}
modifier = {
has_trait = content
add = -25
}
modifier = {
has_trait = ambitious
add = 50
}
}
}
#Option B: Yes, and you are proud of it!
option = {
name = court.6070.b
trigger = {
OR = {
has_trait = arrogant
has_trait = stubborn
}
}
every_courtier_or_guest = {
limit = {
learning >= low_skill_rating
}
custom = every_courtier_or_guest_6070_learning
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -20
}
}
change_current_court_grandeur = medium_court_grandeur_loss
stress_impact = {
base = medium_stress_impact_loss
diligent = medium_stress_impact_gain
ambitious = major_stress_impact_gain
}
ai_chance = {
base = 200
modifier = {
has_trait = ambitious
add = -75
}
modifier = {
has_trait = diligent
add = -25
}
}
}
after = {
clear_court_event_participation = yes
scope:tutor_6070 = {
clear_court_event_participation = yes
}
}
}
court.6071 = {
type = character_event
title = court.6070.t
desc = court.6071.desc
theme = court
left_portrait = {
character = root
animation = happiness
}
right_portrait = {
character = scope:tutor_6070
animation = happiness
}
immediate = {
if = {
limit = {
scope:tutor_6070 = {
OR = {
is_alive = no
NOT = {
is_courtier_of = root
}
}
}
}
if = {
limit = {
employs_court_position = court_tutor_court_position
any_court_position_holder = {
type = court_tutor_court_position
is_available_ai_adult = yes
}
}
random_court_position_holder = {
type = court_tutor_court_position
limit = { is_available_ai_adult = yes }
save_scope_as = tutor_6070
}
}
else_if = {
limit = {
exists = cp:councillor_court_chaplain
}
cp:councillor_court_chaplain = {
save_scope_as = tutor_6070
}
}
else_if = {
limit = {
any_courtier_or_guest = {
is_available_ai_adult = yes
learning > low_skill_rating
}
}
random_courtier_or_guest = {
limit = {
is_available_ai_adult = yes
learning > low_skill_rating
}
save_scope_as = tutor_6070
}
}
else = {
create_character = {
location = root.location
template = scholar_character
save_scope_as = tutor_6070
}
}
}
}
#Option B: my tutor deserves compensation
option = {
name = court.6071.b
add_prestige = medium_prestige_gain
add_learning_skill = 2
pay_short_term_gold = {
gold = minor_gold_value
target = scope:tutor_6070
}
scope:tutor_6070 = {
add_character_flag = court_language_teacher
}
custom_tooltip = court.6071.b.tt
reverse_add_opinion = {
target = scope:tutor_6070
modifier = grateful_opinion
opinion = 20
}
stress_impact = {
base = minor_stress_impact_loss
greedy = minor_stress_impact_gain
}
}
}
court.6072 = {
type = character_event
title = court.6070.t
desc = court.6072.desc
theme = court
left_portrait = {
character = root
animation = shame
}
right_portrait = {
character = scope:tutor_6070
animation = disapproval
}
artifact = {
position = lower_left_portrait
target = scope:newly_created_artifact
trigger = { exists = scope:newly_created_artifact }
}
immediate = {
hidden_effect = {
scope:tutor_6070 = {
create_artifact = {
name = court_fancy_seal_modifier
description = court_fancy_seal_modifier_desc
type = miscellaneous
visuals = small_box
modifier = artifact_diplomacy_1_modifier
save_scope_as = newly_created_artifact
}
}
}
}
#Option B: you use a seal instead of signing
option = {
name = court.6072.b
flavor = court.6072.b.tt
scope:newly_created_artifact = {
set_owner = {
target = root
history = {
type = given
actor = scope:tutor_6070
recipient = root
}
}
}
}
}
#########################
# The Munificence of X #
# 6080 #
# Claudia Baldassi #
#########################
# A traveling ruler is spending a lot of money in your court and is making you look bad (Mansa Musa's pilgrimage) - do you attempt to match the visitor's generosity or profit from it? #
scripted_trigger court_6080_valid_visitor_trigger = {
is_available_healthy_ai_adult = yes
is_travelling = yes
top_liege = this
OR = {
has_trait = generous
has_trait = improvident
has_trait = profligate
}
NOR = {
has_trait = greedy
this = root
}
gold >= 100
}
court.6080 = {
type = court_event
title = court.6080.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
# The visiting ruler is your liege on a Tour
is_vassal_of = scope:6080_visitor
scope:6080_visitor = { involved_activity ?= { has_activity_type = activity_tour } }
}
desc = court.6080.desc_liege
}
desc = court.6080.desc
}
desc = court.6080.desc_middle
triggered_desc = {
trigger = {
exists = scope:beneficiary_2
}
desc = court.6080.desc_2
}
triggered_desc = {
trigger = {
exists = scope:beneficiary_child
}
desc = court.6080.desc_3
}
desc = court.6080.desc_end
}
theme = court
court_scene = {
button_position_character = scope:6080_visitor
roles = {
scope:6080_visitor = {
group = event_group
animation = personality_compassionate
}
scope:beneficiary_1 = {
group = event_group
animation = admiration
}
scope:beneficiary_2 = {
group = event_group
animation = admiration
}
}
}
trigger = {
any_sub_realm_county = {
holder = root
any_county_province = {
any_character_in_location = {
court_6080_valid_visitor_trigger = yes
}
}
}
any_courtier_or_guest = {
is_available_ai_adult = yes
has_court_event_flag = no
}
}
immediate = {
random_sub_realm_county = {
limit = {
holder = root
any_county_province = {
any_character_in_location = {
court_6080_valid_visitor_trigger = yes
}
}
}
random_county_province = {
limit = {
any_character_in_location = {
court_6080_valid_visitor_trigger = yes
}
}
random_character_in_location = {
limit = {
court_6080_valid_visitor_trigger = yes
}
save_scope_as = 6080_visitor
}
}
}
random_courtier_or_guest = {
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
}
save_scope_as = beneficiary_1
court_event_character_flag_effect = yes
}
if = {
limit = {
any_courtier_or_guest = {
is_available_ai_adult = yes
has_court_event_flag = no
this != scope:beneficiary_1
}
}
random_courtier_or_guest = {
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
this != scope:beneficiary_1
}
save_scope_as = beneficiary_2
court_event_character_flag_effect = yes
}
}
if = {
limit = {
any_courtier_or_guest = {
is_available_ai_child = yes
has_court_event_flag = no
age >= 3
}
}
random_courtier_or_guest = {
limit = {
is_available_ai_child = yes
has_court_event_flag = no
}
save_scope_as = beneficiary_child
}
}
scope:6080_visitor = {
pay_short_term_gold = {
target = scope:beneficiary_1
gold = tiny_gold_value
}
}
if = {
limit = {
exists = scope:beneficiary_2
}
scope:6080_visitor = {
pay_short_term_gold = {
target = scope:beneficiary_2
gold = tiny_gold_value
}
}
}
}
#Option A: I can be even more generous!
option = {
name = court.6080.a
pay_short_term_gold = {
target = scope:beneficiary_1
gold = minor_gold_value
}
reverse_add_opinion = {
target = scope:beneficiary_1
modifier = grateful_opinion
opinion = 30
}
if = {
limit = {
exists = scope:beneficiary_2
}
pay_short_term_gold = {
target = scope:beneficiary_2
gold = minor_gold_value
}
reverse_add_opinion = {
target = scope:beneficiary_2
modifier = grateful_opinion
opinion = 30
}
}
if = {
limit = {
exists = scope:beneficiary_child
}
reverse_add_opinion = {
target = scope:beneficiary_child
modifier = grateful_opinion
opinion = 30
}
}
change_current_court_grandeur = medium_court_grandeur_gain
if = {
limit = {
government_allows = administrative
}
change_influence = medium_influence_gain
}
else = {
add_prestige = medium_prestige_gain
}
stress_impact = {
content = medium_stress_impact_gain
humble = major_stress_impact_gain
greedy = massive_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -1
}
modifier = {
has_trait = ambitious
add = 25
}
modifier = {
has_trait = humble
add = -25
}
modifier = {
has_trait = content
add = -25
}
modifier = {
gold < medium_gold_value
factor = 0
}
}
}
#Option B: shamelessly ask for money too
option = {
name = court.6080.b
duel = {
target = scope:6080_visitor
skill = intrigue
50 = {
desc = court.6080.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
send_interface_toast = {
title = court.6080.b.success.tt
scope:6080_visitor = {
pay_short_term_gold = {
target = root
gold = medium_gold_value
}
}
}
}
50 = {
desc = court.6080.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
send_interface_toast = {
title = court.6080.b.failure.tt
add_prestige = minor_prestige_loss
}
}
}
stress_impact = {
honest = medium_stress_impact_gain
generous = major_stress_impact_gain
improvident = massive_stress_impact_gain
profligate = massive_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 1
ai_honor = -0.5
}
}
}
#Option D: Better him spending than me
option = {
name = court.6080.d
change_current_court_grandeur = miniscule_court_grandeur_gain
stress_impact = {
greedy = minor_stress_impact_loss
generous = medium_stress_impact_gain
ambitious = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = greedy
add = 10
}
modifier = {
has_trait = content
add = 25
}
}
}
after = {
scope:6080_visitor = {
clear_court_event_participation = yes
}
scope:beneficiary_1 = {
clear_court_event_participation = yes
}
if = {
limit = {
exists = scope:beneficiary_2
}
scope:beneficiary_2 = {
clear_court_event_participation = yes
}
}
}
}
#########################
# The Art of Rhetoric #
# 6090 #
# Claudia Baldassi #
#########################
# Your Court Poet is giving a lecture to your children on the finer arts of rhetoric and they aren't having any of it #
court.6090 = {
type = court_event
title = court.6090.t
desc = {
desc = court.6090.desc
first_valid = {
triggered_desc = {
trigger = {
scope:6090_poet = {
OR = {
has_court_position = court_poet_court_position
has_court_position = court_tutor_court_position
}
}
}
desc = court.6090.desc.cp
}
desc = court.6090.desc.teacher
}
desc = court.6090.desc.middle
triggered_desc = {
trigger = {
exists = scope:6090_child_c
}
desc = court.6090.desc_other
}
desc = court.6090.desc_end
}
theme = court
court_scene = {
button_position_character = scope:6090_poet
roles = {
scope:6090_poet = {
group = event_group
animation = beg
}
scope:6090_child_a = {
group = event_group
animation = dismissal
}
scope:6090_child_b = {
group = event_group
animation = dismissal
}
}
}
trigger = {
any_child = {
count >= 2
is_available_ai_child = yes
has_court_event_flag = no
age >= 8
location = root.location
}
}
weight_multiplier = {
base = 1
modifier = {
employs_court_position = court_poet_court_position
any_court_position_holder = {
type = court_poet_court_position
is_available_ai_adult = yes
has_court_event_flag = no
}
add = 1
}
modifier = {
employs_court_position = court_tutor_court_position
any_court_position_holder = {
type = court_tutor_court_position
is_available_ai_adult = yes
has_court_event_flag = no
}
add = 1
}
}
immediate = {
random_court_position_holder = {
type = court_poet_court_position
limit = { is_available_ai_adult = yes }
save_scope_as = 6090_poet
}
if = {
limit = {
NOT = { exists = scope:6090_poet }
}
random_court_position_holder = {
type = court_tutor_court_position
limit = { is_available_ai_adult = yes }
save_scope_as = 6090_poet
}
}
if = {
limit = {
NOT = { exists = scope:6090_poet }
}
random_pool_character = {
province = root.location
limit = {
diplomacy >= 14
}
save_scope_as = 6090_poet
}
}
if = {
limit = {
NOT = { exists = scope:6090_poet }
}
create_character = {
location = root.location
template = poet_template
save_scope_as = 6090_poet
}
scope:6090_poet = { add_character_flag = created_character }
}
scope:6090_poet = { court_event_character_flag_effect = yes }
every_child = {
limit = {
is_available_ai_child = yes
age >= 8
location = root.location
}
add_to_list = rhetoric_children
}
ordered_in_list = {
list = rhetoric_children
order_by = age
max = 3
check_range_bounds = no
if = {
limit = {
NOT = { exists = scope:6090_child_a }
}
save_scope_as = 6090_child_a
court_event_character_flag_effect = yes
}
else_if = {
limit = {
NOT = { exists = scope:6090_child_b }
}
save_scope_as = 6090_child_b
court_event_character_flag_effect = yes
}
else = {
save_scope_as = 6090_child_c
court_event_character_flag_effect = yes
}
}
}
#Option A: Reprimand them
option = {
name = court.6090.a
scope:6090_poet = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 30
}
}
scope:6090_child_a = {
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -10
}
if = {
limit = {
scope:6090_poet = {
OR = {
has_court_position = court_poet_court_position
has_court_position = court_tutor_court_position
}
}
}
add_diplomacy_skill = 2
}
else = {
add_diplomacy_skill = 1
}
}
scope:6090_child_b = {
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -10
}
if = {
limit = {
scope:6090_poet = {
OR = {
has_court_position = court_poet_court_position
has_court_position = court_tutor_court_position
}
}
}
add_diplomacy_skill = 2
}
else = {
add_diplomacy_skill = 1
}
}
if = {
limit = {
exists = scope:6090_child_c
}
scope:6090_child_c = {
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -10
}
if = {
limit = {
scope:6090_poet = {
OR = {
has_court_position = court_poet_court_position
has_court_position = court_tutor_court_position
}
}
}
add_diplomacy_skill = 2
}
else = {
add_diplomacy_skill = 1
}
}
}
stress_impact = {
lazy = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = diligent
add = 100
}
modifier = {
has_trait = lazy
add = -50
}
modifier = {
has_trait = arrogant
add = -50
}
}
}
#Option C: Side with them - court poet is booooring
option = {
name = court.6090.c
flavor = court.6090.c.tt
scope:6090_child_a = {
add_prowess_skill = 1
add_opinion = {
target = root
modifier = amused_opinion
opinion = 10
}
}
scope:6090_child_b = {
add_prowess_skill = 1
add_opinion = {
target = root
modifier = amused_opinion
opinion = 10
}
}
if = {
limit = {
exists = scope:6090_child_c
}
scope:6090_child_c = {
add_prowess_skill = 1
add_opinion = {
target = root
modifier = amused_opinion
opinion = 10
}
}
}
scope:6090_poet = {
add_opinion = {
target = root
modifier = insulted_opinion
opinion = -30
}
}
stress_impact = {
ambitious = medium_stress_impact_gain
diligent = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = ambitious
add = -25
}
modifier = {
has_trait = diligent
add = -75
}
modifier = {
has_trait = lazy
add = 25
}
modifier = {
has_trait = callous
add = 25
}
}
}
after = {
scope:6090_poet = {
clear_court_event_participation = yes
if = {
limit = {
root = { is_ai = yes }
has_character_flag = created_character
}
silent_disappearance_effect = yes
}
}
scope:6090_child_a = {
clear_court_event_participation = yes
}
scope:6090_child_b = {
clear_court_event_participation = yes
}
scope:6090_child_c ?= {
clear_court_event_participation = yes
}
}
}
##################################################
# George
##################################################
# 7300 Where's the Lamb Sauce?
# 7600 Wild at Heart
# 7610 Child asks for a destrier
# 7649 Courtier has harmed their bird
# 7700 Chief Eunuch trains a pigeon to steal things
##################################################
#########################
# Where's the Lamb Sauce?
# by George Luff
# 7300
#########################
scripted_trigger court_7300_court_food_taster_trigger = {
has_court_position = food_taster_court_position
is_available_healthy_ai_adult = yes
}
## Food Taster QUITS
court.7300 = {
type = court_event
title = court.7300.t
desc = court.7300.desc
theme = court
court_scene = {
button_position_character = scope:taster
roles = {
scope:taster = {
group = event_group
animation = disgust
}
root = {
group = event_group
animation = worry
}
}
}
cooldown = { years = 25 }
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue }
}
trigger = {
has_court_event_flag = no
# Employs a food taster
any_court_position_holder = {
court_7300_court_food_taster_trigger = yes
has_court_event_flag = no
}
# The level of food amenities are crap
amenity_level = {
target = court_food_quality
value <= medium_amenity_level
}
NOT = {
government_has_flag = government_is_tribal
}
}
immediate = {
court_event_character_flag_effect = yes
# Save Food Taster
random_court_position_holder = {
limit = {
court_7300_court_food_taster_trigger = yes
}
save_scope_as = taster
court_event_character_flag_effect = yes
}
}
# invest more in food
option = {
name = court.7300.a
add_amenity_level = { type = court_food_quality value = 1 }
add_character_modifier = {
modifier = incentivized_food_taster
years = 15
}
scope:taster = {
add_opinion = {
modifier = grateful_opinion
target = root
opinion = 10
}
}
stress_impact = {
gluttonous = medium_stress_impact_loss
greedy = major_stress_impact_gain
generous = medium_stress_impact_loss
}
ai_chance = {
base = 40
ai_value_modifier = {
ai_rationality = 1
ai_honor = 0.5
ai_compassion = 1
ai_greed = -1
}
}
}
# Let things be
option = {
name = court.7300.b
scope:taster = {
add_opinion = {
modifier = disgusted_opinion
target = root
opinion = -15
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
stubborn = medium_stress_impact_loss
callous = medium_stress_impact_loss
}
ai_chance = {
base = 20
ai_value_modifier = {
ai_honor = -1
ai_greed = 1
}
}
}
after = {
clear_court_event_participation = yes
scope:taster = {
clear_court_event_participation = yes
}
}
}
#########################
# Wild at Heart
# by George Luff
# 7600
#########################
scripted_trigger active_child_trigger = {
age >= 7
age <= 15
is_landed = no
location = root.location
is_available_healthy_ai_child = yes
NOT = { has_character_flag = child_goes_hunting }
}
court.7600 = {
type = court_event
title = court.7600.t
desc = court.7600.desc
theme = court
court_scene = {
button_position_character = scope:child
roles = {
scope:child = {
group = event_group
animation = ecstasy
}
scope:huntmaster = {
group = event_group
animation = happiness
}
}
}
cooldown = { years = 15 }
weight_multiplier = {
base = 1
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
trigger = {
any_child = {
active_child_trigger = yes
has_court_event_flag = no
}
employs_court_position = master_of_hunt_court_position
any_court_position_holder = {
type = master_of_hunt_court_position
is_available_healthy_ai_adult = yes
has_court_event_flag = no
}
NOT = {
culture = { has_cultural_tradition = tradition_vegetarianism }
}
}
immediate = {
random_child = {
limit = {
active_child_trigger = yes
}
weight ={
base = 1
modifier = {
has_trait = rowdy
add = 2
}
modifier = {
has_trait = curious
add = 1
}
}
save_scope_as = child
court_event_character_flag_effect = yes
add_character_flag = child_goes_hunting
select_local_animal_effect = { TYPE = harmless } # Save scope to limit possible animals: any/big/small/dangerous/harmless/prowling
}
random_court_position_holder = {
type = master_of_hunt_court_position
limit = {
is_available_healthy_ai_adult = yes
}
save_scope_as = huntmaster
court_event_character_flag_effect = yes
}
}
# Ban the outings
option = {
name = court.7600.a
scope:child = {
add_learning_skill = 2
add_opinion = {
modifier = hate_opinion
target = root
opinion = -30
}
}
stress_impact = {
lifestyle_hunter = major_stress_impact_gain
brave = medium_stress_impact_gain
ambitious = minor_stress_impact_gain
craven = medium_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = -1
}
modifier = {
has_trait = lifestyle_hunter
factor = 0
}
}
}
# Approve the outings
option = {
name = court.7600.c
scope:child = {
add_prowess_skill = 1
add_opinion = {
modifier = love_opinion
target = root
opinion = 15
}
}
scope:huntmaster = {
custom_tooltip = 7600_taking_child_to_hunt.tt
add_character_flag = 7600_taking_child_to_hunt
if = {
limit = {
has_trait = lifestyle_hunter
}
add_trait_xp = {
trait = lifestyle_hunter
track = hunter
value = 5
}
}
else = {
add_trait = lifestyle_hunter
}
}
stress_impact = {
lifestyle_hunter = medium_stress_impact_loss
craven = medium_stress_impact_gain
scholar = minor_stress_impact_gain
theologian = minor_stress_impact_gain
diligent = minor_stress_impact_gain
paranoid = minor_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_honor = 0.5
ai_boldness = 1
}
modifier = {
has_trait = paranoid
factor = 0
}
}
}
after = {
scope:huntmaster = {
clear_court_event_participation = yes
}
scope:child = {
clear_court_event_participation = yes
}
}
}
#########################
# Spymaster trains a pigeon to steal things
# by George Luff
# 7700
#########################
scripted_trigger pigeon_assistance_scheme_trigger = {
OR = {
scheme_type = fabricate_hook
scheme_type = abduct
scheme_type = sway
scheme_type = murder
scheme_type = convert_to_witchcraft
}
}
court.7700 = {
type = court_event
title = court.7700.t
desc = court.7700.desc
theme = court
court_scene = {
button_position_character = scope:spymaster
roles = {
scope:spymaster = {
group = event_group
animation = scheme
}
}
}
cooldown = { years = 25 }
weight_multiplier = {
base = 1
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue }
}
trigger = {
cp:councillor_spymaster ?= {
is_available_ai_adult = yes
has_court_event_flag = no
}
any_scheme = {
pigeon_assistance_scheme_trigger = yes
}
}
immediate = {
cp:councillor_spymaster = {
save_scope_as = spymaster
court_event_character_flag_effect = yes
}
random_scheme = {
limit = {
pigeon_assistance_scheme_trigger = yes
}
save_scope_as = scheme
}
scope:spymaster = {
add_character_modifier = {
modifier = pigeon_thief
years = 10
}
}
}
# Just this once, ok?
option = {
name = court.7700.b
# You've told them you need help, they are in on it now!
try_to_force_assign_character_to_random_agent_slot_effect = {
SCHEME = scope:scheme
CHAR = scope:spymaster
YEARS = 10
}
add_character_modifier = {
modifier = profiting_from_pigeon_thievery
years = 10
}
stress_impact = {
honest = massive_stress_impact_gain
just = major_stress_impact_gain
compassionate = medium_stress_impact_gain
brave = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 1
ai_honor = -0.5
ai_compassion = -0.5
}
}
}
# Turn the spymaster away
option = {
name = court.7700.d
add_prestige = minor_prestige_gain
stress_impact = {
deceitful = major_stress_impact_gain
vengeful = major_stress_impact_gain
fickle = medium_stress_impact_gain
arbitrary = medium_stress_impact_gain
craven = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = -1
ai_honor = 1
}
}
}
after = {
scope:spymaster = {
clear_court_event_participation = yes
}
}
}
##################################################
# Joe Parkin
# 8001 - Trampled Underfoot
# 8010 - Underequipped
# 8020 - Sartorial Sting
# 8030 - Pawful of Pooches
# 8040 - Aristocratic Pretensions
# 8050 - A Little Bird
# 8070 - Feeling Useful
# 8080 - Maternal Reproach
# 8090 - Building Blocks
# 8120 - Novel Perspectives
# 8140 - Royal Lapse
# 8150 - Prandial Excess
# 8160 - Foremost Knight
#########################
# Trampled Underfoot #
# by Joe Parkin #
#########################
scripted_trigger court_8001_child_trigger = {
is_available = yes
is_healthy = yes
age > 3
age < 12
has_any_focus = yes
NOT = { has_variable = court_8001_child_flag }
location = root.location
}
scripted_effect court_8001_skill_effect = {
duel = {
skill = $SKILL$
value = decent_skill_rating
5 = {
compare_modifier = {
value = scope:duel_value
multiplier = 1
min = -49
}
min = 1
desc = court.8001.a.success
send_interface_toast = {
left_icon = scope:child_1
title = court.8001.a.lesson_tt
scope:child_1 = { add_$SKILL$_skill = 2 }
}
}
10 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 2
desc = court.8001.a.success
send_interface_toast = {
left_icon = scope:child_1
title = court.8001.a.lesson_tt
scope:child_1 = { add_$SKILL$_skill = 1 }
}
}
10 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 5
desc = court.8001.a.failure
}
}
stress_impact = {
base = minor_stress_impact_gain
wrathful = minor_stress_impact_gain
callous = minor_stress_impact_gain
}
}
court.8001 = {
type = court_event
title = court.8001.t
desc = {
desc = court.8001.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:child_1 = { has_focus = education_diplomacy }
}
desc = court.8001.desc.diplomacy
}
triggered_desc = {
trigger = {
scope:child_1 = { has_focus = education_martial }
}
desc = court.8001.desc.martial
}
triggered_desc = {
trigger = {
scope:child_1 = { has_focus = education_stewardship }
}
desc = court.8001.desc.stewardship
}
triggered_desc = {
trigger = {
scope:child_1 = { has_focus = education_intrigue }
}
desc = court.8001.desc.intrigue
}
triggered_desc = {
trigger = {
scope:child_1 = { has_focus = education_learning }
}
desc = court.8001.desc.learning
}
desc = court.8001.desc.fallback
}
desc = court.8001.desc.closing
}
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:gardener
roles = {
root = {
group = event_group
animation = war_over_tie
}
scope:gardener = {
group = event_group
animation = rage
}
scope:child_1 = {
group = event_group
animation = shame
}
}
}
trigger = {
any_courtier_or_guest = {
count >= 1
court_8001_child_trigger = yes
has_court_event_flag = no
}
}
weight_multiplier = {
base = 1
modifier = {
employs_court_position = court_gardener_court_position
any_court_position_holder = {
type = court_gardener_court_position
is_available_healthy_ai_adult = yes
has_court_event_flag = no
}
add = 2
}
modifier = {
has_trait = lifestyle_gardener
add = 2
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
}
immediate = {
random_court_position_holder = {
type = court_gardener_court_position
limit = { is_available_healthy_ai_adult = yes }
save_scope_as = gardener
}
if = {
limit = {
NOT = { exists = scope:gardener }
}
create_character = {
location = root.location
template = gardener_template
save_scope_as = gardener
}
scope:gardener = { add_character_flag = created_character }
}
scope:gardener = {
court_event_character_flag_effect = yes
}
random_courtier_or_guest = {
limit = {
court_8001_child_trigger = yes
OR = {
is_child_of = root
any_relation = {
type = guardian
this = root
}
}
}
alternative_limit = { court_8001_child_trigger = yes }
save_scope_as = child_1
court_event_character_flag_effect = yes
set_variable = {
name = court_8001_child_flag
days = 3650
}
}
}
option = { # Encourage the child's interests
name = court.8001.a.diplomacy
trigger = {
scope:child_1 = { has_focus = education_diplomacy }
}
skill = diplomacy
court_8001_skill_effect = { SKILL = diplomacy }
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 2
ai_energy = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = wrathful
}
modifier = { #Weight down for stress.
add = -15
has_trait = callous
}
}
}
option = { # Encourage the child's interests
name = court.8001.a.martial
trigger = {
scope:child_1 = { has_focus = education_martial }
}
skill = martial
court_8001_skill_effect = { SKILL = martial }
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 2
ai_energy = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = wrathful
}
modifier = { #Weight down for stress.
add = -15
has_trait = callous
}
}
}
option = { # Encourage the child's interests
name = court.8001.a.stewardship
trigger = {
scope:child_1 = { has_focus = education_stewardship }
}
skill = stewardship
court_8001_skill_effect = { SKILL = stewardship }
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 2
ai_energy = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = wrathful
}
modifier = { #Weight down for stress.
add = -15
has_trait = callous
}
}
}
option = { # Encourage the child's interests
name = court.8001.a.intrigue
trigger = {
scope:child_1 = { has_focus = education_intrigue }
}
skill = intrigue
court_8001_skill_effect = { SKILL = intrigue }
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 2
ai_energy = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = wrathful
}
modifier = { #Weight down for stress.
add = -15
has_trait = callous
}
}
}
option = { # Encourage the child's interests
name = court.8001.a.learning
trigger = {
scope:child_1 = { has_focus = education_learning }
}
skill = learning
court_8001_skill_effect = { SKILL = learning }
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 2
ai_energy = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = wrathful
}
modifier = { #Weight down for stress.
add = -15
has_trait = callous
}
}
}
option = { # Replant them
name = court.8001.c
scope:child_1 = {
random = {
chance = 20
modifier = {
scope:gardener = { has_court_position = court_gardener_court_position }
add = 5
}
modifier = {
scope:gardener = { has_trait = lifestyle_gardener }
add = 10
}
modifier = {
has_trait = diligent
add = 10
}
modifier = {
has_trait = lazy
add = -10
}
root = {
send_interface_toast = {
left_icon = scope:child_1
title = court.8001.c.gardener_tt
scope:child_1 = { add_trait = lifestyle_gardener }
}
}
}
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -20
}
stress_impact = {
base = minor_stress_impact_gain
lazy = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
}
stress_impact = {
just = minor_stress_impact_loss
diligent = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -1
ai_vengefulness = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = vengeful
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
}
}
option = { # Dismiss the gardener's protests (opt out)
name = court.8001.e
reverse_add_opinion = {
target = scope:gardener
modifier = annoyed_opinion
opinion = -20
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 1
ai_boldness = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = vengeful
}
modifier = { #Weight down for stress.
add = -15
has_trait = arbitrary
}
}
}
after = {
scope:gardener = {
clear_court_event_participation = yes
if = {
limit = {
root = { is_ai = yes }
has_character_flag = created_character
}
silent_disappearance_effect = yes
}
}
scope:child_1 = {
clear_court_event_participation = yes
}
}
}
#########################
# Underequipped #
# by Joe Parkin #
#########################
scripted_trigger court_8010_underequipped_trigger = {
is_available_healthy_ai_adult = yes
OR = {
NOT = {
any_character_artifact = { artifact_slot_type = primary_armament }
}
any_character_artifact = {
count = all
artifact_slot_type = primary_armament
OR = {
var:quality < 25
ep1_artifact_durability_lower_equal_percent_trigger = { PERCENT = 0.24 } # could be replaced by checking LOW_DURATION
}
}
}
}
court.8010 = {
type = court_event
title = court.8010.t
desc = {
desc = court.8010.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:underequipped = {
OR = {
has_court_position = bodyguard_court_position
has_court_position = akolouthos_court_position
}
}
}
desc = court.8010.desc.bodyguard
}
triggered_desc = {
trigger = {
scope:underequipped = { has_court_position = champion_court_position }
}
desc = court.8010.desc.champion
}
desc = court.8010.desc.knight
}
first_valid = {
triggered_desc = {
trigger = {
scope:underequipped = {
OR = {
has_trait = brave
has_trait = wrathful
has_trait = arrogant
has_trait = impatient
has_trait = ambitious
}
}
}
desc = court.8010.desc.bold
}
desc = court.8010.desc.meek
}
desc = court.8010.desc.body
random_valid = {
triggered_desc = {
trigger = {
scope:underequipped = {
OR = {
has_court_position = bodyguard_court_position
has_court_position = akolouthos_court_position
is_knight_of = root
}
}
}
desc = court.8010.desc.bodyguard_end
}
triggered_desc = {
trigger = {
scope:underequipped = { has_court_position = champion_court_position }
}
desc = court.8010.desc.champion_end
}
}
}
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:underequipped
roles = {
scope:underequipped = {
group = event_group
animation = sadness
}
root = {
group = event_group
animation = idle
}
}
}
trigger = {
has_court_event_flag = no
OR = {
any_court_position_holder = {
type = bodyguard_court_position
court_8010_underequipped_trigger = yes
has_court_event_flag = no
location = root.location
}
any_court_position_holder = {
type = champion_court_position
court_8010_underequipped_trigger = yes
has_court_event_flag = no
location = root.location
}
any_court_position_holder = {
type = akolouthos_court_position
court_8010_underequipped_trigger = yes
has_court_event_flag = no
location = root.location
}
any_knight = {
court_8010_underequipped_trigger = yes
has_court_event_flag = no
is_landed = no
location = root.location
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
court_event_character_flag_effect = yes
hidden_effect = {
random_list = {
4 = {
trigger = {
any_court_position_holder = {
type = bodyguard_court_position
court_8010_underequipped_trigger = yes
location = root.location
}
}
random_court_position_holder = {
type = bodyguard_court_position
limit = {
court_8010_underequipped_trigger = yes
location = root.location
}
save_scope_as = underequipped
court_event_character_flag_effect = yes
}
}
4 = {
trigger = {
any_court_position_holder = {
type = champion_court_position
court_8010_underequipped_trigger = yes
location = root.location
}
}
random_court_position_holder = {
type = champion_court_position
limit = {
court_8010_underequipped_trigger = yes
location = root.location
}
save_scope_as = underequipped
court_event_character_flag_effect = yes
}
}
8 = {
trigger = {
any_court_position_holder = {
type = akolouthos_court_position
court_8010_underequipped_trigger = yes
location = root.location
}
}
random_court_position_holder = {
type = akolouthos_court_position
limit = {
court_8010_underequipped_trigger = yes
location = root.location
}
save_scope_as = underequipped
court_event_character_flag_effect = yes
}
}
1 = {
trigger = {
any_knight = {
court_8010_underequipped_trigger = yes
location = root.location
is_landed = no
}
}
random_knight = {
limit = {
court_8010_underequipped_trigger = yes
location = root.location
is_landed = no
}
save_scope_as = underequipped
court_event_character_flag_effect = yes
}
}
}
}
random_dummy_gender_effect = yes #To feed to the weapon effect since we don't have a creator
scope:underequipped = { set_signature_weapon_effect = yes } #To create an artifact of the "signature weapon" type
if = {
limit = {
any_character_artifact = {
count > 1
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:underequipped }
artifact_slot_type = primary_armament
}
}
ordered_character_artifact = {
limit = {
is_equipped = no
artifact_slot_type = primary_armament
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:underequipped }
}
order_by = {
value = 0
subtract = var:quality
}
save_scope_as = my_weapon
}
}
}
option = { # Have a sword made
name = court.8010.a
change_current_court_grandeur = medium_court_grandeur_gain
remove_short_term_gold = medium_gold_value
custom_tooltip = court.8010.a.tt
hidden_effect = {
scope:underequipped = {
if = {
limit = { var:signature_weapon = flag:axe }
create_artifact_weapon_effect = {
OWNER = scope:underequipped
CREATOR = scope:dummy_gender
SET_WEAPON_TYPE = flag:artifact_weapon_type_axe
}
}
else_if = {
limit = { var:signature_weapon = flag:hammer }
create_artifact_weapon_effect = {
OWNER = scope:underequipped
CREATOR = scope:dummy_gender
SET_WEAPON_TYPE = flag:artifact_weapon_type_hammer
}
}
else_if = {
limit = { var:signature_weapon = flag:spear }
create_artifact_weapon_effect = {
OWNER = scope:underequipped
CREATOR = scope:dummy_gender
SET_WEAPON_TYPE = flag:artifact_weapon_type_spear
}
}
else_if = {
limit = { var:signature_weapon = flag:mace }
create_artifact_weapon_effect = {
OWNER = scope:underequipped
CREATOR = scope:dummy_gender
SET_WEAPON_TYPE = flag:artifact_weapon_type_mace
}
}
else = { #For swords, but also as fallback - no daggers here
create_artifact_weapon_effect = {
OWNER = scope:underequipped
CREATOR = scope:dummy_gender
SET_WEAPON_TYPE = flag:artifact_weapon_type_sword
}
}
}
if = {
limit = { exists = scope:newly_created_artifact } # To avoid errors
send_interface_toast = {
title = court.8010.a.equipped_tt
left_icon = scope:underequipped
right_icon = scope:newly_created_artifact
scope:newly_created_artifact = {
set_owner = {
target = scope:underequipped
history = {
location = root.capital_province
actor = root
recipient = scope:underequipped
type = given
}
}
}
}
}
}
scope:underequipped = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
stress_impact = {
greedy = major_stress_impact_gain # It's too expensive
callous = medium_stress_impact_gain # So?
arrogant = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
fickle = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -1
ai_compassion = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
modifier = { #Weight down for stress.
add = -15
has_trait = callous
}
}
}
option = { # Give lesser owned sword
name = court.8010.c
trigger = { exists = scope:my_weapon }
add_prestige = major_prestige_gain
scope:underequipped = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
send_interface_toast = {
title = court.8010.c.equipped_tt
left_icon = scope:underequipped
right_icon = scope:my_weapon
scope:my_weapon = {
set_owner = {
target = scope:underequipped
history = {
location = root.capital_province
actor = root
recipient = scope:underequipped
type = given
}
}
}
}
stress_impact = {
greedy = major_stress_impact_gain # My precious?!
arrogant = medium_stress_impact_gain # My swords are too strong for you traveler
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -2
ai_compassion = 1
}
modifier = { #Weight down for stress.
add = -30
has_trait = greedy
}
modifier = { #Weight down for stress.
add = -15
has_trait = arrogant
}
}
}
option = { # Give a sword from the armory (opt out)
name = court.8010.d
change_current_court_grandeur = minor_court_grandeur_loss
custom_tooltip = court.8010.d.tt
scope:underequipped = {
if = {
limit = {
any_character_artifact = {
is_equipped = yes
artifact_slot_type = primary_armament
ep1_artifact_durability_lower_equal_percent_trigger = { PERCENT = 0.99 }
}
}
random_character_artifact = {
limit = {
is_equipped = yes
artifact_slot_type = primary_armament
ep1_artifact_durability_lower_equal_percent_trigger = { PERCENT = 0.49 }
}
add_durability = {
value = artifact_max_durability
multiply = 0.25
}
}
}
}
stress_impact = {
base = minor_stress_impact_loss
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_greed = 2
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
modifier = { #Weight down for stress.
add = -15
has_trait = paranoid
}
}
}
after = {
clear_court_event_participation = yes
scope:underequipped = {
clear_court_event_participation = yes
}
}
}
#########################
# Sartorial Sting #
# by Joe Parkin #
#########################
court.8020 = {
type = court_event
title = court.8020.t
desc = court.8020.desc
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:couture_spouse
roles = {
scope:couture_spouse = {
group = event_group
animation = anger
}
scope:couture_guest = {
group = event_group
animation = schadenfreude
}
}
}
trigger = {
amenity_level = { target = court_fashion value <= medium_amenity_level }
is_married = yes
primary_spouse = {
is_alive = yes
has_court_event_flag = no
}
any_pool_guest = {
is_available_ai_adult = yes
has_court_event_flag = no
}
NOT = {
government_has_flag = government_is_tribal # No changing amenities above what's legal for tribals
}
}
weight_multiplier = {
base = 1
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
primary_spouse = {
save_scope_as = couture_spouse
court_event_character_flag_effect = yes
}
random_pool_guest = {
limit = { is_available_ai_adult = yes }
weight = {
base = 1
modifier = {
factor = 20
culture != root.culture
}
modifier = {
factor = 10
sex_same_as = root.primary_spouse
}
}
save_scope_as = couture_guest
court_event_character_flag_effect = yes
}
primary_spouse = {
progress_towards_rival_effect = {
CHARACTER = scope:couture_guest
REASON = rival_couture_criticised
OPINION = 0
}
}
}
option = { # Make an effort
name = court.8020.b
set_amenity_level = { type = court_fashion value = high_amenity_level }
remove_short_term_gold = minor_gold_value
capital_county = {
add_county_modifier = {
modifier = fashion_industry_county_modifier
years = 25
}
}
stress_impact = {
greedy = medium_stress_impact_gain # It's too espensive
content = medium_stress_impact_gain # What's wrong with our clothes?
humble = medium_stress_impact_gain # These clothes are good enough
improvident = medium_stress_impact_loss # Shopping!
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -1
ai_rationality = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
modifier = { #Weight down for stress.
add = -15
has_trait = content
}
modifier = { #Weight down for stress.
add = -15
has_trait = humble
}
modifier = {
gold < minor_gold_value
factor = 0
}
}
}
option = { # Laugh it off (opt out)
name = court.8020.a
add_prestige = minor_prestige_gain
change_current_court_grandeur = minor_court_grandeur_loss
primary_spouse = {
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -10
}
}
stress_impact = {
base = minor_stress_impact_loss
arrogant = medium_stress_impact_gain # How dare they mock us
wrathful = medium_stress_impact_gain # Why I 'oughta
vengeful = medium_stress_impact_gain # They said what?!
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = -2
ai_rationality = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = arrogant
}
modifier = { #Weight down for stress.
add = -15
has_trait = wrathful
}
modifier = { #Weight down for stress.
add = -15
has_trait = vengeful
}
}
}
after = {
scope:couture_guest = {
clear_court_event_participation = yes
}
scope:couture_spouse = {
clear_court_event_participation = yes
}
}
}
#########################
# Pawful of Pooches #
# by Joe Parkin #
#########################
scripted_trigger court_8030_child_trigger = {
age >= 6
is_adult = no
is_available = yes
NOT = { has_character_modifier = dog_story_modifier }
}
court.8030 = {
type = court_event
title = court.8030.t
desc = {
desc = court.8030.desc.intro
first_valid = {
triggered_desc = {
trigger = { exists = scope:child_2 }
desc = court.8030.desc.two
}
desc = court.8030.desc.one
}
desc = court.8030.desc.body
}
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:huntmaster
roles = {
scope:huntmaster = {
group = event_group
animation = happiness
}
scope:child_1 = {
group = event_group
animation = beg
}
scope:child_2 = {
group = event_group
animation = interested
}
}
}
trigger = {
employs_court_position = master_of_hunt_court_position
any_court_position_holder = {
type = master_of_hunt_court_position
is_available_ai_adult = yes
has_court_event_flag = no
}
any_child = {
court_8030_child_trigger = yes
has_court_event_flag = no
}
}
weight_multiplier = {
base = 1
}
immediate = {
random_court_position_holder = {
type = master_of_hunt_court_position
limit = { is_available_ai_adult = yes }
save_scope_as = huntmaster
court_event_character_flag_effect = yes
}
random_child = {
limit = { court_8030_child_trigger = yes }
weight = {
base = 1
modifier = {
factor = 2
has_trait = curious
}
modifier = {
factor = 2
has_trait = charming
}
modifier = {
factor = 2
has_focus = education_diplomacy
}
}
save_scope_as = child_1
court_event_character_flag_effect = yes
}
if = {
limit = {
any_child = {
court_8030_child_trigger = yes
this != scope:child_1
}
}
random_child = {
limit = {
court_8030_child_trigger = yes
this != scope:child_1
}
weight = {
base = 1
modifier = {
factor = 2
has_trait = curious
}
modifier = {
factor = 2
has_trait = charming
}
modifier = {
factor = 2
has_focus = education_diplomacy
}
}
save_scope_as = child_2
court_event_character_flag_effect = yes
}
}
}
option = {
name = court.8030.a
change_current_court_grandeur = medium_court_grandeur_gain
add_character_modifier = {
modifier = hunting_pooches_modifier
years = 10
}
stress_impact = {
lifestyle_hunter = major_stress_impact_loss
greedy = minor_stress_impact_gain
impatient = minor_stress_impact_gain
family_first = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -1
ai_energy = 1
ai_honor = 1
}
modifier = { #Weight up.
add = 30
has_trait = lifestyle_hunter
}
}
}
option = {
name = court.8030.b
scope:child_1 = {
start_dog_story_cycle_effect = yes
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 15
}
}
if = {
limit = { exists = scope:child_2 }
scope:child_2 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -10
}
}
}
stress_impact = {
lifestyle_hunter = medium_stress_impact_gain
just = minor_stress_impact_gain
callous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 0.5
ai_compassion = 1
}
modifier = { #Weight up.
add = -15
has_trait = lifestyle_hunter
}
modifier = { #Weight up.
add = -5
has_trait = just
}
modifier = { #Weight up.
add = -15
has_trait = callous
}
}
}
option = {
name = court.8030.c
trigger = { exists = scope:child_2 }
scope:child_2 = {
start_dog_story_cycle_effect = yes
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 15
}
}
scope:child_1 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -10
}
}
stress_impact = {
lifestyle_hunter = medium_stress_impact_gain
just = minor_stress_impact_gain
callous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 0.5
ai_compassion = 1
}
modifier = { #Weight up.
add = -15
has_trait = lifestyle_hunter
}
modifier = { #Weight up.
add = -5
has_trait = just
}
modifier = { #Weight up.
add = -15
has_trait = callous
}
}
}
option = {
name = court.8030.d
trigger = {
NOT = { has_character_modifier = dog_story_modifier }
}
start_dog_story_cycle_effect = yes
scope:child_1 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -15
}
}
if = {
limit = { exists = scope:child_2 }
scope:child_2 = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -15
}
}
}
stress_impact = {
lifestyle_hunter = medium_stress_impact_gain
just = minor_stress_impact_gain
generous = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 2
ai_compassion = 1
}
modifier = { #Weight up.
add = -15
has_trait = lifestyle_hunter
}
modifier = { #Weight up.
add = -5
has_trait = just
}
modifier = { #Weight up.
add = -15
has_trait = generous
}
}
}
after = {
scope:huntmaster = {
clear_court_event_participation = yes
}
scope:child_1 = {
clear_court_event_participation = yes
}
if = {
limit = { exists = scope:child_2 }
scope:child_2 = {
clear_court_event_participation = yes
}
}
}
}
############################
# Aristocratic Pretensions #
# by Joe Parkin #
############################
scripted_trigger court_8040_courtier_trigger = {
is_available_healthy_ai_adult = yes
any_held_title = { count = 0 }
NOR = {
is_close_family_of = root
has_trait = content
has_trait = humble
is_hostage = yes
}
trigger_if = {
limit = { is_female = yes }
root = { faith_dominant_gender_female_or_equal = yes }
}
trigger_else = { faith_dominant_gender_male_or_equal = yes }
}
scripted_effect court_8040_grant_effect = {
send_interface_toast = {
left_icon = scope:new_noble
title = court.8040.grant_tt
root = {
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:worst_title = {
change_title_holder = {
holder = scope:new_noble
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:new_noble = {
if = {
limit = { scope:worst_title.tier = tier_barony }
add_opinion = {
target = root
modifier = received_title_barony
opinion = 30
}
}
else = {
add_opinion = {
target = root
modifier = received_title_county
opinion = 50
}
}
}
if = {
limit = {
can_add_hook = {
target = scope:new_noble
type = indebted_hook
}
}
add_hook = {
target = scope:new_noble
type = indebted_hook
}
}
scope:new_noble = {
add_character_flag = {
flag = joining_faction_block
years = 20
}
}
custom_tooltip = joining_faction_block_tt
every_in_list = {
list = court_8040_list
limit = {
this != scope:new_noble
}
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -10
}
}
}
}
}
scripted_effect court_8040_desc_effect = {
if = {
limit = {
has_any_court_position = yes
NOT = { exists = scope:position_holder }
}
save_scope_as = position_holder
}
else_if = {
limit = {
is_knight = yes
NOT = { exists = scope:knight }
}
save_scope_as = knight
}
else_if = {
limit = {
is_close_or_extended_family_of = root
NOT = { exists = scope:relative }
}
save_scope_as = relative
}
else_if = {
limit = {
has_trait = ambitious
NOT = { exists = scope:ambitious }
}
save_scope_as = ambitious
}
else_if = {
limit = {
has_trait = arrogant
NOT = { exists = scope:arrogant }
}
save_scope_as = arrogant
}
else_if = {
limit = {
is_lowborn = yes
NOT = { exists = scope:lowborn }
}
save_scope_as = lowborn
}
else_if = {
limit = {
is_lowborn = no
NOT = { exists = scope:gentry }
}
save_scope_as = gentry
}
else = {
if = {
limit = { NOT = { exists = scope:generic_1 } }
save_scope_as = generic_1
}
else_if = {
limit = { NOT = { exists = scope:generic_2 } }
save_scope_as = generic_2
}
else = { save_scope_as = generic_3 }
}
}
court.8040 = {
type = court_event
title = court.8040.t
desc = {
desc = court.8040.desc.intro
triggered_desc = {
trigger = { exists = scope:position_holder }
desc = court.8040.desc.position_holder
}
triggered_desc = {
trigger = { exists = scope:knight }
desc = court.8040.desc.knight
}
triggered_desc = {
trigger = { exists = scope:relative }
desc = court.8040.desc.relative
}
triggered_desc = {
trigger = { exists = scope:ambitious }
desc = court.8040.desc.ambitious
}
triggered_desc = {
trigger = { exists = scope:arrogant }
desc = court.8040.desc.arrogant
}
triggered_desc = {
trigger = { exists = scope:lowborn }
desc = court.8040.desc.lowborn
}
triggered_desc = {
trigger = { exists = scope:gentry }
desc = court.8040.desc.gentry
}
triggered_desc = {
trigger = { exists = scope:generic_1 }
desc = court.8040.desc.generic_1
}
triggered_desc = {
trigger = { exists = scope:generic_2 }
desc = court.8040.desc.generic_2
}
triggered_desc = {
trigger = { exists = scope:generic_3 }
desc = court.8040.desc.generic_3
}
desc = court.8040.desc.body
}
theme = court
override_background = { reference = throne_room }
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:courtier_3
roles = {
scope:courtier_1 = {
group = event_group
animation = personality_irrational
}
scope:courtier_2 = {
group = event_group
animation = personality_coward
}
scope:courtier_3 = {
group = event_group
animation = personality_dishonorable
}
}
}
trigger = {
has_royal_court = yes
any_courtier = {
count >= 3
court_8040_courtier_trigger = yes
has_court_event_flag = no
}
OR = {
any_held_title = {
title_tier = barony
is_capital_barony = no
is_leased_out = no
this != root.capital_barony
}
any_held_title = {
count >= 4
title_tier = county
is_landless_type_title = no
}
}
domain_limit_available < 0
}
weight_multiplier = {
base = 1
modifier = {
is_ai = yes
factor = 0.5
}
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
ordered_courtier = { # Find 3 courtiers and determine their flaws
limit = { court_8040_courtier_trigger = yes }
max = 3
check_range_bounds = no
order_by = prestige
if = {
limit = { NOT = { exists = scope:courtier_1 } }
save_scope_as = courtier_1
court_event_character_flag_effect = yes
court_8040_desc_effect = yes
}
else_if = {
limit = { NOT = { exists = scope:courtier_2 } }
save_scope_as = courtier_2
court_event_character_flag_effect = yes
court_8040_desc_effect = yes
}
else = {
save_scope_as = courtier_3
court_event_character_flag_effect = yes
court_8040_desc_effect = yes
}
add_to_list = court_8040_list
if = {
limit = { NOT = { exists = scope:button } }
save_scope_as = button # For button character
}
}
if = { # Find a valid barony to give away
limit = {
any_held_title = {
title_tier = barony
is_capital_barony = no
is_leased_out = no
this != root.capital_barony
}
}
ordered_held_title = {
title_tier = barony
limit = {
is_capital_barony = no
is_leased_out = no
this != root.capital_barony
}
order_by = {
value = 0
subtract = title_province.combined_building_level
}
save_scope_as = worst_title
}
}
else = { # Find a valid county to give away
ordered_held_title = {
title_tier = county
limit = {
this != root.capital_county
is_landless_type_title = no
}
order_by = {
value = 0
subtract = development_level
}
save_scope_as = worst_title
}
}
}
option = { # Best courtier wins - fight
name = court.8040.d
flavor = court.8040.d.flavor_tt
random_list = {
2 = {
desc = court.8040.d.courtier_1_tt
modifier = {
add = scope:courtier_1.prowess
}
scope:courtier_1 = { save_scope_as = new_noble }
show_as_tooltip = {
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:worst_title = {
change_title_holder = {
holder = scope:new_noble
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
}
2 = {
desc = court.8040.d.courtier_2_tt
modifier = {
add = scope:courtier_2.prowess
}
scope:courtier_2 = { save_scope_as = new_noble }
show_as_tooltip = {
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:worst_title = {
change_title_holder = {
holder = scope:new_noble
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
}
2 = {
desc = court.8040.d.courtier_3_tt
modifier = {
add = scope:courtier_3.prowess
}
scope:courtier_3 = { save_scope_as = new_noble }
show_as_tooltip = {
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:worst_title = {
change_title_holder = {
holder = scope:new_noble
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
}
}
every_in_list = {
list = court_8040_list
increase_wounds_no_death_effect = { REASON = duel }
}
hidden_effect = { court_8040_grant_effect = yes }
stress_impact = {
lifestyle_blademaster = medium_stress_impact_loss # Yay fighty slash
viking = medium_stress_impact_loss # Yay fighty slash
varangian = medium_stress_impact_loss # Yay fighty slash
berserker = medium_stress_impact_loss # Yay fighty slash
brave = medium_stress_impact_loss # Yay fighty slash
greedy = medium_stress_impact_gain # But, titles
diligent = medium_stress_impact_gain # But, I like managing stuff
arrogant = medium_stress_impact_gain # But, my titles
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = 2
ai_greed = -0.5
}
modifier = { #Weight up for stress.
add = 15
has_trait = lifestyle_blademaster
}
modifier = { #Weight up for stress.
add = 15
has_trait = viking
}
modifier = { #Weight up for stress.
add = 15
has_trait = varangian
}
modifier = { #Weight up for stress.
add = 15
has_trait = berserker
}
modifier = { #Weight up for stress.
add = 15
has_trait = berserker
}
modifier = { #Weight up for stress.
add = 15
has_trait = brave
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
modifier = { #Weight down for stress.
add = -15
has_trait = diligent
}
modifier = { #Weight down for stress.
add = -15
has_trait = arrogant
}
}
}
option = { # Best courtier wins - persuasion
name = court.8040.e
change_current_court_grandeur = medium_court_grandeur_gain
random_list = {
2 = {
desc = court.8040.e.courtier_1_tt
modifier = {
add = scope:courtier_1.diplomacy
}
scope:courtier_1 = { save_scope_as = new_noble }
show_as_tooltip = {
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:worst_title = {
change_title_holder = {
holder = scope:new_noble
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
}
2 = {
desc = court.8040.e.courtier_2_tt
modifier = {
add = scope:courtier_2.diplomacy
}
scope:courtier_2 = { save_scope_as = new_noble }
show_as_tooltip = {
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:worst_title = {
change_title_holder = {
holder = scope:new_noble
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
}
2 = {
desc = court.8040.e.courtier_3_tt
modifier = {
add = scope:courtier_3.diplomacy
}
scope:courtier_3 = { save_scope_as = new_noble }
show_as_tooltip = {
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:worst_title = {
change_title_holder = {
holder = scope:new_noble
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
}
}
stress_impact = {
lifestyle_poet = medium_stress_impact_loss # Poetry duels are my jam
gregarious = medium_stress_impact_loss # Having fun with friends was the real reward
diplomat = medium_stress_impact_loss # Solving problems with words is the coolest
greedy = medium_stress_impact_gain # But, titles
diligent = medium_stress_impact_gain # But, I like managing stuff
arrogant = medium_stress_impact_gain # But, my titles
}
hidden_effect = { court_8040_grant_effect = yes }
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 1
ai_greed = -0.5
}
modifier = { #Weight up for stress.
add = 15
has_trait = lifestyle_poet
}
modifier = { #Weight up for stress.
add = 15
has_trait = gregarious
}
modifier = { #Weight up for stress.
add = 15
has_trait = diplomat
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
modifier = { #Weight down for stress.
add = -15
has_trait = diligent
}
modifier = { #Weight down for stress.
add = -15
has_trait = arrogant
}
}
}
option = { # You get nothing!
name = court.8040.f
add_prestige = minor_prestige_gain
every_in_list = {
list = court_8040_list
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -10
}
}
stress_impact = {
generous = medium_stress_impact_gain # But I have so much to give
lazy = medium_stress_impact_gain # I would rather have someone else do it
humble = medium_stress_impact_gain # Who am I to deny them?
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 1
ai_greed = 1
}
modifier = { # Weight up for NO family members.
factor = 2
NOR = {
scope:courtier_1 = { is_close_or_extended_family_of = root }
scope:courtier_2 = { is_close_or_extended_family_of = root }
scope:courtier_3 = { is_close_or_extended_family_of = root }
}
}
modifier = { # Weight up for NO dynasty members.
factor = 2
NOR = {
scope:courtier_1.dynasty = root.dynasty
scope:courtier_2.dynasty = root.dynasty
scope:courtier_3.dynasty = root.dynasty
}
}
modifier = { # Weight up for NO opinion.
factor = 2
NOR = {
opinion = {
target = scope:courtier_1
value >= 50
}
opinion = {
target = scope:courtier_2
value >= 50
}
opinion = {
target = scope:courtier_3
value >= 50
}
}
}
modifier = { #Weight down for stress.
add = -15
has_trait = generous
}
modifier = { #Weight down for stress.
add = -15
has_trait = lazy
}
modifier = { #Weight down for stress.
add = -15
has_trait = humble
}
}
}
after = {
scope:courtier_1 = {
clear_court_event_participation = yes
}
scope:courtier_2 = {
clear_court_event_participation = yes
}
scope:courtier_3 = {
clear_court_event_participation = yes
}
}
}
#########################
# A Little Bird #
# by Joe Parkin #
#########################
scripted_trigger court_8050_secrets_trigger = {
is_ai = yes
has_any_secrets = yes
any_secret = {
NOT = {
any_secret_knower = { this = root }
}
}
}
court.8050 = {
type = court_event
title = court.8050.t
desc = court.8050.desc
theme = court
override_background = { reference = throne_room }
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:servant
roles = {
ROOT = {
group = event_group
animation = throne_room_conversation_4
}
scope:servant = {
group = event_group
animation = throne_room_conversation_1
}
}
}
trigger = {
has_royal_court = yes
has_court_event_flag = no
OR = {
any_vassal = {
court_8050_secrets_trigger = yes
has_court_event_flag = no
}
any_courtier_or_guest = {
court_8050_secrets_trigger = yes
has_court_event_flag = no
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
}
}
amenity_level = {
target = court_servants
value > high_amenity_level
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
amenity_level = {
target = court_servants
value = max_amenity_level
}
}
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue }
}
immediate = {
court_event_character_flag_effect = yes
every_vassal = {
limit = { court_8050_secrets_trigger = yes }
add_to_list = court_8050_secret_list
}
every_courtier_or_guest = {
limit = {
court_8050_secrets_trigger = yes
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
}
add_to_list = court_8050_secret_list
}
random_in_list = {
list = court_8050_secret_list
weight = {
base = 1
modifier = {
factor = primary_title.tier
}
modifier = {
factor = 2
any_secret = {
any_secret_knower = { count > 2 }
}
}
modifier = {
factor = 3
is_landed = yes
}
}
save_scope_as = vassal
random_secret = {
limit = {
NOT = {
any_secret_knower = { this = root }
}
}
weight = {
modifier = {
factor = 2
any_secret_knower = { count > 2 }
}
}
save_scope_as = vassal_secret
reveal_to = root
}
}
if = {
limit = {
any_in_list = {
list = court_8050_secret_list
this != scope:vassal
}
}
random_in_list = {
list = court_8050_secret_list
limit = { this != scope:vassal }
save_scope_as = vassal_2
random_secret = {
limit = {
NOT = {
any_secret_knower = { this = root }
}
}
weight = {
modifier = {
factor = 2
any_secret_knower = { count > 2 }
}
}
save_scope_as = secret_2
}
}
}
hidden_effect = {
create_character = {
template = servant_character
dynasty = none
location = root.capital_province
gender_female_chance = root_soldier_female_chance
save_scope_as = servant
}
}
}
option = { # What else have you heard?
name = court.8050.b
trigger = { exists = scope:secret_2 }
add_prestige = minor_prestige_loss
custom_tooltip = court.8050.b.tt
hidden_effect = {
send_interface_toast = {
title = court.8050.b.tt_secret
left_icon = scope:vassal_2
scope:secret_2 = { reveal_to = root }
}
}
scope:servant = { silent_disappearance_effect = yes }
stress_impact = {
schemer = medium_stress_impact_loss
trusting = medium_stress_impact_gain # What if people spy on me too?!
honest = medium_stress_impact_gain # This isn't above board
humble = medium_stress_impact_gain # It is not my business
lazy = medium_stress_impact_gain # Sounds like effort
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -2
ai_energy = 2
}
modifier = { # Weight down for stress.
add = 15
has_trait = schemer
}
modifier = { # Weight down for stress.
add = -15
has_trait = trusting
}
modifier = { # Weight down for stress.
add = -15
has_trait = honest
}
modifier = { # Weight down for stress.
add = -15
has_trait = humble
}
modifier = { # Weight down for stress.
add = -15
has_trait = lazy
}
}
}
option = { # Keep me informed
name = court.8050.c
remove_short_term_gold = minor_gold_value
add_character_modifier = {
modifier = servant_informants_modifier
years = 5
}
custom_tooltip = court.8050.c.tt
scope:servant = { silent_disappearance_effect = yes }
stress_impact = {
schemer = medium_stress_impact_loss # Sweet, sweet scheming
trusting = medium_stress_impact_gain # What if people spy on me too?!
honest = medium_stress_impact_gain # This isn't above board
humble = medium_stress_impact_gain # It is not my business
lazy = medium_stress_impact_gain # Sounds like effort
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = -2
ai_energy = 2
}
modifier = { # Weight down for stress.
add = 15
has_trait = schemer
}
modifier = { # Weight down for stress.
add = -15
has_trait = trusting
}
modifier = { # Weight down for stress.
add = -15
has_trait = honest
}
modifier = { # Weight down for stress.
add = -15
has_trait = humble
}
modifier = { # Weight down for stress.
add = -15
has_trait = lazy
}
}
}
option = { # Thanks for your service (opt out)
name = court.8050.a
stress_impact = {
deceitful = medium_stress_impact_gain # I could have learned so much more...
arrogant = medium_stress_impact_gain # I don't surround myself with commoners
paranoid = medium_stress_impact_gain # What do they know about me instead??
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_rationality = 0.5
}
modifier = { # Weight down for stress.
add = -15
has_trait = deceitful
}
modifier = { # Weight down for stress.
add = -15
has_trait = arrogant
}
modifier = { # Weight down for stress.
add = -15
has_trait = paranoid
}
}
}
after = {
clear_court_event_participation = yes
scope:servant ?= {
clear_court_event_participation = yes
}
}
}
#########################
# Building Blocks #
# by Joe Parkin #
#########################
scripted_trigger court_8090_barony_trigger = {
tier = tier_barony
is_leased_out = no
title_province.free_building_slots > 0
county != scope:my_county
}
court.8090 = {
type = court_event
title = court.8090.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:architect = { has_court_position = royal_architect_court_position }
}
desc = court.8090.desc.intro
}
desc = court.8090.desc.intro_alt
}
desc = court.8090.desc.intro_end
first_valid = {
triggered_desc = {
trigger = {
exists = scope:chaplain
scope:chaplain = scope:architect
}
desc = court.8090.desc.religious
}
desc = court.8090.desc.castle
}
desc = court.8090.desc.outro
first_valid = {
triggered_desc = {
trigger = { exists = scope:chaplain }
desc = court.8090.desc.chaplain
}
desc = court.8090.desc.fallback
}
}
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:architect
roles = {
scope:architect = {
group = event_group
animation = throne_room_chancellor
}
scope:steward = {
group = event_group
animation = throne_room_conversation_3
}
}
}
trigger = {
has_royal_court = yes
exists = cp:councillor_steward
cp:councillor_steward = {
is_available_ai_adult = yes
has_court_event_flag = no
}
any_held_title = {
title_tier = barony
is_leased_out = no
title_province.free_building_slots > 0
title_province.county = {
any_county_province = {
has_holding = no
}
}
}
}
weight_multiplier = {
base = 1
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
modifier = {
add = 1
exists = cp:councillor_steward
cp:councillor_steward = {
is_available_ai_adult = yes
has_trait = compassionate
}
}
modifier = {
any_court_position_holder = {
type = royal_architect_court_position
is_available_ai_adult = yes
has_court_event_flag = no
NOT = { this = root.cp:councillor_steward }
}
add = 2
}
}
immediate = {
cp:councillor_steward = {
save_scope_as = steward
court_event_character_flag_effect = yes
}
random_court_position_holder = {
type = royal_architect_court_position
limit = { is_available_ai_adult = yes }
save_scope_as = architect
}
if = {
limit = {
NOT = { exists = scope:architect }
}
random_pool_character = {
province = root.location
limit = {
stewardship > 12
is_adult = yes
}
save_scope_as = architect
hidden_effect = { add_trait = architect }
}
}
if = {
limit = {
NOT = { exists = scope:architect }
}
create_character = {
location = root.location
template = foreign_architect_template
save_scope_as = architect
}
scope:architect = {
add_character_flag = created_character
}
}
scope:architect = { court_event_character_flag_effect = yes }
ordered_held_title = { # Save barony with least buildings
title_tier = barony
limit = {
is_leased_out = no
title_province.free_building_slots > 0
}
order_by = {
value = 0
subtract = title_province.combined_building_level
}
save_scope_as = my_barony
county = { save_scope_as = my_county }
scope:my_barony.title_province = { add_random_building_variable_effect = yes }
}
scope:my_county = {
ordered_county_province = { # Save church in same county
limit = {
has_holding_type = church_holding
free_building_slots > 0
}
order_by = free_building_slots
barony = { save_scope_as = temple_barony }
scope:temple_barony.title_province = { add_random_building_variable_effect = yes }
}
random_county_province = { # Save an empty province in the same county
limit = {
has_holding = no
}
save_scope_as = empty_holding
}
}
if = {
limit = {
exists = cp:councillor_court_chaplain
NOT = { cp:councillor_court_chaplain = scope:architect }
trigger_if = {
limit = {
NOT = { exists = scope:temple_barony }
}
any_held_title = {
title_tier = county
any_county_province = {
has_holding_type = church_holding
free_building_slots > 0
}
}
}
}
cp:councillor_court_chaplain = { save_scope_as = chaplain }
if = {
limit = {
NOT = { exists = scope:temple_barony }
}
random_held_title = {
title_tier = county
limit = {
any_county_province = {
has_holding_type = church_holding
free_building_slots > 0
}
}
random_county_province = {
limit = {
has_holding_type = church_holding
free_building_slots > 0
}
barony = { save_scope_as = temple_barony }
add_random_building_variable_effect = yes
}
}
}
}
}
option = { # For my barony
name = court.8090.a
remove_treasury_or_gold = court_8090_half_building_cost_value
scope:my_barony.title_province = { add_random_building_construct_effect = yes }
stress_impact = {
architect = medium_stress_impact_loss # A good idea
lazy = medium_stress_impact_gain # Too much work
greedy = medium_stress_impact_gain # It will cost _how_ much?
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -1
ai_energy = 1
}
modifier = { #Weight up.
add = 15
has_trait = architect
}
modifier = { #Weight down for stress.
add = -15
has_trait = lazy
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
modifier = {
gold < court_8090_half_building_cost_value
factor = 0
}
}
}
option = { # For the church
name = court.8090.b
trigger = {
exists = scope:chaplain
exists = scope:temple_barony
}
add_piety = minor_piety_value
remove_treasury_or_gold = court_8090_half_building_cost_value
reverse_add_opinion = {
target = scope:chaplain
modifier = pleased_opinion
opinion = 10
}
scope:temple_barony.title_province = { add_random_building_construct_effect = yes }
stress_impact = {
architect = minor_stress_impact_loss # A good idea
cynical = medium_stress_impact_gain # God needs no house
greedy = medium_stress_impact_gain # It will cost _how_ much?
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 1
ai_boldness = 2
}
modifier = { #Weight up.
add = 5
has_trait = architect
}
modifier = { #Weight down for stress.
add = -15
has_trait = cynical
}
modifier = { #Weight down for stress.
add = -15
has_trait = greedy
}
modifier = {
gold < court_8090_half_building_cost_value
factor = 0
}
}
}
option = { # Architect can do better
name = court.8090.c
trigger = {
scope:architect = { has_court_position = royal_architect_court_position }
is_ai = no
}
flavor = court.8090.c.tt
remove_treasury_or_gold = hold_court_holding_cost_architect_cheaper_value
scope:empty_holding = {
begin_create_holding = {
type = castle_holding
refund_cost = {
gold = hold_court_holding_cost_architect_cheaper_value
}
}
}
stress_impact = {
greedy = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
fickle = medium_stress_impact_gain
}
ai_chance = {
base = 0
}
}
option = { # For the people (opt out)
name = court.8090.d
scope:my_barony.county = {
add_county_modifier = {
modifier = court_8090_commoners_modifier
years = 25
}
}
stress_impact = {
architect = medium_stress_impact_gain # But my castle!
callous = major_stress_impact_gain # The people? Pah
diligent = major_stress_impact_gain # I can do it
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 1
ai_energy = -1
}
modifier = { #Weight down for stress.
add = -15
has_trait = architect
}
modifier = { #Weight down for stress.
add = -30
has_trait = callous
}
modifier = { #Weight down for stress.
add = -30
has_trait = diligent
}
}
}
after = {
if = {
limit = {
exists = scope:my_barony
scope:my_barony.title_province = { has_variable = random_building_variable }
}
scope:my_barony.title_province = { remove_variable = random_building_variable }
}
if = {
limit = {
exists = scope:temple_barony
scope:temple_barony.title_province = { has_variable = random_building_variable }
}
scope:temple_barony.title_province = { remove_variable = random_building_variable }
}
scope:steward = {
clear_court_event_participation = yes
}
scope:architect = {
clear_court_event_participation = yes
if = {
limit = {
root = {
is_ai = yes
}
has_character_flag = created_character
}
silent_disappearance_effect = yes
}
}
}
}
#########################
# Royal Lapse #
# by Joe Parkin #
#########################
court.8140 = {
type = court_event
title = court.8140.t
desc = court.8140.desc
theme = court
cooldown = { years = 10 }
orphan = yes
court_scene = {
button_position_character = scope:vassal_1
roles = {
scope:vassal_1 = {
group = event_group
animation = throne_room_kneel_2
}
scope:vassal_2 = {
group = event_group
animation = throne_room_conversation_4
}
}
}
trigger = {
has_a_stress_coping_trait_trigger = yes
stress_level >= 1
OR = {
exists = cp:councillor_court_chaplain
exists = cp:councillor_steward
exists = court_position:seneschal_court_position
exists = court_position:travel_leader_court_position
}
OR = {
exists = cp:councillor_marshal
exists = court_position:master_of_hunt_court_position
exists = court_position:master_of_horse_court_position
exists = court_position:court_physician_court_position
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
has_two_stress_coping_traits_trigger = yes
}
modifier = {
factor = stress_level
stress_level >= 1
}
}
immediate = {
random_list = {
1 = {
cp:councillor_court_chaplain ?= { save_scope_as = vassal_1 } #prayer
}
1 = {
cp:councillor_steward ?= { save_scope_as = vassal_1 } #feast
}
2 = {
court_position:seneschal_court_position ?= { save_scope_as = vassal_1 } #feast
}
2 = {
court_position:travel_leader_court_position ?= { save_scope_as = vassal_1 } #travel
}
}
random_list = {
1 = {
cp:councillor_marshal ?= { save_scope_as = vassal_2 } #hunt
}
2 = {
court_position:master_of_hunt_court_position ?= { save_scope_as = vassal_2 } #hunt
}
2 = {
trigger = {
NOT = {
any_owned_story = {
type = story_cycle_martial_lifestyle_warhorse
}
}
}
court_position:master_of_horse_court_position ?= { save_scope_as = vassal_2 } #horse
}
2 = {
court_position:court_physician_court_position ?= { save_scope_as = vassal_2 } #fresh air
}
}
}
option = { # Engage in stress coping
name = court.8140.b
flavor = court.8140.b.flavor_tt
change_current_court_grandeur = medium_court_grandeur_loss
scope:vassal_1 = {
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -15
}
}
scope:vassal_2 = {
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -15
}
}
stress_impact = {
base = massive_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -1
ai_energy = -1
}
modifier = {
add = -30
has_trait = diligent
}
}
}
option = { # vassal_1 proposal
name = {
trigger = { #prayer
scope:vassal_1 = cp:councillor_court_chaplain
}
text = court.8140.c.1
}
name = {
trigger = { #feast
OR = {
scope:vassal_1 = cp:councillor_steward
scope:vassal_1 = court_position:seneschal_court_position
}
}
text = court.8140.c.2
}
name = {
trigger = { #travel
scope:vassal_1 = court_position:travel_leader_court_position
}
text = court.8140.c.3
}
flavor = court.8140.c.flavor_tt
if = { #prayer
limit = {
scope:vassal_1 = cp:councillor_court_chaplain
}
add_piety = major_piety_gain
custom_tooltip = court.8140.c.tt.2
add_character_flag = {
flag = court_event_discount_pilgrimage
years = 10
}
}
else_if = { #feats
limit = {
OR = {
scope:vassal_1 = cp:councillor_steward
scope:vassal_1 = court_position:seneschal_court_position
}
}
custom_tooltip = court.8140.c.tt
add_character_flag = {
flag = court_event_discount_feast
years = 5
}
}
else = { #travel
add_character_modifier = {
modifier = enjoy_the_travel_modifier
years = 25
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = 1
}
}
}
option = { # vassal_2 proposal
name = {
trigger = { #hunt
OR = {
scope:vassal_2 = cp:councillor_marshal
scope:vassal_2 = court_position:master_of_hunt_court_position
}
}
text = court.8140.d.1
}
name = {
trigger = { #horse
scope:vassal_2 = court_position:master_of_horse_court_position
}
text = court.8140.d.2
}
name = {
trigger = { #fresh air
scope:vassal_2 = court_position:court_physician_court_position
}
text = court.8140.d.3
}
flavor = court.8140.d.flavor_tt
if = { #hunt
limit = {
OR = {
scope:vassal_2 = cp:councillor_marshal
scope:vassal_2 = court_position:master_of_hunt_court_position
}
}
custom_tooltip = court.8140.d.tt
add_character_flag = {
flag = court_event_discount_hunt
years = 5
}
}
else_if = {
limit = {
scope:vassal_2 = court_position:master_of_horse_court_position
}
start_warhorse_story_cycle_effect = yes
}
else = {
add_character_modifier = {
modifier = healthy_strolls_modifier
years = 25
}
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = 1
}
}
}
option = { # Make an effort (opt out)
name = court.8140.a
flavor = court.8140.a.flavor_tt
change_current_court_grandeur = medium_court_grandeur_gain
stress_impact = {
base = minor_stress_impact_gain
}
ai_chance = {
base = 0
ai_value_modifier = {
ai_rationality = 0.5
}
modifier = {
add = -15
has_trait = fickle
}
modifier = {
add = -15
has_trait = callous
}
modifier = {
add = -15
has_trait = arbitrary
}
modifier = {
add = -15
has_trait = lazy
}
}
}
after = {
scope:vassal_1 = {
clear_court_event_participation = yes
}
scope:vassal_2 = {
clear_court_event_participation = yes
}
}
}
#########################
# Prandial Excess #
# by Joe Parkin #
#########################
scripted_trigger court_8150_foodie_trigger = {
NOR = {
has_trait = temperate
has_trait = inappetetic
}
}
scripted_trigger court_8150_vassal_trigger = {
is_available_ai_adult = yes
court_8150_foodie_trigger = yes
trigger_if = {
limit = { exists = scope:chaplain }
this != scope:chaplain
}
trigger_if = {
limit = { exists = scope:food_taster }
this != scope:food_taster
}
trigger_if = {
limit = { exists = scope:high_almoner }
this != scope:high_almoner
}
trigger_if = {
limit = { exists = scope:vassal_1 }
this != scope:vassal_1
}
trigger_if = {
limit = { exists = scope:vassal_2 }
this != scope:vassal_2
}
}
court.8150 = {
type = court_event
title = court.8150.t
desc = {
desc = court.8150.desc.intro
triggered_desc = {
trigger = { exists = scope:food_taster }
desc = court.8150.desc.taster
}
desc = court.8150.desc.body
first_valid = {
triggered_desc = {
trigger = {
exists = scope:high_almoner
exists = scope:chaplain
}
desc = court.8150.desc.almoner_chaplain
}
triggered_desc = {
trigger = { exists = scope:chaplain }
desc = court.8150.desc.chaplain
}
triggered_desc = {
trigger = { exists = scope:high_almoner }
desc = court.8150.desc.almoner
}
}
}
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:vassal_1
roles = {
scope:vassal_1 = {
group = event_group
animation = throne_room_conversation_1
}
scope:vassal_2 = {
group = event_group
animation = throne_room_conversation_2
}
scope:vassal_3 = {
group = event_group
animation = throne_room_conversation_3
}
}
}
trigger = {
NOT = {
faith = { has_doctrine = tenet_ritual_celebrations }
}
amenity_level = { target = court_food_quality value >= high_amenity_level }
OR = {
AND = {
is_married = yes
primary_spouse = {
court_8150_vassal_trigger = yes
has_court_event_flag = no
}
any_courtier_or_guest = {
count >= 2
court_8150_foodie_trigger = yes
has_court_event_flag = no
}
}
any_courtier_or_guest = {
count >= 3
court_8150_foodie_trigger = yes
has_court_event_flag = no
}
}
}
weight_multiplier = {
base = 1
modifier = {
add = 1
amenity_level = { target = court_food_quality value > very_high_amenity_level }
}
modifier = {
add = 1
employs_court_position = high_almoner_court_position
}
modifier = {
add = 1
employs_court_position = food_taster_court_position
}
}
immediate = {
if = {
limit = {
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
is_available_ai_adult = yes
NOR = {
has_trait = gluttonous
faith = { has_doctrine = tenet_hedonistic }
faith = { has_doctrine = tenet_carnal_exaltation }
}
}
}
cp:councillor_court_chaplain = { save_scope_as = chaplain }
}
if = {
limit = {
employs_court_position = high_almoner_court_position
any_court_position_holder = {
type = high_almoner_court_position
is_available_ai_adult = yes
NOR = {
has_trait = gluttonous
faith = { has_doctrine = tenet_hedonistic }
faith = { has_doctrine = tenet_carnal_exaltation }
}
trigger_if = {
limit = { exists = scope:chaplain }
this != scope:chaplain
}
}
}
random_court_position_holder = {
type = high_almoner_court_position
limit = {
is_available_healthy_ai_adult = yes
NOR = {
has_trait = gluttonous
faith = { has_doctrine = tenet_hedonistic }
faith = { has_doctrine = tenet_carnal_exaltation }
}
trigger_if = {
limit = { exists = scope:chaplain }
this != scope:chaplain
}
}
save_scope_as = high_almoner
}
}
if = {
limit = {
employs_court_position = food_taster_court_position
any_court_position_holder = {
type = food_taster_court_position
is_available_healthy_ai_adult = yes
}
}
random_court_position_holder = {
type = food_taster_court_position
limit = { is_available_ai_adult = yes }
save_scope_as = food_taster
hidden_effect = { change_current_weight = 25 }
}
}
if = {
limit = {
is_married = yes
primary_spouse = { court_8150_vassal_trigger = yes }
}
primary_spouse = { save_scope_as = vassal_1 }
}
else = {
random_courtier_or_guest = {
limit = { court_8150_vassal_trigger = yes }
weight = {
modifier = {
factor = 2
has_any_court_position = yes
}
modifier = {
factor = 10
has_trait = gluttonous
}
modifier = {
factor = 5
has_trait = greedy
}
modifier = {
factor = 2
is_courtier = yes
}
}
save_scope_as = vassal_1
court_event_character_flag_effect = yes
hidden_effect = { change_current_weight = 15 }
}
}
random_courtier_or_guest = {
limit = { court_8150_vassal_trigger = yes }
weight = {
modifier = {
factor = 2
has_any_court_position = yes
}
modifier = {
factor = 10
has_trait = gluttonous
}
modifier = {
factor = 5
has_trait = greedy
}
modifier = {
factor = 2
is_courtier = yes
}
}
save_scope_as = vassal_2
court_event_character_flag_effect = yes
hidden_effect = { change_current_weight = 15 }
}
random_courtier_or_guest = {
limit = { court_8150_vassal_trigger = yes }
weight = {
modifier = {
factor = 2
has_any_court_position = yes
}
modifier = {
factor = 10
has_trait = gluttonous
}
modifier = {
factor = 5
has_trait = greedy
}
modifier = {
factor = 2
is_courtier = yes
}
}
save_scope_as = vassal_3
court_event_character_flag_effect = yes
hidden_effect = { change_current_weight = 15 }
}
hidden_effect = {
random_list = {
2 = {
trigger = { exists = scope:vassal_1 }
scope:vassal_1 = { save_scope_as = demander }
}
2 = {
trigger = { exists = scope:vassal_2 }
scope:vassal_2 = { save_scope_as = demander }
}
2 = {
trigger = { exists = scope:vassal_3 }
scope:vassal_3 = { save_scope_as = demander }
}
}
}
}
option = { # Chow down
name = court.8150.a
change_current_court_grandeur = major_court_grandeur_gain
if = {
limit = {
exists = scope:food_taster
}
custom_tooltip = court.8150.a.tt
scope:food_taster = {
add_character_flag = food_taster_mettle_tested
}
}
if = {
limit = { exists = scope:chaplain }
reverse_add_opinion = {
modifier = disgusted_opinion
target = scope:chaplain
opinion = -10
}
}
if = {
limit = { exists = scope:high_almoner }
reverse_add_opinion = {
modifier = disgusted_opinion
target = scope:high_almoner
opinion = -10
}
}
hidden_effect = { change_current_weight = 20 }
stress_impact = {
lifestyle_reveler = medium_stress_impact_loss
comfort_eater = medium_stress_impact_loss
gluttonous = minor_stress_impact_loss
temperate = major_stress_impact_gain
inappetetic = massive_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = 1
ai_energy = 1
}
modifier = { #Weight up for stress.
add = 50
has_trait = lifestyle_reveler
}
modifier = { #Weight up for stress.
add = 30
has_trait = comfort_eater
}
modifier = { #Weight up for stress.
add = 15
has_trait = gluttonous
}
modifier = { #Weight down for stress.
add = -15
has_trait = temperate
}
modifier = { #Weight down for stress.
add = -30
has_trait = inappetetic
}
}
}
option = { # Stop foodies
name = court.8150.c
add_legitimacy = miniscule_legitimacy_gain
if = {
limit = {
NOT = {
faith = { has_doctrine = tenet_hedonistic }
}
}
add_piety = medium_piety_gain
}
if = {
limit = { exists = scope:chaplain }
reverse_add_opinion = {
modifier = pleased_opinion
target = scope:chaplain
opinion = 10
}
}
if = {
limit = {
exists = scope:high_almoner
}
custom_tooltip = court.8150.b.tt
scope:high_almoner = {
add_character_flag = plenty_to_donate_almoner
add_opinion = {
modifier = pleased_opinion
target = root
opinion = 10
}
}
}
stress_impact = {
gluttonous = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
profligate = medium_stress_impact_gain
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -1
ai_compassion = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = gluttonous
}
modifier = { #Weight down for stress.
add = -15
has_trait = arrogant
}
modifier = { #Weight down for stress.
add = -15
has_trait = profligate
}
modifier = { #Weight down for stress.
add = -15
has_trait = cynical
}
modifier = {
add = 50
has_trait = temperate
}
}
}
after = {
scope:vassal_1 = {
clear_court_event_participation = yes
}
if = {
limit = {
exists = scope:vassal_2
}
scope:vassal_2 = {
clear_court_event_participation = yes
}
}
if = {
limit = {
exists = scope:vassal_3
}
scope:vassal_3 = {
clear_court_event_participation = yes
}
}
}
}
#########################
# Foremost Knight #
# by Joe Parkin #
#########################
scripted_trigger court_8160_knight_trigger = {
is_landed = no
is_available_ai_adult = yes
can_start_single_combat_trigger = yes
NOR = {
has_trait = humble
has_trait = craven
has_trait = shy
}
}
court.8160 = {
type = court_event
title = court.8160.t
desc = {
desc = court.8160.desc.intro
}
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:knight_1
roles = {
scope:knight_1 = {
group = event_group
animation = rage
}
scope:knight_2 = {
group = event_group
animation = anger
}
}
}
trigger = {
any_knight = {
court_8160_knight_trigger = yes
has_court_event_flag = no
save_temporary_scope_as = temp_knight
}
any_knight = {
court_8160_knight_trigger = yes
has_court_event_flag = no
NOR = {
this = scope:temp_knight
is_close_or_extended_family_of = scope:temp_knight
has_relation_friend = scope:temp_knight
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
every_knight = {
limit = { court_8160_knight_trigger = yes }
add_to_list = knight_list
}
ordered_in_list = {
list = knight_list
order_by = prowess
save_scope_as = knight_1
court_event_character_flag_effect = yes
assign_quirk_effect = yes
}
ordered_in_list = {
list = knight_list
limit = {
NOR = {
this = scope:knight_1
is_close_or_extended_family_of = scope:knight_1
has_relation_friend = scope:knight_1
}
court_8160_knight_trigger = yes
}
order_by = prowess
save_scope_as = knight_2
court_event_character_flag_effect = yes
assign_quirk_effect = yes
if = {
limit = {
NOT = { has_relation_rival = scope:knight_1 }
}
set_relation_rival = {
target = scope:knight_1
reason = rival_age_old_rivalry
}
}
}
}
option = { # employ them both
name = court.8160.a
trigger = {
OR = {
any_court_position_holder = {
type = bodyguard_court_position
count < 1
}
AND = {
any_court_position_holder = {
type = bodyguard_court_position
count < 2
}
NOT = { employs_court_position = champion_court_position }
}
AND = {
any_court_position_holder = {
type = bodyguard_court_position
count < 2
}
NOT = { employs_court_position = akolouthos_court_position }
can_employ_court_position_type = akolouthos_court_position
}
}
}
court_position_grant_effect = { POS = bodyguard CANDIDATE = scope:knight_1 EMPLOYER = root }
if = {
limit = {
any_court_position_holder = {
type = bodyguard_court_position
count = 1
}
}
court_position_grant_effect = { POS = bodyguard CANDIDATE = scope:knight_2 EMPLOYER = root }
}
else_if = {
limit = {
NOT = { employs_court_position = champion_court_position }
}
court_position_grant_effect = { POS = champion CANDIDATE = scope:knight_2 EMPLOYER = root }
}
else = {
court_position_grant_effect = { POS = akolouthos CANDIDATE = scope:knight_2 EMPLOYER = root }
}
custom_tooltip = court.8160.a.tt
scope:knight_1 = { add_character_flag = competing_knight_position }
scope:knight_2 = { add_character_flag = competing_knight_position }
stress_impact = {
wrathful = medium_stress_impact_gain
fickle = medium_stress_impact_gain
arbitrary = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 0.5
ai_sociability = 0.5
}
}
}
option = { # Make it a safe duel
name = court.8160.b
change_current_court_grandeur = minor_court_grandeur_gain
show_as_tooltip = {
random_list = {
2 = {
modifier = { factor = scope:knight_1.prowess }
show_chance = no
desc = court.8160.a.tt_knight_1
scope:knight_1 = { add_prestige = minor_prestige_gain }
scope:knight_2 = {
increase_wounds_effect = { REASON = duel }
}
}
2 = {
modifier = { factor = scope:knight_2.prowess }
show_chance = no
desc = court.8160.a.tt_knight_2
scope:knight_2 = { add_prestige = minor_prestige_gain }
scope:knight_1 = {
increase_wounds_effect = { REASON = duel }
}
}
}
}
configure_start_single_combat_effect = {
SC_INITIATOR = scope:knight_2
SC_ATTACKER = scope:knight_2
SC_DEFENDER = scope:knight_1
FATALITY = no
FIXED = no
LOCALE = throne_room
OUTPUT_EVENT = court.8162
INVALIDATION_EVENT = fp1_tbc.0102
}
stress_impact = {
craven = medium_stress_impact_gain
deceitful = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 1
ai_honor = 1
}
}
}
option = { # Do not allow duel
name = court.8160.d
add_character_modifier = {
modifier = fostering_competitiveness_modifier
years = 10
}
reverse_add_opinion = {
target = scope:knight_1
modifier = disappointed_opinion
opinion = -5
}
reverse_add_opinion = {
target = scope:knight_2
modifier = disappointed_opinion
opinion = -5
}
stress_impact = {
arbitrary = medium_stress_impact_gain
wrathful = medium_stress_impact_gain
vengeful = medium_stress_impact_gain
fickle = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_honor = 0.5
ai_rationality = 1
}
modifier = { #Weight down for stress.
add = -15
has_trait = arbitrary
}
modifier = { #Weight down for stress.
add = -15
has_trait = wrathful
}
modifier = { #Weight down for stress.
add = -15
has_trait = vengeful
}
}
}
after = {
scope:knight_1 = {
clear_court_event_participation = yes
}
scope:knight_2 = {
clear_court_event_participation = yes
}
}
}
court.8162 = {
hidden = yes
immediate = {
scope:sc_victor.liege = {
send_interface_toast = {
title = hold_court.8031.t
left_icon = scope:sc_victor
right_icon = scope:sc_loser
scope:sc_victor = {
add_prestige = minor_prestige_gain
custom_tooltip = court.8162.tt
add_character_flag = best_knight_position
}
}
}
}
}
#########################
# Pariah of Court #
# by Joe Parkin #
#########################
scripted_trigger kinslayer_crime_trigger = {
AND = {
liege.faith = {
NOR = {
has_doctrine = doctrine_kinslaying_accepted
has_doctrine = doctrine_kinslaying_shunned
}
}
OR = {
has_trait = kinslayer_1
has_trait = kinslayer_2
has_trait = kinslayer_3
}
}
}
scripted_trigger cannibal_crime_trigger = {
AND = {
NOT = {
liege.faith = { has_doctrine = tenet_ritual_cannibalism }
}
has_trait = cannibal
}
}
scripted_trigger witch_crime_trigger = {
AND = {
liege.faith = { has_doctrine_parameter = witchcraft_illegal }
has_trait = witch
}
}
scripted_trigger deviant_crime_trigger = {
AND = {
liege.faith = { has_doctrine_parameter = deviancy_illegal }
has_trait = deviant
}
}
scripted_trigger sodomite_crime_trigger = {
AND = {
liege.faith = { has_doctrine = doctrine_homosexuality_crime }
is_male = yes
has_trait = sodomite
}
}
scripted_trigger incest_crime_trigger = {
AND = {
liege.faith = {
NOT = { has_doctrine = doctrine_consanguinity_unrestricted }
}
has_trait = incestuous
}
}
scripted_trigger adultery_crime_trigger = {
AND = {
OR = {
AND = {
liege.faith = { has_doctrine = doctrine_adultery_women_crime }
is_female = yes
}
AND = {
liege.faith = { has_doctrine = doctrine_adultery_men_crime }
is_male = yes
}
}
OR = {
has_trait = adulterer
has_trait = fornicator
}
}
}
scripted_trigger excommunicated_crime_trigger = {
AND = {
faith = liege.faith
has_trait = excommunicated
}
}
scripted_trigger faith_crime_trigger = {
AND = {
faith = {
faith_hostility_level = {
target = ROOT.faith
value >= faith_hostile_level
}
}
}
}
scripted_trigger is_illegal_criminal_trigger = {
exists = liege.faith
OR = {
kinslayer_crime_trigger = yes
cannibal_crime_trigger = yes
witch_crime_trigger = yes
deviant_crime_trigger = yes
sodomite_crime_trigger = yes
incest_crime_trigger = yes
adultery_crime_trigger = yes
excommunicated_crime_trigger = yes
faith_crime_trigger = yes
has_trait = denounced
}
}
scripted_trigger court_8170_criminal_trigger = {
is_imprisoned = no
is_landed = no
is_illegal_criminal_trigger = yes
NOR = {
has_relation_lover = root
has_relation_soulmate = root
}
}
scripted_effect court_8170_torture_etc_end_effect = {
if = {
limit = { has_relation_friend = scope:criminal }
stress_impact = { base = major_stress_impact_gain }
}
if = {
limit = { is_close_family_of = scope:criminal }
stress_impact = { base = medium_stress_impact_gain }
}
if = {
limit = { is_extended_family_of = scope:criminal }
stress_impact = { base = minor_stress_impact_gain }
}
if = {
limit = { has_relation_rival = scope:criminal }
stress_impact = { base = medium_stress_impact_loss }
}
stress_impact = {
compassionate = major_stress_impact_gain
}
}
scripted_effect court_8170_torture_etc_setup_effect = {
change_current_court_grandeur = medium_court_grandeur_gain
add_legitimacy = miniscule_legitimacy_gain
add_character_modifier = {
modifier = fast_hard_justice_modifier
years = 10
}
rightfully_imprison_character_effect = {
TARGET = scope:criminal
IMPRISONER = root
}
#Needed for the scripted effects below
root = { save_scope_as = actor }
scope:criminal = { save_scope_as = recipient }
}
court.8170 = {
type = court_event
title = court.8170.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:criminal = {
OR = {
kinslayer_crime_trigger = yes
cannibal_crime_trigger = yes
witch_crime_trigger = yes
}
}
}
desc = court.8170.desc.intro_scary
}
triggered_desc = {
trigger = {
scope:criminal = {
OR = {
deviant_crime_trigger = yes
sodomite_crime_trigger = yes
incest_crime_trigger = yes
adultery_crime_trigger = yes
}
}
}
desc = court.8170.desc.intro_sordid
}
triggered_desc = {
trigger = {
scope:criminal = {
OR = {
excommunicated_crime_trigger = yes
faith_crime_trigger = yes
}
}
}
desc = court.8170.desc.intro_religious
}
desc = court.8170.desc.intro_fallback
}
desc = court.8170.desc.body
first_valid = {
triggered_desc = {
trigger = {
scope:criminal = { is_close_or_extended_family_of = ROOT }
}
desc = court.8170.desc.family
}
triggered_desc = {
trigger = {
scope:criminal = { is_pool_guest = yes }
}
desc = court.8170.desc.guest
}
desc = court.8170.desc.fallback
}
}
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:criminal
roles = {
scope:criminal = {
group = event_group
animation = shame
}
}
}
trigger = {
NOT = { court_8170_criminal_trigger = yes }
any_courtier_or_guest = {
court_8170_criminal_trigger = yes
has_court_event_flag = no
}
}
weight_multiplier = {
base = 1
modifier = {
any_courtier_or_guest = {
is_close_or_extended_family_of = root
court_8170_criminal_trigger = yes
}
add = 1
}
modifier = {
any_courtier_or_guest = {
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
court_8170_criminal_trigger = yes
}
add = 0.5
}
}
immediate = {
random_courtier_or_guest = {
limit = {
is_close_or_extended_family_of = root
court_8170_criminal_trigger = yes
}
alternative_limit = {
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
court_8170_criminal_trigger = yes
}
alternative_limit = {
is_courtier = yes
court_8170_criminal_trigger = yes
}
alternative_limit = { court_8170_criminal_trigger = yes }
save_scope_as = criminal
court_event_character_flag_effect = yes
}
}
option = { # Let them stay: dark deals to protect you
name = {
text = court.8170.a.family
trigger = {
scope:criminal = { is_close_or_extended_family_of = root }
}
}
name = {
text = court.8170.a.other
trigger = {
NOT = {
scope:criminal = { is_close_or_extended_family_of = root }
}
}
}
change_current_court_grandeur = medium_court_grandeur_loss
add_character_modifier = {
modifier = harbors_criminals_modifier
years = 10
}
reverse_add_opinion = {
target = scope:criminal
modifier = grateful_opinion
opinion = 10
}
stress_impact = {
just = major_stress_impact_gain
vengeful = medium_stress_impact_gain
diligent = medium_stress_impact_gain
honest = medium_stress_impact_gain
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = just
add = -75
}
modifier = {
has_trait = diligent
add = -50
}
modifier = {
has_trait = honest
add = -50
}
ai_value_modifier = {
ai_zeal = -0.5
ai_vengefulness = -1
}
}
}
option = { # Big deal of punishing them: blind
name = court.8170.c1
trigger = {
scope:criminal = { NOT = { has_trait = blind } }
culture = { has_cultural_parameter = can_blind_prisoners }
}
court_8170_torture_etc_setup_effect = yes
blind_recipient_effect = yes
# House Feud
add_character_flag = house_feud_blinding_flag
house_feud_torture_event_effect = yes
court_8170_torture_etc_end_effect = yes
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -1
ai_vengefulness = 1
}
}
}
option = { #castrate
name = court.8170.c2
trigger = {
scope:criminal = {
NOT = { has_trait = eunuch }
is_male = yes
culture = {
has_cultural_parameter = can_castrate_prisoners
}
}
}
court_8170_torture_etc_setup_effect = yes
castrate_recipient_effect = yes
# House Feud
add_character_flag = house_feud_castration_flag
house_feud_torture_event_effect = yes
court_8170_torture_etc_end_effect = yes
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -1
ai_vengefulness = 1
}
}
}
option = { #execute
name = court.8170.c3
court_8170_torture_etc_setup_effect = yes
execute_prisoner_effect = {
VICTIM = scope:recipient
EXECUTIONER = scope:actor
}
if = {
limit = {
scope:actor.capital_county = {
NOT = { has_county_modifier = held_public_execution_modifier }
}
}
scope:actor = {
capital_county = {
add_county_modifier = {
modifier = held_public_execution_modifier
days = 1850
}
}
custom_tooltip = public_execution_control_effect
hidden_effect = {
every_held_title = {
title_tier = county
change_county_control = executioner_control_value
}
}
}
}
court_8170_torture_etc_end_effect = yes
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = -1
ai_vengefulness = 1
}
}
}
option = { # Kick out - opt out
name = court.8170.d
change_current_court_grandeur = minor_court_grandeur_gain
if = {
limit = { has_relation_friend = scope:criminal }
stress_impact = { base = medium_stress_impact_gain }
}
if = {
limit = { is_close_family_of = scope:criminal }
stress_impact = { base = minor_stress_impact_gain }
}
if = {
limit = { is_extended_family_of = scope:criminal }
stress_impact = { base = miniscule_stress_impact_gain }
}
if = {
limit = { has_relation_rival = scope:criminal }
stress_impact = { base = medium_stress_impact_loss }
}
stress_impact = {
compassionate = minor_stress_impact_gain
}
hidden_effect = {
scope:criminal = { select_and_move_to_pool_effect = yes }
}
show_as_tooltip = { remove_courtier_or_guest = scope:criminal }
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = -1
}
}
}
after = {
scope:criminal ?= {
clear_court_event_participation = yes
}
}
}
#########################
# Secrets and Lies #
# by Joe Parkin #
#########################
scripted_trigger court_8180_secret_trigger = {
exists = secret_owner
is_criminal_for = secret_owner
any_secret_knower = { this = root }
NOT = { secret_target ?= root }
}
scripted_trigger court_8180_relation_trigger = {
is_available_ai_adult = yes
any_secret = { court_8180_secret_trigger = yes }
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
}
court.8180 = {
type = court_event
title = court.8180.t
desc = court.8180.desc.intro
theme = court
cooldown = { years = 10 }
court_scene = {
button_position_character = scope:criminal
roles = {
scope:criminal = {
group = event_group
animation = worry
}
}
}
trigger = {
any_courtier_or_guest = {
court_8180_relation_trigger = yes
has_court_event_flag = no
}
}
weight_multiplier = {
base = 1
modifier = {
cp:councillor_spymaster.intrigue >= 15
add = 1
}
modifier = {
cp:councillor_spymaster ?= { is_performing_council_task = task_find_secrets }
add = 1
}
}
immediate = {
random_courtier_or_guest = {
limit = {
court_8180_relation_trigger = yes
has_court_event_flag = no
}
save_scope_as = criminal
court_event_character_flag_effect = yes
random_secret = {
limit = { court_8180_secret_trigger = yes }
save_scope_as = criminal_secret
}
}
save_scope_as = knower # custom_loc
save_scope_as = actor # blackmail interaction
scope:criminal = { save_scope_as = recipient } # blackmail interaction
scope:criminal_secret = { save_scope_as = target } # blackmail interaction
}
option = { # Blackmail
name = court.8180.b
trigger = {
NOT = { has_hook = scope:criminal }
}
blackmail_interaction_effect = yes
scope:criminal = {
add_character_modifier = {
modifier = liege_scrutiny_modifier
years = 20
}
}
stress_impact = {
forgiving = major_stress_impact_gain
honest = medium_stress_impact_gain
gregarious = medium_stress_impact_gain
lazy = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
ai_compassion = -0.5
}
}
}
option = { # Punish
name = court.8180.c
change_current_court_grandeur = minor_court_grandeur_loss
scope:criminal_secret = { expose_secret = root }
hidden_effect = {
rightfully_imprison_character_effect = {
TARGET = scope:criminal
IMPRISONER = root
}
}
show_as_tooltip = {
imprison = { target = scope:criminal type = house_arrest }
}
add_character_modifier = {
modifier = court_without_secrets_modifier
years = 15
}
custom_tooltip = court.6002.a.tt2
stress_impact = {
arbitrary = minor_stress_impact_gain
cynical = minor_stress_impact_gain
deceitful = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 0.5
ai_zeal = 0.5
}
}
}
option = { # Do nothing - opt out
name = court.8180.e
stress_impact = {
base = minor_stress_impact_loss
lazy = minor_stress_impact_loss
compassionate = minor_stress_impact_loss
vengeful = medium_stress_impact_gain
zealous = medium_stress_impact_gain
diligent = medium_stress_impact_gain
deceitful = major_stress_impact_gain
}
ai_chance = {
base = 75
}
}
after = {
scope:criminal = {
clear_court_event_participation = yes
}
}
}
##################################################
# Oltner
##################################################
# 9000 - 9009 A Knight's Declaration
# 9100 - 9109 Epicurean Entertainment
# 9300 - 9309 Overt Overindulgence
# 9400 - 9409 Pie-based Shenanigans
# 9500 - 9509 A Little Language
##################################################
#########################
# A Knight's Declaration
# by Alexander Oltner
#########################
scripted_trigger suitably_flirty_knight = {
is_available_adult = yes
is_courtier_of = root
is_attracted_to_gender_of = root.primary_spouse
can_start_scheme = {
type = courting
target_character = root.primary_spouse
}
NOR = {
has_trait = chaste
has_trait = celibate
has_relation_lover = root.primary_spouse
}
would_attempt_to_seduce_married_trigger = yes
would_attempt_to_seduce_trigger = { CHARACTER = root.primary_spouse }
might_cheat_on_every_partner_trigger = yes
}
# A Knight's Declaration
court.9000 = {
type = court_event
title = court.9000.t
desc = court.9000.desc
theme = court
court_scene = {
button_position_character = scope:flirty_knight
roles = {
scope:flirty_knight = {
group = event_group
animation = flirtation_left
}
scope:flirty_spouse = {
group = event_group
animation = flirtation
}
}
}
cooldown = {
years = 10
}
trigger = {
is_available_adult = yes
is_married = yes
any_knight = {
suitably_flirty_knight = yes
has_court_event_flag = no
save_temporary_scope_as = attraction_check
}
primary_spouse = {
is_available_adult = yes
has_court_event_flag = no
is_courtier_of = root
is_attracted_to_gender_of = scope:attraction_check
NOR = {
has_trait = chaste
has_trait = celibate
has_relation_lover = scope:attraction_check
}
}
}
weight_multiplier = {
base = 1
modifier = {
root.primary_spouse = { might_cheat_on_every_partner_trigger = yes }
add = 1
}
modifier = {
culture = { has_cultural_tradition = tradition_chivalry }
add = 2
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
primary_spouse = {
save_scope_as = flirty_spouse
court_event_character_flag_effect = yes
}
random_knight = {
limit = {
suitably_flirty_knight = yes
}
weight = {
base = 1
modifier = {
add = 10
OR = {
has_trait = lustful
has_trait = seducer
}
}
modifier = {
add = 10
has_trait = lifestyle_poet
}
}
hidden_effect = {
if = {
limit = {
NOT = {
has_trait = lifestyle_poet
}
}
add_trait = lifestyle_poet
}
}
save_scope_as = flirty_knight
court_event_character_flag_effect = yes
# Set up a subject gender.
select_poem_subject_gender_effect = {
SUBJECT = flag:specific
SUBJECT_TARGET = scope:flirty_spouse
}
# Roll for theme.
select_poem_theme_romance_effect = yes
}
}
option = { # Stop this at once!
name = court.9000.b
custom_tooltip = court_9000_b_tt
add_prestige = minor_prestige_loss
add_character_modifier = {
modifier = detractor_of_courtly_love_modifier
years = 20
}
custom_tooltip = court_9000.b.tt
scope:flirty_spouse = {
add_opinion = {
target = root
modifier = rude_opinion
opinion = -20
}
}
scope:flirty_knight = {
hidden_effect = {
random = {
chance = 35
start_scheme = {
type = courting
target_character = scope:flirty_spouse
}
}
}
}
stress_impact = {
trusting = massive_stress_impact_gain
forgiving = medium_stress_impact_gain
chaste = medium_stress_impact_gain
calm = medium_stress_impact_gain
shy = medium_stress_impact_gain
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.1
OR = {
has_trait = trusting
has_trait = forgiving
}
}
}
}
option = { # Let it go on!
name = court.9000.c
custom_tooltip = court_9000_c_tt
change_current_court_grandeur = major_court_grandeur_gain
add_character_modifier = {
modifier = promoter_of_courtly_love_modifier
years = 20
}
custom_tooltip = court_9000.c.tt
scope:flirty_knight = {
create_inspiration = book_inspiration
hidden_effect = {
start_scheme = {
type = courting
target_character = scope:flirty_spouse
}
}
}
stress_impact = {
paranoid = massive_stress_impact_gain
arrogant = major_stress_impact_gain
vengeful = medium_stress_impact_gain
lustful = medium_stress_impact_gain
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.1
OR = {
has_trait = paranoid
has_trait = arrogant
has_trait = vengeful
}
}
}
}
after = {
scope:flirty_knight = {
clear_court_event_participation = yes
}
scope:flirty_spouse = {
clear_court_event_participation = yes
}
}
}
# A Knight's Dedication
court.9001 = {
type = court_event
title = court.9001.t
desc = court.9001.desc
theme = court
court_scene = {
button_position_character = scope:flirty_knight
roles = {
scope:flirty_knight = {
group = event_group
animation = flirtation_left
}
scope:flirty_spouse = {
group = event_group
animation = flirtation
}
}
}
cooldown = {
years = 30
}
trigger = {
is_available_adult = yes
is_married = yes
primary_spouse = {
is_available_adult = yes
has_court_event_flag = no
is_courtier_of = root
NOT = {
has_relation_soulmate = root
}
might_cheat_on_every_partner_trigger = yes
any_targeting_scheme = {
scheme_owner = {
is_available_adult = yes
is_courtier_of = root
has_court_event_flag = no
save_temporary_scope_as = attraction_check
}
scheme_type = courting
}
is_attracted_to_gender_of = scope:attraction_check
}
}
weight_multiplier = {
base = 1
modifier = {
culture = { has_cultural_tradition = tradition_chivalry }
add = 2
}
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_warlike }
}
immediate = {
save_scope_as = root_for_loc
primary_spouse = {
save_scope_as = flirty_spouse
court_event_character_flag_effect = yes
random_targeting_scheme = {
limit = {
scheme_owner = {
is_available_adult = yes
is_courtier_of = root
scope:flirty_spouse = {
is_attracted_to_gender_of = prev
}
}
scheme_type = courting
}
scheme_owner = {
save_scope_as = flirty_knight
court_event_character_flag_effect = yes
}
}
}
}
option = { # Duel them
name = court.9001.a
trigger = {
can_start_single_combat_trigger = yes
scope:flirty_knight = {
can_be_warrior_trigger = { ARMY_OWNER = root }
can_start_single_combat_trigger = yes
}
}
custom_tooltip = court.9001.a.tt
configure_start_single_combat_effect = {
SC_INITIATOR = root
SC_ATTACKER = root
SC_DEFENDER = scope:flirty_knight
FATALITY = no
FIXED = no
LOCALE = throne_room
OUTPUT_EVENT = court.9003
INVALIDATION_EVENT = court.9002
}
add_prestige = medium_prestige_gain
ai_chance = {
base = 25
modifier = {
factor = 0.1
OR = {
has_trait = trusting
has_trait = forgiving
has_trait = chaste
}
}
}
}
option = { # Banish the knight
name = court.9001.b
add_gold = 5
scope:flirty_knight = {
banish_effect = { BANISHER = root }
hidden_effect = {
if = {
limit = {
any_scheme = {
type = courting
scheme_target_character = scope:flirty_spouse
}
}
random_scheme = {
type = courting
limit = {
scheme_target_character = scope:flirty_spouse
}
end_scheme = yes
}
}
}
}
if = {
limit = {
NOR = {
has_character_modifier = detractor_of_courtly_love_modifier
has_character_modifier = promoter_of_courtly_love_modifier
}
}
add_character_modifier = {
modifier = detractor_of_courtly_love_modifier
years = 20
}
custom_tooltip = court_9000.b.tt
}
else = {
add_hook = {
target = scope:flirty_spouse
type = loyalty_hook
}
}
scope:flirty_spouse = {
progress_towards_rival_effect = {
CHARACTER = root
REASON = rival_banished_knight
OPINION = 0
}
add_opinion = {
modifier = how_could_you_opinion
target = root
}
}
stress_impact = {
trusting = massive_stress_impact_gain
forgiving = medium_stress_impact_gain
chaste = medium_stress_impact_gain
calm = medium_stress_impact_gain
shy = medium_stress_impact_gain
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.1
OR = {
has_trait = trusting
has_trait = forgiving
has_trait = chaste
}
}
}
}
option = { # Let it go on!
name = court.9001.c
change_current_court_grandeur = major_court_grandeur_gain
if = {
limit = {
NOR = {
has_character_modifier = promoter_of_courtly_love_modifier
has_character_modifier = detractor_of_courtly_love_modifier
}
}
add_character_modifier = {
modifier = promoter_of_courtly_love_modifier
years = 20
}
custom_tooltip = court_9000.c.tt
}
else = { add_prestige = medium_prestige_gain }
stress_impact = {
paranoid = massive_stress_impact_gain
arrogant = major_stress_impact_gain
vengeful = medium_stress_impact_gain
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.1
OR = {
has_trait = paranoid
has_trait = arrogant
has_trait = vengeful
}
}
}
}
after = {
scope:flirty_knight = {
clear_court_event_participation = yes
}
scope:flirty_spouse = {
clear_court_event_participation = yes
}
}
}
# Invalidated
court.9002 = {
hidden = yes
immediate = {
# Inform both parties that the duel has invalidated.
scope:root_for_loc = {
send_interface_toast = {
title = court.9002.trigger_failure
left_icon = scope:flirty_knight
}
}
}
}
# Outcome
court.9003 = {
hidden = yes
immediate = {
if = {
limit = {
scope:root_for_loc = scope:sc_victor
}
trigger_event = { id = court.9004 }
}
else = {
trigger_event = { id = court.9005 }
}
}
}
# Won
court.9004 = {
type = character_event
title = court.9004.t
desc = court.9004.desc
theme = education
left_portrait = {
character = scope:flirty_spouse
animation = dismissal
}
right_portrait = {
character = scope:flirty_knight
animation = pain
}
trigger = {
}
immediate = {
}
option = { # Leave my spouse alone!
name = court.9004.a
scope:flirty_knight = {
if = {
limit = {
any_scheme = {
type = courting
scheme_target_character = scope:flirty_spouse
}
}
random_scheme = {
type = courting
limit = {
scheme_target_character = scope:flirty_spouse
}
end_scheme = yes
}
}
if = {
limit = {
has_relation_lover = scope:flirty_spouse
}
remove_relation_lover = scope:flirty_spouse
}
if = {
limit = {
has_relation_potential_lover = scope:flirty_spouse
}
remove_relation_potential_lover = scope:flirty_spouse
}
if = {
limit = {
has_relation_soulmate = scope:flirty_spouse
}
remove_relation_soulmate = scope:flirty_spouse
}
create_inspiration = book_inspiration
}
if = {
limit = {
can_add_hook = {
target = scope:flirty_knight
type = loyalty_hook
}
}
add_hook = {
type = loyalty_hook
target = scope:flirty_knight
}
}
add_character_modifier = {
modifier = knight_of_love_modifier
years = 20
}
scope:flirty_spouse = {
add_opinion = {
target = scope:flirty_knight
modifier = disappointed_opinion
opinion = -40
}
add_opinion = {
modifier = impressed_opinion
target = root
opinion = 40
}
if = {
limit = {
can_set_relation_lover_trigger = { CHARACTER = root }
}
set_relation_lover = { reason = lover_dueled_for_love target = root involved_character = scope:flirty_knight }
}
}
ai_chance = {
base = 100
}
}
}
# Beaten
court.9005 = {
type = character_event
title = court.9005.t
desc = court.9005.desc
theme = family
left_portrait = {
character = scope:flirty_spouse
animation = flirtation_left
}
right_portrait = {
character = scope:flirty_knight
animation = flirtation
}
override_background = { reference = study }
trigger = {
}
immediate = {
}
option = {
name = court.9005.a
scope:flirty_knight = {
hidden_effect = {
if = {
limit = {
has_relation_lover = scope:flirty_spouse
}
remove_relation_lover = scope:flirty_spouse
}
if = {
limit = {
has_relation_potential_lover = scope:flirty_spouse
}
remove_relation_potential_lover = scope:flirty_spouse
}
if = {
limit = {
has_relation_soulmate = scope:flirty_spouse
}
remove_relation_soulmate = scope:flirty_spouse
}
}
}
scope:flirty_spouse = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -40
}
add_opinion = {
modifier = impressed_opinion
target = scope:flirty_knight
opinion = 40
}
if = {
limit = {
can_set_relation_soulmate_trigger = { CHARACTER = scope:flirty_knight }
}
set_relation_soulmate = { reason = soulmate_won_love_in_duel copy_reason = lover target = scope:flirty_knight }
}
else_if = {
limit = {
can_set_relation_lover_trigger = { CHARACTER = scope:flirty_knight }
}
set_relation_lover = { reason = lover_dueled_for_love target = scope:flirty_knight involved_character = root }
}
}
add_character_modifier = {
modifier = fought_for_courtly_love_modifier
years = 20
}
add_prestige = major_prestige_loss
if = {
limit = {
scope:flirty_knight = {
government_allows = administrative
}
}
scope:flirty_knight = {
change_influence = medium_influence_gain
}
}
else = {
scope:flirty_knight = { add_prestige = major_prestige_gain }
}
ai_chance = {
base = 100
}
}
}
#########################
# Epicurean Entertainment
# by Alexander Oltner
#########################
# Your courtiers love your expensive food!
court.9100 = {
type = court_event
title = court.9100.t
desc = court.9100.desc
theme = court
court_scene = {
button_position_character = scope:food_lover_1
roles = {
scope:food_lover_1 = {
group = event_group
animation = ecstasy
}
scope:food_lover_2 = {
group = event_group
animation = admiration
}
scope:food_lover_3 = {
group = event_group
animation = personality_greedy
}
}
}
cooldown = {
years = 10
}
trigger = {
is_available = yes
age >= 10
amenity_level = { target = court_food_quality value >= 3 }
any_courtier_or_guest = {
is_available_ai_adult = yes
has_court_event_flag = no
NOR = {
has_trait = temperate
has_trait = inappetetic
has_relation_rival = root
}
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
count >= 3
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
hidden_effect = {
random_courtier_or_guest = {
limit = {
is_available_ai_adult = yes
NOR = {
has_trait = temperate
has_trait = inappetetic
has_relation_rival = root
}
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
}
weight = {
base = 1
modifier = {
add = 100
loves_food_trigger = yes
}
modifier = {
add = 50
has_relation_potential_friend = root
}
modifier = {
add = 30
is_of_major_interest_to_root_trigger = yes
}
}
save_scope_as = food_lover_1
court_event_character_flag_effect = yes
change_current_weight = 15
}
random_courtier_or_guest = {
limit = {
is_available_ai_adult = yes
NOR = {
has_trait = temperate
has_trait = inappetetic
has_relation_rival = root
}
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
this != scope:food_lover_1
}
weight = {
base = 1
modifier = {
add = 100
loves_food_trigger = yes
}
modifier = {
add = 50
has_relation_potential_friend = root
}
modifier = {
add = 30
is_of_major_interest_to_root_trigger = yes
}
}
save_scope_as = food_lover_2
court_event_character_flag_effect = yes
change_current_weight = 15
}
random_courtier_or_guest = {
limit = {
is_available_ai_adult = yes
NOR = {
has_trait = temperate
has_trait = inappetetic
has_relation_rival = root
}
is_of_major_or_minor_interest_trigger = { CHARACTER = root }
NOR = {
this = scope:food_lover_1
this = scope:food_lover_2
}
}
weight = {
base = 1
modifier = {
add = 100
loves_food_trigger = yes
}
modifier = {
add = 50
has_relation_potential_friend = root
}
modifier = {
add = 30
is_of_major_interest_to_root_trigger = yes
}
}
save_scope_as = food_lover_3
court_event_character_flag_effect = yes
change_current_weight = 15
}
}
}
option = { # More working, less stuffing faces!
name = court.9100.a
trigger = {
NOT = { government_has_flag = government_is_mandala }
}
add_character_modifier = {
modifier = more_work_less_fun_modifier
years = 15
desc = feasts_more_expensive_modifier_tt
}
custom_tooltip = feasts_more_expensive_tt
stress_impact = {
gregarious = major_stress_impact_gain
gluttonous = major_stress_impact_gain
lazy = major_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.1
OR = {
has_trait = gregarious
has_trait = gluttonous
has_trait = lazy
}
}
}
}
option = { # You all deserve the best!
name = court.9100.b
add_character_modifier = {
modifier = promise_of_feasts_modifier
years = 15
}
progress_towards_friend_effect = {
REASON = friend_fellow_food_lover
CHARACTER = scope:food_lover_1
OPINION = default_friend_opinion
}
progress_towards_friend_effect = {
REASON = friend_fellow_food_lover
CHARACTER = scope:food_lover_2
OPINION = default_friend_opinion
}
progress_towards_friend_effect = {
REASON = friend_fellow_food_lover
CHARACTER = scope:food_lover_3
OPINION = default_friend_opinion
}
stress_impact = {
sadistic = massive_stress_impact_gain
greedy = medium_stress_impact_gain
callous = medium_stress_impact_gain
temperate = medium_stress_impact_gain
shy = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.1
OR = {
has_trait = sadistic
has_trait = callous
has_trait = temperate
has_trait = greedy
has_trait = shy
}
}
}
}
option = { # Let them enjoy themselves in peace!
name = court.9100.d
change_current_court_grandeur = medium_court_grandeur_gain
add_prestige = minor_prestige_gain
stress_impact = {
gregarious = minor_stress_impact_gain
gluttonous = minor_stress_impact_gain
fickle = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = gregarious
has_trait = gluttonous
has_trait = fickle
}
}
}
}
after = {
scope:food_lover_1 = {
clear_court_event_participation = yes
}
scope:food_lover_2 = {
clear_court_event_participation = yes
}
scope:food_lover_3 = {
clear_court_event_participation = yes
}
}
}
#########################
# Overt Overindulgence
# by Alexander Oltner
#########################
# Someone eats all of the food!
court.9300 = {
type = court_event
title = court.9300.t
desc = court.9300.desc
theme = court
court_scene = {
button_position_character = scope:worried_courtier
roles = {
scope:worried_courtier = {
group = event_group
animation = fear
}
scope:overindulger_target = {
group = event_group
animation = admiration
}
}
}
cooldown = {
years = 30
}
trigger = {
is_available = yes
age >= 10
amenity_level = { target = court_food_quality value >= 4 }
any_courtier = {
is_available_ai_adult = yes
has_court_event_flag = no
save_temporary_scope_as = another_courtier_check
}
any_courtier_or_guest = {
is_available_ai_adult = yes
has_court_event_flag = no
loves_food_trigger = yes
NOR = {
this = scope:another_courtier_check
is_of_major_interest_to_root_trigger = yes
}
is_of_minor_interest_to_root_trigger = yes
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
}
immediate = {
random_courtier = {
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
save_temporary_scope_as = another_courtier_check
root = {
any_courtier_or_guest = {
is_available_ai_adult = yes
has_court_event_flag = no
loves_food_trigger = yes
NOR = {
this = scope:another_courtier_check
is_of_major_interest_to_root_trigger = yes
}
is_of_minor_interest_to_root_trigger = yes
}
}
}
weight = {
base = 1
modifier = {
add = 100
is_knight = yes
}
}
save_scope_as = worried_courtier
court_event_character_flag_effect = yes
}
random_courtier_or_guest = {
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
loves_food_trigger = yes
NOR = {
this = scope:worried_courtier
is_of_major_interest_to_root_trigger = yes
}
is_of_minor_interest_to_root_trigger = yes
}
hidden_effect = {
change_current_weight = 100
set_favorite_treat_effect = yes
assign_quirk_effect = yes
if = {
limit = {
NOT = {
has_trait = comfort_eater
}
}
add_trait = comfort_eater
}
}
save_scope_as = overindulger_target
court_event_character_flag_effect = yes
}
}
option = { # Stealing the King's treats, are we!?
name = court.9300.a
if = {
limit = {
can_add_hook = {
target = scope:overindulger_target
type = major_threat_hook
}
}
add_hook = {
target = scope:overindulger_target
type = major_threat_hook
}
}
scope:overindulger_target = {
progress_towards_rival_effect = {
CHARACTER = root
REASON = rival_overindulger_jailed
OPINION = 0
}
pay_short_term_gold = {
target = root
gold = root.tiny_gold_value
}
}
stress_impact = {
forgiving = massive_stress_impact_gain
compassionate = major_stress_gain
patient = major_stress_impact_gain
humble = medium_stress_impact_gain
calm = medium_stress_impact_gain
trusting = minor_stress_impact_gain
}
ai_chance = {
base = 0
modifier = {
add = ai_vengefulness
}
}
}
option = { # By the gods, man, stop eating!
name = court.9300.b
duel = {
skill = diplomacy
value = 12
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = court.9300.b.success
send_interface_toast = {
title = court.9300.b.success
left_icon = scope:overindulger_target
add_prestige = medium_prestige_gain
if = {
limit = {
government_allows = administrative
}
change_influence = medium_influence_gain
}
if = {
limit = {
can_add_hook = {
target = scope:overindulger_target
type = favor_hook
}
}
add_hook = {
target = scope:overindulger_target
type = favor_hook
}
}
scope:overindulger_target = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 15
}
progress_towards_friend_effect = {
REASON = friend_saved_me_from_myself
CHARACTER = root
OPINION = 0
}
}
}
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = court.9300.b.failure
send_interface_toast = {
title = court.9300.b.failure
left_icon = scope:overindulger_target
scope:overindulger_target = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -25
}
progress_towards_rival_effect = {
CHARACTER = root
REASON = rival_overindulger_shamed
OPINION = 0
}
}
}
}
}
stress_impact = {
vengeful = massive_stress_impact_gain
paranoid = major_stress_gain
cynical = major_stress_impact_gain
fickle = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.1
ai_compassion <= low_positive_ai_value
}
}
}
option = { # You're barred from the pantry...
name = court.9300.d
scope:overindulger_target = {
add_opinion = {
target = root
opinion = -5
modifier = disappointed_opinion
}
hidden_effect = {
random = {
chance = 50
if = {
limit = {
can_set_relation_potential_rival_trigger = { CHARACTER = root }
}
set_relation_potential_rival = root
}
}
}
}
stress_impact = {
greedy = medium_stress_impact_gain
ambitious = medium_stress_impact_gain
wrathful = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.1
ai_vengefulness >= low_positive_ai_value
}
}
}
after = {
scope:overindulger_target = {
clear_court_event_participation = yes
}
scope:worried_courtier = {
clear_court_event_participation = yes
}
}
}
#########################
# Pie-based Shenanigans
# by Alexander Oltner
#########################
scripted_trigger court_9400_court_jester_trigger = {
is_available_ai_adult = yes
has_trait = dwarf
}
scripted_trigger court_9400_courtier_trigger = {
is_available_ai_adult = yes
NOT = {
is_cannibal_trigger = yes
}
}
# Court Jester pie event, loosely based on Jeffrey Hudson
court.9400 = {
type = court_event
title = court.9400.t
desc = court.9400.desc
theme = court
court_scene = {
button_position_character = scope:pie_presenting_courtier
roles = {
scope:pie_presenting_courtier = {
group = event_group
animation = ecstasy
}
scope:court_jester = {
group = event_group
animation = happiness
}
}
}
cooldown = {
years = 15
}
trigger = {
is_available = yes
age >= 10
amenity_level = { target = court_food_quality value >= 2 }
amenity_level = { target = court_servants value >= 2 }
OR = {
AND = {
any_courtier = {
court_9400_court_jester_trigger = yes
has_court_event_flag = no
save_temporary_scope_as = jester_check
}
any_courtier = {
court_9400_courtier_trigger = yes
has_court_event_flag = no
this != scope:jester_check
}
}
any_vassal = {
court_9400_courtier_trigger = yes
has_court_event_flag = no
any_courtier = {
court_9400_court_jester_trigger = yes
has_court_event_flag = no
}
}
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_intrigue }
}
immediate = {
save_scope_as = you_target
random_vassal = {
limit = {
court_9400_courtier_trigger = yes
has_court_event_flag = no
any_courtier = {
court_9400_court_jester_trigger = yes
has_court_event_flag = no
}
}
save_scope_as = pie_presenting_courtier
court_event_character_flag_effect = yes
random_courtier = {
limit = {
court_9400_court_jester_trigger = yes
has_court_event_flag = no
}
save_scope_as = court_jester
court_event_character_flag_effect = yes
}
}
if = {
limit = {
NOR = {
exists = scope:pie_presenting_courtier
exists = scope:court_jester
}
}
random_courtier = {
limit = {
court_9400_court_jester_trigger = yes
}
save_scope_as = court_jester
court_event_character_flag_effect = yes
}
random_courtier = {
limit = {
court_9400_courtier_trigger = yes
}
weight = {
base = 1
modifier = {
add = 10
is_of_major_interest_to_root_trigger = yes
}
modifier = {
add = 5
is_of_minor_interest_to_root_trigger = yes
}
}
save_scope_as = pie_presenting_courtier
court_event_character_flag_effect = yes
}
}
scope:pie_presenting_courtier = {
progress_towards_friend_effect = {
REASON = friend_played_trick_on_liege
CHARACTER = scope:court_jester
OPINION = 0
}
}
}
option = { # My favorite meal!
name = court.9400.a
trait = cannibal
trigger = {
is_cannibal_trigger = yes
}
if = {
limit = {
any_secret = {
type = secret_cannibal
NOT = {
is_known_by = scope:pie_presenting_courtier
}
}
}
random_secret = {
type = secret_cannibal
limit = {
NOT = {
is_known_by = scope:pie_presenting_courtier
}
}
reveal_to = scope:pie_presenting_courtier
}
}
scope:pie_presenting_courtier = {
add_opinion = {
target = root
modifier = absolutely_horrified_opinion
}
}
add_character_modifier = {
modifier = best_meal_of_my_life_modifier
years = 15
}
unknown_murder_effect = {
VICTIM = scope:court_jester
MURDERER = root
REASON = death_eaten
}
stress_impact = {
base = massive_stress_impact_loss
compassionate = massive_stress_impact_gain
}
ai_chance = {
base = 200
modifier = {
factor = 0
has_trait = compassionate
}
}
}
option = { # Reward them
name = court.9400.b
pay_short_term_gold = {
target = scope:court_jester
gold = root.tiny_gold_value
}
if = {
limit = {
scope:court_jester.location = {
this != root.location
}
}
scope:court_jester = {
set_location = root.location
}
}
if = {
limit = {
scope:court_jester = {
NOT = {
is_courtier_of = root
}
}
}
add_courtier = scope:court_jester
}
if = {
limit = {
can_employ_court_position_type = court_jester_court_position
scope:court_jester = { can_be_employed_as = court_jester_court_position }
}
court_position_grant_effect = { POS = court_jester CANDIDATE = scope:court_jester EMPLOYER = root }
}
progress_towards_friend_effect = {
REASON = friend_gave_gold
CHARACTER = scope:court_jester
OPINION = 0
}
scope:pie_presenting_courtier = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 25
}
}
change_current_court_grandeur = medium_court_grandeur_gain
stress_impact = {
base = medium_stress_impact_loss
paranoid = massive_stress_impact_gain
greedy = massive_stress_impact_gain
arrogant = medium_stress_impact_gain
arbitrary = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.1
ai_compassion <= low_positive_ai_value
}
modifier = {
factor = 0.1
ai_greed >= low_positive_ai_value
}
modifier = {
factor = 0
has_trait = paranoid
}
}
}
option = { # Imprison them!
name = court.9400.c
trigger = {
has_trait = paranoid
}
rightfully_imprison_character_effect = {
TARGET = scope:court_jester
IMPRISONER = root
}
if = {
limit = {
is_ai = yes
}
execute_prisoner_effect = {
VICTIM = scope:court_jester
EXECUTIONER = root
}
}
else = {
scope:court_jester = {
progress_towards_rival_effect = {
CHARACTER = root
REASON = rival_jester_jailed
OPINION = 0
}
}
}
add_character_modifier = {
modifier = suspicious_against_pies_modifier
years = 15
}
scope:pie_presenting_courtier = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -25
}
}
stress_impact = {
base = massive_stress_impact_loss
compassionate = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 200
}
}
option = { # Har har! Fantastic!
name = court.9400.d
scope:pie_presenting_courtier = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 10
}
}
stress_impact = {
base = medium_stress_impact_loss
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
has_trait = paranoid
}
}
}
after = {
scope:pie_presenting_courtier = {
clear_court_event_participation = yes
}
scope:court_jester = {
clear_court_event_participation = yes
}
}
}
#########################
# A Little Language
# by Alexander Oltner
#########################
scripted_trigger appropriate_tutor_trigger = {
is_available_ai_adult = yes
OR = {
AND = {
learning >= 10
OR = {
has_court_position = court_tutor_court_position
is_eunuch_trigger = yes
}
}
learning >= 20
}
}
scripted_trigger appropriate_child_trigger = {
age <= 20
is_incapable = no
is_imprisoned = no
is_alive = yes
is_ruler = no
is_courtier_of = root
culture = root.culture
num_of_known_languages < 2
}
scripted_trigger has_a_good_language_trigger = {
culture = {
NOT = {
has_same_culture_language = root.culture
}
}
}
# Someone offers to teach your child a language
court.9500 = {
type = court_event
title = court.9500.t
desc = court.9500.desc
theme = court
cooldown = {
years = 10
}
court_scene = {
button_position_character = scope:child_to_learn_language
roles = {
scope:child_to_learn_language = {
group = event_group
animation = dismissal
}
}
roles = {
scope:teacher_target = {
group = event_group
animation = personality_rational
}
}
}
trigger = {
is_landed = yes
is_available_adult = yes
any_child = {
appropriate_child_trigger = yes
has_court_event_flag = no
save_temporary_scope_as = temp_child_to_learn_lang
}
OR = { # There must be a useful language to learn
any_sub_realm_county = {
has_a_good_language_trigger = yes
}
any_vassal = {
has_a_good_language_trigger = yes
}
any_liege_or_above = {
has_a_good_language_trigger = yes
}
AND = {
exists = faith.religious_head
faith.religious_head = {
has_a_good_language_trigger = yes
}
}
}
any_courtier_or_guest = {
appropriate_tutor_trigger = yes
has_court_event_flag = no
this != scope:temp_child_to_learn_lang
}
}
weight_multiplier = {
base = 1
# Court weightings.
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_scholarly }
}
immediate = {
random_child = { # Pick a good child
limit = {
appropriate_child_trigger = yes
}
weight = { # Prefer primary heir
base = 1
modifier = {
add = 100
this = root.player_heir
}
}
save_scope_as = child_to_learn_language
court_event_character_flag_effect = yes
}
every_sub_realm_county = { # Pick a culture to take the language from
limit = {
has_a_good_language_trigger = yes
}
culture = {
if = {
limit = {
NOT = {
is_in_list = potential_language_cultures
}
}
}
add_to_list = potential_language_cultures
}
}
every_vassal = {
limit = {
has_a_good_language_trigger = yes
}
culture = {
if = {
limit = {
NOT = {
is_in_list = potential_language_cultures
}
}
}
add_to_list = potential_language_cultures
}
}
every_liege_or_above = {
limit = {
has_a_good_language_trigger = yes
}
culture = {
if = {
limit = {
NOT = {
is_in_list = potential_language_cultures
}
}
}
add_to_list = potential_language_cultures
}
}
if = {
limit = {
exists = faith.religious_head
faith.religious_head = {
has_a_good_language_trigger = yes
}
}
faith.religious_head.culture = {
if = {
limit = {
NOT = {
is_in_list = potential_language_cultures
}
}
}
add_to_list = potential_language_cultures
}
}
random_in_list = { # Pick the best culture language
list = potential_language_cultures
weight = {
base = 1
modifier = { # Vassal languages are objectively best to learn
add = 10
save_temporary_scope_as = culture_check
root = {
any_vassal = {
culture = scope:culture_check
}
}
}
}
save_scope_as = culture_language_to_learn
}
random_courtier_or_guest = {
limit = {
appropriate_tutor_trigger = yes
this != scope:child_to_learn_language
}
weight = {
base = 1
modifier = {
add = 100
has_court_position = court_tutor_court_position
}
modifier = {
add = 50
is_eunuch_trigger = yes
}
}
hidden_effect = {
assign_quirk_effect = yes
if = {
limit = {
NOT = {
knows_language_of_culture = scope:culture_language_to_learn
}
}
learn_language_of_culture = scope:culture_language_to_learn
}
}
save_scope_as = teacher_target
court_event_character_flag_effect = yes
}
}
option = { # Pay more than needed; your child must learn!
name = court.9500.a
pay_short_term_gold = {
target = scope:teacher_target
gold = root.medium_gold_value
}
scope:child_to_learn_language = {
learn_language_of_culture = scope:culture_language_to_learn
}
scope:teacher_target = {
add_opinion = {
target = root
opinion = 10
modifier = grateful_opinion
}
}
if = {
limit = {
scope:teacher_target = {
NOT = { has_court_position = court_tutor_court_position }
}
can_appoint_char_to_court_position = {
CHAR = scope:teacher_target
COURT_POS = court_tutor_court_position
}
}
court_position_grant_effect = { POS = court_tutor CANDIDATE = scope:teacher_target EMPLOYER = root }
}
stress_impact = {
greedy = massive_stress_impact_gain
paranoid = major_stress_gain
arrogant = major_stress_impact_gain
fickle = medium_stress_impact_gain
cynical = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.1
ai_greed >= low_positive_ai_value
}
}
}
option = { # Pay what they ask, and hope your child manages
name = court.9500.b
pay_short_term_gold = {
target = scope:teacher_target
gold = root.tiny_gold_value
}
scope:child_to_learn_language = {
duel = {
skill = learning
value = 6
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = court.9500.b.success
root = {
send_interface_toast = {
title = court.9500.b.success
left_icon = scope:child_to_learn_language
right_icon = scope:teacher_target
scope:child_to_learn_language = {
learn_language_of_culture = scope:culture_language_to_learn
}
}
}
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = court.9500.b.failure
root = {
send_interface_toast = {
title = court.9500.b.failure
left_icon = scope:child_to_learn_language
right_icon = scope:teacher_target
scope:child_to_learn_language = {
add_stress = major_stress_gain
}
}
}
}
}
}
stress_impact = {
generous = major_stress_impact_gain
patient = medium_stress_impact_gain
humble = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.1
ai_greed >= low_positive_ai_value
}
}
}
option = { # Deny
name = court.9500.c
scope:teacher_target = {
add_opinion = {
target = root
opinion = -5
modifier = disappointed_opinion
}
}
stress_impact = {
diligent = medium_stress_impact_gain
gregarious = medium_stress_impact_gain
ambitious = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
after = {
scope:teacher_target = {
clear_court_event_participation = yes
}
scope:child_to_learn_language = {
clear_court_event_participation = yes
}
}
}