N3OW/common/character_interactions/00_modifiy_vassal_contract.txt

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
}
}
}