518 lines
11 KiB
Text
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|