1552 lines
34 KiB
Plaintext
1552 lines
34 KiB
Plaintext
prisoner_release_expanded_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
|
|
}
|
|
desc = RELEASE_PRISONER_OFFER
|
|
}
|
|
desc = RELEASE_PRISONER_OFFER_CONDITIONAL
|
|
}
|
|
}
|
|
|
|
is_shown = {
|
|
AND = {
|
|
scope:recipient = {
|
|
is_imprisoned_by = scope:actor
|
|
}
|
|
scope:actor = {
|
|
is_ai = no
|
|
is_imprisoned = no
|
|
exists = court_position:master_warden_court_position
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
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 = yes }
|
|
}
|
|
banish = yes
|
|
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_landed = 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
|
|
}
|
|
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_landed = 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
|
|
}
|
|
}
|
|
}
|
|
############################################################### This is is execute if option
|
|
if = {
|
|
limit = {
|
|
scope:demand_strong_hook = yes
|
|
}
|
|
|
|
add_opinion = {
|
|
modifier = demanded_hook
|
|
target = scope:actor
|
|
}
|
|
|
|
scope:actor = {
|
|
duel = {
|
|
skill = intrigue
|
|
target = scope:recipient
|
|
35 = {
|
|
desc = prisoner_release_expanded_strong_hook_option_success
|
|
compare_modifier = {
|
|
value = scope:duel_value
|
|
multiplier = 3.5
|
|
min = -49
|
|
}
|
|
|
|
add_hook = {
|
|
target = scope:recipient
|
|
type = loyalty_hook
|
|
}
|
|
|
|
}
|
|
|
|
65 = {
|
|
desc = prisoner_release_expanded_strong_hook_option_failure
|
|
compare_modifier = {
|
|
value = scope:duel_value
|
|
multiplier = -3.5
|
|
min = -49
|
|
}
|
|
|
|
send_interface_toast = {
|
|
title = prisoner_release_expanded_strong_hook_option_failure_toast_title
|
|
left_icon = scope:recipient
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
add_character_flag = {
|
|
flag = flag_mod_expanded_option_demand_strong_hook
|
|
months = 2
|
|
}
|
|
}
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
scope:expanded_option_ransom = yes
|
|
}
|
|
scope:recipient = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient.gold > 0
|
|
}
|
|
pay_short_term_gold = {
|
|
target = scope:actor
|
|
gold = scope:recipient.gold
|
|
}
|
|
}
|
|
else = {
|
|
pay_short_term_gold = {
|
|
target = scope:actor
|
|
gold = 0
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
add_character_flag = {
|
|
flag = flag_mod_expanded_option_seize_gold
|
|
months = 3
|
|
}
|
|
}
|
|
}
|
|
|
|
# Take Vows
|
|
if = {
|
|
limit = {
|
|
scope:take_vows = yes
|
|
}
|
|
send_child_to_clergy_effect = yes
|
|
}
|
|
|
|
# Take Vows
|
|
if = {
|
|
limit = {
|
|
scope:become_executioner = yes
|
|
}
|
|
release_as_executioner_effect = yes
|
|
}
|
|
|
|
# No Demands Added
|
|
if = {
|
|
limit = {
|
|
scope:expanded_option_ransom = no
|
|
scope:demand_strong_hook = no
|
|
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
|
|
}
|
|
# Notification to the imprisoner
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
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
|
|
}
|
|
}
|
|
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_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 = {
|
|
release_from_prison = scope:recipient
|
|
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
|
|
}
|
|
}
|
|
############################################################ this is send option
|
|
send_option = {
|
|
flag = expanded_option_ransom
|
|
localization = "Seize Gold"
|
|
|
|
is_shown = {
|
|
exists = scope:actor
|
|
scope:recipient.gold > 0
|
|
scope:actor = {
|
|
NOT = {
|
|
has_character_flag = flag_mod_expanded_option_seize_gold
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid = {
|
|
always = yes
|
|
}
|
|
|
|
|
|
}
|
|
|
|
send_option = {
|
|
flag = demand_strong_hook
|
|
localization = "Demand Strong Hook"
|
|
|
|
is_shown = {
|
|
exists = scope:actor
|
|
scope:actor = {
|
|
NOT = {
|
|
has_character_flag = flag_mod_expanded_option_demand_strong_hook
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid = {
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_ai = yes }
|
|
}
|
|
scope:recipient = {
|
|
OR = {
|
|
is_vassal_of = scope:actor
|
|
AND = {
|
|
exists = liege
|
|
liege = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
can_add_hook = {
|
|
type = loyalty_hook #Matches the hook added in the on_accept
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
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_landed = 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_landed = no
|
|
is_ruler = no
|
|
gold > scope:actor.gold
|
|
gold > scope:actor.medium_gold_value
|
|
scope:actor.ai_greed > low_negative_ai_value
|
|
}
|
|
AND = {
|
|
is_landed = no
|
|
is_ruler = no
|
|
gold > 0
|
|
scope:actor = {
|
|
has_banish_reason = scope:recipient
|
|
}
|
|
}
|
|
AND = {
|
|
is_landed = 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_landed = 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
|
|
}
|
|
}
|
|
#scope:recipient = {
|
|
# trigger_if = {
|
|
# limit = { exists = liege }
|
|
# liege = scope:actor
|
|
# }
|
|
# is_pool_character = no
|
|
#}
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
flag = gain_hook
|
|
localization = "RELEASE_GAIN_HOOK"
|
|
is_valid = {
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_ai = yes }
|
|
}
|
|
scope:recipient = {
|
|
OR = {
|
|
is_vassal_of = scope:actor
|
|
AND = {
|
|
exists = liege
|
|
liege = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 = {
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_ai = yes }
|
|
}
|
|
scope:recipient = {
|
|
is_close_or_extended_family_of = scope:actor
|
|
NOT = {
|
|
is_heir_of = scope:actor
|
|
}
|
|
}
|
|
scope:actor = {
|
|
opinion = {
|
|
target = scope:recipient
|
|
value <= medium_negative_opinion
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
custom_description = {
|
|
text = "release_take_vows_invalid_recruit"
|
|
object = scope:recipient
|
|
OR = {
|
|
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 }
|
|
}
|
|
}
|
|
}
|
|
|
|
send_options_exclusive = no
|
|
|
|
auto_accept = {
|
|
scope:expanded_option_ransom = no
|
|
scope:demand_strong_hook = no
|
|
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 = 1
|
|
modifier = {
|
|
add = 100
|
|
desc = "WANTS_FREEDOM_REASON"
|
|
}
|
|
modifier = {
|
|
trigger = {
|
|
scope:expanded_option_ransom = yes
|
|
}
|
|
add = {
|
|
value = -20
|
|
if = {
|
|
limit = {
|
|
gold > 200
|
|
}
|
|
multiply = 2.5
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
AND = {
|
|
gold <= 200
|
|
gold > 100
|
|
}
|
|
}
|
|
multiply = 1.5
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
has_trait = greedy
|
|
}
|
|
multiply = 3
|
|
}
|
|
|
|
}
|
|
desc = "GOLD_NEGATIVE_REASON"
|
|
}
|
|
modifier = {
|
|
trigger = {
|
|
scope:demand_strong_hook = yes
|
|
}
|
|
add = {
|
|
value = -65
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
ai_vengefulness > 0
|
|
}
|
|
}
|
|
subtract = 10
|
|
}
|
|
}
|
|
desc = "GAIN_HOOK_NEGATIVE_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 = -10
|
|
trigger = {
|
|
scope:recruit = yes
|
|
NOT = {
|
|
scope:actor = {
|
|
culture = {
|
|
has_cultural_parameter = can_recruit_prisoners_easily
|
|
}
|
|
}
|
|
}
|
|
}
|
|
desc = "RECRUITMET_NEGATIVE_REASON"
|
|
}
|
|
# Struggle
|
|
modifier = {
|
|
trigger = {
|
|
scope:expanded_option_ransom = yes
|
|
scope:demand_strong_hook = no
|
|
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 = { # 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_landed = 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_landed = 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_landed = 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_landed = 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
|
|
}
|
|
}
|
|
}
|
|
|
|
evaluate_action_increasing_house_unity = {
|
|
VALUE = 100
|
|
}
|
|
}
|
|
}
|