N3OW_Western_eastern_europe/common/character_interactions/00_prison_interactions.txt

8286 lines
186 KiB
Text

imprison_interaction = {
interface_priority = 120
common_interaction = yes
icon = prison
category = interaction_category_hostile
highlighted_reason = {
triggered_desc = {
trigger = {
scope:actor = {
has_title = title:e_minister_of_justice
NOT = { has_imprisonment_reason = scope:recipient }
}
}
desc = HIGHLIGHTED_MINISTER_IMPRISONMENT_REASON
}
triggered_desc = {
trigger = {
scope:actor = {
has_imprisonment_reason = scope:recipient
}
}
desc = HIGHLIGHTED_HAS_IMPRISONMENT_REASON
}
}
ai_maybe = yes
ai_min_reply_days = 4
ai_max_reply_days = 9
can_send_despite_rejection = yes
popup_on_receive = yes
pause_on_receive = yes
desc = imprison_interaction_desc
greeting = negative
notification_text = REQUEST_ARREST_NOTIFICATION_TEXT
pre_answer_maybe_key = ANSWER_MIGHT_SUCCEED
pre_answer_no_key = ANSWER_CANT_SUCCEED
pre_answer_yes_key = ANSWER_WILL_SUCCEED
pre_answer_maybe_breakdown_key = ANSWER_SUM_CHANCE
on_decline_summary = {
triggered_desc = {
trigger = {
scope:recipient = {
NOR = {
AND = {
has_government = landless_adventurer_government
reverse_has_opinion_modifier = {
target = scope:actor
modifier = eviction_ignored_opinion
}
}
scope:actor = {
has_title = title:e_minister_of_justice
}
scope:recipient = {
is_landed = no
any_held_title = {
is_noble_family_title = yes
}
}
}
}
}
desc = imprison_decline_summary
}
}
ai_potential = {
trigger_if = {
limit = { has_realm_law_flag = imprisonment_toggle_enable }
has_realm_law_flag = imprisonment_toggle_on
}
is_imprisoned = no
}
is_shown = {
scope:actor != scope:recipient
scope:actor = {
OR = {
AND = {
has_title = title:e_minister_of_justice
scope:recipient = {
tgp_is_any_minister = no
liege = {
basic_allowed_to_imprison_character_trigger = {
CHARACTER = scope:recipient
}
}
}
}
basic_allowed_to_imprison_character_trigger = {
CHARACTER = scope:recipient
}
}
}
# Scope:recipient can't be visiting elsewhere.
trigger_if = {
limit = {
scope:recipient = { is_courtier_of = scope:actor }
}
NOT = {
scope:recipient.host = {
any_foreign_court_guest = { this = scope:recipient }
}
}
}
}
is_valid_showing_failures_only = {
scope:actor = {
trigger_if = {
limit = {
has_title = title:e_minister_of_justice
scope:recipient = {
tgp_is_any_minister = no
}
NOT = {
allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient }
}
}
top_liege = {
allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient }
}
}
trigger_else = {
allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient }
}
trigger_if = {
limit = {
government_has_flag = government_is_nomadic
}
NOT = { has_realm_law = nomadic_authority_1 }
}
trigger_if = {
limit = {
has_title = title:e_minister_of_justice
}
scope:recipient = {
NOT = {
is_close_or_extended_family_of = scope:actor.top_liege
}
}
}
}
imprison_neutral_is_valid_showing_failures_only_triggers_trigger = yes
custom_tooltip = {
text = cannot_take_overt_hostile_actions_against_diarch.tt
NOT = { scope:recipient ?= scope:actor.diarch }
}
}
can_send = {
scope:actor = {
custom_description = {
text = "character_interactions_hostile_actions_disabled_delay"
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
}
trigger_if = {
limit = {
is_ai = no
}
scope:recipient = {
trigger_if = {
limit = {
has_government = landless_adventurer_government
reverse_has_opinion_modifier = {
target = scope:actor
modifier = eviction_ignored_opinion
}
}
is_travelling = no
}
}
}
trigger_else = {
OR = {
has_imprisonment_reason = scope:recipient
any_character_struggle = {
involvement = involved
}
}
}
}
}
is_highlighted = {
scope:recipient = {
is_imprisoned = no
}
scope:actor = {
OR = {
has_imprisonment_reason = scope:recipient
has_title = title:e_minister_of_justice
}
}
}
#Use hook
send_option = {
is_valid = {
exists = scope:recipient
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = SCHEME_HOOK
}
should_use_extra_icon = {
scope:actor = { has_usable_hook = scope:recipient }
}
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
send_options_exclusive = no
cost = {
# Usually, this action is free, but during certain diarchies, we want it to cost.
prestige = liege_diarchy_surcharge_interaction_imprison_interaction_value
treasury = {
if = {
limit = {
scope:actor = {
has_title = title:e_minister_of_justice
}
scope:recipient = {
NOT = { is_courtier_of = scope:actor }
}
}
value = {
value = 0
desc = BASE
}
add = {
value = scope:actor.major_treasury_value
desc = IMPRISON_MINISTER_OF_JUSTICE_TREASURY_COST
}
}
}
}
on_send = {
scope:actor = {
add_character_flag = {
flag = flag_hostile_actions_disabled_delay
days = 10
}
}
}
on_auto_accept = {
# the rest of the necessary logic is covered by auto_accept also triggering on_accept below
scope:recipient = {
trigger_event = char_interaction.0233
}
}
on_accept = {
scope:actor = {
if = {
limit = {
has_title = title:e_minister_of_justice
}
if = {
limit = {
NOR = {
has_imprisonment_reason = scope:recipient
scope:recipient.liege = {
has_imprisonment_reason = scope:recipient
}
scope:hook = yes
}
any_character_situation = {
situation_type = dynastic_cycle
situation_top_has_catalyst = catalyst_minister_imprison
}
}
save_scope_value_as = {
name = use_strife_not_tyranny
value = yes
}
situation:dynastic_cycle = {
trigger_situation_catalyst = {
catalyst = catalyst_minister_imprison
character = scope:recipient
}
}
}
if = {
limit = {
government_allows = merit
}
change_merit = {
value = minor_merit_gain
multiply = scope:recipient.highest_held_title_tier
}
}
if = {
limit = {
government_has_flag = government_has_influence
}
change_influence = {
value = minor_influence_gain
multiply = scope:recipient.highest_held_title_tier
}
}
scope:recipient.liege = {
if = {
limit = { has_imprisonment_reason = scope:recipient }
consume_imprisonment_reasons = scope:recipient
}
}
}
}
if = {
limit = { scope:hook = yes }
scope:actor = { use_hook = scope:recipient }
}
illegal_imprisonment_dread_effect = yes
imprison_court_chaplain_consequences_effect = yes
imprison_HoF_consequences_effect = yes
scope:recipient = {
if = {
limit = {
is_a_faction_member = yes
liege = scope:actor
}
joined_faction = { save_scope_as = retaliating_faction }
}
}
imprison_character_effect = {
TARGET = scope:recipient
IMPRISONER = scope:actor
}
# If they recently revoked your title, or asked for your excommunication, they become your rival
imprison_attempt_escalates_rivalry_effect = yes
scope:actor = {
trigger_event = char_interaction.0231
if = {
limit = {
has_imprisonment_reason = scope:recipient
}
stress_impact = {
compassionate = minor_stress_impact_gain
forgiving = minor_stress_impact_gain
}
}
else = {
stress_impact = {
just = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
if = {
limit = { exists = scope:retaliating_faction}
scope:retaliating_faction = {
imprisonment_retribution_start_faction_war_if_valid = yes
}
}
}
}
if = {
limit = {
scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay }
}
scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay }
}
# If we're a clan this interaction affects unity
if = { # If you don't have an imprisonment reason, and the target is landed, you lose more unity
limit = {
NOT = { scope:actor = { has_imprisonment_reason = scope:recipient } }
scope:recipient = { is_landed_or_landless_administrative = yes }
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = major_unity_loss
DESC = clan_unity_imprison.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
else_if = { # If you don't have an imprisonment reason, and the target is unlanded, you lose slightly less unity
limit = {
NOT = { scope:actor = { has_imprisonment_reason = scope:recipient } }
scope:recipient = { is_landed_or_landless_administrative = no }
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = medium_unity_loss
DESC = clan_unity_imprison.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
else = { # If you have a valid reason, you lose only a tiny bit of unity (criminal or not, they are still family)
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_loss
DESC = clan_unity_imprison.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
# Harrying logic.
scope:actor = {
if = {
limit = {
character_is_valid_for_harrying_of_the_north_trigger = yes
scope:recipient = {
character_is_valid_for_harrying_of_the_north_trigger = yes
is_important_or_vip_struggle_character = yes
}
culture != scope:recipient.culture
}
global_var:harrying_of_the_north = { save_scope_as = story }
if = {
limit = {
character_is_valid_norman_for_harrying_of_the_north_trigger = yes
scope:recipient = { character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes }
}
ep3_increase_pacification_effect = { AMOUNT = harrying_minor_increase_value }
}
else_if = {
limit = {
character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes
scope:recipient = { character_is_valid_norman_for_harrying_of_the_north_trigger = yes }
}
ep3_increase_resistance_effect = { AMOUNT = harrying_minor_increase_value }
}
}
}
}
on_decline = {
if = {
limit = {
scope:recipient = {
has_government = landless_adventurer_government
reverse_has_opinion_modifier = {
target = scope:actor
modifier = eviction_ignored_opinion
}
}
}
scope:recipient = {
if = {
limit = { current_military_strength >= ep3_interactions_events_0500_troops_count_value }
start_war = {
cb = ep3_laamp_apprehend_adventurer_cb
target = scope:actor
}
}
else = {
# Remove them immediately.
remove_laamp_from_exiled_county_automatically_effect = {
PROVINCE = scope:recipient.location
LAAMP = scope:recipient
}
}
}
}
else = {
scope:actor = {
imprison_HoF_consequences_effect = yes
imprison_tyranny_effect = yes
}
scope:recipient = {
#If target is count or higher, start war.
if = {
limit = {
is_playable_character = yes
primary_title.tier > tier_barony
}
if = {
limit = {
is_a_faction_member = yes
liege = scope:actor
joined_faction = {
faction_target = scope:actor
NOT = { faction_is_type = populist_faction }
}
}
joined_faction = {
save_scope_as = retaliating_faction # For loc
imprisonment_retribution_start_faction_war_if_valid = yes
}
hidden_effect = {
if = {
limit = { NOT = { exists = joined_faction.faction_war } }
war_for_imprison_effect = yes
}
}
}
else = {
war_for_imprison_effect = yes
}
}
#If target is a baron or unlanded, have them escape.
else = {
if = { #To block them from being instantly rehired
limit = {
is_councillor_of = scope:actor
can_be_fired_from_council_trigger = { COURT_OWNER = scope:actor }
}
set_variable = {
name = escaped_imprisonment_from
value = scope:actor
years = 20
}
}
imprison_court_chaplain_consequences_effect = yes
if = {
limit = {
is_landed_or_landless_administrative = yes
}
depose_effect = { DEPOSER = scope:actor }
}
else_if = {
limit = {
is_hostage = yes
warden = scope:actor
}
save_scope_as = imprison_failure
save_scope_as = hostage
warden = { save_scope_as = warden }
home_court = { save_scope_as = home_court }
scope:warden = { trigger_event = bp2_hostage_system.0400 }
scope:home_court = { trigger_event = bp2_hostage_system.0401 }
return_hostage = yes
}
else_if = {
limit = {
is_landed_or_landless_administrative = no
trigger_if = {
limit = {
is_councillor = yes
}
can_be_fired_from_council_trigger = { COURT_OWNER = scope:recipient.liege }
}
trigger_if = {
limit = {
exists = scope:actor.faith.religious_head
}
scope:actor.faith.religious_head != scope:recipient
}
}
select_and_move_to_pool_effect = yes
}
add_opinion = {
target = scope:actor
modifier = attempted_imprisonment_opinion
}
}
}
if = {
limit = {
scope:actor = { has_realm_law_flag = vassal_refusal_is_treason }
}
scope:actor = {
add_opinion = {
target = scope:recipient
modifier = treasonous_imprison_refusal
}
}
}
}
#Remove them as guardian/ward for any courtier (feedback given in char_interaction.0230)
scope:actor = {
if = {
limit = {
any_courtier = {
has_relation_guardian = scope:recipient
}
}
every_courtier = {
limit = {
has_relation_guardian = scope:recipient
}
save_scope_as = ward
scope:recipient = { remove_relation_ward = scope:ward }
scope:ward = {
if = {
limit = {
host != liege
}
return_to_court = yes
}
guardian_remove_opinion_effect = {
GUARDIAN = scope:recipient
WARD = this
WARD_LIEGE = scope:actor
}
}
add_to_list = ward_children
}
}
if = {
limit = {
any_courtier = {
has_relation_ward = scope:recipient
}
}
random_courtier = {
limit = {
has_relation_ward = scope:recipient
}
save_scope_as = guardian
scope:guardian = { remove_relation_ward = scope:recipient }
scope:guardian = {
if = {
limit = {
host != liege
}
return_to_court = yes
}
guardian_remove_opinion_effect = {
GUARDIAN = this
WARD = scope:recipient
WARD_LIEGE = scope:actor
}
}
add_to_list = guardian_list
}
hidden_effect = {
scope:guardian = {
send_interface_message = {
type = event_childhood_neutral
title = remove_guardian_interaction_notification
left_icon = scope:recipient
right_icon = scope:guardian
remove_guardian_effect = {
GUARDIAN = scope:guardian
WARD = scope:recipient
RETURN_WARD = yes
HIDE_OPINION = no
}
}
}
}
}
}
scope:actor = {
if = {
limit = {
scope:recipient = {
OR = {
is_playable_character = no
AND = {
is_playable_character = yes
primary_title.tier = tier_barony
}
}
}
}
trigger_event = char_interaction.0230
}
}
if = {
limit = {
scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay }
}
scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay }
}
# If we're a clan this interaction affects unity
if = { # If you don't have an imprisonment reason, and the target is landed, you lose more unity
limit = {
NOT = {
scope:actor = { has_imprisonment_reason = scope:recipient }
}
scope:recipient = { is_landed_or_landless_administrative = yes }
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = major_unity_loss
DESC = clan_unity_imprison.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
else_if = { # If you don't have an imprisonment reason, and the target is unlanded, you lose slightly less unity
limit = {
NOT = {
scope:actor = { has_imprisonment_reason = scope:recipient }
}
scope:recipient = { is_landed_or_landless_administrative = no }
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = medium_unity_loss
DESC = clan_unity_imprison.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
else = { # If you have a valid reason, you lose only a tiny bit of unity (criminal or not, they are still family)
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = miniscule_unity_loss
DESC = clan_unity_imprison.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
}
auto_accept = {
# OR does not display properly here
trigger_if = {
limit = {
scope:actor = {
has_title = title:e_minister_of_justice
}
}
custom_description = {
text = you_are_the_minister_of_justice
scope:actor = {
has_title = title:e_minister_of_justice
}
}
}
trigger_else_if = {
limit = {
scope:recipient = {
is_landed = no
any_held_title = {
is_noble_family_title = yes
}
}
}
custom_description = {
text = noble_family_head_cannot_refuse_your_power
scope:recipient = {
is_landed = no
any_held_title = {
is_noble_family_title = yes
}
}
}
}
trigger_else = {
always = no
}
}
ai_accept = {
base = 0 # Try to make it 0 for most interactions
modifier = {
add = {
value = scope:actor.intrigue
multiply = 1
}
desc = IMPRISON_INTRIGUE_ACTOR
}
modifier = {
add = {
value = scope:recipient.intrigue
multiply = -2
}
desc = IMPRISON_INTRIGUE_RECIPIENT
}
modifier = {
add = 30
scope:hook = yes
desc = SCHEME_HOOK_USED
}
opinion_modifier = { # Opinion Factor
who = scope:recipient
opinion_target = scope:actor
multiplier = 0.5
desc = AI_OPINION_REASON
}
ai_value_modifier = {
who = scope:recipient
ai_boldness = {
if = {
limit = {
scope:recipient = { NOT = { ai_boldness = 0 } }
}
value = -0.5
}
}
ai_honor = {
if = {
limit = {
scope:recipient = { #If AI is honorable and the law compels to obey the liege, AI will be more likely to obey.
ai_honor > 0
}
scope:actor = {
has_imprisonment_reason = scope:recipient
has_realm_law_flag = vassal_refusal_is_treason
}
}
value = 0.75
}
}
}
modifier = {
add = 20
scope:actor = {
any_vassal_or_below = { this = scope:recipient }
has_realm_law_flag = vassal_refusal_is_treason
}
desc = AI_REFUSAL_IS_TREASON
}
modifier = {
add = 50
scope:actor = {
has_perk = prison_feudal_complex_perk
}
desc = AI_PRISON_FEUDAL_COMPLEX_PERK
}
modifier = { #I am a King!
desc = offer_vassalization_interaction_aibehavior_hightier_tt
scope:recipient = { highest_held_title_tier = tier_kingdom }
add = -40
}
modifier = { #Courtiers.
desc = AI_REFUSAL_COURTIER
scope:recipient = { is_ruler = no }
add = 50
}
modifier = { # Your young children can't really stop you
desc = AI_REFUSAL_YOUNG_CHILD
scope:recipient = {
is_child_of = scope:actor
is_courtier_of = scope:actor
is_adult = no
}
add = 200
}
modifier = { #They're a claimant against you
desc = AI_CLAIMANT_PENALTY
scope:actor = {
OR = {
any_targeting_faction = {
faction_type = claimant_faction
faction_is_at_war = yes
special_character ?= scope:recipient
}
AND = {
exists = var:claimant_faction_sent_demand
var:claimant_faction_sent_demand = scope:recipient
}
}
}
add = -70
}
modifier = { #Rank difference.
desc = AI_REFUSAL_RANK_DIFFERENCE
scope:recipient = {
is_ruler = yes
is_landed = yes
highest_held_title_tier < tier_kingdom
}
add = {
value = -15
if = {
limit = {
scope:actor = {
tier_difference = {
target = scope:recipient
value >= 2
}
}
}
add = 5
}
if = {
limit = {
scope:actor = {
tier_difference = {
target = scope:recipient
value >= 3
}
}
}
add = 5
}
if = { #King asking Baron, modifier becomes positive.
limit = {
scope:actor = {
tier_difference = {
target = scope:recipient
value >= 4
}
}
}
add = 10
}
}
}
modifier = {
add = intimidated_halved_reason_value
scope:recipient = {
target_is_liege_or_above = scope:actor
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_halved_reason_value
scope:recipient = {
target_is_liege_or_above = scope:actor
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
desc = COWED_REASON
}
modifier = {
add = intimidated_external_reason_value
scope:recipient = {
NOT = { target_is_liege_or_above = scope:actor }
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_external_reason_value
scope:recipient = {
NOT = { target_is_liege_or_above = scope:actor }
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
desc = COWED_REASON
}
modifier = { #Comparative military strength.
desc = offer_vassalization_interaction_aibehavior_power_tt
trigger = {
scope:actor = { is_ruler = yes }
scope:recipient = { is_ruler = yes }
}
add = {
value = 1
subtract = {
value = scope:recipient.current_military_strength
divide = { value = scope:actor.current_military_strength min = 1 }
}
multiply = 100
min = -1000
# This max needs to match the loc in offer_vassalization_interaction_aibehavior_power_tt
max = 20
}
}
modifier = { #Rivalry modifier.
desc = offer_vassalization_interaction_aibehavior_rival_tt
trigger = {
scope:recipient = {
has_relation_rival = scope:actor
NOT = { has_relation_nemesis = scope:actor }
}
}
add = -50
}
modifier = { #Nemesis modifier.
desc = offer_vassalization_interaction_aibehavior_nemesis_tt
trigger = {
scope:recipient = {
has_relation_nemesis = scope:actor
}
}
add = -100
}
modifier = {
add = 10
scope:actor = {
has_royal_court = yes
has_dlc_feature = royal_court
is_liege_or_above_of = scope:recipient
court_grandeur_current_level >= 7
court_grandeur_current_level < 9
}
desc = GRANDEUR_REASON
}
modifier = {
add = 20
scope:actor = {
has_royal_court = yes
has_dlc_feature = royal_court
is_liege_or_above_of = scope:recipient
court_grandeur_current_level >= 9
}
desc = GRANDEUR_REASON
}
modifier = { # Legalistic tradition
desc = tradition_legalistic_name
scope:actor = {
has_imprisonment_reason = scope:recipient
culture = { has_cultural_parameter = vassals_more_likely_accept_punishments }
}
add = legalistic_vassal_punishment_acceptance
}
modifier = { # AI Mongols, tyranny wars just delay the inevitable fun!
scope:actor = {
is_ai = yes
OR = {
has_trait = greatest_of_khans
has_character_modifier = the_great_khan_modifier
}
}
scope:recipient = {
is_ai = yes
}
add = 500
}
# Thug accolade increases imprison chance because they scary
modifier = {
scope:actor = {
any_active_accolade = {
accolade_parameter = accolade_imprisonment_chance
}
}
desc = THUG_REASON
add = accolade_imprisonment_chance_value
}
modifier = {
scope:actor = {
any_active_accolade = {
accolade_parameter = accolade_imprisonment_chance_high
}
}
desc = THUG_REASON_HIGH
add = accolade_imprisonment_chance_value_high
}
evaluate_action_decreasing_house_unity = {
VALUE = 100
}
modifier = {
add = -25
scope:recipient = {
culture = { has_cultural_parameter = vassals_more_likely_to_refuse_demands }
}
desc = VASSALS_REFUSAL_indomitable_azatani
}
modifier = {
add = 10
scope:recipient = { has_character_modifier = ach_intent_imprisonment_modifier }
desc = ach_host_intent_imprison_reason
}
}
# AI
ai_targets = {
ai_recipients = vassals
chance = 0.5
}
ai_targets = {
ai_recipients = courtiers
chance = 0.25
}
ai_frequency_by_tier = {
barony = 0
county = 36
duchy = 10
kingdom = 10
empire = 10
hegemony = 10
}
ai_will_do = {
base = -100
modifier = { # Make sure the AI uses hooks for this as it's % based
scope:hook = yes
add = 1
}
modifier = { # Default imprisonment reason weight
add = 200
scope:actor = {
has_imprisonment_reason = scope:recipient
}
}
modifier = { # More likely to imprison criminal Soryo's if Ritsuryo
add = 200
scope:actor = {
has_imprisonment_reason = scope:recipient
government_has_flag = government_is_japan_administrative
}
scope:recipient = {
government_has_flag = government_is_japan_feudal
}
}
modifier = { # Even more imprisonment reason if you are a danger to the Kampaku
add = 400
scope:actor = {
primary_title = title:e_japan
has_imprisonment_reason = scope:recipient
}
scope:recipient = {
exists = house.house_confederation
house.house_confederation.combined_military_strength > scope:actor.current_military_strength
}
}
modifier = { # Avoid Tyranny wars at inopportune times
add = -190
scope:actor = {
ai_rationality > -100 # Lunatics can do whatever, let the world burn...
is_at_war = yes
}
scope:recipient = {
is_playable_character = yes
}
}
modifier = { # Avoid imprisonments in certain circumstances
add = -190
scope:actor = {
ai_rationality > -100 # Lunatics can do whatever, let the world burn...
NOR = {
AND = {
intrigue > scope:recipient.intrigue
intrigue >= 12
}
has_perk = prison_feudal_complex_perk
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level >= 1
}
}
culture = { has_cultural_parameter = vassals_more_likely_accept_punishments }
current_military_strength >= scope:recipient.twice_current_military_strength
scope:recipient.ai_boldness <= -100
}
}
scope:recipient = {
is_playable_character = yes
}
}
modifier = { # If the AI is not very bold, avoid imprisoning people unless you're more powerful
add = -190
scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn...
scope:actor.ai_boldness <= 25
scope:actor.current_military_strength < scope:recipient.one_and_a_half_times_current_military_strength
}
modifier = { # Avoid imprisoning people that would destroy you
add = -190
scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn...
scope:actor.current_military_strength < scope:recipient.current_military_strength
}
modifier = { # Do not imprison when the chance of success if exceedingly low
add = -190
scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn...
scope:recipient = {
is_playable_character = yes
}
NOT = {
scope:recipient = {
highest_held_title_tier = tier_barony
}
}
scope:actor = {
gold < minimum_ai_gold_value_for_tyranny_wars
}
}
modifier = { # Don't imprison people you like
scope:actor = {
NOT = {
has_trait = sadistic
}
OR = {
has_secret_relation_lover = scope:recipient
has_relation_lover = scope:recipient
has_relation_soulmate = scope:recipient
has_relation_friend = scope:recipient
has_relation_best_friend = scope:recipient
opinion = {
target = scope:recipient
value > very_high_positive_opinion
}
}
}
add = -1000
}
modifier = { # Don't imprison your own children... unless they're your rival/nemesis
scope:recipient = {
is_child_of = scope:actor
NOR = {
has_relation_rival = scope:actor
has_relation_nemesis = scope:actor
}
}
add = -1000
}
modifier = { # Don't imprison your spouse, unless they're your rival/have cheated on you
scope:recipient = {
is_spouse_of = scope:actor
NOR = {
has_relation_rival = scope:actor
has_relation_nemesis = scope:actor
exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor }
}
}
add = -1000
}
modifier = { # Try to avoid pointless imprisonments
scope:recipient = {
NOR = {
scope:actor = { # Sadists want people to torture
has_trait = sadistic
}
AND = { # Imprisoning vassals you have revoke reasons on is relevant
is_playable_character = yes
scope:actor = { has_revoke_title_reason = scope:recipient }
}
is_a_faction_member = yes
has_relation_rival = scope:actor
has_relation_nemesis = scope:actor
exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor }
scope:actor = { # Scheme Agents should be imprisoned indiscriminately
any_targeting_scheme = {
hostile_scheme_trigger = yes
is_scheme_agent_exposed = scope:recipient
}
}
AND = { # Zealots will imprison characters of other faiths
scope:actor.ai_zeal >= medium_positive_ai_value
scope:actor.faith != scope:recipient.faith
}
scope:actor = {
has_opinion_modifier = {
modifier = murdered_close_family_crime
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = attempted_murder_close_family_crime
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = executed_close_family
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = slept_with_spouse_discovered_opinion
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = slept_with_spouse_exposed_opinion
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = unfaithful_spouse_discovered_opinion
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = unfaithful_spouse_exposed_opinion
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = refused_to_renounce_lover_opinion
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = betrayed_our_promise
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = botched_my_treatment_crime_opinion
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = botched_treatment_of_kin_crime_opinion
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = smeared_opinion
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = insulted_opinion
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = mocked_me_in_time_of_need
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = loved_one_dungeon_death
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = abandoned_me_opinion
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = reason_child_died
target = scope:recipient
}
}
scope:actor = {
has_opinion_modifier = {
modifier = falsely_accused
target = scope:recipient
}
}
}
}
add = -1000
}
modifier = {
exists = scope:recipient.primary_title
add = scope:recipient.primary_title.tier
}
# Agenda impact
modifier = {
scope:recipient = {
is_important_or_vip_struggle_character = yes
any_character_struggle = {
involvement = involved
}
}
add = {
value = 0
if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_imprison_important
}
has_character_flag = agenda_towards_escalation
}
}
add = 200
}
else_if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_imprison_important
}
}
}
add = -100
}
}
}
modifier = {
scope:recipient = {
has_trait = fp3_struggle_supporter
any_character_struggle = {
involvement = involved
}
}
add = {
value = 0
if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_imprison_supporter
}
has_trait = fp3_struggle_detractor
}
}
add = 200
}
else_if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_imprison_supporter
}
}
}
add = -100
}
}
}
modifier = {
scope:recipient = {
has_trait = fp3_struggle_detractor
any_character_struggle = {
involvement = involved
}
}
add = {
value = 0
if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_imprison_detractor
}
has_trait = fp3_struggle_supporter
}
}
add = 200
}
else_if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_imprison_detractor
}
}
}
add = -100
}
}
}
# TGP Be more careful with blocs generally
house_bloc_tyranny_war_modifiers = yes
modifier = { # Avoid triggering Tyranny wars mid-grand activity
factor = 0
scope:actor = {
has_ongoing_grand_activity_trigger = yes
}
scope:recipient = {
highest_held_title_tier >= tier_county
}
}
evaluate_action_decreasing_house_unity = {
VALUE = 100
}
}
}
move_to_dungeon_interaction = {
interface_priority = 30
category = interaction_category_prison
desc = move_to_dungeon_interaction_desc
icon = prison
is_shown = {
scope:actor = {
is_landless_ruler = no
}
scope:recipient = {
is_imprisoned_by = scope:actor
is_in_prison_type = house_arrest
}
}
is_valid_showing_failures_only = {
scope:recipient = {
custom_description = {
text = "currently_being_tortured"
NOT = { has_character_flag = is_being_tortured }
}
}
tgp_blocked_action_against_tenno_trigger = {
ACTOR = scope:actor
TARGET = scope:recipient
}
custom_tooltip = {
text = is_currently_being_purged_tt
scope:recipient = {
NOT = {
has_character_flag = is_currently_being_purged
}
}
}
}
on_accept = {
if = {
limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } }
scope:recipient = { remove_character_modifier = allowed_to_go_outside }
}
scope:recipient = {
hidden_effect = {
change_prison_type = dungeon
}
trigger_event = prison_notification.1001
custom_tooltip = MOVE_PRISONER_TO_DUNGEON
scope:recipient = {
every_close_or_extended_family_member = {
custom = all_family_members
limit = {
scope:actor != this
}
add_opinion = {
modifier = family_moved_to_dungeon_opinion
target = scope:actor
}
}
}
}
scope:actor = {
stress_impact = {
compassionate = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
}
hidden_effect = {
send_interface_message = {
type = event_prison_neutral
title = msg_move_prisoner_to_dungeon
right_icon = scope:recipient
custom_tooltip = MOVE_PRISONER_TO_DUNGEON
}
}
}
# 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_move_to_dungeon.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
auto_accept = yes
# AI
ai_targets = {
ai_recipients = prisoners
}
ai_frequency_by_tier = {
barony = 0
county = 48
duchy = 12
kingdom = 12
empire = 12
hegemony = 12
}
ai_potential = {
always = yes
}
ai_will_do = {
base = 0
modifier = {
add = 100
scope:actor.ai_compassion < medium_positive_ai_value
scope:actor = {
opinion = {
target = scope:recipient
value <= high_negative_opinion
}
}
}
modifier = { # Family Feud
add = 25
trigger = {
scope:actor = {
house_has_feud_relation_with_trigger = { TARGET = scope:recipient }
}
}
desc = INTERACTION_FAMILY_FEUD_REASON
}
}
}
move_to_house_arrest_interaction = {
interface_priority = 30
category = interaction_category_prison
desc = move_to_house_arrest_interaction_desc
icon = prison
is_shown = {
scope:actor = {
is_landless_ruler = no
}
scope:recipient = {
is_imprisoned_by = scope:actor
is_in_prison_type = dungeon
}
}
is_valid_showing_failures_only = {
scope:recipient = {
custom_description = {
text = "currently_being_tortured"
NOT = { has_character_flag = is_being_tortured }
}
}
custom_tooltip = {
text = is_currently_being_purged_tt
scope:recipient = {
NOT = {
has_character_flag = is_currently_being_purged
}
}
}
}
on_accept = {
if = {
limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } }
scope:recipient = { remove_character_modifier = allowed_to_go_outside }
}
if = {
limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } }
scope:recipient = { remove_character_modifier = moldy_gruel_diet }
}
scope:recipient = {
hidden_effect = {
change_prison_type = house_arrest
trigger_event = prison_notification.1002
}
custom_tooltip = MOVE_PRISONER_TO_HOUSE_ARREST
scope:recipient = {
every_close_or_extended_family_member = {
custom = all_family_members
limit = {
scope:actor != this
}
add_opinion = {
modifier = moved_to_house_arrest_opinion
target = scope:actor
}
}
}
}
scope:actor = {
stress_impact = {
sadistic = medium_stress_impact_gain
vengeful = medium_stress_impact_gain
}
hidden_effect = {
send_interface_message = {
type = event_prison_neutral
title = msg_move_prisoner_to_house_arrest
right_icon = scope:recipient
custom_tooltip = MOVE_PRISONER_TO_HOUSE_ARREST
}
}
}
}
auto_accept = yes
}
ransom_interaction = {
interface_priority = 50
common_interaction = no
use_diplomatic_range = no
category = interaction_category_prison
special_interaction = ransom_interaction
icon = icon_gold
redirect = {
scope:recipient = {
save_scope_as = secondary_recipient
if = {
limit = {
is_ruler = no
exists = liege
}
liege = {
save_scope_as = recipient
}
}
}
}
desc = ransom_interaction_desc
notification_text = {
first_valid = {
triggered_desc = {
trigger = {
scope:secondary_recipient = scope:recipient
}
desc = OFFER_RANSOM_PROPOSAL_PERSONAL
}
desc = OFFER_RANSOM_PROPOSAL
}
}
is_shown = {
scope:secondary_recipient = {
#exists = liege
is_imprisoned_by = scope:actor
}
scope:actor != scope:recipient
}
is_valid_showing_failures_only = {
trigger_if = {
limit = {
scope:invalid = yes
}
always = no
}
scope:secondary_recipient = {
custom_description = {
text = "currently_being_tortured"
NOT = { has_character_flag = is_being_tortured }
}
}
cannot_release_former_regent_whilst_old_regent_holds_power_trigger = {
PRISONER = scope:recipient
REGENT = scope:recipient.var:imprisoned_by_diarch
}
custom_tooltip = {
text = is_currently_being_purged_tt
scope:secondary_recipient = {
NOT = {
has_character_flag = is_currently_being_purged
}
}
}
}
cost = {
influence = {
value = 0
if = {
limit = { scope:influence_send_option = yes }
add = scope:actor.medium_influence_value
desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
}
}
on_accept = {
if = {
limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } }
scope:recipient = { remove_character_modifier = allowed_to_go_outside }
}
if = {
limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } }
scope:recipient = { remove_character_modifier = moldy_gruel_diet }
}
# Set up event scopes and trigger the exchange.
if = {
limit = { scope:secondary_recipient = { is_imprisoned_by = scope:actor } } # To prevent simultaneous release-shenanigans
scope:secondary_recipient = {
save_scope_as = prisoner
}
scope:recipient = {
save_scope_as = payer
if = {
limit = {
employs_court_position = person_haggler_camp_officer
is_asking_for_gold_in_ransom_trigger = yes
}
random_court_position_holder = {
type = person_haggler_camp_officer
save_scope_as = haggler
}
scope:prisoner = {
save_scope_value_as = {
name = new_ransom_value
value = haggler_ransom_cost_modifier
}
}
custom_tooltip = has_person_haggler_decrease_ransom_cost
}
# If the recipient doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay.
if = {
limit = {
OR = {
exists = scope:current_gold
exists = scope:extortionate_current_gold
}
}
save_scope_value_as = {
name = ransom_saved_gold_value
value = scope:payer.current_gold_value
}
}
}
scope:actor = {
save_scope_as = imprisoner
if = {
limit = {
employs_court_position = person_haggler_camp_officer
is_asking_for_gold_in_ransom_trigger = yes
}
random_court_position_holder = {
type = person_haggler_camp_officer
save_scope_as = haggler
}
scope:recipient = {
scope:prisoner = {
save_scope_value_as = {
name = new_ransom_value
value = haggler_ransom_cost_modifier
}
}
custom_tooltip = has_person_haggler_increase_ransom_cost
}
}
#Save scopes for portraits
scope:recipient = { save_scope_as = portrait_first }
if = {
limit = {
scope:portrait_first != scope:prisoner
}
scope:prisoner = { save_scope_as = portrait_second }
# Must come after we save the payment value, or the payer won't know how much they need to pay.
send_interface_message = {
type = event_prison_good
title = msg_ransom_prisoner
right_icon = scope:portrait_first
left_icon = scope:portrait_second
ransom_interaction_effect = yes
}
}
else = {
# Must come after we save the payment value, or the payer won't know how much they need to pay.
send_interface_message = {
type = event_prison_good
title = msg_ransom_prisoner
right_icon = scope:portrait_first
ransom_interaction_effect = yes
}
}
# Struggle Catalyst
if = {
limit = {
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_ransom_important
CHAR = scope:secondary_recipient
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_ransom_important
CHAR = scope:secondary_recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_ransom_important
character = scope:actor
}
}
}
}
}
}
on_decline = {
# If a player declines this ransom offer, wait 10 years before sending another one (they presumably will ransom that character themselves when they want them back).
if = {
limit = { scope:recipient = { is_ai = no } }
scope:secondary_recipient = {
add_character_flag = {
flag = character_ransom_refused_by_player
years = 10
}
}
}
# Trigger notification event
scope:actor = {
trigger_event = char_interaction.0131
}
}
# Pay me an extortionate amount!
send_option = {
is_shown = {
scope:actor = {
dynasty ?= {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
scope:recipient ?= {
gold >= scope:secondary_recipient.increased_ransom_cost_value
}
}
flag = extortionate_gold
localization = "RANSOM_EXTORTIONATE_GOLD_OPTION"
}
# If you don't have what they're worth, pay me what you have (extort version)!
send_option = {
is_shown = {
scope:actor = {
dynasty ?= {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
scope:recipient ?= {
gold < scope:secondary_recipient.increased_ransom_cost_value
gold >= 1
}
}
flag = extortionate_current_gold
localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_OPTION"
}
# Pay me what they're worth!
send_option = {
is_shown = {
scope:actor = {
OR = {
is_lowborn = yes
NOT = {
dynasty = {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
}
}
scope:recipient ?= {
gold >= scope:secondary_recipient.ransom_cost_value
}
}
flag = gold
localization = "RANSOM_GOLD_OPTION"
}
# If you don't have what they're worth, pay me what you have!
send_option = {
is_shown = {
scope:actor = {
OR = {
is_lowborn = yes
NOT = {
dynasty = {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
}
}
scope:recipient ?= {
gold < scope:secondary_recipient.ransom_cost_value
gold >= 1
}
}
flag = current_gold
localization = "RANSOM_CURRENT_GOLD_OPTION"
}
send_option = {
is_shown = {
trigger_if = { # in the mass action ransom we only want to do it for gold
limit = { exists = scope:mass_action }
scope:mass_action = no
}
}
is_valid = {
scope:actor = {
can_add_hook = { #To match the hook added through ransom_interaction_effect
target = scope:recipient
type = favor_hook
}
}
}
flag = favor
localization = "RANSOM_FAVOR_OPTION"
}
send_option = { # EP3 Influence
is_shown = { # Actor must have a government that uses influence
trigger_if = { # in the mass action ransom we only want to do it for gold
limit = { exists = scope:mass_action }
scope:mass_action = no
}
scope:actor = {
government_has_flag = government_has_influence
}
}
is_valid = {
# Actor has enough influence
scope:actor = { influence >= medium_influence_value }
# Both characters are within the same top realm
custom_tooltip = {
text = not_same_realm_tt
scope:recipient.top_liege = scope:actor.top_liege
}
}
flag = influence_send_option
localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE
}
# MPO Herd
send_option = {
is_shown = { # Actor must have a government that uses Herd
scope:actor = {
government_has_flag = government_is_nomadic
exists = domicile
is_ai = no
}
# Recipient must care about Herd
scope:recipient ?= {
government_has_flag = government_is_nomadic
exists = domicile
}
}
is_valid = {
# Recipient has enough Herd
scope:recipient = { domicile.herd >= domicile.medium_herd_value }
}
flag = herd_send_option
localization = RANSOM_HERD_OPTION
}
localization_values = {
EXTORTIONATE_RANSOM_COST = scope:secondary_recipient.increased_ransom_cost_value
RANSOM_COST = scope:secondary_recipient.ransom_cost_value
CURRENT_GOLD = scope:recipient.gold
RANSOM_HERD_COST = ransom_herd_value_recipient
}
ai_accept = {
base = 0
modifier = { # Greedy characters can have their greed get the better of them...
add = {
value = scope:recipient.ai_greed
multiply = -0.5
}
scope:recipient.ai_greed >= medium_positive_ai_value
OR = {
scope:gold = yes
scope:extortionate_gold = yes
}
scope:recipient != scope:secondary_recipient
desc = AI_VALUE_MODIFIER_GREED
}
modifier = { # Generous characters are more willing to pay
add = {
value = scope:recipient.ai_greed
multiply = -0.10
}
OR = {
scope:gold = yes
scope:extortionate_gold = yes
}
scope:recipient != scope:secondary_recipient
scope:recipient.ai_greed <= medium_negative_ai_value
desc = AI_VALUE_MODIFIER_GENEROUS
}
modifier = {
add = -10
scope:recipient != scope:secondary_recipient
scope:recipient = {
NOR = {
is_spouse_of = scope:secondary_recipient
is_close_or_extended_family_of = scope:secondary_recipient
has_relation_lover = scope:secondary_recipient
has_relation_friend = scope:secondary_recipient
has_secret_relation_lover = scope:secondary_recipient
has_relation_soulmate = scope:secondary_recipient
has_relation_best_friend = scope:secondary_recipient
is_parent_of = scope:secondary_recipient
}
}
desc = "UNIMPORTANT_CHAR_REASON"
}
modifier = {
add = 100
scope:recipient = scope:secondary_recipient
desc = "WANTS_FREEDOM_REASON"
}
modifier = { # Acceptance boon for lovers, friends, etc
add = 25
scope:recipient != scope:secondary_recipient
scope:recipient = {
OR = {
is_spouse_of = scope:secondary_recipient
is_close_or_extended_family_of = scope:secondary_recipient
has_relation_lover = scope:secondary_recipient
has_relation_friend = scope:secondary_recipient
has_secret_relation_lover = scope:secondary_recipient
}
NOR = {
has_relation_soulmate = scope:secondary_recipient
has_relation_best_friend = scope:secondary_recipient
is_parent_of = scope:secondary_recipient
}
}
desc = "DEAR_TO_ME_REASON"
}
modifier = { # Massive acceptance boon for Soulmates and Best Friends
add = 200
scope:recipient = {
OR = {
has_relation_soulmate = scope:secondary_recipient
has_relation_best_friend = scope:secondary_recipient
is_parent_of = scope:secondary_recipient
}
NOR = {
is_spouse_of = scope:secondary_recipient
AND = {
NOT = {
is_parent_of = scope:secondary_recipient
}
is_close_or_extended_family_of = scope:secondary_recipient
}
has_relation_lover = scope:secondary_recipient
has_relation_friend = scope:secondary_recipient
has_secret_relation_lover = scope:secondary_recipient
}
}
desc = "DEAR_TO_ME_REASON"
}
modifier = { # Say no to rivals
add = -200
scope:recipient = {
has_relation_rival = scope:secondary_recipient
}
desc = "RIVAL_TO_ME_REASON"
}
modifier = { # Say no to rivals
add = -500
scope:recipient = {
has_relation_nemesis = scope:secondary_recipient
}
desc = "NEMESIS_TO_ME_REASON"
}
modifier = {
add = 10
scope:recipient = {
NOR = {
this = scope:secondary_recipient
is_spouse_of = scope:secondary_recipient
is_close_or_extended_family_of = scope:secondary_recipient
has_relation_lover = scope:secondary_recipient
has_relation_soulmate = scope:secondary_recipient
has_secret_relation_lover = scope:secondary_recipient
}
NOR = {
has_relation_rival = scope:secondary_recipient
has_relation_nemesis = scope:secondary_recipient
}
}
scope:recipient.dynasty = scope:secondary_recipient.dynasty
desc = "MY_DYNASTY_REASON"
}
modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege
add = intimidated_reason_value
trigger = {
scope:recipient = {
target_is_liege_or_above = scope:actor
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
}
desc = INTIMIDATED_REASON
}
modifier = { # An Cowed recipient is significantly more likely to accept an offer from the liege
add = cowed_reason_value
trigger = {
scope:recipient = {
target_is_liege_or_above = scope:actor
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
}
desc = COWED_REASON
}
}
# AI
ai_targets = {
ai_recipients = prisoners
}
ai_frequency_by_tier = {
barony = 36
county = 6
duchy = 6
kingdom = 6
empire = 6
hegemony = 6
}
ai_potential = {
always = yes
}
ai_will_do = {
base = 0
modifier = {
add = 100
OR = {
OR = {
scope:gold = yes
scope:extortionate_gold = yes
}
AND = {
scope:recipient = {
gold >= 25
}
scope:secondary_recipient = {
time_in_prison = { years > 1 }
}
scope:current_gold = yes
}
}
}
modifier = {
add = ai_greed
ai_greed > 0
OR = {
scope:gold = yes
scope:extortionate_gold = yes
}
}
modifier = {
add = -100
has_relation_rival = scope:secondary_recipient
}
modifier = {
add = -300
has_relation_nemesis = scope:secondary_recipient
}
modifier = {
add = 100
scope:favor = yes
scope:recipient = {
OR = {
is_vassal_of = scope:actor
liege ?= scope:actor
}
}
}
# Struggle Agenda
modifier = {
scope:secondary_recipient = {
any_character_struggle = {
involvement = involved
}
}
scope:actor = {
any_character_struggle = {
involvement = involved
}
}
add = {
value = 0
if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_ransom_important
}
has_character_flag = agenda_towards_escalation
}
}
add = -100
}
else_if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_ransom_important
}
}
}
add = 200
}
}
}
modifier = { # Do not ransom at war
factor = 0
scope:actor = { is_at_war = yes }
}
modifier = { # Don't annoy players
factor = 0
scope:recipient = { is_ai = no }
OR = {
scope:recipient = { is_at_war = yes }
scope:secondary_recipient = { has_character_flag = character_ransom_refused_by_player }
}
}
#don't ransom if they are tied with a prison break contract, we don't want it invalidating all the time
modifier = {
factor = 0
scope:secondary_recipient = {
has_character_flag = being_prisonbroken_by_laamp
}
}
}
# Needs to be after all other send options so we only default to it if everything else is blocked
send_option = {
is_shown = { # When doing the mass ransom, its possible for no option to be valid for the gold costs, so instead of defaulting wrong we explitly fail it
exists = scope:mass_action
scope:mass_action = yes
}
flag = invalid
localization = "INVALID"
}
}
#For lieges to ransom their courtiers
pay_ransom_interaction = {
interface_priority = 50
common_interaction = no
use_diplomatic_range = no
category = interaction_category_prison
icon = icon_gold
redirect = {
scope:recipient = {
save_scope_as = secondary_recipient
if = {
limit = {
exists = imprisoner
}
imprisoner = { save_scope_as = recipient }
}
}
}
desc = pay_ransom_interaction_desc
cost = {
influence = {
value = 0
if = {
limit = { scope:influence_send_option = yes }
add = scope:actor.medium_influence_value
desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
}
}
greeting = positive
notification_text = PAY_RANSOM_PROPOSAL
is_shown = {
exists = scope:recipient
scope:secondary_recipient = {
this != scope:actor
is_imprisoned_by = scope:recipient
OR = {
liege ?= scope:actor # You can ransom anyone you have in your court
is_close_family_of = scope:actor # And anyone who is your close family
dynasty ?= { # And anyone from your Dynasty
this ?= scope:actor.dynasty
}
any_spouse = { # And anyone married to one of your close kin or dynasty members
OR = {
is_close_family_of = scope:actor
dynasty ?= {
this ?= scope:actor.dynasty
}
}
}
has_relation_lover = scope:actor # And Lovers
has_relation_friend = scope:actor # And Friends
}
}
scope:actor != scope:recipient
}
is_valid_showing_failures_only = {
scope:secondary_recipient = {
custom_description = {
text = "currently_being_tortured"
NOT = { has_character_flag = is_being_tortured }
}
}
cannot_release_former_regent_whilst_old_regent_holds_power_trigger = {
PRISONER = scope:recipient
REGENT = scope:recipient.var:imprisoned_by_diarch
}
}
on_accept = {
# Set up event scopes and trigger the exchange.
if = {
limit = { scope:secondary_recipient = { is_imprisoned_by = scope:recipient } }
scope:secondary_recipient = {
save_scope_as = prisoner
}
scope:recipient = {
save_scope_as = imprisoner
if = {
limit = {
employs_court_position = person_haggler_camp_officer
is_asking_for_gold_in_ransom_trigger = yes
}
random_court_position_holder = {
type = person_haggler_camp_officer
save_scope_as = haggler
}
custom_tooltip = has_person_haggler_increase_ransom_cost
}
}
scope:actor = {
save_scope_as = payer
if = {
limit = {
employs_court_position = person_haggler_camp_officer
is_asking_for_gold_in_ransom_trigger = yes
}
random_court_position_holder = {
type = person_haggler_camp_officer
save_scope_as = haggler
}
scope:prisoner = {
save_scope_value_as = {
name = new_ransom_value
value = haggler_ransom_cost_modifier
}
}
custom_tooltip = has_person_haggler_decrease_ransom_cost
}
# Stress impacts
if = {
limit = {
scope:prisoner = { # Stress impact for random courtiers
NOR = {
is_vassal_of = scope:actor
is_consort_of = scope:actor
is_close_family_of = scope:actor
dynasty ?= {
this ?= scope:actor.dynasty
}
any_spouse = {
OR = {
is_close_family_of = scope:actor
dynasty ?= {
this ?= scope:actor.dynasty
}
}
}
has_relation_lover = scope:actor
has_relation_friend = scope:actor
}
}
}
stress_impact = {
compassionate = minor_stress_impact_loss
generous = medium_stress_impact_loss
}
}
else_if = { # Stress impact for 'relevant' ransoms; in other words, everyone but random courtiers
limit = {
scope:prisoner = {
OR = {
is_vassal_of = scope:actor
is_consort_of = scope:actor
is_close_family_of = scope:actor
dynasty ?= {
this ?= scope:actor.dynasty
}
any_spouse = {
OR = {
is_close_family_of = scope:actor
dynasty ?= {
this ?= scope:actor.dynasty
}
}
}
has_relation_lover = scope:actor
has_relation_friend = scope:actor
}
}
}
stress_impact = {
compassionate = medium_stress_impact_loss
generous = minor_stress_impact_loss
just = minor_stress_impact_loss
}
}
if = { # Lustful characters want their lovers back
limit = {
scope:prisoner = {
has_relation_lover = scope:actor
}
}
stress_impact = {
lustful = major_stress_impact_loss
}
}
if = { # Loyal characters want to free their friends and lovers
limit = {
scope:prisoner = {
OR = {
has_relation_friend = scope:actor
has_relation_lover = scope:actor
}
}
}
stress_impact = {
loyal = major_stress_impact_loss
}
}
if = { # Family should be free!
limit = {
scope:prisoner = {
is_close_family_of = scope:payer
}
}
stress_impact = {
family_first = miniscule_stress_impact_loss
}
}
# If the payer doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay.
if = {
limit = {
OR = {
exists = scope:current_gold
exists = scope:extortionate_current_gold
}
}
save_scope_value_as = {
name = ransom_saved_gold_value
value = scope:payer.current_gold_value
}
}
# Must come after we save the payment value, or the payer won't know how much they need to pay.
trigger_event = char_interaction.0140
}
hidden_effect = {
scope:prisoner = {
send_interface_toast = {
type = event_toast_effect_good
title = ransomed_by_someone
left_icon = scope:payer
show_as_tooltip = {
scope:imprisoner = {
ransom_interaction_effect = yes
}
}
}
}
scope:prisoner = {
if = {
limit = {
liege ?= {
is_ai = no
NOR = {
this = scope:payer
this = scope:imprisoner
}
OR = {
is_close_or_extended_family_of = scope:prisoner
is_consort_of = scope:prisoner
has_relation_lover = scope:prisoner
has_relation_friend = scope:prisoner
}
}
}
liege = {
save_scope_as = prisoner_liege_scope
send_interface_toast = {
type = event_toast_effect_good
title = ransomed_by_someone_third_party
left_icon = scope:payer
right_icon = scope:prisoner
custom_tooltip = ransomed_by_someone_third_party_desc
}
}
}
}
}
scope:imprisoner = {
send_interface_message = {
type = event_prison_neutral
title = recipient_released_from_prison
right_icon = scope:prisoner
left_icon = scope:imprisoner
ransom_interaction_effect = yes
}
# Struggle Catalyst
if = {
limit = {
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_ransom_important
CHAR = scope:prisoner
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_ransom_important
CHAR = scope:prisoner
}
}
activate_struggle_catalyst = {
catalyst = catalyst_ransom_important
character = scope:imprisoner
}
}
}
if = {
limit = {
fp3_struggle_involves_one_supporter_and_one_detractor = {
FIRST = scope:imprisoner
SECOND = scope:prisoner
}
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_ransom_supporter_detractor
CHAR = scope:prisoner
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_ransom_supporter_detractor
CHAR = scope:prisoner
}
}
activate_struggle_catalyst = {
catalyst = catalyst_ransom_supporter_detractor
character = scope:imprisoner
}
log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_ransom_supporter_detractor }
}
}
}
if = {
limit = { scope:hook = yes }
scope:actor = {
use_hook = scope:recipient
}
}
}
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:prisoner
VALUE = medium_unity_gain
DESC = clan_unity_ransom.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
on_decline = {
# If a player declines this ransom offer, wait 10 years before sending another one (they presumably have reasons for keeping that character in prison).
if = {
limit = { scope:recipient = { is_ai = no } }
scope:secondary_recipient = {
add_character_flag = {
flag = character_ransom_refused_by_player
years = 10
}
}
}
# Trigger notification event
scope:actor = {
trigger_event = char_interaction.0141
}
}
send_option = {
is_shown = {
exists = scope:recipient
scope:recipient = {
dynasty ?= {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
}
is_valid = {
exists = scope:recipient
scope:actor = {
gold >= scope:secondary_recipient.increased_ransom_cost_value
}
}
starts_enabled = {
exists = scope:recipient
scope:recipient = {
dynasty ?= {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
scope:actor = {
gold >= scope:secondary_recipient.increased_ransom_cost_value
}
}
flag = extortionate_gold
localization = "RANSOM_EXTORTIONATE_GOLD_IMPRISONED_PERSPECTIVE_OPTION"
}
# If you don't have what they're worth, pay me what you have (extort version)!
send_option = {
is_shown = {
exists = scope:recipient
scope:recipient = {
dynasty ?= {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
scope:actor = {
gold < scope:secondary_recipient.increased_ransom_cost_value
gold > 0
}
}
starts_enabled = {
exists = scope:recipient
scope:recipient = {
dynasty ?= {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
scope:actor = {
gold < scope:secondary_recipient.increased_ransom_cost_value
gold > 0
}
}
flag = extortionate_current_gold
localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_IMPRISONED_PERSPECTIVE_OPTION"
}
send_option = {
is_shown = {
exists = scope:recipient
scope:recipient = {
OR = {
is_lowborn = yes
NOT = {
dynasty = {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
}
}
}
is_valid = {
exists = scope:recipient
scope:actor = {
gold >= scope:secondary_recipient.ransom_cost_value
}
}
starts_enabled = {
exists = scope:recipient
scope:recipient = {
OR = {
is_lowborn = yes
NOT = {
dynasty = {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
}
}
scope:actor = {
gold >= scope:secondary_recipient.ransom_cost_value
}
}
flag = gold
localization = "RANSOM_GOLD_PAY_OPTION"
}
# If you don't have what they're worth, pay me what you have!
send_option = {
is_shown = {
exists = scope:recipient
scope:recipient = {
OR = {
is_lowborn = yes
NOT = {
dynasty = {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
}
}
scope:actor = {
gold < scope:secondary_recipient.ransom_cost_value
gold > 0
}
}
starts_enabled = {
exists = scope:recipient
scope:recipient = {
OR = {
is_lowborn = yes
NOT = {
dynasty = {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
}
}
scope:actor = {
gold < scope:secondary_recipient.ransom_cost_value
gold > 0
}
}
flag = current_gold
localization = "RANSOM_CURRENT_PAY_GOLD_OPTION"
}
send_option = {
is_valid = {
exists = scope:recipient
scope:recipient = {
can_add_hook = { #To match the hook added through ransom_interaction_effect
target = scope:actor
type = favor_hook
}
}
}
flag = favor
localization = "RANSOM_OWE_FAVOR_OPTION"
}
send_option = { # EP3 Influence
is_shown = { # Actor must have a government that uses influence
scope:actor = {
government_has_flag = government_has_influence
}
}
is_valid = {
# Actor has enough influence
scope:actor = { influence >= medium_influence_value }
# Both characters are within the same top realm
custom_tooltip = {
text = not_same_realm_tt
scope:recipient.top_liege = scope:actor.top_liege
}
}
flag = influence_send_option
localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE
}
send_option = { # MPO Herd
is_shown = { # Actor must have a government that uses Herd
scope:actor = {
government_has_flag = government_is_nomadic
exists = domicile
is_ai = no
}
# Recipient must care about Herd
scope:recipient = {
government_has_flag = government_is_nomadic
exists = domicile
}
}
is_valid = {
# Actor has enough Herd
scope:actor = { domicile.herd >= domicile.medium_herd_value }
}
flag = herd_send_option
localization = PAY_FOR_BETTER_AI_ACCEPTANCE
}
#Use hook
send_option = {
is_valid = {
exists = scope:recipient
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = SCHEME_HOOK
}
should_use_extra_icon = {
scope:actor = { has_usable_hook = scope:recipient }
}
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
send_options_exclusive = no
localization_values = {
EXTORTIONATE_RANSOM_COST = scope:secondary_recipient.increased_ransom_cost_value
RANSOM_COST = scope:secondary_recipient.ransom_cost_value
CURRENT_GOLD = scope:actor.gold
RANSOM_HERD_COST = ransom_herd_value_actor
}
ai_accept = {
base = 0
modifier = {
add = 50
OR = {
scope:gold = yes
scope:extortionate_gold = yes
}
desc = "GOLD_POSITIVE_REASON"
}
modifier = { # Accept more than half the ransom (unless greedy)
add = 25
scope:current_gold = yes
AND = {
scope:actor = { gold >= scope:secondary_recipient.half_ransom_cost_value }
NOT = { scope:recipient.ai_greed >= medium_positive_ai_value }
}
desc = "GOLD_POSITIVE_REASON"
}
modifier = { # Accept more than half the ransom (unless greedy)
add = 25
scope:extortionate_current_gold = yes
AND = {
scope:actor = { gold >= scope:secondary_recipient.half_increased_ransom_cost_value }
NOT = { scope:recipient.ai_greed >= medium_positive_ai_value }
}
desc = "GOLD_POSITIVE_REASON"
}
modifier = {
add = 50
scope:favor = yes
scope:recipient.top_liege = scope:actor.top_liege
desc = "FAVOR_POSITIVE_REASON"
}
modifier = {
add = 0
scope:favor = yes
scope:recipient.top_liege != scope:actor.top_liege
desc = "NO_USE_FOR_A_FAVOR_REASON"
}
modifier = { # For clarification
add = 0
OR = {
scope:current_gold = yes
scope:extortionate_current_gold = yes
}
OR = {
scope:actor = { gold < scope:secondary_recipient.half_ransom_cost_value }
scope:recipient.ai_greed >= medium_positive_ai_value
}
desc = "WANTS_MORE_GOLD"
}
modifier = { # Say no to rivals
add = -55
scope:recipient = {
has_relation_rival = scope:secondary_recipient
}
desc = "RIVAL_TO_ME_REASON"
}
modifier = { # Say no to rivals
add = -300
scope:recipient = {
has_relation_nemesis = scope:secondary_recipient
}
desc = "NEMESIS_TO_ME_REASON"
}
modifier = { # At war
add = -300
scope:recipient = {
is_at_war_with = scope:actor
}
desc = "IS_AT_WAR_REASON"
}
modifier = { # At war
add = -300
scope:recipient = {
is_at_war = yes
any_primary_war_enemy = {
scope:secondary_recipient = {
liege ?= prev
}
}
}
desc = "IS_POW_REASON"
}
modifier = { # At war
add = -300
scope:recipient = {
is_at_war_with = scope:secondary_recipient
}
desc = "IS_AT_WAR_WITH_TARGET_REASON"
}
#opinion_modifier = { # A lot more likely if Recipient likes Actor
# who = scope:recipient
# opinion_target = scope:actor
# multiplier = 1.0
# desc = AI_OPINION_REASON
#}
#opinion_modifier = { # A lot more likely if Recipient likes secondary_recipient/prisoner
# who = scope:recipient
# opinion_target = scope:secondary_recipient
# multiplier = 1.0
# desc = AI_OPINION_REASON
#}
modifier = {
scope:hook = yes
add = 100
desc = SCHEME_WEAK_HOOK_USED
}
modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege
add = 40
trigger = {
scope:recipient = {
target_is_liege_or_above = scope:actor
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
}
desc = INTIMIDATED_REASON
}
modifier = { # An Cowed recipient is significantly more likely to accept an offer from the liege
add = 100
trigger = {
scope:recipient = {
target_is_liege_or_above = scope:actor
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
}
desc = COWED_REASON
}
modifier = {
add = 25
scope:influence_send_option = yes
desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
modifier = {
add = 25
scope:herd_send_option = yes
desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION
}
}
auto_accept = {
custom_description = {
text = "spending_hook"
subject = scope:actor
object = scope:recipient
scope:hook = yes
scope:actor = { has_strong_hook = scope:recipient }
}
}
# AI
ai_targets = {
ai_recipients = family
ai_recipients = spouses
ai_recipients = scripted_relations
ai_recipients = liege
}
ai_targets = {
ai_recipients = neighboring_rulers
ai_recipients = peer_vassals
ai_recipients = top_realm_domicile_owners
max = 5
}
ai_frequency_by_tier = {
barony = 0
county = 6
duchy = 6
kingdom = 6
empire = 6
hegemony = 6
}
ai_potential = {
gold >= 25
}
ai_target_quick_trigger = {
prison = yes
}
ai_will_do = {
base = 0
modifier = {
add = 100
OR = {
scope:gold = yes
scope:extortionate_gold = yes
AND = {
scope:actor = {
gold >= 25
}
scope:secondary_recipient = {
time_in_prison = { years > 1 }
}
OR = {
scope:current_gold = yes
scope:extortionate_current_gold = yes
}
}
}
}
modifier = {
add = -100
has_relation_rival = scope:secondary_recipient
}
modifier = {
add = -300
has_relation_nemesis = scope:secondary_recipient
}
modifier = {
add = 100
scope:favor = yes
scope:recipient = {
OR = {
is_vassal_of = scope:actor
liege ?= scope:actor
}
}
}
modifier = { # Ransom your primary heir first
add = 10
OR = {
scope:gold = yes
scope:extortionate_gold = yes
AND = {
scope:actor = {
gold >= 25
}
scope:secondary_recipient = {
time_in_prison = { years > 1 }
}
OR = {
scope:current_gold = yes
scope:extortionate_current_gold = yes
}
}
AND = {
scope:favor = yes
scope:recipient = {
OR = {
is_vassal_of = scope:actor
liege ?= scope:actor
}
}
}
}
scope:secondary_recipient = {
is_primary_heir_of = scope:actor
}
}
modifier = { # Only ransom people you care about... unless you're very compassionate
factor = 0
ai_compassion < high_positive_ai_value
scope:secondary_recipient = {
NOR = {
is_heir_of = scope:actor
is_child_of = scope:actor
is_grandchild_of = scope:actor
is_great_grandchild_of = scope:actor
is_consort_of = scope:actor
is_parent_of = scope:actor
is_grandparent_of = scope:actor
is_great_grandparent_of = scope:actor
has_relation_friend = scope:actor
has_relation_lover = scope:actor
has_secret_relation_lover = scope:actor
any_spouse = {
OR = {
is_heir_of = scope:actor
is_child_of = scope:actor
is_grandchild_of = scope:actor
is_great_grandchild_of = scope:actor
is_parent_of = scope:actor
is_grandparent_of = scope:actor
is_great_grandparent_of = scope:actor
has_relation_friend = scope:actor
}
}
}
}
}
modifier = { # If you're very compassionate, well, then you ransom most people you can!
factor = 0
ai_compassion >= high_positive_ai_value
scope:secondary_recipient = {
NOR = {
is_heir_of = scope:actor
is_close_or_extended_family_of = scope:actor
is_consort_of = scope:actor
has_relation_friend = scope:actor
has_relation_lover = scope:actor
has_secret_relation_lover = scope:actor
any_spouse = {
OR = {
is_heir_of = scope:actor
is_close_or_extended_family_of = scope:actor
has_relation_friend = scope:actor
}
}
}
}
}
modifier = { # If you're very greedy... then they're a little bit more restrictive!
factor = 0
ai_greed >= high_positive_ai_value
scope:secondary_recipient = {
NOR = { # Very Greedy rulers only ransom people in their own realm, or their heir
is_courtier_of = scope:actor
is_vassal_or_below_of = scope:actor
is_heir_of = scope:actor
}
NOR = {
is_heir_of = scope:actor
is_close_or_extended_family_of = scope:actor
is_consort_of = scope:actor
has_relation_friend = scope:actor
has_relation_lover = scope:actor
has_secret_relation_lover = scope:actor
any_spouse = {
OR = {
is_heir_of = scope:actor
is_close_or_extended_family_of = scope:actor
has_relation_friend = scope:actor
}
}
}
}
}
# Some exceptions!
modifier = { # Lustful characters want to ransom lovers
add = 100
has_trait = lustful
ai_greed <= 50
scope:secondary_recipient = {
has_relation_lover = scope:actor
}
OR = {
scope:gold = yes
scope:extortionate_gold = yes
AND = {
scope:actor = {
gold >= 25
}
scope:secondary_recipient = {
time_in_prison = { years > 1 }
}
OR = {
scope:current_gold = yes
scope:extortionate_current_gold = yes
}
}
}
}
modifier = { # Loyal characters want to ransom their relations
add = 100
has_trait = loyal
scope:secondary_recipient = {
OR = {
has_relation_lover = scope:actor
has_relation_friend = scope:actor
}
}
OR = {
scope:gold = yes
scope:extortionate_gold = yes
AND = {
scope:actor = {
gold >= 25
}
scope:secondary_recipient = {
time_in_prison = { years > 1 }
}
OR = {
scope:current_gold = yes
scope:extortionate_current_gold = yes
}
}
}
}
modifier = { # Certain characters will try to ransom their liege!
add = 100
ai_greed <= very_high_negative_ai_value
ai_compassion >= very_high_negative_ai_value
NOT = { exists = joined_faction }
is_at_war = no
OR = {
has_trait = loyal
ai_honor >= high_positive_ai_value
}
scope:secondary_recipient = {
is_liege_or_above_of = scope:actor
}
OR = {
scope:gold = yes
scope:extortionate_gold = yes
# They won't offer current gold, only full ransoms
}
}
modifier = { # Favors only relevant within the realm
add = -100
scope:favor = yes
scope:recipient = {
NOR = {
is_vassal_of = scope:actor
liege ?= scope:actor
}
}
}
modifier = { # Don't spam the player with cheapskate offers
add = -100
scope:current_gold = yes
scope:recipient = {
is_ai = no
}
scope:secondary_recipient = {
highest_held_title_tier >= tier_duchy
}
}
# Struggle Agenda
modifier = {
scope:secondary_recipient = {
any_character_struggle = {
involvement = involved
}
}
scope:actor = {
any_character_struggle = {
involvement = involved
}
}
add = {
value = 0
if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_ransom_important
}
has_character_flag = agenda_towards_escalation
}
}
add = -100
}
else_if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_ransom_important
}
}
}
add = 200
}
}
}
evaluate_action_increasing_house_unity = {
VALUE = 100
}
modifier = { # Don't give away prisoners for free
factor = 0
NOR = {
scope:favor = yes
scope:extortionate_gold = yes
scope:extortionate_current_gold = yes
scope:gold = yes
AND = {
scope:actor = {
gold >= 25
}
scope:current_gold = yes
}
}
}
modifier = { # Don't annoy players
factor = 0
scope:recipient = { is_ai = no }
OR = {
scope:recipient = { is_at_war = yes }
scope:secondary_recipient = { has_character_flag = character_ransom_refused_by_player }
}
}
#don't ransom prisoners that are tied with a prison break contract, we don't want it invalidating all the time
modifier = {
factor = 0
scope:secondary_recipient = {
has_character_flag = being_prisonbroken_by_laamp
}
}
}
}
#To ransom yourself
ransom_me_interaction = {
interface_priority = 50
common_interaction = yes
use_diplomatic_range = no
category = interaction_category_prison
icon = icon_gold
greeting = positive
notification_text = PAY_RANSOM_PROPOSAL_PERSONAL
desc = ransom_me_interaction_desc
redirect = { # So that users can ransom themselves by clicking on their portrait
if = {
limit = {
scope:actor = scope:recipient
exists = scope:actor.imprisoner
}
scope:actor.imprisoner = { save_scope_as = recipient }
}
}
is_shown = {
scope:actor = {
is_imprisoned_by = scope:recipient
}
}
is_valid_showing_failures_only = {
scope:actor = {
custom_description = {
text = "currently_being_tortured"
NOT = { has_character_flag = is_being_tortured }
}
}
cannot_release_former_regent_whilst_old_regent_holds_power_trigger = {
PRISONER = scope:recipient
REGENT = scope:recipient.var:imprisoned_by_diarch
}
custom_tooltip = {
text = is_currently_being_purged_tt
scope:recipient = {
NOT = {
has_character_flag = is_currently_being_purged
}
}
}
}
on_accept = {
if = {
limit = { scope:actor = { is_imprisoned_by = scope:recipient } }
scope:actor = {
save_scope_as = prisoner
}
scope:recipient = {
save_scope_as = imprisoner
}
scope:actor = {
save_scope_as = payer
if = {
limit = {
employs_court_position = person_haggler_camp_officer
is_asking_for_gold_in_ransom_trigger = yes
}
random_court_position_holder = {
type = person_haggler_camp_officer
save_scope_as = haggler
}
save_scope_value_as = {
name = new_ransom_value
value = haggler_ransom_cost_modifier
}
custom_tooltip = has_person_haggler_decrease_ransom_cost
}
# If the payer doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay.
if = {
limit = {
OR = {
exists = scope:current_gold
exists = scope:extortionate_current_gold
}
}
save_scope_value_as = {
name = ransom_saved_gold_value
value = scope:payer.current_gold_value
}
}
# Must come after we save the payment value, or the payer won't know how much they need to pay.
trigger_event = char_interaction.0150
}
scope:imprisoner = {
if = {
limit = {
employs_court_position = person_haggler_camp_officer
is_asking_for_gold_in_ransom_trigger = yes
}
random_court_position_holder = {
type = person_haggler_camp_officer
save_scope_as = haggler
}
scope:actor = {
custom_tooltip = has_person_haggler_increase_ransom_cost
}
}
send_interface_message = {
type = event_prison_neutral
title = recipient_released_from_prison
right_icon = scope:prisoner
left_icon = scope:imprisoner
ransom_interaction_effect = yes
}
# Struggle Catalyst
if = {
limit = {
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_ransom_important
CHAR = scope:prisoner
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_ransom_important
CHAR = scope:prisoner
}
}
activate_struggle_catalyst = {
catalyst = catalyst_ransom_important
character = scope:imprisoner
}
}
}
}
if = {
limit = { always = scope:hook }
scope:actor = {
use_hook = scope:recipient
}
}
}
}
on_decline = {
# If a player declines this ransom offer, wait 10 years before sending another one (they presumably have reasons for keeping you in prison).
if = {
limit = { scope:recipient = { is_ai = no } }
scope:actor = {
add_character_flag = {
flag = character_ransom_refused_by_player
years = 10
}
}
}
# Trigger notification event
scope:actor = {
trigger_event = char_interaction.0151
}
}
cost = {
influence = {
value = 0
if = {
limit = { scope:influence_send_option = yes }
add = scope:actor.medium_influence_value
desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
}
}
send_option = {
is_shown = {
exists = scope:recipient
scope:recipient = {
dynasty ?= {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
}
is_valid = {
scope:actor = {
gold >= increased_ransom_cost
}
}
flag = extortionate_gold
localization = "RANSOM_EXTORTIONATE_GOLD_IMPRISONED_PERSPECTIVE_OPTION"
}
# If you don't have what they're worth, pay me what you have (extort version)!
send_option = {
is_shown = {
exists = scope:recipient
scope:recipient = {
dynasty ?= {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
scope:actor = {
gold < increased_ransom_cost
gold > 0
}
}
flag = extortionate_current_gold
localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_IMPRISONED_PERSPECTIVE_OPTION"
}
send_option = {
is_shown = {
exists = scope:recipient
scope:recipient = {
OR = {
is_lowborn = yes
NOT = {
dynasty = {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
}
}
}
is_valid = {
scope:actor = {
gold >= ransom_cost
}
}
flag = gold
localization = "RANSOM_GOLD_OPTION"
}
# If you don't have what they're worth, pay me what you have!
send_option = {
is_shown = {
exists = scope:recipient
scope:recipient = {
OR = {
is_lowborn = yes
NOT = {
dynasty = {
has_dynasty_perk = fp1_pillage_legacy_3
}
}
}
}
scope:actor = {
gold < ransom_cost
gold > 0
}
}
flag = current_gold
localization = "RANSOM_CURRENT_GOLD_OPTION"
}
send_option = {
is_valid = {
scope:recipient = {
can_add_hook = { #To match the hook added through ransom_interaction_effect
target = scope:actor
type = favor_hook
}
}
}
flag = favor
localization = "RANSOM_FAVOR_OPTION"
}
send_option = { # EP3 Influence
is_shown = { # Actor must have a government that uses influence
scope:actor = {
government_has_flag = government_has_influence
}
}
is_valid = {
# Actor has enough influence
scope:actor = { influence >= medium_influence_value }
# Both characters are within the same top realm
custom_tooltip = {
text = not_same_realm_tt
scope:recipient.top_liege = scope:actor.top_liege
}
}
flag = influence_send_option
localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE
}
send_option = { # MPO Herd
is_shown = { # Actor must have a government that uses Herd
scope:actor = {
government_has_flag = government_is_nomadic
exists = domicile
}
# Recipient must care about Herd
scope:recipient = {
government_has_flag = government_is_nomadic
exists = domicile
}
}
is_valid = {
# Actor has enough Herd
scope:actor = { domicile.herd >= domicile.medium_herd_value }
}
flag = herd_send_option
localization = PAY_FOR_BETTER_AI_ACCEPTANCE
}
#Use hook
send_option = {
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = SCHEME_HOOK
}
should_use_extra_icon = {
scope:actor = { has_usable_hook = scope:recipient }
}
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
send_options_exclusive = no
localization_values = {
EXTORTIONATE_RANSOM_COST = scope:actor.increased_ransom_cost_value
RANSOM_COST = scope:actor.ransom_cost_value
CURRENT_GOLD = scope:actor.gold
RANSOM_HERD_COST = ransom_herd_value_actor
}
ai_accept = {
base = 0
modifier = {
add = 50
OR = {
scope:gold = yes
scope:extortionate_gold = yes
}
desc = "GOLD_POSITIVE_REASON"
}
modifier = { # Accept more than half the ransom (unless greedy)
add = 25
scope:current_gold = yes
AND = {
scope:actor = { gold >= half_ransom_cost_value }
NOT = { scope:recipient.ai_greed >= medium_positive_ai_value }
}
desc = "GOLD_POSITIVE_REASON"
}
modifier = { # Accept more than half the ransom (unless greedy)
add = 25
scope:extortionate_current_gold = yes
AND = {
scope:actor = { gold >= half_increased_ransom_cost_value }
NOT = { scope:recipient.ai_greed >= medium_positive_ai_value }
}
desc = "GOLD_POSITIVE_REASON"
}
modifier = {
add = 50
scope:favor = yes
scope:recipient.top_liege = scope:actor.top_liege
desc = "FAVOR_POSITIVE_REASON"
}
modifier = {
add = -50
scope:favor = yes
NOR = {
scope:gold = yes
scope:extortionate_gold = yes
}
OR = {
scope:recipient.top_liege != scope:actor.top_liege
scope:recipient.ai_greed >= medium_positive_ai_value
}
desc = "NO_USE_FOR_A_FAVOR_REASON"
}
modifier = { # For clarification
add = 0
OR = {
scope:current_gold = yes
scope:extortionate_current_gold = yes
}
OR = {
scope:actor = { gold < half_ransom_cost_value }
scope:recipient.ai_greed >= medium_positive_ai_value
}
desc = "WANTS_MORE_GOLD"
}
#opinion_modifier = { # A lot more likely if Recipient likes Actor
# who = scope:recipient
# opinion_target = scope:actor
# multiplier = 1.0
# desc = AI_OPINION_REASON
#}
modifier = { # Say no to rivals
add = -55
scope:recipient = {
has_relation_rival = scope:actor
}
desc = "ACTOR_RIVAL_TO_ME_REASON"
}
modifier = { # Say no to nemesis
add = -300
scope:recipient = {
has_relation_nemesis = scope:actor
}
desc = "ACTOR_NEMESIS_TO_ME_REASON"
}
modifier = { # At war
add = -300
scope:recipient = {
is_at_war_with = scope:actor
}
desc = "IS_AT_WAR_REASON"
}
modifier = {
scope:hook = yes
add = 100
desc = SCHEME_WEAK_HOOK_USED
}
modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege
add = intimidated_reason_value
trigger = {
scope:recipient = {
target_is_liege_or_above = scope:actor
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
}
desc = INTIMIDATED_REASON
}
modifier = { # A Cowed recipient is significantly more likely to accept an offer from the liege
add = cowed_reason_value
trigger = {
scope:recipient = {
target_is_liege_or_above = scope:actor
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
}
desc = COWED_REASON
}
modifier = { # Family Feud
add = -50
trigger = {
scope:recipient = {
house_has_feud_relation_with_trigger = { TARGET = scope:actor }
}
}
desc = INTERACTION_FAMILY_FEUD_REVERSE_REASON
}
modifier = {
add = 25
scope:influence_send_option = yes
desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
modifier = {
add = 25
scope:herd_send_option = yes
desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION
}
}
auto_accept = {
custom_description = {
text = "spending_hook"
subject = scope:actor
object = scope:recipient
scope:hook = yes
scope:actor = { has_strong_hook = scope:recipient }
}
}
# AI
ai_frequency_by_tier = {
barony = 72
county = 24
duchy = 24
kingdom = 12
empire = 12
hegemony = 12
}
ai_targets = {
ai_recipients = self
}
ai_potential = {
always = yes
}
ai_will_do = {
base = 0
modifier = {
add = 100
OR = {
scope:gold = yes
scope:extortionate_gold = yes
AND = {
scope:actor = {
gold >= 25
}
OR = {
time_in_prison = { years > 1 }
has_trait = impatient #LET ME OUT! I want out! NOW!
}
OR = {
scope:current_gold = yes
scope:extortionate_current_gold = yes
}
}
scope:herd_send_option = yes
}
}
modifier = {
add = 100
scope:favor = yes
scope:recipient = {
OR = {
is_vassal_of = scope:actor
liege ?= scope:actor
}
}
}
modifier = {
add = -100
scope:favor = yes
scope:recipient = {
NOR = {
is_vassal_of = scope:actor
liege ?= scope:actor
}
}
}
# Struggle Agenda
modifier = {
scope:recipient = {
any_character_struggle = {
involvement = involved
}
}
scope:actor = {
any_character_struggle = {
involvement = involved
}
}
add = {
value = 0
if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_ransom_important
}
has_character_flag = agenda_towards_escalation
}
}
add = -100
}
else_if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_ransom_important
}
}
}
add = 200
}
}
}
modifier = { # Don't give away prisoners for free
factor = 0
NOR = {
scope:favor = yes
scope:gold = yes
scope:extortionate_gold = yes
scope:current_gold = yes
scope:herd_send_option = yes
AND = {
scope:actor = {
gold >= 25
}
scope:current_gold = yes
}
}
}
modifier = { # Don't annoy players
factor = 0
scope:recipient = { is_ai = no }
OR = {
scope:recipient = { is_at_war = yes }
scope:actor = { has_character_flag = character_ransom_refused_by_player }
}
}
#don't do it if you are tied with a prison break contract, we don't want it invalidating all the time
modifier = {
factor = 0
scope:actor = {
has_character_flag = being_prisonbroken_by_laamp
}
}
}
}
release_from_prison_interaction = {
interface_priority = 30
common_interaction = yes
category = interaction_category_prison
special_interaction = release_from_prison_interaction
icon = prison
desc = release_from_prison_interaction_desc
notification_text = {
first_valid = {
triggered_desc = {
trigger = {
scope:demand_conversion = no
scope:renounce_claims = no
scope:banish = no
scope:take_vows = no
scope:recruit = no
scope:disfigure = no
scope:blind = no
scope:castrate = no
}
desc = RELEASE_PRISONER_OFFER
}
desc = RELEASE_PRISONER_OFFER_CONDITIONAL
}
}
is_shown = {
scope:recipient = {
is_imprisoned_by = scope:actor
}
}
is_valid_showing_failures_only = {
scope:recipient = {
custom_description = {
text = "currently_being_tortured"
NOT = { has_character_flag = is_being_tortured }
}
}
cannot_release_former_regent_whilst_old_regent_holds_power_trigger = {
PRISONER = scope:recipient
REGENT = scope:recipient.var:imprisoned_by_diarch
}
custom_tooltip = {
text = is_currently_being_purged_tt
scope:recipient = {
NOT = {
has_character_flag = is_currently_being_purged
}
}
}
}
on_accept = {
if = {
limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } }
scope:recipient = { remove_character_modifier = allowed_to_go_outside }
}
if = {
limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } }
scope:recipient = { remove_character_modifier = moldy_gruel_diet }
}
if = {
limit = { scope:recipient = { is_imprisoned_by = scope:actor } }
scope:recipient = {
# Demand Conversion
if = {
limit = { scope:demand_conversion = yes }
demand_conversion_interaction_effect = yes
add_opinion = {
modifier = demanded_my_conversion_opinion
target = scope:actor
}
# Struggle Catalyst
if = {
limit = {
scope:actor = {
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_demanding_important_conversion
CHAR = scope:recipient
}
}
}
}
scope:actor = {
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_demanding_important_conversion
CHAR = scope:recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_demanding_important_conversion
character = scope:actor
}
}
}
}
}
# Banish Landed Character
if = {
limit = {
scope:banish = yes
scope:recipient = { is_landed_or_landless_administrative = yes }
}
banish_effect = { BANISHER = scope:actor }
if = {
limit = {
NOT = {
scope:actor = {
has_banish_reason = scope:recipient
}
}
}
scope:actor = { add_tyranny = banishment_tyranny_gain }
}
add_opinion = {
modifier = banished_me
target = scope:actor
}
}
# Banish Unlanded Character
else_if = {
limit = {
AND = {
scope:banish = yes
scope:recipient = {
is_landless_adventurer = no
is_pool_character = no # It is possible for them to end up in the pool between the interaction being sent, and it being accepted
}
}
}
if = {
limit = {
this.gold > 0
NOR = {
has_character_flag = realm_priest
has_character_flag = was_bookmaker
}
}
pay_short_term_gold = { target = scope:actor gold = this.gold }
}
if = {
limit = {
has_any_artifact = yes
}
every_character_artifact = {
set_owner = {
target = scope:actor
history = {
location = scope:recipient.location
actor = scope:recipient
recipient = scope:actor
type = stolen
}
}
scope:actor = {
if = {
limit = {
NOT = { has_variable = stolen_artifact }
}
set_variable = {
name = stolen_artifact
value = 1
}
}
else = {
change_variable = {
name = stolen_artifact
add = 1
}
}
}
}
}
banish = yes
add_opinion = {
modifier = banished_me
target = scope:actor
}
}
# 'Banish' Pool Character
else_if = {
limit = {
AND = {
scope:banish = yes
scope:recipient = {
is_playable_character = no
is_pool_character = yes # They'll just leave for the pool
}
}
}
if = {
limit = {
this.gold > 0
}
pay_short_term_gold = { target = scope:actor gold = this.gold }
}
add_opinion = {
modifier = banished_me
target = scope:actor
}
}
# Recruit Character
if = {
limit = { scope:recruit = yes }
if = {
limit = {
scope:actor = {
culture = {
has_cultural_parameter = can_recruit_prisoners_easily
}
}
}
add_opinion = {
modifier = loyal_servant
target = scope:actor
}
scope:actor = {
if = {
limit = {
can_add_hook = {
target = scope:recipient
type = loyalty_hook
}
}
add_hook = {
type = loyalty_hook
target = scope:recipient
}
}
}
}
else = {
add_opinion = {
modifier = demanded_recruitment
target = scope:actor
}
}
scope:actor = {
if = {
limit = {
AND = {
scope:actor.faith = {
has_doctrine = tenet_communal_possessions
}
scope:recipient = {
has_trait = peasant_leader
}
}
}
scope:actor = {
add_piety = medium_piety_gain
}
}
}
scope:actor = {
add_courtier = scope:recipient
}
}
# Renounce Claims
if = {
limit = { scope:renounce_claims = yes }
add_opinion = {
modifier = demanded_claim_renouncement
target = scope:actor
}
scope:recipient = {
every_claim = {
explicit = yes
limit = {
save_temporary_scope_as = temp_claim
OR = {
holder = scope:actor
AND = {
exists = holder
NOT = { prev = { target_is_liege_or_above = scope:actor } }
holder = { target_is_liege_or_above = scope:actor }
}
scope:actor = {
any_held_title = {
is_de_jure_liege_or_above_target = scope:temp_claim
}
}
}
}
scope:recipient = { remove_claim = prev }
}
}
}
# Gain Hook
if = {
limit = { scope:gain_hook = yes }
add_opinion = {
modifier = demanded_hook
target = scope:actor
}
scope:actor = {
add_hook = { #Hook effect must match gain_hook option condition
target = scope:recipient
type = favor_hook
}
}
}
# Take Vows
if = {
limit = { scope:take_vows = yes }
send_child_to_clergy_effect = yes
#Does Byzan go hay-wire with deposing vassals?
if = {
limit = {
scope:actor = {
is_ai = yes
culture = { has_cultural_pillar = heritage_byzantine }
}
}
debug_log = debug_ai_byzan_forced_vows_on_prison_release
debug_log_scopes = yes
}
#Does the AI in general go haywire with deposing prisoners?
else_if = {
limit = {
scope:actor = { is_ai = yes }
}
debug_log = debug_ai_forced_vows_on_prison_release
debug_log_scopes = yes
}
}
# Become Executioner
if = {
limit = { scope:become_executioner = yes }
release_as_executioner_effect = yes
}
# Disfigure
if = {
limit = { scope:disfigure = yes }
scope:recipient = {
add_character_flag = {
flag = is_being_tortured
months = 6 # Players in MP can keep the event window open...
}
}
blind_castrate_and_disfigure_effect = yes #Stress & dread
show_as_tooltip = {
scope:recipient = {
add_trait = disfigured
}
}
torture_blind_castrate_disfigure_opinion_effect = { VERB = disfigured }
scope:actor = {
trigger_event = {
id = prison.1030
days = 1
}
}
}
# Blind
if = {
limit = { scope:blind = yes }
scope:recipient = {
add_character_flag = {
flag = is_being_tortured
months = 6 # Players in MP can keep the event window open...
}
}
blind_castrate_and_disfigure_effect = yes #Stress & dread
show_as_tooltip = {
scope:recipient = {
add_trait = blind
}
}
# Merciful Blindings
scope:actor = {
if = {
limit = {
culture = { has_cultural_parameter = merciful_blinding }
OR = {
has_execute_reason = scope:recipient
has_banish_reason = scope:recipient
}
}
add_piety = medium_piety_gain
}
}
torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded }
scope:actor = {
trigger_event = {
id = prison.1020
days = 1
}
}
# If we're a clan this interaction affects unity
if = {
limit = { scope:actor.culture = { has_cultural_parameter = merciful_blinding } } # If actor's culture has Merciful Blindings, they lose less unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_loss
DESC = clan_unity_blinding.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
else = {
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = medium_unity_loss
DESC = clan_unity_blinding.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
}
# Castrate
if = {
limit = { scope:castrate = yes }
scope:recipient = {
add_character_flag = {
flag = is_being_tortured
months = 6 # Players in MP can keep the event window open...
}
}
blind_castrate_and_disfigure_effect = yes #Stress & dread
show_as_tooltip = {
scope:recipient = {
if = {
limit = {
age < 12
}
ep3_child_castration_effect = yes
}
else = {
ep3_youth_castration_effect = yes
}
}
}
torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated }
scope:actor = {
trigger_event = {
id = prison.1025
days = 1
}
}
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = major_unity_loss
DESC = clan_unity_abelarding.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
# Demand Admin
if = {
limit = { scope:demand_admin = yes }
scope:recipient = {
change_to_administrative_effect = yes
}
}
# Shared Torture effects
if = {
limit = {
OR = {
scope:disfigure = yes
scope:blind = yes
scope:castrate = yes
}
}
scope:recipient.house ?= {
change_house_relation_effect = {
HOUSE = scope:actor.house
VALUE = house_relation_damage_medium_value
REASON = torture
CHAR = scope:actor
TARGET_CHAR = scope:recipient
TITLE = scope:dummy_gender
}
}
}
# No Demands Added
if = {
limit = {
scope:demand_conversion = no
scope:renounce_claims = no
scope:banish = no
scope:gain_hook = no
scope:take_vows = no
scope:become_executioner = no
scope:recruit = no
scope:disfigure = no
scope:blind = no
scope:castrate = no
scope:demand_admin = no
}
# Notification to the imprisoner
scope:actor = {
send_interface_toast = {
type = event_toast_effect_neutral
title = recipient_released_from_prison
left_icon = scope:recipient
scope:recipient = {
add_opinion = {
modifier = released_from_prison
target = scope:actor
}
}
}
house ?= {
change_house_relation_effect = {
HOUSE = scope:recipient.house
VALUE = house_relation_improve_medium_value
REASON = prison_released
CHAR = scope:actor
TARGET_CHAR = scope:recipient
TITLE = scope:dummy_gender
}
}
add_dread = minor_dread_loss
stress_impact = {
sadistic = medium_stress_impact_gain
callous = minor_stress_impact_gain
}
# Struggle impact
if = {
limit = {
any_character_struggle = {
involvement = involved
OR = {
has_struggle_phase_parameter = release_prisoner_diff_culture_gives_prestige
has_struggle_phase_parameter = release_prisoner_diff_faith_gives_prestige
}
}
is_diff_faith_or_culture_trigger = {
CHAR = scope:recipient
STATUS = involved
}
}
add_prestige = medium_prestige_gain
}
# Struggle Catalyst
if = {
limit = {
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_release_important
CHAR = scope:recipient
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_release_important
CHAR = scope:recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_release_important
character = scope:actor
}
}
}
if = {
limit = {
fp3_struggle_involves_one_supporter_and_one_detractor = {
FIRST = scope:actor
SECOND = scope:recipient
}
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_release_supporter_detractor
CHAR = scope:recipient
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_release_supporter_detractor
CHAR = scope:recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_release_supporter_detractor
character = scope:actor
}
log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_release_supporter_detractor }
}
}
}
# If we're a clan (and not making any demands) this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_gain
DESC = clan_unity_released_from_own_prison.desc
REVERSE_NON_HOUSE_TARGET = no
}
# LEGITIMACY GAIN FROM RELEASING DUKES AND ABOVE
if = {
limit = {
exists = scope:recipient.primary_title
scope:recipient.primary_title.tier >= tier_duchy
}
# Minus 2, since we want Duchy to be 1, and it's normally 3
save_scope_value_as = {
name = title_tier_minus_2
value = {
value = scope:recipient.primary_title.tier
subtract = 2
}
}
scope:actor = {
send_interface_toast = {
type = msg_legitimacy_gain
title = legitimacy_gain_toast
left_icon = scope:actor
right_icon = scope:recipient
add_legitimacy = {
value = {
value = miniscule_legitimacy_gain
multiply = scope:title_tier_minus_2
}
}
}
}
}
}
else = {
scope:actor = {
trigger_event = char_interaction.0160
}
}
# If a child was imprisoned due to yearly_4021 they'll come back to say hi
if = {
limit = {
exists = var:marked_for_revenge_in_event_yearly_4021
}
add_opinion = {
modifier = abandoned_me_opinion
target = var:marked_for_revenge_in_event_yearly_4021
}
if = {
limit = {
var:marked_for_revenge_in_event_yearly_4021 = {
is_alive = yes
is_ai = no
}
}
save_scope_as = child
if = {
limit = { #Make sure they're sadistic!
NOT = { has_trait = sadistic }
number_of_personality_traits < personality_trait_limit
}
add_trait = sadistic
}
var:marked_for_revenge_in_event_yearly_4021 = {
add_character_flag = { #TO make sure that they don't get spammed about the release
flag = block_for_prison_release_notification
days = 10
}
trigger_event = yearly.4022
}
remove_variable = marked_for_revenge_in_event_yearly_4021
}
}
if = {
limit = {
is_imprisoned = yes
# Release is handled in follow-up events
scope:disfigure = no
scope:blind = no
scope:castrate = no
}
release_from_prison = yes
}
}
# FP3 - If prisoner is important for war
scope:actor = { # FP3
if = {
limit = {
exists = scope:recipient.house
any_character_war = {
using_cb = fp3_free_house_member_cb
is_defender = scope:actor
primary_attacker.house = scope:recipient.house
}
}
random_character_war = {
limit = {
using_cb = fp3_free_house_member_cb
is_defender = scope:actor
primary_attacker.house = scope:recipient.house
}
primary_attacker = {
hidden_effect = {
send_interface_message = {
type = event_war_good
title = lesson_war_final_notes_victory_step_1
left_icon = scope:recipient
right_icon = scope:actor
show_as_tooltip = {
scope:recipient = { release_from_prison = yes }
add_prestige = major_prestige_gain
prev.primary_defender = { add_prestige = major_prestige_loss }
}
}
}
add_prestige = major_prestige_gain
prev.primary_defender = { add_prestige = major_prestige_loss }
}
}
}
}
}
}
on_decline = {
scope:actor = {
trigger_event = char_interaction.0161
}
}
send_option = {
flag = demand_conversion
localization = "RELEASE_DEMAND_CONVERSION"
is_shown = {
scope:recipient.faith != scope:actor.faith
}
is_valid = {
trigger_if = {
limit = {
scope:actor = { is_ai = yes }
}
scope:recipient = {
OR = {
is_close_or_extended_family_of = scope:actor
is_vassal_of = scope:actor
}
}
}
# Cannot ask Landed Rulers to convert if they're not your vassal
custom_description = {
text = cannot_demand_unsubordinate_landed_ruler_conversion
scope:recipient = {
trigger_if = {
limit = {
is_playable_character = yes
}
is_vassal_or_below_of = scope:actor
}
}
}
# Cannot ask Religious Heads to convert
custom_description = {
text = cannot_demand_religious_head_conversion
NAND = {
exists = scope:recipient.faith.religious_head
scope:recipient.faith.religious_head = scope:recipient
}
}
# Cannot ask Holy Order Master to convert
custom_description = {
text = cannot_demand_holy_order_master_conversion
NAND = {
exists = scope:recipient.faith
scope:recipient.faith = {
any_faith_holy_order = { leader = scope:recipient }
}
}
}
}
}
send_option = {
flag = renounce_claims
localization = RELEASE_RENOUNCE_CLAIMS
is_shown = {
custom_description = {
text = "release_renounce_claims"
subject = scope:recipient
scope:recipient = {
any_claim = {
explicit = yes
save_temporary_scope_as = temp_claim
OR = {
holder = scope:actor
AND = {
NOT = { prev = { target_is_liege_or_above = scope:actor } }
trigger_if = {
limit = {
exists = holder
}
holder = { target_is_liege_or_above = scope:actor }
}
}
scope:actor = {
any_held_title = {
is_de_jure_liege_or_above_target = scope:temp_claim
}
}
}
}
}
}
}
current_description = {
desc = RELEASE_RENOUNCE_CLAIMS_DESC
}
}
send_option = {
flag = banish
localization = "RELEASE_BANISH"
is_shown = {
trigger_if = {
limit = {
scope:actor = { is_ai = yes }
}
scope:recipient = {
OR = {
AND = {
is_playable_character = no
is_ruler = no
gold > scope:actor.gold
gold > scope:actor.medium_gold_value
scope:actor.ai_greed > low_negative_ai_value
}
AND = {
is_playable_character = no
is_ruler = no
gold > 0
scope:actor = {
has_banish_reason = scope:recipient
}
}
AND = {
is_playable_character = no
is_ruler = no
gold > 100
scope:actor.ai_greed >= high_positive_ai_value
}
AND = {
scope:actor = {
has_banish_reason = scope:recipient
}
scope:actor = {
opinion = {
target = scope:recipient
value <= medium_negative_opinion
}
}
}
}
}
}
trigger_if = {
limit = {
scope:recipient = {
is_playable_character = yes
}
}
scope:recipient = {
is_vassal_of = scope:actor
}
}
trigger_else = {
scope:recipient = {
is_courtier_of = scope:actor
}
}
custom_description = {
text = "release_banish_invalid_take_vows"
object = scope:recipient
scope:take_vows = no
}
scope:recruit = no #Should be impossible to have both but just in case
NOT = {
scope:recipient = {
is_spouse_of = scope:actor
}
}
}
}
send_option = {
flag = gain_hook
localization = "RELEASE_GAIN_HOOK"
is_shown = {
trigger_if = {
limit = {
scope:actor = { is_ai = yes }
}
scope:recipient = {
OR = {
is_vassal_of = scope:actor
liege ?= scope:actor
}
}
}
}
is_valid = {
scope:actor = {
can_add_hook = {
type = favor_hook #Matches the hook added in the on_accept
target = scope:recipient
}
}
}
}
send_option = {
flag = take_vows
localization = "RELEASE_TAKE_VOWS"
is_shown = {
scope:actor = { take_vows_available_trigger = yes }
}
is_valid = {
#Handle AI
trigger_if = {
limit = {
scope:actor = { is_ai = yes }
}
#We're AI and Byzantium
trigger_if = {
limit = {
scope:actor = {
culture = { has_cultural_pillar = heritage_byzantine }
}
}
scope:recipient = {
is_ai = yes #Not gonna depose player characters, for now
OR = {
is_close_or_extended_family_of = scope:actor
is_vassal_or_below_of = scope:actor #Weigh this for Byz AI in the modifiers below
has_relation_rival = scope:actor
is_courtier_of = scope:actor
}
NOT = {
is_heir_of = scope:actor
}
}
#Get rid of rivals despite potentially liking them
trigger_if = {
limit = {
scope:recipient = { has_relation_rival = scope:actor }
}
always = yes
}
#Only get rid of family members if we dislike them
trigger_else = {
scope:actor = {
opinion = {
target = scope:recipient
value <= medium_negative_opinion
}
}
}
}
#We're not Byzantium but plain AI
trigger_else = {
scope:recipient = {
is_ai = yes #Not gonna depose player characters, for now
is_close_or_extended_family_of = scope:actor
NOT = {
is_heir_of = scope:actor
}
}
scope:actor = {
opinion = {
target = scope:recipient
value <= medium_negative_opinion
}
}
custom_description = {
text = "release_vows_invalid_not_your_court"
object = scope:recipient
subject = scope:actor
OR = {
scope:recipient = { is_courtier_of = scope:actor }
scope:recruit = yes
}
}
}
}
#Enhanced Take the Vows for Byzantium players -- who do we want to boot to a monastery far, far away?
trigger_else_if = {
limit = {
scope:actor = {
culture = { has_cultural_pillar = heritage_byzantine }
}
}
scope:recipient = {
is_ai = yes #Not gonna depose player characters, for now
custom_description = {
text = "release_byz_vows_invalid"
object = scope:recipient
subject = scope:actor
OR = {
is_close_or_extended_family_of = scope:actor
is_vassal_or_below_of = scope:actor
has_relation_rival = scope:actor
is_courtier_of = scope:actor
}
}
}
}
#Otherwise standard procedure Take the Vows requirements
trigger_else = {
scope:recipient = {
is_ai = yes #Not gonna depose player characters, for now
}
scope:actor = { is_close_or_extended_family_of = scope:recipient } #Triggering I_AM_NOT instead of CHARACTER_IS_NOT makes the tooltip look less cursed
custom_description = {
text = "release_vows_invalid_not_your_court"
object = scope:recipient
subject = scope:actor
OR = {
scope:recipient = { is_courtier_of = scope:actor }
scope:recruit = yes
}
}
}
custom_description = {
text = "release_vows_invalid_not_your_faith"
object = scope:recipient
subject = scope:actor
trigger_if = {
limit = {
scope:recipient.faith != scope:actor.faith
}
scope:demand_conversion = yes
}
}
custom_description = {
text = "release_executioner_invalid_take_vows_condition"
object = scope:recipient
scope:become_executioner = no
}
custom_description = {
text = "release_banish_invalid_take_vows"
object = scope:recipient
scope:banish = no
}
scope:recipient = {
age >= 10
NOR = {
has_trait = excommunicated
has_trait = devoted
has_trait = incapable
}
#Do they have the "wrong" marriage type?
NOR = {
custom_description = {
text = is_married_matrilineally
subject = scope:recipient
any_spouse = {
is_female = yes
matrilinear_marriage = yes
}
}
custom_description = {
text = is_married_patrilineally
subject = scope:recipient
any_spouse = {
is_male = yes
patrilinear_marriage = yes
}
}
custom_description = {
text = matrilinear_betrothal
subject = scope:recipient
betrothed ?= {
is_female = yes
matrilinear_betrothal = yes
}
}
custom_description = {
text = patrilinear_betrothal
subject = scope:recipient
betrothed ?= {
is_male = yes
patrilinear_betrothal = yes
}
}
}
}
}
}
send_option = {
flag = become_executioner
localization = "RELEASE_AS_EXECUTIONER"
is_shown = {
has_ep1_court_positions_dlc_trigger = yes
scope:actor = {
has_royal_court = yes
}
scope:recipient = {
is_adult = yes
}
}
is_valid = {
scope:actor = {
can_employ_court_position_type = executioner_court_position
NOT = { employs_court_position = executioner_court_position }
}
scope:recipient = {
trigger_if = {
limit = { scope:recruit = yes }
custom_description = {
text = "release_executioner_invalid_recruit"
object = scope:recipient
scope:recruit = yes
}
}
trigger_else = {
is_courtier_of = scope:actor
}
custom_description = {
text = "release_executioner_invalid_take_vows_condition"
object = scope:recipient
scope:take_vows = no
}
NOT = { is_spouse_of = scope:actor }
}
}
}
send_option = {
flag = recruit
localization = "RELEASE_RECRUIT"
is_shown = {
trigger_if = {
limit = {
scope:actor = { is_ai = yes }
}
scope:recipient = {
OR = {
has_relation_best_friend = scope:actor
has_relation_friend = scope:actor
has_relation_lover = scope:actor
has_relation_soulmate = scope:actor
has_secret_relation_lover = scope:actor
is_heir_of = scope:actor
}
}
}
scope:recipient = {
is_ruler = no
NOT = { is_courtier_of = scope:actor }
OR = {
is_adult = yes
AND = {
is_adult = no
OR = {
trigger_if = {
limit = { exists = liege }
NOT = { is_heir_of = liege }
}
NOT = { exists = liege }
}
}
}
}
}
}
send_option = {
flag = disfigure
localization = "RELEASE_DISFIGURE"
is_shown = {
scope:actor = {
government_allows = administrative
culture = { has_cultural_tradition = tradition_ep3_palace_politics }
# If they're our partner emperor, we should use the maiming interaction instead.
liege_should_systematically_maim_co_ruler_trigger = no
}
scope:recipient = {
is_adult = yes
}
}
is_valid = {
scope:recipient = {
NOT = { has_trait = disfigured }
}
# Byzantines can't disfigure those not in their realm
trigger_if = {
limit = {
scope:actor = {
culture = { has_cultural_pillar = heritage_byzantine }
}
}
scope:recipient = {
custom_description = {
text = "release_byz_disfigure_invalid"
object = scope:recipient
subject = scope:actor
OR = {
is_close_or_extended_family_of = scope:actor
is_vassal_or_below_of = scope:actor
has_relation_rival = scope:actor
is_courtier_of = scope:actor
}
}
}
}
custom_description = {
text = "release_prisoner_disfigure_blind_castrate_condition"
object = scope:recipient
scope:blind = no
scope:castrate = no
}
}
}
send_option = {
flag = blind
localization = "RELEASE_BLIND"
is_shown = {
scope:actor = {
is_adult = yes
culture = { has_cultural_parameter = can_blind_prisoners }
# If they're our partner emperor, we should use the maiming interaction instead.
liege_should_systematically_maim_co_ruler_trigger = no
}
scope:recipient = {
is_adult = yes
}
}
is_valid = {
scope:recipient = {
NOT = { has_trait = blind }
}
custom_description = {
text = "release_prisoner_disfigure_blind_castrate_condition"
object = scope:recipient
scope:disfigure = no
scope:castrate = no
}
}
}
send_option = {
flag = castrate
localization = "RELEASE_CASTRATE"
is_shown = {
scope:recipient = {
is_imprisoned_by = scope:actor
is_eunuch_trigger = no
is_male = yes
}
scope:actor = {
is_adult = yes
culture = {
has_cultural_parameter = can_castrate_prisoners
}
# If they're our partner emperor, we should use the maiming interaction instead.
liege_should_systematically_maim_co_ruler_trigger = no
}
}
is_valid = {
scope:recipient = {
is_eunuch_trigger = no
}
custom_description = {
text = "release_prisoner_disfigure_blind_castrate_condition"
object = scope:recipient
scope:disfigure = no
scope:blind = no
}
}
}
send_option = {
flag = demand_admin
localization = "RELEASE_DEMAND_ADMIN"
is_shown = {
scope:actor = { government_allows = administrative }
scope:actor = scope:recipient.liege
scope:recipient = { #Requirements match demand admin interaction
highest_held_title_tier >= tier_county
is_landed = yes
is_ruler = yes
NOT = { government_allows = administrative }
NOT = {
scope:recipient = { government_has_flag = government_is_tribal }
}
NOT = { scope:recipient ?= scope:recipient.faith.religious_head }
NOT = { scope:recipient ?= scope:actor.diarch }
}
}
is_valid = {
scope:recipient = {
NOT = { government_allows = administrative }
}
}
}
send_options_exclusive = no
auto_accept = {
scope:demand_conversion = no
scope:renounce_claims = no
scope:banish = no
scope:gain_hook = no
scope:take_vows = no
scope:recruit = no
scope:disfigure = no
scope:blind = no
scope:castrate = no
scope:demand_admin = no
}
ai_accept = {
base = 0
modifier = {
add = 100
desc = "WANTS_FREEDOM_REASON"
}
# Basic modifiers
modifier = {
trigger = {
has_trait = ambitious
}
add = -20
desc = "RECIPIENT_IS_AMBITIOUS"
}
# Demand conversion
modifier = {
trigger = {
scope:recipient = { ai_zeal <= 20 }
scope:demand_conversion = yes
}
add = -20
desc = "CONVERSION_NEGATIVE_REASON"
}
modifier = {
trigger = {
scope:recipient = { ai_zeal > 20 }
scope:demand_conversion = yes
}
add = {
value = ai_zeal
if = {
limit = {
scope:recipient.faith = {
faith_hostility_level = {
target = scope:actor.faith
value = faith_astray_level
}
}
}
multiply = -1
}
else = {
multiply = -2
}
}
desc = "CONVERSION_NEGATIVE_REASON"
}
# Renounce claims
modifier = {
add = -25
trigger = {
scope:renounce_claims = yes
ai_greed < 0
}
desc = "RENOUNCE_CLAIMS_REASON"
}
modifier = {
add = -50
trigger = {
scope:renounce_claims = yes
ai_greed >= 0
ai_greed < 26
}
desc = "RENOUNCE_CLAIMS_REASON"
}
modifier = {
add = -75
trigger = {
scope:renounce_claims = yes
ai_greed >= 26
ai_greed < 51
}
desc = "RENOUNCE_CLAIMS_REASON"
}
modifier = {
add = -95
trigger = {
scope:renounce_claims = yes
ai_greed >= 51
}
desc = "RENOUNCE_CLAIMS_REASON"
}
# Employ executioner
modifier = {
add = -50
trigger = {
scope:become_executioner = yes
# Sadists don't care about becoming an executioner
NOR = {
has_trait = sadistic
has_trait = callous
}
}
desc = "BECOME_EXECUTIONER_REASON"
}
# Banish
modifier = {
add = -50
trigger = {
scope:banish = yes
}
NOT = {
scope:actor = {
has_imprisonment_reason = scope:recipient
culture = { has_cultural_parameter = vassals_more_likely_accept_punishments }
}
}
desc = "BANISH_NEGATIVE_REASON"
}
modifier = { # Legalistic tradition
add = legalistic_vassal_punishment_acceptance
trigger = {
scope:banish = yes
}
scope:actor = {
has_imprisonment_reason = scope:recipient
culture = { has_cultural_parameter = vassals_more_likely_accept_punishments }
}
desc = tradition_legalistic_name
}
# Gain hook
modifier = {
add = {
value = -50
if = {
limit = {
scope:recipient = {
ai_vengefulness > 0
}
}
subtract = ai_vengefulness
}
}
trigger = {
scope:gain_hook = yes
}
desc = "GAIN_HOOK_NEGATIVE_REASON"
}
# Take vows
modifier = {
add = -30
trigger = {
scope:take_vows = yes
}
desc = "TAKE_VOWS_NEGATIVE_REASON"
}
modifier = {
add = -30
trigger = {
scope:take_vows = yes
has_trait = lustful
}
desc = "TAKE_VOWS_LUSTFUL_REASON"
}
modifier = {
add = -30
trigger = {
scope:take_vows = yes
has_trait = rakish
}
desc = "TAKE_VOWS_RAKISH_REASON"
}
modifier = {
add = -30
trigger = {
scope:take_vows = yes
has_trait = fornicator
}
desc = "TAKE_VOWS_FORNICATOR_REASON"
}
modifier = {
add = -30
trigger = {
scope:take_vows = yes
has_trait = seducer
}
desc = "TAKE_VOWS_SEDUCER_REASON"
}
modifier = {
add = -30
trigger = {
scope:take_vows = yes
has_trait = deviant
}
desc = "TAKE_VOWS_DEVIANT_REASON"
}
modifier = {
add = {
value = -15
multiply = num_sinful_traits
}
trigger = {
scope:take_vows = yes
num_sinful_traits > 1
}
desc = "TAKE_VOWS_SINS_REASON"
}
modifier = {
add = -30
trigger = {
scope:take_vows = yes
has_trait = cynical
}
desc = "TAKE_VOWS_CYNICAL_REASON"
}
# Recruitment
modifier = {
add = -10
trigger = {
scope:recruit = yes
NOT = {
scope:actor = {
culture = {
has_cultural_parameter = can_recruit_prisoners_easily
}
}
}
}
desc = "RECRUITMET_NEGATIVE_REASON"
}
# Disfigure
modifier = {
add = {
value = -100
if = {
limit = {
has_trait = beauty_good
}
multiply = 2
}
}
trigger = {
scope:disfigure = yes
OR = {
NOR = {
has_trait = maimed
has_trait = beauty_bad
ai_sociability < -75
}
has_trait = beauty_good
}
}
desc = "DISFIGURE_NEGATIVE_REASON"
}
modifier = {
add = -75
trigger = {
scope:disfigure = yes
OR = {
has_trait = maimed
has_trait = beauty_bad
ai_sociability < -75
}
NOT = { has_trait = beauty_good }
}
desc = "DISFIGURE_NEGATIVE_REASON"
}
# Blind
modifier = {
add = -100
trigger = {
scope:blind = yes
NOR = {
has_trait = one_eyed
has_trait = infirm
age > 60 # I.e. they have poor eyesight already
}
}
desc = "BLIND_NEGATIVE_REASON"
}
modifier = {
add = -75
trigger = {
scope:blind = yes
OR = {
has_trait = one_eyed
has_trait = infirm
age > 60 # I.e. they have poor eyesight already
}
}
desc = "BLIND_NEGATIVE_REASON"
}
# Castrate
modifier = {
add = -75
trigger = {
scope:castrate = yes
any_child = { count > 0 }
ai_boldness < -50
}
desc = "CASTRATE_NEGATIVE_REASON"
}
modifier = {
add = -100
trigger = {
scope:castrate = yes
any_child = { count > 0 }
ai_boldness >= -50
}
desc = "CASTRATE_NEGATIVE_REASON"
}
modifier = {
add = -100
trigger = {
scope:castrate = yes
any_child = { count <= 0 }
}
desc = "CASTRATE_NO_CHILDREN_NEGATIVE_REASON"
}
modifier = {
add = -100
trigger = {
scope:castrate = yes
has_trait = lustful
}
desc = "TAKE_VOWS_LUSTFUL_REASON"
}
# Demand admin
modifier = {
add = -20
trigger = {
scope:demand_admin = yes
OR = {
culture = {
OR = {
# Historical cultures
this = culture:greek
any_parent_culture_or_above = {
this = culture:greek
}
this = culture:han
any_parent_culture_or_above = {
this = culture:han
}
# Bureaucratic culture
has_cultural_pillar = ethos_bureaucratic
}
}
# Another admin government
government_allows = administrative
}
}
desc = "DEMAND_ADMIN_NEGATIVE_REASON"
}
modifier = {
add = -50
trigger = {
scope:demand_admin = yes
NOR = {
culture = {
OR = {
# Historical cultures
this = culture:greek
any_parent_culture_or_above = {
this = culture:greek
}
this = culture:han
any_parent_culture_or_above = {
this = culture:han
}
# Bureaucratic culture
has_cultural_pillar = ethos_bureaucratic
}
}
# Another admin government
government_allows = administrative
}
culture = {
NOR = {
has_cultural_tradition = tradition_hereditary_hierarchy
has_cultural_tradition = tradition_staunch_traditionalists
}
}
}
desc = "DEMAND_ADMIN_NEGATIVE_REASON"
}
modifier = {
add = -100
trigger = {
scope:demand_admin = yes
NOR = {
culture = {
OR = {
# Historical cultures
this = culture:greek
any_parent_culture_or_above = {
this = culture:greek
}
this = culture:han
any_parent_culture_or_above = {
this = culture:han
}
# Bureaucratic culture
has_cultural_pillar = ethos_bureaucratic
}
}
# Another admin government
government_allows = administrative
}
culture = {
OR = {
has_cultural_tradition = tradition_hereditary_hierarchy
has_cultural_tradition = tradition_staunch_traditionalists
}
}
}
desc = "DEMAND_ADMIN_NEGATIVE_REASON"
}
# Struggle
modifier = {
trigger = {
scope:demand_conversion = no
scope:renounce_claims = no
scope:banish = no
scope:gain_hook = no
scope:take_vows = no
scope:recruit = no
}
scope:recipient = {
any_character_struggle = {
involvement = involved
}
}
scope:actor = {
any_character_struggle = {
involvement = involved
}
}
add = {
value = 0
if = {
limit = {
scope:recipient = {
any_character_struggle = {
phase_has_catalyst = catalyst_release_important
}
has_character_flag = agenda_towards_escalation
}
}
add = -100
}
else_if = {
limit = {
scope:recipient = {
any_character_struggle = {
phase_has_catalyst = catalyst_release_important
}
}
}
add = 200
}
}
}
}
# AI
ai_targets = {
ai_recipients = prisoners
}
ai_frequency = 1
ai_potential = {
has_prisoners = yes
}
ai_will_do = {
base = 0
modifier = {
add = 20
scope:demand_conversion = yes
}
modifier = {
add = 100
scope:demand_conversion = yes
scope:recipient = {
is_vassal_of = scope:actor
}
}
modifier = {
add = 30
scope:renounce_claims = yes
}
modifier = {
add = 50
scope:banish = yes
}
modifier = {
add = 30
scope:take_vows = yes
}
modifier = {
add = 10
scope:recruit = yes
}
modifier = {
add = 30
scope:disfigure = yes
}
modifier = {
add = 20
scope:blind = yes
}
modifier = {
add = 50
scope:castrate = yes
}
modifier = { # Rivals can rot
add = -40
scope:actor = {
NOT = {
has_trait = forgiving
}
}
scope:recipient = {
OR = {
has_relation_rival = scope:actor
has_relation_nemesis = scope:actor
scope:recipient = {
is_spouse_of = scope:actor
exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor }
}
}
}
}
modifier = { # Rivals can rot FOREVER if vengeful
add = -100
scope:actor = {
NOT = {
has_trait = forgiving
}
}
scope:actor.ai_vengefulness >= very_high_positive_ai_value
scope:recipient = {
OR = {
has_relation_rival = scope:actor
has_relation_nemesis = scope:actor
scope:recipient = {
is_spouse_of = scope:actor
exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor }
}
}
}
}
modifier = { # Compassionate characters don't want to keep children in their dungeon for too long
add = 10
scope:actor = {
is_at_war = no
ai_compassion >= low_positive_ai_value
}
scope:recipient = {
is_adult = no
time_in_prison = { years > 1 }
}
}
modifier = { # Very compassionate characters tend to release prisoners
add = 10
scope:actor = {
is_at_war = no
ai_compassion >= very_high_positive_ai_value
}
scope:recipient = {
time_in_prison = { years > 1 }
}
}
modifier = { # Somewhat compassionate characters tend to keep people in their dungeon for a while
add = 10
scope:actor = {
is_at_war = no
ai_compassion >= medium_positive_ai_value
}
scope:recipient = {
is_playable_character = no
time_in_prison = { years > 3 }
}
}
modifier = { # Only truly discompassionate characters will have their dungeon full of hapless victims after 5 years
add = 10
scope:actor = {
is_at_war = no
ai_compassion >= low_negative_ai_value
}
scope:recipient = {
is_playable_character = no
time_in_prison = { years > 5 }
}
}
modifier = { # Most AI characters will let family out...
add = 10
scope:actor = {
is_at_war = no
OR = {
ai_compassion >= very_high_positive_ai_value
AND = {
ai_compassion >= high_negative_ai_value
opinion = {
target = scope:recipient
value >= low_negative_opinion
}
}
}
}
scope:recipient = {
time_in_prison = { years > 1 }
is_playable_character = no
is_close_family_of = scope:actor
}
}
modifier = { # Almost all will let their own children out
add = 40
scope:actor = {
is_at_war = no
ai_compassion >= very_high_negative_ai_value
}
scope:recipient = {
is_playable_character = no
is_child_of = scope:actor
}
}
# Struggle
modifier = {
trigger = {
scope:demand_conversion = no
scope:renounce_claims = no
scope:banish = no
scope:gain_hook = no
scope:take_vows = no
scope:recruit = no
}
scope:recipient = {
any_character_struggle = {
involvement = involved
}
}
scope:actor = {
any_character_struggle = {
involvement = involved
}
}
add = {
value = 0
if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_release_important
}
has_character_flag = agenda_towards_escalation
}
}
add = -100
}
else_if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_release_important
}
NOT = {
ai_greed >= 25
}
OR = {
ai_compassion > 50
AND = {
ai_compassion > 0
scope:recipient = {
time_in_prison = { years > 1 }
}
}
}
}
}
add = 200
}
}
}
modifier = { # Family Feud
add = -50
scope:actor = {
house_has_feud_relation_with_trigger = { TARGET = scope:recipient }
}
}
#Byz AI can shove vassals off to remote monasteries - weigh that here
modifier = {
add = -10
scope:take_vows = yes
scope:actor = {
culture = { has_cultural_pillar = heritage_byzantine }
}
scope:recipient = { is_vassal_or_below_of = scope:actor }
}
evaluate_action_increasing_house_unity = {
VALUE = 100
}
#don't release prisoners that are tied with a prison break contract, we don't want it invalidating all the time
modifier = {
factor = 0
scope:recipient = {
has_character_flag = being_prisonbroken_by_laamp
}
}
}
}
execute_prisoner_interaction = {
interface_priority = 120
common_interaction = yes
category = interaction_category_prison
special_interaction = execute_prisoner_interaction
icon = icon_dead
desc = execute_prisoner_interaction_desc
ai_targets = {
ai_recipients = prisoners
}
ai_frequency_by_tier = {
barony = 72
county = 12
duchy = 12
kingdom = 12
empire = 12
hegemony = 12
}
ai_potential = {
is_at_war = no
}
ai_will_do = {
base = 0
opinion_modifier = {
trigger = {
scope:actor != scope:recipient
}
opinion_target = scope:recipient
multiplier = -1
}
ai_value_modifier = {
ai_compassion = -1
}
modifier = {
add = -20
ai_compassion >= low_positive_ai_value
scope:recipient = { is_adult = no }
}
# Try to avoid Kinslaying
modifier = {
add = -20
scope:actor.dynasty = scope:recipient.dynasty
NOT = { faith = { has_doctrine = doctrine_kinslaying_any_dynasty_member_crime } }
}
modifier = {
add = -20
is_close_or_extended_family_of = scope:recipient
NOT = { faith = { has_doctrine = doctrine_kinslaying_extended_family_crime } }
}
modifier = {
add = -20
is_close_family_of = scope:recipient
NOT = { faith = { has_doctrine = doctrine_kinslaying_close_kin_crime } }
}
modifier = {
add = 50
has_execute_reason = scope:recipient
OR = {
has_trait = sadistic
has_trait = lunatic
}
}
modifier = { # Executing your way to new titles is a worthy cause...
add = 20
scope:actor = {
has_execute_reason = scope:recipient
ai_greed > 0
any_heir_title = { # Execute rulers you can inherit land from
holder ?= scope:recipient
}
}
}
modifier = { # Vengeful characters enjoy executing their rivals
add = 20
scope:actor = {
has_execute_reason = scope:recipient
ai_vengefulness >= medium_positive_ai_value
OR = {
has_relation_rival = scope:recipient # Execute rivals
has_relation_nemesis = scope:recipient # Execute rivals
scope:recipient = {
is_spouse_of = scope:actor
exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor }
}
}
}
}
modifier = { # Executing your way to new titles is a worthy cause... and very greedy characters need no execution reason
add = 35
scope:actor = {
ai_greed >= very_high_positive_ai_value
any_heir_title = { # Execute rulers you can inherit land from
holder ?= scope:recipient
}
}
}
modifier = { # Vengeful characters enjoy executing their rivals, and very vengeful characters need no execution reason
add = 35
scope:actor = {
ai_vengefulness >= very_high_positive_ai_value
OR = {
has_relation_rival = scope:recipient # Execute rivals
has_relation_nemesis = scope:recipient # Execute rivals
scope:recipient = {
is_spouse_of = scope:actor
exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor }
}
}
}
}
#Scope:target has caused internal strife in the realm
character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient }
modifier = {
factor = 0
scope:actor = {
NOR = { # Do not execute unless you have some sort of reason to do it
has_execute_reason = scope:recipient
has_relation_rival = scope:recipient # Execute rivals
has_relation_nemesis = scope:recipient # Execute rivals
scope:recipient = {
is_spouse_of = scope:actor
exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor }
}
any_heir_title = { # Execute rulers you can inherit land from
holder ?= scope:recipient
}
has_trait = lunatic # Self explanatory
}
}
}
# Agenda impact
modifier = {
scope:recipient = {
any_character_struggle = {
involvement = involved
}
is_important_or_vip_struggle_character = yes
}
add = {
value = 0
if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_execute_important
}
has_character_flag = agenda_towards_escalation
}
}
add = 200
}
else_if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_execute_important
}
}
}
add = -100
}
}
}
modifier = {
scope:recipient = {
any_character_struggle = {
involvement = involved
}
has_trait = fp3_struggle_supporter
}
add = {
value = 0
if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_execute_supporter
}
has_trait = fp3_struggle_detractor
}
}
add = 200
}
else_if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_execute_supporter
}
}
}
add = -100
}
}
}
#Nomads get the special beheading stuff
modifier = {
scope:actor = {
mpo_keep_prisoners_heads_trigger = yes
scope:recipient = {
is_ruler = yes
highest_held_title_tier >= tier_county
is_adult = yes
}
NOT = {
scope:recipient.top_liege ?= {
current_military_strength > scope:actor.current_military_strength
tier_difference = {
target = scope:actor
value >= -1
}
}
}
}
NOT = {
scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active }
}
add = 10
}
#Boost further if actor if want to keep head
modifier = {
#want to keep head
scope:actor = {
mpo_keep_prisoners_heads_trigger = yes
}
scope:recipient = {
highest_held_title_tier >= tier_kingdom
is_adult = yes
}
NOT = {
scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active }
}
add = 20
}
#Boost further if actor wants to be scary
modifier = {
#want to keep head
scope:actor = {
mpo_keep_prisoners_heads_trigger = yes
scope:recipient = {
is_ruler = yes
highest_held_title_tier >= tier_county
is_adult = yes
}
OR = {
has_trait = conqueror
has_trait = greatest_of_khans
is_gurkhan = yes
}
}
NOT = {
scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active }
}
add = 30
}
modifier = {
scope:recipient = {
any_character_struggle = {
involvement = involved
}
has_trait = fp3_struggle_detractor
}
add = {
value = 0
if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_execute_detractor
}
has_trait = fp3_struggle_supporter
}
}
add = 200
}
else_if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_execute_detractor
}
}
}
add = -100
}
}
}
modifier = {
add = 200
scope:actor.faith = {
has_doctrine = tenet_extinction_of_dharma
}
scope:recipient.faith = {
religion = root.faith.religion
NOT = {
has_doctrine = tenet_extinction_of_dharma
}
}
}
#don't kill prisoners that are tied with a prison break contract, we don't want it invalidating all the time
modifier = {
factor = 0
scope:recipient = {
has_character_flag = being_prisonbroken_by_laamp
}
}
}
is_shown = {
scope:recipient = {
is_imprisoned_by = scope:actor
}
}
is_valid_showing_failures_only = {
scope:recipient = { NOT = { has_strong_hook = scope:actor } }
scope:recipient = {
custom_description = {
text = "currently_being_tortured"
NOT = { has_character_flag = is_being_tortured }
}
}
# Blocked by current struggle phase
custom_tooltip = {
text = struggle_parameter_struggle_cannot_execute_involved_prisoners
NOT = {
scope:actor = {
any_character_struggle = {
involvement = involved
has_struggle_phase_parameter = struggle_cannot_execute_involved_prisoners
is_secondary_character_involvement_involved_trigger = {
CHAR = scope:recipient
}
}
}
}
}
custom_tooltip = {
text = is_currently_being_purged_tt
scope:recipient = {
NOT = {
has_character_flag = is_currently_being_purged
}
}
}
# For use with co-ruler diarchs.
scope:recipient = { is_imprisoned_by = scope:actor }
}
cost = {
# Usually, this action is free, but during certain diarchies, we want it to cost.
prestige = liege_diarchy_surcharge_interaction_execute_prisoner_interaction_value
}
on_accept = {
# If this is a co-ruler we're executing, tell us if we have alternatives.
scope:actor = {
if = {
limit = {
OR = {
AND = {
has_diarchy_active_parameter = diarchy_is_co_rulership
diarch ?= scope:recipient
}
AND = {
scope:recipient = { has_diarchy_active_parameter = diarchy_is_co_rulership }
is_diarch_of_target = scope:recipient
}
}
}
# If the player doesn't have to execute their partner, point that out.
if = {
limit = { liege_can_maim_co_ruler_without_killing_them_trigger = yes }
custom_tooltip = execute_prisoner_interaction.tt.can_maim_diarch
}
# Otherwise, if they're out diarch, we end it.
if = {
limit = { scope:actor.diarch = scope:recipient }
end_diarchy = yes
every_player = {
limit = {
NOR = {
this = scope:actor
this = scope:recipient
}
top_liege = scope:actor.top_liege
}
trigger_event = diarchy.8022
}
}
# Else, usurp.
else = {
custom_description_no_bullet = {
text = execute_prisoner_interaction_tt_co_emperor_usurpation
object = scope:recipient
}
create_title_and_vassal_change = {
type = usurped
save_scope_as = change
}
scope:recipient = {
every_held_title = {
limit = {
OR = {
this = scope:recipient.capital_county
this = scope:recipient.capital_county.duchy
AND = {
tier = tier_county
this.duchy = scope:recipient.capital_county.duchy
}
tier >= scope:recipient.highest_held_title_tier
}
}
change_title_holder = {
holder = scope:actor
change = scope:change
}
}
every_vassal = {
custom = custom.recipient_every_vassal
change_liege = {
LIEGE = scope:actor
CHANGE = scope:change
}
}
hidden_effect = {
change_liege = {
LIEGE = scope:actor
CHANGE = scope:change
}
}
}
resolve_title_and_vassal_change = scope:change
every_player = {
limit = {
NOR = {
this = scope:actor
this = scope:recipient
}
top_liege = scope:actor.top_liege
}
trigger_event = diarchy.8023
}
}
}
# Regardless, this is legit politics, so we don't deduct legitimacy for it.
save_scope_value_as = {
name = suppress_legitimacy_from_crime
value = yes
}
}
# Now, the rest of it.
if = {
limit = { scope:recipient = { is_imprisoned_by = scope:actor } }
# Are you HumSac'ing the HoF of a faith that doesn't practice HumSac?
hidden_effect = {
scope:actor = {
humsacd_a_hof_effect = {
SACRIFICER = scope:actor
SACRIFICED_HOF = scope:recipient
}
}
}
if = {
limit = { always = scope:execution_public }
if = {
limit = {
scope:actor.capital_county = {
NOT = { has_county_modifier = held_public_execution_modifier }
}
}
custom_description_no_bullet = {
text = public_execution_tooltip
}
scope:actor = {
capital_county = {
add_county_modifier = {
modifier = held_public_execution_modifier
days = 1850
}
}
custom_tooltip = public_execution_control_effect
hidden_effect = {
every_held_title = {
title_tier = county
change_county_control = executioner_control_value
}
}
}
}
else = {
custom_description_no_bullet = {
text = public_execution_too_soon_tooltip
}
}
}
# Other Effects
if = { # Boil their skull?
limit = {
NOT = { always = scope:execution_devour }
scope:actor = {
has_relation_rival = scope:recipient
has_personality_malicious_trigger = yes
has_royal_court = yes
has_dlc_feature = court_artifacts
}
scope:recipient = {
is_adult = yes
}
}
scope:actor = {
random = {
chance = {
value = 25
if = {
limit = {
has_relation_nemesis = scope:recipient
}
add = 75
}
}
hidden_effect = {
scope:recipient = {
save_scope_as = skull_to_boil
}
trigger_event = {
id = artifact.7000
days = { 3 10 }
}
}
}
}
}
if = {
limit = {
NOT = { always = scope:execution_devour }
scope:actor = {
is_adult = no
age >= 4
is_ai = no
NOT = { has_character_flag = witnessed_execution_flag }
}
scope:recipient = {
is_adult = yes
}
}
scope:actor = { trigger_event = bp1_yearly.9045 }
}
else_if = {
limit = {
NOT = { always = scope:execution_devour }
scope:actor = {
OR = {
has_relation_friend = scope:recipient
has_relation_lover = scope:recipient
}
is_ai = no
}
scope:recipient = {
is_adult = yes
}
}
scope:actor = { trigger_event = bp1_yearly.9044 }
}
# Gallowsbait.
scope:actor = {
if = {
limit = {
has_government = landless_adventurer_government
scope:recipient = {
is_landless_adventurer = no
is_ruler = yes
}
}
if = {
limit = { scope:recipient.highest_held_title_tier >= tier_empire }
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_massive_gain
XP_MIN = gallowsbait_xp_massive_gain
}
}
else_if = {
limit = { scope:recipient.highest_held_title_tier >= tier_kingdom }
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_major_gain
XP_MIN = gallowsbait_xp_major_gain
}
}
else_if = {
limit = { scope:recipient.highest_held_title_tier >= tier_duchy }
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_medium_gain
XP_MIN = gallowsbait_xp_medium_gain
}
}
else_if = {
limit = { scope:recipient.highest_held_title_tier >= tier_barony }
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_minor_gain
XP_MIN = gallowsbait_xp_minor_gain
}
}
else = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = 2
XP_MIN = 2
}
}
}
}
# FP3
# Struggle Catalysts
scope:actor = {
if = { # Execute important
limit = {
scope:recipient = { is_important_or_vip_struggle_character = yes }
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_execute_important
CHAR = scope:recipient
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_execute_important
CHAR = scope:recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_execute_important
character = scope:actor
}
}
}
if = { # Execute Supporter/Detractor
limit = {
fp3_struggle_involves_one_supporter_and_one_detractor = {
FIRST = scope:actor
SECOND = scope:recipient
}
}
if = {
limit = {
scope:recipient = { has_trait = fp3_struggle_detractor }
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_execute_detractor
CHAR = scope:recipient
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_execute_detractor
CHAR = scope:recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_execute_detractor
character = scope:actor
}
log_debug_variable_for_persian_struggle_effect = { VAR = stabil_catalyst_execute_detractor }
}
}
else_if = {
limit = {
scope:recipient = { has_trait = fp3_struggle_supporter }
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_execute_supporter
CHAR = scope:recipient
}
}
}
every_character_struggle = {
involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_execute_supporter
CHAR = scope:recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_execute_supporter
character = scope:actor
}
log_debug_variable_for_persian_struggle_effect = { VAR = unrest_catalyst_execute_supporter }
}
}
}
# Free House Member CB target executed during war
if = {
limit = {
exists = scope:recipient.house
any_character_war = {
using_cb = fp3_free_house_member_cb
is_defender = scope:actor
primary_attacker.house = scope:recipient.house
}
}
random_character_war = {
limit = {
using_cb = fp3_free_house_member_cb
is_defender = scope:actor
primary_attacker.house = scope:recipient.house
}
primary_attacker = {
add_opinion = {
target = scope:actor
modifier = executed_close_relation_opinion
}
}
}
add_prestige = {
value = medium_piety_loss
multiply = {
value = ai_honor
add = 1
}
}
every_vassal = {
limit = {
OR = {
has_vassal_stance = courtly
has_vassal_stance = glory_hound
ai_honor > 0.48
}
}
add_opinion = {
target = scope:actor
modifier = executed_valuable_prisoner_modifier
}
}
}
}
if = {
limit = {
scope:actor.faith = {
has_doctrine = tenet_extinction_of_dharma
}
scope:recipient.faith = {
religion = scope:actor.faith.religion
NOT = {
has_doctrine = tenet_extinction_of_dharma
}
}
}
if = {
limit = {
scope:recipient = {
is_ruler = yes
highest_held_title_tier = tier_county
}
}
scope:actor = {
add_piety = minor_piety_value
}
}
else_if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_duchy
}
}
scope:actor = {
add_piety = medium_piety_value
}
}
else_if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
scope:actor = {
add_piety = major_piety_value
}
}
else_if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_empire
}
}
scope:actor = {
add_piety = massive_piety_value
}
}
else_if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_hegemony
}
}
scope:actor = {
add_piety = monumental_piety_value
}
}
else = {
scope:actor = {
add_piety = miniscule_piety_value
}
}
}
if = {
limit = {
scope:actor = {
faith = {
has_doctrine = tenet_cranial_trophies
}
}
scope:recipient = {
is_adult = yes
is_faith_dominant_gender = yes
}
}
tgp_cranial_trophies_beheading_effect = {
KILLER = scope:actor
DEAD = scope:recipient
}
}
# Kill the target
if = {
limit = {
scope:recipient = { is_ai = no }
scope:actor = { is_ai = yes }
}
scope:recipient = { trigger_event = char_interaction.0170 } # Give players a chance to see what's about to happen
show_as_tooltip = {
execute_prisoner_effect = {
VICTIM = scope:recipient
EXECUTIONER = scope:actor
}
}
}
else = {
scope:recipient = { trigger_event = char_interaction.0171 }
execute_prisoner_effect = {
VICTIM = scope:recipient
EXECUTIONER = scope:actor
}
}
if = {
limit = { always = scope:execution_devour }
scope:actor = {
custom_tooltip = devour_as_execution_tooltip
if = {
limit = {
faith = { has_doctrine_parameter = cannibalism_legal }
NOT = { has_trait = cannibal }
}
add_trait = cannibal
}
stress_impact = {
base = medium_stress_impact_loss
compassionate = miniscule_stress_impact_gain
forgiving = miniscule_stress_impact_gain
}
random = {
chance = 20
show_as_tooltip = { add_trait = ill }
hidden_effect = {
trigger_event = {
id = health.1001
days = { 3 10 }
}
}
}
}
}
if = {
limit = { always = scope:execution_provisions }
scope:actor = {
domicile ?= {
change_provisions = human_provision_value
}
}
}
if = {
limit = {
always = scope:execution_burned
scope:actor.faith = {
has_doctrine = doctrine_pluralism_fundamentalist
NOT = {
has_doctrine = tenet_extinction_of_dharma
}
}
}
scope:actor = {
add_piety = miniscule_piety_value
}
}
scope:actor = {
hidden_effect = {
send_interface_message = {
type = event_prison_neutral
title = msg_execute_prisoner
right_icon = scope:recipient
custom_tooltip = msg_execute_prisoner_desc
}
}
}
}
}
options_heading = execution_options_heading
send_option = {
is_shown = {
scope:actor = {
OR = {
mpo_keep_prisoners_heads_trigger = yes
faith = scope:recipient.faith
faith = {
has_doctrine = tenet_cranial_trophies
}
culture_has_asian_heritage_pillar_trigger = yes
}
NOT = {
faith = { has_doctrine_parameter = human_sacrifice_active }
}
}
}
flag = execution_beheaded
localization = "EXECUTION_BEHEADED"
}
#Cannibal option. Should be treated as a "normal" execution, but that you eat the body afterwards (in secret if faith does not allow it).
send_option = {
is_shown = {
scope:actor = {
OR = {
scope:actor.faith = { has_doctrine_parameter = cannibalism_legal }
has_trait = cannibal
any_secret = { type = secret_cannibal }
}
}
}
flag = execution_devour
localization = "EXECUTION_DEVOUR"
}
send_option = {
is_shown = {
scope:actor = {
NOR = {
AND = {
faith = scope:recipient.faith
faith = { has_doctrine_parameter = human_sacrifice_active }
}
mpo_keep_prisoners_heads_trigger = yes
culture_has_asian_heritage_pillar_trigger = yes
}
}
}
flag = execution_burned
localization = "EXECUTION_BURNED"
}
send_option = {
is_shown = {
scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active }
}
flag = execution_sacrifice
localization = "EXECUTION_SACRIFICE"
}
send_option = {
is_shown = {
scope:actor = {
employs_court_position = executioner_court_position
any_court_position_holder = {
type = executioner_court_position
is_physically_able = yes
}
exists = capital_county
}
}
is_valid = {
scope:actor = {
NOT = {
capital_county = {
has_county_modifier = held_public_execution_modifier
}
}
}
}
flag = execution_public
localization = "EXECUTION_PUBLIC"
}
send_option = {
is_shown = {
scope:actor = {
employs_court_position = kennelperson_camp_officer
any_court_position_holder = {
type = kennelperson_camp_officer
is_physically_able = yes
}
}
}
flag = execution_kennel
localization = "EXECUTION_KENNEL"
}
send_option = {
is_shown = {
scope:actor = {
has_government = landless_adventurer_government
has_perk = fear_tax_perk
}
}
flag = execution_provisions
localization = "EXECUTION_PROVISIONS"
}
send_options_exclusive = yes
auto_accept = yes
}
debug_imprison_simple_interaction = {
use_diplomatic_range = no
category = interaction_debug_main
ignores_pending_interaction_block = yes
icon = prison
interface_priority = 1000
common_interaction = yes
is_shown = {
debug_only = yes
scope:recipient = {
is_imprisoned = no
}
scope:recipient != scope:actor
}
on_accept = {
scope:actor = {
imprison = {
target = scope:recipient
type = house_arrest
}
}
}
auto_accept = yes
}
torture_interaction = {
interface_priority = 30
common_interaction = no
icon = torture_interaction
category = interaction_category_prison
desc = torture_interaction_desc
#cooldown = { years = 1 }
cooldown_against_recipient = { years = 5 }
is_shown = {
scope:recipient = { is_imprisoned_by = scope:actor }
scope:recipient = { is_adult = yes }
scope:actor = { is_adult = yes }
}
is_valid_showing_failures_only = {
#scope:recipient = {
# NOT = {
# health <= 1.5 #Because torture would definitely kill them
# }
#}
scope:actor = {
trigger_if = {
limit = {
domicile ?= { is_domicile_type = camp }
}
custom_tooltip = {
text = laamp_torture_requires_tools_tt
domicile = { has_domicile_parameter = camp_unlocks_torture_interaction }
}
}
}
scope:recipient = {
custom_description = {
text = "currently_being_tortured"
NOT = { has_character_flag = is_being_tortured }
}
}
cannot_release_former_regent_whilst_old_regent_holds_power_trigger = {
PRISONER = scope:recipient
REGENT = scope:recipient.var:imprisoned_by_diarch
}
tgp_blocked_action_against_tenno_trigger = {
ACTOR = scope:actor
TARGET = scope:recipient
}
custom_tooltip = {
text = is_currently_being_purged_tt
scope:recipient = {
NOT = {
has_character_flag = is_currently_being_purged
}
}
}
}
is_highlighted = {
OR = {
scope:actor = { has_trait = sadistic }
scope:actor = { has_relation_rival = scope:recipient }
scope:actor = { has_relation_nemesis = scope:recipient }
}
}
on_accept = {
scope:recipient = {
add_character_flag = {
flag = is_being_tortured
months = 6 # Players in MP can keep the event window open...
}
}
scope:actor = { save_scope_as = bg_override_char }
###EFFECT TOOLTIP###
torture_interaction_actor_effect = yes
show_as_tooltip = {
scope:recipient = {
add_character_modifier = {
modifier = recently_tortured
years = 5
}
}
}
if = {
limit = {
scope:actor = {
domicile ?= { has_domicile_parameter = estate_torture_grants_influence }
}
}
scope:actor = { custom_tooltip = estate_torture_grants_influence_desc }
}
###EVENTS###
hidden_effect = {
#Torture method for descs
random_list = {
3 = { save_scope_value_as = { name = torture_method value = flag:rack } }
3 = { save_scope_value_as = { name = torture_method value = flag:whip } }
1 = { save_scope_value_as = { name = torture_method value = flag:rats } }
8 = {
trigger = {
scope:actor = { has_trait = lifestyle_poet }
}
save_scope_value_as = {
name = torture_method
value = flag:poetry
}
}
}
#They have a secret I want to know about
if = {
limit = {
scope:recipient = {
OR = {
any_secret = {
torture_secret_trigger = { PARTICIPANT = scope:recipient }
}
any_known_secret = {
secret_owner = { save_temporary_scope_as = torture_secret_owner }
torture_secret_trigger = { PARTICIPANT = scope:torture_secret_owner }
}
}
}
}
scope:recipient = {
trigger_event = {
id = prison.1001
days = 1
}
}
}
else = {
scope:actor = {
trigger_event = {
id = prison.1010
days = 1
}
}
}
}
# Dark Insights Perk:
if = {
limit = {
scope:actor = { has_perk = dark_insights_perk }
}
scope:actor = {
dark_insights_skill_gain_roll_effect = yes
}
}
# House Relation
scope:recipient.house ?= {
change_house_relation_effect = {
HOUSE = scope:actor.house
VALUE = house_relation_damage_medium_value
REASON = torture
CHAR = scope:actor
TARGET_CHAR = scope:recipient
TITLE = scope:dummy_gender
}
}
}
auto_accept = yes
# AI
ai_targets = {
ai_recipients = prisoners
}
ai_frequency_by_tier = {
barony = 0
county = 36
duchy = 24
kingdom = 24
empire = 12
hegemony = 12
}
ai_potential = {
always = yes
}
ai_will_do = {
base = -25
modifier = {
has_trait = sadistic
add = 30
}
ai_value_modifier = {
ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters
}
opinion_modifier = {
opinion_target = scope:recipient
multiplier = -0.25
}
#Scope:target has caused internal strife in the realm
character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient }
modifier = { # Family Feud
scope:actor = {
house_has_feud_relation_with_trigger = { TARGET = scope:recipient }
}
add = 30
}
modifier = {
scope:actor = {
has_opinion_modifier = {
modifier = tried_to_escape_from_prison_opinion
target = scope:recipient
}
}
add = 25
}
}
}
castrate_interaction = {
interface_priority = 30
icon = eunuch
category = interaction_category_prison
desc = castrate_interaction_desc
is_shown = {
scope:recipient = {
is_imprisoned_by = scope:actor
is_eunuch_trigger = no
is_male = yes
}
scope:actor = {
is_adult = yes
OR = {
culture = { has_cultural_parameter = can_castrate_prisoners }
top_liege.primary_title = {
has_variable = emulating_byz_punishment_var
}
}
# If they're our partner emperor, we should use the maiming interaction instead.
liege_should_systematically_maim_co_ruler_trigger = no
}
}
is_valid_showing_failures_only = {
scope:recipient = {
custom_description = {
text = "currently_being_tortured"
NOT = { has_character_flag = is_being_tortured }
}
}
cannot_release_former_regent_whilst_old_regent_holds_power_trigger = {
PRISONER = scope:recipient
REGENT = scope:recipient.var:imprisoned_by_diarch
}
custom_tooltip = {
text = is_currently_being_purged_tt
scope:recipient = {
NOT = {
has_character_flag = is_currently_being_purged
}
}
}
}
is_highlighted = {
OR = {
scope:actor = { has_trait = sadistic }
scope:actor = { has_relation_rival = scope:recipient }
scope:recipient = {
any_claim = {
holder = scope:actor
}
}
}
}
on_accept = {
scope:recipient = {
add_character_flag = {
flag = is_being_tortured
months = 6 # Players in MP can keep the event window open...
}
}
blind_castrate_and_disfigure_effect = yes #Stress & dread
show_as_tooltip = {
scope:recipient = {
if = {
limit = {
age < 12
}
ep3_child_castration_effect = yes
}
else = {
ep3_youth_castration_effect = yes
}
release_from_prison = yes
}
}
torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated }
scope:actor = {
save_scope_as = bg_override_char
trigger_event = {
id = prison.1025
days = 1
}
}
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = major_unity_loss
DESC = clan_unity_abelarding.desc
REVERSE_NON_HOUSE_TARGET = no
}
# House Relation
scope:recipient.house ?= {
change_house_relation_effect = {
HOUSE = scope:actor.house
VALUE = house_relation_damage_medium_value
REASON = torture
CHAR = scope:actor
TARGET_CHAR = scope:recipient
TITLE = scope:dummy_gender
}
}
}
auto_accept = yes
ai_targets = {
ai_recipients = prisoners
}
ai_potential = {
always = yes
}
ai_will_do = {
base = -20
modifier = {
has_trait = sadistic
add = 20
}
ai_value_modifier = {
ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters
}
opinion_modifier = {
opinion_target = scope:recipient
multiplier = -0.25
}
#Scope:target has caused internal strife in the realm
character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient }
modifier = { # Family Feud
scope:actor = {
house_has_feud_relation_with_trigger = { TARGET = scope:recipient }
}
add = 30
}
modifier = {
scope:actor = {
has_opinion_modifier = {
modifier = tried_to_escape_from_prison_opinion
target = scope:recipient
}
}
add = 25
}
#Cruel Latins are really into this
modifier = {
top_liege.primary_title = {
has_variable = emulating_byz_punishment_var
}
add = 30
}
}
ai_frequency_by_tier = {
barony = 0
county = 144
duchy = 48
kingdom = 36
empire = 12
hegemony = 12
}
}
blind_interaction = {
interface_priority = 30
icon = blind
category = interaction_category_prison
desc = blind_interaction_desc
is_shown = {
scope:recipient = {
is_imprisoned_by = scope:actor
NOT = { has_trait = blind }
}
scope:actor = {
is_adult = yes
OR = {
culture = { has_cultural_parameter = can_blind_prisoners }
top_liege.primary_title = {
has_variable = emulating_byz_punishment_var
}
}
# If they're our partner emperor, we should use the maiming interaction instead.
liege_should_systematically_maim_co_ruler_trigger = no
}
}
is_valid_showing_failures_only = {
scope:recipient = {
custom_description = {
text = "currently_being_tortured"
NOT = { has_character_flag = is_being_tortured }
}
}
cannot_release_former_regent_whilst_old_regent_holds_power_trigger = {
PRISONER = scope:recipient
REGENT = scope:recipient.var:imprisoned_by_diarch
}
custom_tooltip = {
text = is_currently_being_purged_tt
scope:recipient = {
NOT = {
has_character_flag = is_currently_being_purged
}
}
}
}
is_highlighted = {
OR = {
scope:actor = { has_trait = sadistic }
scope:actor = { has_relation_rival = scope:recipient }
scope:recipient = {
any_claim = {
holder = scope:actor
}
}
scope:actor = {
culture = { has_cultural_parameter = merciful_blinding }
OR = {
has_execute_reason = scope:recipient
has_banish_reason = scope:recipient
}
}
}
}
on_accept = {
scope:recipient = {
add_character_flag = {
flag = is_being_tortured
months = 6 # Players in MP can keep the event window open...
}
}
blind_castrate_and_disfigure_effect = yes #Stress & dread
show_as_tooltip = {
scope:recipient = {
add_trait = blind
release_from_prison = yes
}
}
# Merciful Blindings
scope:actor = {
if = {
limit = {
culture = { has_cultural_parameter = merciful_blinding }
OR = {
has_execute_reason = scope:recipient
has_banish_reason = scope:recipient
}
}
add_piety = medium_piety_gain
}
}
torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded }
scope:actor = {
save_scope_as = bg_override_char
trigger_event = {
id = prison.1020
days = 1
}
}
# If we're a clan this interaction affects unity
if = {
limit = { scope:actor.culture = { has_cultural_parameter = merciful_blinding } } # If actor's culture has Merciful Blindings, they lose less unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_loss
DESC = clan_unity_blinding.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
else = {
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = medium_unity_loss
DESC = clan_unity_blinding.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
# House Relation
scope:recipient.house ?= {
change_house_relation_effect = {
HOUSE = scope:actor.house
VALUE = house_relation_damage_medium_value
REASON = torture
CHAR = scope:actor
TARGET_CHAR = scope:recipient
TITLE = scope:dummy_gender
}
}
}
auto_accept = yes
ai_targets = {
ai_recipients = prisoners
}
ai_potential = {
always = yes
}
ai_will_do = {
base = -20
modifier = {
has_trait = sadistic
add = 20
}
ai_value_modifier = {
ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters
}
opinion_modifier = {
opinion_target = scope:recipient
multiplier = -0.25
}
#Scope:target has caused internal strife in the realm
character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient }
modifier = { # Family Feud
scope:actor = {
house_has_feud_relation_with_trigger = { TARGET = scope:recipient }
}
add = 30
}
modifier = {
scope:actor = {
has_opinion_modifier = {
modifier = tried_to_escape_from_prison_opinion
target = scope:recipient
}
}
add = 25
}
#Cruel Latins are really into this
modifier = {
top_liege.primary_title = {
has_variable = emulating_byz_punishment_var
}
add = 30
}
}
ai_frequency_by_tier = {
barony = 0
county = 144
duchy = 48
kingdom = 36
empire = 12
hegemony = 12
}
}
prison_break_contract_interaction = {
interface_priority = 30
common_interaction = yes
icon = prison
category = interaction_category_prison
desc = prison_break_contract_interaction_desc
cooldown_against_recipient = { years = 1 }
is_shown = {
scope:actor = {
any_character_active_contract = {
task_contract_type = laamp_prison_break_contract
OR = {
var:task_contract_target = scope:recipient
var:task_contract_object = scope:recipient
var:task_contract_employer = scope:recipient
}
}
}
}
redirect = {
scope:actor = {
random_character_active_contract = {
task_contract_type = laamp_prison_break_contract
limit = {
OR = {
var:task_contract_target = scope:recipient
var:task_contract_object = scope:recipient
var:task_contract_employer = scope:recipient
}
}
var:task_contract_object = {
save_scope_as = secondary_recipient
}
var:task_contract_target = {
save_scope_as = recipient
}
var:task_contract_employer = {
save_scope_as = secondary_actor
}
}
}
}
is_highlighted = {
always = yes
}
on_accept = {
scope:actor = {
start_scheme = {
type = laamp_prison_break_scheme
target_character = scope:recipient
}
random_scheme = {
type = laamp_prison_break_scheme
limit = {
scheme_target_character = scope:recipient
}
save_scope_as = scheme
}
#save scopes for scheme start event
scope:secondary_recipient = {
save_scope_as = task_contract_object
}
scope:recipient = {
save_scope_as = task_contract_target
}
scope:secondary_actor = {
save_scope_as = task_contract_employer
}
trigger_event = laamp_extra_contract_schemes.0011
}
}
auto_accept = yes
}
systematically_maim_character_interaction = {
interface_priority = 30
icon = torture_interaction
category = interaction_category_diarch
common_interaction = no
desc = systematically_maim_character_interaction_desc
is_shown = {
scope:actor = { liege_should_systematically_maim_co_ruler_trigger = yes }
}
is_valid_showing_failures_only = {
scope:actor = { is_adult = yes }
scope:recipient = {
custom_description = {
text = "currently_being_tortured"
NOT = { has_character_flag = is_being_tortured }
}
}
scope:recipient = { is_imprisoned_by = scope:actor }
# There's literally nothing left to remove.
scope:recipient = {
NAND = {
OR = {
is_eunuch_trigger = yes
is_female = yes
}
has_trait = blind
has_trait = disfigured
has_trait = maimed
has_trait = one_legged
}
}
}
send_option = {
flag = maim_castrate
is_valid = {
scope:recipient = {
NOR = {
is_eunuch_trigger = yes
is_female = yes
}
}
}
localization = maim_castrate_name
current_description = maim_castrate
}
send_option = {
flag = maim_blind
is_valid = {
scope:recipient = {
NOT = { has_trait = blind }
}
}
localization = maim_blind_name
current_description = maim_blind
}
send_option = {
flag = maim_face
is_valid = {
scope:recipient = {
NOT = { has_trait = disfigured }
}
}
localization = maim_face_name
current_description = maim_face
}
send_option = {
flag = maim_leg
is_valid = {
scope:recipient = {
NOT = { has_trait = one_legged }
}
}
localization = maim_leg_name
current_description = maim_leg
}
send_option = {
flag = maim_arm
is_valid = {
scope:recipient = {
NOT = { has_trait = maimed }
}
}
localization = maim_arm_name
current_description = maim_arm
}
on_accept = {
scope:recipient = {
add_character_flag = {
flag = is_being_tortured
months = 6 # Players in MP can keep the event window open...
}
}
# Stress & dread
blind_castrate_and_disfigure_effect = yes
# Our diarchy will be destroyed.
save_scope_value_as = {
name = destroy_diarchy
value = yes
}
show_as_tooltip = {
scope:actor = { maiming_destroy_diarchy_effect = yes }
}
# Let the enchoppening begin.
## Castrate.
if = {
limit = { scope:maim_castrate = yes }
show_as_tooltip = {
scope:recipient = {
if = {
limit = {
age < 12
}
ep3_child_castration_effect = yes
}
else = {
ep3_youth_castration_effect = yes
}
release_from_prison = yes
}
}
torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated }
scope:actor = {
clear_designated_heir = yes
trigger_event = {
id = prison.1025
days = 1
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = major_unity_loss
DESC = clan_unity_abelarding.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
## Blind.
if = {
limit = { scope:maim_blind = yes }
show_as_tooltip = {
scope:recipient = {
add_trait = blind
release_from_prison = yes
}
}
torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded }
scope:actor = {
clear_designated_heir = yes
# Merciful Blindings
if = {
limit = {
culture = { has_cultural_parameter = merciful_blinding }
OR = {
has_execute_reason = scope:recipient
has_banish_reason = scope:recipient
}
}
add_piety = medium_piety_gain
}
trigger_event = {
id = prison.1020
days = 1
}
}
# If actor's culture has Merciful Blindings, they lose less unity.
if = {
limit = {
scope:actor.culture = { has_cultural_parameter = merciful_blinding }
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_loss
DESC = clan_unity_blinding.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
else = {
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = medium_unity_loss
DESC = clan_unity_blinding.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
}
## Disfigure.
if = {
limit = { scope:maim_face = yes }
show_as_tooltip = {
scope:recipient = {
add_trait = disfigured
release_from_prison = yes
}
}
torture_blind_castrate_disfigure_opinion_effect = { VERB = disfigured }
scope:actor = {
clear_designated_heir = yes
trigger_event = {
id = prison.1030
days = 1
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = major_unity_loss
DESC = clan_unity_maimed.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
## Take off an arm.
if = {
limit = { scope:maim_arm = yes }
show_as_tooltip = {
scope:recipient = {
apply_maimed_trait_and_modifier_effect = yes
release_from_prison = yes
}
}
torture_blind_castrate_disfigure_opinion_effect = { VERB = maimed }
scope:actor = {
clear_designated_heir = yes
save_scope_value_as = {
name = maim_type
value = flag:arm
}
trigger_event = {
id = prison.1041
days = 1
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = major_unity_loss
DESC = clan_unity_maimed.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
## Take off a leg.
if = {
limit = { scope:maim_leg = yes }
show_as_tooltip = {
scope:recipient = {
add_trait = one_legged
release_from_prison = yes
}
}
torture_blind_castrate_disfigure_opinion_effect = { VERB = maimed }
scope:actor = {
clear_designated_heir = yes
save_scope_value_as = {
name = maim_type
value = flag:leg
}
trigger_event = {
id = prison.1041
days = 1
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = major_unity_loss
DESC = clan_unity_maimed.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
}
auto_accept = yes
ai_targets = { ai_recipients = prisoners }
ai_potential = {
has_diarchy_active_parameter = diarchy_is_co_rulership
liege_can_maim_co_ruler_without_killing_them_trigger = yes
}
ai_will_do = {
base = -50
modifier = {
has_trait = sadistic
add = 50
}
modifier = {
has_trait = callous
add = 40
}
ai_value_modifier = {
ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters
}
opinion_modifier = {
opinion_target = scope:recipient
multiplier = -1
}
#Scope:target has caused internal strife in the realm
character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient }
modifier = { # Family Feud
scope:actor = {
house_has_feud_relation_with_trigger = { TARGET = scope:recipient }
}
add = 30
}
modifier = {
scope:actor = {
has_opinion_modifier = {
modifier = tried_to_escape_from_prison_opinion
target = scope:recipient
}
}
add = 25
}
}
ai_frequency_by_tier = {
barony = 0
county = 0
duchy = 0
kingdom = 60
empire = 60
hegemony = 60
}
}