N3OW_Western_eastern_europe/common/task_contracts/laamp_nm_contracts.txt
2026-02-25 20:46:16 +00:00

969 lines
24 KiB
Text

##################################################
# INFO
# Extra contracts for laamps.
##################################################
laamp_boost_legitimacy_contract = {
group = laamp_contracts_diplomacy_group
icon = "gfx/interface/icons/scheme_types/diplomacy.dds"
travel = yes
use_diplomatic_range = yes
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
scope:employer = {
legitimacy_level <= 2
top_liege = this
is_landed = yes
is_ai = yes
NOR = {
location = root.location
government_has_flag = government_is_theocracy
}
highest_held_title_tier > tier_county
location = {
squared_distance = {
target = root.location
value <= squared_distance_large
}
}
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
}
weight = {
# Standard weights.
value = task_contract_weight_interesting_somewhat_rare_value
add = laamp_contracts_weight_up_diplomacy_value
add = laamp_contracts_weight_up_diplomacy_slight_value
add = task_contract_weight_employer_contact_list_value
scope:employer = { multiply = task_contract_weight_by_tier_value }
}
on_create = {
scope:contract = {
save_scope_as = task_contract
task_contract_employer = {
save_scope_as = task_contract_employer
capital_province = {
save_scope_as = task_contract_destination
}
}
set_variable = {
name = task_contract_employer
value = scope:task_contract_employer
}
set_variable = {
name = task_contract_destination
value = scope:task_contract_destination
}
# 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
}
}
}
on_accepted = {
save_scope_as = task_contract
task_contract_taker = {
trigger_event = {
id = ep3_contract_event.0510
delayed = yes
}
}
}
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
save_scope_as = task_contract
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 }
task_contract_taker = {
send_interface_toast = {
title = laamp_transport_contract.success #Re-using
left_icon = scope:task_contract.task_contract_taker
right_icon = scope:task_contract.task_contract_employer
scope:task_contract = {
# 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 = 0
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_employer = {
add_legitimacy = minor_legitimacy_gain
}
}
}
}
}
}
failure_standard = {
positive = no
effect = {
save_scope_as = task_contract
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
}
task_contract_employer = {
add_legitimacy = miniscule_legitimacy_loss
}
}
}
failure_critical = {
positive = no
effect = {
save_scope_as = task_contract
# Standard Penalties.
laamp_rewards_disburse_ordinary_currency_effect = {
GOLD = 0
PRESTIGE = task_contract_failure_prestige_loss_double_value
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
}
task_contract_employer = {
add_legitimacy = medium_legitimacy_loss
add_prestige = task_contract_failure_prestige_loss_double_value
add_stress = medium_stress_gain
}
}
}
}
}
laamp_rid_councillor_contract = {
group = laamp_contracts_martial_group
icon = "gfx/interface/icons/scheme_types/martial.dds"
travel = yes
use_diplomatic_range = yes
is_criminal = yes
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
scope:employer = {
top_liege = this
is_landed = yes
is_ai = yes
NOT = {
government_has_flag = government_is_theocracy
}
highest_held_title_tier > tier_county #Requires a council
location = { #Not too far away
squared_distance = {
target = root.location
value <= squared_distance_large
}
}
any_councillor = { #Has a councillor who they hate
count > 1
is_ai = yes
reverse_opinion = {
target = scope:employer
value <= high_negative_opinion
}
}
}
}
valid_to_accept = {
# Standard triggers.
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
}
weight = {
# Standard weights.
value = task_contract_weight_interesting_somewhat_rare_value
add = laamp_contracts_weight_up_martial_value
add = laamp_contracts_weight_up_martial_slight_value
add = task_contract_weight_employer_contact_list_value
scope:employer = { multiply = task_contract_weight_by_tier_value }
}
on_create = {
scope:contract = {
save_scope_as = task_contract
task_contract_employer = {
save_scope_as = task_contract_employer
capital_province = {
save_scope_as = task_contract_destination
}
}
set_variable = {
name = task_contract_employer
value = scope:task_contract_employer
}
set_variable = {
name = task_contract_destination
value = scope:task_contract_destination
}
# 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_success_gold_gain_full_value
}
set_variable = {
name = gold_success_standard
value = task_contract_success_gold_gain_half_value
}
}
}
on_accepted = {
save_scope_as = task_contract
task_contract_taker = {
trigger_event = {
id = ep3_contract_event.0550
delayed = no
}
}
}
task_contract_reward = {
success_critical = {
should_print_on_complete = yes
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
save_scope_as = task_contract
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
}
}
}
success_standard = {
should_print_on_complete = yes
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
save_scope_as = task_contract
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 = {
# Update gallowsbait score.
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MIN = gallowsbait_xp_medium_gain
XP_MAX = gallowsbait_xp_medium_gain
}
}
}
}
failure_standard = {
positive = no
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
save_scope_as = task_contract
task_contract_taker = {
add_prestige = task_contract_failure_prestige_loss_full_value
add_piety = minor_piety_loss
reverse_add_opinion = {
opinion = -35
modifier = failed_task_contract_opinion
target = scope:task_contract.task_contract_employer
}
# Update gallowsbait score.
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MIN = gallowsbait_xp_medium_gain
XP_MAX = gallowsbait_xp_medium_gain
}
}
}
}
failure_critical = {
positive = no
effect = {
save_scope_as = task_contract
task_contract_taker = {
add_prestige = task_contract_failure_prestige_loss_double_value
add_piety = medium_piety_loss
add_stress = minor_stress_gain
reverse_add_opinion = {
opinion = -65
modifier = failed_task_contract_opinion
target = scope:task_contract.task_contract_employer
}
# Update gallowsbait score.
laamp_rewards_apply_criminal_xp_effect = {
TRACK = marauder
XP_MIN = gallowsbait_xp_major_gain
XP_MAX = gallowsbait_xp_major_gain
}
}
}
}
}
}
laamp_gain_wanderer_contract = {
group = laamp_contracts_martial_group
icon = "gfx/interface/icons/scheme_types/martial.dds"
travel = yes
use_diplomatic_range = yes
valid_to_create = {
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
prestige_level >= 2
scope:employer = {
is_landed = no
is_ai = yes
in_diplomatic_range = root
prestige_level < root.prestige_level
location = { #Not too far away
squared_distance = {
target = root.location
value <= squared_distance_large
}
}
primary_title = {
is_mercenary_company = no
}
NOR = {
government_has_flag = government_is_theocracy
government_allows = administrative
}
}
}
valid_to_accept = {
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
is_available = yes
prestige_level >= 2
scope:employer = {
is_landed = no
is_ai = yes
in_diplomatic_range = root
prestige_level < root.prestige_level
location = { #Not too far away
squared_distance = {
target = root.location
value <= squared_distance_large
}
}
primary_title = {
is_mercenary_company = no
}
NOR = {
government_has_flag = government_is_theocracy
government_allows = administrative
}
}
}
weight = {
# Keep it rare and use it to fill in gaps between other contracts
value = task_contract_weight_interesting_very_rare_value
}
on_create = {
scope:contract = {
save_scope_as = task_contract
task_contract_employer = {
save_scope_as = task_contract_employer
capital_province = {
save_scope_as = task_contract_destination
}
}
set_variable = {
name = task_contract_employer
value = scope:task_contract_employer
}
set_variable = {
name = task_contract_destination
value = scope:task_contract_destination
}
# 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_success_gold_gain_half_value
}
}
}
on_accepted = {
save_scope_as = task_contract
task_contract_employer = {
save_scope_as = task_contract_employer
capital_province = {
save_scope_as = task_contract_destination
}
}
task_contract_taker = {
trigger_event = {
id = ep3_contract_event.0570
delayed = no
}
}
}
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
save_scope_as = task_contract
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 = 0
OPINION = task_contract_opinion_standard_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
task_contract_taker = {
add_intrigue_lifestyle_xp = medium_lifestyle_xp
add_courtier = scope:task_contract.task_contract_employer
}
}
}
failure_standard = {
positive = no
effect = {
save_scope_as = task_contract
task_contract_taker = {
add_stress = medium_stress_gain
add_character_modifier = {
modifier = ep3_clumsy_rescuer_modifier
years = 5
}
reverse_add_opinion = {
opinion = -50
modifier = failed_task_contract_opinion
target = scope:task_contract.task_contract_employer
}
}
}
}
}
}
laamp_find_secret_contract = {
group = laamp_contracts_intrigue_group
icon = "gfx/interface/icons/scheme_types/intrigue.dds"
travel = yes
use_diplomatic_range = yes
valid_to_create = {
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
scope:employer = {
is_ai = yes
location = { #Not too far away
squared_distance = {
target = root.location
value <= squared_distance_large
}
}
NOT = {
government_has_flag = government_is_theocracy
}
OR = {
any_courtier_or_guest = {
any_secret = {
count > 0
NOT = { is_known_by = scope:employer }
}
}
any_vassal = {
any_secret = {
count > 0
NOT = { is_known_by = scope:employer }
}
}
}
}
}
valid_to_accept = {
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
scope:employer = {
is_ai = yes
location = { #Not too far away
squared_distance = {
target = root.location
value <= squared_distance_large
}
}
NOT = {
government_has_flag = government_is_theocracy
}
}
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
scope:employer = {
OR = {
any_courtier_or_guest = {
any_secret = {
count > 0
NOT = { is_known_by = scope:employer }
}
}
any_vassal = {
any_secret = {
count > 0
NOT = { is_known_by = scope:employer }
}
}
}
}
}
weight = {
value = task_contract_weight_default_value
add = laamp_contracts_weight_up_intrigue_value
add = task_contract_weight_employer_contact_list_value
scope:employer = { multiply = task_contract_weight_by_tier_value }
}
on_create = {
scope:contract = {
save_scope_as = task_contract
task_contract_employer = {
save_scope_as = task_contract_employer
if = {
limit = {
any_vassal = {
any_secret = {
count > 0
NOT = { is_known_by = scope:task_contract_employer }
}
}
}
random_vassal = {
limit = {
any_secret = {
count > 0
NOT = { is_known_by = scope:task_contract_employer }
}
}
save_scope_as = secret_haver
}
}
else = {
random_courtier_or_guest = {
save_scope_as = secret_haver
}
}
scope:secret_haver.location = {
save_scope_as = task_contract_destination
}
}
set_variable = {
name = task_contract_employer
value = scope:task_contract_employer
}
set_variable = {
name = task_contract_destination
value = scope:task_contract_destination
}
}
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_success_gold_gain_half_value
}
}
}
on_accepted = {
save_scope_as = task_contract
task_contract_employer = {
save_scope_as = task_contract_employer
if = {
limit = {
any_vassal = {
any_secret = {
count > 0
NOT = { is_known_by = scope:task_contract_employer }
}
}
}
random_vassal = {
limit = {
any_secret = {
count > 0
NOT = { is_known_by = scope:task_contract_employer }
}
}
save_scope_as = secret_haver
}
}
else = {
random_courtier_or_guest = {
save_scope_as = secret_haver
}
}
scope:secret_haver.location = {
save_scope_as = task_contract_destination
}
}
task_contract_taker = {
trigger_event = {
id = ep3_contract_event.0580
delayed = no
}
}
}
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
save_scope_as = task_contract
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 = no
CONTACT_HOOK = no
EXTRA_REWARD = scope:extra_reward
}
}
}
failure_standard = {
positive = no
effect = {
save_scope_as = task_contract
task_contract_taker = {
add_stress = minor_stress_gain
add_prestige = task_contract_failure_prestige_loss_full_value
reverse_add_opinion = {
opinion = -50
modifier = failed_task_contract_opinion
target = scope:task_contract.task_contract_employer
}
}
}
}
}
}
laamp_eliminate_heir_contract = {
group = laamp_contracts_intrigue_group
icon = "gfx/interface/icons/scheme_types/intrigue.dds"
travel = yes
use_diplomatic_range = yes
is_criminal = yes
valid_to_create = {
valid_laamp_basic_accept_only_trigger = yes
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
valid_laamp_sensible_start_trigger = yes
scope:employer = {
is_ai = yes
in_diplomatic_range = root
is_landed = yes
location = { #Not too far away
squared_distance = {
target = root.location
value <= squared_distance_large
}
}
NOR = {
government_has_flag = government_is_theocracy
government_allows = administrative
}
AND = { #They have a primary heir they dislike, and another one they like
primary_heir ?= {
reverse_opinion = {
target = scope:employer
value <= high_negative_opinion
}
age > 16 #No murderin' babies
}
any_heir = {
count > 1
}
}
}
}
valid_to_accept = {
valid_laamp_basic_trigger = {
EMPLOYER = scope:employer
LAAMP = root
}
}
valid_to_continue = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
}
valid_to_keep = {
# Standard triggers.
valid_laamp_basic_trigger = {
EMPLOYER = root.task_contract_employer
LAAMP = root.task_contract_taker
}
}
weight = { #Let's not have this happen too often
value = task_contract_weight_interesting_very_rare_value
add = task_contract_weight_employer_contact_list_value
}
on_create = {
scope:contract = {
save_scope_as = task_contract
task_contract_employer = {
save_scope_as = task_contract_employer
random_heir = {
limit = {
is_primary_heir_of = scope:task_contract_employer
reverse_opinion = {
target = scope:task_contract_employer
value <= high_negative_opinion
}
age > 16 #No murderin' babies
}
save_scope_as = heir
}
scope:heir.location = {
save_scope_as = task_contract_destination
}
}
set_variable = {
name = task_contract_employer
value = scope:task_contract_employer
}
set_variable = {
name = task_contract_destination
value = scope:task_contract_destination
}
# 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_success_gold_gain_full_value
}
}
}
on_accepted = {
save_scope_as = task_contract
task_contract_employer = {
save_scope_as = task_contract_employer
random_heir = {
limit = {
is_primary_heir_of = scope:task_contract_employer
reverse_opinion = {
target = scope:task_contract_employer
value <= high_negative_opinion
}
age > 16 #No murderin' babies
}
save_scope_as = heir
}
random_heir = {
limit = {
NOT = {
is_primary_heir_of = scope:task_contract_employer
}
reverse_opinion = {
target = scope:task_contract_employer
value >= low_positive_opinion
}
}
save_scope_as = favoured_heir
}
scope:heir.location = {
save_scope_as = task_contract_destination
}
}
task_contract_taker = {
trigger_event = {
id = ep3_contract_event.0590
delayed = no
}
}
}
task_contract_reward = {
success_standard = {
should_print_on_complete = yes
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
save_scope_as = task_contract
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_major_value
OPINION = task_contract_opinion_excelled_reward_value
OPINION_TYPE = succeeded_task_contract_opinion
CONTACT = yes
CONTACT_HOOK = yes
EXTRA_REWARD = scope:extra_reward
}
}
}
failure_standard = {
positive = no
effect = {
save_scope_value_as = { name = extra_reward value = flag:no }
save_scope_as = task_contract
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
}
}
}
}
}