1033 lines
23 KiB
Text
1033 lines
23 KiB
Text
# Character Interactions from FP1
|
|
|
|
##################
|
|
# Designate someone as your chief sacrifice at a blot.
|
|
# by Ewan Cowhig Croft
|
|
##################
|
|
designate_gruesome_festivals_sacrifice_interaction = {
|
|
icon = icon_scheme_abduct
|
|
interface_priority = 30
|
|
category = interaction_category_religion
|
|
desc = designate_gruesome_festivals_sacrifice_interaction_desc
|
|
|
|
is_shown = {
|
|
scope:actor = { has_character_flag = gruesome_festivals_can_pick_human_sacrifice }
|
|
scope:recipient = {
|
|
is_imprisoned_by = scope:actor
|
|
NOT = { has_character_modifier = gruesome_festivals_designated_sacrifice_fp1_modifier }
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
hidden_effect = {
|
|
every_prisoner = {
|
|
limit = { has_character_modifier = gruesome_festivals_designated_sacrifice_fp1_modifier }
|
|
save_scope_value_as = {
|
|
name = removal_type
|
|
value = flag:override
|
|
}
|
|
designate_gruesome_festivals_sacrifice_modifier_removed_effect = { DESIGNATOR = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_neutral
|
|
title = designate_gruesome_festivals_sacrifice_interaction.recipient.notification.t
|
|
left_icon = scope:actor
|
|
designate_gruesome_festivals_sacrifice_interaction_effect = yes
|
|
custom_tooltip = designate_gruesome_festivals_sacrifice_interaction.recipient.notification.tt
|
|
}
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = medium_unity_loss
|
|
DESC = clan_unity_human_sacrifice.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
}
|
|
|
|
##################
|
|
# Give someone reprieve from being HumSac'd.
|
|
# by Ewan Cowhig Croft
|
|
##################
|
|
remove_designated_gruesome_festivals_sacrifice_interaction = {
|
|
icon = icon_scheme_abduct
|
|
interface_priority = 30
|
|
category = interaction_category_religion
|
|
desc = remove_designated_gruesome_festivals_sacrifice_interaction_desc
|
|
|
|
is_shown = {
|
|
scope:actor = { has_character_flag = gruesome_festivals_can_pick_human_sacrifice }
|
|
scope:recipient = { has_character_modifier = gruesome_festivals_designated_sacrifice_fp1_modifier }
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
}
|
|
|
|
on_accept = {
|
|
scope:recipient = {
|
|
save_scope_value_as = {
|
|
name = removal_type
|
|
value = flag:manual
|
|
}
|
|
designate_gruesome_festivals_sacrifice_modifier_removed_effect ={ DESIGNATOR = scope:actor }
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = medium_unity_gain
|
|
DESC = clan_unity_human_sacrifice_removal.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
auto_accept = yes
|
|
}
|
|
|
|
##################
|
|
# Challenge a cur to combat for their crimes!
|
|
# by Ewan Cowhig Croft
|
|
##################
|
|
challenge_to_trial_by_combat_interaction = {
|
|
icon = icon_combat
|
|
interface_priority = 30
|
|
common_interaction = yes
|
|
category = interaction_category_hostile
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
desc = challenge_to_trial_by_combat_interaction_desc
|
|
highlighted_reason = challenge_to_trial_by_combat_interaction_HIGHLIGHTED
|
|
|
|
greeting = negative
|
|
notification_text = REQUEST_TRIAL_BY_COMBAT_TEXT
|
|
|
|
is_shown = {
|
|
# Early out on whether you have the DLC or not.
|
|
has_fp1_dlc_trigger = yes
|
|
# First, evaluate culture to trim down our potentials list.
|
|
can_have_trial_by_combat_trigger = yes
|
|
# And obviously never against yourself.
|
|
NOT = { scope:actor = scope:recipient }
|
|
# Then, look to see if scope:actor has good cause.
|
|
scope:actor = {
|
|
# Check there are no lieges involved.
|
|
NOR = {
|
|
# Must not be in a position to imprison scope:recipient standardly.
|
|
target_is_liege_or_above = scope:recipient
|
|
# Can't be used against anyone who has authority over you.
|
|
scope:recipient = { target_is_liege_or_above = scope:actor }
|
|
}
|
|
# Scope:recipient cannot be a landless character in scope:actor's sub-realm.
|
|
scope:recipient = {
|
|
is_landed_or_landless_administrative = yes
|
|
NAND = {
|
|
exists = court_owner
|
|
court_owner = {
|
|
OR = {
|
|
this = scope:actor
|
|
any_liege_or_above = { this = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
is_highlighted = {
|
|
trial_by_combat_is_valid_trigger = yes
|
|
}
|
|
|
|
|
|
is_valid_showing_failures_only = {
|
|
trial_by_combat_is_valid_trigger = yes
|
|
}
|
|
|
|
can_send = {
|
|
scope:actor = {
|
|
custom_description = {
|
|
text = "character_interactions_hostile_actions_disabled_delay"
|
|
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
}
|
|
}
|
|
|
|
cooldown = { years = 5 }
|
|
cooldown_against_recipient = { years = 10 }
|
|
|
|
on_send = {
|
|
scope:actor = {
|
|
add_character_flag = {
|
|
flag = flag_hostile_actions_disabled_delay
|
|
days = 10
|
|
}
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
# Will scope:recipient need to choose a champion?
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
OR = {
|
|
can_start_single_combat_eligibility_checks_trigger = no
|
|
NOT = {
|
|
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:recipient }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = { trigger_event = fp1_tbc.0101 }
|
|
# Inform both characters that scope:recipient will have a chance to choose a champion.
|
|
custom_tooltip = fp1_tbc_recipient_will_designate_champion
|
|
}
|
|
# Else we skip straight to scope:actor's setup event.
|
|
else = {
|
|
# Stopping only briefly to clarify that scope:recipient will be fighting the bout themselves.
|
|
scope:recipient = { save_scope_as = champion }
|
|
scope:actor = { trigger_event = fp1_tbc.0001 }
|
|
}
|
|
# Inform of the consequences.
|
|
## Death - one of you will die.
|
|
if = {
|
|
limit = { always = scope:tbc_death }
|
|
show_as_tooltip = {
|
|
random_list = {
|
|
50 = {
|
|
show_chance = no
|
|
desc = fp1_tbc_winner_actor
|
|
fp1_tbc_death_effect = {
|
|
TBC_VICTOR = scope:actor
|
|
TBC_LOSER = scope:recipient
|
|
}
|
|
scope:actor = {
|
|
add_kinslayer_trait_or_nothing_effect = { VICTIM = scope:recipient }
|
|
}
|
|
}
|
|
50 = {
|
|
show_chance = no
|
|
desc = fp1_tbc_winner_recipient
|
|
fp1_tbc_death_effect = {
|
|
TBC_VICTOR = scope:recipient
|
|
TBC_LOSER = scope:actor
|
|
}
|
|
scope:recipient = {
|
|
add_kinslayer_trait_or_nothing_effect = { VICTIM = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
## Gold - scope:recipient will have to pay gold, or scope:actor will take stress.
|
|
if = {
|
|
limit = { always = scope:tbc_gold }
|
|
show_as_tooltip = {
|
|
random_list = {
|
|
50 = {
|
|
show_chance = no
|
|
desc = fp1_tbc_winner_actor
|
|
fp1_tbc_gold_effect = {
|
|
TBC_VICTOR = scope:actor
|
|
TBC_LOSER = scope:recipient
|
|
}
|
|
}
|
|
50 = {
|
|
show_chance = no
|
|
desc = fp1_tbc_winner_recipient
|
|
fp1_tbc_actor_defeated_effect = { TBC_LOSER = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
## Hook - scope:recipient will concede a hook, or scope:actor will take stress.
|
|
if = {
|
|
limit = { always = scope:tbc_weak_hook }
|
|
show_as_tooltip = {
|
|
random_list = {
|
|
50 = {
|
|
show_chance = no
|
|
desc = fp1_tbc_winner_actor
|
|
fp1_tbc_hook_effect = {
|
|
TBC_VICTOR = scope:actor
|
|
TBC_LOSER = scope:recipient
|
|
}
|
|
}
|
|
50 = {
|
|
show_chance = no
|
|
desc = fp1_tbc_winner_recipient
|
|
fp1_tbc_actor_defeated_effect = { TBC_LOSER = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
## Humiliation - scope:recipient will gain an immense amount of stress, or scope:actor will take some stress.
|
|
if = {
|
|
limit = { always = scope:tbc_humiliation }
|
|
show_as_tooltip = {
|
|
random_list = {
|
|
50 = {
|
|
show_chance = no
|
|
desc = fp1_tbc_winner_actor
|
|
fp1_tbc_humiliation_effect = { TBC_LOSER = scope:recipient }
|
|
}
|
|
50 = {
|
|
show_chance = no
|
|
desc = fp1_tbc_winner_recipient
|
|
fp1_tbc_actor_defeated_effect = { TBC_LOSER = scope:actor }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Clear up hostile actions flag.
|
|
if = {
|
|
limit = {
|
|
scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = medium_unity_loss
|
|
DESC = clan_unity_trial_by_combat.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
# Scope:recipient loses some prestige.
|
|
scope:recipient = { add_prestige = medium_prestige_loss }
|
|
# Scope:actor decline processing.
|
|
scope:actor = {
|
|
# Inform them of the declination.
|
|
trigger_event = fp1_tbc.0031
|
|
# Cooldown is removed.
|
|
hidden_effect = { remove_interaction_cooldown = challenge_to_trial_by_combat_interaction }
|
|
# Clear up hostile actions flag.
|
|
if = {
|
|
limit = {
|
|
has_character_flag = flag_hostile_actions_disabled_delay
|
|
}
|
|
remove_character_flag = flag_hostile_actions_disabled_delay
|
|
}
|
|
}
|
|
}
|
|
|
|
# Demand it to the death.
|
|
send_option = {
|
|
# Only tribals fight to the death.
|
|
is_shown = {
|
|
scope:actor = { government_has_flag = government_is_tribal }
|
|
# And there's no real sense doing it if you can't fight your opponent directly.
|
|
scope:recipient = {
|
|
NOR = {
|
|
can_start_single_combat_eligibility_checks_trigger = no
|
|
NOT = {
|
|
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:recipient }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
flag = tbc_death
|
|
localization = "TBC_DEATH"
|
|
}
|
|
# Demand gold.
|
|
send_option = {
|
|
# Always available.
|
|
is_shown = { always = yes }
|
|
flag = tbc_gold
|
|
localization = "TBC_GOLD"
|
|
}
|
|
# Demand a hook.
|
|
send_option = {
|
|
# Must not have a better hook.
|
|
is_shown = {
|
|
NOT = {
|
|
scope:actor = { has_strong_hook = scope:recipient }
|
|
}
|
|
}
|
|
flag = tbc_weak_hook
|
|
localization = "TBC_WEAK_HOOK"
|
|
}
|
|
# Demand humiliation.
|
|
send_option = {
|
|
#Should not be used on children
|
|
is_shown = {
|
|
scope:recipient = { is_adult = yes }
|
|
}
|
|
flag = tbc_humiliation
|
|
localization = "TBC_HUMILIATION"
|
|
}
|
|
|
|
auto_accept = no
|
|
|
|
ai_accept = {
|
|
base = 0 # Try to make it 0 for most interactions
|
|
|
|
# Fightan abilities of both sides.
|
|
modifier = {
|
|
add = {
|
|
value = scope:actor.prowess
|
|
multiply = -0.5
|
|
}
|
|
desc = TBC_PROWESS_ACTOR
|
|
}
|
|
modifier = {
|
|
add = {
|
|
value = scope:recipient.prowess
|
|
multiply = 0.5
|
|
}
|
|
desc = TBC_PROWESS_RECIPIENT
|
|
}
|
|
# Who doesn't like punching a bastard?
|
|
opinion_modifier = {
|
|
who = scope:recipient
|
|
opinion_target = scope:actor
|
|
multiplier = -1
|
|
desc = AI_OPINION_REASON
|
|
}
|
|
# Weight up for personality values.
|
|
ai_value_modifier = {
|
|
who = scope:recipient
|
|
ai_boldness = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
NOT = { ai_boldness = 0 }
|
|
}
|
|
}
|
|
value = 0.5
|
|
}
|
|
}
|
|
ai_honor = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
NOT = { ai_honor = 0 }
|
|
}
|
|
}
|
|
value = 0.5
|
|
}
|
|
}
|
|
}
|
|
# Specific settlement preferences.
|
|
## Death: disliked by people who feel that disputes can always be settled more amicably.
|
|
### Craven hates.
|
|
modifier = {
|
|
add = -10
|
|
has_trait = craven
|
|
scope:tbc_death = yes
|
|
desc = TBC_OPINION_DEATH_TRAIT_CRAVEN
|
|
}
|
|
### Forgiving hates.
|
|
modifier = {
|
|
add = -10
|
|
has_trait = forgiving
|
|
scope:tbc_death = yes
|
|
desc = TBC_OPINION_DEATH_TRAIT_FORGIVING
|
|
}
|
|
### Compassionate dislikes.
|
|
modifier = {
|
|
add = -10
|
|
has_trait = compassionate
|
|
scope:tbc_death = yes
|
|
desc = TBC_OPINION_DEATH_TRAIT_COMPASSIONATE
|
|
}
|
|
### Brave loves.
|
|
modifier = {
|
|
add = 20
|
|
has_trait = brave
|
|
scope:tbc_death = yes
|
|
desc = TBC_OPINION_DEATH_TRAIT_BRAVE
|
|
}
|
|
### Vengeful loves.
|
|
modifier = {
|
|
add = 20
|
|
has_trait = vengeful
|
|
scope:tbc_death = yes
|
|
desc = TBC_OPINION_DEATH_TRAIT_VENGEFUL
|
|
}
|
|
### Callous likes.
|
|
modifier = {
|
|
add = 10
|
|
has_trait = callous
|
|
scope:tbc_death = yes
|
|
desc = TBC_OPINION_DEATH_TRAIT_CALLOUS
|
|
}
|
|
### Sadistic loves.
|
|
modifier = {
|
|
add = 20
|
|
has_trait = sadistic
|
|
scope:tbc_death = yes
|
|
desc = TBC_OPINION_DEATH_TRAIT_SADISTIC
|
|
}
|
|
## Gold: disliked by people who think wealth is sacrosanct.
|
|
### Greedy dislikes.
|
|
modifier = {
|
|
add = -10
|
|
has_trait = greedy
|
|
scope:tbc_gold = yes
|
|
desc = TBC_OPINION_GOLD_TRAIT_GREEDY
|
|
}
|
|
### Generous likes.
|
|
modifier = {
|
|
add = 10
|
|
has_trait = generous
|
|
scope:tbc_gold = yes
|
|
desc = TBC_OPINION_GOLD_TRAIT_GENEROUS
|
|
}
|
|
## Weak Hook: disliked by people who don't like nebulous favours or being indebted to their lessers.
|
|
### Arrogant dislikes.
|
|
modifier = {
|
|
add = -10
|
|
has_trait = arrogant
|
|
scope:tbc_weak_hook = yes
|
|
desc = TBC_OPINION_WEAK_HOOK_TRAIT_ARROGANT
|
|
}
|
|
### Paranoid dislikes.
|
|
modifier = {
|
|
add = -10
|
|
has_trait = paranoid
|
|
scope:tbc_weak_hook = yes
|
|
desc = TBC_OPINION_WEAK_HOOK_TRAIT_PARANOID
|
|
}
|
|
### Arbitray dislikes.
|
|
modifier = {
|
|
add = -10
|
|
has_trait = arbitrary
|
|
scope:tbc_weak_hook = yes
|
|
desc = TBC_OPINION_WEAK_HOOK_TRAIT_ARBITRARY
|
|
}
|
|
### Humble likes.
|
|
modifier = {
|
|
add = 10
|
|
has_trait = humble
|
|
scope:tbc_weak_hook = yes
|
|
desc = TBC_OPINION_WEAK_HOOK_TRAIT_HUMBLE
|
|
}
|
|
### Trusting likes.
|
|
modifier = {
|
|
add = 10
|
|
has_trait = trusting
|
|
scope:tbc_weak_hook = yes
|
|
desc = TBC_OPINION_WEAK_HOOK_TRAIT_TRUSTING
|
|
}
|
|
### Just likes.
|
|
modifier = {
|
|
add = 10
|
|
has_trait = just
|
|
scope:tbc_weak_hook = yes
|
|
desc = TBC_OPINION_WEAK_HOOK_TRAIT_JUST
|
|
}
|
|
## Humiliation: *hated* by people obsessed with public image or weightier consequences.
|
|
### Arrogant hates.
|
|
modifier = {
|
|
add = -20
|
|
has_trait = arrogant
|
|
scope:tbc_humiliation = yes
|
|
desc = TBC_OPINION_HUMILIATION_TRAIT_ARROGANT
|
|
}
|
|
### Vengeful hates.
|
|
modifier = {
|
|
add = -20
|
|
has_trait = vengeful
|
|
scope:tbc_humiliation = yes
|
|
desc = TBC_OPINION_HUMILIATION_TRAIT_VENGEFUL
|
|
}
|
|
### Stubborn hates.
|
|
modifier = {
|
|
add = -20
|
|
has_trait = stubborn
|
|
scope:tbc_humiliation = yes
|
|
desc = TBC_OPINION_HUMILIATION_TRAIT_STUBBORN
|
|
}
|
|
### Humble likes.
|
|
modifier = {
|
|
add = 10
|
|
has_trait = humble
|
|
scope:tbc_humiliation = yes
|
|
desc = TBC_OPINION_HUMILIATION_TRAIT_HUMBLE
|
|
}
|
|
### Forgiving likes.
|
|
modifier = {
|
|
add = 10
|
|
has_trait = forgiving
|
|
scope:tbc_humiliation = yes
|
|
desc = TBC_OPINION_HUMILIATION_TRAIT_FORGIVING
|
|
}
|
|
### Fickle likes.
|
|
modifier = {
|
|
add = 10
|
|
has_trait = fickle
|
|
scope:tbc_humiliation = yes
|
|
desc = TBC_OPINION_HUMILIATION_TRAIT_FICKLE
|
|
}
|
|
# Apply tier differences.
|
|
## King -> Baron.
|
|
modifier = {
|
|
desc = AI_REFUSAL_RANK_DIFFERENCE
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value >= 4
|
|
}
|
|
}
|
|
add = 15
|
|
}
|
|
## Duke -> Baron.
|
|
modifier = {
|
|
desc = AI_REFUSAL_RANK_DIFFERENCE
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 3
|
|
}
|
|
}
|
|
add = 10
|
|
}
|
|
## Count -> Baron.
|
|
modifier = {
|
|
desc = AI_REFUSAL_RANK_DIFFERENCE
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = 2
|
|
}
|
|
}
|
|
add = 5
|
|
}
|
|
## King <- Baron.
|
|
modifier = {
|
|
desc = AI_REFUSAL_RANK_DIFFERENCE
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -2
|
|
}
|
|
}
|
|
add = -10
|
|
}
|
|
## Duke <- Baron.
|
|
modifier = {
|
|
desc = AI_REFUSAL_RANK_DIFFERENCE
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value = -3
|
|
}
|
|
}
|
|
add = -20
|
|
}
|
|
## Count <- Baron.
|
|
modifier = {
|
|
desc = AI_REFUSAL_RANK_DIFFERENCE
|
|
scope:actor = {
|
|
tier_difference = {
|
|
target = scope:recipient
|
|
value <= -4
|
|
}
|
|
}
|
|
add = -30
|
|
}
|
|
# Rivalry modifier.
|
|
modifier = {
|
|
desc = offer_vassalization_interaction_aibehavior_rival_tt
|
|
trigger = {
|
|
scope:recipient = {
|
|
has_relation_rival = scope:actor
|
|
NOT = { has_relation_nemesis = scope:actor }
|
|
}
|
|
}
|
|
add = 50
|
|
}
|
|
# Nemesis modifier.
|
|
modifier = {
|
|
desc = offer_vassalization_interaction_aibehavior_nemesis_tt
|
|
trigger = {
|
|
scope:recipient = {
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
}
|
|
add = 100
|
|
}
|
|
}
|
|
|
|
# AI
|
|
|
|
ai_potential = {
|
|
basic_can_have_trial_by_combat_trigger = yes
|
|
NOT = {
|
|
has_trait = craven
|
|
}
|
|
is_imprisoned = no
|
|
can_start_single_combat_trigger = yes
|
|
}
|
|
|
|
ai_target_quick_trigger = {
|
|
adult = yes
|
|
}
|
|
ai_targets = {
|
|
ai_recipients = scripted_relations
|
|
}
|
|
ai_targets = {
|
|
ai_recipients = family
|
|
max = 10
|
|
}
|
|
ai_targets = {
|
|
ai_recipients = neighboring_rulers
|
|
ai_recipients = peer_vassals
|
|
chance = 0.25
|
|
}
|
|
|
|
ai_frequency = 36
|
|
|
|
ai_will_do = {
|
|
base = -50
|
|
|
|
# Factor for opinion.
|
|
modifier = {
|
|
add = 100
|
|
scope:actor = {
|
|
opinion = {
|
|
target = scope:recipient
|
|
value <= very_high_negative_opinion
|
|
}
|
|
}
|
|
}
|
|
modifier = {
|
|
add = 50
|
|
scope:actor = {
|
|
opinion = {
|
|
target = scope:recipient
|
|
value <= medium_negative_opinion
|
|
}
|
|
}
|
|
}
|
|
modifier = {
|
|
add = -50
|
|
scope:actor = {
|
|
opinion = {
|
|
target = scope:recipient
|
|
value >= medium_positive_opinion
|
|
}
|
|
}
|
|
}
|
|
modifier = {
|
|
add = -100
|
|
scope:actor = {
|
|
opinion = {
|
|
target = scope:recipient
|
|
value >= very_high_positive_opinion
|
|
}
|
|
}
|
|
}
|
|
# Don't challenge kinslayer-counting family, unless they're a rival or nemesis.
|
|
modifier = {
|
|
scope:actor = {
|
|
murdering_character_is_kinslaying_in_faith_trigger = {
|
|
CHARACTER = scope:recipient
|
|
FAITH = scope:actor.faith
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
NOR = {
|
|
has_relation_rival = scope:actor
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
}
|
|
add = -1000
|
|
}
|
|
# Don't challenge your spouse, unless they're your rival or nemesis.
|
|
modifier = {
|
|
scope:recipient = {
|
|
is_spouse_of = scope:actor
|
|
NOR = {
|
|
has_relation_rival = scope:actor
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
}
|
|
add = -1000
|
|
}
|
|
# Don't challenge people hopelessly out of your league unless you're really, really not seeing things clearly.
|
|
modifier = {
|
|
scope:actor = {
|
|
prowess_diff = {
|
|
target = scope:recipient
|
|
value <= -15
|
|
}
|
|
ai_rationality >= high_negative_ai_value
|
|
}
|
|
add = -1000
|
|
}
|
|
}
|
|
}
|
|
|
|
##################
|
|
# Designate a Shieldmaiden
|
|
# by Alexander Oltner
|
|
##################
|
|
designate_shieldmaiden_interaction = {
|
|
icon = designate_shieldmaiden_interaction
|
|
category = interaction_category_friendly
|
|
common_interaction = yes
|
|
|
|
send_name = SEND_PROPOSAL
|
|
|
|
interface_priority = 120
|
|
|
|
ai_targets = {
|
|
ai_recipients = courtiers
|
|
}
|
|
ai_frequency = 180
|
|
|
|
is_shown = {
|
|
scope:actor = {
|
|
has_fp1_dlc_trigger = yes
|
|
is_physically_able_adult = yes
|
|
#Has access to the appropriate cultural parameter.
|
|
culture = { has_cultural_parameter = has_access_to_shieldmaidens }
|
|
trigger_if = { # Determined by Cultural Pillars
|
|
limit = { has_dlc_feature = diverge_culture }
|
|
culture = {
|
|
NOT = { has_cultural_parameter = martial_custom_equal_combatant }
|
|
}
|
|
}
|
|
trigger_else = {
|
|
NOT = {
|
|
faith = { has_doctrine = doctrine_gender_equal }
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
NOT = { has_trait = incapable }
|
|
is_courtier_of = scope:actor
|
|
is_close_family_of = scope:actor
|
|
NOT = { has_trait = shieldmaiden }
|
|
trigger_if = { # Determined by Cultural Pillars
|
|
limit = { has_dlc_feature = diverge_culture }
|
|
OR = {
|
|
AND = {
|
|
is_female = yes
|
|
culture = { has_cultural_parameter = martial_custom_male_only_combatant }
|
|
}
|
|
AND = {
|
|
is_male = yes
|
|
culture = { has_cultural_parameter = martial_custom_female_only_combatant }
|
|
}
|
|
}
|
|
}
|
|
trigger_else = {
|
|
OR = { # Does not have the Royal Court and thus combatant is governed by faith
|
|
AND = {
|
|
is_female = yes
|
|
faith = { has_doctrine_parameter = combatant_must_be_male_if_no_roco }
|
|
}
|
|
AND = {
|
|
is_male = yes
|
|
faith = { has_doctrine_parameter = combatant_must_be_female_if_no_roco }
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:recipient = {
|
|
prowess >= decent_skill_rating
|
|
is_adult = yes
|
|
is_imprisoned = no
|
|
}
|
|
}
|
|
|
|
desc = designate_shieldmaiden_interaction_desc
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
stress_impact = {
|
|
arrogant = medium_stress_impact_gain
|
|
paranoid = minor_stress_impact_gain
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
add_trait = shieldmaiden
|
|
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = fp1_accepted_my_sword_opinion
|
|
}
|
|
}
|
|
if = {
|
|
limit = { always = scope:hook }
|
|
scope:actor = { use_hook = scope:recipient }
|
|
}
|
|
hidden_effect = {
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_neutral
|
|
title = designate_shieldmaiden_interaction_notification
|
|
|
|
left_icon = scope:actor
|
|
right_icon = scope:recipient
|
|
|
|
show_as_tooltip = {
|
|
scope:recipient = {
|
|
add_trait_force_tooltip = shieldmaiden
|
|
}
|
|
stress_impact = {
|
|
arrogant = medium_stress_impact_gain
|
|
paranoid = minor_stress_impact_gain
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
if = {
|
|
limit = { has_character_flag = fp1_dreams_of_shieldpersondom }
|
|
remove_character_flag = fp1_dreams_of_shieldpersondom
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = {
|
|
custom_description = {
|
|
text = "spending_hook"
|
|
subject = scope:actor
|
|
object = scope:recipient
|
|
AND = {
|
|
always = scope:hook
|
|
scope:actor = { has_strong_hook = scope:recipient }
|
|
}
|
|
}
|
|
}
|
|
|
|
send_option = {
|
|
is_valid = {
|
|
scope:actor = {
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
}
|
|
flag = hook
|
|
localization = SCHEME_HOOK
|
|
}
|
|
should_use_extra_icon = {
|
|
scope:actor = { has_usable_hook = scope:recipient }
|
|
}
|
|
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
|
|
|
|
send_options_exclusive = no
|
|
|
|
cost = {
|
|
prestige = scope:actor.minor_prestige_value
|
|
}
|
|
|
|
ai_potential = {
|
|
#Has access to the appropriate cultural parameter.
|
|
culture = { has_cultural_parameter = has_access_to_shieldmaidens }
|
|
prestige > major_prestige_value
|
|
has_fp1_dlc_trigger = yes
|
|
is_physically_able_adult = yes
|
|
}
|
|
|
|
auto_accept = no
|
|
|
|
ai_accept = {
|
|
base = 0
|
|
|
|
modifier = {
|
|
trigger = {
|
|
always = scope:hook
|
|
}
|
|
add = 100
|
|
desc = SCHEME_WEAK_HOOK_USED
|
|
}
|
|
|
|
modifier = {
|
|
trigger = {
|
|
has_education_martial_trigger = yes
|
|
}
|
|
add = 20
|
|
desc = INTERACTION_MARTIAL_EDUCATION
|
|
}
|
|
|
|
# Weight up for personality values.
|
|
ai_value_modifier = {
|
|
who = scope:recipient
|
|
ai_boldness = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
NOT = { ai_boldness = 0 }
|
|
}
|
|
}
|
|
value = 0.5
|
|
}
|
|
}
|
|
ai_compassion = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
NOT = { ai_compassion = 0 }
|
|
}
|
|
}
|
|
value = -0.5
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = -1000
|
|
has_trait = craven
|
|
desc = INTERACTION_CRAVEN
|
|
}
|
|
|
|
modifier = {
|
|
add = -50
|
|
has_trait = content
|
|
desc = INTERACTION_CONTENT
|
|
}
|
|
|
|
modifier = {
|
|
add = -50
|
|
has_trait = humble
|
|
desc = INTERACTION_HUMBLE
|
|
}
|
|
|
|
modifier = {
|
|
add = -50
|
|
has_trait = lazy
|
|
desc = INTERACTION_LAZY
|
|
}
|
|
|
|
modifier = {
|
|
add = 100
|
|
has_trait = brave
|
|
desc = INTERACTION_BRAVE
|
|
}
|
|
|
|
modifier = {
|
|
add = 25
|
|
has_trait = ambitious
|
|
desc = INTERACTION_AMBITIOUS
|
|
}
|
|
}
|
|
|
|
ai_will_do = {
|
|
base = 100
|
|
}
|
|
}
|