N3OW/events/dlc/ep2/wedding_events/ep2_wedding_events_ewan.txt
2026-01-06 14:25:21 +01:00

6109 lines
159 KiB
Text

@ep2_wedding_ewan_0052_dolt_pay_out_value = root.massive_gold_value
@ep2_wedding_ewan_0061_high_skill_value = extremely_high_skill_rating
@ep2_wedding_ewan_0061_old_value = 80
@ep2_wedding_ewan_0061_very_old = 90
namespace = ep2_wedding_ewan
##################################################
# #Banquet Phase
# 0001 - 0010 Quite the Spectacle - Connect with various types of characters over the entertainment.
# 0011 - 0020 Food Fit for a... - Connect with various types of characters over the food.
# 0021 - 0030 Shimmering, Shining - Connect with various types of characters over the venue & its decorations.
# 0031 - 0040 A Sociable Supper - Meet one of your neighbouring rulers and form a fast friendship.
# 0041 - 0050 Speech! Speech! - Make a speech to the happy couple, adjusting the meaning to your intent.
# 0051 - 0060 And Another Thing - Someone is pitching questionable ideas at you, and you can go along with them or not, but they keep coming at you.
# 0061 - 0070 To My Beloved GetRelation - Embarrassing older relation speech.
# 0071 - 0080 Oath in Moment - Your liege offers you a favour for your support.
##################################################
##################################################
# MISC SCRIPTED TRIGGERS & EFFECTS
# Filter out characters who aren't appropriate to be giving their unasked opinions on the activity's setup options.
scripted_trigger ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = {
# Filter out players immediately.
is_ai = yes
# Now let's make sure it's no one who wouldn't be having this conversation or who we might want to reserve for something else.
NOR = {
this = root
this = scope:activity.activity_host
this = scope:activity.special_guest:spouse_1
this = scope:activity.special_guest:spouse_2
this ?= root.intent_target
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
}
}
# Standard stress loss for hosts agreeing with criticisms.
scripted_effect ep2_wedding_ewan_0000_host_takes_criticism_stress_gain_effect = {
# Host reacts a bit differently to feedback.
if = {
limit = { this = scope:activity.activity_host }
stress_impact = {
gregarious = miniscule_stress_impact_loss
humble = minor_stress_impact_loss
arrogant = miniscule_stress_impact_gain
}
}
else = {
stress_impact = { gregarious = miniscule_stress_impact_loss }
}
}
scripted_effect ep2_wedding_ewan_0000_opinion_swap_effect = {
# Progress heavily towards friendship.
progress_towards_friend_effect = {
CHARACTER = $FAVOURED_CHAR$
REASON = friend_dinner
OPINION = 35
}
reverse_add_opinion = {
target = $REJECTED_CHAR$
modifier = respect_opinion
opinion = -15
}
}
scripted_effect ep2_wedding_ewan_0000_host_approves_effect = {
# If you're the host, gain some prestige for ignoring them.
if = {
limit = { this = scope:activity.activity_host }
add_prestige = minor_prestige_gain
}
# Otherwise, gain some opinion with the host.
else = {
reverse_add_opinion = {
target = scope:activity.activity_host
modifier = friendliness_opinion
opinion = 15
}
}
}
scripted_effect ep2_wedding_ewan_0000_award_lifestyle_xp_per_conversationalist_effect = {
$TARGET$ = {
# Diplomacy.
if = {
limit = { has_trait = education_diplomacy }
# T1.
if = {
limit = { has_trait = education_diplomacy_1 }
root = { add_diplomacy_lifestyle_xp = minor_lifestyle_xp }
}
# T2.
else_if = {
limit = { has_trait = education_diplomacy_2 }
root = { add_diplomacy_lifestyle_xp = medium_lifestyle_xp }
}
# T3.
else_if = {
limit = { has_trait = education_diplomacy_3 }
root = { add_diplomacy_lifestyle_xp = major_lifestyle_xp }
}
# T4.
else_if = {
limit = {
OR = {
has_trait = education_diplomacy_4
has_trait = education_diplomacy_5
}
}
root = { add_diplomacy_lifestyle_xp = massive_lifestyle_xp }
}
}
# Martial.
if = {
limit = { has_trait = education_martial }
# T1.
if = {
limit = { has_trait = education_martial_1 }
root = { add_martial_lifestyle_xp = minor_lifestyle_xp }
}
# T2.
else_if = {
limit = { has_trait = education_martial_2 }
root = { add_martial_lifestyle_xp = medium_lifestyle_xp }
}
# T3.
else_if = {
limit = { has_trait = education_martial_3 }
root = { add_martial_lifestyle_xp = major_lifestyle_xp }
}
# T4.
else_if = {
limit = {
OR = {
has_trait = education_martial_4
has_trait = education_martial_5
}
}
root = { add_martial_lifestyle_xp = massive_lifestyle_xp }
}
}
# Stewardship.
if = {
limit = { has_trait = education_stewardship }
# T1.
if = {
limit = { has_trait = education_stewardship_1 }
root = { add_stewardship_lifestyle_xp = minor_lifestyle_xp }
}
# T2.
else_if = {
limit = { has_trait = education_stewardship_2 }
root = { add_stewardship_lifestyle_xp = medium_lifestyle_xp }
}
# T3.
else_if = {
limit = { has_trait = education_stewardship_3 }
root = { add_stewardship_lifestyle_xp = major_lifestyle_xp }
}
# T4.
else_if = {
limit = {
OR = {
has_trait = education_stewardship_4
has_trait = education_stewardship_5
}
}
root = { add_stewardship_lifestyle_xp = massive_lifestyle_xp }
}
}
# Intrigue.
if = {
limit = { has_trait = education_intrigue }
# T1.
if = {
limit = { has_trait = education_intrigue_1 }
root = { add_intrigue_lifestyle_xp = minor_lifestyle_xp }
}
# T2.
else_if = {
limit = { has_trait = education_intrigue_2 }
root = { add_intrigue_lifestyle_xp = medium_lifestyle_xp }
}
# T3.
else_if = {
limit = { has_trait = education_intrigue_3 }
root = { add_intrigue_lifestyle_xp = major_lifestyle_xp }
}
# T4.
else_if = {
limit = {
OR = {
has_trait = education_intrigue_4
has_trait = education_intrigue_5
}
}
root = { add_intrigue_lifestyle_xp = massive_lifestyle_xp }
}
}
# Learning.
if = {
limit = { has_trait = education_learning }
# T1.
if = {
limit = { has_trait = education_learning_1 }
root = { add_learning_lifestyle_xp = minor_lifestyle_xp }
}
# T2.
else_if = {
limit = { has_trait = education_learning_2 }
root = { add_learning_lifestyle_xp = medium_lifestyle_xp }
}
# T3.
else_if = {
limit = { has_trait = education_learning_3 }
root = { add_learning_lifestyle_xp = major_lifestyle_xp }
}
# T4.
else_if = {
limit = {
OR = {
has_trait = education_learning_4
has_trait = education_learning_5
}
}
root = { add_learning_lifestyle_xp = massive_lifestyle_xp }
}
}
}
}
##################################################
# BANQUET PHASE
##################################################
# Quite the Spectacle
# by Ewan Cowhig Croft
# 0001 - 0010
##################################################
# Character likes T1 entertainment.
scripted_trigger ep2_wedding_ewan_0001_entertainment_t1_likes_trigger = {
OR = {
# Thinks too much entertainment is frivolous.
has_trait = diligent
# Prefers 1-on-1 conversations to showy jugglers.
## N-not that I'm sad because I can't juggle.
### My hands are just stupid.
has_trait = shy
# Prefers lagom entertainment.
has_trait = humble
has_trait = content
# Doesn't respect any entertaining profession.
has_trait = honest
## Just characters are kill-joys. Change my mind.
has_trait = just
# Likes safe entertainment that doesn't give them the jitters.
has_trait = craven
# Doesn't trust large bands of strangers.
has_trait = paranoid
}
}
# Character hates T1 entertainment.
scripted_trigger ep2_wedding_ewan_0001_entertainment_t1_hates_trigger = {
OR = {
# Likes a good joke/acrobat/actor.
has_trait = lazy
has_trait = gregarious
# Prefers big, upscale-everything.
has_trait = arrogant
has_trait = ambitious
# Appreciates the entertainer's art.
has_trait = deceitful
has_trait = arbitrary
# Wants bombastic, dangerous entertainment.
has_trait = brave
# Loves large bands of dangerous strangers.
has_trait = trusting
}
}
# Character likes T2 entertainment.
scripted_trigger ep2_wedding_ewan_0001_entertainment_t2_likes_trigger = {
OR = {
# Accepting of the average.
has_trait = content
has_trait = compassionate
# Likes that money was spent.
has_trait = generous
# Likes the atmosphere being high-effort but not _too_ bustling.
has_trait = calm
has_trait = patient
# Likes a middling option.
has_trait = fickle
has_trait = cynical
}
}
# Character hates T2 entertainment.
scripted_trigger ep2_wedding_ewan_0001_entertainment_t2_hates_trigger = {
OR = {
# Hates the average.
has_trait = ambitious
has_trait = arrogant
# Would have preferred all the money, to take advantage, or else none, not to waste any.
has_trait = greedy
# Want a more bustling atmosphere that goes further than this.
has_trait = wrathful
has_trait = impatient
# Feels that if it was worth doing, it's worth doing to its best.
has_trait = stubborn
has_trait = zealous
}
}
# Character likes T3 entertainment.
scripted_trigger ep2_wedding_ewan_0001_entertainment_t3_likes_trigger = {
OR = {
# Loves excellent entertainment.
has_trait = lazy
has_trait = gregarious
# Prefers big, upscale-everything.
has_trait = arrogant
has_trait = ambitious
# Appreciates the entertainer's art.
has_trait = deceitful
has_trait = arbitrary
# Wants bombastic, dangerous entertainment.
has_trait = brave
# Loves large bands of dangerous strangers.
has_trait = trusting
}
}
# Character hates T3 entertainment.
scripted_trigger ep2_wedding_ewan_0001_entertainment_t3_hates_trigger = {
OR = {
# So much entertainment is frivolous.
has_trait = diligent
# This is way, way too loud.
has_trait = shy
# Wants entertainment to be more lagom.
has_trait = humble
has_trait = content
# Doesn't respect any entertaining profession.
has_trait = honest
## Just characters are kill-joys. Change my mind.
has_trait = just
# Likes safe entertainment that doesn't give them the jitters.
has_trait = craven
# Doesn't trust large bands of strangers.
has_trait = paranoid
}
}
# Connect with various types of characters over the entertainment.
ep2_wedding_ewan.0001 = {
type = activity_event
title = ep2_wedding_ewan.0001.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_entertainment
option = wedding_entertainment_bad
}
}
}
desc = {
desc = ep2_wedding_ewan.0001.desc.intro.bad
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = diligent }
}
desc = ep2_wedding_ewan.0001.desc.t1.love.diligent
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = shy }
}
desc = ep2_wedding_ewan.0001.desc.t1.love.shy
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = humble }
}
desc = ep2_wedding_ewan.0001.desc.t1.love.humble
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = content }
}
desc = ep2_wedding_ewan.0001.desc.t1.love.content
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = honest }
}
desc = ep2_wedding_ewan.0001.desc.t1.love.honest
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = just }
}
desc = ep2_wedding_ewan.0001.desc.t1.love.just
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = craven }
}
desc = ep2_wedding_ewan.0001.desc.t1.love.craven
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = paranoid }
}
desc = ep2_wedding_ewan.0001.desc.t1.love.paranoid
}
}
}
}
}
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_entertainment
option = wedding_entertainment_normal
}
}
}
desc = {
desc = ep2_wedding_ewan.0001.desc.intro.normal
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = content }
}
desc = ep2_wedding_ewan.0001.desc.t2.love.content
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = compassionate }
}
desc = ep2_wedding_ewan.0001.desc.t2.love.compassionate
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = generous }
}
desc = ep2_wedding_ewan.0001.desc.t2.love.generous
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = calm }
}
desc = ep2_wedding_ewan.0001.desc.t2.love.calm
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = patient }
}
desc = ep2_wedding_ewan.0001.desc.t2.love.patient
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = fickle }
}
desc = ep2_wedding_ewan.0001.desc.t2.love.fickle
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = cynical }
}
desc = ep2_wedding_ewan.0001.desc.t2.love.cynical
}
}
}
}
}
desc = {
desc = ep2_wedding_ewan.0001.desc.intro.good
random_valid = {
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = lazy }
}
desc = ep2_wedding_ewan.0001.desc.t3.love.lazy
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = gregarious }
}
desc = ep2_wedding_ewan.0001.desc.t3.love.gregarious
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = arrogant }
}
desc = ep2_wedding_ewan.0001.desc.t3.love.arrogant
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = ambitious }
}
desc = ep2_wedding_ewan.0001.desc.t3.love.ambitious
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = deceitful }
}
desc = ep2_wedding_ewan.0001.desc.t3.love.deceitful
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = arbitrary }
}
desc = ep2_wedding_ewan.0001.desc.t3.love.arbitrary
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = brave }
}
desc = ep2_wedding_ewan.0001.desc.t3.love.brave
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = trusting }
}
desc = ep2_wedding_ewan.0001.desc.t3.love.trusting
}
}
}
}
desc = ep2_wedding_ewan.0001.desc.midtro
first_valid = {
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_entertainment
option = wedding_entertainment_bad
}
}
}
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = lazy }
}
desc = ep2_wedding_ewan.0001.desc.t1.hate.lazy
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = gregarious }
}
desc = ep2_wedding_ewan.0001.desc.t1.hate.gregarious
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = arrogant }
}
desc = ep2_wedding_ewan.0001.desc.t1.hate.arrogant
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = ambitious }
}
desc = ep2_wedding_ewan.0001.desc.t1.hate.ambitious
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = deceitful }
}
desc = ep2_wedding_ewan.0001.desc.t1.hate.deceitful
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = arbitrary }
}
desc = ep2_wedding_ewan.0001.desc.t1.hate.arbitrary
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = brave }
}
desc = ep2_wedding_ewan.0001.desc.t1.hate.brave
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = trusting }
}
desc = ep2_wedding_ewan.0001.desc.t1.hate.trusting
}
triggered_desc = {
trigger = {
scope:char_2 = {
NOR = {
has_trait = lazy
has_trait = gregarious
has_trait = arrogant
has_trait = ambitious
has_trait = deceitful
has_trait = arbitrary
has_trait = brave
has_trait = trusting
}
}
}
desc = ep2_wedding_ewan.0000.desc.hate.fallback
}
}
}
}
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_entertainment
option = wedding_entertainment_normal
}
}
}
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = ambitious }
}
desc = ep2_wedding_ewan.0001.desc.t2.hate.ambitious
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = arrogant }
}
desc = ep2_wedding_ewan.0001.desc.t2.hate.arrogant
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = greedy }
}
desc = ep2_wedding_ewan.0001.desc.t2.hate.greedy
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = wrathful }
}
desc = ep2_wedding_ewan.0001.desc.t2.hate.wrathful
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = impatient }
}
desc = ep2_wedding_ewan.0001.desc.t2.hate.impatient
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = stubborn }
}
desc = ep2_wedding_ewan.0001.desc.t2.hate.stubborn
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = zealous }
}
desc = ep2_wedding_ewan.0001.desc.t2.hate.zealous
}
triggered_desc = {
trigger = {
scope:char_2 = {
NOR = {
has_trait = ambitious
has_trait = arrogant
has_trait = greedy
has_trait = wrathful
has_trait = impatient
has_trait = stubborn
has_trait = zealous
}
}
}
desc = ep2_wedding_ewan.0000.desc.hate.fallback
}
}
}
}
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = diligent }
}
desc = ep2_wedding_ewan.0001.desc.t3.hate.diligent
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = shy }
}
desc = ep2_wedding_ewan.0001.desc.t3.hate.shy
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = humble }
}
desc = ep2_wedding_ewan.0001.desc.t3.hate.humble
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = content }
}
desc = ep2_wedding_ewan.0001.desc.t3.hate.content
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = honest }
}
desc = ep2_wedding_ewan.0001.desc.t3.hate.honest
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = just }
}
desc = ep2_wedding_ewan.0001.desc.t3.hate.just
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = craven }
}
desc = ep2_wedding_ewan.0001.desc.t3.hate.craven
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = paranoid }
}
desc = ep2_wedding_ewan.0001.desc.t3.hate.paranoid
}
triggered_desc = {
trigger = {
scope:char_2 = {
NOR = {
has_trait = diligent
has_trait = shy
has_trait = humble
has_trait = content
has_trait = honest
has_trait = just
has_trait = craven
has_trait = paranoid
}
}
}
desc = ep2_wedding_ewan.0000.desc.hate.fallback
}
}
}
}
}
theme = feast_activity
left_portrait = {
character = scope:char_1
animation = throne_room_applaud_1
}
center_portrait = {
character = root
animation = happiness
}
right_portrait = {
character = scope:char_2
animation = boredom
}
cooldown = { years = 1 }
trigger = {
scope:activity = {
# T1.
trigger_if = {
limit = {
has_activity_option = {
category = wedding_option_entertainment
option = wedding_entertainment_bad
}
}
# Check for a character who likes the setup.
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t1_likes_trigger = yes
# Now we need to wiggle a bit to make sure they don't overlap with one who _dislikes_ the setup.
save_temporary_scope_as = char_temp
scope:activity = {
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t1_hates_trigger = yes
this != scope:char_temp
}
}
}
}
# T2.
trigger_else_if = {
limit = {
has_activity_option = {
category = wedding_option_entertainment
option = wedding_entertainment_normal
}
}
# Check for a character who likes the setup.
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t2_likes_trigger = yes
# Now we need to wiggle a bit to make sure they don't overlap with one who _dislikes_ the setup.
save_temporary_scope_as = char_temp
scope:activity = {
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t2_hates_trigger = yes
this != scope:char_temp
}
}
}
}
# T3.
trigger_else = {
# Check for a character who likes the setup.
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t3_likes_trigger = yes
# Now we need to wiggle a bit to make sure they don't overlap with one who _dislikes_ the setup.
save_temporary_scope_as = char_temp
scope:activity = {
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t3_hates_trigger = yes
this != scope:char_temp
}
}
}
}
}
}
immediate = {
# Try to grab our actors.
scope:activity = {
# T1.
if = {
limit = {
has_activity_option = {
category = wedding_option_entertainment
option = wedding_entertainment_bad
}
}
# Check for a character who likes the setup.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t1_likes_trigger = yes
ep2_wedding_ewan_0001_entertainment_t1_hates_trigger = no
}
# Failing that, grab anyone valid.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t1_likes_trigger = yes
}
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_1
}
# And for one who dislikes it.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t1_hates_trigger = yes
ep2_wedding_ewan_0001_entertainment_t1_likes_trigger = no
}
# Failing that, grab anyone appropriate.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t1_hates_trigger = yes
}
# Failing _that_, grab anyone at all.
alternative_limit = { ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes }
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_2
}
}
# T2.
else_if = {
limit = {
has_activity_option = {
category = wedding_option_entertainment
option = wedding_entertainment_normal
}
}
# Check for a character who likes the setup.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t2_likes_trigger = yes
ep2_wedding_ewan_0001_entertainment_t2_hates_trigger = no
}
# Failing that, grab anyone valid.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t2_likes_trigger = yes
}
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_1
}
# And for one who dislikes it.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t2_hates_trigger = yes
ep2_wedding_ewan_0001_entertainment_t2_likes_trigger = no
}
# Failing that, grab anyone appropriate.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t2_hates_trigger = yes
}
# Failing _that_, grab anyone at all.
alternative_limit = { ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes }
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_2
}
}
# T3.
else = {
# Check for a character who likes the setup.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t3_likes_trigger = yes
ep2_wedding_ewan_0001_entertainment_t3_hates_trigger = no
}
# Failing that, grab anyone valid.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t3_likes_trigger = yes
}
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_1
}
# And for one who dislikes it.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t3_hates_trigger = yes
ep2_wedding_ewan_0001_entertainment_t3_likes_trigger = no
}
# Failing that, grab anyone appropriate.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0001_entertainment_t3_hates_trigger = yes
}
# Failing _that_, grab anyone at all.
alternative_limit = { ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes }
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_2
}
}
}
# If relevant, grab our intent target.
if = {
limit = { has_activity_intent = murder_attendee_intent }
intent_target = { save_scope_as = intent_target }
}
}
# Agree with scope:char_1.
option = {
name = {
trigger = {
this != scope:activity.activity_host
}
text = ep2_wedding_ewan.0001.a
}
name = {
trigger = { this = scope:activity.activity_host }
text = ep2_wedding_ewan.0001.a.host
}
flavor = ep2_wedding_ewan.0000.flavour.hobnob.char_1
# Apply opinion.
ep2_wedding_ewan_0000_opinion_swap_effect = {
FAVOURED_CHAR = scope:char_1
REJECTED_CHAR = scope:char_2
}
# Give some lifestyle XP for who you hobnob with.
ep2_wedding_ewan_0000_award_lifestyle_xp_per_conversationalist_effect = { TARGET = scope:char_1 }
ep2_wedding_ewan_0000_host_takes_criticism_stress_gain_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = {
opinion_target = scope:char_1
multiplier = 0.5
}
opinion_modifier = {
opinion_target = scope:char_2
multiplier = -0.5
}
}
}
# Agree with scope:char_2.
option = {
name = {
trigger = {
this != scope:activity.activity_host
}
text = ep2_wedding_ewan.0001.b
}
name = {
trigger = { this = scope:activity.activity_host }
text = ep2_wedding_ewan.0001.b.host
}
flavor = ep2_wedding_ewan.0000.flavour.hobnob.char_2
# Apply opinion.
ep2_wedding_ewan_0000_opinion_swap_effect = {
FAVOURED_CHAR = scope:char_2
REJECTED_CHAR = scope:char_1
}
# Give some lifestyle XP for who you hobnob with.
ep2_wedding_ewan_0000_award_lifestyle_xp_per_conversationalist_effect = { TARGET = scope:char_2 }
ep2_wedding_ewan_0000_host_takes_criticism_stress_gain_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = {
opinion_target = scope:char_2
multiplier = 0.5
}
opinion_modifier = {
opinion_target = scope:char_1
multiplier = -0.5
}
}
}
# Murder: my eyes are on scope:intent_target.
option = {
name = ep2_wedding_ewan.0001.c
flavor = ep2_wedding_ewan.0001.c.tt
trigger = { has_activity_intent = murder_attendee_intent }
custom_tooltip = available_because_intent_tt
scope:intent_target = {
# They're unsettled by your staring.
add_stress = medium_stress_gain
# Then we add a little concern.
add_opinion = {
target = root
modifier = suspicion_opinion
opinion = -10
}
}
stress_impact = { vengeful = minor_stress_impact_loss }
ai_chance = {
base = 1
ai_value_modifier = {
ai_vengefulness = 1
ai_sociability = -0.5
}
}
}
# Focus on the acts.
option = {
name = ep2_wedding_ewan.0001.d
# Opinion with the activty_host, or else prestige.
ep2_wedding_ewan_0000_host_approves_effect = yes
# We give base stress loss for this'un too.
stress_impact = {
base = minor_stress_impact_loss
shy = minor_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_energy = -0.5
ai_sociability = -2
}
}
}
}
##################################################
# Food Fit for a...
# by Ewan Cowhig Croft
# 0011 - 0020
##################################################
# Character likes T1 food.
scripted_trigger ep2_wedding_ewan_0011_food_t1_likes_trigger = {
OR = {
# Has more sedate food preferences.
has_trait = temperate
# Is ok with an only moderately fancy meal.
has_trait = humble
has_trait = content
# Appreciates something with a few fewer courses than usual
has_trait = impatient
# Less food, and less fancy food, means a harder time hiding poisons and other mischiefs.
has_trait = paranoid
# Prefers to eat mostly the same food, if possible.
has_trait = stubborn
}
}
# Character hates T1 food.
scripted_trigger ep2_wedding_ewan_0011_food_t1_hates_trigger = {
OR = {
# Likes plenty of exotic foods.
has_trait = gluttonous
# Prefers a large, fancy meal.
has_trait = arrogant
has_trait = ambitious
# Has the patience for incredibly long meals.
has_trait = patient
# Doesn't see why they wouldn't have more variety.
has_trait = trusting
has_trait = fickle
}
}
# Character likes T2 food.
scripted_trigger ep2_wedding_ewan_0011_food_t2_likes_trigger = {
OR = {
# Accepting of the average.
has_trait = content
has_trait = compassionate
# Likes that money was spent.
has_trait = generous
# Likes the atmosphere being high-effort but not _too_ bustling.
has_trait = calm
has_trait = patient
# Likes a middling option.
has_trait = cynical
}
}
# Character hates T2 food.
scripted_trigger ep2_wedding_ewan_0011_food_t2_hates_trigger = {
OR = {
# Hates the average.
has_trait = ambitious
has_trait = arrogant
# Would have preferred all the money, to take advantage, or else none, not to waste any.
has_trait = greedy
# Want a more bustling atmosphere that goes further than this.
has_trait = wrathful
has_trait = impatient
# Feels that if it was worth doing, it's worth doing to its best.
has_trait = zealous
}
}
# Character likes T3 food.
scripted_trigger ep2_wedding_ewan_0011_food_t3_likes_trigger = {
OR = {
# Likes plenty of exotic foods.
has_trait = gluttonous
# Prefers a large, fancy meal.
has_trait = arrogant
has_trait = ambitious
# Has the patience for incredibly long meals.
has_trait = patient
# Loves the scope and variety of strange foodstuffs.
has_trait = trusting
# Really likes variety and being able to flit.
has_trait = fickle
}
}
# Character hates T3 food.
scripted_trigger ep2_wedding_ewan_0011_food_t3_hates_trigger = {
OR = {
# Has more sedate food preferences.
has_trait = temperate
# Doesn't like showing off this much.
has_trait = humble
has_trait = content
# Can't stand the sheer number of courses.
has_trait = impatient
# Less food, and less fancy food, means a harder time hiding poisons and other mischiefs.
has_trait = paranoid
# Prefers to eat mostly the same food, if possible.
has_trait = stubborn
}
}
# Connect with various types of characters over the food.
ep2_wedding_ewan.0011 = {
type = activity_event
title = ep2_wedding_ewan.0011.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_food
option = wedding_food_bad
}
}
}
desc = {
desc = ep2_wedding_ewan.0011.desc.intro.bad
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = temperate }
}
desc = ep2_wedding_ewan.0011.desc.t1.love.temperate
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = humble }
}
desc = ep2_wedding_ewan.0011.desc.t1.love.humble
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = content }
}
desc = ep2_wedding_ewan.0011.desc.t1.love.content
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = impatient }
}
desc = ep2_wedding_ewan.0011.desc.t1.love.impatient
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = paranoid }
}
desc = ep2_wedding_ewan.0011.desc.t1.love.paranoid
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = stubborn }
}
desc = ep2_wedding_ewan.0011.desc.t1.love.stubborn
}
}
}
}
}
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_food
option = wedding_food_normal
}
}
}
desc = {
desc = ep2_wedding_ewan.0011.desc.intro.normal
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = content }
}
desc = ep2_wedding_ewan.0011.desc.t2.love.content
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = compassionate }
}
desc = ep2_wedding_ewan.0011.desc.t2.love.compassionate
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = generous }
}
desc = ep2_wedding_ewan.0011.desc.t2.love.generous
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = calm }
}
desc = ep2_wedding_ewan.0011.desc.t2.love.calm
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = patient }
}
desc = ep2_wedding_ewan.0011.desc.t2.love.patient
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = cynical }
}
desc = ep2_wedding_ewan.0011.desc.t2.love.cynical
}
}
}
}
}
desc = {
desc = ep2_wedding_ewan.0011.desc.intro.good
random_valid = {
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = gluttonous }
}
desc = ep2_wedding_ewan.0011.desc.t3.love.gluttonous
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = arrogant }
}
desc = ep2_wedding_ewan.0011.desc.t3.love.arrogant
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = ambitious }
}
desc = ep2_wedding_ewan.0011.desc.t3.love.ambitious
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = patient }
}
desc = ep2_wedding_ewan.0011.desc.t3.love.patient
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = trusting }
}
desc = ep2_wedding_ewan.0011.desc.t3.love.trusting
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = fickle }
}
desc = ep2_wedding_ewan.0011.desc.t3.love.fickle
}
}
}
}
desc = ep2_wedding_ewan.0011.desc.midtro
first_valid = {
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_food
option = wedding_food_bad
}
}
}
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = gluttonous }
}
desc = ep2_wedding_ewan.0011.desc.t1.hate.gluttonous
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = arrogant }
}
desc = ep2_wedding_ewan.0011.desc.t1.hate.arrogant
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = ambitious }
}
desc = ep2_wedding_ewan.0011.desc.t1.hate.ambitious
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = patient }
}
desc = ep2_wedding_ewan.0011.desc.t1.hate.patient
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = trusting }
}
desc = ep2_wedding_ewan.0011.desc.t1.hate.trusting
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = fickle }
}
desc = ep2_wedding_ewan.0011.desc.t1.hate.fickle
}
triggered_desc = {
trigger = {
scope:char_2 = {
NOR = {
has_trait = gluttonous
has_trait = arrogant
has_trait = ambitious
has_trait = patient
has_trait = trusting
has_trait = fickle
}
}
}
desc = ep2_wedding_ewan.0000.desc.hate.fallback
}
}
}
}
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_food
option = wedding_food_normal
}
}
}
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = ambitious }
}
desc = ep2_wedding_ewan.0011.desc.t2.hate.ambitious
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = arrogant }
}
desc = ep2_wedding_ewan.0011.desc.t2.hate.arrogant
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = greedy }
}
desc = ep2_wedding_ewan.0011.desc.t2.hate.greedy
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = wrathful }
}
desc = ep2_wedding_ewan.0011.desc.t2.hate.wrathful
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = impatient }
}
desc = ep2_wedding_ewan.0011.desc.t2.hate.impatient
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = zealous }
}
desc = ep2_wedding_ewan.0011.desc.t2.hate.zealous
}
triggered_desc = {
trigger = {
scope:char_2 = {
NOR = {
has_trait = ambitious
has_trait = arrogant
has_trait = greedy
has_trait = wrathful
has_trait = impatient
has_trait = zealous
}
}
}
desc = ep2_wedding_ewan.0000.desc.hate.fallback
}
}
}
}
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = temperate }
}
desc = ep2_wedding_ewan.0011.desc.t3.hate.temperate
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = humble }
}
desc = ep2_wedding_ewan.0011.desc.t3.hate.humble
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = content }
}
desc = ep2_wedding_ewan.0011.desc.t3.hate.content
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = impatient }
}
desc = ep2_wedding_ewan.0011.desc.t3.hate.impatient
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = paranoid }
}
desc = ep2_wedding_ewan.0011.desc.t3.hate.paranoid
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = stubborn }
}
desc = ep2_wedding_ewan.0011.desc.t3.hate.stubborn
}
triggered_desc = {
trigger = {
scope:char_2 = {
NOR = {
has_trait = temperate
has_trait = humble
has_trait = content
has_trait = impatient
has_trait = paranoid
has_trait = stubborn
}
}
}
desc = ep2_wedding_ewan.0000.desc.hate.fallback
}
}
}
}
}
theme = feast_activity
left_portrait = {
character = scope:char_1
animation = drink_goblet
}
center_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:char_2
animation = disapproval
}
cooldown = { years = 1 }
trigger = {
scope:activity = {
# T1.
trigger_if = {
limit = {
has_activity_option = {
category = wedding_option_food
option = wedding_food_bad
}
}
# Check for a character who likes the setup.
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t1_likes_trigger = yes
# Now we need to wiggle a bit to make sure they don't overlap with one who _dislikes_ the setup.
save_temporary_scope_as = char_temp
scope:activity = {
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t1_hates_trigger = yes
this != scope:char_temp
}
}
}
}
# T2.
trigger_else_if = {
limit = {
has_activity_option = {
category = wedding_option_food
option = wedding_food_normal
}
}
# Check for a character who likes the setup.
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t2_likes_trigger = yes
# Now we need to wiggle a bit to make sure they don't overlap with one who _dislikes_ the setup.
save_temporary_scope_as = char_temp
scope:activity = {
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t2_hates_trigger = yes
this != scope:char_temp
}
}
}
}
# T3.
trigger_else = {
# Check for a character who likes the setup.
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t3_likes_trigger = yes
# Now we need to wiggle a bit to make sure they don't overlap with one who _dislikes_ the setup.
save_temporary_scope_as = char_temp
scope:activity = {
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t3_hates_trigger = yes
this != scope:char_temp
}
}
}
}
}
}
immediate = {
scope:activity = {
# Try to grab our actors.
## T1.
if = {
limit = {
has_activity_option = {
category = wedding_option_food
option = wedding_food_bad
}
}
# Check for a character who likes the setup.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t1_likes_trigger = yes
ep2_wedding_ewan_0011_food_t1_hates_trigger = no
}
# Failing that, grab anyone valid.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t1_likes_trigger = yes
}
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_1
}
# And for one who dislikes it.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t1_hates_trigger = yes
ep2_wedding_ewan_0011_food_t1_likes_trigger = no
}
# Failing that, grab anyone appropriate.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t1_hates_trigger = yes
}
# Failing _that_, grab anyone at all.
alternative_limit = { ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes }
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_2
}
}
## T2.
else_if = {
limit = {
has_activity_option = {
category = wedding_option_food
option = wedding_food_normal
}
}
# Check for a character who likes the setup.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t2_likes_trigger = yes
ep2_wedding_ewan_0011_food_t2_hates_trigger = no
}
# Failing that, grab anyone valid.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t2_likes_trigger = yes
}
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_1
}
# And for one who dislikes it.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t2_hates_trigger = yes
ep2_wedding_ewan_0011_food_t2_likes_trigger = no
}
# Failing that, grab anyone appropriate.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t2_hates_trigger = yes
}
# Failing _that_, grab anyone at all.
alternative_limit = { ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes }
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_2
}
}
## T3.
else = {
# Check for a character who likes the setup.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t3_likes_trigger = yes
ep2_wedding_ewan_0011_food_t3_hates_trigger = no
}
# Failing that, grab anyone valid.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t3_likes_trigger = yes
}
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_1
}
# And for one who dislikes it.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t3_hates_trigger = yes
ep2_wedding_ewan_0011_food_t3_likes_trigger = no
}
# Failing that, grab anyone appropriate.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0011_food_t3_hates_trigger = yes
}
# Failing _that_, grab anyone at all.
alternative_limit = { ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes }
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_2
}
}
# Now we try to process a decent activity target.
if = {
limit = {
root = { has_activity_intent = banquet_mischief_intent }
}
ordered_attending_character = {
limit = {
NOR = {
this = root
this = scope:char_1
this = scope:char_2
this = scope:activity.special_guest:spouse_1
this = scope:activity.special_guest:spouse_2
}
# No players.
is_ai = yes
}
order_by = {
# Nab opinion.
add = "opinion(root)"
# Invert it, as we want characters who hate us ranked first.
multiply = -1
# Aaaand multiply by tier to get more interesting characters who hate us.
if = {
# Unlanded have a rank of zero, so filter this a bit.
limit = { is_landed = yes }
multiply = highest_held_title_tier
}
}
save_scope_as = intent_target
}
}
}
}
# Agree with scope:char_1.
option = {
name = {
trigger = {
this != scope:activity.activity_host
}
text = ep2_wedding_ewan.0011.a
}
name = {
trigger = { this = scope:activity.activity_host }
text = ep2_wedding_ewan.0011.a.host
}
flavor = ep2_wedding_ewan.0000.flavour.hobnob.char_1
# Apply opinion.
ep2_wedding_ewan_0000_opinion_swap_effect = {
FAVOURED_CHAR = scope:char_1
REJECTED_CHAR = scope:char_2
}
# Give some lifestyle XP for who you hobnob with.
ep2_wedding_ewan_0000_award_lifestyle_xp_per_conversationalist_effect = { TARGET = scope:char_1 }
ep2_wedding_ewan_0000_host_takes_criticism_stress_gain_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = {
opinion_target = scope:char_1
multiplier = 0.5
}
opinion_modifier = {
opinion_target = scope:char_2
multiplier = -0.5
}
}
}
# Agree with scope:char_2.
option = {
name = {
trigger = {
this != scope:activity.activity_host
}
text = ep2_wedding_ewan.0011.b
}
name = {
trigger = { this = scope:activity.activity_host }
text = ep2_wedding_ewan.0011.b.host
}
flavor = ep2_wedding_ewan.0000.flavour.hobnob.char_2
# Apply opinion.
ep2_wedding_ewan_0000_opinion_swap_effect = {
FAVOURED_CHAR = scope:char_2
REJECTED_CHAR = scope:char_1
}
# Give some lifestyle XP for who you hobnob with.
ep2_wedding_ewan_0000_award_lifestyle_xp_per_conversationalist_effect = { TARGET = scope:char_2 }
ep2_wedding_ewan_0000_host_takes_criticism_stress_gain_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = {
opinion_target = scope:char_2
multiplier = 0.5
}
opinion_modifier = {
opinion_target = scope:char_1
multiplier = -0.5
}
}
}
# Mischief: spill something on someone.
option = {
name = ep2_wedding_ewan.0011.c
# Check for target directly, rather than just the intent, because there isn't a pre-defined intent target and we may have failed to acquire someone suitable.
trigger = { exists = scope:intent_target }
custom_tooltip = available_because_intent_tt
# You try to trip a server onto someone.
duel = {
skill = intrigue
target = scope:intent_target
# You're successful.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 10
desc = ep2_wedding_ewan.0011.c.tt.success
send_interface_toast = {
title = ep2_wedding_ewan.0011.c.tt.success
left_icon = scope:intent_target
scope:intent_target = {
# Lose some prestige.
add_prestige = minor_prestige_loss
# Gain some stress.
add_stress = medium_stress_gain
}
}
}
# The server rights themselves.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 10
desc = ep2_wedding_ewan.0011.c.tt.failure
send_interface_toast = {
title = ep2_wedding_ewan.0011.c.tt.failure
left_icon = scope:intent_target
# Considered borish.
add_prestige = miniscule_prestige_loss
# Plus scope:intent_target notices.
reverse_add_opinion = {
target = scope:intent_target
modifier = suspicion_opinion
opinion = -10
}
}
}
}
# We give base stress loss for this'un too.
stress_impact = {
base = medium_stress_impact_loss
deceitful = minor_stress_impact_loss
honest = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 0.5
ai_compassion = -0.25
ai_rationality = -0.25
}
}
}
# Nod along without paying attention.
option = {
name = ep2_wedding_ewan.0011.d
# Opinion with the activty_host, or else prestige.
ep2_wedding_ewan_0000_host_approves_effect = yes
# We give base stress loss for this'un too.
stress_impact = {
base = minor_stress_impact_loss
shy = minor_stress_impact_loss
eccentric = minor_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_energy = -0.5
ai_sociability = -2
}
}
}
}
##################################################
# Shimmering, Shining
# by Ewan Cowhig Croft
# 0021 - 0030
##################################################
# Character likes T1 decorations.
scripted_trigger ep2_wedding_ewan_0021_decoration_t1_likes_trigger = {
OR = {
# Appreciate it for being low-key.
has_trait = content
has_trait = lazy
has_trait = humble
# Understand that effort still went into it.
has_trait = forgiving
has_trait = compassionate
# Contrarian.
has_trait = arbitrary
# Approves of frugality.
has_trait = greedy
}
}
# Character hates T1 decorations.
scripted_trigger ep2_wedding_ewan_0021_decoration_t1_hates_trigger = {
OR = {
# Hates it for being low-key.
has_trait = ambitious
has_trait = diligent
has_trait = arrogant
# Thinks they could've done better or not hyped it up so much.
has_trait = honest
has_trait = generous
# Thinks it's just not what they expected.
has_trait = just
}
}
# Character likes T2 decorations.
scripted_trigger ep2_wedding_ewan_0021_decoration_t2_likes_trigger = {
OR = {
# Accepting of the average.
has_trait = content
has_trait = compassionate
# Likes that money was spent.
has_trait = generous
# Likes the atmosphere being high-effort but not _too_ bustling.
has_trait = calm
has_trait = patient
# Likes a middling option.
has_trait = fickle
has_trait = cynical
}
}
# Character hates T2 decorations.
scripted_trigger ep2_wedding_ewan_0021_decoration_t2_hates_trigger = {
OR = {
# Hates the average.
has_trait = ambitious
has_trait = arrogant
# Would have preferred all the money, to take advantage, or else none, not to waste any.
has_trait = greedy
# Want a more bustling atmosphere that goes further than this.
has_trait = wrathful
has_trait = impatient
# Feels that if it was worth doing, it's worth doing to its best.
has_trait = stubborn
has_trait = zealous
}
}
# Character likes T3 decorations.
scripted_trigger ep2_wedding_ewan_0021_decoration_t3_likes_trigger = {
OR = {
# Loves an over-the-top wedding.
has_trait = ambitious
has_trait = diligent
has_trait = arrogant
# Think it had the appropriate amount of effort put in.
has_trait = honest
has_trait = just
# Happy to see all the money being spent.
has_trait = greedy
has_trait = generous
}
}
# Character hates T3 decorations.
scripted_trigger ep2_wedding_ewan_0021_decoration_t3_hates_trigger = {
OR = {
# Think this might all be a bit much.
has_trait = content
has_trait = lazy
has_trait = humble
# Worry that the marriage is getting lost amidst all of this pomp.
has_trait = compassionate
# Contrarian.
has_trait = arbitrary
}
}
# Connect with various types of characters over the venue & its decorations.
ep2_wedding_ewan.0021 = {
type = activity_event
title = ep2_wedding_ewan.0021.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_decoration
option = wedding_decoration_bad
}
}
}
desc = {
desc = ep2_wedding_ewan.0021.desc.intro.bad
random_valid = {
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = content }
}
desc = ep2_wedding_ewan.0021.desc.t1.love.content
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = lazy }
}
desc = ep2_wedding_ewan.0021.desc.t1.love.lazy
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = humble }
}
desc = ep2_wedding_ewan.0021.desc.t1.love.humble
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = forgiving }
}
desc = ep2_wedding_ewan.0021.desc.t1.love.forgiving
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = compassionate }
}
desc = ep2_wedding_ewan.0021.desc.t1.love.compassionate
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = arbitrary }
}
desc = ep2_wedding_ewan.0021.desc.t1.love.arbitrary
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = greedy }
}
desc = ep2_wedding_ewan.0021.desc.t1.love.greedy
}
}
}
}
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_decoration
option = wedding_decoration_normal
}
}
}
desc = {
desc = ep2_wedding_ewan.0021.desc.intro.normal
random_valid = {
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = content }
}
desc = ep2_wedding_ewan.0021.desc.t2.love.content
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = compassionate }
}
desc = ep2_wedding_ewan.0021.desc.t2.love.compassionate
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = generous }
}
desc = ep2_wedding_ewan.0021.desc.t2.love.generous
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = calm }
}
desc = ep2_wedding_ewan.0021.desc.t2.love.calm
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = patient }
}
desc = ep2_wedding_ewan.0021.desc.t2.love.patient
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = fickle }
}
desc = ep2_wedding_ewan.0021.desc.t2.love.fickle
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = cynical }
}
desc = ep2_wedding_ewan.0021.desc.t2.love.cynical
}
}
}
}
desc = {
desc = ep2_wedding_ewan.0021.desc.intro.good
random_valid = {
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = ambitious }
}
desc = ep2_wedding_ewan.0021.desc.t3.love.ambitious
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = diligent }
}
desc = ep2_wedding_ewan.0021.desc.t3.love.diligent
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = arrogant }
}
desc = ep2_wedding_ewan.0021.desc.t3.love.arrogant
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = honest }
}
desc = ep2_wedding_ewan.0021.desc.t3.love.honest
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = just }
}
desc = ep2_wedding_ewan.0021.desc.t3.love.just
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = greedy }
}
desc = ep2_wedding_ewan.0021.desc.t3.love.greedy
}
triggered_desc = {
trigger = {
scope:char_1 = { has_trait = generous }
}
desc = ep2_wedding_ewan.0021.desc.t3.love.generous
}
}
}
}
desc = ep2_wedding_ewan.0021.desc.midtro
first_valid = {
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_decoration
option = wedding_decoration_bad
}
}
}
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = ambitious }
}
desc = ep2_wedding_ewan.0021.desc.t1.hate.ambitious
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = diligent }
}
desc = ep2_wedding_ewan.0021.desc.t1.hate.diligent
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = arrogant }
}
desc = ep2_wedding_ewan.0021.desc.t1.hate.arrogant
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = honest }
}
desc = ep2_wedding_ewan.0021.desc.t1.hate.honest
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = generous }
}
desc = ep2_wedding_ewan.0021.desc.t1.hate.generous
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = just }
}
desc = ep2_wedding_ewan.0021.desc.t1.hate.just
}
triggered_desc = {
trigger = {
scope:char_2 = {
NOR = {
has_trait = ambitious
has_trait = diligent
has_trait = arrogant
has_trait = honest
has_trait = generous
has_trait = just
}
}
}
desc = ep2_wedding_ewan.0000.desc.hate.fallback
}
}
}
}
triggered_desc = {
trigger = {
scope:activity = {
has_activity_option = {
category = wedding_option_decoration
option = wedding_decoration_normal
}
}
}
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = ambitious }
}
desc = ep2_wedding_ewan.0021.desc.t2.hate.ambitious
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = arrogant }
}
desc = ep2_wedding_ewan.0021.desc.t2.hate.arrogant
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = greedy }
}
desc = ep2_wedding_ewan.0021.desc.t2.hate.greedy
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = wrathful }
}
desc = ep2_wedding_ewan.0021.desc.t2.hate.wrathful
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = impatient }
}
desc = ep2_wedding_ewan.0021.desc.t2.hate.impatient
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = stubborn }
}
desc = ep2_wedding_ewan.0021.desc.t2.hate.stubborn
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = zealous }
}
desc = ep2_wedding_ewan.0021.desc.t2.hate.zealous
}
triggered_desc = {
trigger = {
scope:char_2 = {
NOR = {
has_trait = ambitious
has_trait = arrogant
has_trait = greedy
has_trait = wrathful
has_trait = impatient
has_trait = stubborn
has_trait = zealous
}
}
}
desc = ep2_wedding_ewan.0000.desc.hate.fallback
}
}
}
}
desc = {
random_valid = {
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = content }
}
desc = ep2_wedding_ewan.0021.desc.t3.hate.content
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = lazy }
}
desc = ep2_wedding_ewan.0021.desc.t3.hate.lazy
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = humble }
}
desc = ep2_wedding_ewan.0021.desc.t3.hate.humble
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = compassionate }
}
desc = ep2_wedding_ewan.0021.desc.t3.hate.compassionate
}
triggered_desc = {
trigger = {
scope:char_2 = { has_trait = arbitrary }
}
desc = ep2_wedding_ewan.0021.desc.t3.hate.arbitrary
}
triggered_desc = {
trigger = {
scope:char_2 = {
NOR = {
has_trait = content
has_trait = lazy
has_trait = humble
has_trait = compassionate
has_trait = arbitrary
}
}
}
desc = ep2_wedding_ewan.0000.desc.hate.fallback
}
}
}
}
}
theme = feast_activity
left_portrait = {
character = scope:char_1
animation = admiration
}
center_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:char_2
animation = disapproval
}
cooldown = { years = 1 }
trigger = {
scope:activity = {
# T1.
trigger_if = {
limit = {
has_activity_option = {
category = wedding_option_decoration
option = wedding_decoration_bad
}
}
# Check for a character who likes the setup.
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t1_likes_trigger = yes
# Now we need to wiggle a bit to make sure they don't overlap with one who _dislikes_ the setup.
save_temporary_scope_as = char_temp
scope:activity = {
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t1_hates_trigger = yes
this != scope:char_temp
}
}
}
}
# T2.
trigger_else_if = {
limit = {
has_activity_option = {
category = wedding_option_decoration
option = wedding_decoration_normal
}
}
# Check for a character who likes the setup.
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t2_likes_trigger = yes
# Now we need to wiggle a bit to make sure they don't overlap with one who _dislikes_ the setup.
save_temporary_scope_as = char_temp
scope:activity = {
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t2_hates_trigger = yes
this != scope:char_temp
}
}
}
}
# T3.
trigger_else = {
# Check for a character who likes the setup.
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t3_likes_trigger = yes
# Now we need to wiggle a bit to make sure they don't overlap with one who _dislikes_ the setup.
save_temporary_scope_as = char_temp
scope:activity = {
any_attending_character = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t3_hates_trigger = yes
this != scope:char_temp
}
}
}
}
}
}
immediate = {
# Try to grab our actors.
scope:activity = {
# T1.
if = {
limit = {
has_activity_option = {
category = wedding_option_decoration
option = wedding_decoration_bad
}
}
# Check for a character who likes the setup.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t1_likes_trigger = yes
ep2_wedding_ewan_0021_decoration_t1_hates_trigger = no
}
# Failing that, grab anyone valid.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t1_likes_trigger = yes
}
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_1
}
# And for one who dislikes it.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t1_hates_trigger = yes
ep2_wedding_ewan_0021_decoration_t1_likes_trigger = no
}
# Failing that, grab anyone appropriate.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t1_hates_trigger = yes
}
# Failing _that_, grab anyone at all.
alternative_limit = { ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes }
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_2
}
}
# T2.
else_if = {
limit = {
has_activity_option = {
category = wedding_option_decoration
option = wedding_decoration_normal
}
}
# Check for a character who likes the setup.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t2_likes_trigger = yes
ep2_wedding_ewan_0021_decoration_t2_hates_trigger = no
}
# Failing that, grab anyone valid.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t2_likes_trigger = yes
}
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_1
}
# And for one who dislikes it.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t2_hates_trigger = yes
ep2_wedding_ewan_0021_decoration_t2_likes_trigger = no
}
# Failing that, grab anyone appropriate.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t2_hates_trigger = yes
}
# Failing _that_, grab anyone at all.
alternative_limit = { ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes }
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_2
}
}
# T3.
else = {
# Check for a character who likes the setup.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t3_likes_trigger = yes
ep2_wedding_ewan_0021_decoration_t3_hates_trigger = no
}
# Failing that, grab anyone valid.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t3_likes_trigger = yes
}
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_1
}
# And for one who dislikes it.
ordered_attending_character = {
# Try to grab opposing characters first.
limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t3_hates_trigger = yes
ep2_wedding_ewan_0021_decoration_t3_likes_trigger = no
}
# Failing that, grab anyone appropriate.
alternative_limit = {
ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes
ep2_wedding_ewan_0021_decoration_t3_hates_trigger = yes
}
# Failing _that_, grab anyone at all.
alternative_limit = { ep2_wedding_ewan_0000_activity_option_opinion_characters_standard_filter_trigger = yes }
# Make sure we're looking at interesting people.
order_by = highest_held_title_tier
save_scope_as = char_2
}
}
}
# If relevant, grab our intent target.
if = {
limit = { has_activity_intent = woo_attendee_intent }
intent_target = { save_scope_as = intent_target }
}
}
# Agree with scope:char_1.
option = {
name = {
trigger = {
this != scope:activity.activity_host
}
text = ep2_wedding_ewan.0021.a
}
name = {
trigger = { this = scope:activity.activity_host }
text = ep2_wedding_ewan.0021.a.host
}
flavor = ep2_wedding_ewan.0000.flavour.hobnob.char_1
# Apply opinion.
ep2_wedding_ewan_0000_opinion_swap_effect = {
FAVOURED_CHAR = scope:char_1
REJECTED_CHAR = scope:char_2
}
# Give some lifestyle XP for who you hobnob with.
ep2_wedding_ewan_0000_award_lifestyle_xp_per_conversationalist_effect = { TARGET = scope:char_1 }
ep2_wedding_ewan_0000_host_takes_criticism_stress_gain_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = {
opinion_target = scope:char_1
multiplier = 0.5
}
opinion_modifier = {
opinion_target = scope:char_2
multiplier = -0.5
}
}
}
# Agree with scope:char_2.
option = {
name = {
trigger = {
this != scope:activity.activity_host
}
text = ep2_wedding_ewan.0021.b
}
name = {
trigger = { this = scope:activity.activity_host }
text = ep2_wedding_ewan.0021.b.host
}
flavor = ep2_wedding_ewan.0000.flavour.hobnob.char_2
# Apply opinion.
ep2_wedding_ewan_0000_opinion_swap_effect = {
FAVOURED_CHAR = scope:char_2
REJECTED_CHAR = scope:char_1
}
# Give some lifestyle XP for who you hobnob with.
ep2_wedding_ewan_0000_award_lifestyle_xp_per_conversationalist_effect = { TARGET = scope:char_2 }
ep2_wedding_ewan_0000_host_takes_criticism_stress_gain_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = {
opinion_target = scope:char_2
multiplier = 0.5
}
opinion_modifier = {
opinion_target = scope:char_1
multiplier = -0.5
}
}
}
# Seduce: try to chat your target up.
option = {
name = ep2_wedding_ewan.0021.c
trigger = { has_activity_intent = woo_attendee_intent }
custom_tooltip = available_because_intent_tt
# Sprinkle a bit of opinion in there.
reverse_add_opinion = {
target = scope:intent_target
modifier = flattered_opinion
opinion = 30
}
if = {
limit = {
OR = {
root = scope:activity.special_guest:spouse_1
root = scope:activity.special_guest:spouse_2
}
OR = {
scope:intent_target = scope:activity.special_guest:spouse_1
scope:intent_target = scope:activity.special_guest:spouse_2
}
can_set_relation_soulmate_trigger = { CHARACTER = scope:intent_target }
}
random = {
chance = 5
set_relation_soulmate = { reason = soulmate_wedding_accepting_partner target = scope:intent_target }
# Achievements
player_succeeded_at_a_thousand_and_one_nights_achievement_effect = yes
}
}
stress_impact = {
chaste = miniscule_stress_impact_gain
lustful = minor_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_rationality = -0.5
}
}
}
# Don't get involved.
option = {
name = ep2_wedding_ewan.0021.d
# Opinion with the activty_host, or else prestige.
ep2_wedding_ewan_0000_host_approves_effect = yes
# We give base stress loss for this'un too.
stress_impact = {
base = minor_stress_impact_loss
shy = minor_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_energy = -0.5
ai_sociability = -2
}
}
}
}
##################################################
# A Sociable Supper
# by Ewan Cowhig Croft
# 0031 - 0040
##################################################
scripted_trigger ep2_wedding_ewan_0031_appropriate_ruler_trigger = {
# Are they an appropriately landed ruler?
highest_held_title_tier >= {
# Grab root's tier.
value = root.highest_held_title_tier
# Now subtract one so that we allow for direct vassals.
add = -1
# Counts & above only.
min = 2
}
# Make sure they don't hate root's guts already?
opinion = {
target = root
value >= high_negative_opinion
}
NOR = {
# No family.
is_close_family_of = root
is_consort_of = root
# No prior relations.
has_any_good_relationship_with_character_trigger = { CHARACTER = root }
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
}
# No players.
is_ai = no
}
scripted_effect ep2_wedding_ewan_0031_social_climber_stress_effect = {
stress_impact = {
gregarious = minor_stress_impact_loss
ambitious = minor_stress_impact_loss
shy = miniscule_stress_impact_gain
content = miniscule_stress_impact_gain
}
}
scripted_effect ep2_wedding_ewan_0031_make_friend_effect = {
# Become friends.
set_relation_friend = {
target = $TARGET$
reason = befriended_at_feast
province = scope:activity.activity_location
}
# Plus some opinion for the sake of it.
reverse_add_opinion = {
target = $TARGET$
modifier = friendliness_opinion
opinion = 15
}
}
# Meet one of your neighbouring rulers and form a fast friendship.
ep2_wedding_ewan.0031 = {
type = activity_event
title = ep2_wedding_ewan.0031.t
desc = {
desc = ep2_wedding_ewan.0031.desc.intro
# Our first character.
first_valid = {
triggered_desc = {
trigger = { scope:conversationalist_neighbour ?= scope:char_1 }
desc = ep2_wedding_ewan.0031.desc.char_1.conversationalist_neighbour
}
triggered_desc = {
trigger = { scope:conversationalist_covassal ?= scope:char_1 }
desc = ep2_wedding_ewan.0031.desc.char_1.conversationalist_covassal
}
triggered_desc = {
trigger = { scope:conversationalist_vassal ?= scope:char_1 }
desc = ep2_wedding_ewan.0031.desc.char_1.conversationalist_vassal
}
triggered_desc = {
trigger = { scope:conversationalist_liege ?= scope:char_1 }
desc = ep2_wedding_ewan.0031.desc.char_1.conversationalist_liege
}
triggered_desc = {
trigger = { scope:conversationalist_other_ruler ?= scope:char_1 }
desc = ep2_wedding_ewan.0031.desc.char_1.conversationalist_other_ruler
}
triggered_desc = {
trigger = { scope:conversationalist_backup ?= scope:char_1 }
desc = ep2_wedding_ewan.0031.desc.char_1.conversationalist_backup
}
}
desc = ep2_wedding_ewan.0031.desc.midro
# Our second character.
first_valid = {
triggered_desc = {
trigger = { scope:conversationalist_neighbour ?= scope:char_2 }
desc = ep2_wedding_ewan.0031.desc.char_2.conversationalist_neighbour
}
triggered_desc = {
trigger = { scope:conversationalist_covassal ?= scope:char_2 }
desc = ep2_wedding_ewan.0031.desc.char_2.conversationalist_covassal
}
triggered_desc = {
trigger = { scope:conversationalist_vassal ?= scope:char_2 }
desc = ep2_wedding_ewan.0031.desc.char_2.conversationalist_vassal
}
triggered_desc = {
trigger = { scope:conversationalist_liege ?= scope:char_2 }
desc = ep2_wedding_ewan.0031.desc.char_2.conversationalist_liege
}
triggered_desc = {
trigger = { scope:conversationalist_other_ruler ?= scope:char_2 }
desc = ep2_wedding_ewan.0031.desc.char_2.conversationalist_other_ruler
}
triggered_desc = {
trigger = { scope:conversationalist_backup ?= scope:char_2 }
desc = ep2_wedding_ewan.0031.desc.char_2.conversationalist_backup
}
}
desc = ep2_wedding_ewan.0031.desc.outro
}
theme = feast_activity
left_portrait = {
character = scope:char_1
animation = boredom
}
right_portrait = {
character = scope:char_2
animation = happiness
}
cooldown = { years = 1 }
trigger = {
trigger_if = {
limit = {
is_ai = yes
}
static_group_filter = {
group = ep2_wedding_ewan.0031
match = 0.1
}
}
scope:activity = {
any_attending_character = {
count >= 2
ep2_wedding_ewan_0031_appropriate_ruler_trigger = yes
}
}
}
immediate = {
# Let's pick some characters!
## First, grab everyone we might want to pick through.
scope:activity = {
every_attending_character = {
limit = { ep2_wedding_ewan_0031_appropriate_ruler_trigger = yes }
add_to_list = potential_conversationalists_list
}
}
## Now, we need to try and filter them out by categories.
### Neighbouring rulers.
#### This one is expensive, so we restrict it to players.
if = {
limit = { is_ai = no }
# Right, we're actually going to post-filter by these guys later on too, so we want to grab all of them the first time we iterate rather than do it twice.
every_in_list = {
list = potential_conversationalists_list
limit = {
OR = {
any_neighboring_and_across_water_realm_same_rank_owner = { this = root }
any_neighboring_and_across_water_top_liege_realm_owner = { this = root }
}
}
add_to_list = neighbouring_conversationalists_list
}
# Now we can go through and grab the best one.
ordered_in_list = {
list = neighbouring_conversationalists_list
# Order by military strength for the most interesting realpolitik choice.
order_by = max_military_strength
# Grab the most suitable for later checks & randomisation.
save_scope_as = conversationalist_neighbour
add_to_list = contending_characters_list
}
}
### Fellow vassals or one of your lieges.
#### No point iterating through the list repeatedly if we aren't independent.
if = {
limit = { exists = liege }
# Fellow vassals.
ordered_in_list = {
list = potential_conversationalists_list
limit = { liege ?= root.liege }
# Order by military strength for the most interesting realpolitik choice.
order_by = max_military_strength
# Grab the most suitable for later checks & randomisation.
save_scope_as = conversationalist_covassal
add_to_list = contending_characters_list
}
# Lieges.
ordered_in_list = {
list = potential_conversationalists_list
limit = {
save_temporary_scope_as = char_temp
root = {
any_liege_or_above = { this = scope:char_temp }
}
}
# Lieges use a slightly weirder prio-order, since their military strength is less relevant.
order_by = {
# We want to befriend the most powerful person we can, as they're the most interesting.
value = highest_held_title_tier
# _But_, your direct liege is still the best, as they have much more impact on your general rule.
if = {
limit = { this = root.liege }
add = 10
}
}
# Grab the most suitable for later checks & randomisation.
save_scope_as = conversationalist_liege
add_to_list = contending_characters_list
}
}
### Direct vassals.
ordered_in_list = {
list = potential_conversationalists_list
limit = { liege ?= root }
# Order by military strength for the most interesting realpolitik choice.
order_by = max_military_strength
# Grab the most suitable for later checks & randomisation.
save_scope_as = conversationalist_vassal
add_to_list = contending_characters_list
}
### Distant rulers.
ordered_in_list = {
list = potential_conversationalists_list
limit = {
NOR = {
top_liege = root.top_liege
# If we don't have a neighbouring conversationalists list, then this allows the AI to befriend non-realm rulers, and if we do, then this stops us checking through all that smeg again.
trigger_if = {
limit = {
any_in_list = {
list = neighbouring_conversationalists_list
count >= 1
}
}
is_in_list = neighbouring_conversationalists_list
}
}
}
# Order by military strength for the most interesting realpolitik choice.
order_by = max_military_strength
# Grab the most suitable for later checks & randomisation.
save_scope_as = conversationalist_other_ruler
add_to_list = contending_characters_list
}
## If we didn't have multiple interesting categories, generate a backup.
if = {
limit = {
calc_true_if = {
amount <= 1
NOT = { exists = scope:conversationalist_neighbour }
NOT = { exists = scope:conversationalist_covassal }
NOT = { exists = scope:conversationalist_vassal }
NOT = { exists = scope:conversationalist_liege }
NOT = { exists = scope:conversationalist_other_ruler }
}
}
ordered_in_list = {
list = potential_conversationalists_list
limit = {
NOR = {
scope:conversationalist_neighbour ?= this
scope:conversationalist_covassal ?= this
scope:conversationalist_vassal ?= this
scope:conversationalist_liege ?= this
scope:conversationalist_other_ruler ?= this
}
}
# Grab the most suitable for later checks & randomisation.
save_scope_as = conversationalist_backup
add_to_list = contending_characters_list
}
}
# Ok, characters are assembled. Grab our favourite candidates.
## Grab one.
random_in_list = {
list = contending_characters_list
# This character isn't having a great time at the party, so we try to pick the less sociable char first.
limit = { has_trait = shy }
alternative_limit = {
NOT = { has_trait = gregarious }
}
alternative_limit = { always = yes }
save_scope_as = char_1
}
## Then another.
random_in_list = {
list = contending_characters_list
limit = {
this != scope:char_1
# No trait checks needed here — there's only one character remaining in the list now.
}
save_scope_as = char_2
}
}
# Neighbouring ruler.
option = {
name = ep2_wedding_ewan.0031.a
trigger = {
OR = {
scope:conversationalist_neighbour ?= scope:char_1
scope:conversationalist_neighbour ?= scope:char_2
}
}
# Become friends.
ep2_wedding_ewan_0031_make_friend_effect = { TARGET = scope:conversationalist_neighbour }
ep2_wedding_ewan_0031_social_climber_stress_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = { opinion_target = scope:conversationalist_neighbour }
}
}
# Fellow vassal.
option = {
name = ep2_wedding_ewan.0031.b
trigger = {
OR = {
scope:conversationalist_covassal ?= scope:char_1
scope:conversationalist_covassal ?= scope:char_2
}
}
# Become friends.
ep2_wedding_ewan_0031_make_friend_effect = { TARGET = scope:conversationalist_covassal }
ep2_wedding_ewan_0031_social_climber_stress_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = { opinion_target = scope:conversationalist_covassal }
}
}
# Direct vassal.
option = {
name = ep2_wedding_ewan.0031.c
trigger = {
OR = {
scope:conversationalist_vassal ?= scope:char_1
scope:conversationalist_vassal ?= scope:char_2
}
}
# Become friends.
ep2_wedding_ewan_0031_make_friend_effect = { TARGET = scope:conversationalist_vassal }
ep2_wedding_ewan_0031_social_climber_stress_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = { opinion_target = scope:conversationalist_vassal }
}
}
# Liege.
option = {
name = ep2_wedding_ewan.0031.d
trigger = {
OR = {
scope:conversationalist_liege ?= scope:char_1
scope:conversationalist_liege ?= scope:char_2
}
}
# Become friends.
ep2_wedding_ewan_0031_make_friend_effect = { TARGET = scope:conversationalist_liege }
ep2_wedding_ewan_0031_social_climber_stress_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = { opinion_target = scope:conversationalist_liege }
}
}
# Distant ruler.
option = {
name = ep2_wedding_ewan.0031.e
trigger = {
OR = {
scope:conversationalist_other_ruler ?= scope:char_1
scope:conversationalist_other_ruler ?= scope:char_2
}
}
# Become friends.
ep2_wedding_ewan_0031_make_friend_effect = { TARGET = scope:conversationalist_other_ruler }
ep2_wedding_ewan_0031_social_climber_stress_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = { opinion_target = scope:conversationalist_other_ruler }
}
}
# Backup option.
option = {
name = ep2_wedding_ewan.0031.f
trigger = {
OR = {
scope:conversationalist_backup ?= scope:char_1
scope:conversationalist_backup ?= scope:char_2
}
}
# Become friends.
ep2_wedding_ewan_0031_make_friend_effect = { TARGET = scope:conversationalist_backup }
ep2_wedding_ewan_0031_social_climber_stress_effect = yes
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = 1 }
opinion_modifier = { opinion_target = scope:conversationalist_backup }
}
}
# Recreation: this isn't the time for such ladder-climbing.
option = {
name = ep2_wedding_ewan.0031.g
trigger = { has_activity_intent = reduce_stress_intent }
custom_tooltip = available_because_intent_tt
# Decent middling prestige.
add_prestige = medium_prestige_gain
# We give base stress loss for this'un too.
stress_impact = {
base = major_stress_impact_loss
shy = medium_stress_impact_loss
lazy = medium_stress_impact_loss
gregarious = miniscule_stress_impact_gain
ambitious = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_sociability = -0.25
ai_energy = -0.5
ai_boldness = -1
}
}
}
# Mmm. They're not that interesting.
option = {
name = ep2_wedding_ewan.0031.h
trigger = {
NOT = { has_activity_intent = reduce_stress_intent }
}
# Consolation prestige.
add_prestige = minor_prestige_gain
stress_impact = {
shy = minor_stress_impact_loss
gregarious = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = { ai_sociability = -2 }
}
}
}
##################################################
# Speech! Speech!
# by Ewan Cowhig Croft
# 0041 - 0050
##################################################
scripted_effect ep2_wedding_ewan_0041_offended_couple_effect = {
# You hath offended them.
if = {
limit = {
# Double-check we're not double-dipping on opinion.
scope:host != scope:spouse_1
}
reverse_add_opinion = {
target = scope:spouse_1
modifier = insult_opinion
opinion = -10
}
}
if = {
limit = {
# Double-check we're not double-dipping on opinion.
scope:host != scope:spouse_2
}
reverse_add_opinion = {
target = scope:spouse_2
modifier = insult_opinion
opinion = -10
}
}
}
scripted_effect ep2_wedding_ewan_0041_duel_with_highest_social_skill_effect = {
duel = {
skill = $SKILL$
value = high_skill_rating
# I can't BELIEVE that's true!
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = ep2_wedding_ewan.0041.g.tt.success
send_interface_toast = {
title = ep2_wedding_ewan.0041.g.tt.success
# Your finger is clearly on the pulse.
add_prestige = medium_prestige_gain
# Plus gain some XP in the relevant lifestyle.
add_$SKILL$_lifestyle_xp = major_lifestyle_xp
}
}
# Salacious, but clearly bollocks.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 10
desc = ep2_wedding_ewan.0041.g.tt.failure
send_interface_toast = {
title = ep2_wedding_ewan.0041.g.tt.failure
# No one believes you.
add_prestige = minor_prestige_loss
}
}
}
}
# Make a speech to the happy couple, adjusting the meaning to your intent.
ep2_wedding_ewan.0041 = {
type = activity_event
title = ep2_wedding_ewan.0041.t
desc = {
desc = ep2_wedding_ewan.0041.desc.intro
first_valid = {
# Murder.
triggered_desc = {
trigger = { has_activity_intent = murder_attendee_intent }
desc = ep2_wedding_ewan.0041.desc.murder
}
# Seduce.
triggered_desc = {
trigger = { has_activity_intent = woo_attendee_intent }
desc = ep2_wedding_ewan.0041.desc.seduce
}
# Diplomacy.
triggered_desc = {
trigger = { has_activity_intent = diplomatic_intent }
desc = ep2_wedding_ewan.0041.desc.diplomacy
}
# Matchmaking.
triggered_desc = {
trigger = { has_activity_intent = matchmaking_intent }
desc = ep2_wedding_ewan.0041.desc.matchmaking
}
# Mischief.
triggered_desc = {
trigger = { has_activity_intent = banquet_mischief_intent }
desc = ep2_wedding_ewan.0041.desc.mischief
}
# Recreation.
desc = ep2_wedding_ewan.0041.desc.recreation
}
desc = ep2_wedding_ewan.0041.desc.outro
}
theme = feast_activity
left_portrait = {
character = root
animation = admiration
}
right_portrait = {
character = scope:spouse_1
animation = personality_honorable
}
center_portrait = {
character = scope:spouse_2
animation = happiness
}
lower_right_portrait = scope:intent_target
cooldown = { years = 1 }
trigger = {
NOR = {
this = scope:activity.special_guest:spouse_1
this = scope:activity.special_guest:spouse_2
}
}
immediate = {
# Save the spouses for ease of reference.
scope:activity.special_guest:spouse_1 = { save_scope_as = spouse_1 }
scope:activity.special_guest:spouse_2 = { save_scope_as = spouse_2 }
# And, if we've got one, our intent target.
intent_target ?= { save_scope_as = intent_target }
}
# Praise the happy couple, as expected.
option = {
name = ep2_wedding_ewan.0041.a
# Gain opinion with the happy couple.
reverse_add_opinion = {
target = scope:spouse_1
modifier = kindness_opinion
opinion = 30
}
reverse_add_opinion = {
target = scope:spouse_2
modifier = kindness_opinion
opinion = 30
}
stress_impact = {
just = miniscule_stress_impact_loss
compassionate = minor_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_honor = 1
ai_compassion = 0.5
}
}
}
# Recreation: praise the party.
option = {
name = ep2_wedding_ewan.0041.b
trigger = { has_activity_intent = reduce_stress_intent }
custom_tooltip = available_because_intent_tt
# If you're the host, gain prestige.
if = {
limit = { this = scope:host }
add_prestige = medium_prestige_gain
}
# Otherwise, gain some prestige + opinion with the host.
else = {
add_prestige = minor_prestige_gain
reverse_add_opinion = {
target = scope:host
modifier = pleased_opinion
opinion = 20
}
}
# Annoy the spouses.
ep2_wedding_ewan_0041_offended_couple_effect = yes
stress_impact = {
arbitrary = miniscule_stress_impact_loss
gregarious = minor_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_sociability = 0.75
ai_honor = -0.5
}
}
}
# Murder: stare at your target to cause them stress.
option = {
name = ep2_wedding_ewan.0041.c
trigger = { has_activity_intent = murder_attendee_intent }
custom_tooltip = available_because_intent_tt
scope:intent_target = {
# They're a bit freaked out.
add_stress = major_stress_gain
# And concerned about what you're implying.
add_opinion = {
target = root
modifier = suspicion_opinion
opinion = -20
}
}
# Annoy the spouses.
ep2_wedding_ewan_0041_offended_couple_effect = yes
stress_impact = {
arbitrary = miniscule_stress_impact_loss
greedy = miniscule_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_vengefulness = 1
ai_honor = -0.5
}
}
}
# Seduce: make eyes at your seduction target.
option = {
name = ep2_wedding_ewan.0041.d
trigger = { has_activity_intent = woo_attendee_intent }
custom_tooltip = available_because_intent_tt
# You try to keep it juuuuust about down-low.
duel = {
skill = intrigue
target = scope:intent_target
# They appreciate the hints.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 10
desc = ep2_wedding_ewan.0041.d.tt.success
send_interface_toast = {
title = ep2_wedding_ewan.0041.d.tt.success
left_icon = scope:intent_target
# Always gain opinion with them.
reverse_add_opinion = {
target = scope:intent_target
modifier = flustered_opinion
opinion = 20
}
# If possible, they grow interested in you.
if = {
limit = {
OR = {
root = scope:activity.special_guest:spouse_1
root = scope:activity.special_guest:spouse_2
}
OR = {
scope:intent_target = scope:activity.special_guest:spouse_1
scope:intent_target = scope:activity.special_guest:spouse_2
}
can_set_relation_soulmate_trigger = { CHARACTER = scope:intent_target }
}
random = {
chance = 5
set_relation_soulmate = { reason = soulmate_wedding_accepting_partner target = scope:intent_target }
# Achievements
player_succeeded_at_a_thousand_and_one_nights_achievement_effect = yes
}
}
else_if = {
limit = {
can_set_relation_potential_lover_trigger = { CHARACTER = scope:intent_target }
}
set_relation_potential_lover = scope:intent_target
}
}
}
# They're publically embarrassed.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 10
desc = ep2_wedding_ewan.0041.d.tt.failure
send_interface_toast = {
title = ep2_wedding_ewan.0041.d.tt.failure
left_icon = scope:intent_target
add_prestige = minor_prestige_loss
reverse_add_opinion = {
target = scope:intent_target
modifier = disgusted_opinion
opinion = -20
}
}
}
}
# Annoy the spouses.
ep2_wedding_ewan_0041_offended_couple_effect = yes
stress_impact = {
arbitrary = miniscule_stress_impact_loss
lustful = miniscule_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_honor = -0.5
}
}
}
# Diplomacy: opinion gain with every landed ruler attending.
option = {
name = ep2_wedding_ewan.0041.e
trigger = { has_activity_intent = diplomatic_intent }
custom_tooltip = available_because_intent_tt
# Try to give a big, impressive speech.
duel = {
skill = diplomacy
value = extremely_high_skill_rating
# You gain opinion with every attending landed character, plus some prestige.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 10
desc = ep2_wedding_ewan.0041.e.tt.success
send_interface_toast = {
title = ep2_wedding_ewan.0041.e.tt.success
scope:activity = {
every_attending_character = {
limit = {
is_ruler = yes
this != root
}
custom = custom.every_landed_activity_guest
reverse_add_opinion = {
target = root
modifier = respect_opinion
opinion = 20
}
}
}
add_prestige = minor_prestige_gain
}
}
# You just gain the prestige.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 10
desc = ep2_wedding_ewan.0041.e.tt.failure
send_interface_toast = {
title = ep2_wedding_ewan.0041.e.tt.failure
# Consolation prestige.
add_prestige = minor_prestige_gain
}
}
}
# Annoy the spouses.
ep2_wedding_ewan_0041_offended_couple_effect = yes
stress_impact = {
arbitrary = miniscule_stress_impact_loss
ambitious = miniscule_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_honor = -0.5
}
}
}
# Matchmaking: talk up your char of choice.
option = {
name = ep2_wedding_ewan.0041.f
trigger = { has_activity_intent = matchmaking_intent }
custom_tooltip = available_because_intent_tt
# Gain opinion with scope:activity_intent.
reverse_add_opinion = {
target = scope:intent_target
modifier = pleased_opinion
opinion = 20
}
# Plus they get a neat modifier.
scope:intent_target = {
add_character_modifier = {
modifier = ep2_wedding_ewan_0041_attraction_modifier
years = 15
}
}
# Annoy the spouses.
ep2_wedding_ewan_0041_offended_couple_effect = yes
stress_impact = {
arbitrary = miniscule_stress_impact_loss
compassionate = miniscule_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_honor = -0.5
}
}
}
# Mischief: try to start some rumours.
option = {
name = ep2_wedding_ewan.0041.g
trigger = { has_activity_intent = banquet_mischief_intent }
custom_tooltip = available_because_intent_tt
# We take your highest of diplomacy or intrigue and let you duel against it.
if = {
limit = { diplomacy > intrigue }
ep2_wedding_ewan_0041_duel_with_highest_social_skill_effect = { SKILL = diplomacy }
}
else = {
ep2_wedding_ewan_0041_duel_with_highest_social_skill_effect = { SKILL = intrigue }
}
# Annoy the spouses.
ep2_wedding_ewan_0041_offended_couple_effect = yes
stress_impact = {
arbitrary = miniscule_stress_impact_loss
deceitful = miniscule_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_honor = -0.5
}
}
}
# Shy: awkwardly sit back down without saying anything.
option = {
name = ep2_wedding_ewan.0041.h
trigger = { has_trait = shy }
trait = shy
# The couple are confused.
reverse_add_opinion = {
target = scope:spouse_1
modifier = confusion_opinion
opinion = -10
}
reverse_add_opinion = {
target = scope:spouse_2
modifier = confusion_opinion
opinion = -10
}
# SWEET RELIEF.
stress_impact = { shy = massive_stress_impact_loss }
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = -1
ai_sociability = -1
}
}
}
# Say something sweet but perfunctory.
option = {
name = ep2_wedding_ewan.0041.i
trigger = {
NOT = { has_trait = shy }
}
# They're pleased, but not _as_pleased.
reverse_add_opinion = {
target = scope:spouse_1
modifier = kindness_opinion
opinion = 10
}
reverse_add_opinion = {
target = scope:spouse_2
modifier = kindness_opinion
opinion = 10
}
# We most give base stress loss for this'un.
stress_impact = {
base = medium_stress_loss
lazy = miniscule_stress_impact_loss
compassionate = miniscule_stress_impact_loss
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_honor = 0.5
ai_energy = -1
}
}
}
}
##################################################
# And Another Thing
# by Ewan Cowhig Croft
# 0051 - 0060
##################################################
# Zealous same-faith chars don't mind hearing these things.
scripted_trigger ep2_wedding_ewan_0051_boring_zeal_trigger = {
has_trait = zealous
NOT = {
faith = root.faith
root = { has_trait = zealous }
}
}
# Make sure a rakish character wouldn't get in legal trouble talking about this (fornication is included in adultery logic).
scripted_trigger ep2_wedding_ewan_0051_legal_rake_trigger = {
has_trait = rakish
save_temporary_scope_as = char_temp
NOT = {
trait_is_criminal_in_faith_trigger = {
TRAIT = adulterer
FAITH = scope:char_temp.faith
GENDER_CHARACTER = scope:char_temp
}
}
}
# Profligates fall for someone else's scam, so paranoid profligates are immune to this *specific* form of money loss.
scripted_trigger ep2_wedding_ewan_0051_foolish_profligate_trigger = {
has_trait = profligate
NOT = { has_trait = paranoid }
}
# Pick someone with nothing interesting to say.
scripted_trigger ep2_wedding_ewan_0051_dolt_trigger = {
# We don't want important characters.
highest_held_title_tier <= tier_barony
# Must be verifiably a yawn.
## Filter out anyone who can probably hold an interesting conversation.
NOR = {
has_trait = gregarious
has_trait = diplomat
diplomacy >= high_skill_rating
learning >= high_skill_rating
# Shy characters will also never do this.
has_trait = shy
}
## Filter out people who don't make sense or who you might listen to.
NOR = {
this = root
root.intent_target ?= this
has_any_good_relationship_with_character_trigger = { CHARACTER = root }
}
## Now, ensure they've got an actively boring quality to discuss.
OR = {
# Won't stop talking about work.
has_trait = diligent
# Won't stop talking at all, relentlessly.
has_trait = patient
# Won't stick to the same subject.
has_trait = impatient
# Doesn't see any of the obvious flaws in their idea.
has_trait = arrogant
# Idea makes no sense.
has_trait = arbitrary
# Boring religious talk.
ep2_wedding_ewan_0051_boring_zeal_trigger = yes
# Can't stick to an idea.
has_trait = fickle
# Idea is hyper-focused on disproportionately screwing someone over.
has_trait = vengeful
# Idea is long-winded.
has_trait = lifestyle_poet
# Stress traits want you to go in on their stress-related emporium.
## Pub.
has_trait = drunkard
## Cake shop.
has_trait = hashishiyah
## Brothel.
ep2_wedding_ewan_0051_legal_rake_trigger = yes
## Some kind of isolation tower.
has_trait = reclusive
## Whipping. Place. Whiptorium? Whiplaza?
has_trait = flagellant
## It's someone else's idea and obviously a scam.
ep2_wedding_ewan_0051_foolish_profligate_trigger = yes
## Want to open a library for journals.
### Honestly this one is kinda rad, I feel, but I guess I'm boring.
has_trait = journaller
## Gym.
has_trait = athletic
}
}
# Triggers for whether you get the option to invest in a specific stress trait pitch.
scripted_trigger ep2_wedding_ewan_0051_interested_stress_pitch_trait_drunkard_trigger = {
has_trait = drunkard
scope:stress_pitch ?= flag:drunkard
}
scripted_trigger ep2_wedding_ewan_0051_interested_stress_pitch_trait_hashishiyah_trigger = {
has_trait = hashishiyah
scope:stress_pitch ?= flag:hashishiyah
}
scripted_trigger ep2_wedding_ewan_0051_interested_stress_pitch_trait_rakish_trigger = {
has_trait = rakish
scope:stress_pitch ?= flag:rakish
}
scripted_trigger ep2_wedding_ewan_0051_interested_stress_pitch_trait_reclusive_trigger = {
has_trait = reclusive
scope:stress_pitch ?= flag:reclusive
}
scripted_trigger ep2_wedding_ewan_0051_interested_stress_pitch_trait_flagellant_trigger = {
OR = {
has_trait = flagellant
# *sigh* And we acknowledge ulterior motives.
has_trait = deviant
any_secret = { type = secret_deviant }
}
scope:stress_pitch ?= flag:flagellant
}
scripted_trigger ep2_wedding_ewan_0051_interested_stress_pitch_trait_profligate_trigger = {
has_trait = profligate
scope:stress_pitch ?= flag:profligate
}
scripted_trigger ep2_wedding_ewan_0051_interested_stress_pitch_trait_journaller_trigger = {
has_trait = journaller
scope:stress_pitch ?= flag:journaller
}
scripted_trigger ep2_wedding_ewan_0051_interested_stress_pitch_trait_athletic_trigger = {
has_trait = athletic
scope:stress_pitch ?= flag:athletic
}
# Stress for not being a dick to a boring, boring person.
scripted_effect ep2_wedding_ewan_0051_compassion_to_dolt_effect = {
stress_impact = {
compassionate = minor_stress_impact_loss
patient = minor_stress_impact_loss
calm = minor_stress_impact_loss
callous = miniscule_stress_impact_gain
sadistic = miniscule_stress_impact_gain
impatient = miniscule_stress_impact_gain
wrathful = miniscule_stress_impact_gain
}
}
# Loss stress when indulging a stress coping trait.
scripted_effect ep2_wedding_ewan_0051_stress_trait_stress_effect = {
stress_impact = {
$STRESS_TRAIT$ = massive_stress_impact_loss
trusting = miniscule_stress_impact_loss
diligent = miniscule_stress_impact_loss
paranoid = miniscule_stress_impact_gain
lazy = miniscule_stress_impact_gain
}
}
# You start a business based around a shared stress coping trait.
scripted_effect ep2_wedding_ewan_0051_start_business_together_effect = {
# Up-front costs for the both of you.
remove_short_term_gold = major_gold_value
scope:dolt = { remove_short_term_gold = major_gold_value }
# Inform that this may not bear fruit for many years.
custom_tooltip = ep2_wedding_ewan.0051.business_venture.tt
hidden_effect = {
# Log that we're waiting on our last venture.
add_character_flag = awaiting_ep2_wedding_ewan_0051_results_flag
# Now, do a hidden duel for this'un.
duel = {
skill = stewardship
value = dolt_stewardship_adjusted_difficulty_value
# It goes well.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
# Weight down if this is a profligacy thing, as that's the surest-loss.
modifier = {
add = -10
scope:stress_pitch ?= flag:profligate
}
# You always have a very, very slight shot.
min = 2
# Congrats!
trigger_event = {
id = ep2_wedding_ewan.0052
years = { 15 25 }
}
}
# It goes poorly.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
# Weight up if this is a profligacy thing, as that's the surest-loss.
modifier = {
add = 10
scope:stress_pitch ?= flag:profligate
}
# This is not a well-structured proposition for either of you.
min = 25
# Better luck next time.
trigger_event = {
id = ep2_wedding_ewan.0053
years = { 15 25 }
}
}
}
}
}
# Your business is incompatible with your faith.
scripted_effect ep2_wedding_ewan_0051_business_piety_consequences_effect = {
if = {
limit = { this ?= faith.religious_head }
add_piety = medium_piety_loss
}
else = { add_piety = minor_piety_loss }
}
# Someone is pitching questionable ideas at you, and you can go along with them or not, but they keep coming at you.
ep2_wedding_ewan.0051 = {
type = activity_event
title = ep2_wedding_ewan.0051.t
desc = {
desc = ep2_wedding_ewan.0051.desc.intro
first_valid = {
# Do we have a stress pitch to make, and thus special option shenanigans to account for?
triggered_desc = {
trigger = { exists = scope:stress_pitch }
desc = {
first_valid = {
# Drunkard
triggered_desc = {
trigger = { scope:stress_pitch = flag:drunkard }
desc = ep2_wedding_ewan.0051.desc.drunkard
}
# Hashishiyah
triggered_desc = {
trigger = { scope:stress_pitch = flag:hashishiyah }
desc = ep2_wedding_ewan.0051.desc.hashishiyah
}
# Rakish
triggered_desc = {
trigger = { scope:stress_pitch = flag:rakish }
desc = ep2_wedding_ewan.0051.desc.rakish
}
# Reclusive
triggered_desc = {
trigger = { scope:stress_pitch = flag:reclusive }
desc = ep2_wedding_ewan.0051.desc.reclusive
}
# Flagellant
triggered_desc = {
trigger = { scope:stress_pitch = flag:flagellant }
desc = ep2_wedding_ewan.0051.desc.flagellant
}
# Profligate
triggered_desc = {
trigger = { scope:stress_pitch = flag:profligate }
desc = ep2_wedding_ewan.0051.desc.profligate
}
# Journaller
triggered_desc = {
trigger = { scope:stress_pitch = flag:journaller }
desc = ep2_wedding_ewan.0051.desc.journaller
}
# Athletic
triggered_desc = {
trigger = { scope:stress_pitch = flag:athletic }
desc = ep2_wedding_ewan.0051.desc.athletic
}
}
}
}
# Nope? Right, random roll it.
desc = {
random_valid = {
# Diligent
triggered_desc = {
trigger = {
scope:dolt = { has_trait = diligent }
}
desc = ep2_wedding_ewan.0051.desc.diligent
}
# Patient
triggered_desc = {
trigger = {
scope:dolt = { has_trait = patient }
}
desc = ep2_wedding_ewan.0051.desc.patient
}
# Impatient
triggered_desc = {
trigger = {
scope:dolt = { has_trait = impatient }
}
desc = ep2_wedding_ewan.0051.desc.impatient
}
# Arrogant
triggered_desc = {
trigger = {
scope:dolt = { has_trait = arrogant }
}
desc = ep2_wedding_ewan.0051.desc.arrogant
}
# Arbitrary
triggered_desc = {
trigger = {
scope:dolt = { has_trait = arbitrary }
}
desc = ep2_wedding_ewan.0051.desc.arbitrary
}
# Zealous
triggered_desc = {
trigger = {
scope:dolt = { ep2_wedding_ewan_0051_boring_zeal_trigger = yes }
}
desc = ep2_wedding_ewan.0051.desc.zealous
}
# Fickle
triggered_desc = {
trigger = {
scope:dolt = { has_trait = fickle }
}
desc = ep2_wedding_ewan.0051.desc.fickle
}
# Vengeful
triggered_desc = {
trigger = {
scope:dolt = { has_trait = vengeful }
}
desc = ep2_wedding_ewan.0051.desc.vengeful
}
# Poet
triggered_desc = {
trigger = {
scope:dolt = { has_trait = lifestyle_poet }
}
desc = ep2_wedding_ewan.0051.desc.poet
}
}
}
}
desc = ep2_wedding_ewan.0051.desc.outro
}
theme = feast_activity
left_portrait = {
character = root
animation = boredom
}
right_portrait = {
character = scope:dolt
animation = admiration
}
cooldown = { years = 1 }
trigger = {
NOT = { has_character_flag = awaiting_ep2_wedding_ewan_0051_results_flag }
scope:activity = {
any_attending_character = { ep2_wedding_ewan_0051_dolt_trigger = yes }
}
}
immediate = {
# We need root saved for dumb loc stuff.
save_scope_as = reference
# Right, let's sort our dolt.
## First, grab everyone applicable.
scope:activity = {
every_attending_character = {
limit = { ep2_wedding_ewan_0051_dolt_trigger = yes }
add_to_list = potential_boring_characters_list
}
}
## Then sort through them to find the _least_ interesting person.
ordered_in_list = {
list = potential_boring_characters_list
order_by = {
# Grab the two major talky skills.
value = diplomacy
add = learning
# Now, invert them to rank the chars with the worst scores highest.
multiply = -1
}
save_scope_as = dolt
}
# Ok, now that we've got our dolt, let's check to see if they're going to pitch a stress-based endeavour to you.
scope:dolt = {
# We don't bother to if statement this, because we're going to random roll with a chance of nothing anyway, so we may as well just put the triggers right on the random_list entries.
random_list = {
# Drunkard
20 = {
trigger = { has_trait = drunkard }
# Weight up a bit if root shares this quality.
modifier = {
add = 20
root = { has_trait = drunkard }
}
save_scope_value_as = {
name = stress_pitch
value = flag:drunkard
}
}
# Hashishiyah
20 = {
trigger = { has_trait = hashishiyah }
# Weight up a bit if root shares this quality.
modifier = {
add = 20
root = { has_trait = hashishiyah }
}
save_scope_value_as = {
name = stress_pitch
value = flag:hashishiyah
}
}
# Rakish
20 = {
trigger = { ep2_wedding_ewan_0051_legal_rake_trigger = yes }
# Weight up a bit if root shares this quality.
modifier = {
add = 20
root = { ep2_wedding_ewan_0051_legal_rake_trigger = yes }
}
save_scope_value_as = {
name = stress_pitch
value = flag:rakish
}
}
# Reclusive
20 = {
trigger = { has_trait = reclusive }
# Weight up a bit if root shares this quality.
modifier = {
add = 20
root = { has_trait = reclusive }
}
save_scope_value_as = {
name = stress_pitch
value = flag:reclusive
}
}
# Flagellant
20 = {
trigger = { has_trait = flagellant }
# Weight up a bit if root shares this quality.
modifier = {
add = 20
root = { has_trait = flagellant }
}
save_scope_value_as = {
name = stress_pitch
value = flag:flagellant
}
}
# Profligate
20 = {
trigger = { ep2_wedding_ewan_0051_foolish_profligate_trigger = yes }
# Weight up a bit if root shares this quality.
modifier = {
add = 20
root = { ep2_wedding_ewan_0051_foolish_profligate_trigger = yes }
}
save_scope_value_as = {
name = stress_pitch
value = flag:profligate
}
}
# Journaller
20 = {
trigger = { has_trait = journaller }
# Weight up a bit if root shares this quality.
modifier = {
add = 20
root = { has_trait = journaller }
}
save_scope_value_as = {
name = stress_pitch
value = flag:journaller
}
}
# Athletic
20 = {
trigger = { has_trait = athletic }
# Weight up a bit if root shares this quality.
modifier = {
add = 20
root = { has_trait = athletic }
}
save_scope_value_as = {
name = stress_pitch
value = flag:athletic
}
}
# No stress coping pitch, so no effect.
## If they've got 1 stress trait, we want a roughly 20% chance they'll bring that up, so we weight at 20:80.
### If they have multiple stress traits, the numbers'll get progressively more stacked in favour of pitching such, but uhhh... clearly they have something to get off their chests.
80 = {
# We still need to check for the presence of some other boring quality so that we can fetch a desc key.
trigger = {
OR = {
has_trait = diligent
has_trait = patient
has_trait = impatient
has_trait = arrogant
has_trait = arbitrary
ep2_wedding_ewan_0051_boring_zeal_trigger = yes
has_trait = fickle
has_trait = vengeful
has_trait = lifestyle_poet
}
}
}
}
}
}
# Gently exit the conversation.
option = {
name = ep2_wedding_ewan.0051.a
# Let's give this a go!
duel = {
skill = diplomacy
value = high_skill_rating
# You extricate yourself.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = ep2_wedding_ewan.0051.a.tt.success
send_interface_toast = {
title = ep2_wedding_ewan.0051.a.tt.success
left_icon = scope:dolt
add_diplomacy_lifestyle_perk_points = 1
}
}
# It never ends.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 10
desc = ep2_wedding_ewan.0051.a.tt.failure
send_interface_toast = {
title = ep2_wedding_ewan.0051.a.tt.failure
left_icon = scope:dolt
reverse_add_opinion = {
target = scope:dolt
modifier = friendliness_opinion
opinion = 50
}
}
}
}
ep2_wedding_ewan_0051_compassion_to_dolt_effect = yes
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = 1
ai_sociability = -0.25
}
}
}
# Wrathful: By all the denizens of NegativeAfterLife, will you cease this prattle?
option = {
name = ep2_wedding_ewan.0051.b
trigger = { has_trait = wrathful }
trait = wrathful
# Your firmness is notable.
add_prestige = medium_prestige_gain
# Scope:dolt is hurt.
reverse_add_opinion = {
target = scope:dolt
modifier = hurt_opinion
opinion = -40
}
# Every wrathful character at the gathering sees your point.
scope:activity = {
every_attending_character = {
limit = {
has_trait = wrathful
NOR = {
this = root
this = scope:dolt
}
}
custom = ep2_wedding_ewan.0051.b.custom.every_wrathful_guest
add_opinion = {
target = root
modifier = respect_opinion
opinion = 20
}
}
}
stress_impact = {
callous = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
impatient = minor_stress_impact_loss
wrathful = major_stress_impact_loss
patient = miniscule_stress_impact_gain
compassionate = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 0.5
ai_compassion = -0.5
}
}
}
# Shut. Up.
option = {
name = ep2_wedding_ewan.0051.c
trigger = {
NOT = { has_trait = wrathful }
}
# Your firmness is notable.
add_character_modifier = {
modifier = ep2_wedding_ewan_0051_snooty_modifier
years = 15
}
# Scope:dolt is hurt.
reverse_add_opinion = {
target = scope:dolt
modifier = hurt_opinion
opinion = -20
}
stress_impact = {
callous = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
impatient = minor_stress_impact_loss
compassionate = miniscule_stress_impact_gain
patient = miniscule_stress_impact_gain
calm = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 0.5
ai_compassion = -0.5
}
}
}
# Lazy: fall asleep.
option = {
name = ep2_wedding_ewan.0051.d
trigger = { has_trait = lazy }
trait = lazy
# Scope:dolt is hurt.
add_opinion = {
target = scope:dolt
modifier = hurt_opinion
opinion = -30
}
# Every lazy character at the gathering respects the hustle.
scope:activity = {
every_attending_character = {
limit = {
has_trait = lazy
NOR = {
this = root
this = scope:dolt
}
}
custom = ep2_wedding_ewan.0051.d.custom.every_lazy_guest
reverse_add_opinion = {
target = root
modifier = respect_opinion
opinion = 30
}
}
}
# Lotta stress loss for this one too.
stress_impact = {
lazy = major_stress_impact_loss
compassionate = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 0.5
ai_energy = -1
}
}
}
# Drunkard: you buy a pub together.
option = {
name = ep2_wedding_ewan.0051.e
trigger = {
ep2_wedding_ewan_0051_interested_stress_pitch_trait_drunkard_trigger = yes
NOT = { has_trait = lazy }
}
trait = drunkard
# Roll the effect.
ep2_wedding_ewan_0051_start_business_together_effect = yes
ep2_wedding_ewan_0051_stress_trait_stress_effect = { STRESS_TRAIT = drunkard }
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_rationality = -0.75
}
}
}
# Hashishiyah: you buy a cake shop together.
option = {
name = ep2_wedding_ewan.0051.f
trigger = {
ep2_wedding_ewan_0051_interested_stress_pitch_trait_hashishiyah_trigger = yes
NOT = { has_trait = lazy }
}
trait = hashishiyah
# Roll the effect.
ep2_wedding_ewan_0051_start_business_together_effect = yes
ep2_wedding_ewan_0051_stress_trait_stress_effect = { STRESS_TRAIT = hashishiyah }
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_rationality = -0.75
}
}
}
# Rakish: you start a brothel together.
option = {
name = ep2_wedding_ewan.0051.g
trigger = {
ep2_wedding_ewan_0051_interested_stress_pitch_trait_rakish_trigger = yes
NOT = { has_trait = lazy }
}
trait = rakish
# Roll the effect.
ep2_wedding_ewan_0051_start_business_together_effect = yes
ep2_wedding_ewan_0051_stress_trait_stress_effect = { STRESS_TRAIT = rakish }
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_rationality = -0.75
}
}
}
# Reclusive: you start a private retreat together.
option = {
name = ep2_wedding_ewan.0051.h
trigger = {
ep2_wedding_ewan_0051_interested_stress_pitch_trait_reclusive_trigger = yes
NOT = { has_trait = lazy }
}
trait = reclusive
# Roll the effect.
ep2_wedding_ewan_0051_start_business_together_effect = yes
ep2_wedding_ewan_0051_stress_trait_stress_effect = { STRESS_TRAIT = reclusive }
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_rationality = -0.75
}
}
}
# Flagellant: you start a... whipping post field together. Apparently.
option = {
name = ep2_wedding_ewan.0051.i
trigger = {
ep2_wedding_ewan_0051_interested_stress_pitch_trait_flagellant_trigger = yes
NOT = { has_trait = lazy }
}
trait = flagellant
trait = deviant
# Account for secret deviants.
if = {
limit = {
any_secret = { type = secret_deviant }
}
random_secret = {
type = secret_deviant
save_scope_as = secret
}
custom_tooltip = ep2_wedding_ewan.0051.i.tt.deviant
}
# Roll the effect.
ep2_wedding_ewan_0051_start_business_together_effect = yes
ep2_wedding_ewan_0051_stress_trait_stress_effect = { STRESS_TRAIT = flagellant }
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_rationality = -0.75
}
}
}
# Profligate: you go in on a scam together, but will generally get scammed.
option = {
name = ep2_wedding_ewan.0051.j
trigger = {
ep2_wedding_ewan_0051_interested_stress_pitch_trait_profligate_trigger = yes
NOT = { has_trait = lazy }
}
trait = profligate
# Roll the effect.
ep2_wedding_ewan_0051_start_business_together_effect = yes
ep2_wedding_ewan_0051_stress_trait_stress_effect = { STRESS_TRAIT = profligate }
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_rationality = -0.75
}
}
}
# Journaller: you start a library/scriptorium together.
option = {
name = ep2_wedding_ewan.0051.k
trigger = {
ep2_wedding_ewan_0051_interested_stress_pitch_trait_journaller_trigger = yes
NOT = { has_trait = lazy }
}
trait = journaller
# Roll the effect.
ep2_wedding_ewan_0051_start_business_together_effect = yes
ep2_wedding_ewan_0051_stress_trait_stress_effect = { STRESS_TRAIT = journaller }
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_rationality = -0.75
}
}
}
# Athletic: you start a gym together.
option = {
name = ep2_wedding_ewan.0051.l
trigger = {
ep2_wedding_ewan_0051_interested_stress_pitch_trait_athletic_trigger = yes
NOT = { has_trait = lazy }
}
trait = athletic
# Roll the effect.
ep2_wedding_ewan_0051_start_business_together_effect = yes
ep2_wedding_ewan_0051_stress_trait_stress_effect = { STRESS_TRAIT = athletic }
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_rationality = -0.75
}
}
}
# That's... very interesting...
option = {
name = ep2_wedding_ewan.0051.m
trigger = {
NOR = {
has_trait = lazy
ep2_wedding_ewan_0051_interested_stress_pitch_trait_drunkard_trigger = yes
ep2_wedding_ewan_0051_interested_stress_pitch_trait_hashishiyah_trigger = yes
ep2_wedding_ewan_0051_interested_stress_pitch_trait_rakish_trigger = yes
ep2_wedding_ewan_0051_interested_stress_pitch_trait_reclusive_trigger = yes
ep2_wedding_ewan_0051_interested_stress_pitch_trait_flagellant_trigger = yes
ep2_wedding_ewan_0051_interested_stress_pitch_trait_profligate_trigger = yes
ep2_wedding_ewan_0051_interested_stress_pitch_trait_journaller_trigger = yes
ep2_wedding_ewan_0051_interested_stress_pitch_trait_athletic_trigger = yes
}
}
# Try to play along as best you can.
duel = {
skill = intrigue
value = extremely_high_skill_rating
# You pull off your bold-faced lie.
40 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = ep2_wedding_ewan.0051.m.tt.success
send_interface_toast = {
title = ep2_wedding_ewan.0051.m.tt.success
left_icon = scope:dolt
add_intrigue_skill = 1
}
}
# Some people appreciate your tact.
60 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 10
desc = ep2_wedding_ewan.0051.m.tt.failure
send_interface_toast = {
title = ep2_wedding_ewan.0051.m.tt.failure
left_icon = scope:dolt
add_character_modifier = {
modifier = ep2_wedding_ewan_0051_approachable_modifier
years = 15
}
}
}
}
ep2_wedding_ewan_0051_compassion_to_dolt_effect = yes
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = 0.5
ai_sociability = 0.5
}
}
}
# Grin and bear it.
option = {
name = ep2_wedding_ewan.0051.n
flavor = ep2_wedding_ewan.0051.n.tt
# They appreciate you listening.
reverse_add_opinion = {
target = scope:dolt
modifier = friendliness_opinion
opinion = 40
}
# Try to give a hook - they're likely uninteresting (y'know, inherently), which is why we put this in the opt-out.
if = {
limit = {
can_add_hook = {
target = scope:dolt
type = favor_hook
}
}
add_hook = {
target = scope:dolt
type = favor_hook
}
}
ep2_wedding_ewan_0051_compassion_to_dolt_effect = yes
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = 0.5
ai_boldness = -1
}
}
}
}
# Investment success — your venture turned out to be worthwhile after all!
ep2_wedding_ewan.0052 = {
type = character_event
title = ep2_wedding_ewan.0052.t
desc = {
desc = ep2_wedding_ewan.0052.desc.intro
# Is scope:dolt around?
first_valid = {
# Scope:dolt is dead.
triggered_desc = {
trigger = {
scope:dolt = { is_alive = no }
}
desc = ep2_wedding_ewan.0052.desc.dolt_availability.dead
}
# Scope:dolt is imprisoned.
triggered_desc = {
trigger = {
scope:dolt = { is_imprisoned = yes }
}
desc = ep2_wedding_ewan.0052.desc.dolt_availability.imprisoned
}
# Scope:dolt is available.
desc = ep2_wedding_ewan.0052.desc.dolt_availability.free
}
desc = ep2_wedding_ewan.0052.desc.midtro
# And what was your business again?
first_valid = {
# Drunkard
triggered_desc = {
trigger = { scope:stress_pitch = flag:drunkard }
desc = ep2_wedding_ewan.0052.desc.drunkard
}
# Hashishiyah
triggered_desc = {
trigger = { scope:stress_pitch = flag:hashishiyah }
desc = ep2_wedding_ewan.0052.desc.hashishiyah
}
# Rakish
triggered_desc = {
trigger = { scope:stress_pitch = flag:rakish }
desc = ep2_wedding_ewan.0052.desc.rakish
}
# Reclusive
triggered_desc = {
trigger = { scope:stress_pitch = flag:reclusive }
desc = ep2_wedding_ewan.0052.desc.reclusive
}
# Flagellant
triggered_desc = {
trigger = { scope:stress_pitch = flag:flagellant }
desc = ep2_wedding_ewan.0052.desc.flagellant
}
# Profligate
triggered_desc = {
trigger = { scope:stress_pitch = flag:profligate }
desc = ep2_wedding_ewan.0052.desc.profligate
}
# Journaller
triggered_desc = {
trigger = { scope:stress_pitch = flag:journaller }
desc = ep2_wedding_ewan.0052.desc.journaller
}
# Athletic
triggered_desc = {
trigger = { scope:stress_pitch = flag:athletic }
desc = ep2_wedding_ewan.0052.desc.athletic
}
}
# Who's sending the letter?
first_valid = {
triggered_desc = {
trigger = {
scope:dolt = {
OR = {
is_alive = no
is_imprisoned = yes
}
}
}
desc = ep2_wedding_ewan.0052.desc.outro.dolt_unavailable
}
desc = ep2_wedding_ewan.0052.desc.outro
}
}
theme = feast_activity
left_portrait = {
character = root
animation = disbelief
}
right_portrait = {
character = scope:dolt
animation = happiness
}
override_background = { reference = tavern }
trigger = {
# Standard checks.
is_available_adult = yes
}
on_trigger_fail = {
trigger_event = {
id = ep2_wedding_ewan.0052
years = 1
}
}
immediate = {
# Clear the flag.
remove_character_flag = awaiting_ep2_wedding_ewan_0051_results_flag
# Cash for both of you!
add_gold = massive_gold_value
scope:dolt = {
if = {
limit = { is_alive = yes }
add_gold = @ep2_wedding_ewan_0052_dolt_pay_out_value
}
}
# Faith concerns with these iniquities.
## We don't take off _too_ much for any of these — we're just trying to note them for responsiveness.
### Unless you're HoF, in which case, that's a bit of a downer.
## Some faiths would frown on a pub.
if = {
limit = {
scope:stress_pitch = flag:drunkard
faith_forbids_alcohol_trigger = yes
}
ep2_wedding_ewan_0051_business_piety_consequences_effect = yes
}
## Some faiths frown on sloth.
else_if = {
limit = {
scope:stress_pitch = flag:hashishiyah
# Diligent virtue excluded because you can definitely do work _and_ have a hashish indulging habit, but it's hard to see lots of people _on_ hashish as anything but a den of folks lazing around on cushions chatting about nothing in particular. The horror.
faith = { trait_is_sin = lazy }
}
ep2_wedding_ewan_0051_business_piety_consequences_effect = yes
}
## Some faiths frown on lust.
else_if = {
limit = {
scope:stress_pitch = flag:rakish
faith = {
OR = {
trait_is_sin = lustful
trait_is_virtue = chaste
}
}
}
ep2_wedding_ewan_0051_business_piety_consequences_effect = yes
}
## Some faiths frown on isolation.
else_if = {
limit = {
scope:stress_pitch = flag:reclusive
faith = {
OR = {
trait_is_sin = shy
trait_is_virtue = gregarious
}
}
}
ep2_wedding_ewan_0051_business_piety_consequences_effect = yes
}
## Some faiths frown on boondoggles.
else_if = {
limit = {
scope:stress_pitch = flag:profligate
faith = { trait_is_virtue = greedy }
}
ep2_wedding_ewan_0051_business_piety_consequences_effect = yes
}
## Some faiths frown on non-gamer activities.
else_if = {
limit = {
scope:stress_pitch = flag:athletic
faith = { trait_is_virtue = lazy }
}
ep2_wedding_ewan_0051_business_piety_consequences_effect = yes
}
}
# Greedy/Callous/Sadistic/Arbitrary: take scope:dolt's gold too.
option = {
name = ep2_wedding_ewan.0052.a
trigger = {
# You have some sway over scope:dolt.
scope:dolt = {
is_alive = yes
any_liege_or_above = { this = root }
}
OR = {
has_trait = greedy
has_trait = callous
has_trait = sadistic
has_trait = arbitrary
}
}
trait = greedy
trait = callous
trait = sadistic
trait = arbitrary
scope:dolt = {
# Forcibly transfer the gold.
pay_short_term_gold = {
target = root
gold = @ep2_wedding_ewan_0052_dolt_pay_out_value
}
# But be mad about it.
add_opinion = {
target = root
modifier = cruelty_opinion
opinion = -50
}
}
stress_impact = {
greedy = minor_stress_impact_loss
callous = miniscule_stress_impact_loss
sadistic = miniscule_stress_impact_loss
arbitrary = miniscule_stress_impact_loss
generous = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_greed = 1
ai_honor = -1
}
}
}
# Arrogant: Of course, I'm a business genius.
option = {
name = ep2_wedding_ewan.0052.b
trigger = { has_trait = arrogant }
trait = arrogant
# Scope:dolt appreciates that you believed in HerHim.
scope:dolt = {
if = {
limit = { is_alive = yes }
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 50
}
}
}
stress_impact = { arrogant = massive_stress_impact_loss }
ai_chance = {
base = 1
ai_value_modifier = {
ai_honor = 1
ai_greed = -1
}
}
}
# An unexpectedly pleasant surprise!
option = {
name = ep2_wedding_ewan.0052.c
trigger = {
NOT = { has_trait = arrogant }
}
# Scope:dolt appreciates that you believed in HerHim.
scope:dolt = {
if = {
limit = { is_alive = yes }
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 50
}
}
}
# No stress for notification option.
ai_chance = {
base = 1
ai_value_modifier = {
ai_honor = 1
ai_greed = -1
}
}
}
}
# Investment failure — semi-predictably, your venture dun goofed.
ep2_wedding_ewan.0053 = {
type = character_event
title = ep2_wedding_ewan.0053.t
desc = {
desc = ep2_wedding_ewan.0053.desc.intro
# Is scope:dolt around?
first_valid = {
# Scope:dolt is dead.
triggered_desc = {
trigger = {
scope:dolt = { is_alive = no }
}
desc = ep2_wedding_ewan.0053.desc.dolt_availability.dead
}
# Scope:dolt is imprisoned.
triggered_desc = {
trigger = {
scope:dolt = { is_imprisoned = yes }
}
desc = ep2_wedding_ewan.0053.desc.dolt_availability.imprisoned
}
# Scope:dolt is available.
desc = ep2_wedding_ewan.0053.desc.dolt_availability.free
}
desc = ep2_wedding_ewan.0053.desc.midtro
# And what was your business again?
first_valid = {
# Drunkard
triggered_desc = {
trigger = { scope:stress_pitch = flag:drunkard }
desc = ep2_wedding_ewan.0053.desc.drunkard
}
# Hashishiyah
triggered_desc = {
trigger = { scope:stress_pitch = flag:hashishiyah }
desc = ep2_wedding_ewan.0053.desc.hashishiyah
}
# Rakish
triggered_desc = {
trigger = { scope:stress_pitch = flag:rakish }
desc = ep2_wedding_ewan.0053.desc.rakish
}
# Reclusive
triggered_desc = {
trigger = { scope:stress_pitch = flag:reclusive }
desc = ep2_wedding_ewan.0053.desc.reclusive
}
# Flagellant
triggered_desc = {
trigger = { scope:stress_pitch = flag:flagellant }
desc = ep2_wedding_ewan.0053.desc.flagellant
}
# Profligate
triggered_desc = {
trigger = { scope:stress_pitch = flag:profligate }
desc = ep2_wedding_ewan.0053.desc.profligate
}
# Journaller
triggered_desc = {
trigger = { scope:stress_pitch = flag:journaller }
desc = ep2_wedding_ewan.0053.desc.journaller
}
# Athletic
triggered_desc = {
trigger = { scope:stress_pitch = flag:athletic }
desc = ep2_wedding_ewan.0053.desc.athletic
}
}
desc = ep2_wedding_ewan.0053.desc.outro
}
theme = feast_activity
left_portrait = {
character = root
animation = disapproval
}
right_portrait = {
character = scope:dolt
animation = shame
}
override_background = { reference = tavern }
trigger = {
# Standard checks.
is_available_adult = yes
}
on_trigger_fail = {
trigger_event = {
id = ep2_wedding_ewan.0053
years = 1
}
}
immediate = {
# Clear the flag.
remove_character_flag = awaiting_ep2_wedding_ewan_0051_results_flag
# Troublesome to be reminded of.
add_stress = medium_stress_gain
scope:dolt = {
if = {
limit = { is_ai = yes }
add_stress = massive_stress_gain
}
}
}
# Bring me that idiot in shackles!
option = {
name = {
trigger = {
scope:dolt = { is_alive = yes }
}
text = ep2_wedding_ewan.0053.a.alive
}
name = {
trigger = {
scope:dolt = { is_alive = no }
}
text = ep2_wedding_ewan.0053.a.dead
}
scope:dolt = {
if = {
limit = { is_alive = yes }
# If you can imprison scope:dolt, you do.
if = {
limit = {
is_imprisoned = no
any_liege_or_above = { this = root }
}
rightfully_imprison_character_effect = {
TARGET = scope:dolt
IMPRISONER = root
}
}
# Plus they're upset with your lack of understanding.
add_opinion = {
target = root
modifier = cruelty_opinion
opinion = -30
}
}
}
stress_impact = {
vengeful = major_stress_impact_loss
wrathful = miniscule_stress_impact_loss
forgiving = medium_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_vengefulness = 1
ai_compassion = -1
}
}
}
# This was probably to be expected.
option = {
name = ep2_wedding_ewan.0053.b
# They're grateful for your understanding.
scope:dolt = {
if = {
limit = { is_alive = yes }
add_opinion = {
target = root
modifier = kindness_opinion
opinion = 30
}
}
}
stress_impact = {
forgiving = minor_stress_impact_loss
wrathful = minor_stress_impact_gain
vengeful = medium_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = 1
ai_vengefulness = -1
}
}
}
}
##################################################
# To My Beloved GetRelation
# by Ewan Cowhig Croft
# 0061 - 0070
##################################################
# Find an old coot to chatter on.
scripted_trigger ep2_wedding_ewan_0061_suitable_doddering_relative_trigger = {
is_ai = yes
# Right, make sure that they're old enough for a good ramble.
age >= 60
# Must be sufficiently older than our target also.
age >= {
value = $TARGET$.age
add = 20
}
# Shy characters will never do this.
NOT = { has_trait = shy }
# Must have some predilection for long public speeches.
OR = {
# Some traits make you want to talk.
## You love the sound of your own voice.
has_trait = arrogant
## Because you must tell your story to the world. Or something.
has_trait = honest
## Because you must tell _a_ story to the world. Or something.
has_trait = deceitful
## You love giving speeches.
has_trait = gregarious
has_trait = ambitious
has_trait = diplomat
has_trait = lifestyle_poet
## You love giving terrible speeches.
has_trait = sadistic
## It seemed like a good idea at the time.
### We've all been there.
#### ;_;.
has_trait = drunkard
has_trait = hashishiyah
# People with very high talky-skills are inclined to talking.
diplomacy >= @ep2_wedding_ewan_0061_high_skill_value
learning >= @ep2_wedding_ewan_0061_high_skill_value
# Really old people will give speeches.
age >= @ep2_wedding_ewan_0061_old_value
}
# And actually family - we check this last so that we iterate over as few characters as possible.
is_close_or_extended_family_of = $TARGET$
# Filter out candidates that don't make sense.
NOR = {
this = root
this = scope:activity.special_guest:spouse_1
this = scope:activity.special_guest:spouse_2
}
}
# Talk scope:oldling down without hurting HerHis feelings.
scripted_effect ep2_wedding_ewan_0061_diplomatically_stop_speech_effect = {
# Hook + prestige if we can.
if = {
limit = {
can_add_hook = {
target = scope:relative
type = favor_hook
}
}
add_hook = {
target = scope:relative
type = favor_hook
}
add_prestige = minor_prestige_gain
}
# Otherwise, double our prestige.
else = { add_prestige = medium_prestige_gain }
}
# How much does root prod scope:oldling into continuing, at the cost of scope:relative's mental health?
scripted_effect ep2_wedding_ewan_0061_humiliation_rewards_effect = {
# If this is the player, we give stress to scope:relative.
## The AI restriction is to stop scope:relative from being harassed into alcoholism/death if they accidentally invite too many dicks to their wedding.
if = {
limit = { is_ai = no }
scope:relative = { add_stress = $STRESS_AMOUNT$_stress_gain }
}
# Everyone gets to lose opinion though!
## (the AI is thus effectively just trading opinion for stress loss)
reverse_add_opinion = {
target = scope:relative
modifier = humiliated_opinion
opinion = $OPINION_LOSS$
}
}
# Embarrassing older relation speech.
ep2_wedding_ewan.0061 = {
type = activity_event
title = ep2_wedding_ewan.0061.t
desc = {
desc = ep2_wedding_ewan.0061.desc.intro
random_valid = {
# Arrogant
triggered_desc = {
trigger = {
scope:oldling = { has_trait = arrogant }
}
desc = ep2_wedding_ewan.0061.desc.arrogant
}
# Honest
triggered_desc = {
trigger = {
scope:oldling = { has_trait = honest }
}
desc = ep2_wedding_ewan.0061.desc.honest
}
# Deceitful
triggered_desc = {
trigger = {
scope:oldling = { has_trait = deceitful }
}
desc = ep2_wedding_ewan.0061.desc.deceitful
}
# Gregarious
triggered_desc = {
trigger = {
scope:oldling = { has_trait = gregarious }
}
desc = ep2_wedding_ewan.0061.desc.gregarious
}
# Ambitious
triggered_desc = {
trigger = {
scope:oldling = { has_trait = ambitious }
}
desc = ep2_wedding_ewan.0061.desc.ambitious
}
# Diplomat
triggered_desc = {
trigger = {
scope:oldling = { has_trait = diplomat }
}
desc = ep2_wedding_ewan.0061.desc.diplomat
}
# Poet
triggered_desc = {
trigger = {
scope:oldling = { has_trait = lifestyle_poet }
}
desc = ep2_wedding_ewan.0061.desc.poet
}
# Sadistic
triggered_desc = {
trigger = {
scope:oldling = { has_trait = sadistic }
}
desc = ep2_wedding_ewan.0061.desc.sadistic
}
# Drunkard
triggered_desc = {
trigger = {
scope:oldling = { has_trait = drunkard }
}
desc = ep2_wedding_ewan.0061.desc.drunkard
}
# Hashishiyah
triggered_desc = {
trigger = {
scope:oldling = { has_trait = hashishiyah }
}
desc = ep2_wedding_ewan.0061.desc.hashishiyah
}
# High Diplomacy
triggered_desc = {
trigger = { scope:oldling.diplomacy >= @ep2_wedding_ewan_0061_high_skill_value }
desc = ep2_wedding_ewan.0061.desc.skill.diplomacy
}
# High Learning
triggered_desc = {
trigger = { scope:oldling.learning >= @ep2_wedding_ewan_0061_high_skill_value }
desc = ep2_wedding_ewan.0061.desc.skill.learning
}
# V. Old
triggered_desc = {
trigger = { scope:oldling.age >= @ep2_wedding_ewan_0061_old_value }
desc = ep2_wedding_ewan.0061.desc.old
}
# V. V. Old
triggered_desc = {
trigger = { scope:oldling.age >= @ep2_wedding_ewan_0061_very_old }
desc = ep2_wedding_ewan.0061.desc.very_old
}
}
desc = ep2_wedding_ewan.0061.desc.outro
}
theme = feast_activity
left_portrait = {
character = scope:oldling
animation = toast_goblet
}
center_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:relative
animation = fear
}
cooldown = { years = 1 }
trigger = {
NOR = {
this = scope:activity.special_guest:spouse_1
this = scope:activity.special_guest:spouse_2
}
# Either special guest must have a relative who matches the criteria.
scope:activity = {
NOT = { exists = var:had_event_ewan_0061 }
any_attending_character = {
OR = {
ep2_wedding_ewan_0061_suitable_doddering_relative_trigger = { TARGET = scope:activity.special_guest:spouse_1 }
ep2_wedding_ewan_0061_suitable_doddering_relative_trigger = { TARGET = scope:activity.special_guest:spouse_2 }
}
}
}
}
immediate = {
# Save some scopes for loc and general sanity.
scope:activity = {
special_guest:spouse_1 = { save_scope_as = spouse_1 }
special_guest:spouse_2 = { save_scope_as = spouse_2 }
set_variable = {
name = had_event_ewan_0061
years = 5
}
}
# Alright, let's pick a doddering old relative!
scope:activity = {
ordered_attending_character = {
limit = {
OR = {
ep2_wedding_ewan_0061_suitable_doddering_relative_trigger = { TARGET = scope:spouse_1 }
ep2_wedding_ewan_0061_suitable_doddering_relative_trigger = { TARGET = scope:spouse_2 }
}
}
# Naturally, naturally.
order_by = age
# Ok, save 'em for reference.
save_scope_as = oldling
}
}
# Right, work out who they're related to.
random_list = {
# Related to scope:spouse_1.
100 = {
trigger = {
scope:spouse_1 = {
any_close_or_extended_family_member = { this = scope:oldling }
}
}
scope:spouse_1 = { save_scope_as = relative }
}
# Related to scope:spouse_2.
100 = {
trigger = {
scope:spouse_2 = {
any_close_or_extended_family_member = { this = scope:oldling }
}
}
scope:spouse_2 = { save_scope_as = relative}
}
}
}
# Diplomacy: gently interrupt them.
option = {
name = ep2_wedding_ewan.0061.a
trigger = { diplomacy >= extremely_high_skill_rating }
skill = diplomacy
# Talk scope:oldling down without hurting HerHis feelings.
ep2_wedding_ewan_0061_diplomatically_stop_speech_effect = yes
# Scope:relative is _extremely_ grateful to you either way.
reverse_add_opinion = {
target = scope:relative
modifier = grateful_opinion
opinion = 40
}
stress_impact = {
compassionate = minor_stress_impact_loss
callous = miniscule_stress_impact_gain
sadistic = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = 1
ai_sociability = 1
}
}
}
# Politely clap to stop them.
option = {
name = ep2_wedding_ewan.0061.b
trigger = { diplomacy < very_high_skill_rating }
# You give it your best shot.
duel = {
skill = diplomacy
value = high_skill_rating
# You force scope:oldling down.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = ep2_wedding_ewan.0061.b.tt.success
send_interface_toast = {
title = ep2_wedding_ewan.0061.b.tt.success
left_icon = scope:oldling
# Talk scope:oldling down without hurting HerHis feelings.
ep2_wedding_ewan_0061_diplomatically_stop_speech_effect = yes
}
}
# Scope:oldling continues apace regardless.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 10
desc = ep2_wedding_ewan.0061.b.tt.failure
send_interface_toast = {
title = ep2_wedding_ewan.0061.b.tt.failure
left_icon = scope:oldling
add_prestige = minor_prestige_gain
}
}
}
# Scope:relative is _extremely_ grateful to you either way.
reverse_add_opinion = {
target = scope:relative
modifier = grateful_opinion
opinion = 40
}
stress_impact = {
compassionate = minor_stress_impact_loss
callous = miniscule_stress_impact_gain
sadistic = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = 1
ai_sociability = 1
}
}
}
# Grin and suffer through it.
option = {
name = ep2_wedding_ewan.0061.c
# Everyone can commiserate.
scope:activity = {
every_attending_character = {
limit = {
NOR = {
this = scope:oldling
this = root
}
}
custom = custom.every_activity_guest
reverse_add_opinion = {
target = root
modifier = commiseration_opinion
opinion = 15
}
}
}
stress_impact = {
compassionate = minor_stress_impact_loss
lazy = minor_stress_impact_loss
patient = minor_stress_impact_loss
impatient = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = 1
ai_boldness = -1
}
}
}
# Mischief: cheer and whoop for more.
option = {
name = ep2_wedding_ewan.0061.d
trigger = { has_activity_intent = banquet_mischief_intent }
custom_tooltip = available_because_intent_tt
# Same as the .e rolls, but we remove the minor result and just roll between success & crit success.
duel = {
skill = intrigue
value = very_high_skill_rating
# Critical success.
40 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = ep2_wedding_ewan.0061.d.tt.crit_success
send_interface_toast = {
title = ep2_wedding_ewan.0061.d.tt.crit_success
left_icon = scope:oldling
right_icon = scope:relative
# Parse out our effects.
ep2_wedding_ewan_0061_humiliation_rewards_effect = {
STRESS_AMOUNT = massive
OPINION_LOSS = -40
}
}
}
# Success.
60 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = ep2_wedding_ewan.0061.d.tt.success
send_interface_toast = {
title = ep2_wedding_ewan.0061.d.tt.success
left_icon = scope:oldling
right_icon = scope:relative
# Parse out our effects.
ep2_wedding_ewan_0061_humiliation_rewards_effect = {
STRESS_AMOUNT = major
OPINION_LOSS = -30
}
}
}
}
# Plus scope:oldling appreciates the cheering.
reverse_add_opinion = {
target = scope:oldling
modifier = compliment_opinion
opinion = 40
}
# We give base stress loss for this'un too.
stress_impact = {
base = major_stress_impact_loss
deceitful = miniscule_stress_impact_loss
callous = miniscule_stress_impact_loss
sadistic = miniscule_stress_impact_loss
compassionate = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_compassion = -0.5
}
}
}
# Prod them to continue.
option = {
name = ep2_wedding_ewan.0061.e
trigger = {
NOT = { has_activity_intent = banquet_mischief_intent }
}
# Commence the haranguing.
duel = {
skill = intrigue
value = very_high_skill_rating
# Critical success.
20 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = ep2_wedding_ewan.0061.e.tt.crit_success
send_interface_toast = {
title = ep2_wedding_ewan.0061.e.tt.crit_success
left_icon = scope:oldling
right_icon = scope:relative
# Parse out our effects.
ep2_wedding_ewan_0061_humiliation_rewards_effect = {
STRESS_AMOUNT = massive
OPINION_LOSS = -40
}
}
}
# Success.
30 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = ep2_wedding_ewan.0061.e.tt.success
send_interface_toast = {
title = ep2_wedding_ewan.0061.e.tt.success
left_icon = scope:oldling
right_icon = scope:relative
# Parse out our effects.
ep2_wedding_ewan_0061_humiliation_rewards_effect = {
STRESS_AMOUNT = major
OPINION_LOSS = -30
}
}
}
# Slight success.
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 10
desc = ep2_wedding_ewan.0061.e.tt.failure
send_interface_toast = {
title = ep2_wedding_ewan.0061.e.tt.failure
left_icon = scope:oldling
right_icon = scope:relative
# Parse out our effects.
ep2_wedding_ewan_0061_humiliation_rewards_effect = {
STRESS_AMOUNT = medium
OPINION_LOSS = -20
}
}
}
}
# Plus scope:oldling appreciates the prompts.
reverse_add_opinion = {
target = scope:oldling
modifier = compliment_opinion
opinion = 10
}
stress_impact = {
base = major_stress_loss
deceitful = minor_stress_impact_loss
callous = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
compassionate = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_boldness = 1
ai_compassion = -0.5
}
}
}
# Stop paying attention.
option = {
name = ep2_wedding_ewan.0061.f
# Effect is stress loss.
stress_impact = {
base = medium_stress_loss
lazy = medium_stress_impact_loss
diligent = miniscule_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_energy = -0.5
ai_sociability = -0.5
}
}
}
}
##################################################
# Oath in Moment
# by Ewan Cowhig Croft
# 0071 - 0080
##################################################
# Your liege offers you a favour for your support.
ep2_wedding_ewan.0071 = {
type = character_event
title = ep2_wedding_ewan.0071.t
desc = ep2_wedding_ewan.0071.desc
theme = feast_activity
left_portrait = {
character = root
animation = personality_bold
}
right_portrait = {
character = scope:liege
animation = admiration
}
trigger = {
# DLC check.
has_ep2_dlc_trigger = yes
# Vassals only please.
top_liege != this
# Decent prestige level, as you can't be a nobody.
prestige_level >= medium_prestige_level
# Dynastic cooldowns.
trigger_if = {
limit = { exists = dynasty }
dynasty = {
OR = {
# AI cooldown.
AND = {
root = { is_ai = yes }
NOT = { has_variable = ep2_wedding_ewan_0071_ai_cooldown }
}
# Player cooldown.
AND = {
root = { is_ai = no }
NOT = { has_variable = ep2_wedding_ewan_0071_player_cooldown }
}
}
}
}
# If you're factioning, they won't give ye diddly.
NOR = {
is_a_faction_leader = yes
is_a_faction_member = yes
}
# Must have a liege who...
liege ?= {
NOR = {
has_imprisonment_reason = root
has_banish_reason = root
has_execute_reason = root
}
# ... has a prestige level no higher than yours.
prestige_level <= root.prestige_level
# ... really likes you.
OR = {
opinion = {
target = root
value >= 100
}
AND = {
dynasty ?= { has_dynasty_perk = ep2_activities_legacy_2 }
opinion = {
target = root
value >= 50
}
}
has_trait = trusting
}
# ... juuuust let's double-check you haven't managed this whilst having a bad relationship.
NOT = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
}
# ... and is an AI.
is_ai = yes
# Plus, filter out stuff that'd look real weird.
NOR = {
# No crime reasons.
has_imprisonment_reason = root
has_banish_reason = root
has_revoke_title_reason = root
has_execute_reason = root
has_divorce_reason = root
# No terrible opinions you might've overridden.
has_any_major_negative_opinion_against_character_trigger = { CHARACTER = root }
# Paranoid lieges don't make themselves this vulnerable.
has_trait = paranoid
}
}
# No use if you already have a strong hook on 'em.
NOT = { has_strong_hook = liege }
}
weight_multiplier = {
base = 1
# Weight up for the dynasty legacy that generally enables this.
modifier = {
# This number is deliberately high — it brings it up to about the standard weighting in the on_action, going from 1 to 100.
add = 99
dynasty ?= { has_dynasty_perk = ep2_activities_legacy_2 }
}
}
immediate = {
# Grab the liege immediately for mildly easier loc - we don't worry about a scripted trigger because we only have one liege who can have passed this gate.
liege = { save_scope_as = liege }
# We don't want to see this again for a century or so.
if = {
limit = { exists = dynasty }
# AI get one cooldown...
if = {
limit = { is_ai = yes }
dynasty = {
set_variable = {
name = ep2_wedding_ewan_0071_ai_cooldown
value = yes
years = 100
}
}
}
# ... and the player gets another, so that the AI doesn't block them.
dynasty = {
set_variable = {
name = ep2_wedding_ewan_0071_player_cooldown
value = yes
years = 100
}
}
}
}
# Sounds like a fair trade to me!
option = {
name = ep2_wedding_ewan.0071.a
# You get your hook.
add_hook = {
type = liege_favour_strong_hook
target = scope:liege
}
# Liege gains prestige!
scope:liege = {
add_prestige = major_prestige_gain
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 30
}
}
stress_impact = {
humble = major_stress_impact_loss
arbitrary = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_rationality = 2
ai_honor = 0.5
}
}
}
# Thank you, but no thank you.
option = {
name = ep2_wedding_ewan.0071.b
# You gain prestige.
add_prestige = major_prestige_gain
# Plus dynasty prestige if you're not the same dynasty.
if = {
limit = {
OR = {
AND = {
exists = liege.dynasty
NOT = { dynasty ?= liege.dynasty }
}
AND = {
exists = dynasty
NOT = { exists = liege.dynasty }
}
}
}
dynasty = { add_dynasty_prestige = massive_dynasty_prestige_value }
}
# Liege loses a little opinion of you.
reverse_add_opinion = {
target = scope:liege
modifier = disappointed_opinion
opinion = -15
}
stress_impact = {
arbitrary = minor_stress_impact_loss
arrogant = minor_stress_impact_loss
humble = medium_stress_impact_gain
}
ai_chance = {
base = 1
ai_value_modifier = {
ai_compassion = -0.5
ai_energy = -0.75
}
}
}
}