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

719 lines
18 KiB
Text

namespace = ep1_character_interaction
##################################################
#
# Character Interaction Events
#
# 0001 - 0010 Indebt Guest
##################################################
##################################################
# CHARACTER INTERACTION EVENTS
##################################################
# A Sensible Recompense
# by Ewan Cowhig Croft
# 0001 - 0010
##################################################
scripted_trigger ep1_character_interaction_0001_valid_hostile_relation_trigger = {
# Must be at a court of some kind *other* than your own.
exists = host
scope:actor != host
# And not in scope:actor's prison.
NOR = {
imprisoner ?= scope:actor
}
# Double check that this'd be an appropriate court to send a plant.
save_temporary_scope_as = current_target
scope:actor = {
OR = {
# Either you've got a scheme on the go...
any_scheme = {
hostile_scheme_trigger = yes
scheme_target_character = scope:current_target
}
# ... or you could start one.
can_start_hostile_scheme_against_trigger = { TARGET = scope:current_target}
}
}
}
scripted_trigger ep1_character_interaction_0001_valid_rival_trigger = {
ep1_character_interaction_0001_valid_hostile_relation_trigger = yes
OR = {
NOT = { exists = scope:actor_nemesis }
this != scope:actor_nemesis
}
}
scripted_effect ep1_character_interaction_0001_move_character_and_family_effect = {
scope:recipient = {
# Whatever else happens, just move them.
scope:actor = { remove_courtier_or_guest = scope:recipient }
$DESTINATION$ = { add_courtier = scope:recipient }
# If they have any family, quietly send them along too.
hidden_effect = {
if = {
limit = {
any_traveling_family_member = { }
}
every_traveling_family_member = {
save_temporary_scope_as = family_to_shunt
scope:actor = { remove_courtier_or_guest = scope:family_to_shunt }
$DESTINATION$ = { add_courtier = scope:family_to_shunt }
}
}
}
}
}
# Trick a guest into a debt & turn them into an agent.
ep1_character_interaction.0001 = {
type = character_event
title = ep1_character_interaction.0001.t
desc = {
desc = ep1_character_interaction.0001.desc.intro
first_valid = {
triggered_desc = {
trigger = { scope:false_flag_type = flag:lustful }
desc = ep1_character_interaction.0001.desc.lustful
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:chaste }
desc = ep1_character_interaction.0001.desc.chaste
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:gluttonous }
desc = ep1_character_interaction.0001.desc.gluttonous
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:temperate }
desc = ep1_character_interaction.0001.desc.temperate
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:greedy }
desc = ep1_character_interaction.0001.desc.greedy
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:generous }
desc = ep1_character_interaction.0001.desc.generous
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:lazy }
desc = ep1_character_interaction.0001.desc.lazy
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:diligent }
desc = ep1_character_interaction.0001.desc.diligent
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:wrathful }
desc = ep1_character_interaction.0001.desc.wrathful
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:calm }
desc = ep1_character_interaction.0001.desc.calm
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:patient }
desc = ep1_character_interaction.0001.desc.patient
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:impatient }
desc = ep1_character_interaction.0001.desc.impatient
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:arrogant }
desc = ep1_character_interaction.0001.desc.arrogant
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:humble }
desc = ep1_character_interaction.0001.desc.humble
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:deceitful }
desc = ep1_character_interaction.0001.desc.deceitful
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:honest }
desc = ep1_character_interaction.0001.desc.honest
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:craven }
desc = ep1_character_interaction.0001.desc.craven
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:brave }
desc = ep1_character_interaction.0001.desc.brave
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:shy }
desc = ep1_character_interaction.0001.desc.shy
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:gregarious }
desc = ep1_character_interaction.0001.desc.gregarious
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:ambitious }
desc = ep1_character_interaction.0001.desc.ambitious
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:content }
desc = ep1_character_interaction.0001.desc.content
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:arbitrary }
desc = ep1_character_interaction.0001.desc.arbitrary
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:just }
desc = ep1_character_interaction.0001.desc.just
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:cynical }
desc = ep1_character_interaction.0001.desc.cynical
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:zealous }
desc = ep1_character_interaction.0001.desc.zealous
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:paranoid }
desc = ep1_character_interaction.0001.desc.paranoid
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:trusting }
desc = ep1_character_interaction.0001.desc.trusting
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:compassionate }
desc = ep1_character_interaction.0001.desc.compassionate
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:callous }
desc = ep1_character_interaction.0001.desc.callous
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:sadistic }
desc = ep1_character_interaction.0001.desc.sadistic
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:stubborn }
desc = ep1_character_interaction.0001.desc.stubborn
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:fickle }
desc = ep1_character_interaction.0001.desc.fickle
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:vengeful }
desc = ep1_character_interaction.0001.desc.vengeful
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:forgiving }
desc = ep1_character_interaction.0001.desc.forgiving
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:fallback_1 }
desc = ep1_character_interaction.0001.desc.fallback_1
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:fallback_2 }
desc = ep1_character_interaction.0001.desc.fallback_2
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:fallback_3 }
desc = ep1_character_interaction.0001.desc.fallback_3
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:fallback_4 }
desc = ep1_character_interaction.0001.desc.fallback_4
}
triggered_desc = {
trigger = { scope:false_flag_type = flag:fallback_5 }
desc = ep1_character_interaction.0001.desc.fallback_5
}
}
desc = ep1_character_interaction.0001.desc.outro
}
theme = intrigue_skulduggery_focus
left_portrait = {
character = scope:actor
animation = schadenfreude
}
right_portrait = {
character = scope:recipient
animation = fear
}
lower_center_portrait = scope:actor_nemesis
lower_right_portrait = scope:actor_rival
override_background = { reference = throne_room }
immediate = {
# Apply the interaction's effects.
indebt_guest_interaction_accepted_effect = yes
# Roll the offending crime.
## Percentages even throughout: we're not fussed about which result you roll.
scope:recipient = {
random_list = {
# lustful
100 = {
trigger = { has_trait = lustful }
save_scope_value_as = {
name = false_flag_type
value = flag:lustful
}
}
# chaste
100 = {
trigger = { has_trait = chaste }
save_scope_value_as = {
name = false_flag_type
value = flag:chaste
}
}
# gluttonous
100 = {
trigger = { has_trait = gluttonous }
save_scope_value_as = {
name = false_flag_type
value = flag:gluttonous
}
}
# temperate
100 = {
trigger = { has_trait = temperate }
save_scope_value_as = {
name = false_flag_type
value = flag:temperate
}
}
# greedy
100 = {
trigger = { has_trait = greedy }
save_scope_value_as = {
name = false_flag_type
value = flag:greedy
}
}
# generous
100 = {
trigger = { has_trait = generous }
save_scope_value_as = {
name = false_flag_type
value = flag:generous
}
}
# lazy
100 = {
trigger = { has_trait = lazy }
save_scope_value_as = {
name = false_flag_type
value = flag:lazy
}
}
# diligent
100 = {
trigger = { has_trait = diligent }
save_scope_value_as = {
name = false_flag_type
value = flag:diligent
}
}
# wrathful
100 = {
trigger = { has_trait = wrathful }
save_scope_value_as = {
name = false_flag_type
value = flag:wrathful
}
}
# calm
100 = {
trigger = { has_trait = calm }
save_scope_value_as = {
name = false_flag_type
value = flag:calm
}
}
# patient
100 = {
trigger = { has_trait = patient }
save_scope_value_as = {
name = false_flag_type
value = flag:patient
}
}
# impatient
100 = {
trigger = { has_trait = impatient }
save_scope_value_as = {
name = false_flag_type
value = flag:impatient
}
}
# arrogant
100 = {
trigger = { has_trait = arrogant }
save_scope_value_as = {
name = false_flag_type
value = flag:arrogant
}
}
# humble
100 = {
trigger = { has_trait = humble }
save_scope_value_as = {
name = false_flag_type
value = flag:humble
}
}
# deceitful
100 = {
trigger = { has_trait = deceitful }
save_scope_value_as = {
name = false_flag_type
value = flag:deceitful
}
}
# honest
100 = {
trigger = { has_trait = honest }
save_scope_value_as = {
name = false_flag_type
value = flag:honest
}
}
# craven
100 = {
trigger = { has_trait = craven }
save_scope_value_as = {
name = false_flag_type
value = flag:craven
}
}
# brave
100 = {
trigger = { has_trait = brave }
save_scope_value_as = {
name = false_flag_type
value = flag:brave
}
}
# shy
100 = {
trigger = { has_trait = shy }
save_scope_value_as = {
name = false_flag_type
value = flag:shy
}
}
# gregarious
100 = {
trigger = { has_trait = gregarious }
save_scope_value_as = {
name = false_flag_type
value = flag:gregarious
}
}
# ambitious
100 = {
trigger = { has_trait = ambitious }
save_scope_value_as = {
name = false_flag_type
value = flag:ambitious
}
}
# content
100 = {
trigger = { has_trait = content }
save_scope_value_as = {
name = false_flag_type
value = flag:content
}
}
# arbitrary
100 = {
trigger = { has_trait = arbitrary }
save_scope_value_as = {
name = false_flag_type
value = flag:arbitrary
}
}
# just
100 = {
trigger = { has_trait = just }
save_scope_value_as = {
name = false_flag_type
value = flag:just
}
}
# cynical
100 = {
trigger = { has_trait = cynical }
save_scope_value_as = {
name = false_flag_type
value = flag:cynical
}
}
# zealous
100 = {
trigger = { has_trait = zealous }
save_scope_value_as = {
name = false_flag_type
value = flag:zealous
}
}
# paranoid
100 = {
trigger = { has_trait = paranoid }
save_scope_value_as = {
name = false_flag_type
value = flag:paranoid
}
}
# trusting
100 = {
trigger = { has_trait = trusting }
save_scope_value_as = {
name = false_flag_type
value = flag:trusting
}
}
# compassionate
100 = {
trigger = { has_trait = compassionate }
save_scope_value_as = {
name = false_flag_type
value = flag:compassionate
}
}
# callous
100 = {
trigger = { has_trait = callous }
save_scope_value_as = {
name = false_flag_type
value = flag:callous
}
}
# sadistic
100 = {
trigger = { has_trait = sadistic }
save_scope_value_as = {
name = false_flag_type
value = flag:sadistic
}
}
# stubborn
100 = {
trigger = { has_trait = stubborn }
save_scope_value_as = {
name = false_flag_type
value = flag:stubborn
}
}
# fickle
100 = {
trigger = { has_trait = fickle }
save_scope_value_as = {
name = false_flag_type
value = flag:fickle
}
}
# vengeful
100 = {
trigger = { has_trait = vengeful }
save_scope_value_as = {
name = false_flag_type
value = flag:vengeful
}
}
# forgiving
100 = {
trigger = { has_trait = forgiving }
save_scope_value_as = {
name = false_flag_type
value = flag:forgiving
}
}
# fallback_1
100 = {
save_scope_value_as = {
name = false_flag_type
value = flag:fallback_1
}
}
# fallback_2
100 = {
save_scope_value_as = {
name = false_flag_type
value = flag:fallback_2
}
}
# fallback_3
100 = {
save_scope_value_as = {
name = false_flag_type
value = flag:fallback_3
}
}
# fallback_4
100 = {
save_scope_value_as = {
name = false_flag_type
value = flag:fallback_4
}
}
# fallback_5
100 = {
save_scope_value_as = {
name = false_flag_type
value = flag:fallback_5
}
}
}
}
# Sort scopes for event options.
scope:actor = {
# If scope:actor has a nemesis, save them for loc.
if = {
limit = {
any_relation = {
type = nemesis
count >= 1
ep1_character_interaction_0001_valid_hostile_relation_trigger = yes
}
}
random_relation = {
type = nemesis
limit = { ep1_character_interaction_0001_valid_hostile_relation_trigger = yes }
save_scope_as = actor_nemesis
}
}
# If scope:actor has any valid rivals, pick a random one for option B.
if = {
limit = {
any_relation = {
type = rival
count >= 1
ep1_character_interaction_0001_valid_rival_trigger = yes
}
}
random_relation = {
type = rival
# Prefer rivals that are targets of hostile schemes.
limit = {
any_targeting_scheme = {
scheme_owner = scope:actor
is_hostile = yes
}
ep1_character_interaction_0001_valid_rival_trigger = yes
}
# Failing that, rivals who are targets of any schemes.
alternative_limit = {
any_targeting_scheme = {
scheme_owner = scope:actor
is_hostile = no
}
ep1_character_interaction_0001_valid_rival_trigger = yes
}
# Otherwise just any rando rival who could be schemed against.
alternative_limit = { ep1_character_interaction_0001_valid_rival_trigger = yes }
save_scope_as = actor_rival
}
}
}
}
# *Cackling* Oh yes, [actor_nemesis.GetFirstName] will never see this coming!
option = {
name = ep1_character_interaction.0001.a
trigger = { exists = scope:actor_nemesis }
# Quietly add scope:recipient as a courtier of scope:actor_nemesis.
ep1_character_interaction_0001_move_character_and_family_effect = { DESTINATION = scope:actor_nemesis }
stress_impact = {
patient = miniscule_stress_impact_loss
vengeful = minor_stress_impact_loss
impatient = medium_stress_impact_gain
trusting = major_stress_impact_gain
}
ai_chance = {
# If valid, this should always be the choice selected.
base = 100
}
}
# Excellent! Now, you will deliver yourself to [actor_rival.GetFirstNamePossessive] court...
option = {
name = ep1_character_interaction.0001.b
trigger = { exists = scope:actor_rival }
# Quietly add scope:recipient as a courtier of scope:actor_rival.
ep1_character_interaction_0001_move_character_and_family_effect = { DESTINATION = scope:actor_rival }
stress_impact = {
patient = miniscule_stress_impact_loss
vengeful = minor_stress_impact_loss
impatient = medium_stress_impact_gain
trusting = major_stress_impact_gain
}
ai_chance = {
# Never pick this option...
base = 0
# ... unless there's no nemesis, in which case it should be the default.
modifier = {
add = 100
NOT = { exists = scope:actor_rival }
}
}
}
# Now, begone till I have need of you.
option = {
name = ep1_character_interaction.0001.c
# Boot 'em out.
hidden_effect = {
scope:recipient = { select_and_move_to_pool_effect = yes }
}
show_as_tooltip = {
remove_courtier_or_guest = scope:recipient
}
stress_impact = {
shy = minor_stress_impact_loss
gregarious = minor_stress_impact_gain
}
ai_chance = {
# AI should never be taking this without a nemesis, but if they do, it doesn't matter where they send scope:recipient.
base = 0
}
}
# Naturally, you will stay where I can keep an eye on you.
option = {
name = ep1_character_interaction.0001.d
# Status quo: no extra changes here.
# No stress impact necessary for the fallback option.
ai_chance = {
# AI should never be taking this without a nemesis, but if they do, it doesn't matter where they send scope:recipient.
base = 0
}
}
}