N3OW/common/task_contracts/laamp_base_contracts.txt

8316 lines
248 KiB
Text
Raw Permalink Normal View History

2026-02-25 20:46:16 +00:00
##################################################
# INFO
# For laamp contracts that are broadly applicable: that is, they should be able to trigger virtually anywhere and with a minimum of triggers.
# The idea is that any given laamp led by a character skilled in any one thing should always be viable — maybe through crime, maybe by demeaning themselves, but they should always have some contracts around to work with.
##################################################
##################################################
# GROUPS (for populate_task_contracts_for_area)
#
# laamp_contracts_criminal_group
# laamp_contracts_diplomacy_group
# laamp_contracts_hireling_group
# laamp_contracts_hunting_group
# laamp_contracts_intrigue_group
# laamp_contracts_learning_group
# laamp_contracts_martial_group
# laamp_contracts_stewardship_group
# laamp_contracts_justicar_group
#
##################################################
# #Diplo Contracts
# laamp_base_0001 Regale court with stories
# laamp_base_0011 Improve ruler's reputation
# laamp_base_0021 Hobnob with local ruler
# laamp_base_0031 Paid Mediator
# laamp_base_0041 Confidence trickster
#
# #Martial Contracts
# laamp_base_1001 Hunt criminals
# laamp_base_1011 Act as hired muscle
# laamp_base_1021 Help train local MaA
# laamp_base_1031 Garrison service
# laamp_base_1041 Ambush travellers
#
# #Stewardship Contracts
# laamp_base_2001 Collect taxes for a third party
# laamp_base_2011 Perform a census
# laamp_base_2021 Help construct a building
# laamp_base_2031 Settle an administrative boundary dispute
# laamp_base_2041 Collect fake taxes
#
# #Intrigue Contracts
# laamp_base_3001 Provide intelligence from your trips
# laamp_base_3011 Murder a character's rival
# laamp_base_3021 Abduct a character's rival
# laamp_base_3031 Attack the property of a character's rival
# laamp_base_3041 Heist from a ruler's treasury
#
# #Learning Contracts
# laamp_base_4001 Transcribe texts for a learned ruler
# laamp_base_4011 Help settle theological arguments
# laamp_base_4021 Create a work of learning for a ruler
# laamp_base_4031 Solicit Charity
# laamp_base_4041 Sell bogus relics
# laamp_base_4100 Act as a tutor for ruler's child
#
# #Prowess Contracts
# laamp_base_5001 Hunt in the wilds
# laamp_base_5011 Guard merchant properties
# laamp_base_5021 Guard a local ruler at a minor event
# laamp_base_5031 Go rustling
# laamp_base_5041 Go poaching
#
# #Justicar Contracts
# laamp_base_6001 Protect the innocent
# laamp_base_6011 Rescue a Fair Non-Combatant Gender
# laamp_base_6021 Participate in a Chivalry Play
# laamp_base_6031 Do a Pass d'Armes
##################################################
##################################################
# DIPLO CONTRACTS
# Regale court with stories
laamp_base_0001 = {
group = laamp_contracts_diplomacy_group
icon = "gfx/interface/icons/scheme_types/diplomacy.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_diplomacy_value
add = laamp_contracts_weight_up_diplomacy_slight_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that like to hear from strangers.
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = trusting }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = eccentric }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that don't have time for riff-raff.
if = {
limit = { has_trait = arrogant }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
# Specific flavour triggers.
laamp_task_contract_employer_not_antisocial_trigger = yes
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_0001_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.0001
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_half_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Critical Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_critical_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Improve ruler's reputation
laamp_base_0011 = {
group = laamp_contracts_diplomacy_group
icon = "gfx/interface/icons/scheme_types/diplomacy.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_diplomacy_value
add = laamp_contracts_weight_up_diplomacy_slight_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits most likely to suffer from reputational damage generally.
if = {
limit = { has_trait = shy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = callous }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = sadistic }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that don't acknowledge fault.
if = {
limit = { has_trait = arrogant }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
# Specific flavour triggers.
scope:employer = {
# Doesn't feel right coming from anyone too famous, even if they're currently hated.
prestige_level <= high_prestige_level
OR = {
# Anyone who could use a little more political capital.
prestige <= 500
# Or who's got a bit of a... reputation.
strife_opinion >= 1
tyranny >= 1
# And any important unlikeable characters in their realm that indicate they might be a bit of a prick.
any_relation = {
type = rival
liege ?= prev
}
}
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_0011_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.0011
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Critical Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Hobnob with local ruler
laamp_base_0021 = {
group = laamp_contracts_diplomacy_group
icon = "gfx/interface/icons/scheme_types/diplomacy.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_diplomacy_value
add = laamp_contracts_weight_up_diplomacy_slight_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Actively sociable traits.
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = trusting }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = humble }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that don't have time for riff-raff.
if = {
limit = { has_trait = arrogant }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
# Specific flavour triggers.
laamp_task_contract_employer_not_antisocial_trigger = yes
scope:employer = {
NOR = {
any_relation = { type = friend }
any_relation = { type = lover }
}
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_0021_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.0021
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_half_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_half_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Critical Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_critical_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Paid Mediator
laamp_base_0031 = {
group = laamp_contracts_diplomacy_group
icon = "gfx/interface/icons/scheme_types/diplomacy.dds"
travel = no
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_diplomacy_value
add = laamp_contracts_weight_up_diplomacy_slight_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that like to outsource.
if = {
limit = { has_trait = shy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = lazy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = arbitrary }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that prefer a hand-on approach.
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = diligent }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = just }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = patient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = greedy }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
# Specific flavour triggers.
scope:employer = {
AND = {
highest_held_title_tier >= tier_county
sub_realm_size >= 3
}
NOR = {
has_trait = arrogant
has_trait = arbitrary
}
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Then we start the travel.
task_contract_taker ?= {
trigger_event = laamp_base_contract_schemes.0034
set_variable = {
name = laamp_base_0031_tally
value = 0
}
}
}
on_completed = {
# Clean up our variables & such.
task_contract_taker = {
remove_variable ?= laamp_base_0031_tally
remove_character_flag = laamp_base_0031_contract_used_diplomacy
remove_character_flag = laamp_base_0031_contract_used_martial
remove_character_flag = laamp_base_0031_contract_used_stewardship
remove_character_flag = laamp_base_0031_contract_used_intrigue
remove_character_flag = laamp_base_0031_contract_used_learning
remove_character_flag = laamp_base_0031_contract_used_prowess
}
}
on_invalidated = {
# Clean up our variables & such.
task_contract_taker = {
remove_variable ?= laamp_base_0031_tally
remove_character_flag = laamp_base_0031_contract_used_diplomacy
remove_character_flag = laamp_base_0031_contract_used_martial
remove_character_flag = laamp_base_0031_contract_used_stewardship
remove_character_flag = laamp_base_0031_contract_used_intrigue
remove_character_flag = laamp_base_0031_contract_used_learning
remove_character_flag = laamp_base_0031_contract_used_prowess
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_critical_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Critical Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Confidence trickster
laamp_base_0041 = {
group = laamp_contracts_criminal_group
icon = "gfx/interface/icons/scheme_types/diplomacy.dds"
travel = yes
is_criminal = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_diplomacy_value
add = laamp_contracts_weight_up_diplomacy_slight_value
add = laamp_contracts_weight_up_criminal_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Credulous traits.
if = {
limit = { has_trait = trusting }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = honest }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = eccentric }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that are naturally suspicious.
if = {
limit = { has_trait = cynical }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = deceitful }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
## Paranoid is already excluded from even vaguely triggering this.
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
# Specific flavour triggers.
scope:employer = {
NOT = { has_trait = paranoid }
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
root.task_contract_taker = {
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_0041_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.0041
}
}
on_create = {
scope:contract = {
set_variable = {
name = animation
value = 0
}
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_crime_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Criminal Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = 0
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = trickster
XP_MAX = gallowsbait_xp_medium_gain
XP_MIN = gallowsbait_xp_medium_gain
}
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_value
PIETY = 0
PROVISIONS = 0
OPINION = task_contract_opinion_crime_failure_value
OPINION_TYPE = attempted_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = trickster
XP_MAX = gallowsbait_xp_minor_gain
XP_MIN = gallowsbait_xp_minor_gain
}
}
}
}
}
}
##################################################
# MARTIAL & PROWESS CONTRACTS
# Hunt criminals
laamp_base_1001 = {
group = laamp_contracts_justicar_group
icon = "gfx/interface/icons/scheme_types/war.dds"
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_martial_value
add = laamp_contracts_weight_up_martial_slight_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that are happy to outsource or care largely for results.
if = {
limit = { has_trait = impatient }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = lazy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = just }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = callous }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that prefer a personal touch.
if = {
limit = { has_trait = patient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = diligent }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = sadistic }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
# Specific flavour triggers.
## Won't resort to this.
laamp_task_contract_employer_would_resort_to_violence_trigger = yes
## Effects require a capital county.
scope:employer.capital_county ?= {
# Aaaand we need to have at least three duchies in our de jure kingdom.
kingdom = {
any_in_de_jure_hierarchy = {
continue = { tier >= tier_duchy }
tier = tier_duchy
count >= 3
}
}
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
# Specific flavour triggers.
## Effects require a capital county.
exists = root.task_contract_employer.capital_county
## Make sure that if we've got our recidivist, then they've not died at any time other than when they're _specifically_ allowed to.
OR = {
NOT = { has_variable = recidivist }
var:recidivist ?= {
OR = {
is_alive = yes
root = { has_variable = duel_engaged }
}
is_imprisoned = no
}
}
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Then we start the travel.
task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.1004 }
# Track our score/encounters.
increment_variable_effect = {
VAR = encounters_tally
VAL = 0
}
# & numbers of chars checked for loc.
increment_variable_effect = {
VAR = wins_tally
VAL = 0
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update Knight-Errant score.
task_contract_taker = {
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_major_gain
XP_MIN = knight_errant_xp_major_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
failure_recruitment = {
positive = no
visible = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_critical_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = bandit
XP_MAX = gallowsbait_xp_medium_gain
XP_MIN = gallowsbait_xp_medium_gain
}
}
}
}
}
}
# Act as hired muscle
laamp_base_1011 = {
group = laamp_contracts_hireling_group
icon = "gfx/interface/icons/scheme_types/war.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_martial_value
add = laamp_contracts_weight_up_martial_slight_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that want to be effective but subtle.
if = {
limit = { has_trait = deceitful }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = patient }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = arbitrary }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that feel this type of manipulation is beneath them
if = {
limit = { has_trait = impatient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = just }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
## Plus just some where the narrative would feel weird.
if = {
limit = { has_trait = callous }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = sadistic }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
# Specific flavour triggers.
## Won't resort to this.
laamp_task_contract_employer_would_resort_to_violence_trigger = yes
laamp_task_contract_employer_would_resort_to_deceit_trigger = yes
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_1011_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.1011
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = var:gold_success_standard
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update Knight-Errant score.
task_contract_taker = {
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_medium_gain
XP_MIN = knight_errant_xp_medium_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Critical Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update Knight-Errant score.
task_contract_taker = {
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_major_gain
XP_MIN = knight_errant_xp_major_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Ambush travellers
laamp_base_1041 = {
group = laamp_contracts_criminal_group
icon = "gfx/interface/icons/scheme_types/war.dds"
is_criminal = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_martial_value
add = laamp_contracts_weight_up_martial_slight_value
add = laamp_contracts_weight_up_criminal_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that don't mind telegraphing weakness.
if = {
limit = { has_trait = trusting }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = honest }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that wouldn't just admit something was wrong.
if = {
limit = { has_trait = deceitful }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = arrogant }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
# Specific flavour triggers.
laamp_task_contract_employer_not_antisocial_trigger = yes
# Must be at least a count.
scope:employer.highest_held_title_tier >= tier_county
# Plus make sure we'd have a valid destination to even grab.
scope:employer.capital_county = {
# Counts travel two duchies over.
trigger_if = {
limit = { scope:employer.highest_held_title_tier = tier_county }
duchy = {
any_title_to_title_neighboring_duchy = {
any_title_to_title_neighboring_duchy = {
this != scope:employer.capital_county.duchy
}
}
}
}
# Dukes travel a kingdom over.
trigger_else_if = {
limit = { scope:employer.highest_held_title_tier = tier_duchy }
kingdom = {
any_title_to_title_neighboring_kingdom = { exists = this }
}
}
# Kings and emperors travel an empire over.
trigger_else = {
empire = {
any_title_to_title_neighboring_empire = { exists = this }
}
}
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
root.task_contract_taker = {
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Then we start the travel.
task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.1044 }
# Plus, set up some variables for us.
## Encounters list.
increment_variable_effect = {
VAR = encounters_tally
VAL = 0
}
increment_variable_effect = {
VAR = encounters_max
VAL = 0
}
## Our actual haul.
increment_variable_effect = {
VAR = haul_actual
VAL = 0
}
## Path length + length:event ratio — we'll use these to determine how quickly we should get the events.
increment_variable_effect = {
VAR = path_length
VAL = 0
}
increment_variable_effect = {
VAR = event_ratio
VAL = 0
}
increment_variable_effect = {
VAR = event_ratio_tracker
VAL = 0
}
}
on_create = {
scope:contract = {
set_variable = {
name = animation
value = 0
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Criminal Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
if = {
limit = {
NOT = { exists = scope:suppress_gold_warning }
}
custom_tooltip = laamp_base_1041.tt.gold_rewards_depend_on_travellers
}
else = { custom_tooltip = laamp_base_1041.tt.haul_actual }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = 0
PIETY = 0
PROVISIONS = 0
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = bandit
XP_MAX = gallowsbait_xp_medium_gain
XP_MIN = gallowsbait_xp_medium_gain
}
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_value
PIETY = 0
PROVISIONS = 0
OPINION = task_contract_opinion_crime_failure_value
OPINION_TYPE = attempted_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = bandit
XP_MAX = gallowsbait_xp_minor_gain
XP_MIN = gallowsbait_xp_minor_gain
}
}
}
}
}
}
# Go rustling
laamp_base_5031 = {
group = laamp_contracts_criminal_group
icon = "gfx/interface/icons/scheme_types/war.dds"
is_criminal = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_prowess_value
add = laamp_contracts_weight_up_criminal_value
# Employer weights.
scope:employer = {
add = laamp_contract_would_signpost_own_prosperity_value
multiply = task_contract_weight_by_tier_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
# Specific flavour triggers.
scope:employer.sub_realm_size >= 2
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
# Specific flavour triggers.
root.task_contract_employer.sub_realm_size >= 2
root.task_contract_taker = {
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
}
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Then we start the travel.
task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.5034 }
# Plus, set up some variables for us.
## Progress tallies.
increment_variable_effect = {
VAR = encounter_tally
VAL = 0
}
increment_variable_effect = {
VAR = encounter_max
VAL = 0
}
increment_variable_effect = {
VAR = wins_tally
VAL = 0
}
}
on_create = {
scope:contract = {
set_variable = {
name = animation
value = 0
}
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_crime_value
}
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_critical_crime_value
}
}
}
# Rewards
task_contract_reward = {
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Criminal Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Critical Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = poacher
XP_MAX = gallowsbait_xp_major_gain
XP_MIN = gallowsbait_xp_major_gain
}
}
}
}
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Criminal Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = poacher
XP_MIN = gallowsbait_xp_medium_gain
XP_MAX = gallowsbait_xp_medium_gain
}
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_crime_failure_value
OPINION_TYPE = attempted_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = poacher
XP_MIN = gallowsbait_xp_minor_gain
XP_MAX = gallowsbait_xp_minor_gain
}
}
}
}
}
}
# Mug people.
laamp_base_5051 = {
group = laamp_contracts_criminal_group
icon = "gfx/interface/icons/scheme_types/war.dds"
travel = yes
is_criminal = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_prowess_value
add = laamp_contracts_weight_up_criminal_value
# Employer weights.
scope:employer = { multiply = task_contract_weight_by_tier_value }
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
scope:employer.highest_held_title_tier >= tier_county
NOT = { scope:employer = { government_has_flag = government_is_herder } }
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
scope:employer = { is_landed = yes }
NOT = { scope:employer = { government_has_flag = government_is_herder } }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
root.task_contract_taker = {
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
}
task_contract_employer = { is_landed = yes }
NOT = { scope:employer = { government_has_flag = government_is_herder } }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
NOT = { scope:employer = { government_has_flag = government_is_herder } }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_5051_contract_scheme
contract = root
target_character = scope:task_contract.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.5051
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_crime_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_medium_gain
XP_MIN = gallowsbait_xp_medium_gain
}
bandit_king_maa_spawn_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_crime_failure_value
OPINION_TYPE = attempted_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_minor_gain
XP_MIN = gallowsbait_xp_minor_gain
}
bandit_king_maa_spawn_effect = yes
}
}
}
}
}
##################################################
# STEWARDSHIP CONTRACTS
# Collect taxes for a third party
laamp_base_2001 = {
group = laamp_contracts_hireling_group
icon = "gfx/interface/icons/scheme_types/stewardship.dds"
travel = no
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_stewardship_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that want their money and think you can get it.
if = {
limit = { has_trait = greedy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = trusting }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = callous }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = lazy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that either can wait or won't trust you.
if = {
limit = { has_trait = paranoid }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = diligent }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
# Specific flavour triggers.
laamp_task_contract_employer_would_chase_money_trigger = yes
# And we must have at least one mayor to act as the locus.
scope:employer = {
any_vassal = { laamp_base_2001_valid_mayor_trigger = yes }
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
# Make sure our baron hasn't died.
var:person_a = { is_alive = yes }
# And that, in MP, our secondaries haven't died either.
OR = {
NOT = { has_variable = person_b }
var:person_b = { is_alive = yes }
}
OR = {
NOT = { has_variable = person_c }
var:person_b = { is_alive = yes }
}
OR = {
NOT = { has_variable = person_d }
var:person_b = { is_alive = yes }
}
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Grab our best possible baron.
scope:employer = {
ordered_vassal = {
limit = { laamp_base_2001_valid_mayor_trigger = yes }
order_by = {
value = ai_greed
add = {
value = ai_honor
multiply = -0.5
}
# Weight down the capital if we can, as it feels weird to not go a city over.
if = {
limit = { primary_title.county.holder = scope:employer }
add = -1000
}
}
save_scope_as = person_a
}
}
# Track this as a variable so that we can invalidate if they die.
set_variable = {
name = person_a
value = scope:person_a
}
# Plus our score.
increment_variable_effect = {
VAR = clues_gathered
VAL = 0
}
# & numbers of chars checked for loc.
increment_variable_effect = {
VAR = chars_checked
VAL = 0
}
# Then we start the travel.
task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.2004 }
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_half_value
}
set_variable = {
name = gold_success_qualified_reduced_tax
value = task_contract_taker.task_contract_success_gold_gain_third_value
}
set_variable = {
name = gold_success_qualified_insufficient_evidence
value = task_contract_taker.task_contract_success_gold_gain_half_value
}
set_variable = {
name = gold_success_qualified_beaten_down
value = task_contract_taker.task_contract_success_gold_gain_third_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Critical Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_massive_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_qualified_reduced_tax = {
visible = no
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_qualified_reduced_tax
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_reduced_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
success_qualified_insufficient_evidence = {
visible = no
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_qualified_insufficient_evidence
PRESTIGE = -200
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_qualified_beaten_down = {
visible = no
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_qualified_beaten_down
PRESTIGE = -200
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_reduced_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
failure_standard = {
positive = no
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
failure_critical = {
positive = no
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = -300
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_critical_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_major_gain
XP_MIN = gallowsbait_xp_major_gain
}
}
}
}
failure_took_wrong_side = {
visible = no
positive = no
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:yes }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_success_prestige_gain_critical_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Perform a census
laamp_base_2011 = {
group = laamp_contracts_stewardship_group
icon = "gfx/interface/icons/scheme_types/stewardship.dds"
travel = no
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_stewardship_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that care especially for rules and documentation.
### A.k.a: the good kind of designer.
if = {
limit = { has_trait = diligent }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = just }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = greedy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that don't much care for paperwork, preferring vibes.
### A.k.a: the bad kind of designer.
if = {
limit = { has_trait = lazy }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = arbitrary }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
scope:employer = {
domain_size >= 2
}
# Specific flavour triggers.
scope:employer.laamp_base_2011_actual_surveyable_holdings_per_tier_value >= scope:employer.laamp_base_2011_desired_surveyable_holdings_per_tier_value
## A census isn't necessarily about money but given the expense involved... yeah most of the time it is.
laamp_task_contract_employer_would_chase_money_trigger = yes
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Then we start the travel.
task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.2014 }
# Track our score.
increment_variable_effect = {
VAR = destinations_processed
VAL = 0
}
# Plus our methods.
increment_variable_effect = {
VAR = destinations_processed_legit_success
VAL = 0
}
increment_variable_effect = {
VAR = destinations_processed_quartermaster_success
VAL = 0
}
increment_variable_effect = {
VAR = destinations_processed_lied_success
VAL = 0
}
increment_variable_effect = {
VAR = destinations_processed_guessed_success
VAL = 0
}
increment_variable_effect = {
VAR = destinations_processed_legit_failure
VAL = 0
}
increment_variable_effect = {
VAR = destinations_processed_quartermaster_failure
VAL = 0
}
increment_variable_effect = {
VAR = destinations_processed_lied_failure
VAL = 0
}
increment_variable_effect = {
VAR = destinations_processed_guessed_failure
VAL = 0
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Critical Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
failure_critical = {
positive = no
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = -300
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_critical_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_major_gain
XP_MIN = gallowsbait_xp_major_gain
}
}
}
}
}
}
# Help construct a building
laamp_base_2021 = {
group = laamp_contracts_stewardship_group
icon = "gfx/interface/icons/scheme_types/stewardship.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_stewardship_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that want fresh buildings but aren't great at organising such.
if = {
limit = { has_trait = greedy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = fickle }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = lazy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that do well at construction.
if = {
limit = { has_trait = generous }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = stubborn }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = diligent }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
# Specific flavour triggers.
scope:employer = {
NOR = {
has_trait = architect
stewardship >= high_skill_rating
}
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_2021_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.2021
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Critical Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_critical_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Settle a local dispute
laamp_base_2031 = {
group = laamp_contracts_stewardship_group
icon = "gfx/interface/icons/scheme_types/stewardship.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_stewardship_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that are likely to run into these kinds of political troubles but not super able to deal with them.
if = {
limit = { has_trait = honest }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = arbitrary }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = fickle }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that would avoid or swiftly resolve the issue.
if = {
limit = { has_trait = deceitful }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = patient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = just }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = stubborn }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
# Don't weight down barons like we usually would, because we _only_ want barons here.
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
# This time around we're dealing with minor disputes, so we only want barons.
scope:employer.highest_held_title_tier = tier_barony
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Then we roll our first event..
task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.2035 }
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_half_value
}
set_variable = {
name = success_camp_purpose
value = task_contract_success_gold_gain_half_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
set_variable = {
name = success_sacked_settlement
value = task_contract_success_gold_gain_critical_crime_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Critical Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_camp_purpose = {
should_print_on_complete = yes
visible = no
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:success_camp_purpose
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_sacked_settlement = {
should_print_on_complete = yes
visible = no
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:success_sacked_settlement
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_major_gain
XP_MIN = gallowsbait_xp_major_gain
}
bandit_king_maa_spawn_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Collect fake taxes
laamp_base_2041 = {
group = laamp_contracts_criminal_group
icon = "gfx/interface/icons/scheme_types/stewardship.dds"
travel = no
is_criminal = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_stewardship_value
add = laamp_contracts_weight_up_criminal_massive_value
# Employer weights.
scope:employer = {
add = laamp_contract_would_signpost_own_prosperity_value
multiply = task_contract_weight_by_tier_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
scope:employer.sub_realm_size >= laamp_base_2041_num_counties_to_rob_value
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
root.task_contract_taker = {
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Then we start the travel.
task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.2044 }
# Plus, set up some variables for us.
## Progress tallies.
increment_variable_effect = {
VAR = wins_tally
VAL = 0
}
increment_variable_effect = {
VAR = losses_tally
VAL = 0
}
## Victory tiers.
save_scope_value_as = {
name = win_t1_threshold
value = {
value = scope:employer.laamp_base_2041_num_counties_to_rob_sans_capital_value
divide = 3
floor = yes
}
}
increment_variable_effect = {
VAR = win_t1_threshold
VAL = scope:win_t1_threshold
}
save_scope_value_as = {
name = win_t2_threshold
value = {
value = scope:employer.laamp_base_2041_num_counties_to_rob_sans_capital_value
divide = 3
multiply = 2
floor = yes
}
}
increment_variable_effect = {
VAR = win_t2_threshold
VAL = scope:win_t2_threshold
}
increment_variable_effect = {
VAR = win_t3_threshold
VAL = scope:employer.laamp_base_2041_num_counties_to_rob_sans_capital_value
}
## Roll difficulties.
increment_variable_effect = {
VAR = stewardship_diff
VAL = 10
}
increment_variable_effect = {
VAR = intrigue_diff
VAL = 10
}
increment_variable_effect = {
VAR = bard_diff
VAL = 0
}
increment_variable_effect = {
VAR = stress_charge
VAL = 20
}
}
on_create = {
scope:contract = {
set_variable = {
name = animation
value = 0
}
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_crime_value
}
set_variable = {
name = gold_success_qualified
value = task_contract_taker.task_contract_success_gold_gain_half_crime_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_critical_crime_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = trickster
XP_MAX = gallowsbait_xp_medium_gain
XP_MIN = gallowsbait_xp_medium_gain
}
}
}
}
success_qualified = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_qualified
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = trickster
XP_MAX = gallowsbait_xp_minor_gain
XP_MIN = gallowsbait_xp_minor_gain
}
}
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = trickster
XP_MAX = gallowsbait_xp_major_gain
XP_MIN = gallowsbait_xp_major_gain
}
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_value
PIETY = 0
PROVISIONS = 0
OPINION = task_contract_opinion_crime_failure_value
OPINION_TYPE = attempted_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = trickster
XP_MAX = gallowsbait_xp_minor_gain
XP_MIN = gallowsbait_xp_minor_gain
}
}
}
}
failure_qualified = {
positive = no
should_print_on_complete = yes
visible = no
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = 0
OPINION = task_contract_opinion_crime_backed_down_value
OPINION_TYPE = attempted_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = trickster
XP_MAX = gallowsbait_xp_minor_gain
XP_MIN = gallowsbait_xp_minor_gain
}
}
}
}
}
}
##################################################
# INTRIGUE CONTRACTS
# Provide intelligence from your trips
laamp_base_3001 = {
group = laamp_contracts_intrigue_group
icon = "gfx/interface/icons/scheme_types/intrigue.dds"
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_intrigue_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that value foreign intelligence.
if = {
limit = { has_trait = deceitful }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = arbitrary }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = patient }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that don't care for espionage.
if = {
limit = { has_trait = honest }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = just }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
scope:employer = {
highest_held_title_tier >= tier_county
OR = {
any_neighboring_and_across_water_realm_same_rank_owner = {
count >= 3
laamp_base_3001_valid_neighbours_trigger = { EMPLOYER = scope:employer }
}
AND = {
highest_held_title_tier >= tier_empire
any_neighboring_and_across_water_top_liege_realm_owner = {
count >= 3
highest_held_title_tier >= tier_kingdom
laamp_base_3001_valid_neighbours_trigger = { EMPLOYER = scope:employer }
}
}
}
}
# Specific flavour triggers.
laamp_task_contract_employer_not_antisocial_trigger = yes
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the travel.
task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.3004 }
# Plus, set up a tracking variable for us.
increment_variable_effect = {
VAR = wins_tally
VAL = 0
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
set_variable = {
name = gold_success_qualified
value = task_contract_taker.task_contract_success_gold_gain_half_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Critical Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_qualified = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_qualified
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Murder a character's rival
laamp_base_3011 = {
group = laamp_contracts_criminal_group
icon = "gfx/interface/icons/scheme_types/intrigue.dds"
travel = yes
is_criminal = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_intrigue_value
add = laamp_contracts_weight_up_criminal_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that want someone killed and don't much care how.
if = {
limit = { has_trait = wrathful }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = callous }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = sadistic }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = arbitrary }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that won't hire thugs to solve their problems just on principle.
if = {
limit = { has_trait = calm }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = just }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
# Specific flavour triggers.
laamp_task_contract_employer_would_resort_to_violence_trigger = yes
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
root.task_contract_taker = {
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Now, nab us a suitable target.
task_contract_employer = { laamp_contract_grab_suitable_rival_for_disposal_effect = yes }
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_3011_contract_scheme
contract = root
target_character = root.var:target
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.3011
}
}
on_create = {
scope:contract = {
set_variable = {
name = animation
value = 1
}
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_crime_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_medium_gain
XP_MIN = gallowsbait_xp_medium_gain
}
bandit_king_maa_spawn_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_minor_gain
XP_MIN = gallowsbait_xp_minor_gain
}
bandit_king_maa_spawn_effect = yes
}
}
}
}
}
# Abduct a character's rival
laamp_base_3021 = {
group = laamp_contracts_criminal_group
icon = "gfx/interface/icons/scheme_types/intrigue.dds"
travel = yes
is_criminal = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_intrigue_value
add = laamp_contracts_weight_up_criminal_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that like a personal touch in the ol' donjon.
if = {
limit = { has_trait = sadistic }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = wrathful }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = arbitrary }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that prefer efficiency.
if = {
limit = { has_trait = callous }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = diligent }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
# Specific flavour triggers.
laamp_task_contract_employer_would_resort_to_violence_trigger = yes
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
root.task_contract_taker = {
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Now, nab us a suitable target.
task_contract_employer = { laamp_contract_grab_suitable_rival_for_disposal_effect = yes }
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_3021_contract_scheme
contract = root
target_character = root.var:target
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.3021
}
}
on_create = {
scope:contract = {
set_variable = {
name = animation
value = 1
}
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_crime_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_medium_gain
XP_MIN = gallowsbait_xp_medium_gain
}
bandit_king_maa_spawn_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MAX = gallowsbait_xp_minor_gain
XP_MIN = gallowsbait_xp_minor_gain
}
}
}
}
}
}
# Attack the property of a character's rival
laamp_base_3031 = {
group = laamp_contracts_criminal_group
icon = "gfx/interface/icons/scheme_types/intrigue.dds"
is_criminal = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_intrigue_value
add = laamp_contracts_weight_up_criminal_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that like a subtle, yet violent, touch.
if = {
limit = { has_trait = deceitful }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = patient }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
### Ok emphasising "violent" over "subtle" here.
if = {
limit = { has_trait = wrathful }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = arbitrary }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that prefer bluntness or honesty.
if = {
limit = { has_trait = honest }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = calm }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = just }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
# Specific flavour triggers.
laamp_task_contract_employer_would_resort_to_violence_trigger = yes
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
root.task_contract_taker = {
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Now, nab us a suitable target.
task_contract_employer = { laamp_contract_grab_suitable_rival_for_disposal_effect = yes }
# Save a scope that stops us getting double gallowsbait XP later on.
save_scope_value_as = {
name = suppress_gallowsbait
value = yes
}
# Then we start the chainlet.
task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.3034 }
}
on_create = {
scope:contract = {
set_variable = {
name = animation
value = 1
}
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_crime_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update gallowsbait score.
task_contract_taker = {
if = {
limit = {
NOT = { exists = scope:suppress_gallowsbait }
}
# Wrapped like this because, even with the scope definitely present, it was somehow slipping the net & applying anyway.
show_as_tooltip = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = bandit
XP_MIN = gallowsbait_xp_medium_gain
XP_MAX = gallowsbait_xp_medium_gain
}
}
}
bandit_king_maa_spawn_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
if = {
limit = {
NOT = { exists = scope:suppress_gallowsbait }
}
# Wrapped like this because, even with the scope definitely present, it was somehow slipping the net & applying anyway.
show_as_tooltip = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = bandit
XP_MIN = gallowsbait_xp_minor_gain
XP_MAX = gallowsbait_xp_minor_gain
}
}
}
}
}
}
failure_qualified = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_half_value
PIETY = 0
PROVISIONS = 0
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Heist from a ruler's treasury
laamp_base_3041 = {
group = laamp_contracts_criminal_group
icon = "gfx/interface/icons/scheme_types/intrigue.dds"
travel = yes
is_criminal = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_intrigue_value
add = laamp_contracts_weight_up_criminal_value
# Employer weights.
scope:employer = {
add = laamp_contract_would_signpost_own_prosperity_value
multiply = task_contract_weight_by_tier_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
root.task_contract_taker = {
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_3041_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.3041
}
}
on_create = {
scope:contract = {
set_variable = {
name = animation
value = 0
}
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_crime_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = 0
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = thief
XP_MIN = gallowsbait_xp_medium_gain
XP_MAX = gallowsbait_xp_medium_gain
}
bandit_king_maa_spawn_effect = yes
}
custom_tooltip = laamp_base_3041.tt.chance_for_more
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_value
PIETY = 0
PROVISIONS = 0
OPINION = task_contract_opinion_crime_failure_value
OPINION_TYPE = attempted_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = thief
XP_MIN = gallowsbait_xp_minor_gain
XP_MAX = gallowsbait_xp_minor_gain
}
}
}
}
}
}
##################################################
# LEARNING CONTRACTS
# Transcribe texts for a learned ruler
laamp_base_4001 = {
group = laamp_contracts_learning_group
icon = "gfx/interface/icons/scheme_types/learning.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_learning_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that appreciate works of learning.
if = {
limit = { has_trait = scholar }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = theologian }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = eccentric }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = patient }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = shy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that don't support these gorramned NERDS.
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = athletic }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
on_create = {
scope:contract = {
save_scope_as = task_contract
set_variable = {
name = task_contract_employer
value = scope:task_contract.task_contract_employer
}
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
set_variable = {
name = gold_success_qualified
value = task_contract_taker.task_contract_success_gold_gain_half_value
}
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_critical_value
}
}
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For easy access
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Trigger the first education event
task_contract_taker ?= { trigger_event = laamp_base_learning_contract_events.4001 }
# Plus, set up some variables for us.
## Progress tallies.
increment_variable_effect = {
VAR = score_tally
VAL = 0
}
increment_variable_effect = {
VAR = text_passages_left
VAL = 3
}
### Victory tiers.
increment_variable_effect = {
VAR = win_t1_threshold
VAL = 3 #You smooch by on the standard answer
}
increment_variable_effect = {
VAR = win_t2_threshold
VAL = 7 #You use your language/traits twice and also have a successful embellishment
}
increment_variable_effect = {
VAR = win_t3_threshold
VAL = 9 #All three embellishments are successful :yeslikethis:
}
}
# Rewards
task_contract_reward = {
success_qualified = {
should_print_on_complete = yes
effect = {
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_qualified
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_reduced_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Learning Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = task_contract_success_piety_gain_half_value
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Learning Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = task_contract_success_piety_gain_full_value
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
#Help settle theological arguments
laamp_base_4011 = {
group = laamp_contracts_learning_group
icon = "gfx/interface/icons/scheme_types/learning.dds"
travel = no
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_learning_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that would happily delegate a debate.
if = {
limit = { has_trait = shy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = fickle }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = lazy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that would leap into a debate wholesale.
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = patient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = stubborn }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = diligent }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
scope:employer = {
NOR = {
government_has_flag = government_is_tribal
faith = { has_doctrine_parameter = unreformed }
has_trait = cynical
}
AND = {
highest_held_title_tier >= tier_duchy
any_sub_realm_barony = {
title_province = { has_holding = yes }
this != scope:employer.capital_barony
count >= 3
}
}
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For easy access
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
#Set this up here to calculate win thresholds
scope:employer = {
add_character_flag = is_in_task_contract_event_chain
ordered_sub_realm_barony = {
limit = {
title_province = { has_holding = yes }
this != scope:employer.capital_barony
}
order_by = {
value = county_opinion
multiply = -1
}
max = 5
check_range_bounds = no
add_to_list = destination_baronies_list
}
scope:employer.capital_province = { save_scope_as = employer_location_destination }
ordered_in_list = {
list = destination_baronies_list
order_by = "squared_distance(prev.capital_province)"
max = 5
check_range_bounds = no
if = {
limit = {
NOT = { exists = scope:destination_1 }
}
save_scope_as = destination_1
}
else_if = {
limit = {
NOT = {
this = scope:destination_1
exists = scope:destination_2
}
}
save_scope_as = destination_2
}
else_if = {
limit = {
NOT = {
this = scope:destination_1
this = scope:destination_2
exists = scope:destination_3
}
}
save_scope_as = destination_3
}
else_if = {
limit = {
NOT = {
this = scope:destination_1
this = scope:destination_2
this = scope:destination_3
exists = scope:destination_4
}
}
save_scope_as = destination_4
}
else_if = {
limit = {
NOT = {
this = scope:destination_1
this = scope:destination_2
this = scope:destination_3
this = scope:destination_4
exists = scope:destination_5
}
}
save_scope_as = destination_5
}
}
}
# Plus, set up some variables for us.
## Progress tallies.
increment_variable_effect = {
VAR = wins_tally
VAL = 0
}
increment_variable_effect = {
VAR = encounter_tally
VAL = 0
}
### Victory tiers.
if = {
limit = { exists = scope:destination_5 }
increment_variable_effect = {
VAR = win_t1_threshold
VAL = 2
}
increment_variable_effect = {
VAR = win_t2_threshold
VAL = 4
}
increment_variable_effect = {
VAR = win_t3_threshold
VAL = 5
}
}
else_if = {
limit = { exists = scope:destination_4 }
increment_variable_effect = {
VAR = win_t1_threshold
VAL = 1
}
increment_variable_effect = {
VAR = win_t2_threshold
VAL = 2
}
increment_variable_effect = {
VAR = win_t3_threshold
VAL = 4
}
}
else = {
increment_variable_effect = {
VAR = win_t1_threshold
VAL = 1
}
increment_variable_effect = {
VAR = win_t2_threshold
VAL = 2
}
increment_variable_effect = {
VAR = win_t3_threshold
VAL = 3
}
}
increment_variable_effect = {
VAR = opportunities_left_tally
VAL = var:win_t3_threshold
}
# Then we start the travel.
task_contract_taker ?= { trigger_event = laamp_base_learning_contract_events.4011 }
}
on_invalidated = {
task_contract_employer = { remove_character_flag = is_in_task_contract_event_chain }
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_qualified
value = task_contract_taker.task_contract_success_gold_gain_half_value
}
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_critical_value
}
}
}
# Rewards
task_contract_reward = {
success_qualified = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Learning Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_qualified
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = task_contract_success_piety_gain_half_value
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_reduced_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_employer = { remove_character_flag = is_in_task_contract_event_chain }
}
}
success_standard = {
should_print_on_complete = yes
effect = {
# Camp building extra Learning Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = task_contract_success_piety_gain_full_value
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
task_contract_employer = { remove_character_flag = is_in_task_contract_event_chain }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Learning Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_critical_value
PIETY = task_contract_success_piety_gain_critical_value
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
task_contract_employer = { remove_character_flag = is_in_task_contract_event_chain }
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = 0
PIETY = task_contract_failure_piety_loss_full_value
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_employer = { remove_character_flag = is_in_task_contract_event_chain }
}
}
}
}
# Create a work of learning for a ruler
laamp_base_4021 = {
group = laamp_contracts_learning_group
icon = "gfx/interface/icons/scheme_types/learning.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_learning_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that appreciate works of learning.
if = {
limit = { has_trait = scholar }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = theologian }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = eccentric }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = patient }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = shy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that don't support these gorramned NERDS.
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = athletic }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
#You really shouldn't have terrible Learning
root.learning >= average_skill_level
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For easy access
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# How many chapters do you want to write?
task_contract_taker ?= { trigger_event = laamp_base_learning_contract_events.4021 }
#We set up the variables in the intro event
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_qualified
value = task_contract_taker.task_contract_success_gold_gain_half_value
}
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
}
}
# Rewards
task_contract_reward = {
success_qualified = {
should_print_on_complete = yes
effect = {
# Camp building extra Stewardship Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
# Standard Reward.
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_qualified
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_reduced_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Learning Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = task_contract_success_piety_gain_half_value
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Learning Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = task_contract_success_piety_gain_half_value
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = task_contract_failure_piety_loss_full_value
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Solicit Charity
laamp_base_4031 = {
group = laamp_contracts_learning_group
icon = "gfx/interface/icons/scheme_types/learning.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_learning_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that take pity on passers by.
if = {
limit = { has_trait = generous }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = compassionate }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = improvident }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = profligate }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that don't give a damn about wanderers (or who it would look a bit weird for).
if = {
limit = { has_trait = greedy }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = callous }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = sadistic }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
# Specific flavour triggers.
laamp_task_contract_employer_not_antisocial_trigger = yes
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_4031_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.4031
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Learning Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Learning Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = 0
PIETY = task_contract_success_piety_gain_half_value
PROVISIONS = task_contract_success_provisions_gain_massive_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = task_contract_failure_piety_loss_full_value
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Sell bogus relics
laamp_base_4041 = {
group = laamp_contracts_criminal_group
icon = "gfx/interface/icons/scheme_types/learning.dds"
travel = yes
is_criminal = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_learning_value
add = laamp_contracts_weight_up_criminal_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that make you gullible, or at least more vulnerable to scam artistry.
if = {
limit = { has_trait = trusting }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = fickle }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = eccentric }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that make you naturally suspicious.
if = {
limit = { has_trait = stubborn }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = deceitful }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
scope:employer = {
NOR = {
government_has_flag = government_is_tribal
faith = { has_doctrine_parameter = unreformed }
}
}
# Specific flavour triggers.
laamp_task_contract_employer_not_antisocial_trigger = yes
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
root.task_contract_taker = {
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_4041_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.4041
}
}
on_create = {
scope:contract = {
set_variable = {
name = animation
value = 0
}
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_crime_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Learning/Criminal Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= {
OR = {
has_domicile_parameter = camp_improved_learning_contract_rewards
has_domicile_parameter = camp_improved_criminal_contract_rewards
}
}
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = 0
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = trickster
XP_MIN = gallowsbait_xp_medium_gain
XP_MAX = gallowsbait_xp_medium_gain
}
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_value
PIETY = task_contract_failure_piety_loss_full_value
PROVISIONS = 0
OPINION = task_contract_opinion_crime_failure_value
OPINION_TYPE = attempted_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = trickster
XP_MIN = gallowsbait_xp_minor_gain
XP_MAX = gallowsbait_xp_minor_gain
}
}
}
}
}
}
#Act as a tutor for ruler's child
laamp_base_4100 = {
group = laamp_contracts_learning_group
icon = "gfx/interface/icons/scheme_types/learning.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_learning_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that appreciate works of learning.
if = {
limit = { has_trait = scholar }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = theologian }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = eccentric }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = patient }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = shy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that don't support these gorramned NERDS.
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = impatient }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = athletic }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
# Specific flavour triggers.
scope:employer = {
any_courtier = {
age >= 6
age < 15 #Give us a year to complete the contract
is_available = yes
location = scope:employer.location
}
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
root.var:task_contract_target = { age < 15 }
#Since the kid is saved as the target; we automatically invalidate if kid becomes unavailable, right?
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
on_create = {
scope:contract = {
save_scope_as = task_contract
task_contract_employer = {
random_courtier = {
limit = {
age >= 6
age < 15 #Give us a year to complete the contract
is_available = yes
location = prev.location #The employer's location
}
weight = {
base = 1
#Prioritize relevant children
modifier = {
add = 10
is_primary_heir_of = scope:task_contract.task_contract_employer
}
modifier = {
add = 5
trigger_if = {
limit = {
scope:task_contract.task_contract_employer = { has_realm_law = female_only_law }
}
is_female = yes
}
trigger_else = { always = no }
}
modifier = {
add = 5
trigger_if = {
limit = {
scope:task_contract.task_contract_employer = { has_realm_law = male_only_law }
}
is_male = yes
}
trigger_else = { always = no }
}
}
save_scope_as = task_contract_target
}
}
set_variable = {
name = task_contract_employer
value = scope:task_contract.task_contract_employer
}
set_task_contract_target = scope:task_contract_target
set_variable = {
name = task_contract_target
value = scope:task_contract.task_contract_target
}
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_critical_value
}
}
}
# On_actions
on_accepted = {
# For easy access
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
task_contract_target = { save_scope_as = child_to_educate }
# Trigger the first education event
task_contract_taker ?= { trigger_event = laamp_base_learning_contract_events.4100 }
# Plus, set up some variables for us.
## Progress tallies.
increment_variable_effect = {
VAR = wins_tally
VAL = 0
}
increment_variable_effect = {
VAR = educational_moments_left
VAL = 3
}
### Victory tiers.
increment_variable_effect = {
VAR = win_t1_threshold
VAL = 2
}
increment_variable_effect = {
VAR = win_t2_threshold
VAL = 3
}
## Roll difficulties.
increment_variable_effect = {
VAR = learning_diff
VAL = 10
}
increment_variable_effect = {
VAR = topic_diff
VAL = 10
}
increment_variable_effect = {
VAR = support_person_diff
VAL = 5
}
increment_variable_effect = {
VAR = stress_charge
VAL = 20
}
}
on_invalidated = {
task_contract_taker = {
remove_character_flag = is_in_task_contract_event_chain
}
if = {
limit = {
root.task_contract_taker = {
any_character_active_contract = {
this = root
}
}
}
task_contract_employer = {
save_scope_as = task_contract_employer
}
save_scope_value_as = {
name = task_contract_tier
value = root.task_contract_tier
}
var:task_contract_target = {
save_scope_as = task_contract_target
}
task_contract_taker = {
set_variable = {
name = invalidated_task_contract_type
value = flag:laamp_base_4100
}
}
if = {
limit = {
task_contract_employer = {
is_alive = no
}
}
task_contract_employer.primary_title.holder ?= {
save_scope_as = employer_heir
}
task_contract_taker = {
save_scope_value_as = {
name = task_contract_invalidation_reason
value = flag:employer_dead
}
trigger_event = ep3_contract_event.0012
}
}
else_if = {
limit = {
scope:task_contract_target = {
is_alive = no
}
}
task_contract_taker = {
save_scope_value_as = {
name = task_contract_invalidation_reason
value = flag:target_dead
}
trigger_event = ep3_contract_event.0012
}
}
}
}
# Rewards
task_contract_reward = {
#Need at least 2 successful teaching moments
success_standard = {
should_print_on_complete = yes
effect = {
# Camp building extra Learning Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
success_critical = {
should_print_on_complete = yes
effect = {
# Camp building extra Learning Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
# Critical Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_critical_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
##################################################
# JUSTICAR CONTRACTS
# Protect the innocent
laamp_base_6001 = {
group = laamp_contracts_justicar_group
icon = "gfx/interface/icons/scheme_types/war.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_prowess_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that value prosperity in their subjects.
if = {
limit = { has_trait = greedy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = generous }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = humble }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = avaricious }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that won't do favours for some grubby merchant.
if = {
limit = { has_trait = arrogant }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = callous }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_6001_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.6001
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
# Make sure critical values are a bit higher.
save_scope_value_as = { name = gold_safety_margin value = flag:yes }
set_variable = {
name = gold_success_critical
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
task_contract_taker = {
# Update gallowsbait score.
lower_gallowsbait_xp_effect = { VALUE = -5 }
# Update Knight-Errant score.
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_minor_gain
XP_MIN = knight_errant_xp_minor_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_critical
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
task_contract_taker = {
# Update gallowsbait score.
lower_gallowsbait_xp_effect = { VALUE = -10 }
# Update Knight-Errant score.
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_medium_gain
XP_MIN = knight_errant_xp_medium_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Rescue a Fair Non-Combatant Gender
laamp_base_6011 = {
group = laamp_contracts_justicar_group
icon = "gfx/interface/icons/scheme_types/war.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_prowess_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
if = {
limit = { has_trait = gallant }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down
if = {
limit = { has_trait = callous }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
scope:employer.capital_province = { is_wooded_trigger = yes }
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_6011_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.6011
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = task_contract_success_provisions_gain_minor_value
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
task_contract_taker = {
# Update gallowsbait score.
lower_gallowsbait_xp_effect = { VALUE = -5 }
# Update Knight-Errant score.
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_minor_gain
XP_MIN = knight_errant_xp_minor_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Participate in a Chivalry Play
laamp_base_6021 = {
group = laamp_contracts_justicar_group
icon = "gfx/interface/icons/scheme_types/diplomacy.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_diplomacy_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
if = {
limit = { has_trait = gallant }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = lifestyle_reveler }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down
if = {
limit = { has_trait = callous }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_6021_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.6021
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
task_contract_taker = {
# Update Knight-Errant score.
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_minor_gain
XP_MIN = knight_errant_xp_minor_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Do a Pass d'Armes
laamp_base_6031 = {
group = laamp_contracts_justicar_group
icon = "gfx/interface/icons/scheme_types/martial.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_prowess_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
if = {
limit = { has_trait = gallant }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down
if = {
limit = { has_trait = callous }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
employer_has_treasury_to_offer_job_trigger = yes
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
task_contract_employer = { save_scope_as = employer }
# Then we start the scheme.
task_contract_taker ?= {
start_scheme = {
type = laamp_base_6031_contract_scheme
contract = root
target_character = root.task_contract_employer
}
# Make a note of what the scheme even is; we'll need this for the event too.
scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.6031
}
}
on_create = {
scope:contract = {
# Make our gold rewards static.
grab_gold_fuzz_number_effect = yes
save_scope_as = task_contract
set_variable = {
name = gold_success_standard
value = task_contract_taker.task_contract_success_gold_gain_full_value
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = scope:task_contract.var:gold_success_standard
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
task_contract_taker = {
# Update gallowsbait score.
lower_gallowsbait_xp_effect = { VALUE = -10 }
# Update Knight-Errant score.
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_minor_gain
XP_MIN = knight_errant_xp_minor_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
##################################################
# DEPRECATED CONTRACTS
# Help train local MaA
laamp_base_1021 = {
group = laamp_contracts_martial_group
icon = "gfx/interface/icons/scheme_types/martial.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_martial_value
add = laamp_contracts_weight_up_martial_slight_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that believe in readiness for war.
if = {
limit = { has_trait = brave }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = wrathful }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = diligent }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that don't think they gain anything from this.
if = {
limit = { has_trait = arrogant }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
always = no
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
#start_scheme = {
# type = laamp_base_1021_contract_scheme
# contract = root
# target_character = root.task_contract_employer
#}
# Make a note of what the scheme even is; we'll need this for the event too.
#scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.1021
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = task_contract_success_gold_gain_full_value
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update Knight-Errant score.
task_contract_taker = {
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_minor_gain
XP_MIN = knight_errant_xp_minor_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Critical Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = task_contract_success_gold_gain_full_value
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_massive_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update Knight-Errant score.
task_contract_taker = {
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_medium_gain
XP_MIN = knight_errant_xp_medium_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Garrison service
laamp_base_1031 = {
group = laamp_contracts_hireling_group
icon = "gfx/interface/icons/scheme_types/martial.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_martial_value
add = laamp_contracts_weight_up_martial_slight_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that care about defence.
### We don't check paranoid because they're already filtered out due to this being relative strangers.
if = {
limit = { has_trait = stubborn }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = greedy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that think their defences are definitely fiiiiiine.
if = {
limit = { has_trait = arrogant }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = trusting }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = fickle }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
always = no
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
# Specific flavour triggers.
laamp_task_contract_employer_not_antisocial_trigger = yes
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
#start_scheme = {
# type = laamp_base_1031_contract_scheme
# contract = root
# target_character = root.task_contract_employer
#}
# Make a note of what the scheme even is; we'll need this for the event too.
#scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.1031
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = task_contract_success_gold_gain_full_value
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update Knight-Errant score.
task_contract_taker = {
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_minor_gain
XP_MIN = knight_errant_xp_minor_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Critical Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = task_contract_success_gold_gain_full_value
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_massive_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update Knight-Errant score.
task_contract_taker = {
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_minor_gain
XP_MIN = knight_errant_xp_minor_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Hunt in the wilds
laamp_base_5001 = {
group = laamp_contracts_hunting_group
icon = "gfx/interface/icons/scheme_types/war.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_prowess_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that hate being outdoors.
if = {
limit = { has_trait = shy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = lazy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = fickle }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = craven }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that love being outside.
if = {
limit = { has_trait = gregarious }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = diligent }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = stubborn }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
always = no
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
# Specific flavour triggers.
scope:employer = {
NOR = {
has_trait = lifestyle_hunter
has_trait = athletic
has_trait = brave
}
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
#start_scheme = {
# type = laamp_base_5001_contract_scheme
# contract = root
# target_character = root.task_contract_employer
#}
# Make a note of what the scheme even is; we'll need this for the event too.
#scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.5001
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = task_contract_success_gold_gain_full_value
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Counts towards Knight of the Swan
task_contract_taker = {
task_contract_justicar_contract_tracker_effect = yes
}
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Critical Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = task_contract_success_gold_gain_full_value
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_massive_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Counts towards Knight of the Swan
task_contract_taker = {
task_contract_justicar_contract_tracker_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Guard merchant properties
laamp_base_5011 = {
group = laamp_contracts_hireling_group
icon = "gfx/interface/icons/scheme_types/war.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_prowess_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that value prosperity in their subjects.
if = {
limit = { has_trait = greedy }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = generous }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = humble }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = avaricious }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that won't do favours for some grubby merchant.
if = {
limit = { has_trait = arrogant }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = callous }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
always = no
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
#start_scheme = {
# type = laamp_base_5011_contract_scheme
# contract = root
# target_character = root.task_contract_employer
#}
# Make a note of what the scheme even is; we'll need this for the event too.
#scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.5011
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = task_contract_success_gold_gain_full_value
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_medium_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update Knight-Errant score.
task_contract_taker = {
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_minor_gain
XP_MIN = knight_errant_xp_minor_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
success_critical = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Critical Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = task_contract_success_gold_gain_full_value
PRESTIGE = task_contract_success_prestige_gain_half_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = critically_succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update Knight-Errant score.
task_contract_taker = {
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_medium_gain
XP_MIN = knight_errant_xp_medium_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Guard a local ruler at a minor event
laamp_base_5021 = {
group = laamp_contracts_hireling_group
icon = "gfx/interface/icons/scheme_types/war.dds"
travel = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_prowess_value
# Employer weights.
scope:employer = {
add = {
# Weight up.
## Traits that suspect treason: either because they're paranoid or as a self-report.
if = {
limit = { has_trait = paranoid }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = deceitful }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = arbitrary }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = fickle }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = disloyal }
add = task_contract_weight_bonus_employer_has_associated_traits_value
}
# Weight down.
## Traits that think loyalty is unshakeable.
if = {
limit = { has_trait = trusting }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = honest }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = just }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = stubborn }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
if = {
limit = { has_trait = loyal }
add = task_contract_weight_malus_employer_has_associated_traits_value
}
# Restrictions.
min = task_contract_weight_employer_associated_traits_min_value
max = task_contract_weight_employer_associated_traits_max_value
}
multiply = task_contract_weight_by_tier_value
# This weight is an override, so make sure it's placed at the bottom.
add = task_contract_weight_employer_contact_list_value
}
}
# Validity Triggers
valid_to_create = {
always = no
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
# Specific flavour triggers.
OR = {
laamp_task_contract_employer_not_antisocial_trigger = yes
# Grant an exception to the paranoid antisocialness here: narratively, it's presented like their paranoia of their guards overwhelms their paranoia of you.
has_trait = paranoid
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
#start_scheme = {
# type = laamp_base_5021_contract_scheme
# contract = root
# target_character = root.task_contract_employer
#}
# Make a note of what the scheme even is; we'll need this for the event too.
#scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.5021
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = task_contract_success_gold_gain_full_value
PRESTIGE = task_contract_success_prestige_gain_full_value
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = { task_successful_noncrim_contract_count_effect = yes }
# Update Knight-Errant score.
task_contract_taker = {
laamp_rewards_apply_knight_errant_xp_effect = {
XP_MAX = knight_errant_xp_medium_gain
XP_MIN = knight_errant_xp_medium_gain
}
task_contract_justicar_contract_tracker_effect = yes
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_full_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_standard_failure_value
OPINION_TYPE = failed_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
}
}
# Go poaching
laamp_base_5041 = {
group = laamp_contracts_criminal_group
icon = "gfx/interface/icons/scheme_types/war.dds"
travel = yes
is_criminal = yes
use_diplomatic_range = no
weight = {
# Standard weights.
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_prowess_value
add = laamp_contracts_weight_up_criminal_value
# Employer weights.
scope:employer = {
add = laamp_contract_would_signpost_own_prosperity_value
multiply = task_contract_weight_by_tier_value
}
}
# Validity Triggers
valid_to_create = {
always = no
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
rule_out_dramatic_laamp_employers_trigger = yes
NOT = {
scope:employer = { government_has_flag = government_is_tribal }
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
scope:employer = { is_landed = yes }
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
root.task_contract_taker = {
NOT = {
house = {
has_house_modifier = legacy_adventurer_house_modifier
}
}
}
task_contract_employer = { is_landed = yes }
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
task_contract_employer = { is_landed = yes }
}
# On_actions
on_accepted = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
# For the intro event.
save_scope_as = task_contract
# Then we start the scheme.
task_contract_taker ?= {
#start_scheme = {
# type = laamp_base_5041_contract_scheme
# contract = root
# target_character = root.task_contract_employer
#}
# Make a note of what the scheme even is; we'll need this for the event too.
#scope:task_contract.scheme = { save_scope_as = scheme }
trigger_event = laamp_base_contract_schemes.5041
}
}
on_create = {
scope:contract = {
set_variable = {
name = animation
value = 0
}
}
}
# Rewards
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
# Camp building extra Criminal Rewards: +50%.
if = {
limit = {
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards }
}
save_scope_value_as = { name = extra_reward value = flag:yes }
}
else = {
save_scope_value_as = { name = extra_reward value = flag:no }
}
# Standard Rewards.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = task_contract_success_gold_gain_crime_value
PRESTIGE = 0
PIETY = 0
PROVISIONS = task_contract_success_provisions_gain_major_value
OPINION = task_contract_opinion_crime_success_value
OPINION_TYPE = succeeded_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = poacher
XP_MIN = gallowsbait_xp_medium_gain
XP_MAX = gallowsbait_xp_medium_gain
}
}
}
}
failure_standard = {
positive = no
should_print_on_complete = yes
effect = {
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
save_scope_value_as = { name = extra_reward value = flag:no }
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_crime_value
PIETY = 0
PROVISIONS = task_contract_failure_provisions_gain_minor_value
OPINION = task_contract_opinion_crime_failure_value
OPINION_TYPE = attempted_criminal_contract_against_me_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
# Update gallowsbait score.
task_contract_taker = {
laamp_rewards_apply_criminal_xp_effect = {
TRACK = poacher
XP_MIN = gallowsbait_xp_minor_gain
XP_MAX = gallowsbait_xp_minor_gain
}
}
}
}
}
}