1162 lines
30 KiB
Text
1162 lines
30 KiB
Text
liege_modify_vassal_contract_interaction = {
|
|
special_interaction = liege_modify_vassal_contract
|
|
interface = modify_vassal_contract
|
|
category = interaction_category_vassal
|
|
common_interaction = yes
|
|
icon = icon_contract_modification_single
|
|
|
|
send_name = "modify_vassal_contract_interaction_SEND"
|
|
desc = liege_modify_vassal_contract_interaction_desc
|
|
|
|
force_notification = yes
|
|
notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
NOT = { this = scope:actor }
|
|
exists = liege
|
|
liege = scope:actor
|
|
is_ruler = yes
|
|
vassal_contract_has_modifiable_obligations = yes
|
|
NOT = { has_government = administrative_government }
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = {
|
|
is_busy_in_events_localised = yes
|
|
}
|
|
NOT = { scope:actor = { is_at_war_with = scope:recipient } }
|
|
}
|
|
|
|
can_send = {
|
|
trigger_if = { #If they're blocked we don't want to show anything else
|
|
limit = {
|
|
scope:recipient = {
|
|
vassal_contract_is_blocked_from_modification = yes
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
vassal_contract_is_blocked_from_modification = no
|
|
}
|
|
}
|
|
trigger_else = {
|
|
scope:actor = {
|
|
has_changed_contract_obligation_trigger = yes
|
|
|
|
custom_description = {
|
|
text = "liege_modify_vassal_contract_cannot_exceed_tyranny_cap"
|
|
object = scope:actor
|
|
NOT = {
|
|
vassal_obligation_increase_tyranny_gain_multiplier > 1
|
|
}
|
|
}
|
|
|
|
# Cannot change more than three things at once
|
|
custom_description = {
|
|
text = "vassal_modify_vassal_contract_obligation_change_limit"
|
|
value = list_size:changed_obligations
|
|
list_size:changed_obligations <= max_contract_changes
|
|
}
|
|
|
|
# If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook
|
|
save_temporary_scope_value_as = {
|
|
name = obligations_favoring_vassal
|
|
value = scope:recipient.count_obligation_improvements_for_vassal
|
|
}
|
|
trigger_if = {
|
|
limit = { scope:obligations_favoring_vassal > 0 }
|
|
custom_description = {
|
|
text = "vassal_modify_vassal_contract_unnecessary_hook_usage_vassal_favor"
|
|
object = scope:recipient
|
|
value = scope:obligations_favoring_vassal
|
|
NOT = { always = scope:hook }
|
|
}
|
|
}
|
|
trigger_else_if = {
|
|
limit = { scope:obligations_favoring_vassal = 0 }
|
|
custom_description = {
|
|
text = "vassal_modify_vassal_contract_unnecessary_hook_usage_equal"
|
|
object = scope:recipient
|
|
NOT = { always = scope:hook }
|
|
}
|
|
}
|
|
trigger_else = {} # Otherwise we're fine!
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
on_accept = {
|
|
hidden_effect = {
|
|
# Struggle Catalysts
|
|
## We work these out first so they're not invalidated by the actual effect block.
|
|
if = {
|
|
limit = {
|
|
catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient }
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
limit = {
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
character = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient }
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
limit = {
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
|
|
character = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Improving contract catalyst
|
|
if = {
|
|
limit = {
|
|
scope:recipient.count_obligation_improvements_for_vassal > 0
|
|
scope:actor = {
|
|
is_diff_faith_or_culture_trigger = {
|
|
CHAR = scope:recipient
|
|
STATUS = involved
|
|
}
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
limit = {
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
character = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Enact changes.
|
|
scope:actor = {
|
|
send_interface_message = {
|
|
type = msg_vassal_contract_change
|
|
title = modify_vassal_contract_interaction_notification
|
|
right_icon = scope:recipient
|
|
# Add tyranny for each level increased. Can spend one hook to avoid one level of tyranny hit.
|
|
add_tyranny = vassal_obligation_increase_tyranny_gain
|
|
if = {
|
|
limit = { vassal_obligation_increase_tyranny_gain != 0 }
|
|
stress_impact = {
|
|
just = medium_stress_impact_gain
|
|
generous = medium_stress_impact_gain
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
always = scope:hook
|
|
}
|
|
use_hook = scope:recipient
|
|
add_achievement_flag_effect = { FLAG = achievement_fine_print_flag }
|
|
}
|
|
|
|
scope:recipient = {
|
|
hidden_effect = {
|
|
set_vassal_contract_modification_blocked = yes
|
|
}
|
|
}
|
|
|
|
every_in_list = {
|
|
list = changed_obligations
|
|
|
|
save_scope_as = obligation
|
|
|
|
scope:recipient = {
|
|
vassal_contract_set_obligation_level = {
|
|
type = scope:obligation.vassal_contract_type
|
|
level = scope:obligation
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
# Additional Flavor Titles
|
|
scope:recipient = { additional_flavor_check_effect = yes }
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
vassal_modify_vassal_contract_interaction = {
|
|
special_interaction = liege_modify_vassal_contract
|
|
interface = modify_vassal_contract
|
|
category = interaction_category_vassal
|
|
common_interaction = yes
|
|
icon = icon_contract_modification_single
|
|
|
|
send_name = "modify_vassal_contract_interaction_SEND"
|
|
desc = vassal_modify_vassal_contract_interaction_desc
|
|
|
|
force_notification = yes
|
|
notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_LIEGE
|
|
|
|
redirect = {
|
|
# need to reverse the role for the UI to work properly
|
|
scope:recipient = {
|
|
save_scope_as = secondary_recipient
|
|
}
|
|
scope:actor = {
|
|
save_scope_as = recipient
|
|
}
|
|
|
|
scope:secondary_recipient = {
|
|
save_scope_as = actor
|
|
}
|
|
}
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
is_independent_ruler = no
|
|
NOT = { this = scope:actor }
|
|
liege = scope:actor
|
|
vassal_contract_has_modifiable_obligations = yes
|
|
NOT = { has_government = administrative_government }
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:actor = { is_busy_in_events_localised = yes }
|
|
NOT = { scope:recipient = { is_at_war_with = scope:actor } }
|
|
}
|
|
|
|
can_send = {
|
|
trigger_if = { #If you're blocked we don't want to show anything else
|
|
limit = {
|
|
scope:recipient = {
|
|
vassal_contract_is_blocked_from_modification = yes
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
vassal_contract_is_blocked_from_modification = no
|
|
}
|
|
}
|
|
trigger_else = {
|
|
scope:actor = {
|
|
has_changed_contract_obligation_trigger = yes
|
|
}
|
|
|
|
scope:recipient = {
|
|
# Must be an even trade overall
|
|
custom_description = {
|
|
text = "vassal_modify_vassal_contract_cannot_increase_obligation_level"
|
|
object = scope:actor
|
|
value = count_obligation_improvements_for_vassal_include_hook
|
|
count_obligation_improvements_for_vassal_include_hook = 0
|
|
}
|
|
|
|
# Cannot change more than three things at once
|
|
custom_description = {
|
|
text = "vassal_modify_vassal_contract_obligation_change_limit"
|
|
value = list_size:changed_obligations
|
|
list_size:changed_obligations <= max_contract_changes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
on_accept = {
|
|
# Enact changes.
|
|
scope:recipient = {
|
|
send_interface_message = {
|
|
type = msg_vassal_contract_change
|
|
title = modify_vassal_contract_interaction_notification
|
|
right_icon = scope:actor
|
|
if = {
|
|
limit = { always = scope:hook }
|
|
use_hook = scope:actor
|
|
add_achievement_flag_effect = { FLAG = achievement_fine_print_flag }
|
|
}
|
|
|
|
hidden_effect = { set_vassal_contract_modification_blocked = yes }
|
|
|
|
every_in_list = {
|
|
list = changed_obligations
|
|
|
|
save_scope_as = obligation
|
|
|
|
scope:recipient = {
|
|
vassal_contract_set_obligation_level = {
|
|
type = scope:obligation.vassal_contract_type
|
|
level = scope:obligation
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# If there's a diarch involved, and they called in their change, that gets flagged.
|
|
diarch_changed_own_contract_effect = yes
|
|
|
|
hidden_effect = {
|
|
# Struggle Catalysts
|
|
## We work these out first so they're not invalidated by the actual effect block.
|
|
if = {
|
|
limit = {
|
|
catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient }
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
limit = {
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
character = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Improving contract catalyst
|
|
if = {
|
|
limit = {
|
|
scope:recipient.count_obligation_improvements_for_vassal > 0
|
|
scope:actor = {
|
|
is_diff_faith_or_culture_trigger = {
|
|
CHAR = scope:recipient
|
|
STATUS = involved
|
|
}
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
limit = {
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
character = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Additional Flavor Titles
|
|
scope:recipient = { additional_flavor_check_effect = yes }
|
|
}
|
|
|
|
send_option = {
|
|
is_valid = {
|
|
scope:recipient = {
|
|
has_usable_hook = scope:actor
|
|
}
|
|
}
|
|
flag = hook
|
|
localization = SCHEME_HOOK
|
|
}
|
|
send_option = {
|
|
is_shown = {
|
|
scope:recipient = { is_diarch_of_target = scope:actor }
|
|
}
|
|
is_valid = {
|
|
scope:recipient = {
|
|
trigger_if = {
|
|
limit = { has_variable_list = diarch_contract_rights_used_list }
|
|
NOT = {
|
|
is_target_in_variable_list = {
|
|
name = diarch_contract_rights_used_list
|
|
target = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
flag = diarch
|
|
localization = CALL_IN_DIARCH_RIGHTS
|
|
}
|
|
should_use_extra_icon = {
|
|
scope:recipient = { has_usable_hook = scope:actor }
|
|
}
|
|
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
|
|
send_options_exclusive = no
|
|
}
|
|
|
|
ai_only_liege_modify_vassal_contract_interaction = {
|
|
category = interaction_category_vassal
|
|
send_name = "modify_vassal_contract_interaction_SEND"
|
|
desc = liege_modify_vassal_contract_interaction_desc
|
|
|
|
auto_accept = yes
|
|
|
|
is_shown = {
|
|
scope:actor = {
|
|
is_ai = yes
|
|
OR = {
|
|
has_usable_hook = scope:recipient
|
|
AND = {
|
|
has_government = administrative_government
|
|
scope:recipient = { has_government = administrative_government }
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
NOT = { this = scope:actor }
|
|
NOT = {
|
|
has_strong_hook = scope:actor
|
|
}
|
|
exists = liege
|
|
liege = scope:actor
|
|
is_ruler = yes
|
|
OR = {
|
|
vassal_contract_can_be_modified_trigger = yes
|
|
has_government = administrative_government
|
|
}
|
|
does_ai_liege_in_vassal_contract_desire_obligation_change = yes
|
|
}
|
|
scope:recipient = { is_busy_in_events_localised = yes }
|
|
NOT = { scope:actor = { is_at_war_with = scope:recipient } }
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
stress_impact = {
|
|
generous = minor_stress_impact_gain
|
|
}
|
|
}
|
|
|
|
scope:recipient = {
|
|
set_vassal_contract_modification_blocked = yes
|
|
trigger_event = char_interaction.0250
|
|
}
|
|
|
|
# Additional Flavor Titles
|
|
scope:recipient = { additional_flavor_check_effect = yes }
|
|
}
|
|
|
|
ai_potential = {
|
|
trigger_if = {
|
|
limit = {
|
|
NOT = { government_has_flag = government_is_administrative }
|
|
}
|
|
is_at_war = no
|
|
}
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = vassals
|
|
}
|
|
ai_frequency = 24
|
|
|
|
ai_will_do = {
|
|
base = 100
|
|
|
|
modifier = {
|
|
factor = 0
|
|
scope:recipient = {
|
|
OR = {
|
|
AND = {
|
|
scope:actor = {
|
|
ai_greed <= high_positive_ai_value
|
|
}
|
|
has_relation_friend = scope:actor
|
|
}
|
|
has_relation_best_friend = scope:actor
|
|
has_relation_soulmate = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
ai_only_vassal_modify_vassal_contract_interaction = {
|
|
category = interaction_category_vassal
|
|
send_name = "modify_vassal_contract_interaction_SEND"
|
|
desc = vassal_modify_vassal_contract_interaction_desc
|
|
|
|
auto_accept = yes
|
|
|
|
is_shown = {
|
|
scope:actor = {
|
|
is_ai = yes
|
|
is_independent_ruler = no
|
|
has_usable_hook = scope:recipient
|
|
vassal_contract_can_be_modified_trigger = yes
|
|
does_ai_vassal_in_vassal_contract_desire_obligation_change = yes
|
|
}
|
|
scope:recipient = {
|
|
NOT = { this = scope:actor }
|
|
is_ruler = yes
|
|
NOT = {
|
|
has_strong_hook = scope:actor
|
|
}
|
|
}
|
|
scope:recipient = { is_busy_in_events_localised = yes }
|
|
NOT = { scope:actor = { is_at_war_with = scope:recipient } }
|
|
}
|
|
|
|
on_accept = {
|
|
scope:recipient = {
|
|
trigger_event = char_interaction.0251
|
|
}
|
|
|
|
# Additional Flavor Titles
|
|
scope:recipient = { additional_flavor_check_effect = yes }
|
|
}
|
|
|
|
ai_potential = {
|
|
always = yes
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = liege
|
|
}
|
|
ai_frequency = 24
|
|
|
|
ai_will_do = {
|
|
base = 100
|
|
|
|
modifier = {
|
|
factor = 0
|
|
scope:recipient = {
|
|
OR = {
|
|
AND = {
|
|
scope:actor = {
|
|
ai_greed <= high_positive_ai_value
|
|
}
|
|
has_relation_friend = scope:actor
|
|
}
|
|
has_relation_best_friend = scope:actor
|
|
has_relation_soulmate = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Separate interactions are set up for Administrative - This is to help with localisation and some of the effects
|
|
admin_liege_modify_vassal_contract_interaction = {
|
|
special_interaction = liege_modify_vassal_contract
|
|
interface = modify_vassal_contract
|
|
category = interaction_category_vassal
|
|
common_interaction = yes
|
|
interface_priority = 1000
|
|
icon = icon_contract_modification_single
|
|
|
|
send_name = admin_liege_modify_vassal_contract_interaction
|
|
desc = admin_liege_modify_vassal_contract_interaction_desc
|
|
|
|
force_notification = yes
|
|
notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
NOT = { this = scope:actor }
|
|
exists = liege
|
|
liege = scope:actor
|
|
is_ruler = yes
|
|
vassal_contract_has_modifiable_obligations = yes
|
|
has_government = administrative_government
|
|
any_held_title = {
|
|
tier >= tier_duchy
|
|
is_noble_family_title = no
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = {
|
|
is_busy_in_events_localised = yes
|
|
}
|
|
NOT = { scope:actor = { is_at_war_with = scope:recipient } }
|
|
}
|
|
|
|
can_send = {
|
|
trigger_if = { #If they're blocked we don't want to show anything else
|
|
limit = {
|
|
scope:recipient = {
|
|
vassal_contract_is_blocked_from_modification = yes
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
vassal_contract_is_blocked_from_modification = no
|
|
}
|
|
}
|
|
trigger_else = {
|
|
# There is no cooldown present - To make sure we somehow don't show both cooldowns at the same time, we split them into separate triggers
|
|
trigger_if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
has_variable = admin_contract_cooldown
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = admin_contract_cooldown_desc
|
|
scope:recipient = {
|
|
NOT = { has_variable = admin_contract_cooldown }
|
|
}
|
|
}
|
|
}
|
|
trigger_else = {
|
|
scope:actor = {
|
|
has_changed_contract_obligation_trigger = yes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
on_accept = {
|
|
hidden_effect = {
|
|
# Struggle Catalysts
|
|
## We work these out first so they're not invalidated by the actual effect block.
|
|
if = {
|
|
limit = {
|
|
catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient }
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
limit = {
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
character = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient }
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
limit = {
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection
|
|
character = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Improving contract catalyst
|
|
if = {
|
|
limit = {
|
|
scope:recipient.count_obligation_improvements_for_vassal > 0
|
|
scope:actor = {
|
|
is_diff_faith_or_culture_trigger = {
|
|
CHAR = scope:recipient
|
|
STATUS = involved
|
|
}
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
limit = {
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
character = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Enact changes.
|
|
scope:actor = {
|
|
send_interface_message = {
|
|
type = msg_vassal_contract_change
|
|
title = modify_vassal_contract_interaction_notification
|
|
right_icon = scope:recipient
|
|
|
|
scope:recipient = {
|
|
hidden_effect = {
|
|
set_variable = {
|
|
name = admin_contract_cooldown
|
|
value = yes
|
|
years = admin_contract_cooldown_value
|
|
}
|
|
}
|
|
}
|
|
|
|
every_in_list = {
|
|
list = changed_obligations
|
|
|
|
save_scope_as = obligation
|
|
|
|
scope:recipient = {
|
|
vassal_contract_set_obligation_level = {
|
|
type = scope:obligation.vassal_contract_type
|
|
level = scope:obligation
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
# Additional Flavor Titles
|
|
scope:recipient = { additional_flavor_check_effect = yes }
|
|
}
|
|
|
|
send_options_exclusive = no
|
|
}
|
|
|
|
admin_vassal_modify_vassal_contract_interaction = {
|
|
special_interaction = vassal_modify_vassal_contract
|
|
interface = modify_vassal_contract
|
|
category = interaction_category_vassal
|
|
interface_priority = 65
|
|
common_interaction = yes
|
|
icon = icon_contract_modification_single
|
|
|
|
filter_tags = { admin_liege }
|
|
|
|
send_name = "admin_vassal_modify_vassal_contract_interaction_send"
|
|
desc = admin_vassal_modify_vassal_contract_interaction_desc
|
|
|
|
is_shown = {
|
|
scope:actor = {
|
|
is_independent_ruler = no
|
|
NOT = { this = scope:recipient }
|
|
liege = scope:recipient
|
|
vassal_contract_has_modifiable_obligations = yes
|
|
has_government = administrative_government
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = { is_busy_in_events_localised = yes }
|
|
NOT = { scope:recipient = { is_at_war_with = scope:actor } }
|
|
scope:actor = {
|
|
custom_tooltip = {
|
|
text = admin_vassal_not_holding_a_theme_desc
|
|
any_held_title = {
|
|
tier >= tier_duchy
|
|
is_noble_family_title = no
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
can_send = {
|
|
trigger_if = { #If you're blocked we don't want to show anything else (we don't really use this for admin, but we'll keep the logic, just in case)
|
|
limit = {
|
|
scope:actor = {
|
|
vassal_contract_is_blocked_from_modification = yes
|
|
}
|
|
}
|
|
scope:actor = {
|
|
vassal_contract_is_blocked_from_modification = no
|
|
}
|
|
}
|
|
trigger_else = {
|
|
# There is no cooldown present - To make sure we somehow don't show both cooldowns at the same time, we split them into separate triggers
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
has_variable = admin_contract_cooldown
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = admin_contract_cooldown_desc_vassal
|
|
scope:actor = {
|
|
NOT = { has_variable = admin_contract_cooldown }
|
|
}
|
|
}
|
|
}
|
|
trigger_else = {
|
|
custom_tooltip = {
|
|
text = admin_contract_request_cooldown_desc
|
|
scope:actor = {
|
|
NOT = { has_variable = admin_contract_request_cooldown }
|
|
}
|
|
}
|
|
scope:actor = {
|
|
has_changed_contract_obligation_trigger = yes
|
|
}
|
|
}
|
|
|
|
# You can afford the influence cost
|
|
trigger_if = {
|
|
limit = {
|
|
NOR = {
|
|
scope:hook = yes
|
|
scope:dominant_family = yes
|
|
}
|
|
}
|
|
scope:actor = {
|
|
influence >= major_influence_value
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_tooltip = {
|
|
text = admin_vassal_force_obligation_change_desc
|
|
OR = {
|
|
scope:hook = yes
|
|
scope:dominant_family = yes
|
|
scope:diarch = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
# Enact changes
|
|
scope:actor = {
|
|
send_interface_message = {
|
|
type = msg_vassal_contract_change
|
|
title = modify_vassal_contract_interaction_notification
|
|
right_icon = scope:recipient
|
|
|
|
# If you use a hook - Spend it
|
|
if = {
|
|
limit = { always = scope:hook }
|
|
use_hook = scope:recipient
|
|
add_achievement_flag_effect = { FLAG = achievement_fine_print_flag }
|
|
}
|
|
|
|
# If you didn't use a hook or leveraged your position as a Dominant Family, pay Influence
|
|
if = {
|
|
limit = {
|
|
has_changed_contract_obligation_trigger = yes # Don't show the cost unless we actually change the contract
|
|
NOR = {
|
|
scope:hook = yes
|
|
scope:dominant_family = yes
|
|
scope:diarch = yes
|
|
}
|
|
}
|
|
scope:actor = {
|
|
change_influence = major_influence_loss
|
|
}
|
|
}
|
|
|
|
# Activate cooldown - To prevent liege from changing it too soon
|
|
hidden_effect = {
|
|
set_variable = {
|
|
name = admin_contract_cooldown
|
|
value = yes
|
|
years = admin_contract_cooldown_value
|
|
}
|
|
}
|
|
|
|
every_in_list = {
|
|
list = changed_obligations
|
|
|
|
save_scope_as = obligation
|
|
|
|
scope:actor = {
|
|
vassal_contract_set_obligation_level = {
|
|
type = scope:obligation.vassal_contract_type
|
|
level = scope:obligation
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# If there's a diarch involved, and they called in their change, that gets flagged.
|
|
diarch_changed_own_contract_effect = yes
|
|
|
|
hidden_effect = {
|
|
# Struggle Catalysts
|
|
## We work these out first so they're not invalidated by the actual effect block.
|
|
if = {
|
|
limit = {
|
|
catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient }
|
|
scope:recipient = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
limit = {
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
CHAR = scope:actor
|
|
}
|
|
}
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection
|
|
character = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Improving contract catalyst
|
|
if = {
|
|
limit = {
|
|
scope:actor.count_obligation_improvements_for_vassal > 0
|
|
scope:recipient = {
|
|
is_diff_faith_or_culture_trigger = {
|
|
CHAR = scope:actor
|
|
STATUS = involved
|
|
}
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
CHAR = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
every_character_struggle = {
|
|
involvement = involved
|
|
limit = {
|
|
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
|
|
CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
CHAR = scope:actor
|
|
}
|
|
}
|
|
activate_struggle_catalyst = {
|
|
catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal
|
|
character = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
# Activate cooldown - You may only ask for it to be changed every so often (this mostly exists for MP, since you cannot send it to the AI unless they accept)
|
|
hidden_effect = {
|
|
scope:actor = {
|
|
set_variable = {
|
|
name = admin_contract_request_cooldown
|
|
value = yes
|
|
years = admin_contract_cooldown_value
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Send Options
|
|
# Hook
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = {
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
}
|
|
flag = hook
|
|
localization = SCHEME_HOOK
|
|
}
|
|
# Dominant Family
|
|
send_option = {
|
|
is_shown = {
|
|
scope:actor = {
|
|
house ?= { is_dominant_family = yes }
|
|
}
|
|
}
|
|
flag = dominant_family
|
|
localization = OPTION_DOMINANT_FAMILY
|
|
}
|
|
# Diarch
|
|
send_option = {
|
|
is_shown = {
|
|
scope:actor = { is_diarch_of_target = scope:recipient }
|
|
}
|
|
is_valid = {
|
|
scope:actor = {
|
|
trigger_if = {
|
|
limit = { has_variable_list = diarch_contract_rights_used_list }
|
|
NOT = {
|
|
is_target_in_variable_list = {
|
|
name = diarch_contract_rights_used_list
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
flag = diarch
|
|
localization = CALL_IN_DIARCH_RIGHTS
|
|
}
|
|
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
|
|
|
|
ai_accept = {
|
|
base = -25
|
|
|
|
# Opinion Factor
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = 1
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
|
|
# Governor efficiency - Skilled governors are more likely to get accepted
|
|
modifier = {
|
|
add = scope:actor.governor_efficiency_presented
|
|
desc = AI_GOVERNOR_EFFICIENCY
|
|
}
|
|
|
|
# Members of a powerful family are more likely to get accepted
|
|
modifier = {
|
|
scope:actor = {
|
|
house ?= { is_powerful_family = yes }
|
|
NOT = { house ?= scope:recipient.house }
|
|
}
|
|
add = 50
|
|
desc = AI_POWERFUL_FAMILY
|
|
}
|
|
|
|
# Members of the emperors family are much more likely to get accepted
|
|
modifier = {
|
|
scope:actor = {
|
|
house ?= scope:recipient.house
|
|
}
|
|
add = 60
|
|
desc = AI_SAME_HOUSE
|
|
}
|
|
}
|
|
}
|