@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 } } } }