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