1449 lines
30 KiB
Text
1449 lines
30 KiB
Text
###################
|
|
# Claim Throne
|
|
# by Petter Vilberg
|
|
###################
|
|
claim_throne_interaction = {
|
|
icon = icon_scheme_claim_throne
|
|
category = interaction_category_hostile
|
|
|
|
ai_targets = {
|
|
ai_recipients = liege
|
|
}
|
|
|
|
auto_accept = yes
|
|
use_diplomatic_range = no
|
|
ignores_pending_interaction_block = yes
|
|
|
|
scheme = claim_throne
|
|
|
|
desc = claim_throne_interaction_desc
|
|
|
|
is_shown = {
|
|
exists = scope:actor.liege
|
|
scope:recipient = scope:actor.liege
|
|
scope:actor = {
|
|
is_landless_adventurer = no
|
|
highest_held_title_tier > tier_barony
|
|
OR = {
|
|
has_perk = meritocracy_perk
|
|
AND = {
|
|
is_diarch_of_target = scope:recipient
|
|
scope:recipient = {
|
|
NOT = { has_diarchy_parameter = can_be_instantly_dismissed }
|
|
}
|
|
}
|
|
AND = {
|
|
is_powerful_vassal_of = scope:recipient
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
has_struggle_phase_parameter = unlocks_claim_throne_for_powerful_vassals
|
|
is_secondary_character_involvement_involved_trigger = {
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
AND = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
has_struggle_phase_parameter = unlocks_claim_throne_for_all
|
|
is_secondary_character_involvement_involved_trigger = {
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
AND = {
|
|
exists = title:d_sunni.holder
|
|
is_vassal_of = title:d_sunni.holder
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
has_struggle_phase_parameter = unlocks_claim_throne_for_caliph_vassals
|
|
}
|
|
}
|
|
}
|
|
}
|
|
NOT = { scope:recipient = scope:actor }
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:actor = {
|
|
is_physically_able_adult = yes
|
|
can_start_scheme = {
|
|
target_character = scope:recipient
|
|
type = claim_throne
|
|
}
|
|
}
|
|
}
|
|
|
|
# Scheme Starter Packages
|
|
options_heading = schemes.t.agent_packages
|
|
send_options_exclusive = yes
|
|
## Balanced agents.
|
|
send_option = {
|
|
flag = agent_focus_balance
|
|
current_description = claim_throne_interaction.tt.agent_focus_balance
|
|
}
|
|
## Focused on Success Chance.
|
|
send_option = {
|
|
flag = agent_focus_success
|
|
current_description = claim_throne_interaction.tt.agent_focus_success
|
|
}
|
|
## Focused on Speed.
|
|
send_option = {
|
|
flag = agent_focus_speed
|
|
current_description = claim_throne_interaction.tt.agent_focus_speed
|
|
}
|
|
## Focused on Secrecy.
|
|
send_option = {
|
|
flag = agent_focus_secrecy
|
|
current_description = claim_throne_interaction.tt.agent_focus_secrecy
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
stress_impact = {
|
|
content = medium_stress_impact_gain
|
|
just = medium_stress_impact_gain
|
|
}
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = claim_throne_interaction_toast
|
|
left_icon = scope:actor
|
|
right_icon = scope:recipient
|
|
|
|
# Success.
|
|
if = {
|
|
limit = { scope:agent_focus_success ?= yes }
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = claim_throne
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Success.
|
|
AGENT_1 = agent_diplomat
|
|
AGENT_2 = agent_diplomat
|
|
AGENT_3 = agent_scribe
|
|
# Speed.
|
|
AGENT_4 = agent_cleric
|
|
# Secrecy.
|
|
AGENT_5 = agent_justiciar
|
|
}
|
|
}
|
|
# Speed.
|
|
else_if = {
|
|
limit = { scope:agent_focus_speed ?= yes }
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = claim_throne
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Speed.
|
|
AGENT_1 = agent_cleric
|
|
AGENT_2 = agent_socialite
|
|
AGENT_3 = agent_gabbler
|
|
# Success.
|
|
AGENT_4 = agent_diplomat
|
|
# Secrecy.
|
|
AGENT_5 = agent_justiciar
|
|
}
|
|
}
|
|
# Secrecy.
|
|
else_if = {
|
|
limit = { scope:agent_focus_secrecy ?= yes }
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = claim_throne
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Secrecy.
|
|
AGENT_1 = agent_justiciar
|
|
AGENT_2 = agent_justiciar
|
|
AGENT_3 = agent_decoy
|
|
# Success.
|
|
AGENT_4 = agent_diplomat
|
|
# Speed.
|
|
AGENT_5 = agent_cleric
|
|
}
|
|
}
|
|
# Balanced.
|
|
else = {
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = claim_throne
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Success.
|
|
AGENT_1 = agent_diplomat
|
|
AGENT_2 = agent_scribe
|
|
# Speed.
|
|
AGENT_3 = agent_cleric
|
|
AGENT_4 = agent_socialite
|
|
# Secrecy.
|
|
AGENT_5 = agent_decoy
|
|
}
|
|
}
|
|
|
|
show_as_tooltip = {
|
|
stress_impact = {
|
|
content = medium_stress_impact_gain
|
|
just = medium_stress_impact_gain
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# 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_throne_claim.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
ai_potential = {
|
|
is_adult = yes
|
|
highest_held_title_tier > tier_barony
|
|
ai_greed >= medium_positive_ai_value
|
|
learning >= medium_skill_rating
|
|
intrigue >= mediocre_skill_rating
|
|
trigger_if = {
|
|
limit = {
|
|
liege = { save_temporary_scope_as = struggle_liege }
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
has_struggle_phase_parameter = unlocks_claim_throne_for_all
|
|
is_secondary_character_involvement_involved_trigger = {
|
|
CHAR = scope:struggle_liege
|
|
}
|
|
}
|
|
}
|
|
is_powerful_vassal = yes
|
|
}
|
|
NOR = {
|
|
has_trait = content
|
|
opinion = {
|
|
target = liege
|
|
value >= high_positive_opinion
|
|
}
|
|
any_scheme = {
|
|
OR = {
|
|
scheme_type = murder
|
|
scheme_type = abduct
|
|
scheme_type = claim_throne
|
|
scheme_type = fabricate_hook
|
|
scheme_type = steal_back_artifact
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_frequency = 36
|
|
|
|
ai_will_do = {
|
|
base = 100
|
|
|
|
# Agenda impact
|
|
modifier = {
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
is_struggle_type = iberian_struggle
|
|
}
|
|
}
|
|
add = {
|
|
value = 0
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
phase_has_catalyst = catalyst_gain_claim_on_title_fp2
|
|
}
|
|
has_character_flag = agenda_towards_escalation
|
|
}
|
|
}
|
|
add = 200
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
phase_has_catalyst = catalyst_gain_claim_on_title_fp2
|
|
}
|
|
}
|
|
}
|
|
add = -100
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
is_struggle_type = persian_struggle
|
|
}
|
|
}
|
|
add = {
|
|
value = 0
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
phase_has_catalyst = catalyst_gain_claim_on_title_fp3
|
|
}
|
|
has_trait = fp3_struggle_detractor
|
|
}
|
|
}
|
|
add = 200
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
phase_has_catalyst = catalyst_gain_claim_on_title_fp3
|
|
}
|
|
has_trait = fp3_struggle_supporter
|
|
}
|
|
scope:recipient = {
|
|
has_trait = fp3_struggle_detractor
|
|
}
|
|
}
|
|
add = 100
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:actor = {
|
|
any_character_struggle = {
|
|
phase_has_catalyst = catalyst_gain_claim_on_title_fp3
|
|
}
|
|
}
|
|
}
|
|
add = -100
|
|
}
|
|
}
|
|
}
|
|
|
|
# Unity modifiers
|
|
evaluate_action_decreasing_house_unity = {
|
|
VALUE = 100
|
|
}
|
|
|
|
start_hostile_scheme_ai_base_modifiers = yes # At the end so Cowed can block it completely
|
|
}
|
|
}
|
|
|
|
|
|
###################
|
|
# Fabricate Hook
|
|
# by Petter Vilberg
|
|
###################
|
|
fabricate_hook_interaction = {
|
|
icon = icon_scheme_fabricate_hook
|
|
category = interaction_category_hostile
|
|
|
|
auto_accept = yes
|
|
ignores_pending_interaction_block = yes
|
|
|
|
scheme = fabricate_hook
|
|
|
|
desc = fabricate_hook_interaction_desc
|
|
|
|
is_shown = {
|
|
scope:actor = {
|
|
OR = {
|
|
has_perk = truth_is_relative_perk
|
|
AND = {
|
|
has_trait = vengeful
|
|
has_relation_rival = scope:recipient
|
|
}
|
|
AND = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
has_struggle_phase_parameter = unlocks_fabricate_hooks_for_all
|
|
is_secondary_character_involvement_either_trigger = {
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
AND = {
|
|
government_has_flag = government_is_clan
|
|
is_in_same_clan_as_trigger = { CHARACTER = scope:recipient }
|
|
house = { has_house_unity_stage = competitive }
|
|
}
|
|
}
|
|
}
|
|
NOT = { scope:recipient = scope:actor }
|
|
}
|
|
|
|
is_valid = {
|
|
NOT = { scope:actor = { has_hook = scope:recipient } }
|
|
OR = {
|
|
scope:actor = {
|
|
OR = {
|
|
has_perk = truth_is_relative_perk # To display that it's available because of the Perk
|
|
AND = {
|
|
has_trait = vengeful
|
|
has_relation_rival = scope:recipient
|
|
}
|
|
AND = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
has_struggle_phase_parameter = unlocks_fabricate_hooks_for_all
|
|
is_secondary_character_involvement_either_trigger = {
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
AND = {
|
|
government_has_flag = government_is_clan
|
|
is_in_same_clan_as_trigger = { CHARACTER = scope:recipient }
|
|
house = { has_house_unity_stage = competitive }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:actor = {
|
|
is_physically_able_adult = yes
|
|
can_start_scheme = {
|
|
target_character = scope:recipient
|
|
type = fabricate_hook
|
|
}
|
|
}
|
|
}
|
|
|
|
# Scheme Starter Packages
|
|
options_heading = schemes.t.agent_packages
|
|
send_options_exclusive = yes
|
|
## Balanced agents.
|
|
send_option = {
|
|
flag = agent_focus_balance
|
|
current_description = fabricate_hook_interaction.tt.agent_focus_balance
|
|
}
|
|
## Focused on Success Chance.
|
|
send_option = {
|
|
flag = agent_focus_success
|
|
current_description = fabricate_hook_interaction.tt.agent_focus_success
|
|
}
|
|
## Focused on Speed.
|
|
send_option = {
|
|
flag = agent_focus_speed
|
|
current_description = fabricate_hook_interaction.tt.agent_focus_speed
|
|
}
|
|
## Focused on Secrecy.
|
|
send_option = {
|
|
flag = agent_focus_secrecy
|
|
current_description = fabricate_hook_interaction.tt.agent_focus_secrecy
|
|
}
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
stress_impact = {
|
|
just = medium_stress_impact_gain
|
|
honest = medium_stress_impact_gain
|
|
compassionate = minor_stress_impact_gain
|
|
}
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = fabricate_hook_interaction_toast
|
|
left_icon = scope:actor
|
|
right_icon = scope:recipient
|
|
|
|
# Success.
|
|
if = {
|
|
limit = { scope:agent_focus_success ?= yes }
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = fabricate_hook
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Success.
|
|
AGENT_1 = agent_outcast
|
|
AGENT_2 = agent_diplomat
|
|
AGENT_3 = agent_thief
|
|
# Speed.
|
|
AGENT_4 = agent_infiltrator
|
|
# Secrecy.
|
|
AGENT_5 = agent_lookout
|
|
}
|
|
}
|
|
# Speed.
|
|
else_if = {
|
|
limit = { scope:agent_focus_speed ?= yes }
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = fabricate_hook
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Speed.
|
|
AGENT_1 = agent_infiltrator
|
|
AGENT_2 = agent_footpad
|
|
AGENT_3 = agent_socialite
|
|
# Success.
|
|
AGENT_4 = agent_outcast
|
|
# Secrecy.
|
|
AGENT_5 = agent_lookout
|
|
}
|
|
}
|
|
# Secrecy.
|
|
else_if = {
|
|
limit = { scope:agent_focus_secrecy ?= yes }
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = fabricate_hook
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Secrecy.
|
|
AGENT_1 = agent_lookout
|
|
AGENT_2 = agent_decoy
|
|
AGENT_3 = agent_justiciar
|
|
# Success.
|
|
AGENT_4 = agent_outcast
|
|
# Speed.
|
|
AGENT_5 = agent_footpad
|
|
}
|
|
}
|
|
# Balanced.
|
|
else = {
|
|
begin_scheme_with_agents_effect = {
|
|
SCHEME_TYPE = fabricate_hook
|
|
TARGET_TYPE = target_character
|
|
TARGET_SCOPE = scope:recipient
|
|
# Success.
|
|
AGENT_1 = agent_outcast
|
|
AGENT_2 = agent_thief
|
|
# Speed.
|
|
AGENT_3 = agent_infiltrator
|
|
AGENT_4 = agent_footpad
|
|
# Secrecy.
|
|
AGENT_5 = agent_lookout
|
|
}
|
|
}
|
|
show_as_tooltip = {
|
|
stress_impact = {
|
|
just = medium_stress_impact_gain
|
|
honest = medium_stress_impact_gain
|
|
compassionate = minor_stress_impact_gain
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = liege
|
|
ai_recipients = vassals
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = neighboring_rulers
|
|
ai_recipients = peer_vassals
|
|
max = 10
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = courtiers
|
|
max = 5
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = realm_characters
|
|
ai_recipients = top_realm_domicile_owners
|
|
max = 30
|
|
}
|
|
|
|
ai_potential = {
|
|
is_adult = yes
|
|
ai_greed >= low_positive_ai_value
|
|
intrigue >= medium_skill_rating
|
|
NOR = {
|
|
has_trait = content
|
|
any_scheme = {
|
|
OR = {
|
|
scheme_type = murder
|
|
scheme_type = abduct
|
|
scheme_type = claim_throne
|
|
scheme_type = fabricate_hook
|
|
scheme_type = steal_back_artifact
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ai_target_quick_trigger = {
|
|
adult = yes
|
|
}
|
|
|
|
ai_frequency = 12
|
|
|
|
ai_will_do = {
|
|
base = 10
|
|
|
|
modifier = {
|
|
add = {
|
|
value = 20
|
|
if = {
|
|
limit = {
|
|
exists = scope:recipient.cp:councillor_spymaster
|
|
scope:recipient.cp:councillor_spymaster = { intrigue < 10 }
|
|
}
|
|
add = 50
|
|
}
|
|
}
|
|
|
|
scope:recipient = {
|
|
is_vassal_of = scope:actor
|
|
vassal_contract_has_modifiable_obligations = yes
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = -50
|
|
|
|
opinion = {
|
|
target = scope:recipient
|
|
value >= high_positive_opinion
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = -40
|
|
|
|
scope:recipient = {
|
|
is_playable_character = yes
|
|
NOT = {
|
|
is_vassal_of = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
add = 50
|
|
|
|
scope:recipient = {
|
|
is_playable_character = no
|
|
OR = {
|
|
liege = scope:actor.liege
|
|
liege = {
|
|
OR = {
|
|
has_relation_rival = scope:actor
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
modifier = {
|
|
factor = 0
|
|
|
|
scope:recipient = {
|
|
has_council_position = councillor_spymaster
|
|
}
|
|
}
|
|
start_hostile_scheme_ai_base_modifiers = yes # At the end so Cowed can block it completely
|
|
}
|
|
}
|
|
|
|
|
|
###################
|
|
# Demand Payment
|
|
# by Petter Vilberg
|
|
###################
|
|
demand_payment_interaction = {
|
|
category = interaction_category_diplomacy
|
|
icon = icon_gold
|
|
|
|
auto_accept = yes
|
|
use_diplomatic_range = yes
|
|
|
|
desc = demand_payment_interaction_desc
|
|
|
|
is_shown = {
|
|
scope:actor = {
|
|
OR = {
|
|
has_perk = golden_obligations_perk
|
|
AND = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
has_struggle_phase_parameter = unlocks_demand_payments_for_all
|
|
is_secondary_character_involvement_either_trigger = {
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
is_ai = yes
|
|
}
|
|
NOT = { scope:recipient = scope:actor }
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
scope:actor = {
|
|
is_physically_able_adult = yes
|
|
NOT = {
|
|
is_at_war_with = scope:recipient
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
is_imprisoned = no
|
|
}
|
|
scope:recipient = {
|
|
custom_description = {
|
|
text = demand_payment_too_little_gold
|
|
gold >= 1
|
|
}
|
|
}
|
|
}
|
|
|
|
is_valid = {
|
|
scope:actor = {
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
}
|
|
|
|
is_highlighted = {
|
|
scope:actor = {
|
|
has_usable_hook = scope:recipient
|
|
}
|
|
}
|
|
|
|
on_accept = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient.gold < scope:recipient.golden_obligation_value
|
|
}
|
|
custom_tooltip = demand_payment_too_little_gold_tt
|
|
}
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
title = demand_payment_interaction_message
|
|
left_icon = scope:recipient
|
|
|
|
scope:actor = {
|
|
use_hook = scope:recipient
|
|
}
|
|
scope:recipient = {
|
|
if = {
|
|
pay_short_term_gold = {
|
|
target = scope:actor
|
|
gold = golden_obligation_value
|
|
}
|
|
limit = {
|
|
gold > golden_obligation_value
|
|
}
|
|
}
|
|
else = {
|
|
pay_short_term_gold = {
|
|
target = scope:actor
|
|
gold = {
|
|
value = scope:recipient.gold
|
|
floor = yes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stress_impact = {
|
|
generous = medium_stress_impact_gain
|
|
}
|
|
}
|
|
|
|
# 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_demand_payment.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
|
|
ai_potential = {
|
|
NOT = {
|
|
has_trait = generous
|
|
}
|
|
OR = {
|
|
ai_greed >= low_positive_ai_value
|
|
is_at_war = yes
|
|
}
|
|
}
|
|
|
|
ai_target_quick_trigger = {
|
|
adult = yes
|
|
}
|
|
|
|
ai_targets = {
|
|
ai_recipients = hooked_characters
|
|
}
|
|
|
|
ai_frequency = 36
|
|
|
|
ai_will_do = {
|
|
base = 100
|
|
|
|
# Unity modifiers
|
|
evaluate_action_increasing_house_unity = {
|
|
VALUE = -100
|
|
}
|
|
|
|
modifier = { #ai won't use the interaction if they'll get nothing out of it
|
|
factor = 0
|
|
scope:recipient.gold < 8
|
|
}
|
|
|
|
modifier = {
|
|
factor = 0
|
|
scope:actor = {
|
|
OR = {
|
|
has_relation_friend = scope:recipient
|
|
has_relation_lover = scope:recipient
|
|
has_relation_best_friend = scope:recipient
|
|
has_relation_soulmate = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
##################
|
|
# Buy Claim
|
|
# by Petter Vilberg
|
|
##################
|
|
buy_claim_interaction = {
|
|
category = interaction_category_diplomacy
|
|
icon = vassal_claim_liege_title_interaction
|
|
|
|
desc = buy_claim_interaction_desc
|
|
target_type = title
|
|
target_filter = recipient_domain_titles
|
|
ignores_pending_interaction_block = yes
|
|
|
|
is_shown = {
|
|
scope:actor = {
|
|
is_landless_adventurer = no
|
|
OR = {
|
|
has_perk = sanctioned_loopholes_perk
|
|
AND = {
|
|
any_character_struggle = {
|
|
involvement = involved
|
|
has_struggle_phase_parameter = unlocks_buy_claim_for_all
|
|
is_secondary_character_involvement_either_trigger = {
|
|
CHAR = scope:recipient
|
|
}
|
|
}
|
|
}
|
|
}
|
|
NOT = { target_is_liege_or_above = scope:recipient }
|
|
}
|
|
NOT = {
|
|
scope:actor = scope:recipient
|
|
AND = {
|
|
scope:recipient = scope:actor.faith.religious_head
|
|
scope:actor.faith = {
|
|
NOT = { has_doctrine = doctrine_theocracy_temporal }
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
is_playable_character = yes
|
|
primary_title.tier > tier_barony
|
|
NOT = {
|
|
target_is_liege_or_above = scope:actor
|
|
}
|
|
}
|
|
}
|
|
|
|
can_be_picked_title = {
|
|
scope:target = {
|
|
tier >= tier_county
|
|
}
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
trigger_if = { # Can't request on titles you already have a claim on
|
|
limit = {
|
|
scope:target ?= {
|
|
any_claimant = { this = scope:actor }
|
|
}
|
|
}
|
|
custom_description = {
|
|
text = buy_claim_has_pressed_claim_already
|
|
always = no
|
|
}
|
|
}
|
|
trigger_if = { # Can't request claims on baronies
|
|
limit = {
|
|
scope:target ?= { tier = tier_barony }
|
|
}
|
|
custom_description = {
|
|
text = buy_claim_has_pressed_claim_already
|
|
always = no
|
|
}
|
|
}
|
|
trigger_if = { # Can't buy Kingdom or Empire Claims if you're a King
|
|
limit = {
|
|
scope:target ?= { tier = tier_kingdom }
|
|
scope:actor.highest_held_title_tier >= tier_kingdom
|
|
}
|
|
custom_description = {
|
|
text = buy_claim_no_king_or_emperor_kingdom
|
|
always = no
|
|
}
|
|
}
|
|
trigger_if = { # Can't buy Empire Claims if you're an Emperor
|
|
limit = {
|
|
scope:target ?= { tier = tier_empire }
|
|
scope:actor.highest_held_title_tier >= tier_empire
|
|
}
|
|
custom_description = {
|
|
text = buy_claim_no_emperor_empire
|
|
always = no
|
|
}
|
|
}
|
|
trigger_if = { # Can't buy claims on head of faith titles
|
|
limit = {
|
|
scope:target ?= { is_head_of_faith = yes }
|
|
}
|
|
custom_description = {
|
|
text = buy_claim_no_religious_titles
|
|
always = no
|
|
}
|
|
}
|
|
trigger_if = { # Can't buy claims on noble families
|
|
limit = {
|
|
scope:target ?= { is_noble_family_title = yes }
|
|
}
|
|
custom_description = {
|
|
text = buy_claim_no_noble_family_titles
|
|
always = no
|
|
}
|
|
}
|
|
trigger_if = { # Can't buy claims on landless adventurer titles
|
|
limit = {
|
|
scope:target ?= { has_variable = adventurer_creation_reason }
|
|
}
|
|
custom_description = {
|
|
text = buy_claim_no_landless_adventurer_title
|
|
always = no
|
|
}
|
|
}
|
|
scope:actor = { # Variable piety cost depending on tier
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:target
|
|
scope:target = {
|
|
tier = tier_county
|
|
}
|
|
}
|
|
piety >= {
|
|
value = minor_buy_claim_piety_value
|
|
if = {
|
|
limit = {
|
|
government_allows = administrative
|
|
}
|
|
multiply = 1.5
|
|
}
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:target
|
|
scope:target = {
|
|
tier = tier_duchy
|
|
}
|
|
}
|
|
piety >= {
|
|
value = medium_buy_claim_piety_value
|
|
if = {
|
|
limit = {
|
|
government_allows = administrative
|
|
}
|
|
multiply = 1.5
|
|
}
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:target
|
|
scope:target = {
|
|
tier = tier_kingdom
|
|
}
|
|
}
|
|
piety >= {
|
|
value = major_buy_claim_piety_value
|
|
if = {
|
|
limit = {
|
|
government_allows = administrative
|
|
}
|
|
multiply = 1.5
|
|
}
|
|
}
|
|
}
|
|
trigger_if = {
|
|
limit = {
|
|
exists = scope:target
|
|
scope:target = {
|
|
tier = tier_empire
|
|
}
|
|
}
|
|
piety >= {
|
|
value = massive_buy_claim_piety_value
|
|
if = {
|
|
limit = {
|
|
government_allows = administrative
|
|
}
|
|
multiply = 1.5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scope:recipient = { is_busy_in_events_localised = yes }
|
|
scope:recipient = { NOT = { has_strong_hook = scope:actor } }
|
|
}
|
|
|
|
auto_accept = yes
|
|
|
|
on_accept = {
|
|
scope:actor = {
|
|
send_interface_toast = {
|
|
type = event_toast_effect_good
|
|
title = buy_claim_interaction.message
|
|
left_icon = scope:actor
|
|
right_icon = scope:recipient
|
|
add_piety = {
|
|
value = 0
|
|
if = {
|
|
limit = {
|
|
scope:target = {
|
|
tier = tier_county
|
|
}
|
|
}
|
|
add = minor_buy_claim_piety_loss
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:target = {
|
|
tier = tier_duchy
|
|
}
|
|
}
|
|
add = medium_buy_claim_piety_loss
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:target = {
|
|
tier = tier_kingdom
|
|
}
|
|
}
|
|
add = major_buy_claim_piety_loss
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:target = {
|
|
tier = tier_empire
|
|
}
|
|
}
|
|
add = massive_buy_claim_piety_loss
|
|
}
|
|
if = {
|
|
limit = {
|
|
government_allows = administrative
|
|
}
|
|
multiply = 1.5
|
|
}
|
|
}
|
|
add_unpressed_claim = scope:target
|
|
}
|
|
stress_impact = {
|
|
just = medium_stress_impact_gain
|
|
honest = medium_stress_impact_gain
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
add_opinion = {
|
|
target = scope:actor
|
|
modifier = claimed_my_title_opinion
|
|
opinion = -40
|
|
}
|
|
trigger_event = perk_interaction.0002
|
|
}
|
|
|
|
# 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_bought_claim.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
##################
|
|
# Challenge Rival
|
|
# by Ewan Cowhig Croft
|
|
##################
|
|
|
|
challenge_to_single_combat_interaction = {
|
|
icon = icon_combat
|
|
interface_priority = 30
|
|
common_interaction = yes
|
|
category = interaction_category_hostile
|
|
ai_maybe = yes
|
|
ai_max_reply_days = 0
|
|
popup_on_receive = yes
|
|
pause_on_receive = yes
|
|
desc = challenge_to_single_combat_interaction_desc
|
|
|
|
greeting = negative
|
|
notification_text = REQUEST_TRIAL_BY_COMBAT_TEXT
|
|
|
|
is_shown = {
|
|
# First, check for the perk.
|
|
scope:actor = { can_challenge_rival_to_single_combat_trigger = yes }
|
|
# Then, look to see if this character is a rival.
|
|
scope:actor = { has_relation_rival = scope:recipient }
|
|
# Can't duel yourself.
|
|
NOT = { scope:actor = scope:recipient }
|
|
}
|
|
|
|
is_valid_showing_failures_only = {
|
|
# Calc some stuff that might invalidate elsewhere before the bout is sorted.
|
|
rival_single_combat_shown_and_not_invalid_trigger = yes
|
|
# Scope:recipient must be able to fight personally.
|
|
scope:recipient = { can_start_single_combat_trigger = yes }
|
|
# Scope:recipient must not be banned from single combat.
|
|
scope:recipient = {
|
|
custom_description = {
|
|
text = fp1_tbc_recipient_banned_from_combat
|
|
can_start_single_combat_banned_checks_trigger = no
|
|
}
|
|
}
|
|
# Neither of the characters can be imprisoned.
|
|
scope:actor = { is_imprisoned = no }
|
|
scope:recipient = { is_imprisoned = no }
|
|
}
|
|
|
|
can_send = {
|
|
scope:actor = {
|
|
custom_description = {
|
|
text = "character_interactions_hostile_actions_disabled_delay"
|
|
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
|
|
}
|
|
}
|
|
}
|
|
|
|
cost = { prestige = medium_prestige_value }
|
|
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 = {
|
|
# Set up the bout immediately.
|
|
## First inform.
|
|
scope:actor = {
|
|
custom_tooltip = challenge_to_single_combat_interaction.enter_non_lethal_bout.tt
|
|
custom_tooltip = challenge_to_single_combat_interaction.victor_gets.tt
|
|
custom_tooltip = challenge_to_single_combat_interaction.loser_gets.tt
|
|
}
|
|
## Finally, begin.
|
|
configure_start_single_combat_effect = {
|
|
SC_INITIATOR = scope:actor
|
|
SC_ATTACKER = scope:actor
|
|
SC_DEFENDER = scope:recipient
|
|
FATALITY = no
|
|
FIXED = no
|
|
LOCALE = terrain_scope
|
|
OUTPUT_EVENT = perk_interaction.0101
|
|
INVALIDATION_EVENT = perk_interaction.0102
|
|
}
|
|
|
|
# If we're a clan this interaction affects unity
|
|
if = {
|
|
limit = {
|
|
scope:actor = {
|
|
exists = scope:actor.house
|
|
house = { # But only if we have high unity!
|
|
OR = {
|
|
has_house_unity_stage = harmonious
|
|
has_house_unity_stage = friendly
|
|
}
|
|
}
|
|
}
|
|
}
|
|
add_clan_unity_interaction_effect = {
|
|
CHARACTER = scope:actor
|
|
TARGET = scope:recipient
|
|
VALUE = medium_unity_loss
|
|
DESC = clan_unity_challenge_to_combat.desc
|
|
REVERSE_NON_HOUSE_TARGET = no
|
|
}
|
|
custom_description_no_bullet = { text = active_unity_level_description_tt }
|
|
}
|
|
}
|
|
|
|
on_decline = {
|
|
# Scope:actor decline processing.
|
|
scope:actor = {
|
|
# Inform them of the decline & scope:recipient loses some prestige.
|
|
send_interface_toast = {
|
|
type = event_toast_effect_bad
|
|
title = challenge_to_single_combat_interaction.challenge_rejected.t
|
|
left_icon = scope:recipient
|
|
right_icon = scope:actor
|
|
scope:recipient = { add_prestige = medium_prestige_loss }
|
|
show_as_tooltip = {
|
|
add_prestige = medium_prestige_value
|
|
}
|
|
}
|
|
hidden_effect = {
|
|
add_prestige_no_experience = medium_prestige_value
|
|
}
|
|
# Cooldown is removed.
|
|
hidden_effect = { remove_interaction_cooldown = challenge_to_single_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
|
|
}
|
|
}
|
|
}
|
|
|
|
auto_accept = no
|
|
|
|
ai_accept = {
|
|
base = 0 # Try to make it 0 for most interactions
|
|
|
|
# Relative fightan ability.
|
|
modifier = {
|
|
desc = CTSC_RELATIVE_PROWESS
|
|
scope:actor.prowess < scope:recipient.prowess
|
|
add = {
|
|
value = scope:recipient.prowess
|
|
subtract = scope:actor.prowess
|
|
multiply = 2
|
|
}
|
|
}
|
|
modifier = {
|
|
desc = CTSC_RELATIVE_PROWESS
|
|
scope:recipient.prowess < scope:actor.prowess
|
|
add = {
|
|
value = scope:actor.prowess
|
|
subtract = scope:recipient.prowess
|
|
multiply = -2
|
|
}
|
|
}
|
|
# Weight up for personality values.
|
|
ai_value_modifier = {
|
|
who = scope:recipient
|
|
ai_boldness = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
ai_boldness > 0
|
|
ai_rationality < 0
|
|
}
|
|
}
|
|
value = 2
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
NOT = { ai_boldness = 0 }
|
|
}
|
|
}
|
|
value = 1
|
|
}
|
|
}
|
|
ai_vengefulness = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
NOT = { ai_vengefulness = 0 }
|
|
}
|
|
}
|
|
value = 0.75
|
|
}
|
|
}
|
|
ai_honor = {
|
|
if = {
|
|
limit = {
|
|
scope:recipient = {
|
|
ai_honor > 0
|
|
}
|
|
}
|
|
value = 0.5
|
|
}
|
|
}
|
|
}
|
|
# 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
|
|
}
|
|
# Nemesis modifier.
|
|
modifier = {
|
|
desc = offer_vassalization_interaction_aibehavior_nemesis_tt
|
|
trigger = {
|
|
scope:recipient = {
|
|
has_relation_nemesis = scope:actor
|
|
}
|
|
}
|
|
add = 50
|
|
}
|
|
|
|
# Unity modifiers
|
|
evaluate_action_decreasing_house_unity = {
|
|
VALUE = 100
|
|
}
|
|
}
|
|
|
|
# AI
|
|
ai_potential = {
|
|
can_challenge_rival_to_single_combat_trigger = yes
|
|
NOT = { has_trait = craven }
|
|
num_of_relation_rival > 0
|
|
is_imprisoned = no
|
|
can_start_single_combat_trigger = yes
|
|
}
|
|
|
|
ai_target_quick_trigger = {
|
|
adult = yes
|
|
}
|
|
ai_targets = {
|
|
ai_recipients = scripted_relations
|
|
}
|
|
|
|
ai_frequency = 60
|
|
|
|
ai_will_do = {
|
|
base = -50
|
|
|
|
# Factor for personality (excluding realism).
|
|
modifier = {
|
|
add = {
|
|
value = ai_boldness
|
|
multiply = 1
|
|
}
|
|
}
|
|
modifier = { add = ai_vengefulness }
|
|
modifier = {
|
|
add = {
|
|
value = ai_energy
|
|
multiply = -0.25
|
|
}
|
|
}
|
|
|
|
# Unity modifiers
|
|
evaluate_action_decreasing_house_unity = {
|
|
VALUE = 100
|
|
}
|
|
|
|
# Don't challenge kinslayer-counting family, unless they're your nemesis.
|
|
modifier = {
|
|
scope:actor = {
|
|
murdering_character_is_kinslaying_in_faith_trigger = {
|
|
CHARACTER = scope:recipient
|
|
FAITH = scope:actor.faith
|
|
}
|
|
}
|
|
scope:recipient = {
|
|
NOT = { has_relation_nemesis = scope:actor }
|
|
}
|
|
add = -1000
|
|
}
|
|
# Don't challenge your spouse, unless they're your nemesis.
|
|
modifier = {
|
|
scope:recipient = {
|
|
is_spouse_of = scope:actor
|
|
NOT = { 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
|
|
}
|
|
}
|
|
}
|