N3OW/common/character_interactions/00_blackmail_interactions.txt
2025-02-19 22:32:34 +00:00

518 lines
11 KiB
Text

blackmail_interaction = {
category = interaction_category_hostile
common_interaction = yes
interface = blackmail
popup_on_receive = yes
icon = secret
ai_maybe = yes
desc = blackmail_interaction_desc
on_decline_summary = blackmail_decline_summary
is_shown = {
scope:recipient = {
NOT = { this = scope:actor }
age > 10
}
scope:recipient = {
any_secret = {
is_known_by = scope:actor
}
}
}
is_valid_showing_failures_only = {
scope:recipient = {
is_busy_in_events_localised = yes
}
#Not at war with them
NOT = {
scope:actor = { is_at_war_with = scope:recipient }
}
#Already have a strong hook
custom_description = {
text = "already_strong_hook"
subject = scope:actor
object = scope:recipient
NOT = {
scope:actor = { has_strong_hook = scope:recipient }
}
}
#No appropriate secret
custom_description = {
scope:recipient = {
any_secret = {
is_blackmailable_secret_trigger = {
BLACKMAILER = scope:actor
PARTICIPANT = scope:recipient
}
}
}
text = "no_blackmailable_secret"
}
}
is_highlighted = {
scope:recipient = {
any_secret = {
is_known_by = scope:actor
is_blackmailable_secret_trigger = { BLACKMAILER = scope:actor PARTICIPANT = scope:recipient }
}
}
scope:actor = {
NOR = {
has_hook_of_type = {
target = scope:recipient
type = weak_blackmail_hook
}
has_hook_of_type = {
target = scope:recipient
type = strong_blackmail_hook
}
}
}
}
has_valid_target_showing_failures_only = {
exists = scope:target
scope:target = {
is_known_by = scope:actor
is_blackmailable_secret_trigger = { BLACKMAILER = scope:actor PARTICIPANT = scope:recipient }
}
}
can_send = {
custom_description = { # Exploit prevention
text = "has_sent_interaction_already"
subject = scope:recipient
scope:actor = {
NOT = { exists = var:currently_blackmailing }
}
}
}
on_send = {
hidden_effect = {
# Block sending another interaction while rejection event is active
scope:actor = {
set_variable = {
name = currently_blackmailing
value = scope:recipient
days = 30
}
}
scope:target = {
if = {
limit = {
exists = secret_target
}
secret_target = {
save_scope_as = secret_target
}
}
if = {
limit = {
secret_type = secret_disputed_heritage
}
secret_target.father = {
save_scope_as = father
}
secret_target.real_father = {
save_scope_as = real_father
}
}
if = {
limit = {
scope:target = {
secret_type = secret_disputed_heritage
}
}
secret_target.father = {
save_scope_as = father
}
secret_target.real_father = {
save_scope_as = real_father
}
}
}
}
}
on_accept = {
scope:actor = {
remove_variable = currently_blackmailing
play_music_cue = mx_cue_murder
}
blackmail_interaction_effect = yes #Adds strong or weak hook + opinion penalty
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = medium_unity_loss
DESC = clan_unity_blackmail.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
on_decline = {
#Return event about exposing the secret
#AI will always expose
if = {
limit = {
scope:actor = { is_ai = no }
}
scope:recipient = {
custom_tooltip = BLACKMAIL_INTERACTION_HUMAN_TT
}
}
show_as_tooltip = {
if = {
limit = { exists = scope:secret }
scope:secret = {
expose_secret = scope:actor
}
}
if = {
limit = { exists = scope:target }
scope:target = {
expose_secret = scope:actor
}
}
}
scope:actor = { trigger_event = blackmail.0001 }
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_loss
DESC = clan_unity_blackmail.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
on_blocked_effect = {
scope:actor = { remove_variable = currently_blackmailing }
}
ai_accept = {
base = 0
modifier = {
add = 80
desc = BLACKMAIL_INTERACTION_BASE_ACCEPTANCE
}
modifier = {
add = -20
scope:recipient = {
has_trait = brave
}
desc = BLACKMAIL_INTERACTION_BRAVE_ACCEPTANCE
}
modifier = {
add = -20
scope:recipient = {
has_trait = arrogant
}
desc = BLACKMAIL_INTERACTION_ARROGANT_ACCEPTANCE
}
modifier = {
add = 10
scope:recipient = {
has_trait = craven
}
desc = BLACKMAIL_INTERACTION_CRAVEN_ACCEPTANCE
}
modifier = {
add = 50
scope:recipient = {
has_trait = paranoid
}
desc = BLACKMAIL_INTERACTION_PARANOID_ACCEPTANCE
}
# Unity modifiers
evaluate_action_decreasing_house_unity = {
VALUE = 25
}
opinion_modifier = {
trigger = {
scope:recipient = {
opinion = {
target = scope:actor
value < 0
}
}
}
opinion_target = scope:recipient
who = scope:actor
multiplier = 0.3
desc = BLACKMAIL_INTERACTION_OPINION_ACCEPTANCE
}
modifier = {
add = -20
scope:recipient = {
has_opinion_modifier = {
target = scope:actor
modifier = trust_opinion
value < 0
}
}
desc = BLACKMAIL_INTERACTION_DISTRUST_ACCEPTANCE
}
modifier = {
add = 30
any_secret = {
is_known_by = scope:actor
is_criminal_for = scope:recipient
}
desc = BLACKMAIL_MAJOR_SECRET_ACCEPTANCE
}
modifier = {
add = intimidated_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
desc = COWED_REASON
}
}
ai_min_reply_days = 1
ai_max_reply_days = 5
notification_text = {
triggered_desc = {
trigger = {
scope:actor = {
opinion = {
target = scope:recipient
value > 0
}
}
}
desc = BLACKMAIL_NOTIFICATION_OPENING
}
first_valid = {
triggered_desc = {
trigger = { scope:target = { secret_type = secret_deviant } }
desc = BLACKMAIL_NOTIFICATION_SECRET_DEVIANT
}
triggered_desc = {
trigger = { scope:target = { secret_type = secret_homosexual } }
desc = BLACKMAIL_NOTIFICATION_SECRET_HOMOSEXUAL
}
triggered_desc = {
trigger = { scope:target = { secret_type = secret_murder } }
desc = BLACKMAIL_NOTIFICATION_SECRET_MURDER
}
triggered_desc = {
trigger = { scope:target = { secret_type = secret_murder_attempt } }
desc = BLACKMAIL_NOTIFICATION_SECRET_MURDER_ATTEMPT
}
triggered_desc = {
trigger = { scope:target = { secret_type = secret_cannibal } }
desc = BLACKMAIL_NOTIFICATION_SECRET_CANNIBAL
}
triggered_desc = {
trigger = { scope:target = { secret_type = secret_lover } }
desc = BLACKMAIL_NOTIFICATION_SECRET_LOVER
}
triggered_desc = {
trigger = { scope:target = { secret_type = secret_non_believer } }
desc = BLACKMAIL_NOTIFICATION_SECRET_NON_BELIEVER
}
triggered_desc = {
trigger = { scope:target = { secret_type = secret_incest } }
desc = BLACKMAIL_NOTIFICATION_SECRET_INCEST
}
triggered_desc = {
trigger = { scope:target = { secret_type = secret_witch } }
desc = BLACKMAIL_NOTIFICATION_SECRET_WITCH
}
triggered_desc = {
trigger = { scope:target = { secret_type = secret_crypto_religionist } }
desc = BLACKMAIL_NOTIFICATION_SECRET_CRYPTO_RELIGIONIST
}
triggered_desc = {
trigger = {
scope:target = {
secret_type = secret_disputed_heritage
secret_target.real_father = scope:actor
secret_target.mother = scope:recipient
}
}
desc = BLACKMAIL_NOTIFICATION_SECRET_ILLEGITIMATE_CHILD_ACTOR
}
triggered_desc = {
trigger = {
scope:target = {
secret_type = secret_disputed_heritage
secret_target.mother = scope:recipient
}
}
desc = BLACKMAIL_NOTIFICATION_SECRET_ILLEGITIMATE_CHILD_OTHER
}
triggered_desc = {
trigger = {
scope:target = {
secret_type = secret_disputed_heritage
secret_target.real_father = scope:actor
secret_target = {
OR = {
this = scope:recipient
is_twin_of = scope:recipient
}
}
}
}
desc = BLACKMAIL_NOTIFICATION_SECRET_ILLEGITIMATE_CHILD_TARGET_ACTOR
}
triggered_desc = {
trigger = {
scope:target = {
secret_type = secret_disputed_heritage
secret_target = {
OR = {
this = scope:recipient
is_twin_of = scope:recipient
}
}
}
}
desc = BLACKMAIL_NOTIFICATION_SECRET_ILLEGITIMATE_CHILD_TARGET_OTHER
}
triggered_desc = {
trigger = {
scope:target = {
secret_type = secret_unmarried_illegitimate_child
secret_target.real_father = scope:actor
secret_target.mother = scope:recipient
}
}
desc = BLACKMAIL_NOTIFICATION_SECRET_UNMARRIED_ILLEGITIMATE_CHILD_ACTOR
}
triggered_desc = {
trigger = {
scope:target = {
secret_type = secret_unmarried_illegitimate_child
secret_target.mother = scope:recipient
}
}
desc = BLACKMAIL_NOTIFICATION_SECRET_UNMARRIED_ILLEGITIMATE_CHILD_OTHER
}
triggered_desc = {
trigger = {
scope:target = {
secret_type = secret_unmarried_illegitimate_child
secret_target.real_father = scope:actor
secret_target = {
OR = {
this = scope:recipient
is_twin_of = scope:recipient
}
}
}
}
desc = BLACKMAIL_NOTIFICATION_SECRET_UNMARRIED_ILLEGITIMATE_CHILD_TARGET_ACTOR
}
triggered_desc = {
trigger = {
scope:target = {
secret_type = secret_unmarried_illegitimate_child
secret_target = {
OR = {
this = scope:recipient
is_twin_of = scope:recipient
}
}
}
}
desc = BLACKMAIL_NOTIFICATION_SECRET_UNMARRIED_ILLEGITIMATE_CHILD_TARGET_OTHER
}
desc = BLACKMAIL_NOTIFICATION_SECRET_FALLBACK
}
desc = BLACKMAIL_NOTIFICATION_THREAT
}
# AI
ai_targets = {
ai_recipients = known_secrets
}
ai_target_quick_trigger = {
adult = yes
}
ai_frequency = 6
ai_will_do = {
base = 100
# Unity modifiers
evaluate_action_decreasing_house_unity = {
VALUE = 100
}
modifier = {
factor = 0
scope:actor.ai_honor >= 75
}
modifier = {
factor = 0.1
scope:actor.ai_honor >= 30
}
modifier = {
factor = 0
scope:actor.ai_honor >= -30
scope:recipient = {
has_relation_lover = scope:actor
}
}
modifier = {
factor = 0
scope:recipient = {
OR = {
has_relation_friend = scope:actor
has_relation_best_friend = scope:actor
has_relation_soulmate = scope:actor
}
}
}
}
ai_set_target = {
scope:recipient = {
random_secret = {
limit = {
is_known_by = scope:actor
is_blackmailable_secret_trigger = { BLACKMAILER = scope:actor PARTICIPANT = scope:recipient }
}
save_scope_as = target
}
}
}
}