3923 lines
85 KiB
Text
3923 lines
85 KiB
Text
# Interactions relating to the education of children
|
|
|
|
|
|
# Designate guardian and ward in your own court
|
|
# This interaction is referenced in code! If it's renamed you have to ping a coder
|
|
educate_child_interaction = {
|
|
category = interaction_category_friendly
|
|
common_interaction = yes
|
|
icon = child
|
|
|
|
send_name = SEND_PROPOSAL
|
|
desc = educate_child_interaction_desc
|
|
|
|
# secondary_actor = guardian
|
|
# actor = guardian.liege - can be same as guardian
|
|
# secondary_recipient = ward
|
|
# recipient = ward.liege - can be same as ward
|
|
|
|
redirect = {
|
|
if = {
|
|
limit = {
|
|
scope:actor = { is_ai = no }
|
|
}
|
|
scope:actor = {
|
|
#If the character performing the action is a child, let's set ourselves as the ward
|
|
if = {
|
|
limit = {
|
|
is_physically_able_adult = no
|
|
num_of_relation_guardian = 0
|
|
}
|
|
save_scope_as = secondary_recipient
|
|
}
|
|
#If the character peforming the action is an adult, let's set ourselves as the guardian
|
|
else_if = {
|
|
limit = {
|
|
is_physically_able_adult = yes
|
|
num_of_relation_ward < 2
|
|
NOT = { scope:recipient = scope:secondary_recipient }
|
|
}
|
|
save_scope_as = secondary_actor
|
|
}
|
|
#Otherwise just pick whoever chum for the guardian position
|
|
else_if = {
|
|
limit = {
|
|
any_courtier = {
|
|
is_physically_able_adult = yes
|
|
num_of_relation_ward < 2
|
|
}
|
|
}
|
|
random_courtier = {
|
|
limit = {
|
|
is_physically_able_adult = yes
|
|
num_of_relation_ward < 2
|
|
}
|
|
weight = {
|
|
base = 1
|
|
modifier = {
|
|
add = 5
|
|
culture = scope:actor.culture
|
|
}
|
|
modifier = {
|
|
add = 2
|
|
faith = scope:actor.faith
|
|
}
|
|
modifier = {
|
|
add = 10
|
|
has_council_position = councillor_court_chaplain
|
|
}
|
|
modifier = {
|
|
add = 2
|
|
is_councillor = yes
|
|
}
|
|
modifier = {
|
|
add = 3
|
|
this.dynasty = scope:actor.dynasty
|
|
}
|
|
modifier = {
|
|
add = 2
|
|
has_education_rank_4_trigger = yes
|
|
}
|
|
modifier = {
|
|
add = 1
|
|
has_education_rank_3_trigger = yes
|
|
}
|
|
}
|
|
save_scope_as = secondary_actor
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
exists = employer
|
|
NOT = { employer = scope:actor }
|
|
}
|
|
|
|
employer = {
|
|
save_scope_as = actor
|
|
}
|
|
}
|
|
}
|
|
|
|
scope:recipient = {
|
|
if = {
|
|
limit = {
|
|
is_physically_able_adult = yes
|
|
num_of_relation_ward < 2
|
|
}
|
|
save_scope_as = secondary_actor
|
|
}
|
|
else = {
|
|
save_scope_as = secondary_recipient
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
exists = employer
|
|
NOT = { employer = scope:recipient }
|
|
}
|
|
|
|
employer = {
|
|
save_scope_as = recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
populate_actor_list = {
|
|
scope:actor = {
|
|
if = {
|
|
limit = {
|
|
is_physically_able_adult = yes
|
|
num_of_relation_ward < 2
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
every_courtier = {
|
|
limit = {
|
|
is_physically_able_adult = yes
|
|
num_of_relation_ward < 2
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
}
|
|
}
|
|
|
|
populate_recipient_list = {
|
|
scope:recipient = {
|
|
if = {
|
|
limit = {
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
is_landless_adventurer = no
|
|
}
|
|
}
|
|
is_available_child = yes
|
|
}
|
|
trigger_else = {
|
|
is_available_child_allow_travel = yes
|
|
}
|
|
num_of_relation_guardian = 0
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
trigger_if = { #If a hostage then only if scope:actor is the hostage taker
|
|
limit = {
|
|
is_hostage = yes
|
|
}
|
|
is_hostage_of = scope:actor
|
|
}
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
every_courtier = {
|
|
limit = {
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
is_landless_adventurer = no
|
|
}
|
|
}
|
|
is_available_child = yes
|
|
}
|
|
trigger_else = {
|
|
is_available_child_allow_travel = yes
|
|
}
|
|
num_of_relation_guardian = 0
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_ai = yes }
|
|
}
|
|
is_close_family_of = scope:actor
|
|
}
|
|
trigger_if = { #If a hostage then only if scope:actor is the hostage taker
|
|
limit = {
|
|
is_hostage = yes
|
|
}
|
|
is_hostage_of = scope:actor
|
|
}
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
}
|
|
}
|
|
|
|
greeting = positive
|
|
notification_text = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
scope:actor = scope:secondary_actor
|
|
NOT = { scope:recipient = scope:secondary_recipient }
|
|
}
|
|
desc = EDUCATE_RECIPIENT_CHILD_PERSONALLY_REQUEST
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
scope:actor = scope:secondary_actor
|
|
scope:recipient = scope:secondary_recipient
|
|
}
|
|
desc = EDUCATE_RECIPIENT_PERSONALLY_REQUEST
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
NOT = { scope:recipient = scope:secondary_recipient }
|
|
NOT = { scope:actor = scope:secondary_actor }
|
|
}
|
|
desc = EDUCATE_RECIPIENT_CHILD_REQUEST
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
scope:recipient = scope:secondary_recipient
|
|
NOT = { scope:actor = scope:secondary_actor }
|
|
}
|
|
desc = EDUCATE_RECIPIENT_REQUEST
|
|
}
|
|
}
|
|
}
|
|
|
|
prompt = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
NOT = { exists = scope:secondary_actor }
|
|
}
|
|
desc = EDUCATE_SELECT_YOUR_GUARDIAN
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
NOT = { exists = scope:secondary_recipient }
|
|
}
|
|
desc = EDUCATE_SELECT_YOUR_WARD
|
|
}
|
|
}
|
|
}
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
is_in_the_same_court_as = scope:actor
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_actor
|
|
}
|
|
scope:secondary_actor = {
|
|
is_adult = yes
|
|
num_of_relation_ward < 2
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
scope:secondary_recipient = {
|
|
is_adult = no
|
|
num_of_relation_guardian = 0
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = {
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
trigger_if = {
|
|
limit = {
|
|
NOT = { this = scope:actor }
|
|
}
|
|
is_courtier_of = scope:actor
|
|
}
|
|
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_actor
|
|
}
|
|
scope:secondary_actor = {
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
scope:secondary_recipient = {
|
|
is_imprisoned = no
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
is_landless_adventurer = no
|
|
}
|
|
}
|
|
is_travelling = no #The child in question should not already have a travel plan
|
|
}
|
|
NOT = { has_trait = incapable }
|
|
NOT = { exists = var:hostage_travelling_to_warden }
|
|
trigger_if = {
|
|
limit = { is_hostage = yes }
|
|
is_courtier_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = character_to_guard_exists
|
|
subject = scope:actor
|
|
scope:actor = {
|
|
OR = {
|
|
any_courtier = {
|
|
is_adult = yes
|
|
num_of_relation_ward < 2
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
}
|
|
AND = {
|
|
is_adult = yes
|
|
num_of_relation_ward < 2
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = character_to_educate_exists
|
|
object = scope:actor
|
|
scope:actor = {
|
|
OR = {
|
|
any_courtier = {
|
|
is_adult = no
|
|
num_of_relation_guardian = 0
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
}
|
|
AND = {
|
|
is_adult = no
|
|
num_of_relation_guardian = 0
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
trigger_if = { # Ward
|
|
limit = { exists = scope:secondary_recipient }
|
|
scope:secondary_recipient = {
|
|
custom_tooltip = {
|
|
text = ward_travelling_tt
|
|
NOT = { exists = var:ward_travelling_to_guardian }
|
|
}
|
|
custom_tooltip = {
|
|
text = hostage_travelling_tt
|
|
NOT = { exists = var:hostage_travelling_to_warden }
|
|
}
|
|
# Structured this way for tooltip purposes
|
|
trigger_if = {
|
|
limit = { exists = var:ward_waiting_for_guardian }
|
|
var:ward_waiting_for_guardian = {
|
|
custom_tooltip = {
|
|
text = guardian_travelling_tt
|
|
NOT = { exists = scope:secondary_recipient.var:ward_waiting_for_guardian }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
trigger_if = { # Guardian
|
|
limit = { exists = scope:secondary_actor }
|
|
scope:secondary_actor = {
|
|
custom_tooltip = {
|
|
text = guardian_travelling_tt
|
|
NOT = { exists = var:guardian_travelling_to_ward }
|
|
}
|
|
custom_tooltip = {
|
|
text = hostage_travelling_tt
|
|
NOT = { exists = var:hostage_travelling_to_warden }
|
|
}
|
|
# Structured this way for tooltip purposes
|
|
trigger_if = {
|
|
limit = { exists = var:guardian_waiting_for_ward }
|
|
var:guardian_waiting_for_ward = {
|
|
custom_tooltip = {
|
|
text = ward_travelling_tt
|
|
NOT = { scope:secondary_actor.num_of_relation_ward >= 1 }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#limit range for landless adventurers
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
is_landless_adventurer = yes
|
|
}
|
|
}
|
|
#Has to be used instead of diplo range checks in laamp to landed interactions
|
|
ep3_laamp_diplo_range_trigger = {
|
|
TARGET = scope:recipient
|
|
LAAMP = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
can_be_picked = { #Potential Issue: This is only evaluated if both secondary recipient/actor are unselected TIT-49632
|
|
trigger_if = {
|
|
limit = {
|
|
OR = {
|
|
AND = {
|
|
is_ruler = no
|
|
liege ?= {
|
|
is_landless_adventurer = no
|
|
}
|
|
}
|
|
AND = {
|
|
is_ruler = yes
|
|
is_landless_adventurer = no
|
|
}
|
|
}
|
|
}
|
|
is_available = yes
|
|
}
|
|
trigger_else = {
|
|
is_available_allow_travelling = yes
|
|
}
|
|
is_at_home = yes
|
|
# Under offer
|
|
custom_tooltip = {
|
|
text = ward_already_offered_awaiting_response_tt
|
|
NOT = { has_character_flag = under_offer_as_ward_flag }
|
|
}
|
|
custom_tooltip = {
|
|
text = guardian_already_offered_awaiting_response_tt
|
|
NOT = { has_character_flag = under_offer_as_guardian_flag }
|
|
}
|
|
# Already offered
|
|
custom_tooltip = {
|
|
text = ward_already_offered_awaiting_travel_tt
|
|
NOR = {
|
|
exists = var:ward_travelling_to_guardian
|
|
exists = var:ward_waiting_for_guardian
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = guardian_already_offered_awaiting_travel_tt
|
|
NOR = {
|
|
exists = var:guardian_travelling_to_ward
|
|
AND = {
|
|
exists = var:guardian_waiting_for_ward
|
|
num_of_relation_ward >= 1
|
|
}
|
|
}
|
|
}
|
|
# Hostage
|
|
custom_tooltip = {
|
|
text = hostage_travelling_tt
|
|
NOT = { exists = var:hostage_travelling_to_warden }
|
|
}
|
|
# Guardian has too many students
|
|
num_of_relation_ward <= 2
|
|
trigger_if = {
|
|
limit = { exists = var:character_requested_as_educator }
|
|
num_of_relation_ward <= 1
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:secondary_recipient = {
|
|
save_scope_as = ward
|
|
scope:secondary_actor = { save_scope_as = guardian }
|
|
scope:recipient = { save_scope_as = ward_liege }
|
|
scope:actor = { save_scope_as = guardian_liege }
|
|
}
|
|
|
|
if = {
|
|
limit = { scope:ward.age >= 15 }
|
|
custom_description_no_bullet = {
|
|
text = ward_nearing_adulthood_tt
|
|
object = scope:ward
|
|
}
|
|
}
|
|
|
|
scope:guardian_liege = {
|
|
send_interface_message = {
|
|
type = event_childhood_neutral
|
|
title = educate_child_interaction_notification
|
|
left_icon = scope:guardian
|
|
right_icon = scope:ward
|
|
educate_child_interaction_effect = yes
|
|
show_as_tooltip = {
|
|
scope:ward = {
|
|
if = {
|
|
limit = { exists = var:ward_travelling_to_guardian }
|
|
custom_tooltip = ward_departs_tt
|
|
}
|
|
else_if = {
|
|
limit = { exists = scope:guardian.var:guardian_travelling_to_ward }
|
|
scope:guardian = { custom_tooltip = guardian_departs_tt }
|
|
}
|
|
else = {
|
|
set_relation_guardian = scope:guardian
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#to see the "becomes guardian of x" effect in the interaction confirmation window
|
|
show_as_tooltip = {
|
|
scope:guardian = { set_relation_ward = scope:ward }
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
ai_accept = {
|
|
base = 100
|
|
}
|
|
|
|
send_option = {
|
|
is_shown = {
|
|
exists = scope:secondary_actor
|
|
exists = scope:secondary_recipient
|
|
NOT = { scope:secondary_actor.culture = scope:secondary_recipient.culture }
|
|
}
|
|
flag = convert_culture
|
|
localization = EDUCATE_CHILD_OPTION_CONVERT_CULTURE
|
|
current_description = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_actor
|
|
scope:secondary_actor = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_RECIPIENT
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_recipient
|
|
scope:secondary_recipient = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_ACTOR
|
|
}
|
|
}
|
|
}
|
|
}
|
|
send_option = {
|
|
is_shown = {
|
|
exists = scope:secondary_actor
|
|
exists = scope:secondary_recipient
|
|
NOT = { scope:secondary_actor.faith = scope:secondary_recipient.faith }
|
|
}
|
|
flag = convert_faith
|
|
localization = EDUCATE_CHILD_OPTION_CONVERT_FAITH
|
|
current_description = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_actor
|
|
scope:secondary_actor = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_RECIPIENT
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_recipient
|
|
scope:secondary_recipient = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_ACTOR
|
|
}
|
|
}
|
|
}
|
|
}
|
|
send_option = {
|
|
is_shown = {
|
|
scope:recipient = {
|
|
OR = {
|
|
any_realm_province = {
|
|
has_university_building_trigger = yes
|
|
}
|
|
any_realm_county = {
|
|
has_county_modifier = pandidakterion_university_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
is_valid = {
|
|
scope:actor.gold >= scope:actor.medium_gold_value
|
|
}
|
|
flag = send_to_university
|
|
localization = EDUCATION_UNIVERSITY
|
|
}
|
|
send_option = {
|
|
is_shown = {
|
|
exists = scope:actor
|
|
exists = scope:secondary_actor
|
|
NOT = { scope:secondary_actor = scope:actor }
|
|
}
|
|
is_valid = {
|
|
scope:actor = {
|
|
has_usable_hook = scope:secondary_actor
|
|
}
|
|
}
|
|
flag = education_hook
|
|
localization = EDUCATION_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
|
|
|
|
ai_targets = {
|
|
ai_recipients = self
|
|
}
|
|
|
|
ai_frequency = 24
|
|
|
|
ai_potential = {
|
|
OR = {
|
|
AND = {
|
|
is_physically_able_adult = no
|
|
num_of_relation_guardian = 0
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
}
|
|
any_courtier = {
|
|
is_physically_able_adult = no
|
|
num_of_relation_guardian = 0
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
is_close_family_of = root
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 100
|
|
|
|
modifier = { # Slight preference for older heirs
|
|
add = scope:secondary_recipient.age
|
|
}
|
|
|
|
modifier = { # Prefer to educate your own heirs
|
|
add = 900
|
|
scope:actor = scope:secondary_actor
|
|
scope:secondary_recipient = {
|
|
is_heir_of = scope:actor
|
|
}
|
|
}
|
|
|
|
modifier = { # Otherwise, find a good educator for them
|
|
add = 200
|
|
scope:secondary_actor = {
|
|
OR = {
|
|
has_education_rank_4_trigger = yes
|
|
has_education_rank_3_trigger = yes
|
|
}
|
|
}
|
|
scope:secondary_recipient = {
|
|
is_heir_of = scope:actor
|
|
}
|
|
}
|
|
|
|
modifier = { # Generally prefer your own flesh & blood to educate children
|
|
add = 200
|
|
exists = scope:secondary_actor.dynasty
|
|
exists = scope:actor.dynasty
|
|
scope:secondary_actor.dynasty = scope:actor.dynasty
|
|
}
|
|
|
|
modifier = { # Also prefer friends & lovers
|
|
add = 100
|
|
scope:secondary_actor = {
|
|
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
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # The AI shouldn't change culture/faith of their children
|
|
add = -1000
|
|
scope:secondary_recipient.culture = scope:actor.culture
|
|
scope:secondary_recipient.faith = scope:actor.faith
|
|
OR = {
|
|
scope:convert_culture = yes
|
|
scope:convert_faith = yes
|
|
}
|
|
}
|
|
|
|
modifier = { # The AI should not convert child of vassals with protected religious right
|
|
add = -1000
|
|
scope:convert_faith = yes
|
|
scope:recipient = { is_vassal_of = scope:actor }
|
|
scope:recipient = { vassal_contract_has_flag = religiously_protected }
|
|
}
|
|
|
|
modifier = { # If your kids aren't of your culture/faith, make them so!
|
|
add = 900
|
|
scope:secondary_actor.culture = scope:actor.culture
|
|
scope:secondary_actor.faith = scope:actor.faith
|
|
NOR = {
|
|
scope:secondary_recipient.culture = scope:actor.culture
|
|
scope:secondary_recipient.faith = scope:actor.faith
|
|
}
|
|
scope:convert_culture = yes
|
|
scope:convert_faith = yes
|
|
}
|
|
|
|
modifier = { # If your kids aren't of your culture/faith, make them so!
|
|
add = 500
|
|
scope:secondary_actor.culture = scope:actor.culture
|
|
NOT = { scope:secondary_recipient.culture = scope:actor.culture }
|
|
scope:convert_culture = yes
|
|
}
|
|
|
|
modifier = { # If your kids aren't of your culture/faith, make them so!
|
|
add = 500
|
|
scope:secondary_actor.faith = scope:actor.faith
|
|
NOT = { scope:secondary_recipient.faith = scope:actor.faith }
|
|
scope:convert_faith = yes
|
|
}
|
|
|
|
modifier = { # Rivals are not welcome
|
|
add = -1000
|
|
scope:secondary_recipient = {
|
|
OR = {
|
|
has_relation_rival = scope:actor
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Random peasants can only dream about educating noble children!
|
|
add = -1000
|
|
scope:actor = {
|
|
is_lowborn = no
|
|
}
|
|
scope:secondary_recipient = {
|
|
is_lowborn = yes
|
|
NOR = {
|
|
is_councillor = yes
|
|
is_knight = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't care about random children
|
|
factor = 0
|
|
scope:secondary_recipient = {
|
|
NOR = {
|
|
is_close_family_of = scope:actor
|
|
this = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't spend gold on this unless very, very rich
|
|
factor = 0
|
|
scope:send_to_university = yes
|
|
|
|
scope:actor.short_term_gold < scope:actor.monumental_gold_value
|
|
}
|
|
}
|
|
}
|
|
|
|
#Offer a ward to a landed character
|
|
#This interaction is referenced in code! If it's renamed you have to ping a coder
|
|
offer_ward_interaction = {
|
|
category = interaction_category_friendly
|
|
icon = child
|
|
|
|
desc = offer_ward_interaction_desc
|
|
|
|
send_name = SEND_PROPOSAL
|
|
|
|
# secondary_actor = ward
|
|
# actor = ward.liege - can be same as ward
|
|
# secondary_recipient = guardian
|
|
# recipient = guardian.liege - can be same as guardian
|
|
|
|
redirect = {
|
|
scope:recipient = {
|
|
if = {
|
|
limit = {
|
|
exists = employer
|
|
NOT = { employer = scope:recipient }
|
|
}
|
|
save_scope_as = secondary_recipient
|
|
employer = {
|
|
save_scope_as = recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
populate_actor_list = {
|
|
scope:actor = {
|
|
if = {
|
|
limit = {
|
|
is_adult = no
|
|
is_physically_able = yes
|
|
NOT = {
|
|
any_relation = {
|
|
type = guardian
|
|
this = scope:recipient
|
|
}
|
|
}
|
|
is_hostage = no
|
|
is_travelling = no #Can be removed once the can_be_picked is fixed to re-evaluate
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
every_courtier = {
|
|
limit = {
|
|
is_adult = no
|
|
is_physically_able = yes
|
|
NOT = {
|
|
any_relation = {
|
|
type = guardian
|
|
this = scope:recipient
|
|
}
|
|
}
|
|
is_hostage = no
|
|
is_travelling = no #Can be removed once the can_be_picked is fixed to re-evaluate
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
every_courtier_away = {
|
|
limit = {
|
|
is_adult = no
|
|
is_physically_able = yes
|
|
NOT = {
|
|
any_relation = {
|
|
type = guardian
|
|
this = scope:recipient
|
|
}
|
|
}
|
|
is_hostage = no
|
|
is_travelling = no #Can be removed once the can_be_picked is fixed to re-evaluate
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
}
|
|
}
|
|
|
|
populate_recipient_list = {
|
|
scope:recipient = {
|
|
if = {
|
|
limit = {
|
|
is_adult = yes
|
|
num_of_relation_ward < 2
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
every_courtier = {
|
|
limit = {
|
|
is_adult = yes
|
|
num_of_relation_ward < 2
|
|
NOR = {
|
|
is_theocratic_lessee = yes
|
|
is_consort_of = scope:recipient
|
|
}
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
}
|
|
}
|
|
|
|
greeting = positive
|
|
notification_text = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
scope:actor = scope:secondary_actor
|
|
NOT = { scope:recipient = scope:secondary_recipient }
|
|
}
|
|
desc = EDUCATE_ACTOR_REQUEST
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
scope:actor = scope:secondary_actor
|
|
scope:recipient = scope:secondary_recipient
|
|
}
|
|
desc = EDUCATE_ACTOR_PERSONALLY_REQUEST
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
NOT = { scope:recipient = scope:secondary_recipient }
|
|
NOT = { scope:actor = scope:secondary_actor }
|
|
}
|
|
desc = EDUCATE_ACTOR_CHILD_REQUEST
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
scope:recipient = scope:secondary_recipient
|
|
NOT = { scope:actor = scope:secondary_actor }
|
|
}
|
|
desc = EDUCATE_ACTOR_CHILD_PERSONALLY_REQUEST
|
|
}
|
|
}
|
|
}
|
|
|
|
prompt = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_actor
|
|
scope:actor = scope:recipient
|
|
}
|
|
desc = EDUCATE_SELECT_YOUR_GUARDIAN
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_actor
|
|
scope:secondary_actor = {
|
|
is_adult = no
|
|
}
|
|
}
|
|
desc = EDUCATE_SELECT_THEIR_GUARDIAN
|
|
}
|
|
desc = EDUCATE_SELECT_YOUR_WARD
|
|
}
|
|
}
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
NOT = { this = scope:actor }
|
|
is_playable_character = yes
|
|
is_alive = yes
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
scope:secondary_recipient = {
|
|
is_adult = yes
|
|
NOR = {
|
|
is_theocratic_lessee = yes
|
|
is_consort_of = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
is_landless_adventurer = yes
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
is_courtier_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
custom_description = {
|
|
text = character_to_guard_exists
|
|
subject = scope:recipient
|
|
scope:recipient = {
|
|
OR = {
|
|
any_courtier = {
|
|
is_adult = yes
|
|
num_of_relation_ward < 2
|
|
}
|
|
AND = {
|
|
is_adult = yes
|
|
num_of_relation_ward < 2
|
|
}
|
|
}
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = character_to_educate_exists
|
|
object = scope:actor
|
|
scope:actor = {
|
|
OR = {
|
|
any_courtier = {
|
|
is_adult = no
|
|
is_physically_able = yes
|
|
NOR = {
|
|
any_relation = {
|
|
type = guardian
|
|
this = scope:recipient
|
|
}
|
|
any_relation = {
|
|
type = guardian
|
|
OR = {
|
|
is_at_war_with = scope:actor
|
|
any_liege_or_above = { is_at_war_with = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
AND = {
|
|
is_adult = no
|
|
is_physically_able = yes
|
|
NOR = {
|
|
any_relation = {
|
|
type = guardian
|
|
this = scope:recipient
|
|
}
|
|
any_relation = {
|
|
type = guardian
|
|
OR = {
|
|
is_at_war_with = scope:actor
|
|
any_liege_or_above = { is_at_war_with = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:recipient }
|
|
}
|
|
scope:recipient = {
|
|
is_imprisoned = no
|
|
is_busy_in_events_localised = yes
|
|
}
|
|
trigger_if = { # Ward
|
|
limit = {
|
|
exists = scope:secondary_actor
|
|
}
|
|
scope:secondary_actor = {
|
|
is_imprisoned = no
|
|
is_busy_in_events_localised = yes
|
|
custom_tooltip = {
|
|
text = ward_travelling_tt
|
|
NOT = { exists = var:ward_travelling_to_guardian }
|
|
}
|
|
custom_tooltip = {
|
|
text = hostage_travelling_tt
|
|
NOT = { exists = var:hostage_travelling_to_warden }
|
|
}
|
|
# Structured this way for tooltip purposes
|
|
trigger_if = {
|
|
limit = { exists = var:ward_waiting_for_guardian }
|
|
var:ward_waiting_for_guardian = {
|
|
custom_tooltip = {
|
|
text = guardian_travelling_tt
|
|
NOT = { exists = scope:secondary_actor.var:ward_waiting_for_guardian }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
trigger_if = { # Guardian
|
|
limit = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
scope:secondary_recipient = {
|
|
is_imprisoned = no
|
|
is_busy_in_events_localised = yes
|
|
custom_tooltip = {
|
|
text = guardian_travelling_tt
|
|
NOT = { exists = var:guardian_travelling_to_ward }
|
|
}
|
|
custom_tooltip = {
|
|
text = hostage_travelling_tt
|
|
NOT = { exists = var:hostage_travelling_to_warden }
|
|
}
|
|
# Structured this way for tooltip purposes
|
|
trigger_if = {
|
|
limit = { exists = var:guardian_waiting_for_ward }
|
|
var:guardian_waiting_for_ward = {
|
|
custom_tooltip = {
|
|
text = ward_travelling_tt
|
|
NOT = { exists = scope:secondary_recipient.var:guardian_waiting_for_ward }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#limit range for landless adventurers
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
is_landless_adventurer = yes
|
|
}
|
|
}
|
|
#Has to be used instead of diplo range checks in laamp to landed interactions
|
|
ep3_laamp_diplo_range_trigger = {
|
|
TARGET = scope:recipient
|
|
LAAMP = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
can_be_picked = {
|
|
is_available = yes #Potential Issue: This is only evaluated if both secondary recipient/actor are unselected TIT-49632
|
|
# Under offer
|
|
custom_tooltip = {
|
|
text = ward_already_offered_awaiting_response_tt
|
|
NOT = { has_character_flag = under_offer_as_ward_flag }
|
|
}
|
|
custom_tooltip = {
|
|
text = guardian_already_offered_awaiting_response_tt
|
|
NOT = { has_character_flag = under_offer_as_guardian_flag }
|
|
}
|
|
# Already offered
|
|
custom_tooltip = {
|
|
text = ward_already_offered_awaiting_travel_tt
|
|
NOR = {
|
|
exists = var:ward_travelling_to_guardian
|
|
exists = var:ward_waiting_for_guardian
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = guardian_already_offered_awaiting_travel_tt
|
|
NOR = {
|
|
exists = var:guardian_travelling_to_ward
|
|
AND = {
|
|
exists = var:guardian_waiting_for_ward
|
|
num_of_relation_ward >= 1
|
|
}
|
|
}
|
|
}
|
|
# Hostage
|
|
custom_tooltip = {
|
|
text = hostage_travelling_tt
|
|
NOT = { exists = var:hostage_travelling_to_warden }
|
|
}
|
|
}
|
|
|
|
on_send = {
|
|
scope:secondary_recipient = {
|
|
add_character_flag = {
|
|
flag = under_offer_as_guardian_flag
|
|
months = 1
|
|
}
|
|
}
|
|
scope:secondary_actor = {
|
|
add_character_flag = {
|
|
flag = under_offer_as_ward_flag
|
|
months = 1
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:secondary_actor = { save_scope_as = ward }
|
|
scope:actor = { save_scope_as = ward_liege }
|
|
scope:recipient = { save_scope_as = guardian_liege }
|
|
scope:secondary_recipient = { save_scope_as = guardian }
|
|
|
|
if = {
|
|
limit = { scope:ward.age >= 15 }
|
|
custom_description_no_bullet = {
|
|
text = ward_nearing_adulthood_tt
|
|
object = scope:ward
|
|
}
|
|
}
|
|
|
|
# Handle existing guardian
|
|
scope:ward = {
|
|
if = {
|
|
limit = {
|
|
any_relation = {
|
|
type = guardian
|
|
NOT = { this = scope:guardian }
|
|
}
|
|
}
|
|
random_relation = {
|
|
type = guardian
|
|
save_scope_as = old_guardian
|
|
|
|
#Letter event to guardian
|
|
if = {
|
|
limit = {
|
|
NOT = { scope:old_guardian = scope:actor }
|
|
}
|
|
scope:old_guardian = { trigger_event = char_interaction.0090 }
|
|
}
|
|
}
|
|
scope:actor = {
|
|
send_interface_message = {
|
|
type = event_childhood_neutral
|
|
title = remove_guardian_interaction_notification
|
|
left_icon = scope:old_guardian
|
|
right_icon = scope:ward
|
|
remove_guardian_effect = {
|
|
GUARDIAN = scope:old_guardian
|
|
WARD = scope:ward
|
|
RETURN_WARD = yes
|
|
HIDE_OPINION = no
|
|
}
|
|
|
|
#Was education promised in interaction or in vassal.2001? Then you get an opinion penalty
|
|
if = {
|
|
limit = {
|
|
exists = scope:ward.var:character_requested_as_educator
|
|
scope:ward.var:character_requested_as_educator = scope:old_guardian
|
|
exists = scope:ward.var:character_making_education_request
|
|
scope:ward.var:character_making_education_request = {
|
|
is_alive = yes
|
|
OR = {
|
|
this = scope:old_guardian
|
|
scope:old_guardian = { is_courtier_of = prev }
|
|
}
|
|
NOT = { this = scope:actor }
|
|
}
|
|
}
|
|
scope:ward.var:character_making_education_request = {
|
|
add_opinion = {
|
|
modifier = insult_opinion
|
|
target = scope:actor
|
|
opinion = -15
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
show_as_tooltip = {
|
|
scope:guardian = { set_relation_ward = scope:ward }
|
|
educate_child_interaction_effect = yes
|
|
}
|
|
|
|
scope:actor = {
|
|
if = {
|
|
limit = {
|
|
NOT = { this = scope:recipient }
|
|
scope:ward = {
|
|
#num_of_relation_guardian = 0
|
|
NOR = {
|
|
any_relation = {
|
|
type = guardian
|
|
this = scope:recipient
|
|
}
|
|
any_relation = {
|
|
type = guardian
|
|
OR = {
|
|
is_at_war_with = scope:actor
|
|
any_liege_or_above = { is_at_war_with = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:guardian = { num_of_relation_ward < 2 }
|
|
}
|
|
trigger_event = char_interaction.0080
|
|
}
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = miniscule_unity_gain
|
|
DESC = clan_unity_ward_offerage.desc
|
|
REVERSE_NON_HOUSE_TARGET = yes
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
# If we're a clan this interaction affects unity. Conditioned to the opinion modifier to avoid exploit
|
|
if = {
|
|
limit = {
|
|
NOT = {
|
|
scope:actor = {
|
|
has_opinion_modifier = {
|
|
modifier = declined_ward_opinion
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = miniscule_unity_loss
|
|
DESC = clan_unity_ward_decline.desc
|
|
REVERSE_NON_HOUSE_TARGET = yes
|
|
}
|
|
}
|
|
|
|
|
|
scope:actor = {
|
|
trigger_event = char_interaction.0081
|
|
add_opinion = {
|
|
modifier = declined_ward_opinion
|
|
target = scope:recipient
|
|
}
|
|
}
|
|
|
|
scope:secondary_recipient = { remove_character_flag = under_offer_as_guardian_flag }
|
|
scope:secondary_actor = { remove_character_flag = under_offer_as_ward_flag }
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:education_hook = yes
|
|
scope:actor = { has_strong_hook = scope:recipient }
|
|
}
|
|
}
|
|
|
|
ai_accept = {
|
|
base = 0
|
|
|
|
# AI should always accept children the Player has jurisdiction over
|
|
# You can always send your own child away
|
|
modifier = {
|
|
add = 200
|
|
scope:secondary_actor = {
|
|
is_adult = no
|
|
is_child_of = scope:actor
|
|
}
|
|
desc = AI_YOUR_OWN_CHILD
|
|
}
|
|
# Including you
|
|
modifier = {
|
|
add = 200
|
|
scope:secondary_actor = scope:actor
|
|
desc = AI_EDUCATE_YOU
|
|
}
|
|
# You can always send your courtier's child away
|
|
modifier = {
|
|
add = 200
|
|
scope:secondary_actor = {
|
|
is_adult = no
|
|
NOT = { is_child_of = scope:actor }
|
|
is_courtier_of = scope:actor
|
|
}
|
|
#But only if you are of interest to the educator. To educate the courtier of a count is of no interest to a foreign emperor.
|
|
scope:secondary_recipient ?= {
|
|
OR = {
|
|
is_of_major_or_minor_interest_trigger = { CHARACTER = scope:actor }
|
|
is_of_major_or_minor_interest_trigger = { CHARACTER = scope:secondary_actor }
|
|
highest_held_title_tier <= scope:actor.highest_held_title_tier
|
|
}
|
|
}
|
|
desc = AI_YOUR_COURTIER_CHILD
|
|
}
|
|
|
|
#Weak hook: extra points
|
|
modifier = {
|
|
scope:education_hook = yes
|
|
add = 100
|
|
scope:actor = { NOT = { has_strong_hook = scope:recipient } }
|
|
desc = SCHEME_WEAK_HOOK_USED
|
|
}
|
|
|
|
modifier = { # Respect the liege
|
|
add = 50
|
|
scope:recipient = { target_is_liege_or_above = scope:actor }
|
|
desc = EDUCATE_CHILD_ACTOR_IS_MY_LIEGE
|
|
}
|
|
|
|
#If the child is theirs they are more likely to accept
|
|
modifier = {
|
|
add = 100
|
|
scope:secondary_actor = {
|
|
is_child_of = scope:recipient
|
|
is_adult = no
|
|
}
|
|
desc = AI_MY_CHILD
|
|
}
|
|
|
|
#If the child is the educator's child they should be more likely to accept
|
|
modifier = {
|
|
add = 100
|
|
exists = scope:secondary_recipient
|
|
scope:secondary_actor = {
|
|
is_adult = no
|
|
is_child_of = scope:secondary_recipient
|
|
}
|
|
desc = AI_MY_CHILD
|
|
}
|
|
|
|
#Their opinion of you matters!
|
|
opinion_modifier = {
|
|
opinion_target = scope:actor
|
|
who = scope:recipient
|
|
multiplier = 0.5
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
|
|
#Make less likely that they accept if they are of another culture
|
|
modifier = {
|
|
add = -10
|
|
trigger = {
|
|
scope:secondary_actor = {
|
|
culture = { has_same_culture_heritage = scope:recipient.culture }
|
|
NOT = { has_same_culture_as = scope:recipient }
|
|
}
|
|
}
|
|
desc = AI_NOT_CULTURE
|
|
}
|
|
|
|
modifier = {
|
|
add = -20
|
|
trigger = {
|
|
scope:secondary_actor = {
|
|
NOT = { culture = { has_same_culture_heritage = scope:recipient.culture } }
|
|
}
|
|
}
|
|
desc = AI_NOT_CULTURE
|
|
}
|
|
|
|
#Less likely if they don't like other religion
|
|
modifier = {
|
|
add = {
|
|
value = -5
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value >= faith_hostile_level
|
|
}
|
|
}
|
|
}
|
|
subtract = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value >= faith_evil_level
|
|
}
|
|
}
|
|
}
|
|
subtract = 10
|
|
}
|
|
}
|
|
trigger = {
|
|
NOT = { scope:recipient.faith = scope:actor.faith }
|
|
}
|
|
desc = AI_RELIGION
|
|
}
|
|
|
|
#The better the educator is at a skill, the less likely they are to accept
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:secondary_recipient ?= {
|
|
diplomacy >= 10
|
|
}
|
|
NOT = { scope:actor = scope:secondary_actor }
|
|
}
|
|
target = scope:secondary_recipient
|
|
value = diplomacy
|
|
step = 4
|
|
multiplier = -0.5
|
|
offset = -2
|
|
max = 0
|
|
desc = AI_GUARDIAN_SKILL_DIPLOMACY
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:secondary_recipient ?= {
|
|
martial >= 10
|
|
}
|
|
NOT = { scope:actor = scope:secondary_actor }
|
|
}
|
|
target = scope:secondary_recipient
|
|
value = martial
|
|
step = 4
|
|
multiplier = -0.5
|
|
offset = -2
|
|
max = 0
|
|
desc = AI_GUARDIAN_SKILL_MARTIAL
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:secondary_recipient ?= {
|
|
stewardship >= 10
|
|
}
|
|
NOT = { scope:actor = scope:secondary_actor }
|
|
}
|
|
target = scope:secondary_recipient
|
|
value = stewardship
|
|
step = 4
|
|
multiplier = -0.5
|
|
offset = -2
|
|
max = 0
|
|
desc = AI_GUARDIAN_SKILL_STEWARDSHIP
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:secondary_recipient ?= {
|
|
intrigue >= 10
|
|
}
|
|
NOT = { scope:actor = scope:secondary_actor }
|
|
}
|
|
target = scope:secondary_recipient
|
|
value = intrigue
|
|
step = 4
|
|
multiplier = -0.5
|
|
offset = -2
|
|
max = 0
|
|
desc = AI_GUARDIAN_SKILL_INTRIGUE
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:secondary_recipient ?= {
|
|
learning >= 10
|
|
}
|
|
NOT = { scope:actor = scope:secondary_actor }
|
|
}
|
|
target = scope:secondary_recipient
|
|
value = learning
|
|
step = 4
|
|
multiplier = -0.5
|
|
offset = -2
|
|
max = 0
|
|
desc = AI_GUARDIAN_SKILL_LEARNING
|
|
}
|
|
|
|
#The better you as an educator is at a skill, the more likely they are to accept
|
|
compare_modifier = {
|
|
trigger = {
|
|
AND = {
|
|
scope:actor = scope:secondary_actor
|
|
scope:actor = {
|
|
diplomacy >= 11
|
|
}
|
|
}
|
|
}
|
|
target = scope:actor
|
|
value = diplomacy
|
|
step = 4
|
|
multiplier = 0.75
|
|
offset = -5
|
|
min = 0
|
|
desc = AI_GUARDIAN_SKILL_DIPLOMACY
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
AND = {
|
|
scope:actor = scope:secondary_actor
|
|
scope:actor = {
|
|
martial >= 11
|
|
}
|
|
}
|
|
}
|
|
target = scope:actor
|
|
value = martial
|
|
step = 4
|
|
multiplier = 0.75
|
|
offset = -5
|
|
min = 0
|
|
desc = AI_GUARDIAN_SKILL_MARTIAL
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
AND = {
|
|
scope:actor = scope:secondary_actor
|
|
scope:actor = {
|
|
stewardship >= 11
|
|
}
|
|
}
|
|
}
|
|
target = scope:actor
|
|
value = stewardship
|
|
step = 4
|
|
multiplier = 0.75
|
|
offset = -5
|
|
min = 0
|
|
desc = AI_GUARDIAN_SKILL_STEWARDSHIP
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
AND = {
|
|
scope:actor = scope:secondary_actor
|
|
scope:actor = {
|
|
intrigue >= 11
|
|
}
|
|
}
|
|
}
|
|
target = scope:actor
|
|
value = intrigue
|
|
step = 4
|
|
multiplier = 0.75
|
|
offset = -5
|
|
min = 0
|
|
desc = AI_GUARDIAN_SKILL_INTRIGUE
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
AND = {
|
|
scope:actor = scope:secondary_actor
|
|
scope:actor = {
|
|
learning >= 11
|
|
}
|
|
}
|
|
}
|
|
target = scope:actor
|
|
value = learning
|
|
step = 4
|
|
multiplier = 0.75
|
|
offset = -5
|
|
min = 0
|
|
desc = AI_GUARDIAN_SKILL_LEARNING
|
|
}
|
|
|
|
#More/Less likely based on difference in rank between actor and recipient
|
|
modifier = {
|
|
add = 20
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 1
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = 30
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 2
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = 40
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 3
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = 50
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 4
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = 60
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 5
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = -20
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -1
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = -30
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -2
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = -40
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -3
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = -50
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -4
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = -60
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -5
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
|
|
modifier = {
|
|
add = intimidated_reason_value
|
|
scope:recipient = {
|
|
target_is_liege_or_above = scope:actor
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
desc = INTIMIDATED_REASON
|
|
}
|
|
modifier = {
|
|
add = cowed_reason_value
|
|
scope:recipient = {
|
|
target_is_liege_or_above = scope:actor
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
desc = COWED_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = intimidated_external_reason_value
|
|
scope:recipient = {
|
|
NOT = { target_is_liege_or_above = scope:actor }
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
desc = INTIMIDATED_REASON
|
|
}
|
|
modifier = {
|
|
add = cowed_external_reason_value
|
|
scope:recipient = {
|
|
NOT = { target_is_liege_or_above = scope:actor }
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
desc = COWED_REASON
|
|
}
|
|
modifier = {
|
|
add = diarch_should_educate_liege_value
|
|
scope:actor.diarch ?= scope:recipient
|
|
desc = DIARCH_SHOULD_EDUCATE_LIEGE_TO_DIARCH
|
|
}
|
|
|
|
# Unity modifiers
|
|
evaluate_action_increasing_house_unity = {
|
|
VALUE = 100
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
is_shown = {
|
|
exists = scope:secondary_actor
|
|
exists = scope:secondary_recipient
|
|
NOT = { scope:secondary_actor.culture = scope:secondary_recipient.culture }
|
|
}
|
|
flag = convert_culture
|
|
localization = EDUCATE_CHILD_OPTION_CONVERT_CULTURE
|
|
current_description = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_actor
|
|
scope:secondary_actor = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_RECIPIENT
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_recipient
|
|
scope:secondary_recipient = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_ACTOR
|
|
}
|
|
}
|
|
}
|
|
}
|
|
send_option = {
|
|
is_shown = {
|
|
exists = scope:secondary_actor
|
|
exists = scope:secondary_recipient
|
|
NOT = { scope:secondary_actor.faith = scope:secondary_recipient.faith }
|
|
}
|
|
flag = convert_faith
|
|
localization = EDUCATE_CHILD_OPTION_CONVERT_FAITH
|
|
current_description = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_actor
|
|
scope:secondary_actor = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_RECIPIENT
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_recipient
|
|
scope:secondary_recipient = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_ACTOR
|
|
}
|
|
}
|
|
}
|
|
}
|
|
send_option = {
|
|
is_shown = {
|
|
OR = {
|
|
scope:recipient = {
|
|
any_realm_province = {
|
|
has_university_building_trigger = yes
|
|
}
|
|
}
|
|
scope:actor = {
|
|
this = scope:secondary_actor
|
|
any_realm_province = {
|
|
has_university_building_trigger = yes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
is_valid = {
|
|
scope:actor.gold >= scope:actor.monumental_gold_value
|
|
}
|
|
starts_enabled = { always = yes }
|
|
flag = send_to_university
|
|
localization = EDUCATION_UNIVERSITY
|
|
}
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = {
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
}
|
|
flag = education_hook
|
|
localization = EDUCATION_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
|
|
|
|
ai_targets = {
|
|
ai_recipients = vassals
|
|
ai_recipients = head_of_faith
|
|
}
|
|
|
|
ai_frequency = 12
|
|
|
|
ai_potential = {
|
|
primary_title.tier >= tier_duchy
|
|
any_courtier = {
|
|
is_physically_able_adult = no
|
|
is_child_of = root
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
}
|
|
any_vassal = {
|
|
primary_title.tier >= tier_county
|
|
opinion = {
|
|
target = root
|
|
value <= -25
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 0
|
|
|
|
modifier = { # The AI wants to use wards to improve opinion with their vassals
|
|
add = 500
|
|
scope:actor = {
|
|
NOT = {
|
|
has_trait = paranoid
|
|
}
|
|
}
|
|
scope:recipient = scope:secondary_recipient
|
|
scope:recipient = {
|
|
is_ruler = yes
|
|
primary_title.tier >= tier_county
|
|
OR = {
|
|
AND = {
|
|
is_vassal_of = scope:actor
|
|
opinion = {
|
|
target = scope:actor
|
|
value <= -25
|
|
}
|
|
}
|
|
AND = {
|
|
is_powerful_vassal_of = scope:actor
|
|
opinion = {
|
|
target = scope:actor
|
|
value <= 25
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Zealous AI's want their head of faith to educate their children
|
|
add = 600
|
|
scope:actor = {
|
|
OR = {
|
|
has_trait = zealous
|
|
ai_zeal >= 90
|
|
}
|
|
}
|
|
scope:recipient = scope:secondary_recipient
|
|
scope:recipient = scope:actor.faith.religious_head
|
|
scope:recipient = {
|
|
is_ai = yes # Don't spam players
|
|
num_of_relation_ward < 2
|
|
}
|
|
}
|
|
|
|
# Unity modifiers
|
|
evaluate_action_increasing_house_unity = {
|
|
VALUE = 100
|
|
}
|
|
|
|
modifier = { # Don't send your primary heir away
|
|
factor = 0
|
|
scope:secondary_actor = {
|
|
is_primary_heir_of = scope:actor
|
|
}
|
|
}
|
|
|
|
modifier = { # The AI shouldn't change culture/faith of their children
|
|
factor = 0
|
|
OR = {
|
|
scope:convert_culture = yes
|
|
scope:convert_faith = yes
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't care about random children
|
|
factor = 0
|
|
scope:secondary_actor = {
|
|
NOR = {
|
|
is_close_family_of = scope:actor
|
|
this = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't send children that are in need of a culture conversion
|
|
factor = 0
|
|
NOT = {
|
|
scope:secondary_actor.culture = scope:actor.culture
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't send away yourself
|
|
factor = 0
|
|
scope:secondary_actor = scope:actor
|
|
}
|
|
|
|
modifier = { # Rivals are not welcome
|
|
factor = 0
|
|
scope:recipient = {
|
|
OR = {
|
|
has_relation_rival = scope:actor
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't backtrack
|
|
factor = 0
|
|
scope:secondary_actor = {
|
|
any_relation = {
|
|
type = guardian
|
|
OR = {
|
|
is_vassal_of = scope:actor
|
|
this = scope:actor.faith.religious_head
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't override players
|
|
factor = 0
|
|
scope:secondary_actor = {
|
|
has_character_flag = player_educated
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't spend gold on this unless very, very rich
|
|
factor = 0
|
|
scope:send_to_university = yes
|
|
|
|
scope:actor.short_term_gold <= scope:actor.monumental_gold_value
|
|
}
|
|
}
|
|
}
|
|
|
|
# Request guardianship
|
|
offer_guardianship_interaction = {
|
|
category = interaction_category_friendly
|
|
icon = child
|
|
|
|
desc = offer_guardianship_interaction_desc
|
|
|
|
# secondary_actor = guardian
|
|
# actor = guardian.liege - can be same as guardian
|
|
# secondary_recipient = ward
|
|
# recipient = ward.liege - can be same as ward
|
|
|
|
redirect = {
|
|
if = {
|
|
limit = {
|
|
scope:actor = { is_ai = no }
|
|
}
|
|
scope:recipient = {
|
|
if = {
|
|
limit = {
|
|
exists = employer
|
|
NOT = { employer = scope:recipient }
|
|
}
|
|
if = {
|
|
limit = {
|
|
is_adult = no
|
|
#num_of_relation_guardian = 0
|
|
}
|
|
save_scope_as = secondary_recipient
|
|
}
|
|
employer = {
|
|
save_scope_as = recipient
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
is_ruler = yes
|
|
is_adult = no
|
|
}
|
|
save_scope_as = recipient
|
|
save_scope_as = secondary_recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
populate_actor_list = {
|
|
scope:actor = {
|
|
if = {
|
|
limit = {
|
|
is_adult = yes
|
|
num_of_relation_ward < 2
|
|
bp2_valid_for_standard_interactions_trigger = yes
|
|
is_hostage = no
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
every_courtier = {
|
|
limit = {
|
|
is_adult = yes
|
|
num_of_relation_ward < 2
|
|
NOR = {
|
|
is_theocratic_lessee = yes
|
|
is_consort_of = scope:actor
|
|
}
|
|
bp2_valid_for_standard_interactions_trigger = yes
|
|
is_hostage = no
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
}
|
|
}
|
|
|
|
populate_recipient_list = {
|
|
scope:recipient = {
|
|
if = {
|
|
limit = {
|
|
is_available_child_allow_travel = yes
|
|
bp2_valid_for_standard_interactions_trigger = yes
|
|
}
|
|
}
|
|
add_to_list = characters
|
|
every_courtier = {
|
|
limit = {
|
|
is_available_child_allow_travel = yes
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = { is_ai = yes }
|
|
}
|
|
is_close_family_of = scope:recipient
|
|
}
|
|
bp2_valid_for_standard_interactions_trigger = yes
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
}
|
|
}
|
|
|
|
greeting = positive
|
|
notification_text = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
# I assign, myself, to educate not you, but your...
|
|
scope:actor = scope:secondary_actor
|
|
NOT = { scope:recipient = scope:secondary_recipient }
|
|
}
|
|
desc = EDUCATE_RECIPIENT_CHILD_PERSONALLY_REQUEST
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
# I assign, myself, to educate you, yourself!
|
|
scope:actor = scope:secondary_actor
|
|
scope:recipient = scope:secondary_recipient
|
|
}
|
|
desc = EDUCATE_RECIPIENT_PERSONALLY_REQUEST
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
# I assign, not myself, to educate not you, but your...
|
|
NOT = { scope:recipient = scope:secondary_recipient }
|
|
NOT = { scope:actor = scope:secondary_actor }
|
|
}
|
|
desc = EDUCATE_RECIPIENT_CHILD_REQUEST
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
# I assign, not myself, to educate you, yourself
|
|
scope:recipient = scope:secondary_recipient
|
|
NOT = { scope:actor = scope:secondary_actor }
|
|
}
|
|
desc = EDUCATE_RECIPIENT_REQUEST
|
|
}
|
|
}
|
|
}
|
|
|
|
prompt = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
NOT = { exists = scope:secondary_actor }
|
|
}
|
|
desc = EDUCATE_SELECT_YOUR_GUARDIAN
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
NOT = { exists = scope:secondary_recipient }
|
|
}
|
|
desc = EDUCATE_SELECT_THEIR_WARD
|
|
}
|
|
desc = EDUCATE_SELECT_YOUR_WARD_OR_GUARDIAN
|
|
}
|
|
}
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
NOT = { this = scope:actor }
|
|
is_playable_character = yes
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
scope:secondary_recipient = { is_adult = no }
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
is_landless_adventurer = yes
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
is_courtier_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
custom_description = {
|
|
text = character_to_educate_exists
|
|
object = scope:recipient
|
|
scope:recipient = {
|
|
OR = {
|
|
any_courtier = {
|
|
is_adult = no
|
|
#num_of_relation_guardian = 0
|
|
}
|
|
AND = {
|
|
is_adult = no
|
|
#num_of_relation_guardian = 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = character_to_guard_exists
|
|
subject = scope:recipient
|
|
scope:recipient = {
|
|
OR = {
|
|
any_courtier = {
|
|
is_adult = yes
|
|
num_of_relation_ward < 2
|
|
}
|
|
AND = {
|
|
is_adult = yes
|
|
num_of_relation_ward < 2
|
|
}
|
|
}
|
|
}
|
|
}
|
|
NOT = {
|
|
scope:actor = { is_at_war_with = scope:recipient }
|
|
}
|
|
scope:recipient = {
|
|
is_imprisoned = no
|
|
is_busy_in_events_localised = yes
|
|
bp2_valid_for_standard_interactions_trigger = yes
|
|
}
|
|
trigger_if = { # Ward
|
|
limit = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
scope:secondary_recipient = {
|
|
is_available = yes
|
|
is_imprisoned = no
|
|
is_busy_in_events_localised = yes
|
|
bp2_valid_for_standard_interactions_trigger = yes
|
|
custom_tooltip = {
|
|
text = ward_travelling_tt
|
|
NOT = { exists = var:ward_travelling_to_guardian }
|
|
}
|
|
custom_tooltip = {
|
|
text = hostage_travelling_tt
|
|
NOT = { exists = var:hostage_travelling_to_warden }
|
|
}
|
|
# Structured this way for tooltip purposes
|
|
trigger_if = {
|
|
limit = { exists = var:ward_waiting_for_guardian }
|
|
var:ward_waiting_for_guardian = {
|
|
custom_tooltip = {
|
|
text = guardian_travelling_tt
|
|
NOT = { exists = scope:secondary_recipient.var:ward_waiting_for_guardian }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
trigger_if = { # Guardian
|
|
limit = {
|
|
exists = scope:secondary_actor
|
|
}
|
|
scope:secondary_actor = {
|
|
is_imprisoned = no
|
|
is_busy_in_events_localised = yes
|
|
custom_tooltip = {
|
|
text = guardian_travelling_tt
|
|
NOT = { exists = var:guardian_travelling_to_ward }
|
|
}
|
|
custom_tooltip = {
|
|
text = hostage_travelling_tt
|
|
NOT = { exists = var:hostage_travelling_to_warden }
|
|
}
|
|
|
|
# Structured this way for tooltip purposes
|
|
trigger_if = {
|
|
limit = { exists = var:guardian_waiting_for_ward }
|
|
var:guardian_waiting_for_ward = {
|
|
custom_tooltip = {
|
|
text = ward_travelling_tt
|
|
NOT = { exists = scope:secondary_actor.var:guardian_waiting_for_ward }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#limit range for landless adventurers
|
|
trigger_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
is_landless_adventurer = yes
|
|
}
|
|
}
|
|
#Has to be used instead of diplo range checks in laamp to landed interactions
|
|
ep3_laamp_diplo_range_trigger = {
|
|
TARGET = scope:recipient
|
|
LAAMP = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
can_be_picked = { #Potential Issue: This is only evaluated if both secondary recipient/actor are unselected TIT-49632
|
|
is_available = yes
|
|
# Under offer
|
|
custom_tooltip = {
|
|
text = ward_already_offered_awaiting_response_tt
|
|
NOT = { has_character_flag = under_offer_as_ward_flag }
|
|
}
|
|
custom_tooltip = {
|
|
text = guardian_already_offered_awaiting_response_tt
|
|
NOT = { has_character_flag = under_offer_as_guardian_flag }
|
|
}
|
|
# Already offered
|
|
custom_tooltip = {
|
|
text = ward_already_offered_awaiting_travel_tt
|
|
NOR = {
|
|
exists = var:ward_travelling_to_guardian
|
|
exists = var:ward_waiting_for_guardian
|
|
}
|
|
}
|
|
custom_tooltip = {
|
|
text = guardian_already_offered_awaiting_travel_tt
|
|
NOR = {
|
|
exists = var:guardian_travelling_to_ward
|
|
AND = {
|
|
exists = var:guardian_waiting_for_ward
|
|
num_of_relation_ward >= 1
|
|
}
|
|
}
|
|
}
|
|
# Hostage
|
|
custom_tooltip = {
|
|
text = hostage_travelling_tt
|
|
NOT = { exists = var:hostage_travelling_to_warden }
|
|
}
|
|
}
|
|
|
|
on_send = {
|
|
scope:secondary_recipient = {
|
|
add_character_flag = {
|
|
flag = under_offer_as_ward_flag
|
|
months = 1
|
|
}
|
|
}
|
|
scope:secondary_actor = {
|
|
add_character_flag = {
|
|
flag = under_offer_as_guardian_flag
|
|
months = 1
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:secondary_actor = { save_scope_as = guardian }
|
|
scope:actor = { save_scope_as = guardian_liege }
|
|
scope:secondary_recipient = { save_scope_as = ward }
|
|
scope:recipient = { save_scope_as = ward_liege }
|
|
|
|
if = {
|
|
limit = { scope:ward.age >= 15 }
|
|
custom_description_no_bullet = {
|
|
text = ward_nearing_adulthood_tt
|
|
object = scope:ward
|
|
}
|
|
}
|
|
|
|
show_as_tooltip = {
|
|
scope:guardian = { set_relation_ward = scope:ward }
|
|
educate_child_interaction_effect = yes
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
is_ai = no
|
|
}
|
|
}
|
|
scope:ward = {
|
|
add_character_flag = player_educated
|
|
}
|
|
}
|
|
|
|
if = { #To block against too many wards
|
|
limit = {
|
|
scope:guardian = { num_of_relation_ward < 2 }
|
|
}
|
|
|
|
save_scope_value_as = { #To give right tooltip in char_interaction.0080
|
|
name = offer_guardianship_interaction
|
|
value = yes
|
|
}
|
|
|
|
scope:actor = {
|
|
if = {
|
|
limit = { NOT = { this = scope:recipient } }
|
|
trigger_event = char_interaction.0080
|
|
}
|
|
}
|
|
}
|
|
else = { #Notifications about the relationship being blocked because actor tried to set it with too many
|
|
scope:recipient = {
|
|
trigger_event = char_interaction.0078
|
|
}
|
|
scope:actor = {
|
|
trigger_event = char_interaction.0079
|
|
}
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = miniscule_unity_gain
|
|
DESC = clan_unity_guardianship.desc
|
|
REVERSE_NON_HOUSE_TARGET = yes
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
if = {
|
|
limit = {
|
|
NOT = {
|
|
scope:actor = {
|
|
has_opinion_modifier = {
|
|
target = scope:recipient
|
|
modifier = declined_guardianship_opinion
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# If we're a clan this interaction affects unity; conditioned by the opinion modifer to avoid exploit
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = miniscule_unity_loss
|
|
DESC = clan_unity_guardianship_decline.desc
|
|
REVERSE_NON_HOUSE_TARGET = yes
|
|
}
|
|
}
|
|
|
|
scope:actor = {
|
|
trigger_event = char_interaction.0081
|
|
add_opinion = {
|
|
modifier = declined_guardianship_opinion
|
|
target = scope:recipient
|
|
opinion = -15
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
if = {
|
|
limit = {
|
|
is_ai = no
|
|
}
|
|
add_character_flag = { flag = ai_guardianship_ask_cooldown years = 5 }
|
|
}
|
|
}
|
|
|
|
scope:secondary_recipient = { remove_character_flag = under_offer_as_ward_flag }
|
|
scope:secondary_actor = { remove_character_flag = under_offer_as_guardian_flag }
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
scope:education_hook = yes
|
|
scope:actor = { has_strong_hook = scope:recipient }
|
|
}
|
|
}
|
|
|
|
ai_accept = {
|
|
base = -50
|
|
|
|
#Weak hook: extra points
|
|
modifier = {
|
|
scope:education_hook = yes
|
|
add = 200
|
|
scope:actor = { NOT = { has_strong_hook = scope:recipient } }
|
|
desc = SCHEME_WEAK_HOOK_USED
|
|
}
|
|
|
|
modifier = { # Respect the liege
|
|
add = 100
|
|
scope:recipient = { target_is_liege_or_above = scope:actor }
|
|
desc = EDUCATE_CHILD_ACTOR_IS_MY_LIEGE
|
|
}
|
|
|
|
#If the child is the educator's child they should be more likely to accept
|
|
modifier = {
|
|
add = 100
|
|
scope:secondary_recipient ?= {
|
|
is_adult = no
|
|
is_child_of = scope:secondary_actor
|
|
}
|
|
desc = AI_GUARDIANS_OWN_CHILD
|
|
}
|
|
|
|
modifier = {
|
|
add = -75
|
|
scope:secondary_actor.court_owner = {
|
|
NOR = {
|
|
this = scope:recipient.court_owner
|
|
this = scope:secondary_recipient.court_owner
|
|
}
|
|
}
|
|
NOT = { scope:secondary_recipient ?= { is_child_of = scope:actor } }
|
|
NOT = { scope:secondary_recipient ?= { is_child_of = scope:recipient } }
|
|
NOT = { scope:recipient = { target_is_liege_or_above = scope:actor } }
|
|
desc = AI_FOREIGN_COURT
|
|
}
|
|
|
|
modifier = {
|
|
add = -100
|
|
scope:secondary_actor.court_owner = {
|
|
NOR = {
|
|
this = scope:recipient.court_owner
|
|
this = scope:secondary_recipient.court_owner
|
|
}
|
|
}
|
|
NOT = { scope:secondary_recipient ?= { is_child_of = scope:actor } }
|
|
scope:secondary_recipient ?= { is_child_of = scope:recipient }
|
|
NOR = {
|
|
scope:recipient = { target_is_liege_or_above = scope:actor }
|
|
scope:recipient = { target_is_vassal_or_below = scope:actor}
|
|
}
|
|
desc = AI_CHILD_TO_FOREIGN_COURT
|
|
}
|
|
|
|
modifier = {
|
|
add = -50
|
|
scope:secondary_actor.court_owner = {
|
|
NOR = {
|
|
this = scope:recipient.court_owner
|
|
this = scope:secondary_recipient.court_owner
|
|
}
|
|
}
|
|
NOT = { scope:secondary_recipient ?= { is_child_of = scope:actor } }
|
|
scope:secondary_recipient ?= { is_child_of = scope:recipient }
|
|
scope:recipient = { target_is_vassal_or_below = scope:actor}
|
|
desc = AI_CHILD_TO_VASSAL_COURT
|
|
}
|
|
|
|
modifier = {
|
|
add = 25
|
|
scope:secondary_recipient ?= {
|
|
is_close_or_extended_family_of = scope:secondary_actor
|
|
}
|
|
|
|
desc = AI_CHILD_EDUCATED_BY_FAMILY
|
|
}
|
|
|
|
modifier = {
|
|
add = -100
|
|
scope:convert_culture = yes
|
|
scope:secondary_recipient.culture = scope:recipient.culture
|
|
desc = AI_CONVERT_CULTURE
|
|
}
|
|
|
|
modifier = {
|
|
add = -100
|
|
scope:convert_faith = yes
|
|
scope:secondary_recipient.faith = scope:recipient.faith
|
|
desc = AI_CONVERT_FAITH
|
|
}
|
|
|
|
modifier = {
|
|
add = 50
|
|
scope:recipient = { has_relation_friend = scope:actor }
|
|
desc = AI_YOUR_FRIEND
|
|
}
|
|
|
|
modifier = {
|
|
add = -50
|
|
scope:recipient = { has_relation_rival = scope:actor }
|
|
desc = AI_YOUR_RIVAL
|
|
}
|
|
|
|
# If the guardian is the child's secret father, the mother is more likely to send them
|
|
modifier = {
|
|
add = 100
|
|
exists = scope:secondary_recipient.mother
|
|
scope:recipient = scope:secondary_recipient.mother
|
|
OR = {
|
|
scope:actor = {
|
|
any_known_secret = {
|
|
OR = {
|
|
secret_type = secret_unmarried_illegitimate_child
|
|
secret_type = secret_disputed_heritage
|
|
}
|
|
exists = secret_target
|
|
secret_target = scope:secondary_recipient
|
|
}
|
|
}
|
|
scope:secondary_recipient = { has_trait = disputed_heritage }
|
|
AND = {
|
|
scope:secondary_recipient = { has_trait = bastard }
|
|
NOT = { exists = scope:secondary_recipient.father }
|
|
}
|
|
}
|
|
exists = scope:secondary_recipient.real_father
|
|
scope:secondary_recipient.real_father = scope:secondary_actor
|
|
desc = AI_YOU_ARE_THE_FATHER
|
|
}
|
|
|
|
#Their opinion of you matters!
|
|
opinion_modifier = {
|
|
opinion_target = scope:actor
|
|
who = scope:recipient
|
|
multiplier = 1
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
|
|
#Make less likely that they accept you as educator if they are of another culture
|
|
modifier = {
|
|
add = -5
|
|
trigger = {
|
|
scope:actor = {
|
|
this = scope:secondary_actor
|
|
culture = { has_same_culture_heritage = scope:recipient.culture }
|
|
NOT = { has_same_culture_as = scope:recipient }
|
|
}
|
|
}
|
|
desc = AI_NOT_CULTURE
|
|
}
|
|
|
|
modifier = {
|
|
add = -10
|
|
trigger = {
|
|
scope:actor = {
|
|
this = scope:secondary_actor
|
|
NOT = { culture = { has_same_culture_heritage = scope:recipient.culture } }
|
|
}
|
|
}
|
|
desc = AI_NOT_CULTURE
|
|
}
|
|
|
|
#Less likely if they don't like other religion
|
|
modifier = {
|
|
add = {
|
|
value = -5
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value >= faith_hostile_level
|
|
}
|
|
}
|
|
}
|
|
subtract = 5
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:recipient.faith = {
|
|
faith_hostility_level = {
|
|
target = scope:actor.faith
|
|
value >= faith_evil_level
|
|
}
|
|
}
|
|
}
|
|
subtract = 10
|
|
}
|
|
}
|
|
trigger = {
|
|
NOT = { scope:recipient.faith = scope:actor.faith }
|
|
}
|
|
desc = AI_RELIGION
|
|
}
|
|
|
|
#The better the educator is at a skill, the more likely they are to accept
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:secondary_actor = {
|
|
diplomacy >= 11
|
|
}
|
|
}
|
|
target = scope:secondary_actor
|
|
value = diplomacy
|
|
step = 4
|
|
multiplier = 0.75
|
|
offset = -5
|
|
min = 0
|
|
desc = AI_GUARDIAN_SKILL_DIPLOMACY
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:secondary_actor = {
|
|
martial >= 11
|
|
}
|
|
}
|
|
target = scope:secondary_actor
|
|
value = martial
|
|
step = 4
|
|
multiplier = 0.75
|
|
offset = -5
|
|
min = 0
|
|
desc = AI_GUARDIAN_SKILL_MARTIAL
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:secondary_actor = {
|
|
stewardship >= 11
|
|
}
|
|
}
|
|
target = scope:secondary_actor
|
|
value = stewardship
|
|
step = 4
|
|
multiplier = 0.75
|
|
offset = -5
|
|
min = 0
|
|
desc = AI_GUARDIAN_SKILL_STEWARDSHIP
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:secondary_actor = {
|
|
intrigue >= 11
|
|
}
|
|
}
|
|
target = scope:secondary_actor
|
|
value = intrigue
|
|
step = 4
|
|
multiplier = 0.75
|
|
offset = -5
|
|
min = 0
|
|
desc = AI_GUARDIAN_SKILL_INTRIGUE
|
|
}
|
|
compare_modifier = {
|
|
trigger = {
|
|
scope:secondary_actor = {
|
|
learning >= 11
|
|
}
|
|
}
|
|
target = scope:secondary_actor
|
|
value = learning
|
|
step = 4
|
|
multiplier = 0.75
|
|
offset = -5
|
|
min = 0
|
|
desc = AI_GUARDIAN_SKILL_LEARNING
|
|
}
|
|
|
|
# FP3 Beacon of Learning tradition (it makes a higher education trait more likely)
|
|
modifier = {
|
|
add = 15
|
|
scope:secondary_actor = {
|
|
culture = { has_cultural_parameter = guardian_education_better_outcomes }
|
|
}
|
|
desc = tradition_fp3_beacon_of_learning_name
|
|
}
|
|
|
|
#More/Less likely based on difference in rank between actor and recipient
|
|
modifier = {
|
|
add = 30
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 1
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = 40
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 2
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = 50
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 3
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = 60
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 4
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = 70
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 5
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = -30
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -1
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = -40
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -2
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = -50
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -3
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = -60
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -4
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
modifier = {
|
|
add = -70
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -5
|
|
}
|
|
}
|
|
desc = AI_RANK_DIFF
|
|
}
|
|
|
|
#More likely to accept if you have an alliance
|
|
modifier = {
|
|
add = 40
|
|
scope:actor = { is_allied_to = scope:recipient }
|
|
desc = AI_HAS_ALLIANCE
|
|
}
|
|
|
|
modifier = {
|
|
add = 50
|
|
scope:recipient = {
|
|
target_is_liege_or_above = scope:actor
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
desc = INTIMIDATED_REASON
|
|
}
|
|
modifier = {
|
|
add = 100
|
|
scope:recipient = {
|
|
target_is_liege_or_above = scope:actor
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
desc = COWED_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = 10
|
|
scope:recipient = {
|
|
NOT = { target_is_liege_or_above = scope:actor }
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 1
|
|
}
|
|
}
|
|
desc = INTIMIDATED_REASON
|
|
}
|
|
modifier = {
|
|
add = 20
|
|
scope:recipient = {
|
|
NOT = { target_is_liege_or_above = scope:actor }
|
|
has_dread_level_towards = {
|
|
target = scope:actor
|
|
level = 2
|
|
}
|
|
}
|
|
desc = COWED_REASON
|
|
}
|
|
modifier = {
|
|
add = 20
|
|
scope:actor = {
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
target_is_vassal_or_below = scope:recipient
|
|
court_grandeur_current_level >= 7
|
|
court_grandeur_current_level < 9
|
|
}
|
|
desc = GRANDEUR_REASON
|
|
}
|
|
modifier = {
|
|
add = 40
|
|
scope:actor = {
|
|
has_royal_court = yes
|
|
has_dlc_feature = royal_court
|
|
target_is_vassal_or_below = scope:recipient
|
|
court_grandeur_current_level >= 9
|
|
}
|
|
desc = GRANDEUR_REASON
|
|
}
|
|
|
|
modifier = {
|
|
add = -200
|
|
exists = scope:secondary_recipient.house
|
|
scope:recipient = {
|
|
exists = house.house_head
|
|
house = scope:secondary_recipient.house
|
|
house.house_head = {
|
|
any_owned_story = {
|
|
story_type = story_cycle_house_feud
|
|
exists = var:house_feud_house
|
|
var:house_feud_house = scope:actor.house
|
|
}
|
|
}
|
|
}
|
|
desc = AI_GUARDIAN_FEUD_HESITANCE
|
|
}
|
|
|
|
modifier = {
|
|
add = diarch_should_educate_liege_value
|
|
scope:recipient.diarch ?= scope:actor
|
|
desc = DIARCH_SHOULD_EDUCATE_DIARCH_TO_LIEGE
|
|
}
|
|
|
|
# Unity modifiers
|
|
evaluate_action_increasing_house_unity = {
|
|
VALUE = 100
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
is_shown = {
|
|
exists = scope:secondary_actor
|
|
exists = scope:secondary_recipient
|
|
NOT = { scope:secondary_actor.culture = scope:secondary_recipient.culture }
|
|
}
|
|
flag = convert_culture
|
|
localization = EDUCATE_CHILD_OPTION_CONVERT_CULTURE
|
|
current_description = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_actor
|
|
scope:secondary_actor = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_RECIPIENT
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_recipient
|
|
scope:secondary_recipient = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_ACTOR
|
|
}
|
|
}
|
|
}
|
|
}
|
|
send_option = {
|
|
is_shown = {
|
|
exists = scope:secondary_actor
|
|
exists = scope:secondary_recipient
|
|
NOT = { scope:secondary_actor.faith = scope:secondary_recipient.faith }
|
|
}
|
|
flag = convert_faith
|
|
localization = EDUCATE_CHILD_OPTION_CONVERT_FAITH
|
|
current_description = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_actor
|
|
scope:secondary_actor = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_RECIPIENT
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:secondary_recipient
|
|
scope:secondary_recipient = { is_adult = no }
|
|
}
|
|
desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_ACTOR
|
|
}
|
|
}
|
|
}
|
|
}
|
|
send_option = {
|
|
is_shown = {
|
|
scope:recipient = {
|
|
any_realm_province = {
|
|
has_university_building_trigger = yes
|
|
}
|
|
}
|
|
}
|
|
is_valid = {
|
|
scope:actor.gold >= scope:actor.medium_gold_value
|
|
}
|
|
starts_enabled = { always = yes }
|
|
flag = send_to_university
|
|
localization = EDUCATION_UNIVERSITY
|
|
}
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = {
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
}
|
|
flag = education_hook
|
|
localization = EDUCATION_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
|
|
|
|
ai_targets = {
|
|
ai_recipients = vassals
|
|
}
|
|
|
|
ai_frequency = 48
|
|
|
|
ai_potential = {
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 0
|
|
|
|
modifier = { # Liege's should want to culture/faith convert their vassal's children
|
|
add = 100
|
|
|
|
scope:convert_culture = yes
|
|
scope:convert_faith = yes
|
|
|
|
scope:secondary_actor = {
|
|
culture = scope:actor.culture
|
|
faith = scope:actor.faith
|
|
}
|
|
scope:secondary_recipient = {
|
|
OR = {
|
|
is_heir_of = scope:recipient
|
|
scope:secondary_recipient = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Liege's should want to culture/faith convert their vassal's children
|
|
add = 95
|
|
|
|
scope:convert_culture = yes
|
|
|
|
scope:secondary_actor = {
|
|
culture = scope:actor.culture
|
|
}
|
|
scope:secondary_recipient = {
|
|
OR = {
|
|
is_heir_of = scope:recipient
|
|
scope:secondary_recipient = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Liege's should want to culture/faith convert their vassal's children
|
|
add = 90
|
|
|
|
scope:convert_faith = yes
|
|
|
|
scope:secondary_actor = {
|
|
faith = scope:actor.faith
|
|
}
|
|
scope:secondary_recipient = {
|
|
OR = {
|
|
is_heir_of = scope:recipient
|
|
scope:secondary_recipient = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Players shouldn't be spammed
|
|
add = -90
|
|
|
|
scope:secondary_recipient = {
|
|
is_ai = no
|
|
}
|
|
}
|
|
|
|
# Unity modifiers
|
|
evaluate_action_increasing_house_unity = {
|
|
VALUE = 100
|
|
}
|
|
|
|
modifier = { # Players shouldn't be spammed
|
|
factor = 0
|
|
|
|
scope:recipient = {
|
|
has_character_flag = ai_guardianship_ask_cooldown
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't ask to convert faith if that's already a thing
|
|
factor = 0
|
|
|
|
scope:convert_faith = yes
|
|
NOT = { scope:convert_culture = yes }
|
|
|
|
scope:secondary_recipient = {
|
|
any_relation = {
|
|
faith = scope:actor.faith
|
|
type = guardian
|
|
has_relation_flag = {
|
|
target = scope:secondary_recipient
|
|
relation = ward
|
|
flag = convert_faith
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't ask to convert culture if that's already a thing
|
|
factor = 0
|
|
|
|
scope:convert_culture = yes
|
|
NOT = { scope:convert_faith = yes }
|
|
|
|
scope:secondary_recipient = {
|
|
any_relation = {
|
|
culture = scope:actor.culture
|
|
type = guardian
|
|
has_relation_flag = {
|
|
target = scope:secondary_recipient
|
|
relation = ward
|
|
flag = convert_culture
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't ask to convert culture and faith if that's already a thing
|
|
factor = 0
|
|
|
|
scope:convert_culture = yes
|
|
scope:convert_faith = yes
|
|
|
|
scope:secondary_recipient = {
|
|
any_relation = {
|
|
culture = scope:actor.culture
|
|
faith = scope:actor.faith
|
|
type = guardian
|
|
has_relation_flag = {
|
|
target = scope:secondary_recipient
|
|
relation = ward
|
|
flag = convert_culture
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = { # Don't spend gold on this unless very, very rich
|
|
factor = 0
|
|
scope:send_to_university = yes
|
|
|
|
scope:actor.short_term_gold <= scope:actor.monumental_gold_value
|
|
}
|
|
}
|
|
}
|
|
|
|
remove_guardian_interaction = {
|
|
category = interaction_category_friendly
|
|
desc = remove_guardian_interaction_desc
|
|
icon = child
|
|
|
|
force_notification = yes
|
|
greeting = positive
|
|
notification_text = REMOVE_GUARDIAN_INTERACTION
|
|
use_diplomatic_range = no
|
|
|
|
is_shown = {
|
|
scope:actor = { is_ruler = yes }
|
|
OR = {
|
|
scope:recipient = {
|
|
any_relation = {
|
|
type = ward
|
|
remove_guardian_interaction_visible_ward_trigger = yes
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
remove_guardian_interaction_visible_ward_trigger = yes
|
|
any_relation = { type = guardian always = yes }
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = {
|
|
#RECIPIENT = GUARDIAN
|
|
trigger_if = {
|
|
limit = { scope:recipient = { is_adult = yes } }
|
|
|
|
#Diplo availability/not imprisoned
|
|
#is_busy_in_events_localised = yes
|
|
|
|
any_relation = {
|
|
type = ward
|
|
|
|
remove_guardian_interaction_visible_ward_trigger = yes
|
|
remove_guardian_interaction_available_ward_trigger = yes
|
|
}
|
|
|
|
|
|
#War blocker
|
|
NOR = {
|
|
is_at_war_with = scope:actor
|
|
any_liege_or_above = { is_at_war_with = scope:actor }
|
|
}
|
|
}
|
|
#RECIPIENT = WARD
|
|
trigger_else = {
|
|
|
|
#Diplo availability
|
|
remove_guardian_interaction_visible_ward_trigger = yes
|
|
remove_guardian_interaction_available_ward_trigger = yes
|
|
|
|
any_relation = {
|
|
type = guardian
|
|
#is_busy_in_events_localised = yes
|
|
}
|
|
|
|
#War blocker
|
|
any_relation = {
|
|
type = guardian
|
|
NOR = {
|
|
is_at_war_with = scope:actor
|
|
any_liege_or_above = { is_at_war_with = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#Misc
|
|
#scope:actor = { is_imprisoned = no }
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
ai_min_reply_days = 1
|
|
ai_max_reply_days = 3
|
|
|
|
on_accept = {
|
|
#Save guardian scope
|
|
if = {
|
|
limit = { scope:recipient = { is_adult = yes } }
|
|
scope:recipient = {
|
|
save_scope_as = guardian
|
|
}
|
|
}
|
|
else = {
|
|
scope:recipient = { every_relation = { type = guardian save_scope_as = guardian } }
|
|
}
|
|
|
|
#Save ward(s) scope(s)
|
|
scope:guardian = {
|
|
#If the recipient is the ward, always pick them as ward
|
|
if = {
|
|
limit = {
|
|
NOT = { this = scope:recipient }
|
|
}
|
|
scope:recipient = { save_scope_as = ward }
|
|
}
|
|
#If recipient is the guardian, pick a random ward as ward 1 and if there is an additional one, set is as ward 2
|
|
else = {
|
|
random_relation = {
|
|
type = ward
|
|
limit = {
|
|
remove_guardian_interaction_visible_ward_trigger = yes
|
|
remove_guardian_interaction_available_ward_trigger = yes
|
|
}
|
|
save_scope_as = ward
|
|
save_scope_as = secondary_recipient
|
|
}
|
|
if = {
|
|
limit = {
|
|
any_relation = {
|
|
type = ward
|
|
remove_guardian_interaction_visible_ward_trigger = yes
|
|
remove_guardian_interaction_available_ward_trigger = yes
|
|
NOR = {
|
|
this = scope:ward
|
|
scope:ward = scope:recipient #because if we target a specific child, no 2nd ward
|
|
}
|
|
}
|
|
}
|
|
random_relation = {
|
|
type = ward
|
|
limit = {
|
|
remove_guardian_interaction_visible_ward_trigger = yes
|
|
remove_guardian_interaction_available_ward_trigger = yes
|
|
NOR = {
|
|
this = scope:ward
|
|
this = scope:recipient
|
|
}
|
|
}
|
|
save_scope_as = ward_2
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#Letter event to guardian
|
|
if = {
|
|
limit = {
|
|
NOT = {
|
|
scope:guardian = scope:actor
|
|
}
|
|
}
|
|
scope:guardian = {
|
|
trigger_event = char_interaction.0090
|
|
}
|
|
}
|
|
|
|
#Handling the wards and feedback to actor
|
|
scope:actor = {
|
|
send_interface_message = {
|
|
type = event_childhood_neutral
|
|
title = remove_guardian_interaction_notification
|
|
left_icon = scope:guardian
|
|
right_icon = scope:ward
|
|
remove_guardian_effect = {
|
|
GUARDIAN = scope:guardian
|
|
WARD = scope:ward
|
|
RETURN_WARD = yes
|
|
HIDE_OPINION = no
|
|
}
|
|
if = {
|
|
limit = { exists = scope:ward_2 }
|
|
remove_guardian_effect = {
|
|
GUARDIAN = scope:guardian
|
|
WARD = scope:ward_2
|
|
RETURN_WARD = yes
|
|
HIDE_OPINION = no
|
|
}
|
|
}
|
|
|
|
#Was education promised in interaction or in vassal.2001? Then you get an opinion penalty
|
|
if = {
|
|
limit = {
|
|
exists = scope:ward.var:character_requested_as_educator
|
|
scope:ward.var:character_requested_as_educator = scope:guardian
|
|
exists = scope:ward.var:character_making_education_request
|
|
scope:ward.var:character_making_education_request = {
|
|
is_alive = yes
|
|
OR = {
|
|
this = scope:guardian
|
|
scope:guardian = { is_courtier_of = prev }
|
|
}
|
|
NOT = { this = scope:actor }
|
|
}
|
|
}
|
|
scope:ward.var:character_making_education_request = {
|
|
add_opinion = {
|
|
modifier = insult_opinion
|
|
target = scope:actor
|
|
opinion = -15
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#Remove guardian opinion from guardian/guardian's liege
|
|
#Ward
|
|
if = {
|
|
limit = { scope:actor = scope:ward.liege } #Only show if actor is ward's liege
|
|
guardian_remove_opinion_effect = {
|
|
GUARDIAN = scope:guardian
|
|
WARD = scope:ward
|
|
WARD_LIEGE = scope:ward.liege
|
|
}
|
|
}
|
|
else = {
|
|
hidden_effect = { #Else hide it
|
|
guardian_remove_opinion_effect = {
|
|
GUARDIAN = scope:guardian
|
|
WARD = scope:ward
|
|
WARD_LIEGE = scope:ward.liege
|
|
}
|
|
}
|
|
}
|
|
#Ward_2
|
|
if = {
|
|
limit = {
|
|
exists = scope:ward_2
|
|
scope:actor = scope:ward_2.liege #Only show guardian opinion removed if actor is ward_2's liege
|
|
NOT = { scope:actor = scope:ward.liege } #also don't show it twice if both wards' are actor's
|
|
}
|
|
guardian_remove_opinion_effect = {
|
|
GUARDIAN = scope:guardian
|
|
WARD = scope:ward_2
|
|
WARD_LIEGE = scope:ward_2.liege
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
exists = scope:ward_2
|
|
}
|
|
hidden_effect = { #Else hide it
|
|
guardian_remove_opinion_effect = {
|
|
GUARDIAN = scope:guardian
|
|
WARD = scope:ward_2
|
|
WARD_LIEGE = scope:ward_2.liege
|
|
}
|
|
}
|
|
}
|
|
|
|
#Make the liege of the ward(s) insulted if actor is not the liege of the ward
|
|
if = {
|
|
limit = {
|
|
NOR = {
|
|
scope:ward.liege = scope:actor
|
|
scope:ward = scope:actor
|
|
}
|
|
}
|
|
scope:ward.liege = {
|
|
add_opinion = {
|
|
modifier = insulted_opinion
|
|
target = scope:actor
|
|
opinion = -15
|
|
}
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
exists = scope:ward_2
|
|
NOR = {
|
|
scope:ward_2.liege = scope:actor
|
|
scope:ward_2.liege = scope:ward.liege
|
|
scope:ward_2 = scope:actor
|
|
}
|
|
}
|
|
scope:ward_2.liege = {
|
|
add_opinion = {
|
|
modifier = insulted_opinion
|
|
target = scope:actor
|
|
opinion = -15
|
|
}
|
|
}
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
NOT = {
|
|
has_character_flag = guardian_unity_block
|
|
}
|
|
}
|
|
}
|
|
# If we're a clan this interaction affects unity
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = minor_unity_loss
|
|
DESC = clan_unity_removed_guardian.desc
|
|
REVERSE_NON_HOUSE_TARGET = yes
|
|
}
|
|
}
|
|
scope:actor = {
|
|
if = {
|
|
limit = {
|
|
is_ai = no
|
|
government_has_flag = government_is_clan
|
|
}
|
|
}
|
|
add_character_flag = {
|
|
flag = guardian_unity_block
|
|
months = 3
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
make_child_learn_language_interaction = {
|
|
category = interaction_category_friendly
|
|
common_interaction = yes
|
|
icon = icon_scheme_learn_language
|
|
|
|
send_name = study_language
|
|
|
|
desc = make_child_learn_language_interaction_desc
|
|
|
|
redirect = {
|
|
scope:actor = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
}
|
|
save_scope_as = secondary_actor
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
any_courtier = {
|
|
scope:recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
}
|
|
}
|
|
random_courtier = {
|
|
limit = {
|
|
scope:recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
}
|
|
save_scope_as = secondary_actor
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
any_vassal = {
|
|
scope:recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
}
|
|
}
|
|
random_vassal = {
|
|
limit = {
|
|
scope:recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
}
|
|
save_scope_as = secondary_actor
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
save_scope_as = secondary_recipient
|
|
|
|
if = {
|
|
limit = {
|
|
exists = employer
|
|
NOT = { employer = scope:recipient }
|
|
}
|
|
|
|
employer = {
|
|
save_scope_as = recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
populate_actor_list = {
|
|
scope:actor = {
|
|
if = {
|
|
limit = {
|
|
is_physically_able_adult = yes
|
|
exists = scope:secondary_recipient
|
|
scope:secondary_recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
every_courtier = {
|
|
limit = {
|
|
is_physically_able_adult = yes
|
|
exists = scope:secondary_recipient
|
|
scope:secondary_recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
every_vassal = {
|
|
limit = {
|
|
is_physically_able_adult = yes
|
|
exists = scope:secondary_recipient
|
|
scope:secondary_recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
if = {
|
|
limit = {
|
|
NOT = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
}
|
|
every_courtier = {
|
|
limit = {
|
|
is_physically_able_adult = yes
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
every_vassal = {
|
|
limit = {
|
|
is_physically_able_adult = yes
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
populate_recipient_list = {
|
|
scope:recipient = {
|
|
every_courtier = {
|
|
limit = {
|
|
is_adult = no
|
|
is_physically_able = yes
|
|
age >= 6
|
|
is_close_or_extended_family_of = scope:actor
|
|
is_ai = yes
|
|
}
|
|
add_to_list = characters
|
|
}
|
|
}
|
|
}
|
|
|
|
greeting = positive
|
|
notification_text = {
|
|
desc = MAKE_LEARN_LANGUAGE_REQUEST
|
|
}
|
|
|
|
prompt = {
|
|
desc = SELECT_TARGET_LANGUAGE_SCHEME
|
|
}
|
|
|
|
is_shown = {
|
|
has_ep1_court_positions_dlc_trigger = yes
|
|
scope:recipient = {
|
|
is_in_the_same_court_as = scope:actor
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
scope:secondary_recipient = {
|
|
is_adult = no
|
|
is_ai = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = {
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
employs_court_position = court_tutor_court_position
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_actor
|
|
}
|
|
scope:secondary_actor = {
|
|
is_imprisoned = no
|
|
NOT = { has_trait = incapable }
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_recipient
|
|
}
|
|
scope:secondary_recipient = {
|
|
is_adult = no
|
|
is_physically_able = yes
|
|
age >= 6
|
|
is_close_or_extended_family_of = scope:actor
|
|
custom_description = {
|
|
text = already_scheming_language
|
|
NOT = {
|
|
any_scheme = {
|
|
scheme_type = learn_language
|
|
}
|
|
}
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = no_target_language
|
|
scope:actor = {
|
|
OR = {
|
|
scope:secondary_recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
any_courtier = {
|
|
scope:secondary_recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
}
|
|
any_vassal = {
|
|
scope:secondary_recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:secondary_actor
|
|
exists = scope:secondary_recipient
|
|
}
|
|
scope:secondary_actor = {
|
|
scope:secondary_recipient = {
|
|
can_start_scheme = { type = learn_language target_character = prev }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
can_be_picked = {
|
|
is_at_home = yes
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
send_interface_message = {
|
|
type = event_childhood_neutral
|
|
title = make_child_learn_language_interaction_notification
|
|
left_icon = scope:secondary_recipient
|
|
right_icon = scope:secondary_actor
|
|
scope:secondary_recipient = {
|
|
custom_tooltip = secondary_actors_language
|
|
begin_scheme_basic_effect = {
|
|
SCHEME_TYPE = learn_language
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:secondary_actor
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
exists = court_position:court_tutor_court_position
|
|
court_position:court_tutor_court_position = {
|
|
aptitude:court_tutor_court_position = 1
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = court_tutor_child_language_rank_1
|
|
hidden_effect = {
|
|
random_scheme = {
|
|
limit = {
|
|
scheme_type = learn_language
|
|
}
|
|
add_scheme_modifier = {
|
|
type = court_tutor_child_language_rank_1_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
exists = court_position:court_tutor_court_position
|
|
court_position:court_tutor_court_position = {
|
|
aptitude:court_tutor_court_position = 2
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = court_tutor_child_language_rank_2
|
|
hidden_effect = {
|
|
random_scheme = {
|
|
limit = {
|
|
scheme_type = learn_language
|
|
}
|
|
add_scheme_modifier = {
|
|
type = court_tutor_child_language_rank_2_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
exists = court_position:court_tutor_court_position
|
|
court_position:court_tutor_court_position = {
|
|
aptitude:court_tutor_court_position = 3
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = court_tutor_child_language_rank_3
|
|
hidden_effect = {
|
|
random_scheme = {
|
|
limit = {
|
|
scheme_type = learn_language
|
|
}
|
|
add_scheme_modifier = {
|
|
type = court_tutor_child_language_rank_3_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
exists = court_position:court_tutor_court_position
|
|
court_position:court_tutor_court_position = {
|
|
aptitude:court_tutor_court_position = 4
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = court_tutor_child_language_rank_4
|
|
hidden_effect = {
|
|
random_scheme = {
|
|
limit = {
|
|
scheme_type = learn_language
|
|
}
|
|
add_scheme_modifier = {
|
|
type = court_tutor_child_language_rank_4_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
exists = court_position:court_tutor_court_position
|
|
court_position:court_tutor_court_position = {
|
|
aptitude:court_tutor_court_position = 5
|
|
}
|
|
}
|
|
}
|
|
custom_tooltip = court_tutor_child_language_rank_5
|
|
hidden_effect = {
|
|
random_scheme = {
|
|
limit = {
|
|
scheme_type = learn_language
|
|
}
|
|
add_scheme_modifier = {
|
|
type = court_tutor_child_language_rank_5_modifier
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
ai_accept = {
|
|
base = 100
|
|
}
|
|
|
|
ai_frequency = 24
|
|
|
|
ai_targets = {
|
|
ai_recipients = children
|
|
}
|
|
|
|
ai_potential = {
|
|
has_ep1_court_positions_dlc_trigger = yes
|
|
employs_court_position = court_tutor_court_position
|
|
primary_title.tier >= tier_county
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 0
|
|
|
|
modifier = { # The AI wants to prepare their children for ruling their vassals
|
|
add = 100
|
|
any_vassal = {
|
|
primary_title.tier >= tier_county
|
|
knows_language_of_culture = scope:secondary_actor.culture
|
|
}
|
|
}
|
|
}
|
|
}
|