N3OW/events/dlc/ach/ach_coronation_events.txt
2026-01-06 14:25:21 +01:00

9640 lines
208 KiB
Text

# Events for the Coronation activity
namespace = ach_coronation
################################################################################################################################
## Coronation Activity System Events
## 0000-0010
## by Jay Zaborowski
################################
# ach_coronation.0001 - Enter passive state - you arrived, establish the mood
# ach_coronation.0010 - The HoF arrives
######################
# Enter passive state - you arrived, establish the mood
# 0001
ach_coronation.0001 = {
type = activity_event
title = ach_coronation.0001.t
desc = {
# Opening
first_valid = {
triggered_desc = {
trigger = { location = this.capital_province }
desc = ach_coronation.0001.notravel
}
desc = ach_coronation.0001.travel
}
# Intro
first_valid = {
# You are the Host
triggered_desc = {
trigger = { this = scope:host }
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:host = { primary_title = title:e_hre }
this = scope:host
}
desc = ach_coronation.0001.intro.hre_host
}
triggered_desc = {
trigger = {
scope:host = { primary_title = title:e_byzantium }
this = scope:host
}
desc = ach_coronation.0001.intro.byzantine_host
}
triggered_desc = {
trigger = {
this = scope:host
location = this.capital_province
}
desc = ach_coronation.0001.intro.notravel_host
}
desc = ach_coronation.0001.intro.host
}
}
}
# You are a Guest
triggered_desc = {
trigger = { this != scope:host }
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:host = { primary_title = title:e_hre }
}
desc = ach_coronation.0001.intro.hre
}
triggered_desc = {
trigger = {
scope:host = { primary_title = title:e_byzantium }
}
desc = ach_coronation.0001.intro.byzantine
}
}
}
}
}
# Ending
first_valid = {
# Host - Eccentric (so that it matches the rest of the loc)
triggered_desc = {
trigger = {
this = scope:host
has_trait = eccentric
}
desc = ach_coronation.0001.ending.host_eccentric
}
# Host
triggered_desc = {
trigger = { this = scope:host }
desc = {
random_valid = {
triggered_desc = {
trigger = {
has_trait = cynical
OR = {
scope:priest ?= { is_important_hof_trigger = yes }
faith = { has_doctrine_parameter = theocratic_coronation } # To give something to complain about
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:priest ?= { is_important_hof_trigger = yes } }
desc = ach_coronation.0001.ending.host_cynical_hof
}
triggered_desc = {
trigger = { faith = { has_doctrine_parameter = theocratic_coronation } }
desc = ach_coronation.0001.ending.host_cynical
}
}
}
}
triggered_desc = {
trigger = { has_trait = impatient }
desc = ach_coronation.0001.ending.host_impatient
}
triggered_desc = {
trigger = { has_trait = just }
desc = ach_coronation.0001.ending.host_just
}
triggered_desc = {
trigger = { has_trait = ambitious }
desc = ach_coronation.0001.ending.host_ambitious
}
triggered_desc = {
trigger = { has_trait = compassionate }
desc = ach_coronation.0001.ending.host_compassionate
}
triggered_desc = {
trigger = { has_trait = trusting }
desc = ach_coronation.0001.ending.host_trusting
}
triggered_desc = {
trigger = { has_trait = paranoid }
desc = ach_coronation.0001.ending.host_paranoid
}
triggered_desc = {
trigger = { has_trait = zealous }
desc = ach_coronation.0001.ending.host_zealous
}
triggered_desc = {
trigger = { has_trait = content }
desc = ach_coronation.0001.ending.host_content
}
triggered_desc = {
trigger = { has_trait = gregarious }
desc = ach_coronation.0001.ending.host_gregarious
}
triggered_desc = {
trigger = { has_trait = craven }
desc = ach_coronation.0001.ending.host_craven
}
triggered_desc = {
trigger = { has_trait = shy }
desc = ach_coronation.0001.ending.host_shy
}
triggered_desc = {
trigger = { has_trait = arrogant }
desc = ach_coronation.0001.ending.host_arrogant
}
triggered_desc = {
trigger = {
OR = {
has_trait = calm
has_trait = lazy
}
}
desc = ach_coronation.0001.ending.host_calm
}
triggered_desc = {
trigger = { has_trait = gluttonous }
desc = ach_coronation.0001.ending.host_gluttonous
}
triggered_desc = {
trigger = { has_trait = arbitrary }
desc = ach_coronation.0001.ending.host_arbitrary
}
desc = ach_coronation.0001.ending.host_neutral
}
}
}
# Guest
triggered_desc = {
trigger = { this != scope:host }
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:host = { has_any_bad_relationship_with_character_trigger = { CHARACTER = root } } }
desc = ach_coronation.0001.ending.hostile_host
}
triggered_desc = {
trigger = { scope:host = { has_any_good_relationship_with_character_trigger = { CHARACTER = root } } }
desc = ach_coronation.0001.ending.friendly_host
}
desc = ach_coronation.0001.ending.neutral_host
}
}
}
}
}
center_portrait = {
character = scope:host
animation = idle
camera = camera_center_large
}
lower_left_portrait = {
character = root
trigger = { this != scope:host }
}
lower_center_portrait = {
character = scope:priest
trigger = {
this != scope:host
scope:host.involved_activity ?= {
has_activity_option = {
category = special_type
option = coronation_type_anointment
}
}
}
}
theme = coronation_activity
override_background = {
reference = throne_room
}
immediate = {
play_music_cue = mx_cue_majesty
involved_activity = {
activity_host = { save_scope_as = host }
var:officiator ?= { save_scope_as = priest }
if = {
limit = {
has_activity_option = {
category = special_type
option = coronation_type_anointment
}
}
scope:host.faith.religious_head = { save_scope_as = priest }
}
}
# Send out the papal fanfare
if = {
limit = {
# Is the host's religious head
scope:host.faith.religious_head ?= this
# The HoF actually matters for the ceremony
scope:activity = {
has_activity_option = {
category = special_type
option = coronation_type_anointment
}
}
#HoF doesn't own or live there
scope:activity.activity_location.county = {
OR = {
holder = scope:host
holder = {
any_liege_or_above = {
this = scope:host
}
}
}
NOR = {
holder = scope:priest
holder = {
any_liege_or_above = {
this = scope:priest
}
}
}
}
#tricksy patriarch
trigger_if = {
limit = {
scope:priest = {
is_landed = no
liege ?= scope:host
}
}
NOT = {
scope:activity.activity_location.county = scope:host.capital_county
}
}
}
save_scope_as = hof
coronation_hof_visit_effect = yes
involved_activity = {
every_attending_character = {
limit = {
OR = {
# Only bother for player's and the Host
is_ai = no
this = scope:host
# And anyone who might want to beg the pope for pardon
has_trait = excommunicated
}
}
trigger_event = ach_coronation.0010
}
}
}
scope:host = {
if = {
limit = {
any_targeting_faction = {
count > 1
}
any_targeting_faction = {
OR = {
faction_power >= 200
discontent_per_month > 0
trigger_if = {
limit = {
discontent_per_month > 0
}
months_until_max_discontent <= 8
}
AND = {
OR = {
faction_is_type = nation_fracturing_faction
faction_is_type = claimant_faction
}
faction_power >= 100
}
}
}
}
custom_tooltip = magnificence_badly_reduced_by_factions_tt
}
else_if = {
limit = {
any_targeting_faction = {
count = 1
}
any_targeting_faction = {
OR = {
faction_power >= 200
discontent_per_month > 0
trigger_if = {
limit = {
discontent_per_month > 0
}
months_until_max_discontent <= 8
}
AND = {
OR = {
faction_is_type = nation_fracturing_faction
faction_is_type = claimant_faction
}
faction_power >= 100
}
}
}
}
custom_tooltip = magnificence_badly_reduced_by_faction_tt
}
else_if = {
limit = {
any_targeting_faction = {
count > 1
}
}
custom_tooltip = magnificence_reduced_by_factions_tt
}
else_if = {
limit = {
any_targeting_faction = {
count = 1
}
}
custom_tooltip = magnificence_reduced_by_faction_tt
}
}
if = {
limit = {
this = scope:host
involved_activity = { var:activity_special_type_progression >= 50 }
}
scope:host.dynasty = { add_dynasty_prestige = minor_dynasty_prestige_gain }
}
else_if = {
limit = {
this = scope:host
involved_activity = { var:activity_special_type_progression >= 25 }
}
scope:host.dynasty = { add_dynasty_prestige = miniscule_dynasty_prestige_gain }
}
}
option = {
name = {
trigger = {
NOT = { this = scope:host }
opinion = {
target = scope:host
value < 0
}
}
text = ach_coronation.0001.a.bad
}
name = {
trigger = {
NOT = { this = scope:host }
opinion = {
target = scope:host
value >= 0
}
}
text = ach_coronation.0001.a.good
}
name = {
trigger = {
this = scope:host
has_trait = eccentric
}
text = ach_coronation.0001.a.eccentric
}
name = {
trigger = {
this = scope:host
NOT = { has_trait = eccentric }
}
text = ach_coronation.0001.a
}
}
}
######################
# The HoF Arrives
# 0010
scripted_trigger ach_coronation_0010_appropriate_hof_follower = {
# Find a clergy member of the hof's religion
faith.religion = scope:hof.faith.religion
this != scope:hof
this != scope:host
this != scope:greeter
# Who isn't the player
is_physically_able_ai = yes
}
scripted_trigger ach_coronation_0010_friendly_hof_and_host = {
scope:host = {
OR = {
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:hof }
reverse_opinion = {
target = scope:hof
value > medium_positive_opinion
}
}
}
}
scripted_trigger ach_coronation_0010_hostile_hof_and_host = {
OR = {
scope:host = { has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:hof } }
reverse_opinion = {
target = scope:hof
value < medium_negative_opinion
}
}
}
scripted_effect ach_coronation_0010_choose_greeters = {
# Barons are underutilized and it is *their* city, and the Host is probably busy, so they get to meet the HoF
if = {
limit = { scope:coronation_site.barony.holder != scope:host }
scope:coronation_site.barony.holder = { save_scope_as = greeter }
}
# If the host owns the province we still want the world to feel lively, try the local count instead
else_if = {
limit = { scope:coronation_site.barony.county.holder != scope:host }
scope:coronation_site.barony.holder = { save_scope_as = greeter }
}
# If all else fails, the Host gets to be the greeter
else = {
limit = { scope:host.location = scope:coronation_site }
scope:host = { save_scope_as = greeter }
}
if = {
limit = {
# Grab the greeter's court chaplain if they exist
exists = scope:greeter.cp:councillor_court_chaplain
# Make sure it isn't the player
scope:greeter.cp:councillor_court_chaplain = { is_physically_able_ai = yes }
}
scope:greeter.cp:councillor_court_chaplain = { save_scope_as = greeter_2 }
}
else = {
involved_activity = {
ordered_attending_character = {
# Grab the most zealous priest of the hof's religion at the activity
limit = {
ach_coronation_0010_appropriate_hof_follower = yes
is_clergy = yes
}
# Or any valid follower of their religion
alternative_limit = {
ach_coronation_0010_appropriate_hof_follower = yes
}
# Fallback
alternative_limit = {
this != scope:host
this != scope:hof
this != scope:greeter
}
order_by = ai_zeal
save_scope_as = greeter_2
}
}
}
}
ach_coronation.0010 = {
type = activity_event
title = ach_coronation.0010.t
desc = { # Should have a lot of variety for different pope-analities
desc = ach_coronation.0010.desc.desc_opening
first_valid = {
triggered_desc = {
trigger = { this = scope:greeter }
desc = ach_coronation.0010.desc.desc_greeting.first_person
}
triggered_desc = {
trigger = { this = scope:host }
desc = ach_coronation.0010.desc.desc_greeting.host
}
desc = ach_coronation.0010.desc.desc_greeting.baron
}
random_valid = {
triggered_desc = {
trigger = {
scope:hof = {
OR = {
has_trait = generous
has_trait = profligate
ai_greed < medium_negative_greed
}
}
}
desc = ach_coronation.0010.desc.desc_first.generous
}
triggered_desc = {
trigger = {
scope:hof = {
OR = {
has_trait = greedy
has_trait = avaricious
ai_greed > medium_positive_greed
}
}
}
desc = ach_coronation.0010.desc.desc_first.greedy
}
triggered_desc = {
trigger = {
scope:hof = {
OR = {
has_trait = compassionate
ai_compassion > medium_positive_compassion
}
}
}
desc = ach_coronation.0010.desc.desc_first.compassionate
}
triggered_desc = {
trigger = {
scope:hof = {
OR = {
has_trait = cynical
ai_zeal < medium_negative_zeal
}
}
}
desc = ach_coronation.0010.desc.desc_first.cynical
}
desc = ach_coronation.0010.desc.desc_first
}
random_valid = {
triggered_desc = {
trigger = {
scope:hof = {
OR = {
has_trait = zealous
ai_zeal > medium_positive_zeal
}
}
}
desc = ach_coronation.0010.desc.desc_second.zealous
}
triggered_desc = {
trigger = {
scope:hof = {
OR = {
has_trait = wrathful
has_trait = irritable
has_trait = vengeful
ai_vengefulness > medium_positive_vengefulness
}
}
}
desc = ach_coronation.0010.desc.desc_second.wrathful
}
triggered_desc = {
trigger = {
scope:hof = {
OR = {
has_trait = lustful
has_trait = rakish
is_incestuous_trigger = yes
is_deviant_trigger = yes
}
}
}
desc = ach_coronation.0010.desc.desc_second.lustful
}
triggered_desc = {
trigger = {
scope:hof = { has_trait = gluttonous }
}
desc = ach_coronation.0010.desc.desc_second.gluttonous
}
triggered_desc = {
trigger = {
scope:hof = {
OR = {
has_trait = giant
has_trait = strong
has_trait = physique_good_3
has_trait = physique_good_2
}
}
}
desc = ach_coronation.0010.desc.desc_second.strong
}
desc = ach_coronation.0010.desc.desc_second
}
first_valid = {
# Universal
triggered_desc = {
trigger = { scope:hof.faith = { fervor <= 30 } }
desc = ach_coronation.0010.desc.desc_ending.low_fervor
}
# Host
triggered_desc = {
trigger = { this = scope:host }
desc = {
first_valid = {
triggered_desc = {
trigger = { has_trait = excommunicated }
desc = ach_coronation.0010.desc.desc_ending.excommunicated_first_person
}
triggered_desc = {
trigger = {
ach_coronation_0010_friendly_hof_and_host = yes
scope:hof = {
opinion = {
target = root
value >= high_positive_opinion
}
}
}
desc = ach_coronation.0010.desc.desc_ending.opinion_very_good_first_person
}
triggered_desc = {
trigger = { ach_coronation_0010_friendly_hof_and_host = yes }
desc = ach_coronation.0010.desc.desc_ending.opinion_good_first_person
}
triggered_desc = {
trigger = { ach_coronation_0010_hostile_hof_and_host = yes }
desc = ach_coronation.0010.desc.desc_ending.opinion_bad_first_person
}
desc = ach_coronation.0010.desc.desc_ending.neutral_first_person
}
}
}
# Guest
triggered_desc = {
trigger = { this != scope:host }
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:host = { has_trait = excommunicated } }
desc = ach_coronation.0010.desc.desc_ending.excommunicated
}
triggered_desc = {
trigger = {
ach_coronation_0010_friendly_hof_and_host = yes
scope:hof = {
opinion = {
target = scope:host
value >= high_positive_opinion
}
}
}
desc = ach_coronation.0010.desc.desc_ending.opinion_very_good
}
triggered_desc = {
trigger = { ach_coronation_0010_friendly_hof_and_host = yes }
desc = ach_coronation.0010.desc.desc_ending.opinion_good
}
triggered_desc = {
trigger = { ach_coronation_0010_hostile_hof_and_host = yes }
desc = ach_coronation.0010.desc.desc_ending.opinion_bad
}
desc = ach_coronation.0010.desc.desc_ending.neutral
}
}
}
}
}
left_portrait = {
character = scope:greeter_2
animation = horse_conversing_right
camera = camera_event_horse_left_facing_left_far
}
center_portrait = {
character = scope:greeter
animation = horse_conversing_left
camera = camera_event_horse_left_facing_left_very_far
}
right_portrait = {
character = scope:hof
# Are they the type to wave at peasants?
triggered_animation = {
trigger = { ai_compassion >= medium_positive_compassion }
animation = jockey_wave
}
triggered_animation = {
trigger = { always = yes }
animation = jockey_idle
}
camera = camera_event_horse_right_facing_left_close
}
theme = coronation_activity
override_background = {
reference = market
}
override_effect_2d = {
reference = legend_glow
}
# Horse and crowd noises instead of normal activity ones
override_sound = { reference = "event:/DLC/EP3/SFX/Events/Event_Moments/ep3_evn_eventmoment_chariot_race_pivotal_moment" }
immediate = {
# Make it sound momentous
play_sound_effect = "event:/DLC/EP2/SFX/Events/Grand_Activities/Tournaments/ep2_event_grand_tournament_win"
play_sound_effect = "event:/DLC/EP3/SFX/Stingers/Byzantine_Flavor/ep3_mx_sting_byzantineflavor_hold_triumph"
involved_activity.var:officiator ?= { save_scope_as = hof }
scope:hof.location = { save_scope_as = coronation_site }
hidden_effect = { ach_coronation_0010_choose_greeters = yes }
show_as_tooltip = { coronation_hof_visit_effect = yes }
}
option = { # Beg him to unexcommunicate you
name = ach_coronation.0010.a
trigger = {
has_trait = excommunicated
faith.religious_head = scope:hof
# Not getting off so easy
this != scope:host
}
trait = excommunicated
duel = {
skill = diplomacy
target = scope:hof
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = { # I got a soft spot and not much hate in my heart
add = 20
scope:hof = {
ai_compassion >= high_positive_compassion
opinion = {
value >= low_negative_opinion
target = root
}
}
}
modifier = {
add = 5
scope:hof = { has_trait = generous }
}
modifier = {
factor = 2
scope:hof = { has_trait = forgiving }
}
modifier = {
factor = 0.5
scope:hof = { has_trait = vengeful }
}
min = 5
desc = ach_coronation.0010.a.tt.success
send_interface_toast = {
title = ach_coronation.0010.a.tt.success
left_icon = scope:hof
remove_trait = excommunicated
stress_impact = {
base = major_stress_loss
arrogant = minor_stress_loss
zealous = major_stress_loss
}
hidden_effect = {
add_opinion = {
target = scope:hof
modifier = grateful_opinion
opinion = 30
}
}
}
}
50 = { # They ignore you
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
modifier = {
add = 5
has_trait = arrogant
}
opinion_modifier = {
who = scope:hof
opinion_target = scope:host
multiplier = 0.5
}
min = 5
desc = ach_coronation.0010.a.tt.failure
send_interface_toast = {
title = ach_coronation.0010.a.tt.failure
left_icon = scope:hof
add_prestige = minor_prestige_loss
if = {
limit = { is_ai = yes }
}
stress_impact = {
base = minor_stress_gain
shy = minor_stress_loss # Honestly? Thank HighGod
}
}
}
20 = { # They're offended you even asked
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
modifier = {
add = 20
OR = {
has_trait = shy
has_trait = reclusive
}
}
modifier = {
add = 5
has_trait = impatient
}
opinion_modifier = {
who = scope:hof
opinion_target = root
multiplier = -1
}
modifier = {
factor = 1.5
has_trait = wrathful
}
min = 5
desc = ach_coronation.0010.a.tt.anger
send_interface_toast = {
title = ach_coronation.0010.a.tt.anger
left_icon = scope:hof
reverse_add_opinion = {
target = scope:hof
modifier = annoyed_opinion
opinion = -30
}
add_prestige = minor_prestige_loss
stress_impact = {
base = medium_stress_gain
arrogant = minor_stress_gain
zealous = minor_stress_gain
cynical = medium_stress_loss # Got one good thing out of it at least
}
}
}
}
ai_chance = {
base = 150
modifier = {
has_trait = shy
factor = 0.5
}
modifier = {
has_trait = zealous
factor = 0.5
}
modifier = {
has_trait = gregarious
factor = 2
}
modifier = {
has_trait = cynical
factor = 2
}
# More likely if skilled at diplomacy
modifier = {
diplomacy > medium_skill_rating
factor = 2
}
# Less likely if not
modifier = {
diplomacy <= medium_skill_rating
factor = 0.5
}
# Way less likely if way not
modifier = {
diplomacy <= low_skill_rating
# Unless you have zero ability to conceive your own diplomatic inferiority
NOT = { has_trait = arrogant }
factor = 0.5
}
}
}
option = { # "Neat"
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:hof } }
desc = ach_coronation.0010.b.rival
}
triggered_desc = {
trigger = { has_relation_lover = scope:hof }
desc = ach_coronation.0010.b.lover
}
triggered_desc = {
trigger = { has_any_good_relationship_with_character_trigger = { CHARACTER = scope:hof } }
desc = ach_coronation.0010.b.friend
}
triggered_desc = {
trigger = { faith.religion != scope:hof.faith.religion }
desc = ach_coronation.0010.b.heathen
}
triggered_desc = {
trigger = { faith != scope:hof.faith }
desc = ach_coronation.0010.b.heretic
}
triggered_desc = {
trigger = {
OR = {
is_witch_trigger = yes
# Also fits if you're hiding your faith
any_secret = {
secret_type = secret_crypto_religionist
}
}
}
desc = ach_coronation.0010.b.witch
}
triggered_desc = {
trigger = { has_trait = cynical }
desc = ach_coronation.0010.b.cynical
}
triggered_desc = {
trigger = { has_trait = zealous }
desc = ach_coronation.0010.b.zealous
}
desc = ach_coronation.0010.b
}
}
}
if = {
limit = { this = scope:host }
custom_tooltip = ach_coronation_0010_hof_desc_host.tt
}
else = {
custom_tooltip = ach_coronation_0010_hof_desc_guest.tt
}
ai_chance = {
base = 100
}
}
}
####################################
# Random coronation events
# 0011-0499
## by Jay Zaborowski
####################################
# ach_coronation.0011 - Host: You see some potential plotters whispering
# ach_coronation.0012 - Host: Vassals squabble over coronation roles
# ach_coronation.0013 - Host: You eavesdrop on some peasants
# ach_coronation.0014 - Guest: Opportunity to cause a crowd crush
# ach_coronation.0015 - Host: There is a crowd crush
# ach_coronation.0016 - Guest: You present your host a gift
# ach_coronation.0017 - Guest: faith_warrior reacts to the coronation of a non-crusader_king
# ach_coronation.0018 - Guest: Close family member of Host sees opportunity
# ach_coronation.0020 - Host: Close family member helps manage the coronation
# ach_coronation.0022 - Guest: An ongoing plague has shaken a zealous guest
# ach_coronation.0023 - Host: An exotic foreign warrior pledges themselves to you
# ach_coronation.0025 - Open up drinks to the locals
# ach_coronation.0027 - A guest offers some hashish
# ach_coronation.0028 - Host: Drinking contest with a detractor
# ach_coronation.0029 - Host: Guests offer to help get a hunt going
######################
# Host: You see some potential plotters whispering
# 0011
scripted_trigger ach_coronation_0011_eligible_vassal_trigger = {
is_physically_able_ai_adult = yes
is_vassal_of = involved_activity.activity_host
trigger_if = { # Should be someone you'd actually suspect
limit = {
scope:host = { # But what if they're in on it?
NOT = { has_trait = paranoid }
}
}
NOR = {
has_any_best_good_relationship_with_character_trigger = { CHARACTER = root }
has_trait = loyal
}
}
}
scripted_trigger ach_coronation_0011_is_suitable_active_scheme_trigger = {
is_scheme_exposed = no
hostile_scheme_trigger = yes
scheme_target_character = { is_participant_in_activity = involved_activity }
}
scripted_effect ach_coronation_0011_coward_setup_effect = {
save_scope_as = coward
if = { # If the plotter has a scheme and the coward's in on it, grab that
limit = {
scope:hostile_scheme ?= {
any_scheme_agent_character = { this = scope:coward }
}
}
scope:hostile_scheme = {
save_scope_as = coward_scheme
}
}
else_if = { # If the coward has a scheme of their own, grab that
limit = {
any_scheme = {
ach_coronation_0011_is_suitable_active_scheme_trigger = yes
}
}
random_scheme = {
limit = { # Grab any targetting the Host
ach_coronation_0011_is_suitable_active_scheme_trigger = yes
scheme_target_character = scope:host
}
alternative_limit = { # Else just one targetting someone at the activity
ach_coronation_0011_is_suitable_active_scheme_trigger = yes
}
save_scope_as = coward_scheme
}
}
else = { # If there is no scheme, they will babble about whatever skeleton they have in their closet
if = {
limit = { # If they don't have a secret, generate one
NOT = {
any_secret = { NOT = { is_known_by = scope:host } }
}
}
hidden_effect = { give_random_likely_secret_effect = yes }
}
random_secret = {
limit = { NOT = { is_known_by = scope:host } }
save_scope_as = uncovered_secret
}
}
}
ach_coronation.0011 = {
type = activity_event
title = ach_coronation.0011.t
desc = ach_coronation.0011.desc
left_portrait = {
character = root
animation = eavesdrop
camera = camera_event_very_left
}
right_portrait = {
character = scope:plotter
animation = dismissal
camera = camera_event_center_pointing_left
}
center_portrait = {
character = scope:coward
animation = worry
}
cooldown = { years = 1 }
theme = coronation_activity
override_background = { reference = throne_room }
trigger = {
involved_activity = {
any_attending_character = {
ach_coronation_0011_eligible_vassal_trigger = yes
count >= 2
}
}
}
immediate = {
involved_activity = {
activity_host = { save_scope_as = host }
# Grab a likely ringleader
random_attending_character = {
limit = {
is_powerful_vassal = yes
ach_coronation_0011_eligible_vassal_trigger = yes
any_scheme = { ach_coronation_0011_is_suitable_active_scheme_trigger = yes }
}
alternative_limit = {
is_powerful_vassal = yes
ach_coronation_0011_eligible_vassal_trigger = yes
}
alternative_limit = {
ach_coronation_0011_eligible_vassal_trigger = yes
}
weight = {
base = 1
ach_likely_plotter_modifier = yes
modifier = { # Weighted up if there is actually a scheme against a guest
any_targeting_scheme = { ach_coronation_0011_is_suitable_active_scheme_trigger = yes }
factor = {
value = 2
if = { # And ofc if that guest is you
limit = { any_targeting_scheme = { scheme_target_character = scope:host } }
add = 1
}
}
}
}
if = {
limit = {
any_scheme = {
ach_coronation_0011_is_suitable_active_scheme_trigger = yes
}
}
random_scheme = {
limit = {
ach_coronation_0011_is_suitable_active_scheme_trigger = yes
scheme_target_character = scope:host
}
alternative_limit = {
ach_coronation_0011_is_suitable_active_scheme_trigger = yes
}
save_scope_as = hostile_scheme
}
}
save_scope_as = plotter
}
# Grab a likely weak-link
random_attending_character = {
limit = {
NOT = { this = scope:plotter }
ach_coronation_0011_eligible_vassal_trigger = yes
OR = {
any_scheme = { ach_coronation_0011_is_suitable_active_scheme_trigger = yes }
has_any_secrets = yes # Grab someone with secrets if possible
}
}
alternative_limit = {
NOT = { this = scope:plotter }
ach_coronation_0011_eligible_vassal_trigger = yes
}
weight = {
base = 1
ach_unlikely_plotter_modifier = yes
modifier = { # Grab them if they are actually an agent against you
scope:hostile_scheme ?= {
any_scheme_agent_character = { this = root }
}
factor = 4
}
}
ach_coronation_0011_coward_setup_effect = yes
}
}
}
option = { # Break the coward
name = ach_coronation.0011.b
skill = intrigue
flavor = ach_coronation.0011.b.flavor
custom_tooltip = ach_coronation.0011.b.tt
trigger = {
intrigue >= very_high_skill_rating
}
hidden_effect = {
if = {
limit = { exists = scope:coward_scheme }
send_interface_toast = {
type = event_toast_effect_good
title = ach_coronation.0011.coward.success
left_icon = root
right_icon = scope:coward
scope:coward_scheme = {
expose_scheme = yes
}
}
}
else = {
send_interface_toast = {
type = event_toast_effect_good
title = ach_coronation.0011.coward.success
left_icon = root
right_icon = scope:coward
scope:uncovered_secret = {
reveal_to = root
}
}
}
}
if = {
limit = {
can_add_hook = {
target = scope:host
type = manipulation_hook
}
}
add_hook = {
type = manipulation_hook
target = scope:host
}
}
scope:coward = {
add_opinion = {
target = root
modifier = scared_opinion
opinion = -20
}
add_stress = major_stress_gain
add_prestige = minor_prestige_loss
}
stress_impact = {
sadistic = medium_stress_loss
trusting = medium_stress_gain
compassionate = medium_stress_gain
}
ai_chance = {
base = 100
modifier = {
add = {
value = 0
add = intrigue
multiply = 5
}
}
opinion_modifier = {
opinion_target = scope:coward
multiplier = -1
}
modifier = {
OR = {
has_trait = compassionate
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:coward }
}
factor = 0
}
modifier = {
has_trait = sadistic
factor = 2.5
}
modifier = {
has_trait = callous
factor = 2
}
modifier = {
has_trait = schemer
factor = 2
}
modifier = {
has_trait = trusting
factor = 0.5
}
modifier = {
has_trait = compassionate
factor = 0.5
}
}
}
option = { # Arrest the traitors!
name = {
trigger = { has_trait = paranoid }
text = ach_coronation.0011.c.paranoid
}
name = {
trigger = { has_trait = wrathful }
text = ach_coronation.0011.c.wrathful
}
name = ach_coronation.0011.c
trait = paranoid
trait = arbitrary
trigger = {
OR = {
has_trait = paranoid
has_trait = arbitrary
has_activity_intent = coronation_weaken_detractors
}
}
imprison_character_effect = {
IMPRISONER = root
TARGET = scope:plotter
}
imprison_character_effect = {
IMPRISONER = root
TARGET = scope:coward
}
add_dread = medium_dread_gain
if = {
limit = {
scope:activity = {
any_attending_character = {
is_vassal_of = root
has_vassal_stance = belligerent
NOT = { is_in_guest_subset = { name = detractor } }
NOR = {
this = scope:plotter
this = scope:coward
}
}
}
}
coronation_weaken_detractors_opinion_effect = yes
}
stress_impact = {
wrathful = medium_stress_loss
arbitrary = medium_stress_loss
paranoid = major_stress_loss
just = major_stress_gain
calm = major_stress_gain
}
ai_chance = {
base = 0
modifier = {
add = {
value = 0
add = intrigue
multiply = 5
}
}
opinion_modifier = {
opinion_target = scope:plotter
multiplier = -1
}
modifier = {
has_trait = irritable
add = 25
}
modifier = {
has_trait = wrathful
add = 25
}
modifier = {
has_trait = arbitrary
add = 25
}
modifier = {
has_trait = paranoid
add = 50
}
modifier = {
has_trait = calm
factor = 0.5
}
modifier = {
OR = {
has_trait = just
has_trait = compassionate
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:plotter }
}
factor = 0
}
}
}
option = { # Catch HerHim in a lie!
name = ach_coronation.0011.a
skill = intrigue
reverse_add_opinion = {
target = scope:plotter
modifier = insult_opinion
opinion = -20
}
duel = {
skill = intrigue
target = scope:plotter
20 = {
compare_modifier = {
value = scope:duel_value
multiplier = 1
min = -19
}
desc = ach_coronation.0011.a.success
custom_tooltip = ach_coronation.0011.a.success.tt
hidden_effect = {
if = {
limit = { exists = scope:hostile_scheme }
send_interface_toast = {
type = event_toast_effect_good
title = ach_coronation.0011.scheme.plotter.toast
left_icon = root
right_icon = scope:plotter
scope:hostile_scheme = { expose_scheme = yes }
}
}
else = {
send_interface_toast = {
type = event_toast_effect_good
title = ach_coronation.0011.false.toast
left_icon = root
right_icon = scope:plotter
add_prestige = minor_prestige_loss
}
}
}
}
10 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
min = -9
}
desc = ach_coronation.0011.a.failure
send_interface_toast = {
type = event_toast_effect_good
title = ach_coronation.0011.false.toast
left_icon = root
right_icon = scope:plotter
add_prestige = minor_prestige_loss
}
}
}
stress_impact = {
trusting = medium_stress_gain
paranoid = medium_stress_loss
}
ai_chance = {
base = 150
modifier = {
intrigue <= mediocre_skill_rating
add = -50
}
modifier = {
has_trait = paranoid
factor = 2
}
# Don't weight up by a crazy amount - it's already high
modifier = {
has_trait = schemer
factor = 1.25
}
modifier = {
has_trait = diligent
factor = 1.25
}
modifier = {
OR = {
intrigue <= low_skill_rating
has_trait = trusting
}
factor = 0
}
}
}
option = { # Move on
name = ach_coronation.0011.d
if = {
limit = { has_trait = paranoid }
add_character_modifier = {
modifier = ach_coronation_trusts_nobody_modifier
years = 10
}
}
else_if = {
limit = { has_trait = trusting }
add_character_modifier = {
modifier = ach_coronation_blissful_ignorance_modifier
years = 10
}
}
reverse_add_opinion = {
target = scope:plotter
modifier = relieved_opinion
opinion = 10
}
reverse_add_opinion = {
target = scope:coward
modifier = relieved_opinion
opinion = 10
}
stress_impact = {
# This is somewhat worrying
base = minor_stress_gain
# Doesn't actually care
lazy = minor_stress_loss
trusting = minor_stress_loss
# Really really cares
paranoid = major_stress_gain
}
ai_chance = {
base = 75
opinion_modifier = {
opinion_target = scope:plotter
}
modifier = {
OR = {
has_trait = paranoid
has_trait = deceitful
has_intrigue_lifestyle_trait_trigger = yes
}
factor = 0.1
}
modifier = {
has_trait = trusting
factor = 2
}
modifier = {
has_trait = lazy
factor = 2
}
modifier = {
has_trait = schemer
factor = 0.5
}
}
}
}
######################
# Host: Vassals squabble over coronation roles
# 0012
scripted_effect get_random_coronation_object = {
# Decided here so the loc is consistent between the description and the options
random_list = {
# Cultural objects - weighted higher since they're more interesting
10 = {
trigger = {
OR = {
has_culture = culture:irish
has_title = title:k_ireland
}
}
set_variable = {
name = random_coronation_object
value = flag:white_rod
}
}
10 = {
trigger = { has_title = title:e_hre }
set_variable = {
name = random_coronation_object
value = flag:coronation_cloak
}
}
10 = {
trigger = { any_equipped_character_artifact = { artifact_slot_type = regalia } }
set_variable = {
name = random_coronation_object
value = flag:equipped_regalia
}
}
1 = {
trigger = { OR = { faith.religion = religion:eastern_orthodox_religion faith.religion = religion:catholic_religion faith.religion = religion:protestant_religion } }
set_variable = {
name = random_coronation_object
value = flag:apostolic_cross
}
}
1 = {
trigger = {
faith = {
NOR = {
has_doctrine_parameter = unreformed_syncretic_actor_opinion_active
has_doctrine_parameter = unreformed
}
}
}
set_variable = {
name = random_coronation_object
value = flag:royal_religioustext
}
}
1 = {
set_variable = {
name = random_coronation_object
value = flag:sceptre_and_orb
}
}
1 = {
set_variable = {
name = random_coronation_object
value = flag:coronation_spoon
}
}
1 = {
set_variable = {
name = random_coronation_object
value = flag:coronation_sword
}
}
1 = {
set_variable = {
name = random_coronation_object
value = flag:coronation_rings
}
}
}
}
scripted_trigger is_eligible_random_squabbler = {
location = root.location
is_physically_able_ai_adult = yes
NOR = {
this = root
involved_activity.var:officiator ?= this
}
OR = {
AND = {
is_vassal_of = root
highest_held_title_tier >= tier_county
}
is_close_family_of = root
is_councillor_of = root
AND = {
is_allied_to = root
highest_held_title_tier >= tier_county
}
}
}
scripted_trigger ach_coronation_0012_mutual_enmity = {
save_temporary_scope_as = squabbler_temp
scope:activity = {
any_attending_character = {
NOT = {
this = scope:squabbler_temp
}
is_eligible_random_squabbler = yes
#Check that they don't love each other
opinion = {
target = scope:squabbler_temp
value <= 20
}
reverse_opinion = {
target = scope:squabbler_temp
value <= 20
}
}
}
}
ach_coronation.0012 = {
type = activity_event
title = ach_coronation.0012.t
desc = ach_coronation.0012.desc
left_portrait = {
character = root
animation = disapproval
}
center_portrait = {
character = scope:first
animation = debating
}
right_portrait = {
character = scope:second
animation = rage
}
cooldown = { years = 1 }
theme = coronation_activity
override_background = { reference = study }
trigger = {
involved_activity = {
has_current_phase = coronation_phase_preparations
any_attending_character = {
is_eligible_random_squabbler = yes
count >= 1
ach_coronation_0012_mutual_enmity = yes
}
}
}
immediate = {
get_random_coronation_object = yes
involved_activity = {
activity_host = { save_scope_as = host }
random_attending_character = { # Grab two random attendees to be used in loc
limit = {
is_eligible_random_squabbler = yes
highest_held_title_tier >= tier_duchy
ach_coronation_0012_mutual_enmity = yes
}
alternative_limit = {
is_eligible_random_squabbler = yes
save_temporary_scope_as = squabbler_temp
ach_coronation_0012_mutual_enmity = yes
}
weight = {
base = 1
ach_squabbler_modifier = yes
# Try to get someone who has a rivalry with another vassal already if possible
modifier = {
factor = 4
any_relation = {
type = rival
is_participant_in_activity = scope:activity
is_eligible_random_squabbler = yes
is_vassal_of = scope:host
}
}
}
save_scope_as = first
}
random_attending_character = {
limit = {
is_eligible_random_squabbler = yes
this != scope:first
# Try and get the rival of the first character
has_relation_rival = scope:first
highest_held_title_tier >= tier_duchy
ach_coronation_0012_mutual_enmity = yes
}
alternative_limit = {
is_eligible_random_squabbler = yes
this != scope:first
# Try and get the rival of the first character
has_relation_rival = scope:first
ach_coronation_0012_mutual_enmity = yes
}
alternative_limit = {
is_eligible_random_squabbler = yes
this != scope:first
highest_held_title_tier >= tier_duchy
ach_coronation_0012_mutual_enmity = yes
}
alternative_limit = {
is_eligible_random_squabbler = yes
this != scope:first
ach_coronation_0012_mutual_enmity = yes
}
weight = {
base = 1
ach_squabbler_modifier = yes
# Prefer those who hate the first vassal
opinion_modifier = {
opinion_target = scope:first
multiplier = -0.01
}
# And those likewise hated by
opinion_modifier = {
who = scope:first
opinion_target = this
multiplier = -0.01
}
# And a final boost if they have any sort of negative relationship, just in case
modifier = {
factor = 2
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:first }
}
}
save_scope_as = second
}
}
}
option = { # Vassal 1 is my favorite!
name = ach_coronation.0012.a
coronation_move_towards_supporter_effect = { CHARACTER = scope:first }
coronation_move_towards_detractor_effect = { CHARACTER = scope:second }
scope:first = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 40
}
add_prestige = medium_prestige_gain
}
scope:second = {
add_opinion = {
target = root
modifier = insulted_opinion
opinion = -20
}
add_prestige = medium_prestige_loss
hidden_effect = {
if = {
limit = {
is_ai = yes
scope:first = {
is_ai = yes
}
}
progress_towards_rival_effect = {
REASON = rival_stole_coronation_role
CHARACTER = scope:first
OPINION = -40
}
}
}
}
stress_impact = {
fickle = minor_stress_gain
}
ai_chance = {
base = 0
opinion_modifier = {
opinion_target = scope:first
}
opinion_modifier = {
opinion_target = scope:second
multiplier = -1
}
modifier = {
has_trait = fickle
factor = 0.5
}
}
}
option = { # Vassal 2 so 2 deserves my support!
name = ach_coronation.0012.b
coronation_move_towards_supporter_effect = { CHARACTER = scope:second }
coronation_move_towards_detractor_effect = { CHARACTER = scope:first }
scope:second = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 40
}
add_prestige = medium_prestige_gain
}
scope:first = {
add_opinion = {
target = root
modifier = insulted_opinion
opinion = -20
}
add_prestige = medium_prestige_loss
hidden_effect = {
if = {
limit = {
is_ai = yes
scope:second = {
is_ai = yes
}
}
progress_towards_rival_effect = {
REASON = rival_stole_coronation_role
CHARACTER = scope:second
OPINION = -40
}
}
}
}
stress_impact = {
fickle = minor_stress_gain
}
ai_chance = {
base = 0
opinion_modifier = {
opinion_target = scope:second
}
opinion_modifier = {
opinion_target = scope:first
multiplier = -1
}
modifier = {
has_trait = fickle
factor = 0.5
}
}
}
option = { # You can both do it together!
name = ach_coronation.0012.c
flavor = ach_coronation.0012.c.flavor
trigger = {
NOR = {
has_trait = diplomatic_court
trigger_if = {
limit = { has_royal_court = yes }
court_grandeur_current_level >= 8
}
}
}
duel = {
skill = diplomacy
value = 10
50 = {
desc = ach_coronation.0012.c.tt.success
compare_modifier = {
value = scope:duel_value
multiplier = 1.5
min = -49
}
send_interface_toast = {
type = event_toast_effect_good
title = ach_coronation.0012.c.tt.success
left_icon = root
custom_tooltip = coronation_tt_positive_tiny
scope:activity = { activity_special_type_progression_tiny = yes }
add_diplomacy_lifestyle_xp = medium_lifestyle_experience
}
coronation_add_magnificence_log_effect = {
VALUE = flag:positive_tiny
CHAR = root
}
}
50 = {
desc = ach_coronation.0012.c.tt.failure
compare_modifier = {
value = scope:duel_value
multiplier = -1.5
min = -49
}
send_interface_toast = {
type = event_toast_effect_bad
title = ach_coronation.0012.c.tt.failure
left_icon = root
add_prestige = minor_prestige_loss
}
scope:first = {
if = {
limit = {
can_set_relation_rival_trigger = { CHARACTER = scope:second }
is_ai = yes
scope:second = { is_ai = yes }
}
set_relation_rival = {
target = scope:second
reason = rival_ruined_coronation_role
}
}
}
}
}
stress_impact = {
craven = minor_stress_loss
fickle = minor_stress_loss
}
ai_chance = {
base = 0
modifier = {
add = 25
OR = {
has_trait = craven
has_trait = fickle
}
}
modifier = {
add = 50
AND = {
opinion = {
target = scope:first
value >= low_positive_opinion
}
opinion = {
target = scope:second
value >= low_positive_opinion
}
}
}
opinion_modifier = {
opinion_target = scope:first
multiplier = 0.5
}
opinion_modifier = {
opinion_target = scope:second
multiplier = 0.5
}
modifier = {
factor = 0
diplomacy < low_skill_rating
}
}
}
option = { # I have the perfect idea!
name = ach_coronation.0012.d
flavor = ach_coronation.0012.d.flavor
trigger = {
OR = {
has_trait = diplomatic_court
trigger_if = { # This ain't your first rodeo
limit = { has_royal_court = yes }
court_grandeur_current_level >= 8
}
}
}
trait = diplomatic_court_1
# Legitimacy gets a lil bump
add_legitimacy_effect = { LEGITIMACY = minor_legitimacy_gain }
# And the activity gets a small bump as well
custom_tooltip = coronation_tt_positive_medium
scope:activity = {
activity_special_type_progression_medium = yes
add_activity_log_entry = {
key = coronation_elaborate_ceremony_log
score = 25
tags = { positive }
character = scope:first
target = scope:second
}
}
scope:first = {
add_opinion = {
target = root
modifier = impressed_opinion
opinion = 20
}
}
scope:second = {
add_opinion = {
target = root
modifier = impressed_opinion
opinion = 20
}
}
stress_impact = {
arrogant = medium_stress_loss
}
ai_chance = {
base = 150
modifier = {
AND = {
opinion = {
target = scope:first
value <= low_negative_opinion
}
opinion = {
target = scope:second
value <= low_negative_opinion
}
}
add = -50
}
modifier = {
has_trait = arrogant
factor = 1.5
}
modifier = {
AND = {
opinion = {
target = scope:first
value < medium_negative_opinion
}
opinion = {
target = scope:second
value < medium_negative_opinion
}
}
factor = 0.5
}
}
}
option = { # Neither of you are worthy of touching my random_coronation_object!
name = ach_coronation.0012.e
scope:first = {
add_opinion = {
target = root
modifier = insulted_opinion
opinion = -10
}
}
scope:second = {
add_opinion = {
target = root
modifier = insulted_opinion
opinion = -10
}
}
add_character_modifier = {
modifier = ach_imperious_modifier
years = 5
}
add_prestige = minor_prestige_gain
stress_impact = {
impatient = minor_stress_loss
lazy = minor_stress_loss
arrogant = minor_stress_loss
}
ai_chance = {
base = 50
modifier = {
add = 50
AND = {
opinion = {
target = scope:first
value >= low_positive_opinion
}
opinion = {
target = scope:second
value >= low_positive_opinion
}
}
}
modifier = {
add = -50
AND = {
opinion = {
target = scope:first
value <= low_positive_opinion
}
opinion = {
target = scope:second
value <= low_positive_opinion
}
}
}
modifier = {
OR = {
has_trait = impatient
has_trait = lazy
has_trait = callous
has_trait = arrogant
has_trait = wrathful
}
factor = 1.5
}
opinion_modifier = {
opinion_target = scope:first
multiplier = 0.5
}
opinion_modifier = {
opinion_target = scope:second
multiplier = 0.5
}
}
}
}
######################
# Host: You eavesdrop on some peasants
# 0013
scripted_trigger ach_coronation_0013_claimant_trigger = {
# Shouldn't be friendly
has_any_good_relationship_with_root_trigger = no
is_alive = yes
is_adult = yes
NOT = { is_courtier_of = scope:host }
# Don't include your kids (unless you hate the little bastards)
trigger_if = {
limit = { has_any_bad_relationship_with_root_trigger = no }
NOT = { is_child_of = scope:host }
}
}
scripted_effect ach_coronation_0013_get_eligible_pretender_effect = {
scope:host = {
if = {
limit = {
any_held_title = {
any_claimant = { ach_coronation_0013_claimant_trigger = yes }
}
}
random_held_title = {
# Prefer strong claimants (Who you're thus more likely to also hate)
limit = {
any_claimant = {
has_strong_claim_on = prev
ach_coronation_0013_claimant_trigger = yes
}
}
alternative_limit = {
any_claimant = { ach_coronation_0013_claimant_trigger = yes }
}
weight = {
# Prefer primary title
modifier = {
this = scope:host.primary_title
factor = 4
}
# Prefer higher tier titles
modifier = { factor = tier }
}
random_claimant = {
limit = { ach_coronation_0013_claimant_trigger = yes }
save_scope_as = claimant
}
}
}
}
}
scripted_effect ach_coronation_0013_get_gossip_type_effect = {
random_list = {
# More likely to get nice modifiers
200 = {
save_scope_value_as = {
name = gossip_type
value = flag:nice
}
# Unless you're a tyrant (but some people still like tyrants)
modifier = {
add = {
value = tyranny
multiply = -1
}
}
}
100 = {
save_scope_value_as = {
name = gossip_type
value = flag:mean
}
modifier = {
add = {
value = tyranny
}
}
}
}
}
ach_coronation.0013 = {
type = activity_event
title = ach_coronation.0013.t
desc = {
desc = ach_coronation.0013.intro
first_valid = {
triggered_desc = {
trigger = { exists = scope:rain_day }
desc = ach_coronation.0013.desc_opening.rainy_day
}
desc = ach_coronation.0013.desc_opening.dry_day
}
desc = ach_coronation.0013.desc_opening
first_valid = {
triggered_desc = {
trigger = { scope:gossip_type = flag:mean }
desc = {
random_valid = {
desc = ach_coronation.0013.desc_conversation.mean.1
desc = ach_coronation.0013.desc_conversation.mean.2
desc = ach_coronation.0013.desc_conversation.mean.3
desc = {
desc = ach_coronation.0013.desc_conversation.mean.4
first_valid = {
triggered_desc = {
trigger = { has_trait = lustful }
desc = ach_coronation.0013.desc_conversation.mean.4.lustful.host
}
triggered_desc = {
trigger = { has_trait = chaste }
desc = ach_coronation.0013.desc_conversation.mean.4.chaste
}
desc = ach_coronation.0013.desc_conversation.mean.4.not_lustful
}
}
desc = ach_coronation.0013.desc_conversation.mean.5
}
}
}
triggered_desc = {
trigger = { scope:gossip_type = flag:nice }
desc = {
random_valid = {
desc = ach_coronation.0013.desc_conversation.nice.1
desc = ach_coronation.0013.desc_conversation.nice.2
desc = ach_coronation.0013.desc_conversation.nice.3
desc = ach_coronation.0013.desc_conversation.nice.4
triggered_desc = {
trigger = { exists = scope:claimant }
desc = ach_coronation.0013.desc_conversation.nice.5
}
}
}
}
}
}
left_portrait = {
character = root
animation = interested
camera = camera_event_table_center_background
triggered_animation = {
trigger = { scope:gossip_type = flag:mean }
animation = shock
}
triggered_animation = {
trigger = { scope:gossip_type = flag:nice }
animation = happiness
}
}
center_portrait = {
character = scope:peasant
animation = wedding_drunk
camera = camera_event_table_left_2
hide_info = yes
}
right_portrait = {
character = scope:peasant_2
animation = drink
camera = camera_event_table_right_far_2
hide_info = yes
}
cooldown = { years = 1 }
theme = coronation_activity
override_background = { reference = alley_day }
override_effect_2d = {
trigger = { exists = scope:rain_day }
reference = rain
}
trigger = {
OR = {
involved_activity.var:activity_special_type_progression < 25
location.county = { county_control < 25 }
}
#V Serious roots
NOR = {
coronation_host_east_asian_trigger = yes
highest_held_title_tier > tier_empire
}
}
# Peasants are less likely to spread rumors about rulers they fear
weight_multiplier = {
base = 1
compare_modifier = {
value = dread
multiplier = -0.01
# But sometimes you drink a bit too much with the lads and get y'allselves killed. Opsec, people!
min = -0.9
}
}
immediate = {
save_scope_as = host
involved_activity = {
activity_location.barony.holder = {
save_scope_as = baron
}
}
# Generate some gossipy peasants
create_character = {
location = root.location
template = drunken_peasant_character
culture = root.location.county.culture
faith = root.location.county.faith
save_scope_as = peasant
after_creation = { # To make sure they fit the event window
if = {
limit = { has_trait = giant }
remove_trait = giant
}
if = {
limit = { has_trait = dwarf }
remove_trait = dwarf
}
}
}
create_character = {
location = root.location
template = drunken_peasant_character
culture = root.location.county.culture
faith = root.location.county.faith
save_scope_as = peasant_2
after_creation = {
if = {
limit = { has_trait = giant }
remove_trait = giant
}
if = {
limit = { has_trait = dwarf }
remove_trait = dwarf
}
}
}
# And stuff for loc
random_dummy_gender_effect = yes
random_rain_snow_chance_effect = yes
ach_coronation_0013_get_eligible_pretender_effect = yes
ach_coronation_0013_get_gossip_type_effect = yes
}
option = { # Weaken Detractors: Focus them on your opponents
name = ach_coronation.0013.a.weaken_detractors
reason = activity_intent
flavor = ach_coronation.0013.a.weaken_detractors.flavor
add_internal_flag = special
trigger = {
has_activity_intent = coronation_weaken_detractors
involved_activity = {
any_guest_subset = { # There are actually enough people to do this to
name = detractor
count >= 2
}
}
}
custom_tooltip = two_detractors_get_negative_rumors_tt
hidden_effect = {
involved_activity = {
random_guest_subset = {
name = detractor
weight = {
base = 1
is_of_major_interest_to_weight_up_modifier = { CHARACTER = root }
is_of_minor_interest_to_weight_up_modifier = { CHARACTER = root }
# Less likely to get rumors to stick on proper political operators
modifier = {
add = {
value = intrigue
multiply = -5
}
add = {
value = diplomacy
multiply = -5
}
}
}
add_character_modifier = {
modifier = ach_negative_rumors_modifier
years = 5
}
save_scope_as = detractor_1
}
random_guest_subset = {
name = detractor
weight = {
base = 1
is_of_major_interest_to_weight_up_modifier = { CHARACTER = root }
is_of_minor_interest_to_weight_up_modifier = { CHARACTER = root }
# Less likely to get rumors to stick on proper political operators
modifier = {
add = {
value = intrigue
multiply = -5
}
add = {
value = diplomacy
multiply = -5
}
}
}
add_character_modifier = {
modifier = ach_negative_rumors_modifier
years = 5
}
save_scope_as = detractor_2
}
}
send_interface_toast = {
title = ach_coronation.0013.a.weaken_detractors.tt
left_icon = scope:detractor_1
right_icon = scope:detractor_2
scope:detractor_1 = {
add_character_modifier = {
modifier = ach_negative_rumors_modifier
years = 5
}
}
scope:detractor_2 = {
add_character_modifier = {
modifier = ach_negative_rumors_modifier
years = 5
}
}
}
}
remove_short_term_gold = minor_gold_value
highlight_portrait = scope:peasant
highlight_portrait = scope:peasant_2
coronation_weaken_detractors_opinion_effect = yes
stress_impact = {
arrogant = minor_stress_gain # Talking to peasants
shy = minor_stress_gain # Talking to anyone
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 1
}
modifier = {
has_trait = arrogant
add = -25
}
modifier = {
has_trait = shy
add = -25
}
modifier = {
has_trait = greedy
add = -25
}
modifier = {
has_trait = profligate
add = 25
}
modifier = {
has_trait = generous
add = 25
}
modifier = {
has_trait = lifestyle_reveler
add = 25
}
modifier = {
has_trait = gregarious
factor = 2
}
modifier = {
has_trait = schemer
factor = 2
}
modifier = {
has_trait = honest
factor = 0.5
}
}
}
option = { # Host: Do they have any idea who you are!?
name = ach_coronation.0013.c
trigger = {
scope:gossip_type = flag:mean
}
skill = diplomacy
duel = {
skills = { diplomacy prowess }
value = medium_skill_rating
# you manage to win them over
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ach_coronation.0013.c.tt.success
send_interface_toast = {
title = ach_coronation.0013.c.tt.success
left_icon = root
add_prestige = medium_prestige_gain
custom_tooltip = coronation_tt_positive_tiny
scope:activity = { activity_special_type_progression_tiny = yes }
}
coronation_add_magnificence_log_effect = {
VALUE = flag:positive_tiny
CHAR = root
}
}
# The rumors spread further
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ach_coronation.0013.c.tt.failure
send_interface_toast = {
title = ach_coronation.0013.c.tt.failure
left_icon = root
add_prestige = minor_prestige_loss
add_dread = minor_dread_loss
add_character_modifier = {
modifier = ach_negative_rumors_modifier
years = 5
}
}
}
}
stress_impact = {
forgiving = minor_stress_gain
just = minor_stress_loss
wrathful = minor_stress_loss
vengeful = minor_stress_loss
}
ai_chance = {
base = 10
modifier = {
has_trait = wrathful
add = 25
}
ai_value_modifier = {
ai_boldness = 0.5
ai_sociability = 0.5
}
}
}
option = { # Set the guards on them
name = ach_coronation.0013.b
trigger = { scope:gossip_type = flag:mean }
add_character_modifier = {
modifier = ach_negative_rumors_modifier
years = 5
}
rightfully_imprison_character_less_verbose_effect = {
TARGET = scope:peasant
IMPRISONER = root
}
rightfully_imprison_character_less_verbose_effect = {
TARGET = scope:peasant_2
IMPRISONER = root
}
add_tyranny = minor_tyranny_gain
add_dread = minor_dread_gain
root.location = {
add_province_modifier = {
modifier = ach_arrested_rumormongers_modifier
years = 5
}
}
add_character_modifier = {
modifier = ach_arrested_rumormongers_character_modifier
years = 5
}
highlight_portrait = scope:peasant
stress_impact = {
forgiving = medium_stress_gain
compassionate = minor_stress_gain
calm = miniscule_stress_gain
irritable = minor_stress_loss
wrathful = medium_stress_loss
vengeful = medium_stress_loss
}
ai_chance = {
base = 20
modifier = {
has_trait = wrathful
add = 25
}
modifier = {
has_trait = vengeful
add = 50
}
ai_value_modifier = {
ai_boldness = 1
ai_energy = 1
ai_compassion = -1
}
}
}
option = { # Join them
name = ach_coronation.0013.d
trigger = { scope:gossip_type = flag:nice }
add_character_modifier = {
modifier = ach_positive_rumors_modifier
years = 10
}
if = {
limit = {
has_trait = lifestyle_reveler
has_trait_xp = {
trait = lifestyle_reveler
value < 100
}
}
add_trait_xp = {
trait = lifestyle_reveler
value = 10
}
}
else = {
random = {
chance = 25
if = {
limit = {
NOT = { has_trait = lifestyle_reveler }
}
add_trait = lifestyle_reveler
}
}
}
add_prestige = minor_prestige_loss
highlight_portrait = scope:peasant
highlight_portrait = scope:peasant_2
stress_impact = {
base = medium_stress_loss
gregarious = minor_stress_loss
lifestyle_reveler = minor_stress_loss
shy = major_stress_gain
arrogant = major_stress_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 1
}
}
}
option = { # Who cares?
name = ach_coronation.0013.e
name = {
trigger = { scope:gossip_type = flag:mean }
text = ach_coronation.0013.e.disagrees
}
flavor = {
first_valid = {
triggered_desc = {
trigger = {
scope:gossip_type = flag:mean
}
desc = ach_coronation.0013.e.flavor.mean
}
desc = ach_coronation.0013.e.flavor.nice
}
}
if = {
limit = { scope:gossip_type = flag:nice }
add_character_modifier = {
modifier = ach_positive_rumors_modifier
years = 5
}
stress_impact = {
base = minor_stress_loss
}
}
else = {
add_character_modifier = {
modifier = ach_negative_rumors_modifier
years = 5
}
stress_impact = {
base = minor_stress_loss
vengeful = medium_stress_gain
wrathful = minor_stress_gain
forgiving = medium_stress_loss
}
}
ai_chance = {
base = 10
ai_value_modifier = {
ai_boldness = -0.5
ai_sociability = -0.5
ai_energy = -0.5
}
}
}
after = {
if = {
limit = {
scope:peasant = { is_imprisoned = no }
}
hidden_effect = {
scope:peasant = { silent_disappearance_effect = yes }
scope:peasant_2 = { silent_disappearance_effect = yes }
}
}
}
}
######################
# Guest: Yell fire
# 0014
scripted_trigger ach_coronation_0014_random_attendee_trigger = {
NOR = {
this = scope:host
this = scope:crush_initiator
involved_activity.var:officiator ?= this
}
is_available_in_activity_trigger = yes
}
scripted_effect ach_coronation_0015_crushed_guest_effect = {
involved_activity = {
# Wound X characters and kill Y %
while = {
count = $COUNT$
random_attending_character = {
limit = {
ach_coronation_0014_random_attendee_trigger = yes
NOT = { is_in_list = in_crowd_crush }
}
add_to_list = in_crowd_crush
increase_wounds_effect = { REASON = crowd_stampede }
create_character_memory = {
type = injured_in_crowd_crush_at_coronation_memory
participants = {
coronation_host = scope:host
}
}
random = {
chance = $DEATH_CHANCE$
death = { death_reason = death_crowd_stampede }
}
}
}
# Add the stampede modifier
root.location = {
if = {
limit = {
NOT = { has_province_modifier = ach_coronation_stampede_modifier }
}
add_province_modifier = { modifier = ach_coronation_stampede_modifier years = 5 }
county = { change_county_control = minor_county_control_loss }
}
}
}
}
# Crowd crush effects used in tooltips in 0014 and the effects of 0015
scripted_effect ach_coronation_0015_minor_crush_effect = {
custom_tooltip = few_guests_wounded
hidden_effect = { ach_coronation_0015_crushed_guest_effect = { COUNT = 2 DEATH_CHANCE = 0 } }
}
scripted_effect ach_coronation_0015_medium_crush_effect = {
custom_tooltip = many_guests_wounded
hidden_effect = { ach_coronation_0015_crushed_guest_effect = { COUNT = 8 DEATH_CHANCE = 0 } }
}
scripted_effect ach_coronation_0015_major_crush_effect = {
custom_tooltip = many_guests_wounded_or_killed
hidden_effect = { ach_coronation_0015_crushed_guest_effect = { COUNT = 12 DEATH_CHANCE = 4 } }
}
ach_coronation.0014 = {
type = activity_event
title = ach_coronation.0014.t
desc = {
desc = ach_coronation.0014.desc
first_valid = {
triggered_desc = {
trigger = { scope:crush_scenario = flag:rain }
desc = ach_coronation.0014.desc.weather.rain
}
triggered_desc = {
trigger = { scope:crush_scenario = flag:generic_indoors }
desc = ach_coronation.0014.desc.weather.indoors
}
desc = ach_coronation.0014.desc.weather.clear
}
first_valid = {
triggered_desc = {
trigger = { scope:crush_scenario = flag:rain }
desc = ach_coronation.0014.desc.reason.rain
}
triggered_desc = {
trigger = { scope:crush_scenario = flag:local_discontent }
desc = ach_coronation.0014.desc.reason.local_discontent
}
triggered_desc = {
trigger = { scope:crush_scenario = flag:low_control }
desc = ach_coronation.0014.desc.reason.low_control
}
triggered_desc = {
trigger = { scope:crush_scenario = flag:generic_indoors }
desc = ach_coronation.0014.desc.reason.generic_indoors
}
triggered_desc = {
trigger = { scope:crush_scenario = flag:generic_outdoors }
desc = ach_coronation.0014.desc.reason.generic_outdoors
}
}
first_valid = {
triggered_desc = {
trigger = {
culture = { has_cultural_pillar = language_greek }
OR = {
has_title = title:e_byzantium
top_liege = {
has_title = title:e_byzantium
}
}
}
desc = ach_coronation.0014.desc.ending.byzantine
}
triggered_desc = {
desc = ach_coronation.0014.desc.ending
}
}
first_valid = {
triggered_desc = {
trigger = { scope:crush_scenario = flag:generic_indoors }
desc = ach_coronation.0014.desc.ending.indoors
}
desc = ach_coronation.0014.desc.ending.outdoors
}
}
left_portrait = {
character = root
animation = thinking
}
center_portrait = {
character = scope:peasant
animation = rage
camera = camera_event_center_pointing_right
hide_info = yes
}
right_portrait = {
character = scope:guard
animation = threatening
camera = camera_event_right_pointing_right
hide_info = yes
}
lower_left_portrait = {
character = scope:first
}
cooldown = { years = 10 }
theme = coronation_activity
override_background = {
trigger = { scope:crush_scenario = flag:generic_indoors }
reference = throne_room
}
override_background = { reference = alley_day }
override_effect_2d = {
trigger = {
exists = scope:rain_day
NOT = { scope:crush_scenario = flag:generic_indoors }
}
reference = rain
}
trigger = {
involved_activity = {
activity_host != root
# Coronation Splendor is low
var:activity_special_type_progression < 25
OR = {
# County has low control
activity_location.county = { county_control < low_county_control_limit }
# County is part of a faction
activity_host = {
any_targeting_faction = {
any_faction_county_member = {
this = scope:activity.activity_location.county
}
}
}
# There are many powerful detractors
any_guest_subset = {
name = detractor
OR = { # Is a threat to the host
AND = {
liege = involved_activity.activity_host
is_powerful_vassal = yes
}
highest_held_title_tier >= involved_activity.activity_host.highest_held_title_tier
current_military_strength > involved_activity.activity_host.current_military_strength
}
count >= 4
}
}
}
# You have a reason to do this, or at least consider it
coronation_hostile_to_host_trigger = yes
involved_activity = {
# There are enough people to be impacted by a crush
any_attending_character = {
is_physically_able_ai = yes
this != root
count >= 12
}
# There is a character we can use for the arrival
any_attending_character = {
is_landed = yes
location = involved_activity.activity_location
NOR = {
this = involved_activity.activity_host
this = root
involved_activity.var:officiator ?= this
}
is_available_in_activity_trigger = yes
}
# Once per activity
NOT = { has_variable = crowd_crush_happened }
}
}
weight_multiplier = {
base = 1
# More likely if the coronation isn't going great
modifier = {
involved_activity = {
any_guest_subset = {
name = detractor
OR = {
# Is a powerful vassal
AND = {
liege = scope:host
is_powerful_vassal = yes
}
# Or a threat to the host
highest_held_title_tier >= scope:host.highest_held_title_tier
}
count >= 3
}
}
add = 1
}
modifier = {
involved_activity = {
any_guest_subset = {
name = detractor
OR = {
# Is a powerful vassal
AND = {
liege = scope:host
is_powerful_vassal = yes
}
# Or a threat to the host
highest_held_title_tier >= scope:host.highest_held_title_tier
}
count >= 5
}
}
add = 1
}
modifier = {
involved_activity = {
any_guest_subset = {
name = detractor
OR = {
# Is a powerful vassal
AND = {
liege = scope:host
is_powerful_vassal = yes
}
# Or a threat to the host
highest_held_title_tier >= scope:host.highest_held_title_tier
}
count >= 7
}
}
add = 1
}
}
immediate = {
save_scope_as = crush_initiator
involved_activity = {
activity_host = { save_scope_as = host }
# Grab a random landed attendee to be used in loc
random_attending_character = {
limit = {
ach_coronation_0014_random_attendee_trigger = yes
is_landed = yes
}
weight = {
base = 1
modifier = { factor = highest_held_title_tier } # Grab someone important
}
save_scope_as = first
}
}
# Generate a bodyguard
create_character = {
location = root.location
template = soldier_friend_character
culture = scope:first.culture
faith = scope:first.faith
save_scope_as = guard
}
create_character = {
location = root.location
template = servant_character
culture = root.location.county.culture
faith = root.location.county.faith
save_scope_as = peasant
}
random_rain_snow_chance_effect = yes
# Choose a scenario
random_list = {
1 = {
trigger = { exists = scope:rain_day }
save_scope_value_as = {
name = crush_scenario
value = flag:rain
}
}
1 = {
save_scope_value_as = {
name = crush_scenario
value = flag:generic_indoors
}
}
1 = {
save_scope_value_as = {
name = crush_scenario
value = flag:generic_outdoors
}
}
# Prefer non-generic ones
4 = {
trigger = {
scope:host = {
any_targeting_faction = {
any_faction_county_member = {
this = scope:activity.activity_location.county
}
}
}
}
save_scope_value_as = {
name = crush_scenario
value = flag:local_discontent
}
}
4 = {
trigger = {
location.county = { county_control < low_county_control_limit }
}
save_scope_value_as = {
name = crush_scenario
value = flag:low_control
}
}
}
}
option = { # Yell fire
name = {
trigger = { scope:crush_scenario = flag:generic_indoors }
text = ach_coronation.0014.a.indoors
}
name = ach_coronation.0014.a.outdoors
add_internal_flag = dangerous
duel = {
skill = intrigue
value = very_high_skill_rating
# You spark a riot.
35 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = ach_coronation.0014.a.tt.success
if = {
limit = {
scope:crush_scenario != flag:generic_indoors
}
custom_tooltip = ach_coronation.0014.a.rock
hidden_effect = {
scope:first = { increase_wounds_effect = { REASON = fight } }
}
}
else = {
scope:first = { increase_wounds_effect = { REASON = fight } }
}
# Effect is fired from the host event
hidden_effect = {
scope:host = {
trigger_event = ach_coronation.0015
}
involved_activity = {
set_variable = {
name = crowd_crush_happened
}
}
}
custom_description_no_bullet = {
text = if_host_calms_crowd_desc
object = scope:host
}
show_as_tooltip = { ach_coronation_0015_minor_crush_effect = yes }
custom_tooltip = ach_coronation.0014.a.tt.host.success
custom_description_no_bullet = {
text = if_crush_happens_desc
object = scope:host
}
custom_tooltip = many_guests_may_be_wounded_or_killed
custom_tooltip = ach_coronation.0014.a.tt.host.failure.magnificence
custom_tooltip = ach_coronation.0014.a.tt.host.failure.host
custom_tooltip = ach_coronation.0014.a.tt.host.failure.crackdown
}
# Nobody notices
65 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 10
desc = ach_coronation.0014.a.tt.failure
send_interface_toast = {
title = ach_coronation.0014.a.tt.failure
desc = {
desc = ach_coronation.0014.a.tt.failure
triggered_desc = {
trigger = { scope:crush_scenario = flag:generic_indoors }
desc = ach_coronation.0014.a.tt.failure.indoors
}
}
}
}
}
ai_chance = {
base = 25
# More likely if you actually have a chance
modifier = {
intrigue > high_skill_rating
add = 25
}
modifier = {
intrigue > very_high_skill_rating
add = 50
}
modifier = {
has_trait = schemer
add = 25
}
modifier = {
has_trait = callous
add = 25
}
modifier = {
has_trait = sadistic
factor = 2
}
}
stress_impact = {
sadistic = medium_stress_impact_loss
callous = minor_stress_impact_loss
honest = minor_stress_impact_gain
content = minor_stress_impact_gain
just = medium_stress_impact_gain
compassionate = massive_stress_gain
}
}
option = { # These crowds could be useful...
name = ach_coronation.0014.b
trigger = {
custom_tooltip = {
text = ach_coronation.0014.b.tt
OR = {
intrigue >= very_high_skill_rating
has_trait = deceitful
has_trait = schemer
}
}
}
show_as_unavailable = { always = yes }
skill = intrigue
trait = schemer
trait = deceitful
add_character_modifier = {
modifier = ach_useful_crowds_modifier
years = 5
}
ai_chance = {
base = 150
}
}
option = { # Go schmooze with the oncoming lord instead
name = ach_coronation.0014.c
reverse_add_opinion = {
modifier = charmed_opinion
opinion = 10
target = scope:first
}
ai_chance = {
base = 100
}
}
after = {
hidden_effect = {
scope:guard = { silent_disappearance_effect = yes }
scope:peasant = { silent_disappearance_effect = yes }
}
}
}
######################
# Host: There is a crowd crush
# 0015
ach_coronation.0015 = {
type = activity_event
title = ach_coronation.0015.t
desc = ach_coronation.0015.desc
left_portrait = {
character = root
animation = fear
}
center_portrait = {
character = scope:peasant
animation = rage
camera = camera_event_crowd
hide_info = yes
}
right_portrait = {
character = scope:filthy_peasant
animation = beg
camera = camera_event_ground
hide_info = yes
}
cooldown = { years = 10 }
theme = coronation_activity
override_background = {
trigger = {
location.county.holder = {
government_has_flag = government_is_tribal
}
}
reference = market_tribal
}
override_background = { reference = alley_day }
override_effect_2d = {
trigger = { exists = scope:rain_day }
reference = rain
}
trigger = {
involved_activity = {
# Once per activity
NOT = { has_variable = crowd_crush_happened }
}
}
immediate = {
create_character = {
location = root.location
template = diseased_peasant_character
culture = root.location.county.culture
faith = root.location.county.faith
save_scope_as = filthy_peasant
}
create_character = {
location = root.location
template = servant_character
culture = root.location.county.culture
faith = root.location.county.faith
save_scope_as = peasant
}
ach_coronation_0015_minor_crush_effect = yes
custom_tooltip = ach_coronation.0015.has_happened
}
option = { # Diplomacy Challenge - Talk them down
name = {
trigger = { has_trait = august }
text = ach_coronation.0015.a.august
}
name = ach_coronation.0015.a
trigger = { diplomacy >= low_skill_rating }
show_as_unavailable = { always = yes }
skill = diplomacy
trait = august
duel = {
skill = diplomacy
value = medium_skill_rating
# Your speech stuns the crowd to awed silence
10 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
min = -49
}
modifier = {
diplomacy >= high_skill_rating
add = 10
}
modifier = {
has_trait = diplomat
add = 20
}
desc = ach_coronation.0015.a.tt.critical_success
custom_tooltip = coronation_tt_positive_major
scope:activity = { activity_special_type_progression_major = yes }
coronation_add_magnificence_log_effect = {
VALUE = flag:positive_major
CHAR = root
}
# The commoners will remember this
add_character_modifier = { modifier = ach_awed_peasantry_modifier years = 10 }
# You'll also remember this
create_character_memory = { type = calmed_the_crowd_memory }
show_as_tooltip = {
add_diplomacy_lifestyle_perk_points = 1
}
hidden_effect = {
send_interface_toast = {
title = ach_coronation.0015.a.tt.critical_success
custom_tooltip = ach_coronation.0015.a.tt.critical_success.desc
left_icon = root
type = event_toast_effect_good
# Everyone is very impressed
add_diplomacy_lifestyle_perk_points = 1
custom_tooltip = {
text = coronation_tt_positive_major
scope:activity = { activity_special_type_progression_major = yes }
}
scope:activity = {
every_attending_character = {
limit = {
this != root
this != scope:crush_initiator
}
add_opinion = {
target = root
modifier = impressed_opinion
opinion = 10
}
custom = custom.every_activity_guest
}
}
}
# Remove the stampede modifier early
root.location.county = {
remove_county_modifier = ach_coronation_stampede_modifier
}
# Inform the initiator they failed in a critical persuasian
scope:crush_initiator = {
send_interface_toast = {
title = ach_coronation.0015.a.tt.initiator.critical_failure
custom_tooltip = ach_coronation.0015.a.tt.initiator.critical_failure.desc
left_icon = root
right_icon = scope:host
stress_impact = {
base = medium_stress_impact_gain
irritable = medium_stress_impact_gain
}
show_as_tooltip = {
scope:host = {
custom_tooltip = {
text = coronation_tt_positive_major
scope:activity = { activity_special_type_progression_major = yes }
}
add_diplomacy_lifestyle_perk_points = 1
}
scope:activity = {
every_attending_character = {
limit = {
this != scope:host
this != scope:crush_initiator
}
add_opinion = {
target = scope:host
modifier = impressed_opinion
opinion = 10
}
custom = custom.every_activity_guest
}
}
}
}
}
}
}
# Your speech calms the people
40 = {
# If you have the August trait (and higher than low_skill_rating), critical success is free
trigger = { NOT = { has_trait = august } }
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = {
has_trait = diplomat
add = 30
}
desc = ach_coronation.0015.a.tt.success
ach_coronation_0015_minor_crush_effect = yes
# You'll remember this
create_character_memory = { type = calmed_the_crowd_memory }
custom_tooltip = coronation_tt_positive_medium
scope:activity = { activity_special_type_progression_medium = yes }
coronation_add_magnificence_log_effect = {
VALUE = flag:positive_medium
CHAR = root
}
hidden_effect = {
send_interface_toast = {
title = ach_coronation.0015.a.tt.success
custom_tooltip = ach_coronation.0015.a.tt.success.desc
left_icon = root
type = event_toast_effect_good
# Everyone is impressed
custom_tooltip = coronation_tt_positive_medium
scope:activity = {
activity_special_type_progression_medium = yes
}
}
# Inform the initiator they failed
scope:crush_initiator = {
send_interface_toast = {
title = ach_coronation.0015.a.tt.initiator.failure
custom_tooltip = ach_coronation.0015.a.tt.initiator.failure.desc
left_icon = root
right_icon = scope:host
scope:host = {
custom_tooltip = coronation_tt_positive_medium
}
}
}
}
}
# The fools do not listen
40 = {
# If you have the August trait (and higher than low_skill_rating), critical success is free
trigger = { NOT = { has_trait = august } }
compare_modifier = {
value = scope:duel_value
multiplier = -4
min = -49
}
modifier = { # Hard to ignore
has_trait = august
add = -20
}
modifier = { # Hard to get people to listen
OR = {
has_trait = stuttering
has_trait = lisping
}
add = 10
}
desc = ach_coronation.0015.a.tt.failure
ach_coronation_0015_medium_crush_effect = yes
custom_tooltip = coronation_tt_negative
scope:activity = { activity_special_type_progression_negative = yes }
coronation_add_magnificence_log_effect = {
VALUE = flag:negative
CHAR = root
}
hidden_effect = {
send_interface_toast = {
title = ach_coronation.0015.a.tt.failure.title
desc = ach_coronation.0015.a.tt.failure
left_icon = root
type = event_toast_effect_bad
stress_impact = {
base = medium_stress_impact_gain
irritable = medium_stress_impact_gain
}
custom_tooltip = coronation_tt_negative
}
# Inform the initiator they succeeded
scope:crush_initiator = {
send_interface_toast = {
title = ach_coronation.0015.a.tt.initiator.success
desc = ach_coronation.0015.a.tt.initiator.success.desc
left_icon = root
right_icon = scope:host
show_as_tooltip = {
scope:host = {
stress_impact = {
base = medium_stress_impact_gain
irritable = medium_stress_impact_gain
}
custom_tooltip = coronation_tt_negative
}
}
}
}
}
}
}
if = {
limit = { exists = scope:new_memory }
scope:new_memory = {
set_variable = {
name = memory_location
value = root.location
}
}
}
stress_impact = {
callous = minor_stress_impact_gain # Doesn't care
shy = minor_stress_impact_gain # Talk to people!?
}
ai_chance = {
base = 200
modifier = {
add = -25
has_trait = callous
}
modifier = {
add = -25
has_trait = shy
}
modifier = {
add = -50
has_trait = sadistic
}
modifier = {
add = 25
has_trait = calm
}
modifier = {
add = 50
has_trait = compassionate
}
modifier = {
add = 50
has_trait = gregarious
}
}
}
option = { # Physician / Learning - Tend to the wounded
name = ach_coronation.0015.b
flavor = ach_coronation.0015.b.flavor
trigger = {
OR = {
learning >= high_skill_rating
has_trait = lifestyle_physician
}
}
skill = learning
trait = lifestyle_physician
random = {
chance = 25
custom_tooltip = coronation_tt_negative
scope:activity = { activity_special_type_progression_negative = yes }
coronation_add_magnificence_log_effect = {
VALUE = flag:negative
CHAR = root
}
}
add_piety = major_piety_gain
add_learning_lifestyle_xp = medium_lifestyle_experience
show_as_tooltip = {
scope:activity = {
every_attending_character = {
limit = { is_ai = yes }
custom = every_wounded_guest_in_crowd_scope_tt
show_as_tooltip = {
add_character_modifier = {
modifier = ach_coronation_treated_wound_modifier
years = 5
}
add_opinion = {
target = root
modifier = thankful_opinion
opinion = 20
}
}
}
}
}
hidden_effect = {
every_in_list = {
list = in_crowd_crush
add_opinion = {
target = root
modifier = thankful_opinion
opinion = 20
}
add_character_modifier = {
modifier = ach_coronation_treated_wound_modifier
years = 5
}
}
# Inform the initiator they failed
scope:crush_initiator = {
send_interface_toast = {
title = ach_coronation.0015.a.tt.initiator.failure
custom_tooltip = ach_coronation.0015.a.tt.initiator.failure.physician.desc
left_icon = root
right_icon = scope:host
show_as_tooltip = {
scope:host = {
custom_tooltip = coronation_tt_positive_medium
add_piety = major_piety_gain
}
}
}
}
}
stress_impact = {
arrogant = medium_stress_impact_gain # "Peasant blood? On *my* hands?"
sadistic = medium_stress_impact_gain # "No wait this is great let's just watch"
compassionate = major_stress_impact_loss # "Mass casualty events are bad :(((" ~ local buzzkill
}
ai_chance = {
base = 300
modifier = {
add = 100
has_trait = compassionate
}
modifier = {
add = -100
has_trait = sadistic
}
modifier = {
add = -100
has_trait = arrogant
}
}
}
option = { # Set the guards on them!
name = {
trigger = { primary_title = { has_variable = founded_varangian_guard } }
text = ach_coronation.0015.d.byzantines
}
name = ach_coronation.0015.d
trait = overseer
add_internal_flag = dangerous
add_dread = miniscule_dread_gain
random_list = {
1 = { # The soldiers go too far
ach_coronation_0015_major_crush_effect = yes
add_tyranny = medium_tyranny_gain
hidden_effect = {
# Inform the initiator they succeeded
scope:crush_initiator = {
send_interface_toast = {
title = ach_coronation.0015.a.tt.initiator.critical_success
custom_tooltip = ach_coronation.0015.a.tt.initiator.critical_success.desc
left_icon = root
right_icon = scope:host
show_as_tooltip = {
scope:host = {
ach_coronation_0015_major_crush_effect = yes
add_tyranny = medium_tyranny_gain
add_dread = miniscule_dread_gain
}
}
}
}
}
}
2 = { # The soldiers kill a bunch of people but restore order
ach_coronation_0015_medium_crush_effect = yes
add_tyranny = minor_tyranny_gain
hidden_effect = {
# Inform the initiator they failed
scope:crush_initiator = {
send_interface_toast = {
title = ach_coronation.0015.a.tt.initiator.failure
custom_tooltip = ach_coronation.0015.a.tt.initiator.failure.crackdown.desc
left_icon = root
right_icon = scope:host
show_as_tooltip = {
scope:host = {
ach_coronation_0015_medium_crush_effect = yes
add_dread = miniscule_dread_gain
add_character_modifier = {
modifier = ach_coronation_crackdown_character_modifier
years = 5
}
}
}
}
}
}
}
3 = { # The crowds disperse before many are killed
ach_coronation_0015_minor_crush_effect = yes
hidden_effect = {
# Inform the initiator they failed
scope:crush_initiator = {
send_interface_toast = {
title = ach_coronation.0015.a.tt.initiator.failure
custom_tooltip = ach_coronation.0015.a.tt.initiator.failure.crackdown.desc
left_icon = root
right_icon = scope:host
show_as_tooltip = {
scope:host = {
ach_coronation_0015_minor_crush_effect = yes
add_character_modifier = {
modifier = ach_coronation_crackdown_character_modifier
years = 5
}
add_dread = miniscule_dread_gain
}
}
}
}
}
}
}
if = {
limit = {
NOT = { has_trait = overseer }
}
custom_tooltip = coronation_tt_negative
scope:activity = { activity_special_type_progression_negative = yes }
coronation_add_magnificence_log_effect = {
VALUE = flag:negative
CHAR = root
}
}
else = {
custom_tooltip = because_you_have_overseer_tt
}
add_character_modifier = {
modifier = ach_coronation_crackdown_character_modifier
years = 5
}
root.location = {
add_province_modifier = {
modifier = ach_coronation_crackdown_modifier
years = 5
}
county = {
change_development_progress = medium_development_progress_loss
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
arrogant = minor_stress_impact_loss # Loves calling guards on the commons
# Loves seeing guards beat people
callous = medium_stress_impact_loss
sadistic = medium_stress_impact_loss
overseer = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
add = -50
has_trait = compassionate
}
modifier = {
add = 25
has_trait = arbitrary
}
modifier = {
add = 25
has_trait = arrogant
}
modifier = {
add = 50
has_trait = sadistic
}
modifier = {
add = 50
has_trait = callous
}
modifier = {
add = 50
has_trait = overseer
}
}
}
option = { # Getting coronated - Who cares
name = ach_coronation.0015.e
random = {
chance = 50
custom_tooltip = coronation_tt_negative
scope:activity = { activity_special_type_progression_negative = yes }
coronation_add_magnificence_log_effect = {
VALUE = flag:negative
CHAR = root
}
}
ach_coronation_0015_medium_crush_effect = yes
add_prestige = minor_prestige_loss
hidden_effect = {
# Inform the initiator they succeeded
scope:crush_initiator = {
send_interface_toast = {
title = ach_coronation.0015.a.tt.initiator.success
custom_tooltip = ach_coronation.0015.a.tt.initiator.success.desc
left_icon = root
right_icon = scope:host
show_as_tooltip = {
scope:host = {
stress_impact = {
base = medium_stress_impact_gain
irritable = medium_stress_impact_gain
}
add_prestige = minor_prestige_loss
add_piety = minor_piety_loss
custom_tooltip = coronation_tt_negative
}
}
}
}
}
stress_impact = {
arrogant = minor_stress_impact_loss
callous = minor_stress_impact_loss
sadistic = medium_stress_impact_loss
craven = medium_stress_impact_loss
brave = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
add = -50
has_trait = compassionate
}
modifier = {
add = -50
has_trait = brave
}
modifier = {
add = 25
has_trait = craven
}
modifier = {
add = 25
has_trait = sadistic
}
modifier = {
add = 25
has_trait = callous
}
modifier = {
add = 25
has_trait = arrogant
}
}
}
after = {
hidden_effect = {
scope:peasant = { silent_disappearance_effect = yes }
scope:filthy_peasant = { silent_disappearance_effect = yes }
}
}
}
######################
# Guest: You present your host a gift
# 0016
scripted_trigger ach_coronation_0016_eligible_artifact = {
NOR = {
artifact_slot_type = helmet
artifact_slot_type = regalia
has_variable = banner_house
has_variable = banner_dynasty
has_variable = 1025_treasure_map
}
artifact_durability > 10
}
scripted_trigger ach_coronation_0016_can_be_swayed_trigger = {
NOR = {
is_in_guest_subset = { name = detractor }
is_in_guest_subset = { name = supporter }
}
is_ai = yes
is_vassal_of = involved_activity.activity_host
NOR = {
has_trait = disloyal
has_trait = loyal
}
}
scripted_effect liege_reward_effect = {
switch = {
trigger = has_activity_intent
coronation_bear_witness = {
if = {
limit = {
has_legitimacy = yes
}
add_legitimacy = minor_legitimacy_gain
}
else_if = {
limit = {
government_allows = administrative
top_liege = involved_activity.activity_host
}
change_influence = medium_influence_gain
}
else = {
add_prestige = medium_prestige_gain
}
}
coronation_offer_support = {
reverse_add_opinion = {
target = scope:host
modifier = thankful_opinion
opinion = 30
years = 10
}
custom_tooltip = {
text = coronation_tt_positive_medium
scope:activity = { activity_special_type_progression_medium = yes }
}
coronation_add_magnificence_log_effect = {
VALUE = flag:positive
CHAR = root
}
}
coronation_advocate_domain = {
capital_county = {
add_county_modifier = {
modifier = ach_liege_subsidies_modifier
years = 10
}
}
}
coronation_profess_rights = {
if = {
limit = {
can_add_hook = {
target = scope:host
type = favor_hook
}
}
random = {
chance = 33
add_hook = {
target = scope:host
type = favor_hook
}
}
}
else = {
reverse_add_opinion = {
target = scope:host
modifier = thankful_opinion
opinion = 10
years = 10
}
if = {
limit = {
has_lifestyle = stewardship_lifestyle
}
add_stewardship_lifestyle_xp = minor_lifestyle_xp
}
else = {
add_diplomacy_lifestyle_xp = minor_lifestyle_xp
}
}
}
coronation_seize_advantages = {
if = {
limit = {
government_allows = administrative
top_liege = involved_activity.activity_host
}
change_influence = medium_influence_gain
}
else = {
add_prestige = medium_prestige_gain
}
}
}
if = {
limit = {
NOT = {
has_activity_intent = coronation_offer_support
}
}
reverse_add_opinion = {
modifier = grateful_opinion
target = scope:host
opinion = 15
}
}
custom_tooltip = ach_coronation.0016.reward.tt
}
ach_coronation.0016 = {
type = activity_event
title = ach_coronation.0016.t
desc = ach_coronation.0016.desc
theme = coronation_activity
left_portrait = {
character = root
animation = obsequious_bow
}
right_portrait = {
character = scope:host
animation = interested
}
artifact = {
trigger = { exists = scope:gifted_artifact }
target = scope:gifted_artifact
position = lower_center_portrait
}
cooldown = { years = 1 }
override_background = { reference = throne_room }
trigger = {
is_physically_able = yes
involved_activity = {
activity_host = {
this != root
is_ai = yes
}
any_attending_character = {
ach_coronation_0016_can_be_swayed_trigger = yes
this != root
}
}
NOR = {
trigger_if = {
limit = {
is_ai = yes
}
is_in_guest_subset = { name = detractor }
}
trigger_else = {
involved_activity = {
is_target_in_variable_list = {
name = major_detractor
target = root
}
}
}
has_activity_intent = coronation_disrupt_loyalists
}
}
immediate = {
involved_activity = {
activity_host = { save_scope_as = host }
ordered_attending_character = {
limit = {
ach_coronation_0016_can_be_swayed_trigger = yes
this != root
}
order_by = {
value = 0
add = "opinion(root)"
subtract = "opinion(scope:host)"
if = { # Prefer powerful vassals
limit = { is_powerful_vassal = no }
multiply = 0.75
}
}
save_scope_as = detractor
}
}
if = {
limit = {
any_character_artifact = {
ach_coronation_0016_eligible_artifact = yes
}
}
ordered_character_artifact = { # Try and give away the worst one first
order_by = {
value = 1
if = {
limit = {
is_equipped = no
}
add = 100
}
if = {
limit = {
rarity = common
}
add = 15
}
if = {
limit = {
rarity = masterwork
}
add = 10
}
if = {
limit = {
rarity = famed
}
add = 5
}
if = {
limit = {
NOT = { creator = root }
}
add = 10
}
}
save_scope_as = gifted_artifact
}
}
}
option = { # A: Martial - Promise Troops
name = ach_coronation.0016.a.martial
trigger = {
highest_skill = martial
martial >= good_skill_level
}
scope:host = {
if = {
limit = {
root = { government_has_flag = government_is_nomadic }
}
spawn_army = {
name = event_troop_default_name
location = capital_province
inheritable = no
men_at_arms = {
type = nomadic_riders
stacks = {
value = gok_nomadic_riders_small_value
divide = 6
}
}
men_at_arms = {
type = steppe_raiders
stacks = 2
}
}
}
else = {
spawn_army = {
name = event_troop_default_name
location = capital_province
inheritable = no
levies = {
add = max_military_strength
multiply = 0.20
}
men_at_arms = {
type = pikemen_unit
stacks = 2
}
}
}
}
if = {
limit = {
government_has_flag = government_is_nomadic
}
add_character_modifier = {
modifier = ach_coronation_expended_resources_martial_nomad_modifier
years = 5
}
}
else = {
add_character_modifier = {
modifier = ach_coronation_expended_resources_martial_modifier
years = 5
}
}
add_martial_lifestyle_xp = minor_lifestyle_xp
liege_reward_effect = yes
ai_chance = {
base = 100
}
}
option = { # A: Stewardship - Organize Donations
name = ach_coronation.0016.a.stewardship
trigger = {
highest_skill = stewardship
stewardship >= good_skill_level
}
if = {
limit = { has_trait = greedy }
# Custom tooltip since flavor text isn't triggerable
custom_tooltip = ach_coronation.0016.a.stewardship.greedy.tt
}
else = {
pay_short_term_gold = {
target = scope:host
gold = tiny_gold_value
}
}
involved_activity = {
every_attending_character = {
limit = {
is_ai = yes
this != root
is_vassal_or_below_of = scope:host
NOT = { has_trait = disloyal }
}
custom = every_non_disloyal_vassal_attendee_tt
pay_short_term_gold = {
target = scope:host
gold = tiny_gold_value
}
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -10
}
}
}
liege_reward_effect = yes
ai_chance = {
base = 100
}
}
option = { # A: Diplomacy - Turn a Detractor
name = ach_coronation.0016.a.diplomacy
trigger = {
highest_skill = diplomacy
diplomacy >= good_skill_level
exists = scope:detractor
}
involved_activity = {
every_attending_character = {
custom = every_detractor_tt
limit = { is_in_guest_subset = { name = detractor } }
add_opinion = {
target = root
modifier = annoyed_opinion
opinion = -15
}
}
}
coronation_move_towards_supporter_effect = { CHARACTER = scope:detractor }
scope:detractor = {
add_opinion = {
target = scope:host
modifier = impressed_opinion
opinion = 20
}
}
liege_reward_effect = yes
}
option = { # A: Intrigue - Offer Spies
name = ach_coronation.0016.a.intrigue
trigger = {
highest_skill = intrigue
intrigue >= good_skill_level
}
scope:host = {
add_character_modifier = {
modifier = ach_coronation_little_birds_modifier
years = 5
}
if = {
limit = { has_trait = paranoid }
add_stress = medium_stress_loss
}
}
add_character_modifier = {
modifier = ach_coronation_expended_resources_intrigue_modifier
years = 5
}
liege_reward_effect = yes
add_intrigue_lifestyle_xp = minor_lifestyle_xp
ai_chance = {
base = 100
modifier = {
has_trait = schemer
add = 25
}
}
}
option = { # A: Learning - Appeal to Church
name = ach_coronation.0016.a.learning
trigger = {
highest_skill = learning
learning >= good_skill_level
}
scope:host = {
add_character_modifier = {
modifier = ach_coronation_theocratic_allies_modifier
years = 5
}
}
liege_reward_effect = yes
add_piety = medium_piety_loss
ai_chance = {
base = 100
modifier = {
has_trait = zealous
add = 50
}
}
}
option = { # A: Fallback - Become Loyal and give a hook
name = ach_coronation.0016.a.loyal
trigger = {
NOR = {
martial >= good_skill_level
stewardship >= good_skill_level
diplomacy >= good_skill_level
intrigue >= good_skill_level
learning >= good_skill_level
}
NOR = {
has_trait = loyal
has_trait = disloyal
}
}
add_trait = loyal
scope:host = {
add_hook = {
type = loyalty_hook
target = root
}
}
liege_reward_effect = yes
ai_chance = {
base = 100
modifier = {
has_trait = ambitious
add = 75
}
modifier = {
has_trait = content
add = 75
}
modifier = {
has_trait = lazy
add = 50
}
}
stress_impact = {
base = minor_stress_impact_gain
ambitious = medium_stress_impact_gain
content = medium_stress_impact_loss
lazy = medium_stress_impact_loss
}
}
option = { # B: Host has Impress Attendees
name = ach_coronation.0016.b.impress_attendees
name = {
trigger = {
OR = {
has_trait = lifestyle_poet
has_court_position = court_musician_court_position
has_court_position = court_poet_court_position
}
}
text = ach_coronation.0016.b.impress_attendees.writer
}
trigger = {
scope:host = { has_activity_intent = coronation_impress_attendees }
prestige_level >= high_prestige_level
}
involved_activity = {
every_attending_character = {
custom = activity_every_attendee_tt
add_opinion = {
target = scope:host
modifier = impressed_opinion
opinion = 10
}
}
}
reason = prestige_level
reason = host_activity_intent
liege_reward_effect = yes
if = {
limit = {
NOT = {
has_activity_intent = coronation_seize_advantages
}
}
add_prestige = medium_prestige_loss
}
else = {
add_stress = minor_stress_gain
}
}
option = { # B: Host has Embrace Supporters
name = ach_coronation.0016.b.bonds
trigger = {
scope:host = { has_activity_intent = coronation_embrace_supporters }
OR = {
diplomacy > medium_skill_rating
has_trait = gregarious
}
is_in_guest_subset = { name = supporter }
}
reason = host_activity_intent
scope:host = {
add_prestige = minor_prestige_gain
}
liege_reward_effect = yes
involved_activity = {
every_attending_character = {
custom = every_supporter_activity
limit = { is_in_guest_subset = { name = supporter } }
add_prestige = minor_prestige_gain
}
}
if = {
limit = {
NOT = {
has_activity_intent = coronation_seize_advantages
}
}
add_prestige = medium_prestige_loss
}
else = {
add_stress = minor_stress_gain
}
}
option = { # C: Give artifact
name = ach_coronation.0016.c.artifact
trigger = { exists = scope:gifted_artifact }
scope:gifted_artifact = {
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 1
}
set_variable = {
name = gifted_artifact
value = yes
days = 1825
}
set_owner = {
target = scope:host
history = {
location = root.location
actor = root
recipient = scope:host
type = given
}
}
}
liege_reward_effect = yes
if = {
limit = {
scope:gifted_artifact = {
OR = {
rarity = illustrious
rarity = famed
}
}
}
dynasty ?= {
add_dynasty_prestige = minor_dynasty_prestige_gain
}
}
else_if = {
limit = {
scope:gifted_artifact = {
rarity = masterwork
}
}
dynasty ?= {
add_dynasty_prestige = miniscule_dynasty_prestige_gain
}
}
ai_chance = {
base = 100
modifier = {
has_trait = greedy
add = -25
}
modifier = {
has_trait = avaricious
add = -25
}
modifier = {
has_trait = disloyal
add = -50
}
modifier = {
has_trait = loyal
add = 50
}
}
stress_impact = {
greedy = minor_stress_impact_gain
avaricious = minor_stress_impact_gain
disloyal = medium_stress_impact_gain
loyal = medium_stress_impact_loss
}
}
option = { # C: Fallback: Give gold
name = ach_coronation.0016.c.gold
trigger = {
NOT = { exists = scope:gifted_artifact }
}
pay_short_term_gold = {
gold = medium_gold_value
target = scope:host
}
liege_reward_effect = yes
ai_chance = {
base = 100
# More likely if you actually have a chance
modifier = {
has_trait = avaricious
add = -50
}
modifier = {
has_trait = generous
add = 25
}
modifier = {
has_trait = greedy
add = -25
}
modifier = {
has_trait = loyal
add = 50
}
modifier = {
has_trait = disloyal
add = -50
}
modifier = {
has_trait = improvident
add = 50
}
}
stress_impact = {
generous = minor_stress_impact_loss
greedy = minor_stress_impact_gain
avaricious = minor_stress_impact_gain
improvident = medium_stress_impact_loss
loyal = medium_stress_impact_loss
disloyal = medium_stress_impact_gain
}
}
option = { # D: I'm good, thanks
name = {
trigger = { has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:host } }
text = ach_coronation.0016.d.hate
}
name = ach_coronation.0016.d
if = {
limit = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:host }
}
reverse_add_opinion = {
target = scope:host
modifier = insulted_opinion
opinion = -5
}
}
ai_chance = {
base = 100
# More likely if you actually have a chance
modifier = {
has_trait = greedy
add = 25
}
modifier = {
has_trait = disloyal
add = 25
}
modifier = {
has_trait = loyal
add = -25
}
}
stress_impact = {
greedy = minor_stress_impact_loss
disloyal = minor_stress_impact_loss
loyal = minor_stress_impact_gain
}
}
}
######################
# Guest: faith_warrior reacts to the coronation of a non-crusader_king
# by Jay Zaborowski
# 0017
scripted_trigger ach_coronation_0017_crusader_trigger = {
OR = {
has_trait = faith_warrior
has_trait = crusader_king
}
}
ach_coronation.0017 = {
type = activity_event
title = ach_coronation.0017.t
desc = {
desc = ach_coronation.0017.desc
first_valid = {
triggered_desc = { # You're the host and not in immediate danger
trigger = {
scope:guest = { ach_coronation_0017_crusader_trigger = yes }
}
desc = ach_coronation.0017.ending.crusader
}
desc = ach_coronation.0017.ending.civilian
}
}
left_portrait = {
character = root
animation = dismissal
camera = camera_event_group_talking_left_left
}
center_portrait = {
character = scope:guest
animation = interested_left
camera = camera_event_group_talking_left_center
}
right_portrait = {
character = scope:host
animation = prayer
camera = camera_event_kneeling
}
theme = coronation_activity
cooldown = { years = 1 }
override_background = {
reference = temple
}
trigger = {
# Crusades are a thing
religion = {
exists = var:variable_ghw_unlocked
}
# You're some brand of crusader
ach_coronation_0017_crusader_trigger = yes
involved_activity = {
# This beta-ruler dork is not
activity_host = {
is_ai = yes
religion = root.religion
# Can be a Faith Warrior but isn't
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = this }
ach_coronation_0017_crusader_trigger = no
# And is of fighting age
is_adult = yes
is_old_character = no
}
# Make sure there's actually someone to talk to
any_attending_character = {
is_available_in_activity_trigger = yes
this != root
this != involved_activity.activity_host
}
}
}
immediate = {
involved_activity = {
activity_host = { save_scope_as = host }
random_attending_character = {
limit = {
is_available_in_activity_trigger = yes
this != root
this != scope:host
}
weight = {
base = 1
# Prefer interesting characters
modifier = {
add = 10
is_of_major_interest_to_root_trigger = yes
}
modifier = {
add = 5
is_of_minor_interest_to_root_trigger = yes
}
# Prefer pot-stirrers
modifier = {
OR = {
has_trait = deceitful
has_trait = education_intrigue
has_trait = schemer
has_activity_intent = coronation_disrupt_loyalists
AND = {
is_ai = yes
is_in_guest_subset = { name = detractor }
}
}
add = 10
}
# And someone who's willing to talk to you
opinion_modifier = {
opinion_target = root
multiplier = 0.5
}
# And who's willing to talk trash about the Host
opinion_modifier = {
opinion_target = scope:host
multiplier = -1
}
# And who isn't also a crusader
modifier = {
factor = 0.5
ach_coronation_0017_crusader_trigger = yes
}
}
save_scope_as = guest
}
}
}
option = { # Offer Support - You give an endorsement
name = {
trigger = { OR = { faith.religion = religion:eastern_orthodox_religion faith.religion = religion:catholic_religion faith.religion = religion:protestant_religion } }
text = ach_coronation.0017.a.christian
}
name = ach_coronation.0017.a
trigger = {
has_activity_intent = coronation_offer_support
prestige_level >= 3
}
show_as_unavailable = { has_activity_intent = coronation_offer_support }
reason = activity_intent
add_internal_flag = special
add_prestige = medium_prestige_gain # Good publicity
add_piety = medium_piety_loss
scope:host = {
add_opinion = {
target = root
modifier = appreciation_opinion
opinion = 20
}
if = {
limit = {
opinion = {
target = root
value > 20
}
OR = {
is_ai = yes
AND = {
root = { is_ai = no }
is_ai = no
}
}
}
progress_towards_friend_effect = {
REASON = friend_crusader_endorsement
CHARACTER = root
OPINION = 0
}
}
else = {
add_opinion = {
target = root
modifier = friendliness_opinion
opinion = 20
}
}
add_prestige = major_prestige_gain
add_piety = medium_piety_gain
}
involved_activity = {
every_attending_character = {
limit = {
is_vassal_of = scope:host
has_vassal_stance = zealot
# They don't know what it's really like out there, man
ach_coronation_0017_crusader_trigger = no
}
custom = every_zealot_vassal_guest_tt
add_opinion = {
target = scope:host
modifier = crusader_endorsement_opinion
}
}
every_attending_character = {
limit = {
# Thinks this is sort of denigrating
ach_coronation_0017_crusader_trigger = yes
this != root
}
custom = every_faith_warrior_guest_tt
add_opinion = {
target = root
modifier = crusader_sellout_opinion
}
}
}
ai_chance = {
base = 200 # Offer Support means they probably want to do this
opinion_modifier = {
opinion_target = scope:host
}
# Cynical character's are less likely to do this
modifier = {
has_trait = cynical
factor = {
value = 0.5 # But hey, politics
# But some still won't misrepresent themselves
if = {
limit = { has_trait = honest }
add = -0.5
}
# "What do you mean I was in it for the money? Me?"
if = {
limit = {
OR = {
has_trait = deceitful
has_trait = schemer
}
}
add = 0.5
}
}
}
}
}
option = { # Disrupt Loyalists - You publicly shame HerHim
name = ach_coronation.0017.b
trigger = {
piety_level >= scope:host.piety_level
has_activity_intent = coronation_disrupt_loyalists
}
show_as_unavailable = { has_activity_intent = coronation_disrupt_loyalists }
reason = activity_intent
custom_tooltip = available_because_piety_vs_host_tt
add_prestige = medium_prestige_gain
add_piety = major_piety_gain
involved_activity = {
every_attending_character = {
limit = {
is_vassal_of = scope:host
has_vassal_stance = zealot
}
custom = every_zealot_vassal_guest_tt
add_opinion = {
target = scope:host
modifier = impious_opinion
opinion = -15
}
}
}
scope:host = {
add_opinion = {
target = root
modifier = shamed_me_opinion
opinion = -25
}
add_prestige = medium_prestige_loss
add_piety = medium_piety_loss
}
ai_chance = {
base = 0
opinion_modifier = {
opinion_target = scope:host
multiplier = -1
}
# Far more likely if Arrogant or Wrathful and they dislike the person
modifier = {
OR = {
has_trait = arrogant
has_trait = wrathful
}
opinion = {
target = root
value < 0
}
factor = 2
}
# Opinion matters more than these but might tip the scales
modifier = {
has_trait = zealous
add = 15
}
# Far less likely in general
modifier = {
has_trait = shy
factor = 0.5
}
modifier = {
has_trait = humble
factor = 0.5
}
modifier = {
has_trait = calm
factor = 0.5
}
modifier = {
has_trait = compassionate
factor = 0.5
}
# Cynical characters might just refuse to even think of it
modifier = {
has_trait = cynical
factor = {
value = 0 # Would never
# Would consider lying for clout
if = {
limit = {
intrigue >= low_skill_rating
NOT = { has_trait = honest }
}
add = 0.5
}
# Would actually *looove* to lie about, like, anything really
if = {
limit = {
OR = {
has_trait = deceitful
has_trait = schemer
}
# But probably won't if they're chill
opinion = {
target = root
value > low_positive_opinion
}
}
multiply = 4
}
}
}
}
stress_impact = {
# Doesn't care that much, but can be doing this cynically
cynical = minor_stress_impact_gain
# Doesn't like the attention
shy = minor_stress_impact_gain
humble = medium_stress_impact_gain
# Conflict-averse
calm = minor_stress_impact_gain
compassionate = medium_stress_impact_gain
# Not so much
arrogant = medium_stress_impact_loss
wrathful = medium_stress_impact_loss
zealous = minor_stress_impact_loss
}
}
option = { # Bah, I shall focus on prayer
name = ach_coronation.0017.c
add_piety = medium_piety_gain
add_character_modifier = {
modifier = ach_focusing_on_prayer_modifier
years = 5
}
stress_impact = {
# Is annoyed by it
base = medium_stress_impact_gain
# Does *not* want to pray, actually
cynical = major_stress_impact_gain
# Is *very* annoyed by it
arrogant = minor_stress_impact_gain
# But it's not all bad
humble = minor_stress_impact_loss # Because I don't care *that* much
zealous = minor_stress_impact_loss # Because I love prayer
shy = minor_stress_impact_loss # Because if I pray you'll shut up
}
ai_chance = {
base = 100
modifier = {
has_trait = arrogant
factor = 0.5
}
modifier = {
has_trait = humble
factor = 2
}
modifier = {
has_trait = zealous
factor = 2
}
modifier = {
has_trait = shy
factor = 2
}
modifier = {
has_trait = cynical
factor = 0
}
}
}
option = { # It's not a competition, fool!
name = ach_coronation.0017.d
name = {
trigger = {
OR = {
has_trait = cynical
has_trait = humble
has_trait = shy
}
NOT = { has_trait = arrogant }
}
text = ach_coronation.0017.d.cynical # Literally who cares
}
# Not making a big deal of it is respected
add_prestige = minor_prestige_gain
add_piety = minor_piety_gain
scope:guest = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
stress_impact = {
# No Zealot impact because the player can interpret this either way
arrogant = medium_stress_impact_gain # You *do* deserve it more
humble = medium_stress_impact_loss
shy = medium_stress_impact_loss # Actually it's sort of nice
}
ai_chance = {
base = 100
modifier = {
has_trait = arrogant
factor = 0.5
}
modifier = {
has_trait = humble
factor = 2
}
modifier = {
has_trait = shy
factor = 2
}
}
}
}
######################
# Guest: Close family member of Host sees opportunity
# 0018
scripted_trigger ach_coronation_0018_eligible_family_member_trigger = {
#You can't just give stress and stuff to players
is_ai = yes
is_available_in_activity_trigger = yes
this != scope:host
is_close_or_extended_family_of = scope:host
NOT = { has_trait = disloyal }
trigger_if = { # For ach_coronation.0020
limit = { is_ai = yes }
opinion = {
target = scope:host
value >= low_positive_opinion
}
}
}
scripted_trigger ach_coronation_0018_grantable_title_trigger = {
tier = tier_county
this != scope:host.capital_county
}
scripted_effect ach_coronation_0018_choose_title_effect = {
scope:host = {
random_held_title = {
limit = { ach_coronation_0018_grantable_title_trigger = yes }
weight = {
base = 100
# Prefer worse titles
modifier = {
add = {
value = development_level
multiply = -1
}
}
# Even more if it's some backwards other-language hellhole
modifier = {
culture != scope:host.culture
factor = 2
}
modifier = {
faith != scope:host.faith
factor = 2
}
}
save_scope_as = grantable_title
}
}
}
ach_coronation.0018 = {
type = activity_event
title = ach_coronation.0018.t
desc = {
desc = ach_coronation.0018.desc
first_valid = {
triggered_desc = { # There's a Seneschal
trigger = {
scope:servant_boss = { has_court_position = seneschal_court_position }
}
desc = ach_coronation.0018.desc.seneschal
}
triggered_desc = { # There's a Steward
trigger = {
scope:servant_boss = { has_council_position = councillor_steward }
}
desc = ach_coronation.0018.desc.steward
}
triggered_desc = { # There is no Seneschal or Steward
trigger = { NOT = { exists = scope:servant_boss } }
desc = ach_coronation.0018.desc.fallback
}
}
first_valid = {
triggered_desc = {
trigger = { exists = scope:servant_boss }
desc = ach_coronation.0018.desc.ending.servant_boss
}
desc = ach_coronation.0018.desc.ending.no_servant_boss
}
}
left_portrait = {
character = root
animation = thinking
camera = camera_event_left
}
center_portrait = {
character = scope:servant
triggered_animation = {
trigger = { exists = scope:servant_boss }
animation = throne_room_messenger_3
}
animation = stress
camera = camera_event_right_pointing_left_fov50
hide_info = yes
}
right_portrait = {
character = scope:servant_boss
animation = stress
camera = camera_event_very_right_fov50
}
lower_left_portrait = {
character = scope:host
}
weight_multiplier = {
base = 1
# Far more likely if there is no Seneschal
modifier = {
NOT = { exists = court_position:seneschal_court_position }
factor = 3
}
# If there is a Seneschal than low Aptitude raises likeliness
activity_court_position_aptitude_negative_modifier = { LIEGE = root POS = seneschal }
}
theme = coronation_activity
cooldown = { years = 1 }
override_background = {
trigger = {
#Do not want generic courtyard calling up Constantinople for this one
location.county = title:c_byzantion
}
reference = bp2_courtyard
}
override_background = {
reference = courtyard
}
override_effect_2d = {
trigger = { exists = scope:rain_day }
reference = rain
}
trigger = {
ach_coronation_0018_eligible_family_member_trigger = yes
coronation_hostile_to_host_trigger = no
involved_activity = {
activity_host = {
# Don't potentially screw over a player Seneschal
trigger_if = {
limit = { exists = court_position:seneschal_court_position }
court_position:seneschal_court_position = { is_ai = yes }
}
# If we need a Steward but they're absent, make sure they're not a player so we can teleport them
trigger_else = {
cp:councillor_steward ?= { is_ai = yes }
}
}
}
}
immediate = {
# For the event art
create_character = {
save_scope_as = servant
employer = involved_activity.activity_host
template = servant_character
gender_female_chance = root_faith_dominant_gender_adjusted_female_chance
}
random_rain_snow_chance_effect = yes
involved_activity = {
hidden_effect = {
if = { # Grab a secret for the opt-out option
limit = {
any_attending_character = {
this != root
is_available_in_activity_trigger = yes
any_secret = {
NOT = { is_known_by = root }
}
}
}
random_attending_character = {
limit = {
this != root
is_available_in_activity_trigger = yes
any_secret = {
NOT = { is_known_by = root }
}
}
save_scope_as = secret_holder
random_secret = {
limit = { NOT = { is_known_by = root } }
save_scope_as = secret_to_reveal
}
}
}
else = { # Create one if you can't find one
random_attending_character = {
limit = {
this != root
is_available_in_activity_trigger = yes
}
weight = {
base = 1
# Prefer interesting characters (but not by too much)
modifier = {
add = 4
is_of_major_interest_to_root_trigger = yes
}
modifier = {
add = 2
is_of_minor_interest_to_root_trigger = yes
}
}
give_random_likely_secret_effect = yes
save_scope_as = secret_holder
random_secret = {
limit = { NOT = { is_known_by = root } }
save_scope_as = secret_to_reveal
}
}
}
activity_host = {
save_scope_as = host
if = { # If the Seneschal exists and isn't AI then they're the Servant Boss
limit = {
court_position:seneschal_court_position ?= { is_ai = yes }
}
court_position:seneschal_court_position = { save_scope_as = servant_boss }
}
else = { # Else it's the Steward
cp:councillor_steward = {
save_scope_as = servant_boss
}
}
}
scope:servant_boss = {
if = { # Teleport them if they're not at the coronation
limit = { location != scope:host.involved_activity.activity_location }
set_location = { location = scope:host.involved_activity.activity_location }
}
if = { # And add them to the activity if they're not in it
limit = { can_join_activity = scope:host.involved_activity }
add_to_activity_without_travel = scope:host.involved_activity
}
}
}
}
}
option = { # A: Seize Advantages | Offer Support: Take charge of the servants
name = ach_coronation.0018.a.intent
reason = activity_intent
add_internal_flag = special
trigger = {
OR = {
has_activity_intent = coronation_seize_advantages
has_activity_intent = coronation_offer_support
}
}
if = {
limit = { has_trait = diligent }
custom_tooltip = because_you_have_diligent_tt
}
else = {
add_character_modifier = {
modifier = exhausted_modifier
years = 10
}
}
duel = {
skill = stewardship
value = average_skill_rating
8 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
desc = ach_coronation.0018.a.tt_success
custom_tooltip = ach_can_refuse_reward
if = { # Offer a title
limit = { # Host has a title to give
scope:host = {
any_held_title = { ach_coronation_0018_grantable_title_trigger = yes }
# And doesn't hate you
NOR = {
opinion = {
target = scope:host
value <= medium_negative_opinion
}
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
}
}
# Host can actually give you the title
can_be_granted_titles_by = { RULER = scope:host }
# Host isn't giving a vassal more land just for being mildly helpful
is_landed = no
}
custom_tooltip = ach_coronation.0018.a.tt.vassal
hidden_effect = {
save_scope_value_as = {
name = reward_type
value = flag:title
}
}
}
else_if = { # Offer the Seneschal spot
limit = {
scope:host = {
can_appoint_char_to_court_position = {
CHAR = scope:host
COURT_POS = seneschal_court_position
}
}
}
show_as_tooltip = {
court_position_grant_effect = {
POS = seneschal
EMPLOYER = scope:host
CANDIDATE = root
}
}
hidden_effect = {
save_scope_value_as = {
name = reward_type
value = flag:court_position
}
}
}
else = { # Give public praise
show_as_tooltip = {
add_prestige = medium_prestige_gain
involved_activity = {
every_attending_character = {
limit = {
this != root
this != scope:host
}
custom = every_guest_scope_tt
add_opinion = {
target = root
modifier = impressed_opinion
opinion = 10
}
}
}
}
hidden_effect = {
save_scope_value_as = {
name = reward_type
value = flag:praise
}
}
}
send_interface_toast = {
title = ach_coronation.0018.a.tt_success
reverse_add_opinion = {
modifier = helpful_opinion
target = scope:host
opinion = 15
}
hidden_effect = {
# Player gets a chance to refuse the reward
trigger_event = ach_coronation.0019
}
}
}
12 = {
compare_modifier = {
value = scope:duel_value
multiplier = -2
min = -9
}
desc = ach_coronation.0018.a.tt_failure
send_interface_toast = {
title = ach_coronation.0018.a.tt_failure
stress_impact = {
base = medium_stress_impact_gain
arrogant = minor_stress_impact_gain
}
}
}
}
stress_impact = {
base = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
lazy = medium_stress_impact_gain
diligent = medium_stress_impact_loss
}
ai_chance = {
base = 150
modifier = {
has_trait = diligent
add = 100
}
modifier = {
has_trait = lazy
add = -50
}
modifier = {
has_trait = arrogant
add = -25
}
}
}
option = { # A: Try to help with preparations
name = ach_coronation.0018.a
skill = stewardship
highlight_portrait = scope:servant_boss
trigger = {
NOR = {
has_activity_intent = coronation_seize_advantages
has_activity_intent = coronation_offer_support
}
}
if = {
limit = {
NOT = { has_trait = diligent }
}
add_character_modifier = {
modifier = exhausted_modifier
years = 10
}
}
# Does servant_boss feel like you did them a solid or tried to steal their job?
if = {
limit = {
exists = scope:servant_boss
}
if = {
limit = { # You're diplomatic and smooth things over
OR = {
has_trait = gregarious
has_trait = diplomat
}
}
custom_tooltip = ach_coronation.0018.diplomacy_trait.tt
send_interface_toast = {
title = ach_coronation.0018.d.pleased_servant_boss
left_icon = scope:servant_boss
reverse_add_opinion = {
modifier = thankful_opinion
target = scope:servant_boss
opinion = 25
}
}
}
else_if = {
limit = { # They're not the type of person to perceive this as a slight
scope:servant_boss = {
NOR = {
has_trait = arrogant
has_trait = ambitious
has_trait = diligent
has_trait = vengeful
}
}
}
send_interface_toast = {
title = ach_coronation.0018.d.pleased_servant_boss
left_icon = scope:servant_boss
reverse_add_opinion = {
modifier = thankful_opinion
target = scope:servant_boss
opinion = 20
}
}
}
else = { # Else they get annoyed
custom_tooltip = ach_coronation.0018.d.annoyed_servant_boss
send_interface_toast = {
title = ach_coronation.0018.d.annoyed_servant_boss
left_icon = scope:servant_boss
reverse_add_opinion = {
modifier = annoyed_opinion
target = scope:servant_boss
opinion = -20
}
}
}
}
duel = {
skill = stewardship
value = average_skill_rating
8 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
desc = ach_coronation.0018.a.tt_success
send_interface_toast = {
title = ach_coronation.0018.a.tt_success
scope:host = {
add_opinion = {
modifier = helpful_opinion
target = root
opinion = 15
}
}
}
}
12 = {
compare_modifier = {
value = scope:duel_value
multiplier = -2
min = -9
}
desc = ach_coronation.0018.a.tt_failure
send_interface_toast = {
title = ach_coronation.0018.a.tt_failure
stress_impact = {
base = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
}
}
}
stress_impact = {
# Work is hard
base = minor_stress_impact_gain
# But not for some
diligent = medium_stress_impact_loss
# And for others it's worth it
ambitious = minor_stress_impact_loss
# Doesn't want the clout
content = minor_stress_impact_gain
# This sounds a lot like labor
arrogant = minor_stress_impact_gain
lazy = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = diligent
add = 25
}
modifier = {
has_trait = ambitious
add = 25
}
modifier = {
has_trait = content
add = -25
}
modifier = {
has_trait = arrogant
add = -25
}
modifier = {
has_trait = lazy
add = -50
}
}
}
option = { # B: Gossip with the servants instead
name = ach_coronation.0018.b
skill = intrigue
highlight_portrait = scope:servant
duel = {
skill = intrigue
value = average_skill_rating
75 = {
desc = ach_coronation.0018.b.tt.gossip_with_servants
compare_modifier = {
value = scope:duel_value
multiplier = 5
}
show_chance = no
send_interface_toast = {
title = ach_coronation.0018.b.tt.gossip_with_servants
left_icon = root
add_character_modifier = {
modifier = ach_coronation_gossips_with_servants_modifier
years = 5
}
}
}
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = -5
}
min = 10
show_chance = no
desc = ach_coronation.0018.b.tt.secret_unknown_desc
custom_tooltip = ach_coronation.0018.b.tt.secret_unknown
hidden_effect = {
send_interface_toast = {
title = ach_coronation.0018.b.tt.secret
left_icon = root
scope:secret_to_reveal = {
expose_secret = root
}
}
}
}
}
stress_impact = {
gregarious = minor_stress_impact_loss
# Sitting around and talking sucks, actually
impatient = minor_stress_impact_gain
shy = minor_stress_impact_gain
diligent = minor_stress_impact_gain
# Doesn't want to talk to poors
arrogant = medium_stress_impact_gain
# Looooves gossip
schemer = medium_stress_impact_loss
deceitful = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
has_trait = lazy
add = 25
}
modifier = {
has_trait = gregarious
add = 25
}
modifier = {
has_trait = impatient
factor = 0.5
}
modifier = {
has_trait = diligent
NOR = { # Only wasting time if gossiping isn't your whole deal
has_trait = education_intrigue
has_trait = deceitful
has_trait = schemer
}
factor = 0.5
}
modifier = {
has_trait = shy
factor = 0.5
}
modifier = {
has_trait = arrogant
factor = 0.5
}
modifier = {
OR = {
has_trait = education_intrigue
has_trait = deceitful
has_trait = schemer
}
factor = 2
}
}
}
option = { # C: Stewardship Lifestyle: Study the ceremony
name = ach_coronation.0018.c
trigger = {
has_lifestyle = stewardship_lifestyle
}
skill = stewardship
reason = lifestyle
highlight_portrait = scope:servant
highlight_portrait = scope:servant_boss
add_stewardship_lifestyle_xp = minor_lifestyle_xp
add_character_modifier = {
modifier = ach_coronation_studying_ceremony_modifier
years = 5
}
stress_impact = {
diligent = minor_stress_impact_loss
# Super down for not talking
shy = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
has_trait = diligent
add = 25
}
modifier = {
has_trait = shy
add = 25
}
}
}
option = { # D: Just chill
name = ach_coronation.0018.d
highlight_portrait = root
stress_impact = {
base = medium_stress_impact_loss
# Wants to do something
diligent = minor_stress_impact_gain
# Who really wants Host's approval?
content = minor_stress_impact_loss
# Super down for not talking
shy = minor_stress_impact_loss
# Doing *absolutely* nothing is based
lazy = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
has_trait = content
add = 25
}
modifier = {
has_trait = shy
add = 25
}
modifier = {
has_trait = lazy
add = 50
}
modifier = {
has_trait = diligent
factor = 0.5
}
}
}
after = {
hidden_effect = {
scope:servant = { silent_disappearance_effect = yes }
}
}
}
ach_coronation.0019 = {
type = letter_event
opening = {
desc = ach_coronation.0019.opening
}
desc = {
# Opening
desc = ach_coronation.0019.desc
first_valid = {
triggered_desc = {
trigger = { scope:reward_type = flag:title }
desc = ach_coronation.0019.desc.title
}
triggered_desc = {
trigger = { scope:reward_type = flag:court_position }
desc = ach_coronation.0019.desc.court_position
}
desc = ach_coronation.0019.desc.praise
}
}
sender = scope:host
immediate = { ach_coronation_0018_choose_title_effect = yes }
option = { # Accept
name = ach_coronation.0019.a
switch = {
trigger = scope:reward_type
flag:title = {
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:grantable_title = {
change_title_holder = {
holder = root
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
custom_tooltip = {
text = your_title_cannot_be_revoked_10_tt
root = {
add_character_flag = {
flag = titles_protected
years = 10
}
}
}
}
flag:court_position = {
court_position_grant_effect = {
POS = seneschal
EMPLOYER = scope:host
CANDIDATE = root
}
if = {
limit = {
scope:servant_boss = { has_court_position = seneschal_court_position }
OR = {
scope:servant_boss = { is_ai = yes }
AND = {
scope:servant_boss = {
is_ai = no
}
is_ai = no
}
}
}
scope:servant_boss = {
progress_towards_rival_effect = {
REASON = rival_jealousy_at_court
CHARACTER = root
OPINION = -30
}
}
}
}
flag:praise = {
add_prestige = medium_prestige_gain
involved_activity = {
every_attending_character = {
limit = {
this != root
this != scope:host
}
custom = every_guest_scope_tt
add_opinion = {
target = root
modifier = impressed_opinion
opinion = 10
}
}
}
}
}
ai_chance = {
base = 150
modifier = {
add = -50
scope:reward_type = flag:title
has_trait = content
}
modifier = {
add = -50
scope:reward_type = flag:court_position
has_trait = lazy
}
modifier = {
add = -50
scope:reward_type = flag:praise
has_trait = shy
}
}
}
option = { # Ask for gold instead
name = ach_coronation.0019.b
trigger = {
scope:host = { is_ai = yes } # The player doesn't need a multi-event back and forth over this
}
scope:host = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -10
}
pay_short_term_gold = {
gold = minor_gold_value
target = root
}
}
ai_chance = {
base = 50
modifier = {
add = 50
scope:reward_type = flag:praise
has_trait = greedy # No money in praise
}
modifier = {
add = 50
scope:reward_type = flag:praise
has_activity_intent = coronation_seize_advantages
}
}
}
option = { # Their friendship is enough
name = ach_coronation.0019.c
if = {
limit = {
reverse_opinion = {
target = scope:host
value > 20
}
OR = {
scope:host = { is_ai = yes }
AND = {
scope:host = { is_ai = no }
is_ai = no
}
}
}
progress_towards_friend_effect = {
CHARACTER = scope:host
REASON = friend_supported_host_during_coronation
OPINION = default_friend_opinion
}
}
else = {
reverse_add_opinion = {
target = scope:host
modifier = friendliness_opinion
opinion = 25
}
}
ai_chance = {
base = 0
modifier = {
add = 100
has_trait = humble
}
modifier = {
add = 50
scope:reward_type = flag:praise
has_trait = shy
}
modifier = {
add = 50
has_activity_intent = coronation_offer_support
}
}
}
}
######################
# Host: Close family member helps manage the coronation
# by Jay Zaborowski
# 0020
ach_coronation.0020 = {
type = activity_event
title = ach_coronation.0020.t
desc = ach_coronation.0020.desc
left_portrait = {
character = scope:annoying_servant
animation = stunned
camera = camera_event_very_right_pointing_very_left
hide_info = yes
}
center_portrait = {
character = scope:helpful_family
animation = stayback
camera = camera_event_right_pointing_very_right
}
right_portrait = {
character = scope:host
triggered_animation = {
trigger = { OR = { scope:host.religion = religion:eastern_orthodox_religion scope:host.religion = religion:catholic_religion scope:host.religion = religion:protestant_religion } }
animation = emotion_thinking_scepter
}
triggered_animation = {
trigger = { NOT = { OR = { scope:host.religion = religion:eastern_orthodox_religion scope:host.religion = religion:catholic_religion scope:host.religion = religion:protestant_religion } } }
animation = thinking
}
camera = camera_event_very_left_pointing_right
}
theme = coronation_activity
cooldown = { years = 1 }
override_background = {
reference = corridor_day
}
trigger = {
involved_activity = {
any_attending_character = {
ach_coronation_0018_eligible_family_member_trigger = yes
}
}
}
immediate = {
involved_activity = {
activity_host = { save_scope_as = host }
random_attending_character = {
limit = {
ach_coronation_0018_eligible_family_member_trigger = yes
}
weight = {
base = 1
opinion_modifier = {
opinion_target = scope:host
multiplier = 0.25
}
modifier = {
add = sum_of_all_skills_value
}
modifier = { # Prefer close family
is_close_family_of = root
add = 20
}
modifier = {
has_trait = ambitious
add = 10
}
modifier = {
has_trait = diligent
add = 10
}
# If making them a vassal is on the table, try and get someone who is eligible
modifier = {
trigger_if = {
limit = {
root = {
has_activity_intent = coronation_embrace_supporters
any_held_title = { ach_coronation_0018_grantable_title_trigger = yes }
}
NOT = { can_be_granted_titles_by = { RULER = root } }
}
}
factor = 0.1
}
}
save_scope_as = helpful_family
add_character_modifier = {
modifier = exhausted_modifier
years = 10
}
if = {
limit = {
has_trait = diligent
}
add_stress = minor_stress_gain
}
else = {
add_stress = major_stress_gain
}
}
}
ach_coronation_0018_choose_title_effect = yes
if = { # Grab a courtier for the background
limit = {
any_courtier_or_guest = {
this != scope:helpful_family
this != root
is_available_in_activity_trigger = yes
}
}
random_courtier_or_guest = {
limit = {
this != scope:helpful_family
this != root
is_available_in_activity_trigger = yes
}
save_scope_as = annoying_servant
}
}
else_if = { # If there wasn't one grab a pool char
limit = {
any_pool_character = {
province = involved_activity.activity_location
this != scope:helpful_family
this != root
is_available_in_activity_trigger = yes
}
}
random_pool_character = {
province = involved_activity.activity_location
limit = {
this != scope:helpful_family
this != root
is_available_in_activity_trigger = yes
}
save_scope_as = annoying_servant
}
}
else = { # Else, make one
create_character = {
save_scope_as = annoying_servant
employer = root
template = servant_character
gender_female_chance = root_faith_dominant_gender_adjusted_female_chance
}
add_character_flag = created_character_ach_coronation_0020
}
}
option = { # A: Embrace Supporters: They would be a loyal vassal!
name = ach_coronation.0020.a
reason = activity_intent
add_internal_flag = special
trigger = {
has_activity_intent = coronation_embrace_supporters
exists = scope:grantable_title
scope:helpful_family = {
can_be_granted_titles_by = { RULER = root }
}
}
show_as_unavailable = {
AND = {
has_activity_intent = coronation_embrace_supporters
exists = scope:grantable_title
}
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:grantable_title = {
change_title_holder = {
holder = scope:helpful_family
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
coronation_move_towards_supporter_effect = { CHARACTER = scope:helpful_family }
custom_tooltip = {
text = character_title_cannot_be_revoked_tt
scope:helpful_family = {
add_character_flag = {
flag = titles_protected
years = 10
}
}
}
scope:helpful_family = {
add_trait = loyal
add_opinion = {
modifier = loyalty_opinion
target = scope:host
opinion = 25
}
}
add_hook = {
target = scope:helpful_family
type = loyalty_hook
}
coronation_embrace_supporters_opinion_effect = yes
}
option = { # B: Family First: This is how we do things in my dynasty!
name = ach_coronation.0020.b
trait = family_first
trigger = { has_trait = family_first }
show_as_unavailable = { always = yes }
every_close_family_member = {
custom = every_family_member_tt
limit = {
NOT = { this = root }
}
add_opinion = {
target = root
modifier = love_opinion
opinion = 20
}
}
dynasty ?= {
add_dynasty_modifier = {
modifier = ach_familial_support_modifier
years = 10
}
}
}
option = { # C: They truly are a great GetRelationToMe
name = ach_coronation.0020.c
if = {
limit = {
can_set_relation_potential_friend_trigger = { CHARACTER = scope:helpful_family }
reverse_opinion = {
target = scope:helpful_family
value > 20
}
OR = {
scope:helpful_family = { is_ai = yes }
AND = {
scope:helpful_family = { is_ai = no }
is_ai = no
}
}
}
set_relation_potential_friend = scope:helpful_family
}
coronation_move_towards_supporter_effect = { CHARACTER = scope:helpful_family }
scope:helpful_family = {
add_opinion = {
target = root
modifier = love_opinion
opinion = 20
}
}
}
option = { # D: They're a model for all my subjects
name = ach_coronation.0020.d
add_prestige = minor_prestige_gain
}
after = {
add_stress = medium_stress_loss
if = {
limit = { has_character_flag = created_character_ach_coronation_0020 }
hidden_effect = {
scope:annoying_servant = { silent_disappearance_effect = yes }
remove_character_flag = created_character_ach_coronation_0020
}
}
}
}
######################
# Guest: An ongoing plague has shaken a zealous guest
# by Jay Zaborowski
# 0022
scripted_trigger ach_coronation_0022_valid_zealot_trigger = {
is_ai = yes
faith = scope:host.faith
highest_held_title_tier >= tier_county
OR = {
has_trait = zealous
trigger_if = {
limit = { is_vassal_or_below_of = scope:host }
has_vassal_stance = zealot
}
}
NOR = {
this = scope:host
this = root
has_trait = cynical
has_trait = loyal
# Don't want anyone who wouldn't listen to you
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
}
}
scripted_trigger ach_coronation_0022_loose_zealot_trigger = {
is_ai = yes
faith = involved_activity.activity_host.faith
highest_held_title_tier >= tier_county
OR = {
ai_zeal >= low_positive_ai_value
has_trait = zealous
trigger_if = {
limit = { is_vassal_or_below_of = involved_activity.activity_host }
has_vassal_stance = zealot
}
has_trait = lifestyle_mystic
has_trait = paranoid
has_trait = craven
has_trait = devoted
}
NOR = {
this = involved_activity.activity_host
this = root
has_trait = cynical
# Don't want anyone who wouldn't listen to you
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
}
}
ach_coronation.0022 = {
type = activity_event
title = ach_coronation.0022.t
desc = {
desc = ach_coronation.0022.desc
first_valid = {
triggered_desc = {
trigger = { scope:host = { primary_title = title:e_byzantium } }
desc = ach_coronation.0022.desc.whisper.byzantine
}
triggered_desc = {
trigger = { scope:host = { primary_title = title:e_hre } }
desc = ach_coronation.0022.desc.whisper.hre
}
triggered_desc = {
trigger = { scope:host = { num_sinful_traits >= 2 } }
desc = ach_coronation.0022.desc.whisper.sinner
}
triggered_desc = {
trigger = { scope:host.culture = { has_innovation = innovation_divine_right } }
desc = ach_coronation.0022.desc.whisper.divine_right
}
desc = ach_coronation.0022.desc.whisper.fallback
}
desc = ach_coronation.0022.desc.ending
}
theme = coronation_activity
override_background = {
reference = temple
}
cooldown = { years = 1 }
left_portrait = {
character = root
triggered_animation = {
trigger = { has_activity_intent = coronation_disrupt_loyalists }
animation = interested
}
animation = thinking
}
right_portrait = {
character = scope:zealot
animation = prayer
camera = camera_event_very_right_close
}
trigger = {
involved_activity = {
activity_host = {
save_temporary_scope_as = host_temp
is_ai = yes
# Ongoing plague
any_sub_realm_county = {
count >= 3
any_county_province = {
any_province_epidemic = {
count >= 1
outbreak_intensity > minor
}
}
}
}
any_attending_character = {
ach_coronation_0022_loose_zealot_trigger = yes
}
}
}
weight_multiplier = {
base = 1
modifier = {
has_activity_intent = coronation_disrupt_loyalists
factor = 2
}
modifier = {
has_activity_intent = coronation_offer_support
factor = 2
}
modifier = {
involved_activity = {
activity_host = {
# Ongoing plague
any_sub_realm_county = {
count >= 10
any_county_province = {
any_province_epidemic = {
count >= 1
outbreak_intensity > minor
}
}
}
}
}
factor = 2
}
modifier = {
involved_activity = {
activity_host = {
# Ongoing plague
any_sub_realm_county = {
count >= 3
any_county_province = {
any_province_epidemic = {
count >= 1
outbreak_intensity > major
}
}
}
}
}
factor = 2
}
modifier = {
involved_activity = {
activity_location = {
any_province_epidemic = {
count >= 1
outbreak_intensity > minor
}
}
}
factor = 2
}
}
immediate = {
involved_activity = {
activity_host = {
save_scope_as = host
# Get the ongoing plague
if = {
limit = {
any_sub_realm_county = {
count >= 4
any_county_province = {
any_province_epidemic = {
count >= 1
outbreak_intensity = apocalyptic
}
}
}
}
get_random_realm_epidemic = { INTENSITY = apocalyptic }
}
else = {
get_random_realm_epidemic = { INTENSITY = major }
}
# Get the Faction if that's part of it
if = {
limit = {
root = { has_activity_intent = coronation_disrupt_loyalists }
}
random_targeting_faction = {
limit = {
any_faction_member = { this = root }
#Won't join a bunch of heretics
trigger_if = {
limit = { faction_is_type = claimant_faction }
special_character.faith ?= scope:host.faith
}
trigger_if = {
limit = { faction_is_type = populist_faction }
var:faction_faith ?= scope:host.faith
}
}
save_scope_as = faction
}
}
}
# Grab yer zealot
random_attending_character = {
# Try and get someone who can join the faction if that's relevant
limit = {
exists = scope:faction
can_join_faction = scope:faction
ach_coronation_0022_valid_zealot_trigger = yes
}
alternative_limit = {
ach_coronation_0022_valid_zealot_trigger = yes
}
alternative_limit = {
ach_coronation_0022_loose_zealot_trigger = yes
}
weight = {
base = 1
# Prefer vassals
modifier = {
add = {
value = 5
if = {
limit = { is_powerful_vassal_of = scope:host }
add = 10
}
}
is_vassal_of = scope:host
}
# Prefer interesting characters
modifier = {
add = 10
is_of_major_interest_to_root_trigger = yes
}
modifier = {
add = 5
is_of_minor_interest_to_root_trigger = yes
}
# Who would also likely be afeared
modifier = {
add = 5
has_trait = craven
}
# And not those who wouldn't be
modifier = {
add = -15
has_trait = brave
}
# Clergy members are also nice
modifier = {
add = 5
is_clergy = yes
}
# As are Zealot Vassal Stancers
modifier = {
add = 5
is_vassal_of = scope:host
has_vassal_stance = zealot
}
# Weightings for zealotry
modifier = {
add = {
value = ai_zeal
multiply = 0.2 # Don't want it to overwhelm other factors
}
}
# Prefer rulers who already dislike the host
opinion_modifier = {
opinion_target = scope:host
multiplier = -0.2 # Don't want it to overwhelm other factors
}
}
save_scope_as = zealot
assign_quirk_effect = yes
}
}
}
option = { # This is that bastard host's fault!
name = ach_coronation.0022.a.coronation_disrupt_loyalists
trigger = {
has_activity_intent = coronation_disrupt_loyalists
exists = scope:faction
scope:zealot = {
can_join_faction = scope:faction
opinion = {
target = scope:host
value <= 60
}
}
}
custom_tooltip = available_because_intent_tt
flavor = ach_coronation.0022.a.coronation_disrupt_loyalists.flavor
reason = activity_intent
skill = diplomacy
add_piety = medium_piety_loss
reverse_add_opinion = {
target = scope:host
modifier = opposition_opinion
opinion = -20
}
duel = {
skills = { diplomacy learning }
target = scope:zealot
50 = { # You convert them!
desc = ach_coronation.0022.a.coronation_disrupt_loyalists.success
compare_modifier = {
value = scope:duel_value
multiplier = 0.5
}
modifier = {
has_perk = theologian_perk
add = 25
}
modifier = {
has_trait = zealous
add = 25
}
modifier = {
scope:zealot = {
opinion = {
target = scope:host
value < -50
}
}
add = 25
}
modifier = {
scope:zealot = {
opinion = {
target = scope:host
value < 0
}
}
add = 15
}
send_interface_toast = {
title = ach_coronation.0022.a.coronation_disrupt_loyalists.success
left_icon = root
right_icon = scope:zealot
scope:zealot = { join_faction = scope:faction }
coronation_move_towards_detractor_effect = { CHARACTER = scope:zealot }
}
}
50 = { # You fail
desc = ach_coronation.0022.a.coronation_disrupt_loyalists.failure
compare_modifier = {
value = scope:duel_value
multiplier = -0.5
}
modifier = {
scope:zealot = {
opinion = {
target = scope:host
value > 0
}
}
add = 25
}
modifier = {
scope:zealot = {
opinion = {
target = scope:host
value > 30
}
}
add = 25
}
send_interface_toast = {
title = ach_coronation.0022.a.coronation_disrupt_loyalists.failure
left_icon = root
right_icon = scope:zealot
reverse_add_opinion = {
target = scope:zealot
modifier = outraged_opinion
opinion = -20
}
}
}
}
ai_chance = {
base = 150
modifier = {
has_trait = disloyal
add = 50
}
modifier = {
has_trait = schemer
add = 50
}
}
}
option = { # It's not our goodly Host's fault!
name = ach_coronation.0022.a.offer_support
trigger = { has_activity_intent = coronation_offer_support }
custom_tooltip = available_because_intent_tt
flavor = ach_coronation.0022.a.offer_support.flavor
add_piety = medium_piety_loss
duel = {
skills = { diplomacy learning }
target = scope:zealot
50 = { # They are more loyal than ever
desc = ach_coronation.0022.a.offer_support.success
compare_modifier = {
value = scope:duel_value
multiplier = 0.5
}
modifier = {
has_perk = theologian_perk
add = 25
}
modifier = {
has_trait = zealous
add = 25
}
send_interface_toast = {
title = ach_coronation.0022.a.offer_support.success
left_icon = root
right_icon = scope:zealot
random = {
chance = 20
scope:zealot = {
add_trait = loyal
}
}
reverse_add_opinion = {
target = scope:zealot
modifier = comforted_opinion
opinion = 10
}
reverse_add_opinion = {
target = scope:host
modifier = helpful_opinion
opinion = 20
}
scope:zealot = {
add_opinion = {
target = scope:host
modifier = loyalty_opinion
opinion = 30
}
}
coronation_move_towards_supporter_effect = { CHARACTER = scope:zealot }
}
}
50 = { # You fail
desc = ach_coronation.0022.a.offer_support.failure
compare_modifier = {
value = scope:duel_value
multiplier = -0.5
}
send_interface_toast = {
title = ach_coronation.0022.a.offer_support.failure
left_icon = root
right_icon = scope:zealot
reverse_add_opinion = {
target = scope:zealot
modifier = annoyed_opinion
opinion = -20
}
coronation_move_towards_detractor_effect = { CHARACTER = scope:zealot }
}
}
}
stress_impact = {
fickle = minor_stress_impact_gain
}
ai_chance = {
base = 150
modifier = {
has_trait = loyal
add = 50
}
}
}
option = { # Pray with HerHim
name = ach_coronation.0022.b
trigger = {
root.faith.religion ?= scope:zealot.faith.religion
}
show_as_unavailable = { always = yes }
reason = faith
trait = zealous
custom_tooltip = available_because_of_shared_religion_tt
add_piety = medium_piety_gain
if = {
limit = {
scope:zealot = {
opinion = {
target = root
value > 0
}
}
OR = {
scope:zealot = { is_ai = yes }
AND = {
scope:zealot = { is_ai = no }
is_ai = no
}
}
}
progress_towards_friend_effect = {
CHARACTER = scope:zealot
OPINION = 20
REASON = friend_religious_comfort
}
}
else = {
reverse_add_opinion = {
target = scope:zealot
modifier = kindness_opinion
opinion = 20
}
}
stress_impact = {
cynical = medium_stress_impact_gain
zealous = medium_stress_impact_loss
compassionate = minor_stress_impact_loss
callous = medium_stress_impact_gain
sadistic = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = zealous
add = 100
}
modifier = {
has_trait = compassionate
add = 50
}
modifier = {
has_trait = sadistic
add = -25
}
modifier = {
has_trait = callous
add = -100
}
modifier = {
OR = {
has_trait = cynical
has_trait = callous
has_trait = sadistic
}
factor = 0
}
}
}
option = { # I'm not getting near anyone rn, thanks
name = ach_coronation.0022.d
flavor = ach_coronation.0022.d.flavor
add_character_modifier = {
modifier = ach_social_distancing_modifier
years = 4
}
stress_impact = {
gregarious = miniscule_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = cynical
add = 25
}
modifier = {
has_trait = shy
add = 25
}
modifier = {
has_trait = paranoid
add = 25
}
modifier = {
has_trait = trusting
add = -25
}
modifier = {
has_trait = callous
add = -25
}
modifier = {
has_trait = gregarious
add = -25
}
}
}
}
######################
# Host: An exotic foreign warrior pledges themselves to you
# by Jay Zaborowski
# 0023
scripted_trigger ach_coronation_0023_foreign_holder_trigger = {
NOR = {
# Make sure they're from afar
in_diplomatic_range = prev
# And suitably foreign
faith = prev.faith
culture = prev.culture
}
save_temporary_scope_as = foreign_ruler_temp
prev = {
# They're not that exotic if you already rule a bunch of them
any_realm_county = {
NOR = {
faith = scope:foreign_ruler_temp.faith
culture = scope:foreign_ruler_temp.culture
}
}
}
}
scripted_trigger ach_coronation_0023_eligible_clergy_trigger = {
is_available_in_activity_trigger = yes
faith = involved_activity.activity_host.faith
}
scripted_effect ach_coronation_0023_generic_acceptance_effect = {
if = {
limit = {
faith = { NOT = { has_doctrine = doctrine_pluralism_pluralistic } }
}
# Fundamentalists won't be happy about this
every_vassal = {
limit = {
faith = root.faith
has_vassal_stance = zealot
}
custom = every_zealot_vassal
add_opinion = {
target = root
modifier = fp1_honoured_heathen_opinion
opinion = -10
}
}
add_piety = medium_piety_loss
if = {
limit = { has_trait = zealous }
stress_impact = {
zealous = medium_stress_impact_gain
}
}
}
culture = {
change_cultural_acceptance = {
target = scope:foreign_warrior.culture
value = low_positive_culture_acceptance
desc = cultural_acceptance_gain_accepted_foreign_warrior
}
}
stress_impact = {
trusting = medium_stress_loss # Trusts this strange foreigner implicitly
paranoid = medium_stress_loss # Is very happy to have less incompetent guards
}
}
ach_coronation.0023 = {
type = activity_event
title = ach_coronation.0023.t
desc = {
desc = ach_coronation.0023.desc
first_valid = {
triggered_desc = {
trigger = {
exists = scope:clergy
scope:clergy.faith = {
NOT = { has_doctrine = doctrine_pluralism_pluralistic }
}
}
desc = ach_coronation.0023.desc.clergy.angry
}
triggered_desc = {
trigger = {
exists = scope:clergy
}
desc = ach_coronation.0023.desc.clergy
}
}
}
left_portrait = {
character = root
animation = thinking
camera = camera_event_very_left
}
center_portrait = {
character = scope:foreign_warrior
animation = obsequious_bow
camera = camera_event_center_pointing_left
}
right_portrait = {
trigger = { exists = scope:clergy }
triggered_animation = {
trigger = {
scope:clergy.faith = {
NOT = { has_doctrine = doctrine_pluralism_pluralistic }
}
}
animation = disapproval
}
animation = interested
character = scope:clergy
}
cooldown = { years = 1 }
theme = coronation_activity
override_background = {
reference = throne_room
}
trigger = {
has_activity_intent = coronation_embrace_supporters
any_independent_ruler = { ach_coronation_0023_foreign_holder_trigger = yes }
involved_activity = {
any_attending_character = {
ach_coronation_0023_eligible_clergy_trigger = yes
is_vassal_or_below_of = root
OR = {
is_clergy = yes
has_trait = devoted
is_theocratic_lessee = yes
government_has_flag = government_is_theocracy
}
}
}
}
# Exotic warriors won't be attracted by lords who aren't some level of famous
weight_multiplier = {
base = 0
# Court Grandeur attracts adventurers
modifier = {
has_royal_court = yes
court_grandeur_current_level > 2
add = {
value = court_grandeur_current_level
divide = 4
}
}
modifier = {
prestige_level > 2
add = {
value = prestige_level
divide = 2
}
}
}
immediate = {
# Get a foreign court for the warrior to arrive from
random_independent_ruler = {
# Make sure they're from afar
limit = { ach_coronation_0023_foreign_holder_trigger = yes }
weight = {
base = 1
# Like, really afar
modifier = {
add = 1000
capital_province = {
squared_distance = {
target = root.capital_province
value >= squared_distance_massive
}
}
}
# More militaristic cultures with cool warrior folks are preferred
modifier = {
add = 500
culture = {
OR = {
has_cultural_pillar = ethos_stoic
has_cultural_pillar = ethos_bellicose
has_cultural_parameter = wanderers_gain_extra_combat_skills
has_cultural_parameter = high_prowess_ignores_knight_restrictions
has_cultural_parameter = prowess_from_martial_education
has_cultural_parameter = martial_education_more_valued
has_cultural_parameter = strong_traits_more_valued
}
}
}
# Cultures that don't tend to like foreigners are not
modifier = {
add = -500
culture = {
OR = {
has_cultural_parameter = courtiers_less_likely_to_leave_same_culture_court
has_cultural_parameter = dislikes_marrying_outside_of_culture
}
}
}
}
save_scope_as = foreign_ruler
}
# Create your new BFF
create_character = {
template = bp1_yearly_2021_martial_person_template
location = root.location
faith = scope:foreign_ruler.faith
culture = scope:foreign_ruler.culture
trait = loyal
save_scope_as = foreign_warrior
}
scope:foreign_warrior = {
hidden_effect = {
# Give them an opinion bump so they don't hate you
add_opinion = {
target = root
modifier = impressed_opinion
opinion = 30
}
# And make sure they speak your language
learn_language_of_culture = root.culture
# Add them now so the can_appoint triggers work
add_courtier = scope:foreign_warrior
}
}
# Grab a clergy person to be angry (or curious)
involved_activity = {
random_attending_character = {
limit = { # Grab the Court Chaplain if they're attending
ach_coronation_0023_eligible_clergy_trigger = yes
has_council_position = councillor_court_chaplain
is_councillor_of = root
}
alternative_limit = { # Any Zealot vassal if not
ach_coronation_0023_eligible_clergy_trigger = yes
is_vassal_of = root
has_vassal_stance = zealot
}
alternative_limit = { # Find any sort of clergy-type as a fallback
ach_coronation_0023_eligible_clergy_trigger = yes
is_vassal_or_below_of = root
OR = {
is_clergy = yes
has_trait = devoted
is_theocratic_lessee = yes
government_has_flag = government_is_theocracy
}
}
save_scope_as = clergy
}
}
ordered_court_position_holder = {
type = bodyguard_court_position
order_by = { # Get the worst bodyguard you have
value = 0
subtract = "aptitude(bodyguard_court_position)"
}
save_scope_as = worst_bodyguard
}
}
option = { # Make them your bodyguard
name = ach_coronation.0023.a
trigger = {
can_employ_court_position_type = bodyguard_court_position
any_court_position_holder = {
type = bodyguard_court_position
has_court_position = bodyguard_court_position
count < 2
}
}
court_position_grant_effect = { POS = bodyguard CANDIDATE = scope:foreign_warrior EMPLOYER = root }
scope:foreign_warrior = {
add_opinion = {
modifier = hired_me_opinion
target = root
opinion = 30
}
hidden_effect = {
add_prestige = medium_prestige_gain
}
}
ach_coronation_0023_generic_acceptance_effect = yes
ai_chance = {
base = 100
opinion_modifier = {
trigger = { exists = scope:worst_bodyguard }
who = scope:worst_bodyguard
opinion_target = root
multiplier = -1
}
# Faith modifiers
modifier = {
faith = { NOT = { has_doctrine = doctrine_pluralism_pluralistic } }
NOT = { has_trait = cynical }
add = -50
}
modifier = {
faith = { NOT = { has_doctrine = doctrine_pluralism_pluralistic } }
has_trait = zealous
factor = 0
}
# If you have a Champion slot then make them that instead of replacing
modifier = {
employs_court_position = bodyguard_court_position
NOT = { employs_court_position = champion_court_position }
factor = 0
}
}
}
option = { # Make them your Champion
name = ach_coronation.0023.b
trigger = {
can_employ_court_position_type = champion_court_position
NOT = { employs_court_position = champion_court_position }
}
if = {
limit = {
can_employ_court_position_type = champion_court_position
NOT = { employs_court_position = champion_court_position }
}
court_position_grant_effect = { POS = champion CANDIDATE = scope:foreign_warrior EMPLOYER = root }
}
scope:foreign_warrior = { # Grant the position
add_opinion = {
modifier = hired_me_opinion
target = root
opinion = 30
}
hidden_effect = {
add_prestige = medium_prestige_gain
}
}
ach_coronation_0023_generic_acceptance_effect = yes
ai_chance = {
base = 100
opinion_modifier = {
trigger = {
employs_court_position = champion_court_position
}
who = court_position:champion_court_position
opinion_target = root
multiplier = -1
}
# Faith modifiers
modifier = {
faith = { NOT = { has_doctrine = doctrine_pluralism_pluralistic } }
NOT = { has_trait = cynical }
add = -50
}
modifier = {
faith = { NOT = { has_doctrine = doctrine_pluralism_pluralistic } }
has_trait = zealous
factor = 0
}
}
}
option = { # Courtier fallback
name = ach_coronation.0023.c
trigger = {
NOR = {
can_employ_court_position_type = bodyguard_court_position
can_employ_court_position_type = champion_court_position
}
}
ach_coronation_0023_generic_acceptance_effect = yes
add_courtier = scope:foreign_warrior
ai_chance = {
base = 100
# Faith modifiers
modifier = {
faith = { NOT = { has_doctrine = doctrine_pluralism_pluralistic } }
NOT = { has_trait = cynical }
add = -50
}
modifier = {
faith = { NOT = { has_doctrine = doctrine_pluralism_pluralistic } }
has_trait = zealous
factor = 0
}
}
}
option = { # Reject them
name = ach_coronation.0023.d
if = {
limit = {
faith = { NOT = { has_doctrine = doctrine_pluralism_pluralistic } }
}
every_vassal = {
limit = {
faith = root.faith
has_vassal_stance = zealot
}
custom = every_zealot_vassal
add_opinion = {
target = root
modifier = respect_opinion
opinion = 10
}
}
if = {
limit = {
exists = scope:clergy
}
reverse_add_opinion = {
target = scope:clergy
modifier = grateful_opinion
opinion = 20
}
}
}
hidden_effect = {
scope:foreign_warrior = { silent_disappearance_effect = yes }
}
ai_chance = {
base = 100
}
}
}
######################
# Open up drinks to the locals
# by Jay Zaborowski
# 0025
ach_coronation.0025 = {
type = activity_event
title = ach_coronation.0025.t
desc = {
desc = ach_coronation.0025.desc
first_valid = {
triggered_desc = {
trigger = { root = scope:host }
desc = ach_coronation.0025.desc.host
}
desc = ach_coronation.0025.desc.guest
}
}
left_portrait = {
character = root
animation = thinking
}
center_portrait = {
trigger = {
root != scope:host
}
character = scope:host
animation = scepter
}
right_portrait = {
trigger = {
scope:baron != scope:host
root != scope:baron
}
character = scope:baron
animation = thinking
}
theme = feast_activity
cooldown = { years = 1 }
override_background = {
reference = garden
}
trigger = {
OR = {
has_activity_intent = coronation_offer_support
has_activity_intent = coronation_impress_attendees
}
involved_activity = {
activity_location = {
# Has a settlement
has_holding = yes
# Has locals
NOR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
# The barony has willing drinkers
barony.holder = {
faith_forbids_alcohol_trigger = no
faith = prev.county.faith
trigger_if = {
limit = { is_ai = no }
this = root
}
}
}
# And a willing host
activity_host = { faith_forbids_alcohol_trigger = no }
}
# And a willing you
faith_forbids_alcohol_trigger = no
}
immediate = {
involved_activity = {
activity_host = { save_scope_as = host }
activity_location = {
save_scope_as = feast_location
barony.holder = { save_scope_as = baron }
}
}
}
weight_multiplier = {
base = 1
modifier = {
OR = {
has_trait = drunkard
has_trait = lifestyle_reveler
}
add = 2
}
modifier = {
involved_activity.activity_host = {
OR = {
has_trait = drunkard
has_trait = lifestyle_reveler
}
}
add = 2
}
}
option = { # You'll pay for it
name = ach_coronation.0025.a
trigger = {
short_term_gold >= medium_gold_value
}
show_as_unavailable = { always = yes }
remove_short_term_gold = medium_gold_value
involved_activity.activity_location = {
add_province_modifier = { modifier = ach_drunk_province_1_modifier years = 1 }
}
if = {
limit = {
this != scope:host
}
reverse_add_opinion = {
target = scope:host
modifier = grateful_opinion
opinion = 20
}
}
scope:host = {
every_vassal = {
limit = {
has_vassal_stance = courtly
NOT = {
this = root
}
}
custom = every_courtly_vassal
add_opinion = {
target = root
modifier = respect_opinion
opinion = 5
}
}
}
custom_tooltip = coronation_tt_positive_medium
involved_activity = { activity_special_type_progression_medium = yes }
coronation_add_magnificence_log_effect = {
VALUE = flag:positive_medium
CHAR = root
}
stress_impact = {
base = medium_stress_impact_loss
temperate = medium_stress_impact_gain # Doesn't partake
}
ai_chance = {
base = 100
modifier = {
has_trait = temperate
factor = 0.5
}
}
}
option = { # Drunkard / Reveler: We should *both* pay for it!
name = ach_coronation.0025.b
flavor = ach_coronation.0025.b.flavor
trigger = {
custom_tooltip = {
text = ach_coronation.0025.b.tt
short_term_gold >= minor_gold_value
OR = {
has_trait = drunkard
has_trait = lifestyle_reveler
}
scope:baron != root # Only available if there's a local baron to go splitsies
scope:baron != scope:host # And if they're not the Host
}
}
show_as_unavailable = {
scope:baron != root
scope:baron != scope:host
}
trait = drunkard
trait = lifestyle_reveler
duel = {
skill = diplomacy
target = scope:baron
40 = { # The Baron agrees to pay
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ach_coronation.0025.b.tt.success
involved_activity.activity_location = {
add_province_modifier = { modifier = ach_drunk_province_2_modifier years = 1 }
}
scope:baron = {
remove_short_term_gold = root.minor_gold_value
hidden_effect = { add_prestige = medium_prestige_gain }
}
remove_short_term_gold = minor_gold_value
if = {
limit = { this != scope:host }
scope:host = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 10
}
add_opinion = {
target = scope:baron
modifier = grateful_opinion
opinion = 10
}
hidden_effect = {
add_prestige = medium_prestige_gain
}
}
}
send_interface_toast = {
title = ach_coronation.0025.b.tt.success
left_icon = scope:baron
if = {
limit = {
has_trait = lifestyle_reveler
}
add_trait_xp = {
trait = lifestyle_reveler
value = {
integer_range = {
min = small_lifestyle_random_xp_low
max = small_lifestyle_random_xp_high
}
}
}
}
add_prestige = medium_prestige_gain
if = {
limit = {
OR = {
root = { is_ai = no }
}
scope:activity = {
is_target_in_variable_list = {
name = major_supporter
target = root
}
}
}
scope:host = {
custom_tooltip = coronation_tt_positive_medium
involved_activity = { activity_special_type_progression_medium = yes }
}
coronation_add_magnificence_log_effect = {
VALUE = flag:positive_medium
CHAR = root
}
}
stress_impact = {
base = medium_stress_impact_loss
temperate = medium_stress_impact_gain # Doesn't partake
}
}
create_character_memory = {
type = got_the_city_drunk_memory
participants = {
coronation_host = scope:host
baron = scope:baron
}
}
# Used in loc
scope:new_memory = {
save_scope_as = drunk_city_memory
}
scope:drunk_city_memory = {
#set_variable = {
#name = drunk_city_location
#value = scope:feast_location
#}
set_variable = {
name = drunk_city_location
value = scope:feast_location
}
if = { #startup error suppression
limit = { has_variable = drunk_city_location }
}
}
}
60 = { # The Baron refuses your *extremely* awesome idea
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ach_coronation.0025.b.tt.failure
send_interface_toast = {
title = ach_coronation.0025.b.tt.failure
left_icon = scope:baron
scope:baron = { # Very lame of them
add_prestige = minor_prestige_loss
}
hidden_effect = {
add_opinion = {
target = scope:baron
modifier = disappointed_opinion
opinion = -10
}
}
stress_impact = { # Disappointment
drunkard = minor_stress_impact_gain
lifestyle_reveler = minor_stress_impact_gain
}
}
}
}
ai_chance = {
base = 100
modifier = {
has_trait = drunkard
add = 50
}
modifier = {
has_trait = lifestyle_reveler
add = 50
}
}
}
option = { # Just focus on having fun
name = ach_coronation.0025.c
name = {
trigger = {
has_trait = temperate
}
text = ach_coronation.0025.c.temperate
}
flavor = ach_coronation.0025.c.flavor
# Stress loss
stress_impact = {
base = minor_stress_impact_loss
drunkard = minor_stress_impact_gain
lifestyle_reveler = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = temperate
factor = 2
}
}
}
}
######################
# Host: Struggle to hide a cold so that your tribal vassals don't take it as an omen
# by Jay Zaborowski
# 0026
ach_coronation.0026 = {
type = activity_event
title = ach_coronation.0026.t
desc = ach_coronation.0026.desc
left_portrait = {
character = scope:second
animation = dancing
camera = camera_event_very_left_fov35
}
center_portrait = {
character = root
animation = stress
camera = camera_event_center_very_large
}
right_portrait = {
character = scope:vassal
animation = toast_goblet
camera = camera_event_very_right_fov35
}
theme = feast_activity
cooldown = { years = 1 }
trigger = {
can_contract_disease_trigger = { DISEASE = ill }
government_has_flag = government_is_tribal
involved_activity = {
any_attending_character = {
government_has_flag = government_is_tribal
coronation_hostile_to_host_trigger = no
can_add_hook = {
target = root
type = favor_hook
}
}
}
}
immediate = {
involved_activity = {
random_attending_character = {
limit = {
government_has_flag = government_is_tribal
coronation_hostile_to_host_trigger = no
can_add_hook = {
target = root
type = favor_hook
}
}
weight = {
base = 1
# Prefer vassals
modifier = {
add = {
value = 5
if = {
limit = { is_powerful_vassal_of = root }
add = 10
}
}
is_vassal_of = root
}
# Prefer interesting characters
modifier = {
add = 10
is_of_major_interest_to_root_trigger = yes
}
modifier = {
add = 5
is_of_minor_interest_to_root_trigger = yes
}
# Try and get someone who'd be willing to help you out
opinion_modifier = {
opinion_target = root
multiplier = 0.25
}
}
save_scope_as = vassal
}
random_attending_character = {
limit = {
NOR = {
this = root
this = scope:vassal
}
}
save_scope_as = second
}
}
}
option = { # Hold it in hold it in hold it in
name = ach_coronation.0026.a
custom_tooltip = ach_coronation.0026.a.tt
random_list = {
40 = { # Your vassals notice you're sick
desc = ach_coronation.0026.a.tt.sick.failure
send_interface_toast = {
title = ach_coronation.0026.a.tt.sick.failure
left_icon = root
add_prestige = minor_prestige_loss
contract_disease_effect = { DISEASE = ill TREATMENT_EVENT = yes }
custom_tooltip = coronation_tt_negative
involved_activity = { activity_special_type_progression_negative = yes }
coronation_add_magnificence_log_effect = {
VALUE = flag:negative
CHAR = root
}
}
}
40 = { # Nobody notices
desc = ach_coronation.0026.a.tt.sick.success
send_interface_toast = {
title = ach_coronation.0026.a.tt.sick.success
left_icon = root
reverse_add_opinion = {
target = scope:vassal
modifier = feast_had_good_time_together_opinion
opinion = 15
}
contract_disease_effect = { DISEASE = ill TREATMENT_EVENT = yes }
}
}
20 = { # The feeling's pass
desc = ach_coronation.0026.a.tt.critical_success
send_interface_toast = {
title = ach_coronation.0026.a.tt.critical_success
reverse_add_opinion = {
target = scope:vassal
modifier = feast_had_good_time_together_opinion
opinion = 15
}
stress_impact = {
base = minor_stress_loss
}
}
}
}
}
option = { # Vassal, help me!
name = ach_coronation.0026.b
custom_tooltip = ach_coronation.0026.b.tt
random = {
chance = 50
contract_disease_effect = { DISEASE = ill TREATMENT_EVENT = yes }
}
hidden_effect = {
add_opinion = {
target = scope:vassal
modifier = grateful_opinion
opinion = 15
}
}
scope:vassal = {
add_hook = {
target = root
type = favor_hook
}
}
ai_chance = {
base = 100
modifier = {
has_trait = arrogant
factor = 0.5
}
modifier = {
has_trait = shy
factor = 0.5
}
}
}
option = { # Bail on the feast
name = ach_coronation.0026.c
flavor = ach_coronation.0026.c.flavor
random = {
chance = 25
contract_disease_effect = { DISEASE = ill TREATMENT_EVENT = yes }
}
every_vassal = {
limit = {
OR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_nomadic
}
}
custom = custom.every_tribal_nomadic_vassal
add_opinion = {
target = root
modifier = opinion_acting_strange
opinion = -10
}
}
ai_chance = {
base = 100
modifier = {
has_trait = arrogant
factor = 0.5
}
modifier = {
has_trait = stubborn
factor = 0.5
}
}
}
}
######################
# An attendee brings some hashish
# by Jay Zaborowski
# 0027
scripted_trigger can_be_hashishiyah_ignoring_region_trigger = {
# You meet all the Hashishiyah triggers besides geographic_region
is_adult = yes
NOR = {
has_trait = drunkard
has_trait = hashishiyah
has_trait = temperate
}
NAND = {
faith = { trait_is_sin = hashishiyah }
has_trait = zealous
}
}
scripted_trigger eligible_to_join_stoner_trigger = {
is_available_in_activity_trigger = yes
OR = {
has_trait = hashishiyah
can_be_hashishiyah_ignoring_region_trigger = yes
}
}
ach_coronation.0027 = {
type = activity_event
title = ach_coronation.0027.t
desc = {
desc = ach_coronation.0027.desc
first_valid = {
triggered_desc = {
trigger = {
scope:stoner = {
OR = {
has_trait = faith_warrior
has_trait = crusader_king
}
}
}
desc = ach_coronation.0027.desc.char.crusader
}
triggered_desc = {
trigger = {
scope:stoner = {
has_trait = varangian
exists = title:e_byzantium.holder
}
}
desc = ach_coronation.0027.desc.char.varangian
}
desc = ach_coronation.0027.desc.char.other
}
}
left_portrait = {
character = root
animation = interested
}
center_portrait = {
character = scope:partaker
animation = interested_left
}
right_portrait = {
character = scope:stoner
animation = wedding_drunk
}
cooldown = { years = 1 }
theme = feast_activity
trigger = {
OR = { # If you can't normally be a Hashishiyah, look for some exceptions
can_be_hashishiyah = yes
AND = { # If a European Christian, the crusades are going on
location = { geographical_region = world_europe }
religion = {
this = religion:christianity_religion
exists = var:variable_ghw_unlocked
}
}
AND = { # If in Scandinavia, you have access to Varangians and they still exist
location = { geographical_region = world_europe_north }
title:e_byzantium ?= { has_variable = founded_varangian_guard }
OR = {
culture = { has_cultural_pillar = heritage_north_germanic }
dynasty ?= { has_dynasty_perk = fp1_adventure_legacy_1 }
}
}
}
involved_activity = {
any_attending_character = {
eligible_to_join_stoner_trigger = yes
this != root
count > 1 # In case the Stoner also meets the trigger
}
}
}
weight_multiplier = {
base = 1
modifier = {
factor = 2
OR = {
can_be_hashishiyah_ignoring_region_trigger = yes
has_trait = hashishiyah
}
}
modifier = {
factor = 2
involved_activity = {
any_attending_character = {
has_trait = hashishiyah
}
}
}
modifier = {
factor = 3
faith = {
has_variable = variable_ghw_cooldown # There was a recent crusade
religion = { this = religion:christianity_religion }
}
}
}
immediate = {
play_music_cue = "middleeasterncourt_cue"
involved_activity = {
random_attending_character = {
limit = {
this != root
this != prev.activity_host
is_ai = yes
is_available_in_activity_trigger = yes
has_trait = hashishiyah
}
alternative_limit = {
this != root
this != prev.activity_host
is_ai = yes
is_available_in_activity_trigger = yes
can_be_hashishiyah_ignoring_region_trigger = yes
OR = {
can_be_hashishiyah = yes
can_be_hashishiyah_ignoring_region_trigger = yes
}
OR = {
has_trait = faith_warrior
has_trait = crusader_king
has_trait = varangian
}
}
save_scope_as = stoner
}
root = {
if = { # If the stoner does not exist, generate a...
limit = { NOT = { exists = scope:stoner } }
if = { # Varangian (if you're Scandinavian)
limit = {
location = { geographical_region = world_europe_north }
title:e_byzantium ?= { has_variable = founded_varangian_guard }
OR = {
culture = { has_cultural_pillar = heritage_north_germanic }
dynasty = { has_dynasty_perk = fp1_adventure_legacy_1 }
}
}
create_character = {
save_scope_as = stoner
culture = root.culture
faith = root.faith
location = root.location
template = varangian_template
trait = hashishiyah
}
title:e_byzantium.holder.culture = { save_scope_as = emperor_culture }
}
else_if = { # Crusader (if you're Christian)
limit = {
location = { geographical_region = world_europe }
faith = { has_variable = variable_ghw_cooldown }
OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion }
}
create_character = {
save_scope_as = stoner
culture = root.culture
faith = root.faith
location = root.location
template = knight
trait = hashishiyah
trait = faith_warrior
}
}
else = { # Some Reveler type of person
create_character = {
save_scope_as = stoner
culture = root.culture
faith = root.faith
location = root.location
template = diplomacy_court_position_holder_template
trait = hashishiyah
trait = lifestyle_traveler
}
}
scope:stoner = {
add_to_activity = root.involved_activity
}
add_character_flag = created_character_ach_coronation_0027
}
}
random_attending_character = {
limit = {
eligible_to_join_stoner_trigger = yes
has_trait = hashishiyah
this != scope:stoner
this != root
}
alternative_limit = {
eligible_to_join_stoner_trigger = yes
this != scope:stoner
this != root
}
save_scope_as = partaker
}
}
}
option = { # If Hashish is not available, purchase a supply
name = ach_coronation.0027.a
trigger = {
NOT = { has_trait = hashishiyah } # You aren't already a Hashishiyah
can_be_hashishiyah = no # You can't be a Hashishiyah
can_be_hashishiyah_ignoring_region_trigger = yes # But only because of your region
}
reverse_add_opinion = {
target = scope:stoner
modifier = purchased_hashish_opinion
opinion = 20
}
pay_short_term_gold = {
target = scope:stoner
gold = medium_gold_value
}
add_character_modifier = {
modifier = ach_secret_stash_modifier
years = 4
}
random = {
chance = 20
add_trait = hashishiyah
}
if = {
limit = {
faith = { trait_is_sin = hashishiyah }
}
add_piety = major_piety_loss
stress_impact = {
zealous = major_stress_impact_gain
cynical = minor_stress_impact_loss
}
}
else_if = {
limit = {
faith = { trait_is_virtue = hashishiyah }
}
add_piety = minor_piety_gain
stress_impact = {
cynical = medium_stress_impact_gain
zealous = minor_stress_impact_loss
}
}
stress_impact = {
greedy = minor_stress_impact_gain
avaricious = minor_stress_impact_gain
temperate = medium_stress_impact_gain
}
ai_chance = {
modifier = {
OR = {
has_trait = lifestyle_reveler
has_trait = gluttonous
has_trait = gregarious
}
factor = 2
}
base = 100
modifier = {
OR = {
has_trait = greedy
has_trait = avaricious
}
factor = 0.5
}
modifier = {
has_trait = temperate
factor = 0
}
}
}
option = { # Join in
name = ach_coronation.0027.b
name = {
trigger = { has_trait = hashishiyah }
text = ach_coronation.0027.b.hashishiyah
}
trait = hashishiyah
reverse_add_opinion = {
target = scope:stoner
modifier = camp_party_reveled_opinion
opinion = 10
}
reverse_add_opinion = {
target = scope:partaker
modifier = camp_party_reveled_opinion
opinion = 10
}
if = {
limit = {
has_trait = lifestyle_reveler
}
add_trait_xp = {
trait = lifestyle_reveler
value = 5
}
}
if = { # You already love hashish - let's be smoke buddies!
limit = { has_trait = hashishiyah }
if = {
limit = {
reverse_opinion = {
target = scope:stoner
value > 0
}
OR = {
scope:stoner = { is_ai = yes }
AND = {
scope:stoner = { is_ai = no }
is_ai = no
}
}
}
set_relation_friend = {
target = scope:stoner
reason = friend_got_high_together
}
}
else = {
reverse_add_opinion = {
target = scope:stoner
modifier = pleased_opinion
opinion = 30
}
}
}
else_if = { # Else, if Hashish is available, chance to become a Hashiyah
limit = {
can_be_hashishiyah = yes # You can be a Hahishiyah
}
random = {
chance = 20
add_trait = hashishiyah
}
}
add_character_modifier = {
modifier = stress_hashish_stupor
years = 1
}
if = {
limit = {
faith = { trait_is_sin = hashishiyah }
}
add_piety = minor_piety_loss
stress_impact = {
zealous = medium_stress_impact_gain
cynical = minor_stress_impact_loss
}
}
else_if = {
limit = {
faith = { trait_is_virtue = hashishiyah }
}
add_piety = minor_piety_gain
stress_impact = {
cynical = medium_stress_impact_gain
zealous = minor_stress_impact_loss
}
}
stress_impact = {
base = medium_stress_impact_loss
temperate = medium_stress_impact_gain
shy = minor_stress_impact_gain
hashishiyah = minor_stress_impact_loss # Bonus stress loss if you're already a fan
}
ai_chance = {
base = 100
modifier = {
NOT = { has_trait = cynical }
faith = { trait_is_virtue = hashishiyah }
factor = 2
}
modifier = {
OR = {
has_trait = lifestyle_reveler
has_trait = gluttonous
has_trait = gregarious
}
factor = 2
}
modifier = {
has_trait = shy
factor = 0.5
}
}
}
option = { # Host: Get this person out of here - drugs are bad!!!
name = ach_coronation.0027.c
trigger = {
this = involved_activity.activity_host
}
add_prestige = medium_prestige_gain
reverse_add_opinion = {
target = scope:stoner
modifier = angry_opinion
opinion = -25
}
reverse_add_opinion = {
target = scope:partaker
modifier = disappointed_opinion
opinion = -10
}
scope:stoner = { remove_from_activity = involved_activity }
if = {
limit = {
faith = { trait_is_sin = hashishiyah }
}
add_piety = medium_piety_gain
stress_impact = {
cynical = minor_stress_impact_gain
zealous = medium_stress_impact_loss
}
}
else_if = {
limit = {
faith = { trait_is_virtue = hashishiyah }
}
add_piety = medium_piety_loss
stress_impact = {
zealous = minor_stress_impact_gain
cynical = medium_stress_impact_loss
}
}
stress_impact = {
gregarious = minor_stress_impact_gain
lifestyle_reveler = minor_stress_impact_gain
hashishiyah = major_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
has_trait = zealous
faith = { trait_is_sin = hashishiyah }
factor = 4
}
modifier = {
has_trait = cynical
faith = { trait_is_virtue = hashishiyah }
factor = 4
}
}
}
option = { # I'm good
name = ach_coronation.0027.d
flavor = {
triggered_desc = {
trigger = { this = involved_activity.activity_host }
desc = ach_coronation.0027.d.host
}
}
if = {
limit = { this = involved_activity.activity_host }
custom_tooltip = coronation_tt_positive_tiny
involved_activity = { activity_special_type_progression_miniscule = yes }
coronation_add_magnificence_log_effect = {
VALUE = flag:positive_miniscule
CHAR = root
}
}
else = {
add_prestige = minor_prestige_gain
}
if = {
limit = {
faith = { trait_is_sin = hashishiyah }
}
add_piety = minor_piety_gain
}
else_if = {
limit = {
faith = { trait_is_virtue = hashishiyah }
}
add_piety = minor_piety_loss
}
stress_impact = {
lifestyle_reveler = minor_stress_impact_gain
gregarious = minor_stress_impact_gain
temperate = minor_stress_impact_loss
hashishiyah = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
has_trait = temperate
NOT = { has_trait = hashishiyah }
factor = 2
}
modifier = {
OR = {
has_trait = lifestyle_reveler
has_trait = gluttonous
}
factor = 0.5
}
modifier = {
has_trait = hashishiyah
factor = 0.25
}
}
}
after = {
if = {
limit = {
has_character_flag = created_character_ach_coronation_0027
scope:stoner = { NOT = { has_relation_friend = root } }
}
hidden_effect = {
scope:stoner = { silent_disappearance_effect = yes }
}
}
}
}
######################
# Host: Drinking contest with a detractor
# by Jay Zaborowski
# 0028
scripted_effect ach_coronation_0028_success_effect = {
add_prestige = minor_prestige_gain
custom_tooltip = coronation_tt_positive_medium
involved_activity = { activity_special_type_progression_medium = yes }
coronation_add_magnificence_log_effect = {
VALUE = flag:positive_medium
CHAR = root
}
if = {
limit = { has_activity_intent = coronation_impress_attendees }
every_vassal = {
limit = {
OR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_nomadic
}
}
custom = custom.every_tribal_nomadic_vassal
add_opinion = {
target = root
modifier = impressed_opinion
opinion = 10
}
}
}
else_if = {
limit = { has_activity_intent = coronation_weaken_detractors }
every_vassal = {
limit = {
OR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_nomadic
}
}
custom = custom.every_tribal_nomadic_vassal
add_opinion = {
target = scope:drinker
modifier = failure_opinion
opinion = -15
}
}
}
create_character_memory = {
type = defeated_detractor_in_drinking_contest_memory
participants = {
detractor = scope:drinker
}
}
}
ach_coronation.0028 = {
type = activity_event
title = ach_coronation.0028.t
desc = ach_coronation.0028.desc
left_portrait = {
character = root
animation = disapproval
camera = camera_event_left_pointing_back_fov20
}
center_portrait = {
character = scope:drinker
animation = rage
camera = camera_event_center_pointing_forward_fov35
}
right_portrait = {
character = scope:onlooker
animation = interested
camera = camera_event_very_right_forward_fov30
}
theme = feast_activity
cooldown = { years = 1 }
trigger = {
OR = {
has_activity_intent = coronation_impress_attendees
has_activity_intent = coronation_weaken_detractors
}
government_has_flag = government_is_tribal
faith_forbids_alcohol_trigger = no
involved_activity = {
any_guest_subset = {
name = detractor
is_available_in_activity_trigger = yes
faith_forbids_alcohol_trigger = no
}
}
}
immediate = {
# Grab the highest prowess Detractor
involved_activity = {
random_guest_subset = {
name = detractor
limit = {
is_available_in_activity_trigger = yes
faith_forbids_alcohol_trigger = no
}
weight = {
base = 1
is_of_major_interest_to_weight_up_modifier = { CHARACTER = root }
is_of_minor_interest_to_weight_up_modifier = { CHARACTER = root }
modifier = {
add = {
value = prowess
multiply = 5
}
}
modifier = {
has_trait = temperate
factor = 0.5
}
modifier = {
has_trait = drunkard
factor = 1.5
}
}
save_scope_as = drinker
}
random_attending_character = {
limit = {
this != root
this != scope:drinker
is_available_in_activity_trigger = yes
faith_forbids_alcohol_trigger = no
}
save_scope_as = onlooker
}
}
}
option = { # I'll outdrink them all!
name = ach_coronation.0028.a
skill = prowess
duel = {
skills = { prowess }
target = scope:drinker
50 = { # Drink them under the table
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
modifier = {
add = 10
has_trait = drunkard
}
modifier = {
factor = 1.5
health > scope:drinker.health
}
modifier = { # Chonky people can take their alcohol better
factor = 1.5
current_weight > scope:drinker.current_weight
}
desc = ach_coronation.0028.a.win
scope:drinker = {
if = {
limit = { has_activity_intent = coronation_weaken_detractors }
add_prestige = major_prestige_loss
}
else = {
add_prestige = medium_prestige_loss
}
}
send_interface_toast = {
title = ach_coronation.0028.a.win
type = event_toast_effect_good
left_icon = root
right_icon = scope:drinker
ach_coronation_0028_success_effect = yes
}
}
50 = { # You fail
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
modifier = {
add = 10
scope:drinker = { has_trait = drunkard }
}
modifier = {
factor = 1.5
health < scope:drinker.health
}
modifier = {
factor = 1.5
current_weight < scope:drinker.current_weight
}
desc = ach_coronation.0028.a.lose
scope:drinker = { add_prestige = minor_prestige_gain }
send_interface_toast = {
title = ach_coronation.0028.a.lose
type = event_toast_effect_good
left_icon = root
right_icon = scope:drinker
add_prestige = medium_prestige_loss
every_vassal = {
limit = {
OR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_nomadic
}
}
custom = custom.every_tribal_nomadic_vassal
add_opinion = {
target = root
modifier = unimpressed_opinion
opinion = -10
}
}
}
}
}
random = {
chance = 5
add_trait = drunkard
}
stress_impact = {
drunkard = medium_stress_impact_loss
lifestyle_reveler = minor_stress_impact_loss
gregarious = minor_stress_impact_loss
temperate = minor_stress_impact_gain
}
ai_chance = {
base = 75
ai_value_modifier = {
ai_sociability = 1
}
modifier = {
factor = 1.5
OR = {
has_trait = gregarious
has_trait = drunkard
has_trait = gluttonous
}
}
modifier = {
factor = 0.5
has_trait = temperate
}
}
}
option = { # Maybe if I slipped something into HerHis drink...
name = ach_coronation.0028.b
skill = intrigue
duel = {
skill = intrigue
value = 12
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ach_coronation.0028.b.win
scope:drinker = {
if = {
limit = { has_activity_intent = coronation_weaken_detractors }
add_prestige = major_prestige_loss
}
else = {
add_prestige = medium_prestige_loss
}
}
send_interface_toast = {
title = ach_coronation.0028.b.win
type = event_toast_effect_good
left_icon = root
right_icon = scope:drinker
ach_coronation_0028_success_effect = yes
}
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
scope:drinker = {
add_opinion = {
target = root
modifier = tried_to_poison_me_opinion
opinion = -40
}
if = {
limit = {
OR = {
is_ai = yes
AND = {
root = {
is_ai = no
}
is_ai = no
}
}
}
progress_towards_rival_effect = {
REASON = rival_tried_to_poison
CHARACTER = root
OPINION = 0
}
}
}
coronation_move_towards_detractor_effect = { CHARACTER = scope:drinker }
desc = ach_coronation.0028.b.lose
send_interface_toast = {
title = ach_coronation.0028.b.lose
type = event_toast_effect_good
left_icon = root
right_icon = scope:drinker
custom_tooltip = coronation_tt_negative
involved_activity = { activity_special_type_progression_negative = yes }
coronation_add_magnificence_log_effect = {
VALUE = flag:negative
CHAR = root
}
every_vassal = {
limit = {
OR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_nomadic
}
}
custom = custom.every_tribal_nomadic_vassal
add_opinion = {
target = root
modifier = dishonorable_liege_opinion
opinion = -20
}
}
}
create_character_memory = {
type = was_caught_cheating_in_drinking_contest_memory
participants = {
detractor = scope:drinker
}
}
}
}
scope:drinker = {
if = {
limit = {
can_contract_disease_trigger = { DISEASE = ill }
}
random = {
chance = {
value = 50
add = {
value = prowess
multiply = -1
}
}
contract_disease_effect = { DISEASE = ill TREATMENT_EVENT = yes }
}
}
}
stress_impact = {
honest = massive_stress_impact_gain
just = medium_stress_impact_gain
temperate = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_honor = -1
}
opinion_modifier = { opinion_target = scope:drinker }
modifier = {
factor = 0
OR = {
intrigue <= 8
ai_honor >= low_positive_ai_value
}
}
}
}
option = { # I'll be fine
name = ach_coronation.0028.c
scope:drinker = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -10
}
}
add_legitimacy = minor_legitimacy_loss
stress_impact = {
temperate = minor_stress_impact_loss
drunkard = medium_stress_impact_gain
lifestyle_reveler = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_sociability = -1
}
modifier = {
factor = 2
has_trait = temperate
}
}
}
}
######################
# Host: Guests offer to help get a hunt going
# by Jay Zaborowski
# 0029
scripted_trigger ach_coronation_0029_friend_trigger = {
this != involved_activity.activity_host
is_available_in_activity_trigger = yes
can_hunt_trigger = yes
is_vegetarian_trigger = no
likes_character_trigger = { CHARACTER = involved_activity.activity_host }
}
ach_coronation.0029 = {
type = activity_event
title = ach_coronation.0029.t
desc = ach_coronation.0029.desc
left_portrait = {
character = root
animation = thinking
camera = camera_event_table_left
}
center_portrait = {
character = scope:second
triggered_animation = {
trigger = { use_goblet_in_tavern_trigger = yes }
animation = drink_goblet
}
triggered_animation = {
trigger = { use_goblet_in_tavern_trigger = no }
animation = drink
}
camera = camera_event_table_center
}
right_portrait = {
character = scope:first
triggered_animation = {
trigger = { use_goblet_in_tavern_trigger = yes }
animation = toast_goblet
}
triggered_animation = {
trigger = { use_goblet_in_tavern_trigger = no }
animation = toast
}
camera = camera_event_table_right_far
}
theme = feast_activity
cooldown = { years = 1 }
trigger = {
OR = {
has_activity_intent = coronation_impress_attendees
has_activity_intent = coronation_embrace_supporters
has_activity_intent = coronation_exalt_crown
}
has_trait = lifestyle_hunter
is_vegetarian_trigger = no
involved_activity = {
any_attending_character = {
ach_coronation_0029_friend_trigger = yes
count >= 2
}
}
}
weight_multiplier = {
base = 1
modifier = {
has_trait = lifestyle_hunter
has_trait_xp = {
trait = lifestyle_hunter
track = hunter
value >= 50
}
add = 1
}
modifier = {
has_trait = lifestyle_hunter
has_trait_xp = {
trait = lifestyle_hunter
track = hunter
value = 100
}
add = 1
}
}
immediate = {
involved_activity = {
activity_host = { save_scope_as = host }
random_attending_character = {
limit = { # Is your buddy and a hunter
ach_coronation_0029_friend_trigger = yes
has_trait = lifestyle_hunter
has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = root }
}
alternative_limit = { # Or one of those, at least
ach_coronation_0029_friend_trigger = yes
OR = {
has_trait = lifestyle_hunter
has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = root }
}
}
alternative_limit = { # Or exists, at least
ach_coronation_0029_friend_trigger = yes
}
weight = {
base = 1
modifier = {
has_trait = lifestyle_hunter
add = 4
}
modifier = {
add = 1
reverse_opinion = {
target = root
value > 0
}
}
modifier = {
add = 2
reverse_opinion = {
target = root
value > 20
}
}
modifier = {
add = 3
reverse_opinion = {
target = root
value > 40
}
}
modifier = {
add = 5
reverse_opinion = {
target = root
value > 60
}
}
modifier = {
add = 8
reverse_opinion = {
target = root
value > 80
}
}
}
save_scope_as = first
}
random_attending_character = {
limit = {
ach_coronation_0029_friend_trigger = yes
this != scope:first
has_trait = lifestyle_hunter
has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = root }
}
alternative_limit = {
ach_coronation_0029_friend_trigger = yes
this != scope:first
OR = {
has_trait = lifestyle_hunter
has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = root }
}
}
alternative_limit = {
ach_coronation_0029_friend_trigger = yes
this != scope:first
}
weight = {
base = 1
modifier = {
has_trait = lifestyle_hunter
add = 4
}
modifier = {
add = 1
reverse_opinion = {
target = root
value > 0
}
}
modifier = {
add = 2
reverse_opinion = {
target = root
value > 20
}
}
modifier = {
add = 3
reverse_opinion = {
target = root
value > 40
}
}
modifier = {
add = 5
reverse_opinion = {
target = root
value > 60
}
}
modifier = {
add = 8
reverse_opinion = {
target = root
value > 80
}
}
}
save_scope_as = second
}
}
}
option = { # Let's get a Hunt ready
name = ach_coronation.0029.a
reason = activity_intent
flavor = {
first_valid = {
triggered_desc = {
trigger = { has_activity_intent = coronation_impress_attendees }
desc = ach_coronation.0029.a.flavor.impress_attendees
}
triggered_desc = {
trigger = { has_activity_intent = coronation_embrace_supporters }
desc = ach_coronation.0029.a.flavor.embrace_supporters
}
triggered_desc = {
trigger = { has_activity_intent = coronation_exalt_crown }
desc = ach_coronation.0029.a.flavor.exalt_crown
}
}
}
switch = {
trigger = has_activity_intent
coronation_impress_attendees = {
custom_tooltip = ach_coronation.0029.a.impressive_hunt
add_character_flag = impressive_hunt
}
coronation_embrace_supporters = {
custom_tooltip = ach_coronation.0029.a.personal_hunt
add_character_flag = personal_hunt
}
coronation_exalt_crown = {
custom_tooltip = ach_coronation.0029.a.glorious_hunt
add_character_flag = glorious_hunt
}
}
}
option = { # Want to try falconry?
name = ach_coronation.0029.b
trigger = { has_dlc_feature = tours_and_tournaments }
flavor = ach_coronation.0029.b.flavor
custom_tooltip = ach_coronation.0029.b.free_falconry
add_character_flag = free_falconry
}
option = { # Is Temperance not a virtue?
name = {
trigger = {
faith = { trait_is_virtue = temperate }
NOR = {
has_trait = gluttonous
has_trait = cynical
}
}
text = ach_coronation.0029.c.virtuous
}
name = ach_coronation.0029.c
if = {
limit = {
faith = { trait_is_virtue = temperate }
NOR = {
has_trait = gluttonous
has_trait = cynical
}
}
custom_tooltip = ach_coronation.0029.c.virtuous.tt
add_piety = medium_piety_gain
every_vassal = {
limit = {
has_vassal_stance = zealot
}
custom = every_zealot_vassal
add_opinion = {
modifier = pious_opinion
target = root
opinion = 5
}
}
}
else = {
add_prestige = minor_prestige_gain
}
ai_chance = {
base = 150
}
}
}