7528 lines
170 KiB
Text
7528 lines
170 KiB
Text
imprison_interaction = {
|
|
interface_priority = 120
|
|
common_interaction = yes
|
|
icon = prison
|
|
|
|
category = interaction_category_hostile
|
|
highlighted_reason = 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 = {
|
|
NAND = {
|
|
is_landless_adventurer = yes
|
|
reverse_has_opinion_modifier = {
|
|
target = scope:actor
|
|
modifier = eviction_ignored_opinion
|
|
}
|
|
}
|
|
}
|
|
}
|
|
desc = imprison_decline_summary
|
|
}
|
|
}
|
|
|
|
ai_potential = {
|
|
NOT = { has_realm_law_flag = cannot_imprison }
|
|
is_imprisoned = no
|
|
}
|
|
|
|
is_shown = {
|
|
NOT = { scope:actor = scope:recipient }
|
|
scope:actor = {
|
|
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 = {
|
|
allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient }
|
|
}
|
|
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 }
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
trigger_if = {
|
|
limit = {
|
|
is_landless_adventurer = yes
|
|
reverse_has_opinion_modifier = {
|
|
target = scope:actor
|
|
modifier = eviction_ignored_opinion
|
|
}
|
|
}
|
|
is_travelling = no
|
|
}
|
|
}
|
|
}
|
|
|
|
is_highlighted = {
|
|
scope:recipient = {
|
|
is_imprisoned = no
|
|
}
|
|
scope:actor = {
|
|
has_imprisonment_reason = scope:recipient
|
|
}
|
|
}
|
|
|
|
#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
|
|
}
|
|
|
|
on_send = {
|
|
scope:actor = {
|
|
add_character_flag = {
|
|
flag = flag_hostile_actions_disabled_delay
|
|
days = 10
|
|
}
|
|
}
|
|
}
|
|
|
|
on_auto_accept = {
|
|
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
|
|
}
|
|
scope:recipient = {
|
|
trigger_event = char_interaction.0233
|
|
}
|
|
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 }
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
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 = {
|
|
is_landless_adventurer = yes
|
|
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
|
|
}
|
|
NOT = { 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 = {
|
|
NOT = { 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 = {
|
|
NOT = { 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 = 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_amkingtier_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_is_type = claimant_faction
|
|
faction_is_at_war = yes
|
|
exists = special_character
|
|
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 = {
|
|
has_accolade_parameter = accolade_imprisonment_chance
|
|
}
|
|
}
|
|
desc = THUG_REASON
|
|
add = accolade_imprisonment_chance_value
|
|
}
|
|
modifier = {
|
|
scope:actor = {
|
|
any_active_accolade = {
|
|
has_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
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = {
|
|
ai_recipients = vassals
|
|
chance = 0.5
|
|
}
|
|
ai_targets = {
|
|
ai_recipients = courtiers
|
|
chance = 0.25
|
|
}
|
|
ai_frequency = 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 = {
|
|
add = 200
|
|
scope:actor = {
|
|
has_imprisonment_reason = scope:recipient
|
|
}
|
|
}
|
|
|
|
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
|
|
NOT = { 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
|
|
}
|
|
}
|
|
}
|
|
|
|
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 = { is_busy_in_events_localised = yes }
|
|
scope:recipient = {
|
|
custom_description = {
|
|
text = "currently_being_tortured"
|
|
NOT = { has_character_flag = is_being_tortured }
|
|
}
|
|
}
|
|
}
|
|
|
|
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 = {
|
|
NOT = { 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 = 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 = {
|
|
exists = scope:actor.house
|
|
exists = scope:recipient.house
|
|
scope:actor = {
|
|
house.house_head = {
|
|
any_owned_story = {
|
|
story_type = story_cycle_house_feud
|
|
has_variable = house_feud_house
|
|
var:house_feud_house = scope:recipient.house
|
|
}
|
|
}
|
|
has_opinion_modifier = {
|
|
modifier = house_feud_opinion
|
|
target = scope:recipient.house.house_head
|
|
}
|
|
}
|
|
}
|
|
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 = { is_busy_in_events_localised = yes }
|
|
scope:recipient = {
|
|
custom_description = {
|
|
text = "currently_being_tortured"
|
|
NOT = { has_character_flag = is_being_tortured }
|
|
}
|
|
}
|
|
}
|
|
|
|
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 = {
|
|
NOT = { 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
|
|
}
|
|
NOT = {
|
|
scope:actor = scope:recipient
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
trigger_if = {
|
|
limit = {
|
|
scope:invalid = yes
|
|
}
|
|
always = no
|
|
}
|
|
|
|
scope:recipient = { is_busy_in_events_localised = yes } #Payer
|
|
scope:secondary_recipient = { is_busy_in_events_localised = yes } #Prisoner
|
|
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
|
|
}
|
|
}
|
|
|
|
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 = {
|
|
NOT = { 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 = {
|
|
exists = dynasty
|
|
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 = {
|
|
exists = dynasty
|
|
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
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
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
|
|
}
|
|
NOT = {
|
|
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
|
|
}
|
|
NOT = {
|
|
scope:recipient = scope:secondary_recipient
|
|
}
|
|
scope:recipient.ai_greed <= medium_negative_ai_value
|
|
desc = AI_VALUE_MODIFIER_GENEROUS
|
|
}
|
|
modifier = {
|
|
add = -10
|
|
NOT = { 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
|
|
NOT = { 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 = 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
|
|
AND = {
|
|
exists = liege
|
|
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 = {
|
|
factor = 0
|
|
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 = {
|
|
NOT = {
|
|
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
|
|
}
|
|
}
|
|
NOT = {
|
|
scope:actor = scope:recipient
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = { is_busy_in_events_localised = yes } #Imprisoner
|
|
scope:secondary_recipient = { is_busy_in_events_localised = yes } #Prisoner
|
|
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
|
|
}
|
|
}
|
|
|
|
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 = {
|
|
exists = dynasty
|
|
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 = {
|
|
exists = dynasty
|
|
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 = {
|
|
exists = dynasty
|
|
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 = {
|
|
exists = dynasty
|
|
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
|
|
}
|
|
|
|
#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
|
|
}
|
|
|
|
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
|
|
NOT = { 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
|
|
}
|
|
}
|
|
|
|
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_targets = {
|
|
ai_recipients = spouses
|
|
}
|
|
ai_targets = {
|
|
ai_recipients = scripted_relations
|
|
}
|
|
ai_targets = {
|
|
ai_recipients = liege
|
|
}
|
|
ai_targets = {
|
|
ai_recipients = neighboring_rulers
|
|
ai_recipients = peer_vassals
|
|
ai_recipients = top_realm_domicile_owners
|
|
max = 5
|
|
}
|
|
ai_frequency = 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
|
|
AND = {
|
|
exists = liege
|
|
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
|
|
AND = {
|
|
exists = liege
|
|
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
|
|
AND = {
|
|
exists = liege
|
|
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:recipient = { is_busy_in_events_localised = yes } #Imprisoner
|
|
scope:actor = { is_busy_in_events_localised = yes } #Prisoner
|
|
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
|
|
}
|
|
}
|
|
|
|
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 = {
|
|
exists = dynasty
|
|
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 = {
|
|
exists = dynasty
|
|
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
|
|
}
|
|
|
|
#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
|
|
}
|
|
|
|
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 = {
|
|
NOT = { 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 = {
|
|
exists = scope:actor.house
|
|
exists = scope:recipient.house
|
|
scope:recipient = {
|
|
house.house_head = {
|
|
any_owned_story = {
|
|
story_type = story_cycle_house_feud
|
|
has_variable = house_feud_house
|
|
var:house_feud_house = scope:actor.house
|
|
}
|
|
}
|
|
has_opinion_modifier = {
|
|
modifier = house_feud_opinion
|
|
target = scope:actor.house.house_head
|
|
}
|
|
}
|
|
}
|
|
desc = INTERACTION_FAMILY_FEUD_REVERSE_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = 25
|
|
scope:influence_send_option = yes
|
|
desc = INFLUENCE_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 = 24
|
|
|
|
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = 100
|
|
scope:favor = yes
|
|
scope:recipient = {
|
|
OR = {
|
|
is_vassal_of = scope:actor
|
|
AND = {
|
|
exists = liege
|
|
liege = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = -100
|
|
scope:favor = yes
|
|
scope:recipient = {
|
|
NOR = {
|
|
is_vassal_of = scope:actor
|
|
AND = {
|
|
exists = liege
|
|
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
|
|
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 = { is_busy_in_events_localised = yes } #Prisoner
|
|
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
|
|
}
|
|
}
|
|
|
|
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
|
|
NOT = {
|
|
has_character_flag = realm_priest
|
|
}
|
|
}
|
|
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
|
|
}
|
|
}
|
|
|
|
# Take Vows
|
|
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
|
|
}
|
|
}
|
|
|
|
# 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
|
|
}
|
|
# 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
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
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 = {
|
|
NOT = { 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
|
|
NOT = {
|
|
AND = {
|
|
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
|
|
AND = {
|
|
exists = liege
|
|
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.faith = {
|
|
has_doctrine_parameter = take_vows_active
|
|
}
|
|
}
|
|
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 = {
|
|
NOT = { 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
|
|
exists = betrothed
|
|
betrothed = {
|
|
is_female = yes
|
|
matrilinear_betrothal = yes
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = patrilinear_betrothal
|
|
subject = scope:recipient
|
|
exists = betrothed
|
|
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 = {
|
|
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 = {
|
|
has_government = administrative_government
|
|
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_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
|
|
}
|
|
|
|
ai_accept = {
|
|
base = 0
|
|
modifier = {
|
|
add = 100
|
|
desc = "WANTS_FREEDOM_REASON"
|
|
}
|
|
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"
|
|
}
|
|
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 = -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"
|
|
}
|
|
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"
|
|
}
|
|
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
|
|
}
|
|
modifier = {
|
|
add = {
|
|
value = -50
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
ai_vengefulness > 0
|
|
}
|
|
}
|
|
subtract = ai_vengefulness
|
|
}
|
|
}
|
|
trigger = {
|
|
scope:gain_hook = yes
|
|
}
|
|
desc = "GAIN_HOOK_NEGATIVE_REASON"
|
|
}
|
|
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"
|
|
}
|
|
modifier = {
|
|
add = -10
|
|
trigger = {
|
|
scope:recruit = yes
|
|
NOT = {
|
|
scope:actor = {
|
|
culture = {
|
|
has_cultural_parameter = can_recruit_prisoners_easily
|
|
}
|
|
}
|
|
}
|
|
}
|
|
desc = "RECRUITMET_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
|
|
exists = scope:actor.house
|
|
exists = scope:recipient.house
|
|
scope:actor = {
|
|
house.house_head = {
|
|
any_owned_story = {
|
|
story_type = story_cycle_house_feud
|
|
has_variable = house_feud_house
|
|
var:house_feud_house = scope:recipient.house
|
|
}
|
|
}
|
|
has_opinion_modifier = {
|
|
modifier = house_feud_opinion
|
|
target = scope:recipient.house.house_head
|
|
}
|
|
}
|
|
}
|
|
#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 = 12
|
|
|
|
ai_potential = {
|
|
is_at_war = no
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 0
|
|
|
|
opinion_modifier = {
|
|
trigger = {
|
|
NOT = { 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
|
|
exists = holder
|
|
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
|
|
exists = holder
|
|
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
|
|
exists = holder
|
|
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
|
|
}
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
}
|
|
#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 = { is_busy_in_events_localised = yes } #Prisoner
|
|
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# 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 = {
|
|
limit = {
|
|
tier = 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 = {
|
|
is_landless_adventurer = yes
|
|
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# 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
|
|
}
|
|
}
|
|
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.faith = scope:recipient.faith
|
|
NOT = {
|
|
scope:actor.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 = { secret_type = secret_cannibal }
|
|
}
|
|
}
|
|
}
|
|
flag = execution_devour
|
|
localization = "EXECUTION_DEVOUR"
|
|
}
|
|
|
|
send_option = {
|
|
is_shown = {
|
|
NOT = {
|
|
scope:actor.faith = scope:recipient.faith
|
|
scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active }
|
|
}
|
|
}
|
|
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 = {
|
|
is_landless_adventurer = yes
|
|
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
|
|
}
|
|
NOT = {
|
|
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
|
|
}
|
|
}
|
|
|
|
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 = 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
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = {
|
|
ai_recipients = prisoners
|
|
}
|
|
|
|
ai_frequency = 24
|
|
|
|
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
|
|
exists = scope:actor.house
|
|
exists = scope:recipient.house
|
|
scope:actor = {
|
|
house.house_head = {
|
|
any_owned_story = {
|
|
story_type = story_cycle_house_feud
|
|
has_variable = house_feud_house
|
|
var:house_feud_house = scope:recipient.house
|
|
}
|
|
}
|
|
has_opinion_modifier = {
|
|
modifier = house_feud_opinion
|
|
target = scope:recipient.house.house_head
|
|
}
|
|
}
|
|
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
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
|
|
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
|
|
exists = scope:actor.house
|
|
exists = scope:recipient.house
|
|
scope:actor = {
|
|
house.house_head = {
|
|
any_owned_story = {
|
|
story_type = story_cycle_house_feud
|
|
has_variable = house_feud_house
|
|
var:house_feud_house = scope:recipient.house
|
|
}
|
|
}
|
|
has_opinion_modifier = {
|
|
modifier = house_feud_opinion
|
|
target = scope:recipient.house.house_head
|
|
}
|
|
}
|
|
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 = 36
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
}
|
|
|
|
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
|
|
exists = scope:actor.house
|
|
exists = scope:recipient.house
|
|
scope:actor = {
|
|
house.house_head = {
|
|
any_owned_story = {
|
|
story_type = story_cycle_house_feud
|
|
has_variable = house_feud_house
|
|
var:house_feud_house = scope:recipient.house
|
|
}
|
|
}
|
|
has_opinion_modifier = {
|
|
modifier = house_feud_opinion
|
|
target = scope:recipient.house.house_head
|
|
}
|
|
}
|
|
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 = 36
|
|
}
|
|
|
|
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 = {
|
|
has_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 = {
|
|
limit = {
|
|
has_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
|
|
}
|
|
}
|
|
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 = {
|
|
limit = {
|
|
scheme_type = laamp_prison_break_scheme
|
|
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 }
|
|
}
|
|
|
|
#TODO_CD_EP3_POLISH; the copy in the below events could _really_ use some polishing up. It's okay but it's a bit meh, and it'd be nice if it reacted more to who you're maiming and why.
|
|
|
|
# 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
|
|
exists = scope:actor.house
|
|
exists = scope:recipient.house
|
|
scope:actor = {
|
|
house.house_head = {
|
|
any_owned_story = {
|
|
story_type = story_cycle_house_feud
|
|
has_variable = house_feud_house
|
|
var:house_feud_house = scope:recipient.house
|
|
}
|
|
}
|
|
has_opinion_modifier = {
|
|
modifier = house_feud_opinion
|
|
target = scope:recipient.house.house_head
|
|
}
|
|
}
|
|
add = 30
|
|
}
|
|
modifier = {
|
|
scope:actor = {
|
|
has_opinion_modifier = {
|
|
modifier = tried_to_escape_from_prison_opinion
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
add = 25
|
|
}
|
|
}
|
|
|
|
ai_frequency = 60
|
|
}
|