1173 lines
24 KiB
Text
1173 lines
24 KiB
Text
recruit_guest_interaction = {
|
|
category = interaction_category_vassal
|
|
icon = guest
|
|
common_interaction = yes
|
|
|
|
special_ai_interaction = recruit_courtier
|
|
|
|
desc = recruit_guest_interaction_desc
|
|
|
|
should_use_extra_icon = {
|
|
NOT = { scope:recipient = { is_close_family_of = scope:actor } }
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
|
|
|
|
is_shown = {
|
|
NOT = { scope:actor = scope:recipient }
|
|
scope:recipient = { is_pool_guest_of = scope:actor }
|
|
scope:actor = {
|
|
is_ruler = yes
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = {
|
|
is_ruler = no
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
NOR = {
|
|
scope:recipient = { is_close_family_of = scope:actor } # Close family members are free
|
|
scope:actor = { has_usable_hook = scope:recipient } # Using a hook makes it free
|
|
}
|
|
}
|
|
scope:actor = {
|
|
gold >= scope:recipient.recruit_guest_interaction_cost
|
|
}
|
|
}
|
|
}
|
|
|
|
can_send = {
|
|
# check if we're using the hook (is_valid_showing_failures_only checks only if we have a hook), else we need to be able to afford it
|
|
trigger_if = {
|
|
limit = {
|
|
NOR = {
|
|
AND = { exists = scope:hook always = scope:hook }
|
|
scope:recipient = { is_close_family_of = scope:actor }
|
|
}
|
|
scope:actor = { has_usable_hook = scope:recipient } # without this the is_valid_showing_failures_only above shows the same error
|
|
}
|
|
scope:actor = {
|
|
gold >= scope:recipient.recruit_guest_interaction_cost
|
|
}
|
|
}
|
|
}
|
|
|
|
send_options_exclusive = no
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = {
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
}
|
|
flag = hook
|
|
localization = SCHEME_HOOK
|
|
}
|
|
send_option = { # EP3 Influence
|
|
is_shown = { # Actor must have a government that uses influence
|
|
scope:actor = {
|
|
government_has_flag = government_has_influence
|
|
}
|
|
}
|
|
is_valid = {
|
|
# Actor has enough influence
|
|
scope:actor = { influence >= minor_influence_value }
|
|
}
|
|
flag = influence_send_option
|
|
localization = INFLUENCE_SEND_OPTION
|
|
}
|
|
|
|
on_accept = {
|
|
scope:recipient = {
|
|
every_traveling_family_member = {
|
|
add_to_temporary_list = recruiting_family
|
|
}
|
|
}
|
|
|
|
if = {
|
|
limit = { scope:recipient = { is_close_family_of = scope:actor } } # Close family members are free
|
|
# do nothing
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:hook }
|
|
scope:actor = { use_hook = scope:recipient }
|
|
}
|
|
else_if = {
|
|
limit = { always = scope:influence_send_option }
|
|
scope:actor = { change_influence = minor_influence_loss }
|
|
}
|
|
else = {
|
|
scope:recipient = {
|
|
save_temporary_scope_as = most_expensive_person
|
|
|
|
every_in_list = {
|
|
list = recruiting_family
|
|
|
|
if = {
|
|
limit = { this.individual_recruit_guest_interaction_cost >= scope:most_expensive_person.individual_recruit_guest_interaction_cost }
|
|
save_temporary_scope_as = most_expensive_person
|
|
}
|
|
}
|
|
}
|
|
|
|
scope:actor = {
|
|
pay_short_term_gold = {
|
|
target = scope:most_expensive_person
|
|
gold = scope:most_expensive_person.recruit_guest_interaction_cost_with_list #This value needs a list with the name "recruiting_family"
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
scope:actor = {
|
|
send_interface_message = {
|
|
type = event_generic_neutral
|
|
title = msg_recruited_guest_to_court_interaction_title
|
|
right_icon = scope:recipient
|
|
stress_impact = {
|
|
shy = minor_stress_impact_gain
|
|
paranoid = minor_stress_impact_gain
|
|
}
|
|
every_in_list = {
|
|
list = recruiting_family
|
|
scope:actor = {
|
|
add_courtier ?= prev
|
|
}
|
|
remove_variable = last_visited_ruler # Even though it times out automatically, removing it here saves cycles for performance.
|
|
add_opinion = {
|
|
target = scope:actor
|
|
opinion = 50
|
|
modifier = grateful_opinion
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
# AI
|
|
ai_targets = {
|
|
ai_recipients = guests
|
|
}
|
|
ai_frequency = 12
|
|
|
|
ai_potential = {
|
|
is_at_war = no # Try to avoid wasting your war chest!
|
|
ai_has_conqueror_personality = no
|
|
short_term_gold >= yearly_character_income
|
|
any_courtier_or_guest = {
|
|
is_alive = yes
|
|
count <= 30
|
|
}
|
|
ai_should_focus_on_building_in_their_capital = no
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 0
|
|
|
|
#Lacking councillors
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:actor = {
|
|
NOT = { exists = cp:councillor_chancellor }
|
|
}
|
|
scope:recipient = {
|
|
OR = {
|
|
AND = {
|
|
is_male = yes
|
|
scope:actor = { faith_dominant_gender_male_or_equal = yes }
|
|
}
|
|
AND = {
|
|
is_female = yes
|
|
scope:actor = { faith_dominant_gender_female_or_equal = yes }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
target = scope:recipient
|
|
value = diplomacy
|
|
offset = {
|
|
value = 0
|
|
subtract = decent_skill_rating
|
|
}
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:actor = {
|
|
NOT = { exists = cp:councillor_marshal }
|
|
}
|
|
scope:recipient = {
|
|
OR = {
|
|
AND = {
|
|
is_male = yes
|
|
scope:actor = { faith_dominant_gender_male_or_equal = yes }
|
|
}
|
|
AND = {
|
|
is_female = yes
|
|
scope:actor = { faith_dominant_gender_female_or_equal = yes }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
target = scope:recipient
|
|
value = martial
|
|
offset = {
|
|
value = 0
|
|
subtract = decent_skill_rating
|
|
}
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:actor = {
|
|
NOT = { exists = cp:councillor_steward }
|
|
}
|
|
scope:recipient = {
|
|
OR = {
|
|
AND = {
|
|
is_male = yes
|
|
scope:actor = { faith_dominant_gender_male_or_equal = yes }
|
|
}
|
|
AND = {
|
|
is_female = yes
|
|
scope:actor = { faith_dominant_gender_female_or_equal = yes }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
target = scope:recipient
|
|
value = stewardship
|
|
offset = {
|
|
value = 0
|
|
subtract = decent_skill_rating
|
|
}
|
|
}
|
|
compare_modifier = {
|
|
trigger = { scope:actor = { NOT = { exists = cp:councillor_spymaster } } }
|
|
target = scope:recipient
|
|
value = intrigue
|
|
offset = {
|
|
value = 0
|
|
subtract = decent_skill_rating
|
|
}
|
|
}
|
|
|
|
#Lacking court physician
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:actor = { court_physician_available_trigger = no }
|
|
scope:recipient = {
|
|
would_be_valid_for_court_position = {
|
|
employer = scope:actor
|
|
court_position = court_physician_court_position
|
|
}
|
|
}
|
|
}
|
|
target = scope:recipient
|
|
value = learning
|
|
offset = {
|
|
value = 0
|
|
subtract = decent_skill_rating
|
|
}
|
|
}
|
|
|
|
#Lacking knights
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:recipient.prowess >= decent_skill_rating
|
|
scope:recipient = {
|
|
can_be_knight_trigger = { ARMY_OWNER = scope:actor }
|
|
}
|
|
scope:actor = {
|
|
OR = {
|
|
number_of_knights < max_number_of_knights
|
|
any_knight = {
|
|
prowess < decent_skill_rating
|
|
}
|
|
}
|
|
}
|
|
}
|
|
target = scope:recipient
|
|
value = prowess
|
|
offset = {
|
|
value = 0
|
|
subtract = decent_skill_rating
|
|
}
|
|
}
|
|
|
|
|
|
#Vested interest
|
|
modifier = {
|
|
add = 20
|
|
scope:recipient = {
|
|
OR = {
|
|
has_relation_lover = scope:actor
|
|
has_relation_friend = scope:actor
|
|
has_secret_relation_lover = scope:actor
|
|
has_relation_soulmate = scope:actor
|
|
has_relation_best_friend = scope:actor
|
|
is_child_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
#Claimants
|
|
modifier = {
|
|
scope:recipient = {
|
|
any_claim = {
|
|
neighboring_useful_courtier_or_guest_claim_trigger = { RULER = scope:actor }
|
|
}
|
|
}
|
|
add = {
|
|
value = 0
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
any_claim = {
|
|
neighboring_useful_courtier_or_guest_claim_trigger = { RULER = scope:actor }
|
|
tier >= tier_duchy
|
|
}
|
|
}
|
|
}
|
|
add = 40
|
|
}
|
|
else = {
|
|
add = 30
|
|
}
|
|
}
|
|
}
|
|
|
|
# Make it all more likely
|
|
modifier = {
|
|
factor = 4
|
|
}
|
|
|
|
# The AI will always use a hook if it can
|
|
modifier = {
|
|
scope:hook = yes
|
|
add = 1
|
|
}
|
|
}
|
|
}
|
|
|
|
kick_from_court_interaction = {
|
|
category = interaction_category_vassal
|
|
icon = guest
|
|
|
|
|
|
desc = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = { scope:recipient = { is_foreign_court_or_pool_guest = yes } }
|
|
desc = kick_from_court_interaction_desc_guest
|
|
}
|
|
desc = kick_from_court_interaction_desc
|
|
}
|
|
}
|
|
|
|
is_shown = {
|
|
NOT = { scope:actor = scope:recipient }
|
|
scope:recipient = {
|
|
OR = {
|
|
is_courtier_of = scope:actor
|
|
is_pool_guest_of = scope:actor
|
|
}
|
|
bp2_valid_for_standard_interactions_trigger = yes
|
|
}
|
|
}
|
|
|
|
cost = {
|
|
prestige = {
|
|
if = {
|
|
limit = {
|
|
scope:actor = { is_landless_adventurer = yes }
|
|
}
|
|
value = minor_prestige_value
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
any_traveling_family_member = {
|
|
count = all
|
|
is_lowborn = yes
|
|
}
|
|
}
|
|
}
|
|
value = minor_prestige_value
|
|
}
|
|
else = {
|
|
value = medium_prestige_value
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = {
|
|
kick_from_court_validity_trigger = yes
|
|
|
|
custom_description = {
|
|
text = "kick_from_court_interaction_travelling_family_invalid"
|
|
subject = scope:recipient
|
|
NOT = {
|
|
any_traveling_family_member = {
|
|
NOT = { this = scope:recipient }
|
|
kick_from_court_validity_trigger = no
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
stress_impact = {
|
|
gregarious = minor_stress_impact_gain
|
|
}
|
|
|
|
hidden_effect = {
|
|
send_interface_message = {
|
|
type = event_generic_neutral
|
|
title = msg_kicked_courtier_from_court_interaction_title
|
|
|
|
right_icon = scope:recipient
|
|
|
|
show_as_tooltip = {
|
|
scope:actor = {
|
|
remove_courtier_or_guest = scope:recipient
|
|
}
|
|
}
|
|
|
|
#Remove them as guardian/ward for any courtier
|
|
if = {
|
|
limit = {
|
|
any_courtier = {
|
|
has_relation_guardian = scope:recipient
|
|
}
|
|
}
|
|
every_courtier = {
|
|
limit = {
|
|
has_relation_guardian = scope:recipient
|
|
}
|
|
save_scope_as = ward
|
|
remove_guardian_effect = {
|
|
GUARDIAN = scope:recipient
|
|
WARD = scope:ward
|
|
RETURN_WARD = yes
|
|
HIDE_OPINION = no
|
|
}
|
|
}
|
|
scope:recipient = { trigger_event = char_interaction.0090 }
|
|
}
|
|
if = {
|
|
limit = {
|
|
any_courtier = {
|
|
has_relation_ward = scope:recipient
|
|
}
|
|
}
|
|
random_courtier = {
|
|
limit = {
|
|
has_relation_ward = scope:recipient
|
|
}
|
|
save_scope_as = guardian
|
|
|
|
send_interface_message = {
|
|
type = event_childhood_neutral
|
|
title = remove_guardian_interaction_notification
|
|
left_icon = scope:recipient
|
|
right_icon = scope:guardian
|
|
remove_guardian_effect = {
|
|
GUARDIAN = scope:guardian
|
|
WARD = scope:recipient
|
|
RETURN_WARD = yes
|
|
HIDE_OPINION = no
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#To be able to send a cohesive interface message AND show a good tooltip
|
|
show_as_tooltip = {
|
|
#Remove them as guardian for any child
|
|
if = {
|
|
limit = {
|
|
any_courtier = {
|
|
has_relation_guardian = scope:recipient
|
|
}
|
|
}
|
|
every_courtier = {
|
|
limit = {
|
|
has_relation_guardian = scope:recipient
|
|
}
|
|
save_scope_as = ward
|
|
remove_guardian_effect = {
|
|
GUARDIAN = scope:recipient
|
|
WARD = scope:ward
|
|
RETURN_WARD = yes
|
|
HIDE_OPINION = no
|
|
}
|
|
}
|
|
}
|
|
|
|
#Remove them as ward of any courtier
|
|
if = {
|
|
limit = {
|
|
any_courtier = {
|
|
has_relation_ward = scope:recipient
|
|
}
|
|
}
|
|
random_courtier = {
|
|
limit = {
|
|
has_relation_ward = scope:recipient
|
|
}
|
|
save_scope_as = guardian
|
|
remove_guardian_effect = {
|
|
GUARDIAN = scope:guardian
|
|
WARD = scope:recipient
|
|
RETURN_WARD = yes
|
|
HIDE_OPINION = no
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
scope:recipient = {
|
|
every_traveling_family_member = {
|
|
add_to_temporary_list = kicked_family
|
|
}
|
|
}
|
|
|
|
every_in_list = {
|
|
list = kicked_family
|
|
#Kicks, adds opinions, adds people to kicked_relatives_list
|
|
kick_from_court_interaction_effect = yes
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
any_in_list = {
|
|
list = kicked_relatives_list
|
|
is_alive = yes
|
|
}
|
|
}
|
|
every_in_list = {
|
|
list = kicked_relatives_list
|
|
custom = all_close_family_members_of_kicked_characters
|
|
add_opinion = {
|
|
modifier = kicked_relative_from_court
|
|
target = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
employed_booner_invalidation_effect = { EMPLOYEE = scope:recipient LIEGE = scope:actor }
|
|
}
|
|
|
|
auto_accept = yes
|
|
}
|
|
|
|
invite_to_court_interaction = {
|
|
category = interaction_category_vassal
|
|
icon = guest
|
|
|
|
desc = invite_to_court_interaction_desc
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
NOR = {
|
|
is_courtier_of = scope:actor
|
|
is_foreign_court_guest = yes
|
|
AND = {
|
|
exists = host
|
|
host = scope:actor
|
|
}
|
|
is_ruler = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
custom_tooltip = {
|
|
scope:recipient = {
|
|
OR = {
|
|
NOT = { exists = liege }
|
|
NOT = { has_variable = invite_to_court_cooldown }
|
|
}
|
|
}
|
|
text = INVITE_TO_COURT_COOLDOWN
|
|
}
|
|
can_recruit_character_to_court_trigger = {
|
|
RECRUITER = scope:actor
|
|
RECRUITEE = scope:recipient
|
|
}
|
|
}
|
|
|
|
#Pay som gold to persuade a wandering character to come to your court
|
|
send_option = {
|
|
is_shown = {
|
|
exists = scope:recipient
|
|
}
|
|
flag = cover_travel_expenses
|
|
localization = COVER_TRAVEL_EXPENSES
|
|
}
|
|
send_option = { # EP3 Influence
|
|
is_shown = { # Actor must have a government that uses influence
|
|
scope:actor = {
|
|
government_has_flag = government_has_influence
|
|
}
|
|
}
|
|
is_valid = {
|
|
# Actor has enough influence
|
|
scope:actor = { influence >= medium_influence_value }
|
|
# Both characters are within the same top realm
|
|
scope:recipient.top_liege = scope:actor.top_liege
|
|
}
|
|
flag = influence_send_option
|
|
localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE
|
|
}
|
|
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
|
|
|
|
cost = {
|
|
influence = {
|
|
value = 0
|
|
if = {
|
|
limit = { scope:influence_send_option = yes }
|
|
add = scope:actor.medium_influence_value
|
|
desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
hidden_effect = {
|
|
scope:recipient = {
|
|
set_variable = {
|
|
name = invite_to_court_cooldown
|
|
years = 5
|
|
}
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
exists = scope:recipient.liege
|
|
}
|
|
scope:recipient.liege = {
|
|
send_interface_message = {
|
|
type = event_generic_neutral
|
|
title = msg_courtier_left_court_interaction_title
|
|
|
|
right_icon = scope:recipient
|
|
|
|
show_as_tooltip = {
|
|
remove_courtier_or_guest = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
scope:actor = {
|
|
send_interface_message = {
|
|
type = event_generic_neutral
|
|
title = invite_to_court_interaction_notification
|
|
right_icon = scope:recipient
|
|
|
|
scope:recipient = {
|
|
every_traveling_family_member = {
|
|
scope:actor = { add_courtier = prev }
|
|
hidden_effect = {
|
|
return_to_court = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
if = {
|
|
limit = { always = scope:hook }
|
|
scope:actor = {
|
|
use_hook = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if = {
|
|
limit = { always = scope:cover_travel_expenses }
|
|
scope:actor = {
|
|
pay_short_term_gold = {
|
|
gold = {
|
|
value = bribe_value
|
|
multiply = 0.5
|
|
}
|
|
target = scope:recipient
|
|
}
|
|
stress_impact = {
|
|
greedy = minor_stress_impact_gain
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_accept = {
|
|
base = -50
|
|
|
|
#Opinions
|
|
opinion_modifier = {
|
|
trigger = {
|
|
exists = liege
|
|
is_courtier_of = liege
|
|
}
|
|
opinion_target = liege
|
|
multiplier = -0.5
|
|
step = 5
|
|
max = 25
|
|
}
|
|
opinion_modifier = {
|
|
opinion_target = scope:actor
|
|
multiplier = 0.5
|
|
step = 5
|
|
max = 25
|
|
}
|
|
|
|
# Stooge modifier
|
|
modifier = {
|
|
scope:recipient = { has_variable = non_recruitable_var }
|
|
scope:recipient.var:non_recruitable_var = scope:actor
|
|
add = -200
|
|
desc = AI_STOOGE
|
|
}
|
|
|
|
#Current roles
|
|
modifier = {
|
|
is_knight = yes
|
|
add = -20
|
|
desc = AI_MY_LIEGES_KNIGHT
|
|
}
|
|
modifier = {
|
|
is_commanding_army = yes
|
|
add = -30
|
|
desc = AI_MY_LIEGES_COMMANDER
|
|
}
|
|
modifier = {
|
|
is_councillor = yes
|
|
add = -40
|
|
desc = AI_ON_THE_COUNCIL
|
|
}
|
|
|
|
modifier = {
|
|
trigger = { scope:recipient = { has_court_position = court_physician_court_position } }
|
|
add = -20
|
|
desc = AI_COURT_PHYSICIAN
|
|
}
|
|
|
|
#Relations & relatives (with actor)
|
|
modifier = {
|
|
has_relation_lover = scope:actor
|
|
add = 100
|
|
desc = AI_YOUR_LOVER
|
|
}
|
|
|
|
modifier = {
|
|
has_relation_friend = scope:actor
|
|
add = 75
|
|
desc = AI_YOUR_FRIEND
|
|
}
|
|
|
|
modifier = {
|
|
is_child_of = scope:actor
|
|
add = 160
|
|
desc = AI_YOUR_CHILD
|
|
}
|
|
|
|
modifier = {
|
|
this.dynasty.dynast = scope:actor
|
|
add = 30
|
|
desc = AI_YOU_ARE_THE_DYNAST
|
|
}
|
|
|
|
modifier = {
|
|
this.house.house_head = scope:actor
|
|
add = 60
|
|
desc = AI_YOU_ARE_THE_HOUSE_HEAD
|
|
}
|
|
|
|
modifier = {
|
|
this.top_liege = scope:actor
|
|
add = 60
|
|
desc = AI_YOU_ARE_THE_SOVEREIGN
|
|
}
|
|
|
|
modifier = {
|
|
NOT = { is_child_of = scope:actor }
|
|
NOT = { is_close_family_of = scope:actor }
|
|
is_extended_family_of = scope:actor
|
|
add = 30
|
|
desc = AI_YOUR_RELATIVE
|
|
}
|
|
|
|
modifier = {
|
|
NOT = { is_child_of = scope:actor }
|
|
is_close_family_of = scope:actor
|
|
add = 75
|
|
desc = AI_YOUR_RELATIVE
|
|
}
|
|
|
|
modifier = {
|
|
is_spouse_of = scope:actor
|
|
add = 160
|
|
desc = AI_YOUR_SPOUSE
|
|
}
|
|
|
|
#Relations & relatives (with host)
|
|
modifier = {
|
|
exists = liege
|
|
has_relation_lover = liege
|
|
add = -100
|
|
desc = AI_THEIR_LOVER
|
|
}
|
|
|
|
modifier = {
|
|
exists = liege
|
|
has_relation_friend = liege
|
|
add = -75
|
|
desc = AI_THEIR_FRIEND
|
|
}
|
|
|
|
modifier = {
|
|
exists = liege
|
|
is_child_of = liege
|
|
add = -160
|
|
desc = AI_THEIR_CHILD
|
|
}
|
|
|
|
modifier = {
|
|
exists = liege
|
|
NOT = { is_child_of = liege }
|
|
is_close_family_of = liege
|
|
add = -75
|
|
desc = AI_THEIR_RELATIVE
|
|
}
|
|
|
|
#Family (at location)
|
|
modifier = {
|
|
exists = location
|
|
any_consort_not_in_traveling_family_trigger = yes
|
|
desc = AI_LEAVING_MY_SPOUSE
|
|
add = -100
|
|
}
|
|
|
|
modifier = {
|
|
exists = location
|
|
any_child_not_in_traveling_family_trigger = yes
|
|
desc = AI_LEAVING_MY_CHILD
|
|
add = -100
|
|
}
|
|
|
|
modifier = {
|
|
add = -50
|
|
desc = AI_MARRIED_MATRILINIALLY
|
|
is_married = yes
|
|
is_male = yes
|
|
any_spouse = {
|
|
matrilinear_marriage = yes
|
|
host = scope:recipient.host
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = -50
|
|
desc = AI_MARRIED_PATRILINIALLY
|
|
is_married = yes
|
|
is_female = yes
|
|
any_spouse = {
|
|
patrilinear_marriage = yes
|
|
host = scope:recipient.host
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = -50
|
|
desc = AI_INSPIRED
|
|
exists = inspiration
|
|
inspiration = {
|
|
NOT = {
|
|
exists = inspiration_sponsor
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = -500
|
|
desc = AI_SPONSORED_INSPIRATION
|
|
exists = inspiration
|
|
inspiration = {
|
|
exists = inspiration_sponsor
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = -500
|
|
desc = AI_WANDERLUST
|
|
is_child_of = scope:actor
|
|
has_character_modifier = lust_for_adventure
|
|
}
|
|
|
|
modifier = {
|
|
add = -180
|
|
desc = ELUDING_CASTRATOR
|
|
is_adult = no
|
|
any_memory = {
|
|
has_memory_type = family_castration_fled_memory
|
|
memory_participant:castrator ?= {
|
|
this = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
liege ?= { is_landed = yes }
|
|
scope:actor = { is_landed = no }
|
|
add = -50
|
|
desc = AI_MY_LIEGE_IS_LANDED
|
|
}
|
|
|
|
#Wandering characters (who aren't doing anything else)
|
|
modifier = {
|
|
add = {
|
|
value = 10
|
|
add = scope:actor.diplomacy
|
|
|
|
if = {
|
|
limit = {
|
|
faith = scope:actor.faith
|
|
}
|
|
add = 10
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
faith = { #Same religion - But faith should not be considered Hostile or Evil
|
|
religion = scope:actor.faith.religion
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value < 2
|
|
}
|
|
}
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
culture = scope:actor.culture
|
|
}
|
|
add = 10
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
culture = {
|
|
has_same_culture_heritage = scope:actor.culture
|
|
}
|
|
}
|
|
add = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
has_trait = content
|
|
has_trait = lazy
|
|
has_trait = trusting
|
|
}
|
|
}
|
|
add = 10
|
|
}
|
|
}
|
|
desc = AI_CAN_BE_PERSUADED_TO_STAY
|
|
|
|
is_pool_guest = no
|
|
location.province_owner = {
|
|
OR = {
|
|
any_liege_or_above = { this = scope:actor }
|
|
this = scope:actor
|
|
}
|
|
}
|
|
NOR = {
|
|
has_relation_rival = scope:actor
|
|
exists = liege
|
|
is_child_of = scope:actor
|
|
has_character_modifier = lust_for_adventure
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = {
|
|
value = 20
|
|
if = {
|
|
limit = {
|
|
has_trait = greedy
|
|
}
|
|
multiply = 1.5
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
has_trait = generous
|
|
}
|
|
multiply = 0.5
|
|
}
|
|
}
|
|
scope:cover_travel_expenses = yes
|
|
desc = AI_TRAVEL_EXPENSES
|
|
}
|
|
|
|
# Amenities impact
|
|
## Actor's amenities increases acceptance
|
|
modifier = {
|
|
add = {
|
|
value = 10
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
amenity_level = { type = court_lodging_standards value >= high_amenity_level }
|
|
}
|
|
}
|
|
add = 10
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
amenity_level = { type = court_lodging_standards value >= very_high_amenity_level }
|
|
}
|
|
}
|
|
add = 10
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
amenity_level = { type = court_lodging_standards value >= max_amenity_level }
|
|
}
|
|
}
|
|
add = 20
|
|
}
|
|
}
|
|
desc = AI_COURT_LODGING_STANDARDS_QUALITY
|
|
scope:actor = {
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
amenity_level = { type = court_lodging_standards value >= medium_amenity_level }
|
|
}
|
|
}
|
|
## Target's liege amenities decreases acceptance
|
|
modifier = {
|
|
add = {
|
|
value = -10
|
|
if = {
|
|
limit = {
|
|
liege = {
|
|
amenity_level = { type = court_lodging_standards value >= high_amenity_level }
|
|
}
|
|
}
|
|
add = -10
|
|
}
|
|
if = {
|
|
limit = {
|
|
liege = {
|
|
amenity_level = { type = court_lodging_standards value >= very_high_amenity_level }
|
|
}
|
|
}
|
|
add = -10
|
|
}
|
|
if = {
|
|
limit = {
|
|
liege = {
|
|
amenity_level = { type = court_lodging_standards value >= max_amenity_level }
|
|
}
|
|
}
|
|
add = -20
|
|
}
|
|
}
|
|
desc = AI_LIEGE_COURT_LODGING_STANDARDS_QUALITY
|
|
exists = liege
|
|
is_courtier_of = liege
|
|
liege = {
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
amenity_level = { type = court_lodging_standards value >= medium_amenity_level }
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = {
|
|
value = scope:actor.house.house_unity_value
|
|
multiply = 0.5
|
|
}
|
|
desc = AI_HOUSE_UNITY
|
|
scope:actor = { government_has_flag = government_is_clan }
|
|
exists = house
|
|
exists = scope:actor.house
|
|
house = scope:actor.house
|
|
house = {
|
|
OR = {
|
|
has_house_unity_stage = harmonious
|
|
has_house_unity_stage = friendly
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = 25
|
|
scope:influence_send_option = yes
|
|
desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION
|
|
}
|
|
|
|
modifier = {
|
|
add = -1000
|
|
desc = MALUS_TO_RECRUITMENT_FOR_IMPERIAL_EUNUCHS
|
|
scope:recipient = {
|
|
is_eunuch_trigger = yes
|
|
liege = {
|
|
has_government = administrative_government
|
|
primary_title.tier = tier_empire
|
|
culture = { has_cultural_parameter = can_appoint_chief_eunuch }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Event modifiers
|
|
|
|
# El Cid
|
|
modifier = {
|
|
has_variable = cid_1010_no_invite_var
|
|
var:cid_1010_no_invite_var = scope:actor
|
|
add = -200
|
|
desc = cid_1010_no_invite_var_desc
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:hook = yes
|
|
}
|
|
}
|
|
}
|