468 lines
12 KiB
Text
468 lines
12 KiB
Text
# Character Interactions for EP1
|
|
|
|
##################
|
|
# Fund someone's inspiration
|
|
# by Linnéa Thimrén
|
|
##################
|
|
fund_inspiration_interaction = {
|
|
icon = inspiration
|
|
interface_priority = 30
|
|
common_interaction = yes
|
|
category = interaction_category_vassal
|
|
desc = fund_inspiration_interaction_desc
|
|
|
|
is_shown = {
|
|
scope:recipient = {
|
|
is_ruler = no
|
|
exists = inspiration
|
|
inspiration = {
|
|
NOT = {
|
|
exists = inspiration_sponsor
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
any_courtier_or_guest = {
|
|
this = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
|
|
is_highlighted = {
|
|
always = yes
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = {
|
|
is_physically_able = yes
|
|
is_ruler = no
|
|
trigger_if = {
|
|
limit = {
|
|
NOT = { is_courtier_of = scope:actor }
|
|
}
|
|
can_recruit_character_to_court_trigger = {
|
|
RECRUITER = scope:actor
|
|
RECRUITEE = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
can_sponsor_inspiration = scope:recipient.inspiration
|
|
gold >= scope:recipient.inspiration.base_inspiration_gold_cost
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
fund_inspiration_effect = yes
|
|
|
|
if = {
|
|
limit = { scope:recipient.inspiration = { has_inspiration_type = weapon_inspiration } }
|
|
custom_description_no_bullet = { text = weapon_inspiration_cost_tt }
|
|
}
|
|
else_if = {
|
|
limit = { scope:recipient.inspiration = { has_inspiration_type = armor_inspiration } }
|
|
custom_description_no_bullet = { text = armor_inspiration_cost_tt }
|
|
}
|
|
else_if = {
|
|
limit = { scope:recipient.inspiration = { has_inspiration_type = book_inspiration } }
|
|
custom_description_no_bullet = { text = book_inspiration_cost_tt }
|
|
}
|
|
else_if = {
|
|
limit = { scope:recipient.inspiration = { has_inspiration_type = weaver_inspiration } }
|
|
custom_description_no_bullet = { text = weaver_inspiration_cost_tt }
|
|
}
|
|
else_if = {
|
|
limit = { scope:recipient.inspiration = { has_inspiration_type = adventure_inspiration } }
|
|
custom_description_no_bullet = { text = adventure_inspiration_cost_tt }
|
|
}
|
|
else_if = {
|
|
limit = { scope:recipient.inspiration = { has_inspiration_type = artisan_inspiration } }
|
|
custom_description_no_bullet = { text = artisan_inspiration_cost_tt }
|
|
}
|
|
else_if = {
|
|
limit = { scope:recipient.inspiration = { has_inspiration_type = smith_inspiration } }
|
|
custom_description_no_bullet = { text = smith_inspiration_cost_tt }
|
|
}
|
|
else_if = {
|
|
limit = { scope:recipient.inspiration = { has_inspiration_type = alchemy_inspiration}}
|
|
custom_description_no_bullet = { text = alchemy_inspiration_cost_tt }
|
|
}
|
|
|
|
# Add a flag on AI to have an extra cooldown of 3 years
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
is_ai = yes
|
|
NOT = {
|
|
gold >= 1000
|
|
}
|
|
OR = {
|
|
short_term_gold < ai_inspiration_desired_gold_value
|
|
ai_greed >= 50
|
|
}
|
|
}
|
|
}
|
|
scope:actor = {
|
|
add_character_flag = {
|
|
flag = recently_fund_inspiration
|
|
years = 3
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
# 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_inspo.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_description = {
|
|
text = auto_accept_interaction_ai
|
|
object = scope:recipient
|
|
scope:recipient = {
|
|
is_ai = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_frequency = 10
|
|
|
|
ai_targets = {
|
|
ai_recipients = guests
|
|
ai_recipients = courtiers
|
|
}
|
|
|
|
ai_target_quick_trigger = {
|
|
adult = yes
|
|
}
|
|
|
|
ai_potential = {
|
|
is_at_war = no
|
|
OR = {
|
|
has_royal_court = yes
|
|
government_has_flag = government_is_landless_adventurer
|
|
}
|
|
gold > ai_inspiration_desired_gold_value
|
|
NOT = { has_character_flag = recently_fund_inspiration }
|
|
ai_has_conqueror_personality = no
|
|
ai_should_focus_on_building_in_their_capital = no
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 100
|
|
|
|
modifier = { # Not as likely to fund inspirations if they already have some going (max three for very prestigious courts)
|
|
add = {
|
|
if = {
|
|
limit = {
|
|
highest_held_title_tier >= tier_empire
|
|
any_sponsored_inspiration = {
|
|
count >= 3
|
|
}
|
|
}
|
|
add = -50
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
highest_held_title_tier >= tier_kingdom
|
|
any_sponsored_inspiration = {
|
|
count >= 2
|
|
}
|
|
}
|
|
add = -50
|
|
}
|
|
}
|
|
}
|
|
|
|
# Do not pointlessly fund inspirations you do not need
|
|
modifier = { # Weapons
|
|
factor = 0
|
|
scope:recipient.inspiration = {
|
|
has_inspiration_type = weapon_inspiration
|
|
}
|
|
OR = {
|
|
any_character_artifact = { # Has a fantastic item already
|
|
artifact_slot_type = primary_armament
|
|
rarity = illustrious
|
|
}
|
|
AND = { # Have a lot of artifacts already, and the inspired person isn't even very good
|
|
scope:recipient = {
|
|
weapon_inspiration_average_skill_value < 15
|
|
}
|
|
any_character_artifact = {
|
|
count >= 2
|
|
artifact_slot_type = primary_armament
|
|
}
|
|
}
|
|
}
|
|
}
|
|
modifier = { # Armor
|
|
factor = 0
|
|
scope:recipient.inspiration = {
|
|
has_inspiration_type = armor_inspiration
|
|
}
|
|
OR = {
|
|
any_character_artifact = { # Has a fantastic item already
|
|
artifact_slot_type = armor
|
|
rarity = illustrious
|
|
}
|
|
AND = { # Have a lot of artifacts already, and the inspired person isn't even very good
|
|
scope:recipient = {
|
|
armor_inspiration_average_skill_value < 15
|
|
}
|
|
any_character_artifact = {
|
|
count >= 2
|
|
artifact_slot_type = armor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
modifier = { # Warlike AI's only sponsor if they've been at peace for a long time
|
|
factor = 0
|
|
ai_has_warlike_personality = yes
|
|
days_of_continuous_peace < 1825 # 5 years
|
|
}
|
|
modifier = { # Cautious AI's only sponsor if they feel safe enough
|
|
factor = 0
|
|
ai_has_cautious_personality = yes
|
|
war_chest_gold < cautious_ai_minimum_war_chest_gold
|
|
}
|
|
}
|
|
}
|
|
|
|
##################
|
|
# Indebt Guest
|
|
# by Ewan Cowhig Croft
|
|
##################
|
|
|
|
indebt_guest_interaction = {
|
|
icon = icon_hostile
|
|
interface_priority = 120
|
|
common_interaction = yes
|
|
ai_max_reply_days = 0
|
|
cooldown = { years = 5 }
|
|
|
|
category = interaction_category_hostile
|
|
ai_maybe = yes
|
|
|
|
desc = indebt_guest_interaction_desc
|
|
|
|
greeting = negative
|
|
pre_answer_maybe_key = ANSWER_MIGHT_SUCCEED
|
|
pre_answer_no_key = ANSWER_CANT_SUCCEED
|
|
pre_answer_yes_key = ANSWER_WILL_SUCCEED
|
|
pre_answer_maybe_breakdown_key = ANSWER_SUM_CHANCE
|
|
|
|
ai_potential = {
|
|
# Repeat some is_shown triggers for performance gains.
|
|
indebt_guest_interaction_basic_checks_trigger = { ACTOR = this }
|
|
}
|
|
|
|
is_shown = {
|
|
NOT = { scope:actor = scope:recipient }
|
|
# Repeat some ai_potential triggers for performance gains.
|
|
indebt_guest_interaction_basic_checks_trigger = { ACTOR = scope:actor }
|
|
# Scope:recipient must be a guest.
|
|
scope:recipient = { is_pool_guest_of = scope:actor }
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = { is_busy_in_events_localised = yes }
|
|
scope:actor = { is_imprisoned = no }
|
|
scope:actor = { is_commanding_army = no }
|
|
# Scope:actor can't have a hook of any kind on scope:recipient already.
|
|
NOT = {
|
|
scope:actor = { has_hook = scope:recipient }
|
|
}
|
|
# Scope:actor must be able to afford the cost of the decision going wrong.
|
|
scope:actor.court_grandeur_current >= indebt_guest_interaction_lost_test_grandeur_cost_value
|
|
}
|
|
|
|
can_send = {
|
|
scope:actor = {
|
|
custom_description = {
|
|
text = "character_interactions_hostile_actions_disabled_delay"
|
|
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
}
|
|
}
|
|
|
|
on_send = {
|
|
scope:actor = {
|
|
add_character_flag = {
|
|
flag = flag_hostile_actions_disabled_delay
|
|
days = 10
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
# On accept, you gain a hook & lose some opinion.
|
|
## Which we only show as a tooltip for now, since it's applied in the event.
|
|
show_as_tooltip = { indebt_guest_interaction_accepted_effect = yes }
|
|
# Pop the event.
|
|
trigger_event = ep1_character_interaction.0001
|
|
# Reminder that you'll have a chance to direct where they go.
|
|
custom_tooltip = indebt_guest_interaction.tt.direct_indebted_guest
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = miniscule_unity_loss
|
|
DESC = clan_unity_indebt_guest.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
# Send a toast.
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_bad
|
|
title = indebt_guest_interaction.tt.failure
|
|
left_icon = scope:recipient
|
|
# On decline, scope:recipient leaves your court...
|
|
scope:recipient = { select_and_move_to_pool_effect = yes }
|
|
# ... and you lose a bit of extra grandeur for your audacity.
|
|
change_current_court_grandeur = indebt_guest_interaction_lost_test_grandeur_cost_value
|
|
}
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = miniscule_unity_loss
|
|
DESC = clan_unity_indebt_guest_failure.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
auto_accept = no
|
|
|
|
ai_accept = {
|
|
base = 50
|
|
|
|
# Standard intrigue duel.
|
|
modifier = {
|
|
add = {
|
|
value = scope:actor.intrigue
|
|
multiply = 2
|
|
}
|
|
desc = INDEBT_GUEST_INTRIGUE_ACTOR
|
|
}
|
|
modifier = {
|
|
add = {
|
|
value = scope:recipient.intrigue
|
|
multiply = -1
|
|
}
|
|
desc = INDEBT_GUEST_INTRIGUE_RECIPIENT
|
|
}
|
|
# Weight it a bit more in your favour for every point of excess CGV you have.
|
|
modifier = {
|
|
add = scope:actor.current_cgv_above_expected_exact_value
|
|
desc = INDEBT_GUEST_CURRENT_CGV_ABOVE_EXPECTED
|
|
scope:actor.current_cgv_above_expected_exact_value >= 1
|
|
}
|
|
# Some traits may also affect the chances for scope:actor...
|
|
modifier = {
|
|
add = 10
|
|
scope:actor = { has_trait = schemer }
|
|
}
|
|
modifier = {
|
|
add = 10
|
|
scope:actor = { has_trait = education_intrigue }
|
|
}
|
|
modifier = {
|
|
add = 5
|
|
scope:actor = { has_trait = deceitful }
|
|
}
|
|
modifier = {
|
|
add = 5
|
|
scope:actor = { has_trait = vengeful }
|
|
}
|
|
modifier = {
|
|
add = -10
|
|
scope:actor = { has_trait = honest }
|
|
}
|
|
modifier = {
|
|
add = -5
|
|
scope:actor = { has_trait = forgiving }
|
|
}
|
|
# ... or else for scope:recipient.
|
|
modifier = {
|
|
add = -10
|
|
scope:recipient = { has_trait = schemer }
|
|
}
|
|
modifier = {
|
|
add = -5
|
|
scope:recipient = { has_trait = education_intrigue }
|
|
}
|
|
modifier = {
|
|
add = -5
|
|
scope:recipient = { has_trait = deceitful }
|
|
}
|
|
modifier = {
|
|
add = 10
|
|
scope:recipient = { has_trait = honest }
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_targets = {
|
|
ai_recipients = guests
|
|
chance = 0.5
|
|
}
|
|
ai_frequency = 10
|
|
|
|
ai_will_do = {
|
|
base = -100
|
|
|
|
# This is a silly way for the AI to spend its CGV, so we keep 'em off it most of the time.
|
|
# Unless they've got a scheme on the go at their nemesis' court...
|
|
modifier = {
|
|
add = 100
|
|
scope:actor = {
|
|
any_relation = {
|
|
type = nemesis
|
|
count >= 1
|
|
}
|
|
any_scheme = {
|
|
count >= 1
|
|
scheme_target_character = {
|
|
any_relation = {
|
|
type = nemesis
|
|
count >= 1
|
|
this = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# ... *and* they're likely to win due to having higher intrigue, but without scope:recipient being too terrible.
|
|
modifier = {
|
|
add = 25
|
|
indebt_guest_interaction_get_intrigue_difference_value >= indebt_guest_interaction_likely_success_control_value
|
|
scope:recipient = { intrigue >= high_skill_rating }
|
|
}
|
|
modifier = {
|
|
add = 25
|
|
indebt_guest_interaction_get_intrigue_difference_value >= indebt_guest_interaction_likely_success_control_value
|
|
scope:recipient = { intrigue >= very_high_skill_rating }
|
|
}
|
|
modifier = {
|
|
add = 50
|
|
indebt_guest_interaction_get_intrigue_difference_value >= indebt_guest_interaction_likely_success_control_value
|
|
scope:recipient = { intrigue >= extremely_high_skill_rating }
|
|
}
|
|
}
|
|
}
|