N3OW/common/script_values/00_scheme_values.txt

4864 lines
100 KiB
Text
Raw Normal View History

2024-11-16 19:09:11 +00:00
###################
# SCHEME VALUES #
###################
# Determines the scheme progress loss when declining to execute it at full progress
decline_execution_setback = -3
major_decline_execution_setback = -5
# Failed scheme setback values
scheme_failed_outcome_setback_value = -7
#Scheme progress changes, 10% of current phase duration max in days
scheme_progress_gain = {
value = scope:scheme.scheme_phase_duration
subtract = scope:scheme.scheme_progress
multiply = 0.1
}
scheme_progress_loss = {
value = scope:scheme.scheme_phase_duration
subtract = scope:scheme.scheme_progress
multiply = -0.1
}
# Secrecy changes
minor_secrecy_loss = -0.05
medium_secrecy_loss = -0.1
major_secrecy_loss = -0.15
minor_secrecy_gain = 0.05
medium_secrecy_gain = 0.1
major_secrecy_gain = 0.15
#Watchful Modifier
watchful_modifier_duration = 730
# EVENT COOLDOWN FOR VARIOUS SCHEMES
default_scheme_event_cooldown_duration_value = 730
spy_scheme_event_cooldown_time = 365
# BRIBES
bribe_value = {
value = 50
if = {
limit = {
scope:recipient.ai_greed > 0
}
add = {
value = scope:recipient.ai_greed
divide = 4
}
}
if = {
limit = {
scope:recipient = { is_playable_character = yes }
scope:recipient.primary_title.tier < tier_duchy
}
multiply = 2
}
else_if = {
limit = {
scope:recipient.primary_title.tier >= tier_duchy
}
multiply = 3
}
if = {
limit = {
scope:recipient = {
liege = scope:actor
is_theocratic_lessee = yes
}
scope:actor.primary_title.tier < tier_duchy
}
multiply = 2
}
else_if = {
limit = {
scope:recipient = {
liege = scope:actor
is_theocratic_lessee = yes
}
scope:actor.primary_title.tier >= tier_duchy
}
multiply = 3
}
if = {
limit = {
scope:actor = {
exists = dynasty
dynasty = {
has_dynasty_perk = guile_legacy_2
}
}
}
multiply = 0.5
}
if = {
limit = {
scope:recipient = {
OR = {
AND = {
is_playable_character = yes
government_has_flag = government_is_tribal
}
AND = {
is_playable_character = no
exists = liege
liege = {
government_has_flag = government_is_tribal
}
}
AND = {
is_playable_character = no
exists = host
host = {
government_has_flag = government_is_tribal
}
}
}
}
}
multiply = 0.25
min = 5
}
# Discount from BP2 imaginary friend story cycle ending
if = {
limit = {
scope:actor = { has_character_modifier = imaginary_friend_mad_modifier }
}
multiply = 0.5
min = 5
}
}
greater_bribe_value = {
value = { add = bribe_value }
multiply = 2
}
prestige_bribe_value = {
# Base.
value = medium_prestige_value
# Your tier.
add = {
value = 25
multiply = scope:actor.highest_held_title_tier
}
# Their tier.
add = {
value = 25
multiply = scope:recipient.highest_held_title_tier
}
}
influence_bribe_value = {
# Base.
value = major_influence_value
# Your tier.
add = {
value = 25
multiply = scope:actor.highest_held_title_tier
}
# Their tier.
add = {
value = 25
multiply = scope:recipient.highest_held_title_tier
}
}
piety_bribe_value = {
# Base.
value = medium_piety_value
# Your tier.
add = {
value = 25
multiply = scope:actor.highest_held_title_tier
}
# Their tier.
add = {
value = 25
multiply = scope:recipient.highest_held_title_tier
}
}
#GIFTS
gift_value = {
value = 50
if = {
limit = {
scope:recipient.ai_greed > 0
}
add = {
value = scope:recipient.ai_greed
divide = 4
}
}
if = {
limit = {
scope:recipient = { is_playable_character = yes }
scope:recipient.primary_title.tier < tier_duchy
}
multiply = 2
}
else_if = {
limit = {
scope:recipient.primary_title.tier >= tier_duchy
}
multiply = 3
}
if = {
limit = {
scope:recipient = {
liege = scope:actor
is_theocratic_lessee = yes
}
scope:actor.primary_title.tier < tier_duchy
}
multiply = 2
}
else_if = {
limit = {
scope:recipient = {
liege = scope:actor
is_theocratic_lessee = yes
}
scope:actor.primary_title.tier >= tier_duchy
}
multiply = 3
}
if = {
limit = {
scope:actor = {
exists = dynasty
dynasty = {
has_dynasty_perk = fp1_adventure_legacy_2
}
}
}
multiply = 0.5
}
if = {
limit = {
scope:recipient = {
OR = {
AND = {
is_playable_character = yes
government_has_flag = government_is_tribal
}
AND = {
is_playable_character = no
exists = liege
liege = {
government_has_flag = government_is_tribal
}
}
AND = {
is_playable_character = no
exists = host
host = {
government_has_flag = government_is_tribal
}
}
}
}
}
multiply = 0.25
min = 5
}
}
bribe_acceptance_value = {
value = 10
if = {
limit = {
root.ai_greed > 0
}
add = root.ai_greed
}
divide = 5
ceiling = yes
multiply = 5
}
sway_opinion_increase_per_success = 25
sway_max_value = 100
# Claim Throne values
claim_throne_discovered_prestige_loss = {
value = major_prestige_loss
}
claim_throne_discovered_failure_prestige_loss = {
value = medium_prestige_loss
}
# Vengeful Trait Scheme Success Chance Modifier
vengeful_scheme_success_chance_modifier = 15
court_scheme_max_compatability_value = {
value = 30
if = {
limit = {
culture = {
has_cultural_parameter = ai_romance_scheme_increase
}
}
add = 70
}
}
##################################################
# Schemes 2.5
##################################################
# Misc Values
# Script copy of a define for easier, more legible referencing.
opportunity_cap_value = { value = define:NScheme|SCHEME_MAX_OPPORTUNITIES }
##################################################
# Parameter Values
# Control values for scheme parameters
## There's gonna be a lot of dumb letter abbreviations here, just go with it: the script will _not_ be readable by mortal eyes if we write the whole thing out.
## t1 is slow.
## t2 is average.
## t3 is fast.
### Base Progress Goal
#### Each one is the _base_ length for a phase to take for schemes of that tempo, before speed modifiers are applied.
t3_base_phase_length_value = 70
t2_base_phase_length_value = 120
t1_base_phase_length_value = 170
### Base Maximum Success
#### Max success before agents.
t1_base_max_success_value = 20
t2_base_max_success_value = 30
t3_base_max_success_value = 40
### Speed per Skill Point
#### How many days we knock off phase duration per relevant skill point of the scheme owner.
t3_spsp_owner_value = -0.5
t2_spsp_owner_value = -0.25
t1_spsp_owner_value = -0.1
### Speed per Target Skill Point
#### How many days we add on to phase duration per relevant skill point of the scheme target.
t3_spsp_target_value = 0.3
t2_spsp_target_value = 0.1
t1_spsp_target_value = 0.05
### Spymaster Speed per Skill Point
#### How many days we knock off phase duration per relevant skill point of the scheme owner's spymaster.
t3_spsp_owner_spy_value = -0.3
t2_spsp_owner_spy_value = -0.15
t1_spsp_owner_spy_value = -0.05
### Target Spymaster Speed per Skill Point
#### How many days we add on to phase duration per relevant skill point of the scheme target's spymaster.
t3_spsp_target_spy_value = 0.3
t2_spsp_target_spy_value = 0.1
t1_spsp_target_spy_value = 0.05
### Success Chance Growth per Skill Point
#### How much success chance per phase per relevant skill point of the scheme owner.
laamp_contract_scgpsp_value = 0.7
t3_scgpsp_value = 0.6
t2_scgpsp_value = 0.45
t1_scgpsp_value = 0.3
# Scheme speed standardisation modifiers.
## Speeding up a scheme.
microscopic_scheme_phase_duration_bonus_value = -2
miniscule_scheme_phase_duration_bonus_value = -5
minor_scheme_phase_duration_bonus_value = -10
medium_scheme_phase_duration_bonus_value = -20
major_scheme_phase_duration_bonus_value = -40
massive_scheme_phase_duration_bonus_value = -60
monumental_scheme_phase_duration_bonus_value = -100
## Slowing down a scheme.
microscopic_scheme_phase_duration_malus_value = 2
miniscule_scheme_phase_duration_malus_value = 5
minor_scheme_phase_duration_malus_value = 10
medium_scheme_phase_duration_malus_value = 20
major_scheme_phase_duration_malus_value = 40
massive_scheme_phase_duration_malus_value = 60
monumental_scheme_phase_duration_malus_value = 100
##################################################
# Success Chance Values
scheme_phases_till_max_success_value = {
value = max_scheme_success_chance
subtract = scheme_success_chance
#TODO_CD_EP3; get the actual scheme growth value from Code, this is just keyed to murder.
divide = {
value = scheme_owner.intrigue
multiply = 0.3
}
ceiling = yes
}
# What % intercept chance does this thing grant against murder schemes?
## We don't use these for court positions, generally, because we want more fine-tuning per court position & between their breakpoints.
add_intercept_repeatable_minor_value = 2
add_intercept_repeatable_medium_value = 5
add_intercept_repeatable_major_value = 10
add_intercept_repeatable_massive_value = 20
scheme_intercept_repeatable_chance_total_value = {
# Court positions.
## Remember with all of these: it's an aggregate, so if you give one court position (_especially_ one that you can have multiple of) too much, then you may render a character unmurderable.
## Bodyguard.
### Has subsumed the shieldmaiden/varangian variants: means we don't have to iterate over courtiers.
if = {
limit = { employs_court_position = bodyguard_court_position }
every_court_position_holder = {
type = bodyguard_court_position
limit = { bodyguard_will_actually_do_job_trigger = yes }
# Now we add aptitude per breakpoint, starting highest to lowest.
## Excellent
if = {
limit = { aptitude:bodyguard_court_position >= 4 }
add = 10
}
## Good
else_if = {
limit = { aptitude:bodyguard_court_position = 3 }
add = 8
}
## Average
else_if = {
limit = { aptitude:bodyguard_court_position = 2 }
add = 6
}
## Poor
else_if = {
limit = { aptitude:bodyguard_court_position = 1 }
add = 4
}
## Terrible
else = { add = 2 }
}
}
## Food taster.
if = {
limit = { employs_court_position = food_taster_court_position }
every_court_position_holder = {
type = food_taster_court_position
limit = { foodtaster_will_actually_do_job_trigger = yes }
# Now we add aptitude per breakpoint, starting highest to lowest.
## Excellent
if = {
limit = { aptitude:food_taster_court_position >= 4 }
add = 8
}
## Good
else_if = {
limit = { aptitude:food_taster_court_position = 3 }
add = 6
}
## Average
else_if = {
limit = { aptitude:food_taster_court_position = 2 }
add = 4
}
## Poor
else_if = {
limit = { aptitude:food_taster_court_position = 1 }
add = 2
}
## Terrible
else = { add = 1 }
}
}
## Cupbearer.
if = {
limit = { employs_court_position = cupbearer_court_position }
every_court_position_holder = {
type = cupbearer_court_position
limit = { cupbearer_will_actually_do_job_trigger = yes }
# Now we add aptitude per breakpoint, starting highest to lowest.
## Excellent
if = {
limit = { aptitude:cupbearer_court_position >= 4 }
add = 3
}
## Good
else_if = {
limit = { aptitude:cupbearer_court_position = 3 }
add = 2
}
## Average
else_if = {
limit = { aptitude:cupbearer_court_position = 2 }
add = 1
}
## Poor
else_if = {
limit = { aptitude:cupbearer_court_position = 1 }
add = 0
}
## Terrible
else = { add = 0 }
}
}
# Traits.
## Gluttonous.
if = {
limit = { has_trait = gluttonous }
add = add_intercept_repeatable_minor_value
}
# Character modifiers.
## Personal guard.
if = {
limit = { has_character_modifier = spouse_martial_personal_guard_modifier }
add = add_intercept_repeatable_major_value
}
# You can never have more than a certain amount of intercept value.
max = 75
}
##################################################
# Secrecy Values
# Cap secrecy for the scheme_owner to a sensible maximum value so that you can't single-handedly cover up for every gossip in the world.
secrecy_skill_contribution_max_value = 40
secrecy_base_value = {
add = {
value = 20
desc = BASE
}
# Reduce by the target's scheme discovery chance, if appropriate.
if = {
limit = {
# Scheme has to exist already.
exists = this
# We gotta be facing a character.
is_scheme_target_type = character
# Do they have a spymaster...
scheme_target_character.cp:councillor_spymaster ?= {
# ... who is performing the appropriate task...
is_performing_council_task = task_disrupt_schemes
NOR = {
# ... who _isn't_ the scheme owner...
this = scope:owner
# ... or an agent in the scheme.
save_temporary_scope_as = char_temp
root = {
any_scheme_agent_character = { this = scope:char_temp }
}
}
}
}
add = {
value = scope:target.cp:councillor_spymaster.spymaster_disrupt_schemes_total_modifier
multiply = -1
desc = secrecy.scheme_owner.spymaster.disrupt_schemes
}
}
}
secrecy_agent_count_reduction_value = {
add = {
value = {
every_scheme_agent_slot = {
limit = {
is_filled = yes
NOT = { agent_slot_has_contribution_type = secrecy }
}
add = -10
}
}
desc = secrecy.num_agents
}
}
# How many months, by default, before a scheme can be discovered in the monthly check?
## Schemes can always be discovered when they attempt conclusion.
## Only referenced in one spot in script, but we use a script value regardless so that we can refer to it in loc.
secrecy_grace_period_value = 6
# How many extra months of grace you get from the Court of Shadows lifestyle perk.
court_of_shadows_extra_secrecy_grace_value = 4
# The actual value checked for starting grace on a scheme — any extra bonuses can be fed in here (though you can also adjust it on the fly by modifying the variable set on the scheme itself).
secrecy_grace_character_total_starting_value = {
value = secrecy_grace_period_value
scope:scheme_launcher ?= {
if = {
limit = { has_perk = court_of_shadows_perk }
add = court_of_shadows_extra_secrecy_grace_value
}
}
}
# Calc if the next scheme breach we get would destroy the scoped scheme.
scheme_breaches_about_to_hit_limit_value = {
value = maximum_scheme_breaches
add = -1
}
##################################################
# Interaction Values
# Standardised scheme starter package values, so that we can fake it for the widget.
scheme_starter_bonus_success_chance_value = 20
scheme_starter_bonus_secrecy_value = 25
scheme_starter_bonus_speed_value = -20
scheme_starter_duration_value = 8
scheme_starter_success_chance_cost_value = { value = major_gold_value }
scheme_starter_speed_cost_value = { value = medium_gold_value }
scheme_starter_secrecy_cost_value = { value = minor_gold_value }
##################################################
# Agent Values
# How many agents can a character have in a scheme before they're forced to make a final try?
character_max_scheme_agents_value = 5
# How many agent slots are filled in the scheme atm?
current_scheme_filled_agent_slots_value = {
every_scheme_agent_slot = {
limit = { is_filled = yes }
add = 1
}
}
# How much do we reduce the weight on agent types that we already have in a scheme?
weight_down_existing_agent_slots_value = 0.5
# What're the upper and lower constraints for how much contribution an agent can give?
## Because we don't want any agent to insta-boost you too high.
agent_scheme_contributor_max = 50
## Aaaaaand it's just way less of a headache of edge cases if they're never literally zero.
agent_scheme_contributor_min = 1
# Standard base value for agent contribution.
## Atm, we only really use this for calculating degree of closeness bonuses for agents in hostile schemes.
## Nothing stopping it from being updated for something like the inverse, though: best friends better at the plan_surprise_party scheme or whatever.
### Control values.
scheme_agent_general_bonuses_contribution_score_bonus_max_value = agent_max_skill_value
scheme_agent_general_bonuses_contribution_score_bonus_massive_value = 30
scheme_agent_general_bonuses_contribution_score_bonus_major_value = 20
scheme_agent_general_bonuses_contribution_score_bonus_medium_value = 10
scheme_agent_general_bonuses_contribution_score_bonus_minor_value = 5
scheme_agent_general_bonuses_contribution_score_bonus_miniscule_value = 2
### Actual value.
scheme_agent_general_bonuses_contribution_score_value = {
# First off, are we dealing with a hostile scheme against a character or a title?
if = {
limit = {
exists = scope:target
trigger_if = {
limit = {
scope:scheme ?= {
is_scheme_target_type = character
is_scheme_category = hostile
}
}
scope:scheme ?= {
scheme_target_character = { save_temporary_scope_as = target_character }
}
}
trigger_else_if = {
limit = {
scope:scheme ?= {
is_scheme_target_type = title
is_scheme_category = hostile
}
}
scope:scheme ?= {
scheme_target_title.holder ?= { save_temporary_scope_as = target_character }
}
}
trigger_else = { always = no }
}
# Do we have a scope:target_character to play with now?
if = {
limit = { exists = scope:target_character }
# Degree of closeness to target.
if = {
limit = {
scope:target_character = {
is_ruler = yes
cp:councillor_spymaster ?= prev
}
}
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_max_value
desc = "SCHEME_AGENT_IS_SPYMASTER_IN_MY_COURT"
}
}
else_if = {
limit = {
scope:target_character = { is_ruler = no }
has_council_position = councillor_spymaster
scope:target_character.liege.cp:councillor_spymaster ?= this
}
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_max_value
desc = "SCHEME_AGENT_IS_SPYMASTER"
}
}
else_if = {
limit = { is_spouse_of = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_massive_value
desc = "SCHEME_AGENT_IS_SPOUSE"
}
}
else_if = {
limit = { has_relation_best_friend = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_massive_value
desc = "SCHEME_AGENT_IS_BEST_FRIEND"
}
}
else_if = {
limit = { has_relation_ward = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_massive_value
desc = "SCHEME_AGENT_IS_GUARDIAN"
}
}
else_if = {
limit = { is_diarch_of_target = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_massive_value
desc = "SCHEME_AGENT_IS_DIARCH"
}
}
else_if = {
limit = { has_relation_friend = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_major_value
desc = "SCHEME_AGENT_IS_FRIEND"
}
}
else_if = {
limit = { is_concubine_of = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_major_value
desc = "SCHEME_AGENT_IS_CONCUBINE"
}
}
else_if = {
limit = { has_relation_lover = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_major_value
desc = "SCHEME_AGENT_IS_LOVER"
}
}
else_if = {
limit = {
has_court_position = court_physician_court_position
is_court_position_employer = {
court_position = court_physician_court_position
who = scope:target_character
}
}
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_major_value
desc = "SCHEME_AGENT_IS_COURT_PHYSICIAN"
}
}
else_if = {
limit = {
has_court_position = food_taster_court_position
is_court_position_employer = {
court_position = food_taster_court_position
who = scope:target_character
}
}
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_major_value
desc = "SCHEME_AGENT_IS_FOOD_TASTER"
}
}
else_if = {
limit = {
has_court_position = cupbearer_court_position
is_court_position_employer = {
court_position = cupbearer_court_position
who = scope:target_character
}
}
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_major_value
desc = "SCHEME_AGENT_IS_CUP_BEARER"
}
}
else_if = {
limit = {
has_court_position = chief_eunuch_court_position
is_court_position_employer = {
court_position = chief_eunuch_court_position
who = scope:target_character
}
}
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_major_value
desc = "SCHEME_AGENT_IS_CHIEF_EUNUCH"
}
}
else_if = {
limit = {
has_court_position = bodyguard_court_position
is_court_position_employer = {
court_position = bodyguard_court_position
who = scope:target_character
}
}
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_major_value
desc = "SCHEME_AGENT_IS_BODYGUARD"
}
}
else_if = {
limit = {
has_court_position = lady_in_waiting_court_position
is_court_position_employer = {
court_position = lady_in_waiting_court_position
who = scope:target_character
}
}
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_minor_value
desc = "SCHEME_AGENT_IS_LADY_IN_WAITING"
}
}
else_if = {
limit = {
is_councillor_of = scope:target_character
NOT = { has_council_position = councillor_spymaster }
}
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_medium_value
desc = "SCHEME_AGENT_IS_COUNCILLOR"
}
}
else_if = {
limit = { is_close_family_of = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_medium_value
desc = "SCHEME_AGENT_IS_CLOSE_KIN"
}
}
else_if = {
limit = { is_powerful_vassal_of = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_minor_value
desc = "SCHEME_AGENT_IS_POWERFUL_VASSAL"
}
}
else_if = {
limit = { is_extended_family_of = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_minor_value
desc = "SCHEME_AGENT_IS_EXTENDED_FAMILY"
}
}
else_if = {
limit = {
scope:target_character = { is_ruler = yes }
is_ruler = yes
}
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_miniscule_value
desc = "SCHEME_AGENT_IS_VASSAL"
}
}
else_if = {
limit = {
scope:target_character = { is_ruler = no }
is_ruler = yes
}
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_miniscule_value
desc = "SCHEME_AGENT_IS_VASSAL_OF_LIEGE"
}
}
# Rivalry boosts an agent's industriousness.
if = {
limit = { has_relation_nemesis = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_medium_value
desc = "SCHEME_AGENT_IS_NEMESIS"
}
}
else_if = {
limit = { has_relation_rival = scope:target_character }
add = {
add = scheme_agent_general_bonuses_contribution_score_bonus_minor_value
desc = "SCHEME_AGENT_IS_RIVAL"
}
}
}
}
# Otherwise nada.
else = { value = 0 }
}
# Agent contribution setup values.
# How much can any one of an agent's skills contribute to their score?
agent_max_skill_value = 25
# Ratio of 75% major skill to 25% minor skill.
agent_3to1_3_skill_mult_value = 0.75
agent_3to1_1_skill_mult_value = 0.25
# Ratio of 50% between two skills.
agent_1to1_1_skill_mult_value = 0.5
# Ratio of 50% major skill to 25% for two minor skills.
agent_2to1to1_2_skill_mult_value = 0.5
agent_2to1to1_1_skill_mult_value = 0.25
# Trait bonus'n'malus tiers.
agent_trait_bonus_t3_value = 9
agent_trait_bonus_t2_value = 6
agent_trait_bonus_t1_value = 3
agent_trait_malus_t1_value = -3
agent_trait_malus_t2_value = -6
agent_trait_malus_t3_value = -9
# Political Schemem agent values
political_agent_max_skill_value = 15
agent_house_power_score_mult = 0.1
agent_max_house_power_value = 30
agent_house_power_score_value = {
value = 0
if = {
limit = { exists = house }
add = house.house_power_score
}
multiply = agent_house_power_score_mult
ceiling = yes
max = agent_max_house_power_value
desc = scheme_agent_aptitude.scaled_house_power_score
}
# Sync values for agents that have multiple contribution types.
## Justiciar.
agent_justiciar_contribution_value = {
# Base value.
value = scheme_agent_general_bonuses_contribution_score_value
# Skills
## Learning
add = {
value = learning
multiply = agent_3to1_3_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.learning
}
## Diplomacy
add = {
value = diplomacy
multiply = agent_3to1_1_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.diplomacy
}
# Traits
## Bonuses
### +++ Just
if = {
limit = { has_trait = just }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.just
}
}
### +++ Diligent
if = {
limit = { has_trait = diligent }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.diligent
}
}
### +++ Honest
if = {
limit = { has_trait = honest }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.honest
}
}
### ++ Patient
if = {
limit = { has_trait = patient }
add = {
value = agent_trait_bonus_t2_value
desc = scheme_agent_aptitude.trait.patient
}
}
### + Paranoid
if = {
limit = { has_trait = paranoid }
add = {
value = agent_trait_bonus_t1_value
desc = scheme_agent_aptitude.trait.paranoid
}
}
## Maluses
### - Trusting
if = {
limit = { has_trait = trusting }
add = {
value = agent_trait_malus_t1_value
desc = scheme_agent_aptitude.trait.trusting
}
}
### -- Impatient
if = {
limit = { has_trait = impatient }
add = {
value = agent_trait_malus_t2_value
desc = scheme_agent_aptitude.trait.impatient
}
}
### --- Deceitful
if = {
limit = { has_trait = deceitful }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.deceitful
}
}
### --- Diligent
if = {
limit = { has_trait = diligent }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.diligent
}
}
### --- Arbitrary
if = {
limit = { has_trait = arbitrary }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.arbitrary
}
}
# Cap this off.
max = agent_scheme_contributor_max
min = agent_scheme_contributor_min
}
## Wrangler
agent_wrangler_contribution_value = {
value = scheme_agent_general_bonuses_contribution_score_value
# Skills
## Diplomacy
add = {
value = diplomacy
multiply = agent_3to1_3_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.diplomacy
}
## Intrigue
add = {
value = intrigue
multiply = agent_3to1_1_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.intrigue
}
# Traits
## Bonuses
### +++ Gregarious
if = {
limit = { has_trait = gregarious }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.gregarious
}
}
### +++ Diplomat
if = {
limit = { has_trait = diplomat }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.diplomat
}
}
### ++ Arrogant
if = {
limit = { has_trait = arrogant }
add = {
value = agent_trait_bonus_t2_value
desc = scheme_agent_aptitude.trait.arrogant
}
}
### ++ Ambitious
if = {
limit = { has_trait = ambitious }
add = {
value = agent_trait_bonus_t2_value
desc = scheme_agent_aptitude.trait.ambitious
}
}
### + Eccentric
if = {
limit = { has_trait = eccentric }
add = {
value = agent_trait_bonus_t1_value
desc = scheme_agent_aptitude.trait.eccentric
}
}
## Maluses
### - Temperate
if = {
limit = { has_trait = temperate }
add = {
value = agent_trait_malus_t1_value
desc = scheme_agent_aptitude.trait.temperate
}
}
### -- Humble
if = {
limit = { has_trait = humble }
add = {
value = agent_trait_malus_t2_value
desc = scheme_agent_aptitude.trait.humble
}
}
### -- Trusting
if = {
limit = { has_trait = trusting }
add = {
value = agent_trait_malus_t2_value
desc = scheme_agent_aptitude.trait.trusting
}
}
### --- Content
if = {
limit = { has_trait = content }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.content
}
}
### --- Forgiving
if = {
limit = { has_trait = forgiving }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.forgiving
}
}
### --- Shy
if = {
limit = { has_trait = shy }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.shy
}
}
# Cap this off.
max = agent_scheme_contributor_max
min = agent_scheme_contributor_min
}
## Cleric
agent_cleric_contribution_value = {
# Base value.
value = scheme_agent_general_bonuses_contribution_score_value
# Skills
## Diplomacy
add = {
value = diplomacy
multiply = agent_3to1_3_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.diplomacy
}
## Learning
add = {
value = learning
multiply = agent_3to1_1_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.learning
}
# Traits
## Bonuses
### +++ Zealous
if = {
limit = { has_trait = zealous }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.zealous
}
}
### ++ Humble
if = {
limit = { has_trait = humble }
add = {
value = agent_trait_bonus_t2_value
desc = scheme_agent_aptitude.trait.humble
}
}
### ++ Diligent
if = {
limit = { has_trait = diligent }
add = {
value = agent_trait_bonus_t2_value
desc = scheme_agent_aptitude.trait.diligent
}
}
### + Honest
if = {
limit = { has_trait = honest }
add = {
value = agent_trait_bonus_t1_value
desc = scheme_agent_aptitude.trait.honest
}
}
## Maluses
### - Deceitful
if = {
limit = { has_trait = deceitful }
add = {
value = agent_trait_malus_t1_value
desc = scheme_agent_aptitude.trait.deceitful
}
}
### -- Lazy
if = {
limit = { has_trait = lazy }
add = {
value = agent_trait_malus_t2_value
desc = scheme_agent_aptitude.trait.lazy
}
}
### -- Arrogant
if = {
limit = { has_trait = arrogant }
add = {
value = agent_trait_malus_t2_value
desc = scheme_agent_aptitude.trait.arrogant
}
}
### --- Cynical
if = {
limit = { has_trait = cynical }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.cynical
}
}
# Cap this off.
max = agent_scheme_contributor_max
min = agent_scheme_contributor_min
}
## Theologian
agent_theologian_contribution_value = {
# Base value.
value = scheme_agent_general_bonuses_contribution_score_value
# Skills
## Learning
add = {
value = learning
multiply = agent_3to1_3_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.learning
}
## Diplomacy
add = {
value = diplomacy
multiply = agent_3to1_1_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.diplomacy
}
# Traits
## Bonuses
### +++ Just
if = {
limit = { has_trait = just }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.just
}
}
### +++ Zealous
if = {
limit = { has_trait = zealous }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.zealous
}
}
### +++ Stubborn
if = {
limit = { has_trait = stubborn }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.stubborn
}
}
### ++ Calm (we like both measured responses...)
if = {
limit = { has_trait = calm }
add = {
value = agent_trait_bonus_t2_value
desc = scheme_agent_aptitude.trait.calm
}
}
### ++ Wrathful (... and less measured ones)
if = {
limit = { has_trait = wrathful }
add = {
value = agent_trait_bonus_t2_value
desc = scheme_agent_aptitude.trait.wrathful
}
}
### ++ Diligent
if = {
limit = { has_trait = diligent }
add = {
value = agent_trait_bonus_t2_value
desc = scheme_agent_aptitude.trait.diligent
}
}
### + Eccentric
if = {
limit = { has_trait = eccentric }
add = {
value = agent_trait_bonus_t1_value
desc = scheme_agent_aptitude.trait.eccentric
}
}
## Maluses
### -- Lazy
if = {
limit = { has_trait = lazy }
add = {
value = agent_trait_malus_t2_value
desc = scheme_agent_aptitude.trait.lazy
}
}
### --- Fickle
if = {
limit = { has_trait = fickle }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.fickle
}
}
### --- Cynical
if = {
limit = { has_trait = cynical }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.cynical
}
}
### --- Arbitrary
if = {
limit = { has_trait = arbitrary }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.arbitrary
}
}
# Cap this off.
max = agent_scheme_contributor_max
min = agent_scheme_contributor_min
}
## Lookout
agent_lookout_contribution_value = {
# Base value.
value = scheme_agent_general_bonuses_contribution_score_value
# Skills
## Intrigue
add = {
value = intrigue
multiply = agent_3to1_3_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.intrigue
}
## Martial
add = {
value = martial
multiply = agent_3to1_1_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.martial
}
# Traits
## Bonuses
### +++ Patient
if = {
limit = { has_trait = patient }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.patient
}
}
### +++ Diligent
if = {
limit = { has_trait = diligent }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.diligent
}
}
### +++ Paranoid
if = {
limit = { has_trait = paranoid }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.paranoid
}
}
### + Brave
if = {
limit = { has_trait = brave }
add = {
value = agent_trait_bonus_t1_value
desc = scheme_agent_aptitude.trait.brave
}
}
## Maluses
### - Craven
if = {
limit = { has_trait = craven }
add = {
value = agent_trait_malus_t1_value
desc = scheme_agent_aptitude.trait.craven
}
}
### -- Trusting
if = {
limit = { has_trait = trusting }
add = {
value = agent_trait_malus_t2_value
desc = scheme_agent_aptitude.trait.trusting
}
}
### --- Lazy
if = {
limit = { has_trait = lazy }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.lazy
}
}
### --- Impatient
if = {
limit = { has_trait = impatient }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.impatient
}
}
# Cap this off.
max = agent_scheme_contributor_max
min = agent_scheme_contributor_min
}
## Gabbler
agent_gabbler_contribution_value = {
# Base value.
value = scheme_agent_general_bonuses_contribution_score_value
# Skills
## Diplomacy
add = {
value = diplomacy
multiply = agent_1to1_1_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.diplomacy
}
## Intrigue
add = {
value = intrigue
multiply = agent_1to1_1_skill_mult_value
ceiling = yes
max = agent_max_skill_value
desc = scheme_agent_aptitude.skill.intrigue
}
# Traits
## Bonuses
### +++ Gregarious
if = {
limit = { has_trait = gregarious }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.gregarious
}
}
### +++ Eccentric
if = {
limit = { has_trait = eccentric }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.eccentric
}
}
### +++ Fickle
if = {
limit = { has_trait = fickle }
add = {
value = agent_trait_bonus_t3_value
desc = scheme_agent_aptitude.trait.fickle
}
}
### ++ Arrogant
if = {
limit = { has_trait = arrogant }
add = {
value = agent_trait_bonus_t2_value
desc = scheme_agent_aptitude.trait.arrogant
}
}
### ++ Lazy
if = {
limit = { has_trait = lazy }
add = {
value = agent_trait_bonus_t2_value
desc = scheme_agent_aptitude.trait.lazy
}
}
### + Brave
if = {
limit = { has_trait = brave }
add = {
value = agent_trait_bonus_t1_value
desc = scheme_agent_aptitude.trait.brave
}
}
## Maluses
### - Craven
if = {
limit = { has_trait = craven }
add = {
value = agent_trait_malus_t1_value
desc = scheme_agent_aptitude.trait.craven
}
}
### -- Diligent
if = {
limit = { has_trait = diligent }
add = {
value = agent_trait_malus_t2_value
desc = scheme_agent_aptitude.trait.diligent
}
}
### -- Humble
if = {
limit = { has_trait = humble }
add = {
value = agent_trait_malus_t2_value
desc = scheme_agent_aptitude.trait.humble
}
}
### --- Stubborn
if = {
limit = { has_trait = stubborn }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.stubborn
}
}
### --- Shy
if = {
limit = { has_trait = shy }
add = {
value = agent_trait_malus_t3_value
desc = scheme_agent_aptitude.trait.shy
}
}
# Cap this off.
max = agent_scheme_contributor_max
min = agent_scheme_contributor_min
}
# How many opportunities it takes to spend them inviting an agent to a scheme.
invite_agent_opportunities_t1_value = 3
invite_agent_opportunities_t2_value = 5
# Contribution threshold values — how helpful they're being with a certain scheme.
agent_contribution_poor = 5
agent_contribution_good = 15
agent_contribution_excellent = 30
##################################################
# Preparation Event Values
# Weights for how likely scheme agents are to be rolled in critical moments.
critical_moment_agent_weight_very_high_value = 50
critical_moment_agent_weight_high_value = 25
critical_moment_agent_weight_medium_value = 15
critical_moment_agent_weight_low_value = 10
critical_moment_agent_weight_very_low_value = 5
# Don't use microscopic. This is largely here as a joke for wolf hunters in romance schemes.
critical_moment_agent_weight_microscopic_value = 1
# The standard charge cost for completing a scheme: we need this so we can calculate if bonus options should be cheaper.
scheme_charge_to_advance_threshold_base_value = 2
# How many charges does this scheme need before it can attempt completion?
## Default for schemes with only one ending option.
scheme_charge_to_advance_threshold_value = {
# If a scheme has a custom threshold set, use that.
if = {
limit = { has_variable = custom_charge_threshold }
add = var:custom_charge_threshold
}
# Otherwise, use the base.
else = { add = scheme_charge_to_advance_threshold_base_value }
}
## Schemes with multiple ending options cost varying amounts to end, depending on your selected final bonus.
multi_ending_scheme_charge_to_advance_threshold_t1_value = {
# If a scheme has a custom threshold set, use that.
if = {
limit = {
exists = this
has_variable = custom_charge_threshold
var:custom_charge_threshold < scheme_charge_to_advance_threshold_base_value
}
subtract = var:custom_charge_threshold
}
# Now, add the base.
add = 5
# Make sure this never goes completely nuts.
min = scheme_charge_to_advance_threshold_base_value
}
multi_ending_scheme_charge_to_advance_threshold_t2_value = {
# If a scheme has a custom threshold set, use that.
if = {
limit = {
exists = this
has_variable = custom_charge_threshold
var:custom_charge_threshold < scheme_charge_to_advance_threshold_base_value
}
subtract = var:custom_charge_threshold
}
# Now, add the base.
add = 10
# Make sure this never goes completely nuts.
min = scheme_charge_to_advance_threshold_base_value
}
multi_ending_scheme_charge_to_advance_threshold_t3_value = {
# If a scheme has a custom threshold set, use that.
if = {
limit = {
exists = this
has_variable = custom_charge_threshold
var:custom_charge_threshold < scheme_charge_to_advance_threshold_base_value
}
subtract = var:custom_charge_threshold
}
# Now, add the base.
add = 15
# Make sure this never goes completely nuts.
min = scheme_charge_to_advance_threshold_base_value
}
multi_ending_scheme_charge_to_advance_threshold_t4_value = {
# If a scheme has a custom threshold set, use that.
if = {
limit = {
exists = this
has_variable = custom_charge_threshold
var:custom_charge_threshold < scheme_charge_to_advance_threshold_base_value
}
subtract = var:custom_charge_threshold
}
# Now, add the base.
add = 20
# Make sure this never goes completely nuts.
min = scheme_charge_to_advance_threshold_base_value
}
# Schemes with multiple ending options come with boosts at the end that we want to reference in loc for brevity.
multi_ending_scheme_buff_t2_value = 5
multi_ending_scheme_buff_t3_value = 10
multi_ending_scheme_buff_t4_value = 20
multi_ending_scheme_buff_t2_total_success_value = {
value = scheme_success_chance
add = multi_ending_scheme_buff_t2_value
max = 95
}
multi_ending_scheme_buff_t3_total_success_value = {
value = scheme_success_chance
add = multi_ending_scheme_buff_t3_value
max = 95
}
multi_ending_scheme_buff_t4_total_success_value = {
value = scheme_success_chance
add = multi_ending_scheme_buff_t4_value
max = 95
}
# Get the actual max value of our current scheme.
scheme_max_theoretical_success_chance_value = {
if = {
limit = { is_scheme_category = hostile }
value = define:NScheme|HOSTILE_SCHEME_MAX_SUCCESS_CHANCE
}
else_if = {
limit = { is_scheme_category = contract }
value = define:NScheme|CONTRACT_SCHEME_MAX_SUCCESS_CHANCE
}
else_if = {
limit = { is_scheme_category = political }
value = define:NScheme|POLITICAL_SCHEME_MAX_SUCCESS_CHANCE
}
else = { value = define:NScheme|PERSONAL_SCHEME_MAX_SUCCESS_CHANCE }
}
##################################################
# Pulse Action Values
# How likely are you to get positive or negative APAs in a scheme, largely dependent on personal skill?
scheme_owner_aptitude_weight_up_positive_value = {
value = 1
# Diplomacy.
if = {
limit = { scheme_skill = diplomacy }
scope:owner = {
# Excellent skill.
if = {
limit = { diplomacy >= extremely_high_skill_rating }
add = 1
}
# High skill.
if = {
limit = { diplomacy >= high_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { diplomacy <= mediocre_skill_rating }
add = -1
}
# Atrocious skill.
if = {
limit = { diplomacy <= low_skill_rating }
add = -1
}
}
}
# Martial.
else_if = {
limit = { scheme_skill = martial }
scope:owner = {
# Excellent skill.
if = {
limit = { martial >= extremely_high_skill_rating }
add = 1
}
# High skill.
if = {
limit = { martial >= high_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { martial <= mediocre_skill_rating }
add = -1
}
# Atrocious skill.
if = {
limit = { martial <= low_skill_rating }
add = -1
}
}
}
# Stewardship.
else_if = {
limit = { scheme_skill = stewardship }
scope:owner = {
# Excellent skill.
if = {
limit = { stewardship >= extremely_high_skill_rating }
add = 1
}
# High skill.
if = {
limit = { stewardship >= high_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { stewardship <= mediocre_skill_rating }
add = -1
}
# Atrocious skill.
if = {
limit = { stewardship <= low_skill_rating }
add = -1
}
}
}
# Intrigue.
else_if = {
limit = { scheme_skill = intrigue }
scope:owner = {
# Excellent skill.
if = {
limit = { intrigue >= extremely_high_skill_rating }
add = 1
}
# High skill.
if = {
limit = { intrigue >= high_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { intrigue <= mediocre_skill_rating }
add = -1
}
# Atrocious skill.
if = {
limit = { intrigue <= low_skill_rating }
add = -1
}
}
}
# Learning.
else_if = {
limit = { scheme_skill = learning }
scope:owner = {
# Excellent skill.
if = {
limit = { learning >= extremely_high_skill_rating }
add = 1
}
# High skill.
if = {
limit = { learning >= high_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { learning <= mediocre_skill_rating }
add = -1
}
# Atrocious skill.
if = {
limit = { learning <= low_skill_rating }
add = -1
}
}
}
# Prowess.
else_if = {
limit = { scheme_skill = prowess }
scope:owner = {
# Excellent skill.
if = {
limit = { prowess >= extremely_high_skill_rating }
add = 1
}
# High skill.
if = {
limit = { prowess >= high_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { prowess <= mediocre_skill_rating }
add = -1
}
# Atrocious skill.
if = {
limit = { prowess <= low_skill_rating }
add = -1
}
}
}
}
scheme_owner_aptitude_weight_up_negative_value = {
value = 1
# Diplomacy.
if = {
limit = { scheme_skill = diplomacy }
scope:owner = {
# Atrocious skill.
if = {
limit = { diplomacy <= low_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { diplomacy <= mediocre_skill_rating }
add = 1
}
# High skill.
if = {
limit = { diplomacy >= high_skill_rating }
add = -1
}
# Excellent skill.
if = {
limit = { diplomacy >= extremely_high_skill_rating }
add = -1
}
}
}
# Martial.
else_if = {
limit = { scheme_skill = martial }
scope:owner = {
# Atrocious skill.
if = {
limit = { martial <= low_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { martial <= mediocre_skill_rating }
add = 1
}
# High skill.
if = {
limit = { martial >= high_skill_rating }
add = -1
}
# Excellent skill.
if = {
limit = { martial >= extremely_high_skill_rating }
add = -1
}
}
}
# Stewardship.
else_if = {
limit = { scheme_skill = stewardship }
scope:owner = {
# Atrocious skill.
if = {
limit = { stewardship <= low_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { stewardship <= mediocre_skill_rating }
add = 1
}
# High skill.
if = {
limit = { stewardship >= high_skill_rating }
add = -1
}
# Excellent skill.
if = {
limit = { stewardship >= extremely_high_skill_rating }
add = -1
}
}
}
# Intrigue.
else_if = {
limit = { scheme_skill = intrigue }
scope:owner = {
# Atrocious skill.
if = {
limit = { intrigue <= low_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { intrigue <= mediocre_skill_rating }
add = 1
}
# High skill.
if = {
limit = { intrigue >= high_skill_rating }
add = -1
}
# Excellent skill.
if = {
limit = { intrigue >= extremely_high_skill_rating }
add = -1
}
}
}
# Learning.
else_if = {
limit = { scheme_skill = learning }
scope:owner = {
# Atrocious skill.
if = {
limit = { learning <= low_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { learning <= mediocre_skill_rating }
add = 1
}
# High skill.
if = {
limit = { learning >= high_skill_rating }
add = -1
}
# Excellent skill.
if = {
limit = { learning >= extremely_high_skill_rating }
add = -1
}
}
}
# Prowess.
else_if = {
limit = { scheme_skill = prowess }
scope:owner = {
# Atrocious skill.
if = {
limit = { prowess <= low_skill_rating }
add = 1
}
# Low skill.
if = {
limit = { prowess <= mediocre_skill_rating }
add = 1
}
# High skill.
if = {
limit = { prowess >= high_skill_rating }
add = -1
}
# Excellent skill.
if = {
limit = { prowess >= extremely_high_skill_rating }
add = -1
}
}
}
}
# What's the chance of no APA firing each month of a scheme?
scheme_apa_chance_of_no_event_value = 90
# Control values for scheme APAs.
## Positive.
scheme_apa_modifier_positive_success_chance_value = 5
scheme_apa_modifier_positive_secrecy_value = 5
scheme_apa_modifier_positive_speed_value = -5
## Negative.
scheme_apa_modifier_negative_success_chance_value = -5
scheme_apa_modifier_negative_secrecy_value = -5
scheme_apa_modifier_negative_speed_value = 5
##################################################
# Countermeasure Values
countermeasure_disliked_by_trait_agenthood_acceptance_value = 25
countermeasure_scheme_category_success_chance_bonus_against_minor_value = -50
countermeasure_scheme_category_success_chance_bonus_against_medium_value = -100
countermeasure_scheme_category_success_chance_bonus_against_major_value = -150
countermeasure_scheme_category_success_chance_malus_against_minor_value = 10
countermeasure_scheme_category_success_chance_malus_against_medium_value = 15
countermeasure_scheme_category_success_chance_malus_against_major_value = 25
countermeasure_apply_secrecy_maluses_value = {
# Minor bonus to detection.
if = {
limit = {
countermeasure_parametre_applies_againt_char_trigger = {
SCHEME_TARGET = scope:target
SCHEME_OWNER = scope:owner
PARAMETER = secrecy_vs_all_schemes_bonus_minor
}
}
add = {
value = countermeasure_apply_secrecy_maluse_minor_value
desc = countermeasures_in_target_court.tt.secrecy
}
}
# Medium bonus to detection.
if = {
limit = {
countermeasure_parametre_applies_againt_char_trigger = {
SCHEME_TARGET = scope:target
SCHEME_OWNER = scope:owner
PARAMETER = secrecy_vs_all_schemes_bonus_medium
}
}
add = {
value = countermeasure_apply_secrecy_maluse_medium_value
desc = countermeasures_in_target_court.tt.secrecy
}
}
# Major bonus to detection.
if = {
limit = {
countermeasure_parametre_applies_againt_char_trigger = {
SCHEME_TARGET = scope:target
SCHEME_OWNER = scope:owner
PARAMETER = secrecy_vs_all_schemes_bonus_major
}
}
add = {
value = countermeasure_apply_secrecy_maluse_major_value
desc = countermeasures_in_target_court.tt.secrecy
}
}
}
# Lifestyle Perk
realm_charts_perk_value = 35
secrecy_charting_realm_increase_value = {
if = {
limit = {
scope:owner = {
has_perk = realm_charts_perk
}
scope:target ?= {
top_liege = scope:owner.top_liege
}
}
add = {
value = realm_charts_perk_value
desc = realm_chart_perk_same_realm_secrecy
}
}
}
# We use separate values so we can display them in loc too.
countermeasure_apply_secrecy_maluse_minor_value = -15
countermeasure_apply_secrecy_maluse_medium_value = -25
countermeasure_apply_secrecy_maluse_major_value = -35
# We use a script value instead of inline maths for this because for some reason _specifically_ the courtly and parochial vassal stances don't like in-line vassals.
dislikes_countermeasure_opinion_value = -30
dislikes_countermeasure_opinion_lowered_value = -20
dislikes_countermeasure_opinion_lowered_further_value = -10
dislikes_countermeasure_county_opinion_value = -40
dislikes_countermeasure_county_opinion_lowered_value = -30
dislikes_countermeasure_county_opinion_lowered_further_value = -20
# Controls when the AI will and won't use certain countermeasures.
## Prioritise what values are active.
### These don't all need to be script values, I've only done it so that they're all grouped next to each other for easy visualisation.
countermeasure_ai_will_do_prio4 = 80
countermeasure_ai_will_do_prio3 = 60
countermeasure_ai_will_do_prio2 = 40
countermeasure_ai_will_do_prio1 = 20
### We originally had this lower but it causes maddening stretching in debug mode.
countermeasure_ai_will_do_prio0 = -20
## Then we distribute these values out nicely between the different countermeasures.
ai_will_do_bounties_for_whispers_value = {
if = {
limit = {
should_ai_take_preemptive_countermeasures_trigger = yes
OR = {
has_trait = deceitful
has_trait = craven
}
NOR = {
has_trait = honest
has_trait = brave
has_trait = trusting
}
}
add = countermeasure_ai_will_do_prio1
}
else = { add = countermeasure_ai_will_do_prio0 }
}
ai_will_do_arbitrary_arrests_value = {
if = {
limit = {
should_ai_take_preemptive_countermeasures_trigger = yes
OR = {
has_trait = arbitrary
has_trait = paranoid
}
NOR = {
has_trait = just
has_trait = trusting
}
}
add = countermeasure_ai_will_do_prio1
}
else = { add = countermeasure_ai_will_do_prio0 }
}
ai_will_do_strengthen_sentries_value = {
if = {
limit = {
# Don't do this if we've already deployed countermeasures.
NOT = { has_scheme_countermeasure_parameter = has_aggressive_countermeasure_active }
# Then actually check to see if the scheme'd be appropriate for this.
any_targeting_scheme = {
is_scheme_exposed = yes
var:apply_countermeasures ?= flag:opportunistic
}
}
add = countermeasure_ai_will_do_prio3
}
else = { add = countermeasure_ai_will_do_prio0 }
}
ai_will_do_strengthen_sentries_for_courtier_value = {
if = {
limit = {
any_in_list = {
variable = host_should_prevent_seduce_schemes_list
host ?= prev
}
}
add = countermeasure_ai_will_do_prio2
}
}
ai_will_do_redouble_guards_value = {
if = {
limit = {
# We don't care about dpeloyed countermeasures here: guard against murders even if there's a seduction already happening.
any_targeting_scheme = {
is_scheme_exposed = yes
var:apply_countermeasures ?= flag:calculating
}
}
add = countermeasure_ai_will_do_prio4
}
else = { add = countermeasure_ai_will_do_prio0 }
}
ai_will_do_redouble_guards_for_courtier_value = {
if = {
limit = {
any_in_list = {
variable = host_should_prevent_murder_schemes_list
host ?= prev
}
}
add = countermeasure_ai_will_do_prio2
}
}
ai_will_do_withdraw_from_view_value = {
if = {
limit = {
any_targeting_scheme = {
is_scheme_exposed = yes
OR = {
var:apply_countermeasures ?= flag:calculating
var:apply_countermeasures ?= flag:opportunistic
}
}
OR = {
has_trait = humble
has_trait = shy
has_trait = eccentric
}
NOR = {
has_trait = arrogant
has_trait = gregarious
has_trait = stubborn
has_trait = trusting
}
}
add = countermeasure_ai_will_do_prio1
}
else = { add = countermeasure_ai_will_do_prio0 }
}
##################################################
# Murder Values
# How much automatic stress loss do we give a character, before traits, upon successfully murdering someone?
murder_base_stress_value = {
# If our imaginary friend told us to do it, then we lose a lot.
if = {
limit = { scope:owner.var:imaginary_friend_murder_target ?= scope:target }
add = major_stress_impact_loss
}
# Or a moderate gain if we've been caught and this is our first time.
else_if = {
limit = {
exists = scope:scheme_discovered
NOT = { has_trait = murderer }
}
add = medium_stress_impact_gain
}
# Else we're a repeat offender, so we care less.
else_if = {
limit = { exists = scope:scheme_discovered }
add = minor_stress_impact_gain
}
# Otherwise, a moderate loss.
else = { add = medium_stress_impact_loss }
}
# Which bodyguard is best poised to come to their liege's defence?
murder_weight_best_bodyguard_value = {
add = prowess
add = {
value = ai_boldness
# To bring us in line with skill scaling.
multiply = 0.25
}
add = {
value = "opinion(scope:target)"
# To bring us roughly in line with skill scaling.
multiply = 0.25
}
if = {
limit = { has_trait = loyal }
add = 25
}
}
# How much prestige do you get for successfully murdering a rival?
rival_outlived_prestige_value = medium_prestige_gain
##################################################
# Odds Values
base_odds_prediction_target_is_title_value = {
if = {
limit = { # Target is a landed title
exists = scope:target.holder
}
scope:target ?= {
holder = { save_temporary_scope_as = temp_target }
}
}
else_if = { # Title is a province
limit = {
exists = scope:target.province_owner
}
scope:target ?= {
province_owner = { save_temporary_scope_as = temp_target }
}
}
else_if = { #
limit = {
scope:target = {
any_de_jure_top_liege = {
exists = this
save_temporary_scope_as = de_jure_liege
}
}
}
scope:de_jure_liege = {
save_temporary_scope_as = temp_target
}
}
add = base_odds_prediction_guts_value
}
base_odds_prediction_target_is_char_value = {
scope:target ?= { save_temporary_scope_as = temp_target }
add = base_odds_prediction_guts_value
}
# For non-hostile, non-secret schemes (generally non-intrigue too).
base_odds_prediction_guts_value = {
add = {
value = {
scope:temp_target = { value = "opinion(scope:owner)" }
multiply = 0.2
floor = yes
}
desc = scheme_odds.target.opinion_of_owner
}
add = {
value = {
value = scope:temp_target.highest_held_title_tier
# Barons aren't imposing at all.
add = -1
# Don't give a bonus just for someone being a courtier and call it a tier thing.
min = 0
}
desc = scheme_odds.target.tier
multiply = -5
}
if = {
limit = {
scope:owner = {
exists = scope:temp_target.cp:councillor_spymaster
scope:temp_target.cp:councillor_spymaster = this
}
}
add = {
value = 12
desc = scheme_odds.owner.is_target_spymaster
}
}
if = {
limit = {
scope:temp_target = {
is_landed_or_landless_administrative = no
}
scope:owner = {
exists = scope:temp_target.liege.cp:councillor_spymaster
scope:temp_target.liege.cp:councillor_spymaster = this
}
}
add = {
value = 8
desc = scheme_odds.owner.is_target_liege_spymaster
}
}
if = {
limit = {
scope:temp_target = {
is_landed_or_landless_administrative = no
}
scope:owner = {
exists = scope:temp_target.host.cp:councillor_spymaster
scope:temp_target.host.cp:councillor_spymaster = this
}
}
add = {
value = 8
desc = scheme_odds.owner.is_target_host_spymaster
}
}
if = {
limit = {
scope:owner = {
has_relation_guardian = scope:temp_target
}
}
add = {
value = 8
desc = scheme_odds.owner.relation.owner_is_guardian_of_target
}
}
if = {
limit = {
scope:owner = { is_diarch_of_target = scope:temp_target }
}
add = {
value = 5
desc = scheme_odds.owner.relation.owner_is_diarch_of_target
}
}
if = {
limit = {
scope:temp_target = {
is_ruler = no
}
exists = scope:temp_target.liege
scope:temp_target.liege = scope:owner
}
add = {
value = 10
desc = scheme_odds.owner.relation.owner_is_liege_of_target
}
}
if = {
limit = {
scope:owner = {
is_councillor_of = scope:temp_target
}
}
add = {
value = 10
desc = scheme_odds.owner.relation.owner_is_councillor_of_target
}
}
if = {
limit = {
scope:owner = {
has_relation_lover = scope:temp_target
}
}
add = {
value = 10
desc = scheme_odds.owner.relation.owner_is_lover_of_target
}
}
if = {
limit = {
scope:owner = {
is_spouse_of = scope:temp_target
}
}
add = {
value = 10
desc = scheme_odds.owner.relation.owner_is_spouse_of_target
}
}
if = {
limit = {
scope:owner = {
is_consort_of = scope:temp_target
NOT = { is_spouse_of = scope:temp_target }
}
}
add = {
value = 5
desc = scheme_odds.owner.relation.owner_is_consort_of_target
}
}
if = {
limit = {
scope:owner = {
is_close_family_of = scope:temp_target
}
}
add = {
value = 5
desc = scheme_odds.owner.relation.owner_is_close_family_of_target
}
}
}
agent_groups_owner_perspective_value = {
scope:owner = {
# We need to check the any's here to avoid +0s if there's no valid chars.
if = {
limit = {
OR = {
any_courtier_or_guest = { is_valid_agent_standard_trigger = yes }
any_relation = {
type = friend
is_valid_agent_standard_trigger = yes
}
any_relation = {
type = lover
is_valid_agent_standard_trigger = yes
}
}
}
add = {
value = 1
multiply = {
value = 0
if = {
limit = {
any_courtier_or_guest = { is_valid_agent_standard_trigger = yes }
}
every_courtier_or_guest = {
limit = { is_valid_agent_standard_trigger = yes }
add = 1
}
}
if = {
limit = {
any_relation = {
type = friend
is_valid_agent_standard_trigger = yes
}
}
every_relation = {
type = friend
limit = { is_valid_agent_standard_trigger = yes }
add = 1
}
}
if = {
limit = {
any_relation = {
type = lover
is_valid_agent_standard_trigger = yes
}
}
every_relation = {
type = lover
limit = { is_valid_agent_standard_trigger = yes }
add = 1
}
}
max = 5
}
desc = scheme_odds.agents.owner.number_of_valid_courtiers_agents
}
}
}
}
agent_groups_target_character_perspective_value = {
if = {
limit = {
scope:scheme ?= {
is_scheme_target_type = title
}
}
scope:scheme ?= {
scheme_target_title.holder ?= { save_temporary_scope_as = target }
}
}
scope:target = {
# We need to check the any's here to avoid +0s if there's no valid chars.
if = {
limit = {
any_courtier = { is_valid_agent_standard_trigger = yes }
}
add = {
value = 3
multiply = {
value = 0
every_courtier = {
limit = { is_valid_agent_standard_trigger = yes }
add = 1
}
max = 5
}
desc = scheme_odds.agents.target.number_of_valid_courtiers_agents
}
}
if = {
limit = {
any_vassal = { is_valid_agent_standard_trigger = yes }
}
add = {
value = 2
multiply = {
value = 0
every_vassal = {
limit = { is_valid_agent_standard_trigger = yes }
add = 1
}
max = 5
}
desc = scheme_odds.agents.target.number_of_valid_vassal_agents
}
}
}
}
hostile_scheme_base_odds_prediction_target_is_title_value = {
if = {
limit = { # Target is a landed title
exists = scope:target.holder
}
scope:target ?= {
holder = { save_temporary_scope_as = temp_target }
}
}
else_if = { # Title is a province
limit = {
exists = scope:target.province_owner
}
scope:target ?= {
province_owner = { save_temporary_scope_as = temp_target }
}
}
else_if = { #
limit = {
scope:target = {
any_de_jure_top_liege = {
exists = this
save_temporary_scope_as = de_jure_liege
}
}
}
scope:de_jure_liege = {
save_temporary_scope_as = temp_target
}
}
add = hostile_scheme_base_odds_prediction_guts_value
}
hostile_scheme_base_odds_prediction_target_is_char_value = {
scope:target ?= { save_temporary_scope_as = temp_target }
add = hostile_scheme_base_odds_prediction_guts_value
}
hostile_scheme_base_odds_prediction_guts_value = {
if = {
limit = {
exists = scope:temp_target.primary_title
scope:temp_target.primary_title.tier = tier_empire
}
add = {
value = -40
desc = scheme_odds.target.tier
}
}
else_if = {
limit = {
exists = scope:temp_target.primary_title
scope:temp_target.primary_title.tier = tier_kingdom
}
add = {
value = -30
desc = scheme_odds.target.tier
}
}
else_if = {
limit = {
exists = scope:temp_target.primary_title
scope:temp_target.primary_title.tier = tier_duchy
}
add = {
value = -20
desc = scheme_odds.target.tier
}
}
if = { # Minor Lifestyle Perk protection for Courtiers
limit = {
scope:temp_target = {
is_alive = yes
is_ruler = no
exists = court_owner
court_owner = {
has_perk = prepared_for_anything_perk
}
NOT = { court_owner = scope:owner }
NOT = { has_perk = prepared_for_anything_perk }
}
}
add = {
value = 0
desc = scheme_odds.target.court_owner_has_prepared_for_anything_perk
subtract = prepared_for_anything_perk_secondary_percentage
}
}
if = {
limit = { # Bonus for murdering Pool characters, as you can't have agents against them
scope:temp_target = {
is_pool_character = yes
NOT = { intrigue >= very_high_skill_rating }
}
}
add = {
value = 25
desc = scheme_odds.target.is_pool_char
}
}
if = { # FP3 legacy track bonus for murdering dynasty members
limit = {
scope:temp_target = {
exists = dynasty
exists = scope:owner.dynasty
dynasty = scope:owner.dynasty
dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_2 }
}
}
add = {
value = 10
desc = scheme_odds.owner.dynasty_legacy_kinslaying_bonus_from_fp3_khvarenah_legacy_2
}
}
if = { # Essentially the Base
limit = {
scope:owner = {
exists = scope:temp_target.cp:councillor_spymaster
scope:temp_target.cp:councillor_spymaster = this
}
}
add = {
value = 75
desc = scheme_odds.owner.is_target_spymaster
}
}
if = {
limit = {
scope:temp_target = {
is_landed_or_landless_administrative = no
}
scope:owner = {
exists = scope:temp_target.liege.cp:councillor_spymaster
scope:temp_target.liege.cp:councillor_spymaster = this
}
}
add = {
value = 75
desc = scheme_odds.owner.is_target_liege_spymaster
}
}
if = {
limit = {
scope:temp_target = {
is_landed_or_landless_administrative = no
}
scope:owner = {
exists = scope:temp_target.host.cp:councillor_spymaster
scope:temp_target.host.cp:councillor_spymaster = this
}
}
add = {
value = 75
desc = scheme_odds.owner.is_target_host_spymaster
}
}
if = {
limit = {
scope:owner = {
has_relation_guardian = scope:temp_target
}
}
add = {
value = 75
desc = scheme_odds.owner.relation.owner_is_guardian_of_target
}
}
if = {
limit = {
scope:owner = { is_diarch_of_target = scope:temp_target }
}
add = {
value = 50
desc = scheme_odds.owner.relation.owner_is_diarch_of_target
}
}
if = {
limit = {
scope:temp_target = {
is_ruler = no
}
exists = scope:temp_target.liege
scope:temp_target.liege = scope:owner
}
add = {
value = 25
desc = scheme_odds.owner.relation.owner_is_liege_of_target
}
}
if = {
limit = {
scope:owner = {
is_councillor_of = scope:temp_target
}
}
add = {
value = 15
desc = scheme_odds.owner.relation.owner_is_councillor_of_target
}
}
if = {
limit = {
scope:owner = {
has_relation_lover = scope:temp_target
}
}
add = {
value = 15
desc = scheme_odds.owner.relation.owner_is_lover_of_target
}
}
if = {
limit = {
scope:owner = {
is_spouse_of = scope:temp_target
}
}
add = {
value = 10
desc = scheme_odds.owner.relation.owner_is_spouse_of_target
}
}
if = {
limit = {
scope:owner = {
is_consort_of = scope:temp_target
}
}
add = {
value = 5
desc = scheme_odds.owner.relation.owner_is_consort_of_target
}
}
if = {
limit = {
scope:owner = {
is_close_family_of = scope:temp_target
}
}
add = {
value = 5
desc = scheme_odds.owner.relation.owner_is_close_family_of_target
}
}
# Vengeful Bonus
if = {
limit = {
scope:owner = {
has_trait = vengeful
OR = {
has_relation_rival = scope:temp_target
has_relation_nemesis = scope:temp_target
}
}
}
add = {
value = vengeful_scheme_success_chance_modifier
desc = scheme_odds.trait.owner.vengeful
}
}
# Paranoid Malus
if = {
limit = {
scope:temp_target ?= {
has_trait = paranoid
OR = {
has_relation_rival = scope:temp_target
has_relation_nemesis = scope:temp_target
}
}
}
add = {
value = -20
desc = scheme_odds.trait.target.paranoid
}
}
if = {
limit = {
scope:owner = {
culture = {
has_cultural_parameter = hostile_action_vs_rival_bonuses
}
OR = {
has_relation_rival = scope:temp_target
has_relation_nemesis = scope:temp_target
}
}
}
add = {
value = 15
desc = scheme_odds.culture.owner.hostile_scheme_bonuses_vs_rivals
}
}
if = {
limit = {# Culture Bonus
scope:owner = {
culture = {
has_cultural_parameter = hostile_scheme_success_chance_vs_spouse_penalty
}
is_spouse_of = scope:temp_target
}
}
add = {
value = -50
desc = scheme_odds.culture.owner.hostile_scheme_maluses_vs_spouse
}
}
# Difficulty
if = {
limit = {
has_game_rule = easy_difficulty
scope:owner = {
is_ai = yes
}
scope:temp_target = {
is_ai = no
}
}
add = {
value = -25
desc = scheme_odds.game_difficulty.easy
}
}
if = {
limit = {
has_game_rule = very_easy_difficulty
scope:owner = {
is_ai = yes
}
scope:temp_target = {
is_ai = no
}
}
add = {
value = -75
desc = scheme_odds.game_difficult.very_easy
}
}
# Struggle
if = {
limit = {
scope:owner = {
any_character_struggle = {
involvement = involved
has_struggle_phase_parameter = struggle_agents_less_likely_to_join_schemes
is_secondary_character_involvement_involved_trigger = {
CHAR = scope:temp_target
}
}
}
}
add = {
value = -25
desc = scheme_odds.struggle.owner.agents_less_likely_to_join_due_to_struggle_phase
}
}
## court_events.3060
if = {
limit = {
scope:owner = { has_character_modifier = spies_behind_every_corner_modifier }
}
add = {
value = 25
desc = scheme_odds.owner.spies_behind_every_corner_modifier
}
}
if = {
limit = {
scope:temp_target = { has_character_modifier = spies_behind_every_corner_modifier }
}
add = {
value = 25
desc = scheme_odds.target.spies_behind_every_corner_modifier
}
}
}
odds_skill_contribution_diplomacy_value = {
add = {
value = scope:owner.diplomacy
desc = scheme_odds.diplomacy.owner
}
scope:target ?= {
add = {
value = scope:target.diplomacy
desc = scheme_odds.diplomacy.target
multiply = -0.5
}
}
}
odds_skill_contribution_martial_value = {
add = {
value = scope:owner.martial
desc = scheme_odds.martial.owner
}
scope:target ?= {
add = {
value = scope:target.martial
desc = scheme_odds.martial.target
multiply = -0.5
}
}
}
odds_skill_contribution_stewardship_value = {
add = {
value = scope:owner.stewardship
desc = scheme_odds.stewardship.owner
}
scope:target ?= {
add = {
value = scope:target.stewardship
desc = scheme_odds.stewardship.target
multiply = -0.5
}
}
}
odds_skill_contribution_intrigue_value = {
add = {
value = scope:owner.intrigue
desc = scheme_odds.intrigue.owner
}
scope:target ?= {
add = {
value = scope:target.intrigue
desc = scheme_odds.intrigue.target
multiply = -0.5
}
}
}
odds_skill_contribution_learning_value = {
add = {
value = scope:owner.learning
desc = scheme_odds.learning.owner
}
scope:target ?= {
add = {
value = scope:target.learning
desc = scheme_odds.learning.target
multiply = -0.5
}
}
}
odds_skill_contribution_prowess_value = {
add = {
value = scope:owner.prowess
desc = scheme_odds.prowess.owner
}
scope:target ?= {
add = {
value = scope:target.prowess
desc = scheme_odds.prowess.target
multiply = -0.5
}
}
}
odds_skill_contribution_learning_target_is_title_value = {
add = {
value = scope:owner.learning
desc = scheme_odds.learning.owner
}
scope:target ?= {
add = {
value = scope:target.holder.learning
desc = scheme_odds.learning.target
multiply = -0.5
}
}
}
odds_sway_scheme_misc_value = {
add = {
value = 30
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:owner = { knows_language_of_culture = scope:target.culture }
}
add = 4
}
if = {
limit = {
scope:owner = { has_trait = diplomat }
}
add = 2
}
if = {
limit = {
scope:owner = { is_adult = no }
}
add = -6
}
if = {
limit = {
scope:target = {
has_opinion_modifier = {
target = scope:owner
modifier = scheme_sway_opinion
value >= 25
}
}
}
add = -12
}
if = {
limit = {
NOT = { scope:target.top_liege = scope:owner.top_liege }
}
add = -16
}
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value >= 1
}
}
}
add = 6
}
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value <= -1
}
}
}
add = -14
}
if = {
limit = {
scope:target = {
is_theocratic_lessee = yes
}
scope:owner.piety_level < 0
}
add = -50
}
if = {
limit = {
scope:target = {
is_theocratic_lessee = yes
}
scope:owner.piety_level > 1
}
add = 12
}
if = {
limit = {
scope:target = {
faith = scope:owner.faith
faith = {
exists = religious_head
religious_head = {
this = scope:target
}
}
}
}
add = -50
}
}
}
odds_steal_back_artifact_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:owner = {
any_character_task_contract = {
has_task_contract_type = laamp_steal_artifact_contract
var:task_contract_target ?= scope:target
}
}
}
add = 14
}
if = {
limit = {
scope:owner = { has_character_modifier = hostile_schemes_distracted_modifier }
}
add = -6
}
}
}
odds_slander_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:target = {
faith = scope:owner.faith
faith = {
has_doctrine = doctrine_spiritual_head
}
faith = {
exists = religious_head
religious_head = {
this = scope:target
}
}
}
}
add = -26
}
if = {
limit = {
scope:target = {
exists = inspiration
inspiration = { exists = inspiration_sponsor}
}
}
add = -17
}
if = {
limit = {
scope:owner = { has_character_modifier = poet_for_diplo_schemes_modifier }
}
add = 11
}
if = {
limit = {
scope:owner = {
has_character_modifier = united_political_agents_modifier
is_vassal_of = scope:target
}
}
add = 13
}
}
}
odds_seize_realm_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:target = {
has_opinion_modifier = {
target = scope:owner
modifier = attempted_to_seize_my_realm_crime
}
}
}
add = -50
}
if = {
limit = {
scope:target.inspiration ?= { exists = inspiration_sponsor }
}
add = -22
}
if = {
limit = {
scope:target.faith = {
this = scope:owner.faith
has_doctrine = doctrine_spiritual_head
religious_head ?= scope:target
}
}
add = -50
}
if = {
limit = {
OR = {
scope:target = { is_at_war_with = scope:owner }
scope:target = {
is_playable_character = no
liege ?= { is_at_war_with = scope:owner }
}
scope:target = {
is_playable_character = yes
liege ?= { is_at_war_with = scope:owner }
}
}
}
add = -22
}
if = {
limit = {
scope:owner = {
has_character_modifier = tournament_tailor_mixup_scheme_modifier
exists = var:tailor_mixup_house
exists = scope:target.holder.house
var:tailor_mixup_house = scope:target.holder.house
}
}
add = 8
}
if = {
limit = {
scope:owner = {
any_scheme = {
scheme_type = murder
scheme_target_character = scope:target
has_scheme_modifier = feast_learnt_habits_modifier
}
}
}
add = 8
}
if = {
limit = {
scope:target = { has_character_modifier = fp3_struggle_caliph_super_suspicious_modifier }
}
add = -200
}
}
}
odds_seduce_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:owner = {
exists = var:wnight_seduce_memento_var
var:wnight_seduce_memento_var = scope:target
}
}
add = 14
}
if = {
limit = {
scope:owner = { knows_language_of_culture = scope:target.culture }
}
add = 4
}
if = {
limit = {
scope:owner = { has_perk = home_advantage_perk }
scope:target = {
OR = {
is_courtier_of = scope:owner
is_pool_guest_of = scope:owner
is_foreign_court_guest_of = scope:owner
}
}
}
add = home_advantage_perk_bonus
}
if = {
limit = {
scope:owner = { has_perk = smooth_operator_perk }
}
add = smooth_operator_perk_bonus
}
if = {
limit = {
scope:owner = {
exists = dynasty
dynasty = {
has_dynasty_perk = fp1_adventure_legacy_2
}
}
}
add = fp1_adventure_legacy_2_success_chance_seduction
}
if = {
limit = {
scope:owner = { has_trait = seducer }
}
add = 16
}
if = {
limit = {
OR = {
scope:owner = { has_trait = beauty_good_1 }
scope:owner = { has_trait = beauty_good_2 }
scope:owner = { has_trait = beauty_good_3 }
}
}
add = 12
}
if = {
limit = {
OR = {
scope:owner = { has_trait = physique_good_1 }
scope:owner = { has_trait = physique_good_2 }
scope:owner = { has_trait = physique_good_3 }
}
}
add = 11
}
if = {
limit = {
OR = {
scope:owner = { has_trait = beauty_bad_1 }
scope:owner = { has_trait = beauty_bad_2 }
scope:owner = { has_trait = beauty_bad_3 }
}
}
add = -21
}
if = {
limit = {
OR = {
scope:owner = { has_trait = great_pox }
scope:owner = { has_trait = lovers_pox }
scope:owner = { has_trait = early_great_pox }
}
}
add = -17
}
if = {
limit = {
scope:owner = {
NOR = {
is_attracted_to_gender_of = scope:target
has_perk = unshackled_lust_perk
}
}
}
add = -15
}
if = {
limit = {
scope:target = { has_trait = lifestyle_reveler }
}
add = 3
}
if = {
limit = {
scope:target = { has_trait = lustful }
}
add = 7
}
if = {
limit = {
scope:target = { has_trait = chaste }
}
add = -18
}
if = {
limit = {
scope:target = { has_trait = shy }
}
add = -7
}
if = {
limit = {
scope:owner = { is_consort_of = scope:target }
}
add = 14
}
if = {
limit = {
scope:target = {
is_married = yes
NOT = { is_consort_of = scope:owner }
ai_honor >= high_positive_ai_value
trait_is_shunned_or_criminal_in_faith_trigger = { TRAIT = adulterer FAITH = scope:target.faith GENDER_CHARACTER = scope:target }
}
}
add = -50
}
if = {
limit = {
scope:target = {
is_married = yes
NOT = { is_consort_of = scope:owner }
exists = primary_spouse
primary_spouse = { save_temporary_scope_as = target_spouse }
NOT = { might_cheat_on_partner_trigger = { PARTNER = scope:target_spouse }}
}
}
add = -100
}
if = {
limit = {
scope:owner = { NOT = { is_consort_of = scope:target } }
scope:target = {
is_married = yes
exists = primary_spouse
primary_spouse = { save_temporary_scope_as = target_spouse }
opinion = {
target = scope:target_spouse
value < low_negative_opinion
}
}
}
add = 18
}
if = {
limit = {
scope:target = {
faith = scope:owner.faith
faith = {
exists = religious_head
religious_head = {
this = scope:target
}
}
}
}
add = -50
}
if = {
limit = {
scope:target = {
relation_with_character_is_incestuous_in_my_or_lieges_faith_trigger = { CHARACTER = scope:owner }
}
scope:owner = { # The Subtle Desire Perk nullifies this
NOT = { has_perk = subtle_desire_perk }
}
}
add = -22
}
if = {
limit = {
scope:target = {
NOT = { is_consort_of = scope:owner }
is_close_or_extended_family_of = scope:owner
NOR = {
accepts_incest_with_trigger = { CHARACTER = scope:owner } #100% fine with incest with owner
scope:owner = { has_perk = subtle_desire_perk } # The Subtle Desire Perk nullifies this
guaranteed_under_20_incest_rejection_trigger = { # handled by hard block modifier
TARGET = scope:target
SEDUCER = scope:owner
}
}
}
}
add = -16
}
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value >= 1
}
}
}
add = 12
}
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value <= -1
}
}
}
add = -40
}
if = {
limit = {
scope:target = {
trait_compatibility = {
target = scope:owner
value >= medium_positive_trait_compatibility
}
}
}
add = 18
}
if = {
limit = {
scope:target = {
trait_compatibility = {
target = scope:owner
value <= medium_negative_trait_compatibility
}
}
}
add = -36
}
}
}
odds_promote_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
exists = scope:owner.dynasty
scope:owner.dynasty = {
has_dynasty_perk = kin_legacy_4
}
scope:target.dynasty = scope:owner.dynasty
}
add = kin_legacy_4_success_chance
}
if = {
limit = {
exists = scope:owner.house
exists = scope:target.house
scope:owner.culture = {
has_cultural_parameter = cultural_house_personal_scheme_success_chance
}
scope:target.house = scope:owner.house
}
add = cultural_house_personal_scheme_success_chance
}
if = {
limit = {
scope:owner = { has_character_modifier = poet_for_diplo_schemes_modifier }
}
add = 8
}
if = {
limit = {
scope:owner = {
has_variable_list = supporting_political_schemes
}
}
add = 7
}
}
}
odds_murder_scheme_misc_value = {
add = {
value = -17
desc = scheme_odds.misc_modifiers
if = {
limit = {
OR = {
scope:target = {
is_at_war_with = scope:owner
}
scope:target = {
is_playable_character = no
exists = liege
liege = {
is_at_war_with = scope:owner
}
}
scope:target = {
is_playable_character = yes
exists = liege
liege = {
is_at_war_with = scope:owner
}
}
}
}
add = -30
}
if = {
limit = {
scope:target = {
faith = scope:owner.faith
faith = {
has_doctrine = doctrine_spiritual_head
}
faith = {
exists = religious_head
religious_head = {
this = scope:target
}
}
}
}
add = -50
}
if = {
limit = {
scope:target = {
has_opinion_modifier = {
target = scope:owner
modifier = attempted_murder_me_crime
}
}
}
add = -50
}
if = {
limit = {
scope:target = {
has_perk = prepared_for_anything_perk
}
}
add = -26
}
if = {
limit = {
scope:target = {
has_character_modifier = fp3_struggle_caliph_super_suspicious_modifier
}
}
add = -18
}
if = {
limit = {
scope:target = {
has_trait = trusting
}
}
add = 18
}
}
}
odds_learn_language_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:owner.piety_level > 0
scope:owner.culture = {
has_cultural_parameter = language_success_chance_per_piety_level
}
}
add = 4
}
if = {
limit = {
exists = scope:owner.cp:councillor_court_chaplain
scope:owner.cp:councillor_court_chaplain.learning > 10
}
add = 3
}
if = {
limit = {
scope:owner.age < 30
}
add = 8
}
if = {
limit = {
scope:target.culture = {
has_same_culture_heritage = scope:owner.culture
}
}
add = 3
}
if = {
limit = {
scope:owner = {
has_perk = pedagogy_perk
}
}
add = 4
}
if = {
limit = {
scope:owner = {
has_trait = intellect_good_1
has_trait = intellect_good_2
has_trait = intellect_good_3
has_trait = stubborn
has_trait = ambitious
}
}
add = 4
}
}
}
odds_generate_claim_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
exists = scope:target.holder
scope:owner = {
faith = {
exists = religious_head
has_doctrine = doctrine_spiritual_head
religious_head = {
this = scope:target.holder
}
}
}
}
add = -50
}
if = {
limit = {
scope:owner = {
has_trait = deceitful
}
}
add = -18
}
if = {
limit = {
scope:owner = {
has_trait = honest
}
}
add = -16
}
if = {
limit = {
scope:target.holder ?= {
has_trait = trusting
}
}
add = 8
}
}
}
odds_foster_legitimacy_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:owner = {
has_trait = overseer
}
}
add = 8
}
if = {
limit = {
scope:owner = { has_character_modifier = poet_for_diplo_schemes_modifier }
}
add = 8
}
}
}
odds_fabricate_hook_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:owner = {
has_trait = deceitful
}
}
add = 8
}
if = {
limit = {
scope:target = {
OR = {
has_trait = trusting
has_trait = intellect_bad_1
has_trait = intellect_bad_2
has_trait = intellect_bad_3
has_trait = arrogant
has_trait = greedy
has_trait = craven
}
}
}
add = 8
}
if = {
limit = {
scope:target = {
OR = {
has_trait = fickle
has_trait = paranoid
has_trait = schemer
has_trait = intellect_good_3
has_trait = intellect_good_2
has_trait = intellect_good_1
}
}
}
add = -22
}
if = {
limit = {
scope:target = {
faith = scope:owner.faith
faith = {
has_doctrine = doctrine_spiritual_head
}
faith = {
exists = religious_head
religious_head = {
this = scope:target
}
}
}
}
add = -50
}
}
}
odds_ep3_teach_governor_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
add = {
value = scope:owner.age
add = {
value = scope:target.age
multiply = -1
}
}
if = {
limit = {
scope:owner = {
NOR = {
has_trait = governor
has_trait = lazy
has_trait = diligent
}
}
}
add = -11
}
if = {
limit = {
scope:target = {
trait_compatibility = {
target = scope:owner
value >= medium_positive_trait_compatibility
}
}
}
add = 9
}
if = {
limit = {
scope:target = {
trait_compatibility = {
target = scope:owner
value <= medium_negative_trait_compatibility
}
}
}
add = -18
}
}
}
odds_subsume_province_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:owner = {
any_sub_realm_county = {
NOT = { target_is_de_facto_liege_or_above = scope:owner.primary_title }
}
}
}
add = -9
}
if = {
limit = {
scope:owner.house = {
is_powerful_family = yes
is_dominant_family = no
}
}
add = 8
}
if = {
limit = {
scope:target.holder.house = {
is_powerful_family = yes
is_dominant_family = no
}
}
add = -16
}
add = {
value = scope:owner.influence_level
multiply = 2
}
add = {
value = scope:target.holder.influence_level
multiply = -4
}
if = {
limit = {
scope:target.holder.house = scope:owner.top_liege.house
}
add = -12
}
}
}
odds_raid_estate_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
add = {
value = scope:owner.influence_level
multiply = 2
}
add = {
value = scope:target.holder.influence_level
multiply = -4
}
if = {
limit = {
scope:target.holder.house = scope:owner.top_liege.house
}
add = -12
}
if = {
limit = {
scope:owner.house = {
is_powerful_family = yes
is_dominant_family = no
}
}
add = 8
}
if = {
limit = {
scope:target.holder.house = {
is_powerful_family = yes
is_dominant_family = no
}
}
add = -16
}
if = {
limit = {
scope:target.domicile = {
OR = {
has_domicile_building_or_higher = barracks_01
has_domicile_building_or_higher = guardhouse_01
has_domicile_building_or_higher = watchtower_01
has_domicile_building_or_higher = estate_main_02
}
}
}
add = -4
}
if = {
limit = {
scope:target.domicile = {
OR = {
has_domicile_building_or_higher = barracks_03
has_domicile_building_or_higher = guardhouse_03
has_domicile_building_or_higher = watchtower_03
has_domicile_building_or_higher = estate_main_04
}
}
}
add = -12
}
}
}
odds_prepare_fire_dromons_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
add = {
value = scope:owner.influence_level
multiply = 2
}
}
}
odds_ingratiate_family_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:target = {
trait_compatibility = {
target = scope:owner
value >= medium_positive_trait_compatibility
}
}
}
add = 6
}
if = {
limit = {
scope:target = {
trait_compatibility = {
target = scope:owner
value <= medium_negative_trait_compatibility
}
}
}
add = -12
}
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value >= 1
}
}
}
add = 8
}
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value <= -1
}
}
}
add = -14
}
if = {
limit = {
scope:owner.house = { is_dominant_family = yes }
}
add = 6
}
if = {
limit = {
scope:owner.dynasty = scope:target.dynasty
}
add = 8
}
}
}
odds_found_despotate_scheme_misc_value = {
add = {
value = -6
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:owner.house = {
is_powerful_family = yes
is_dominant_family = no
}
}
add = 6
}
if = {
limit = {
scope:owner.house = { is_dominant_family = yes }
}
add = 8
}
if = {
limit = {
scope:owner.top_liege.capital_county.kingdom ?= scope:target
}
add = -12
}
}
}
odds_diarch_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
add = {
value = scope:target.strife_opinion
multiply = 0.25
min = 5
max = 40
}
}
}
odds_depose_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:target = {
faith = scope:owner.faith
faith = {
has_doctrine = doctrine_spiritual_head
}
faith = {
exists = religious_head
religious_head = {
this = scope:target
}
}
}
}
add = -28
}
if = {
limit = {
scope:owner.house = { is_dominant_family = yes }
}
add = 8
}
}
}
odds_befriend_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:owner = {
knows_language_of_culture = scope:target.culture
}
}
add = 6
}
if = {
limit = {
scope:owner = {
OR = {
has_trait = education_diplomacy_1
has_trait = education_diplomacy_2
has_trait = education_diplomacy_3
has_trait = education_diplomacy_4
has_trait = education_diplomacy_5
}
}
}
add = 6
}
if = {
limit = {
scope:owner = {
OR = {
has_trait = diplomat
has_trait = august
has_trait = lifestyle_reveler
}
}
}
add = 12
}
if = {
limit = {
scope:owner = {
has_trait = shy
has_trait = callous
}
}
add = -8
}
if = {
limit = {
scope:target = {
has_trait = shy
has_trait = callous
has_trait = paranoid
}
}
add = -12
}
if = {
limit = {
scope:target = {
trait_compatibility = {
target = scope:owner
value >= medium_positive_trait_compatibility
}
}
}
add = 14
}
if = {
limit = {
scope:target = {
trait_compatibility = {
target = scope:owner
value <= medium_negative_trait_compatibility
}
}
}
add = -26
}
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value >= 1
}
}
}
add = 14
}
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value <= -1
}
}
}
add = -16
}
if = {
limit = {
scope:owner = { has_relation_rival = scope:target }
}
add = -24
}
}
}
odds_abduct_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value >= 1
}
}
}
add = 14
}
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value <= -1
}
}
}
add = -16
}
if = { # Foreign Rulers are very hard to kidnap
limit = {
scope:target = {
OR = {
is_ruler = yes
is_foreign_court_or_pool_guest = no
}
NOT = {
scope:target.top_liege = scope:owner.top_liege
}
}
}
add = -25
}
if = { # Rulers are harder to kidnap
limit = {
scope:target = {
is_ruler = yes
scope:target.top_liege = scope:owner.top_liege
}
}
add = -10
}
}
}
odds_romance_scheme_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
# Thicker Than Water Perk
if = {
limit = {
scope:owner = {
has_perk = thicker_than_water_perk
}
scope:target = {
is_close_or_extended_family_of = scope:owner
}
}
add = 5
}
if = { # Tradition
limit = {
scope:owner = {
has_trait = poet
culture = {
has_cultural_parameter = poet_trait_romance_bonuses
}
}
}
add = 8
}
# You are a Courteous Knight
if = {
limit = {
scope:owner = {
has_character_modifier = ep3_courteous_knight_modifier
}
}
add = 5
}
if = {
limit = {
scope:owner = { has_perk = home_advantage_perk }
scope:target = {
OR = {
is_courtier_of = scope:owner
is_pool_guest_of = scope:owner
is_foreign_court_guest_of = scope:owner
}
}
}
add = 10
}
if = {
limit = {
scope:owner = { has_perk = courtship_perk }
}
add = 5
}
if = {
limit = {
scope:owner = {
is_spouse_of = scope:target
}
scope:owner.culture = {
has_cultural_parameter = romance_scheme_bonus_vs_spouse
}
}
add = 5
}
if = {
limit = {
scope:owner = { knows_language_of_culture = scope:target.culture }
}
add = 4
}
if = {
limit = {
scope:owner.dynasty ?= {
has_dynasty_perk = kin_legacy_4
}
scope:target.dynasty ?= scope:owner.dynasty
}
add = 5
}
if = {
limit = {
exists = scope:owner.house
exists = scope:target.house
scope:owner.culture = {
has_cultural_parameter = cultural_house_personal_scheme_success_chance
}
scope:target.house = scope:owner.house
}
add = 5
}
if = {
limit = {
scope:owner = { has_trait = gallant }
}
add = 16
}
if = {
limit = {
OR = {
scope:owner = { has_trait = beauty_good_1 }
scope:owner = { has_trait = beauty_good_2 }
scope:owner = { has_trait = beauty_good_3 }
}
}
add = 12
}
if = {
limit = {
OR = {
scope:owner = { has_trait = physique_good_1 }
scope:owner = { has_trait = physique_good_2 }
scope:owner = { has_trait = physique_good_3 }
}
}
add = 11
}
if = {
limit = {
OR = {
scope:owner = { has_trait = beauty_bad_1 }
scope:owner = { has_trait = beauty_bad_2 }
scope:owner = { has_trait = beauty_bad_3 }
}
}
add = -21
}
if = {
limit = {
OR = {
scope:owner = { has_trait = great_pox }
scope:owner = { has_trait = lovers_pox }
scope:owner = { has_trait = early_great_pox }
}
}
add = -17
}
if = {
limit = {
scope:owner = {
NOR = {
is_attracted_to_gender_of = scope:target
has_perk = unshackled_lust_perk
}
}
}
add = -15
}
if = {
limit = {
scope:target = {
relation_with_character_is_incestuous_in_my_or_lieges_faith_trigger = { CHARACTER = scope:owner }
}
scope:owner = { # The Subtle Desire Perk nullifies this
NOT = { has_perk = subtle_desire_perk }
}
}
add = -22
}
if = {
limit = {
scope:target = {
NOT = { is_consort_of = scope:owner }
is_close_or_extended_family_of = scope:owner
NOR = {
accepts_incest_with_trigger = { CHARACTER = scope:owner } #100% fine with incest with owner
scope:owner = { has_perk = subtle_desire_perk } # The Subtle Desire Perk nullifies this
guaranteed_under_20_incest_rejection_trigger = { # handled by hard block modifier
TARGET = scope:target
SEDUCER = scope:owner
}
}
}
}
add = -16
}
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value >= 1
}
}
}
add = 12
}
if = {
limit = {
scope:target = {
personal_scheme_success_compare_target_liege_tier_trigger = no
}
scope:owner = {
tier_difference = {
target = scope:target
value <= -1
}
}
}
add = -40
}
if = {
limit = {
scope:target = {
trait_compatibility = {
target = scope:owner
value >= medium_positive_trait_compatibility
}
}
}
add = 18
}
if = {
limit = {
scope:target = {
trait_compatibility = {
target = scope:owner
value <= medium_negative_trait_compatibility
}
}
}
add = -36
}
}
}
odds_convert_to_witchcraft_misc_value = {
add = {
value = 0
desc = scheme_odds.misc_modifiers
add = {
value = {
scope:target = { value = "opinion(scope:owner)" }
multiply = 0.2
floor = yes
}
}
if = {
limit = {
scope:owner = {
exists = house
house = { has_house_modifier = witch_coven }
}
}
add = 4
}
add = {
value = scope:target.ai_zeal
multiply = -1
max = 50
min = -50
}
#Attraction
if = {
limit = {
scope:target = { is_attracted_to_gender_of = scope:owner }
}
add = 5
}
#Target traits
if = {
limit = {
scope:target = {
has_trait = zealous
NOR = {
faith = {
trait_is_virtue = witch
has_doctrine_parameter = witchcraft_accepted
}
}
}
}
add = -10
}
if = {
limit = {
scope:target = {
has_trait = devoted
NOR = {
faith = {
trait_is_virtue = witch
has_doctrine_parameter = witchcraft_accepted
}
}
}
}
add = -6
}
if = {
limit = {
scope:target = {
has_trait = order_member
NOR = {
faith = {
trait_is_virtue = witch
has_doctrine_parameter = witchcraft_accepted
}
}
}
}
add = -6
}
if = {
limit = {
scope:target = {
OR = {
has_trait = craven
has_trait = paranoid
}
}
}
add = -8
}
if = {
limit = {
scope:target = {
OR = {
has_trait = lifestyle_reveler
has_trait = seducer
has_trait = lifestyle_mystic
has_trait = lifestyle_herbalist
has_trait = lustful
has_trait = deceitful
has_trait = ambitious
has_trait = trusting
has_trait = excommunicated
}
}
}
add = 8
}
if = {
limit = {
scope:target = { has_intrigue_lifestyle_trait_trigger = yes }
}
add = 4
}
if = {
limit = {
scope:target = {
has_trait = cynical
NOT = {
faith = { trait_is_virtue = witch }
}
}
}
add = 2
}
# House Personal Scheme Success Chance on Cultural Parameter
if = {
limit = {
exists = scope:owner.house
exists = scope:target.house
scope:owner.culture = {
has_cultural_parameter = cultural_house_personal_scheme_success_chance
}
scope:target.house = scope:owner.house
}
add = 5
}
# Modifiers
# house_head_request_interaction
if = {
limit = {
scope:owner = {
has_variable_list = supporting_personal_schemes
}
}
add = 2
}
if = {
limit = {
scope:owner = { has_character_modifier = personal_schemes_distracted_modifier }
}
add = -2
}
# Estate
if = {
limit = {
scope:owner.domicile ?= {
has_domicile_parameter = increased_success_personal_schemes_1
}
}
add = 2
}
if = {
limit = {
scope:owner.domicile ?= {
has_domicile_parameter = increased_success_personal_schemes_2
}
}
add = 4
}
if = {
limit = {
scope:owner.domicile ?= {
has_domicile_parameter = increased_success_personal_schemes_3
}
}
add = 6
}
}
}